Skip to content

Instantly share code, notes, and snippets.

@badlogic
Created January 1, 2026 11:26
Show Gist options
  • Select an option

  • Save badlogic/b119c0dd2d5926ba54866b71dc68d1a4 to your computer and use it in GitHub Desktop.

Select an option

Save badlogic/b119c0dd2d5926ba54866b71dc68d1a4 to your computer and use it in GitHub Desktop.
pi session export - export-html rewrite conversation
This file has been truncated, but you can view the full file.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Session 7609c215-fea3-4e26-af1e-44a78b432602 - pi</title>
<style>
:root {
--accent: #8abeb7;
--border: #5f87ff;
--borderAccent: #00d7ff;
--borderMuted: #505050;
--success: #b5bd68;
--error: #cc6666;
--warning: #ffff00;
--muted: #808080;
--dim: #666666;
--text: #e5e5e7;
--thinkingText: #808080;
--selectedBg: #3a3a4a;
--userMessageBg: #343541;
--userMessageText: #e5e5e7;
--customMessageBg: #2d2838;
--customMessageText: #e5e5e7;
--customMessageLabel: #9575cd;
--toolPendingBg: #282832;
--toolSuccessBg: #283228;
--toolErrorBg: #3c2828;
--toolTitle: #e5e5e7;
--toolOutput: #808080;
--mdHeading: #f0c674;
--mdLink: #81a2be;
--mdLinkUrl: #666666;
--mdCode: #8abeb7;
--mdCodeBlock: #b5bd68;
--mdCodeBlockBorder: #808080;
--mdQuote: #808080;
--mdQuoteBorder: #808080;
--mdHr: #808080;
--mdListBullet: #8abeb7;
--toolDiffAdded: #b5bd68;
--toolDiffRemoved: #cc6666;
--toolDiffContext: #808080;
--syntaxComment: #6A9955;
--syntaxKeyword: #569CD6;
--syntaxFunction: #DCDCAA;
--syntaxVariable: #9CDCFE;
--syntaxString: #CE9178;
--syntaxNumber: #B5CEA8;
--syntaxType: #4EC9B0;
--syntaxOperator: #D4D4D4;
--syntaxPunctuation: #D4D4D4;
--thinkingOff: #505050;
--thinkingMinimal: #6e6e6e;
--thinkingLow: #5f87af;
--thinkingMedium: #81a2be;
--thinkingHigh: #b294bb;
--thinkingXhigh: #d183e8;
--bashMode: #b5bd68;
--exportPageBg: rgb(36, 37, 46);
--exportCardBg: rgb(44, 45, 55);
--exportInfoBg: rgb(72, 68, 65);
--body-bg: rgb(36, 37, 46);
--container-bg: rgb(44, 45, 55);
--info-bg: rgb(72, 68, 65);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
font-size: 12px;
line-height: 1.6;
color: var(--text);
background: var(--body-bg);
}
#app {
display: flex;
min-height: 100vh;
}
/* Sidebar */
#sidebar {
width: 400px;
background: var(--container-bg);
flex-shrink: 0;
display: flex;
flex-direction: column;
position: sticky;
top: 0;
height: 100vh;
border-right: 1px solid var(--dim);
}
.sidebar-header {
padding: 8px 12px;
flex-shrink: 0;
}
.sidebar-controls {
display: flex;
gap: 6px;
align-items: center;
flex-wrap: wrap;
}
.sidebar-search {
flex: 1;
min-width: 120px;
padding: 4px 8px;
font-size: 11px;
font-family: inherit;
background: var(--body-bg);
color: var(--text);
border: 1px solid var(--dim);
border-radius: 3px;
}
.sidebar-search:focus {
outline: none;
border-color: var(--accent);
}
.sidebar-search::placeholder {
color: var(--muted);
}
.filter-btn {
padding: 3px 8px;
font-size: 10px;
font-family: inherit;
background: transparent;
color: var(--muted);
border: 1px solid var(--dim);
border-radius: 3px;
cursor: pointer;
}
.filter-btn:hover {
color: var(--text);
border-color: var(--text);
}
.filter-btn.active {
background: var(--accent);
color: var(--body-bg);
border-color: var(--accent);
}
.tree-container {
flex: 1;
overflow: auto;
padding: 4px 0;
}
.tree-node {
padding: 2px 8px;
cursor: pointer;
display: flex;
align-items: baseline;
font-size: 11px;
white-space: nowrap;
}
.tree-node:hover {
background: var(--selectedBg);
}
.tree-node.active {
background: var(--selectedBg);
border-left: 2px solid var(--accent);
padding-left: 6px;
}
.tree-node.active .tree-content {
font-weight: bold;
}
.tree-node.in-path {
border-left: 2px solid var(--dim);
padding-left: 6px;
}
.tree-prefix {
color: var(--dim);
flex-shrink: 0;
font-family: inherit;
}
.tree-marker {
color: var(--accent);
flex-shrink: 0;
}
.tree-content {
color: var(--text);
}
.tree-role-user {
color: var(--accent);
}
.tree-role-assistant {
color: var(--success);
}
.tree-role-tool {
color: var(--muted);
}
.tree-muted {
color: var(--muted);
}
.tree-error {
color: var(--error);
}
.tree-compaction {
color: var(--borderAccent);
}
.tree-branch-summary {
color: var(--warning);
}
.tree-status {
padding: 4px 12px;
font-size: 10px;
color: var(--muted);
flex-shrink: 0;
}
/* Main content */
#content {
flex: 1;
overflow-y: auto;
padding: 24px 48px;
display: flex;
flex-direction: column;
align-items: center;
}
#content > * {
width: 100%;
max-width: 800px;
}
/* Header */
.header {
background: var(--container-bg);
border-radius: 4px;
padding: 16px;
margin-bottom: 16px;
}
.header h1 {
font-size: 14px;
font-weight: bold;
color: var(--borderAccent);
margin-bottom: 12px;
}
.header-info {
display: flex;
flex-direction: column;
gap: 3px;
font-size: 11px;
}
.info-item {
color: var(--dim);
display: flex;
align-items: baseline;
}
.info-label {
font-weight: 600;
margin-right: 8px;
min-width: 100px;
}
.info-value {
color: var(--text);
flex: 1;
}
/* Messages */
#messages {
display: flex;
flex-direction: column;
gap: 16px;
}
.message-timestamp {
font-size: 10px;
color: var(--dim);
margin-bottom: 4px;
opacity: 0.8;
}
.user-message {
background: var(--userMessageBg);
color: var(--userMessageText);
padding: 12px 16px;
border-radius: 4px;
}
.assistant-message {
padding: 0;
}
.assistant-text {
padding: 12px 16px;
}
.thinking-text {
padding: 12px 16px;
color: var(--thinkingText);
font-style: italic;
white-space: pre-wrap;
}
/* Tool execution */
.tool-execution {
padding: 12px 16px;
border-radius: 4px;
margin-top: 8px;
}
.tool-execution.pending { background: var(--toolPendingBg); }
.tool-execution.success { background: var(--toolSuccessBg); }
.tool-execution.error { background: var(--toolErrorBg); }
.tool-header, .tool-name {
font-weight: bold;
}
.tool-path {
color: var(--borderAccent);
word-break: break-all;
}
.line-numbers {
color: var(--warning);
}
.line-count {
color: var(--dim);
}
.tool-command {
font-weight: bold;
white-space: pre-wrap;
word-wrap: break-word;
overflow-wrap: break-word;
word-break: break-word;
}
.tool-output {
margin-top: 12px;
color: var(--toolOutput);
white-space: pre-wrap;
word-wrap: break-word;
overflow-wrap: break-word;
word-break: break-word;
font-family: inherit;
overflow-x: auto;
}
.tool-output > div {
line-height: 1.4;
}
.tool-output pre {
margin: 0;
padding: 0;
font-family: inherit;
color: inherit;
white-space: pre-wrap;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tool-output code {
padding: 0;
background: none;
}
.tool-output.expandable {
cursor: pointer;
}
.tool-output.expandable:hover {
opacity: 0.9;
}
.tool-output.expandable .output-full {
display: none;
}
.tool-output.expandable.expanded .output-preview {
display: none;
}
.tool-output.expandable.expanded .output-full {
display: block;
}
.expand-hint {
color: var(--borderAccent);
font-style: italic;
margin-top: 4px;
}
/* Diff */
.tool-diff {
margin-top: 12px;
font-size: 11px;
overflow-x: auto;
}
.diff-added { color: var(--toolDiffAdded); }
.diff-removed { color: var(--toolDiffRemoved); }
.diff-context { color: var(--toolDiffContext); }
/* Model change */
.model-change {
padding: 8px 16px;
background: var(--info-bg);
border-radius: 4px;
color: var(--dim);
font-size: 11px;
}
.model-name {
color: var(--borderAccent);
font-weight: bold;
}
/* Compaction */
.compaction {
background: var(--info-bg);
border-radius: 4px;
overflow: hidden;
}
.compaction-header {
padding: 12px 16px;
cursor: pointer;
display: flex;
align-items: center;
gap: 8px;
}
.compaction-header:hover {
background: var(--selectedBg);
}
.compaction-toggle {
color: var(--borderAccent);
font-size: 10px;
transition: transform 0.2s;
}
.compaction.expanded .compaction-toggle {
transform: rotate(90deg);
}
.compaction-title {
color: var(--text);
font-weight: bold;
}
.compaction-content {
display: none;
padding: 0 16px 16px;
}
.compaction.expanded .compaction-content {
display: block;
}
.compaction-summary {
background: var(--selectedBg);
border-radius: 4px;
padding: 12px;
white-space: pre-wrap;
}
/* System prompt */
.system-prompt {
background: var(--info-bg);
padding: 12px 16px;
border-radius: 4px;
margin-bottom: 16px;
}
.system-prompt-header {
font-weight: bold;
color: var(--warning);
margin-bottom: 8px;
}
.system-prompt-content {
color: var(--dim);
white-space: pre-wrap;
word-wrap: break-word;
font-size: 11px;
max-height: 200px;
overflow-y: auto;
}
/* Tools list */
.tools-list {
background: var(--customMessageBg);
padding: 12px 16px;
border-radius: 4px;
margin-bottom: 16px;
}
.tools-header {
font-weight: bold;
color: var(--warning);
margin-bottom: 8px;
}
.tool-item {
margin: 4px 0;
font-size: 11px;
}
.tool-item-name {
font-weight: bold;
color: var(--text);
}
.tool-item-desc {
color: var(--dim);
}
/* Hook/custom messages */
.hook-message {
background: var(--customMessageBg);
color: var(--customMessageText);
padding: 12px 16px;
border-radius: 4px;
}
.hook-type {
color: var(--customMessageLabel);
font-weight: bold;
margin-bottom: 4px;
}
/* Branch summary */
.branch-summary {
background: var(--customMessageBg);
padding: 12px 16px;
border-radius: 4px;
}
.branch-summary-header {
font-weight: bold;
color: var(--borderAccent);
margin-bottom: 8px;
}
/* Error */
.error-text {
color: var(--error);
padding: 12px 16px;
}
/* Images */
.message-images {
margin-bottom: 12px;
}
.message-image {
max-width: 100%;
max-height: 400px;
border-radius: 4px;
margin: 4px 0;
}
/* Markdown content */
.markdown-content h1,
.markdown-content h2,
.markdown-content h3,
.markdown-content h4,
.markdown-content h5,
.markdown-content h6 {
color: var(--mdHeading);
margin: 1em 0 0.5em 0;
font-weight: bold;
}
.markdown-content h1 { font-size: 1em; }
.markdown-content h2 { font-size: 1em; }
.markdown-content h3 { font-size: 1em; }
.markdown-content h4 { font-size: 1em; }
.markdown-content h5 { font-size: 1em; }
.markdown-content h6 { font-size: 1em; }
.markdown-content p { margin: 0.5em 0; }
.markdown-content a {
color: var(--mdLink);
text-decoration: underline;
}
.markdown-content code {
background: rgba(128, 128, 128, 0.2);
color: var(--mdCode);
padding: 2px 6px;
border-radius: 3px;
font-family: inherit;
}
.markdown-content pre {
background: transparent;
margin: 0.5em 0;
overflow-x: auto;
}
.markdown-content pre code {
display: block;
background: none;
color: var(--mdCodeBlock);
padding: 8px 12px;
}
.markdown-content blockquote {
border-left: 3px solid var(--mdQuoteBorder);
padding-left: 12px;
margin: 0.5em 0;
color: var(--mdQuote);
font-style: italic;
}
.markdown-content ul,
.markdown-content ol {
margin: 0.5em 0;
padding-left: 24px;
}
.markdown-content li { margin: 0.25em 0; }
.markdown-content li::marker { color: var(--mdListBullet); }
.markdown-content hr {
border: none;
border-top: 1px solid var(--mdHr);
margin: 1em 0;
}
.markdown-content table {
border-collapse: collapse;
margin: 0.5em 0;
width: 100%;
}
.markdown-content th,
.markdown-content td {
border: 1px solid var(--mdCodeBlockBorder);
padding: 6px 10px;
text-align: left;
}
.markdown-content th {
background: rgba(128, 128, 128, 0.1);
font-weight: bold;
}
.markdown-content img {
max-width: 100%;
border-radius: 4px;
}
/* Syntax highlighting */
.hljs { background: transparent; }
.hljs-comment, .hljs-quote { color: var(--syntaxComment); }
.hljs-keyword, .hljs-selector-tag { color: var(--syntaxKeyword); }
.hljs-number, .hljs-literal { color: var(--syntaxNumber); }
.hljs-string, .hljs-doctag { color: var(--syntaxString); }
.hljs-title, .hljs-section, .hljs-name { color: var(--syntaxFunction); }
.hljs-type, .hljs-class, .hljs-built_in { color: var(--syntaxType); }
.hljs-attr, .hljs-variable, .hljs-params { color: var(--syntaxVariable); }
.hljs-meta { color: var(--syntaxKeyword); }
/* Footer */
.footer {
margin-top: 48px;
padding: 20px;
text-align: center;
color: var(--dim);
font-size: 10px;
}
/* Mobile */
#sidebar-toggle {
display: none;
position: fixed;
top: 10px;
left: 10px;
z-index: 100;
background: var(--accent);
color: var(--body-bg);
border: none;
padding: 8px 12px;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
}
#sidebar-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 98;
}
@media (max-width: 900px) {
#sidebar {
position: fixed;
left: -400px;
width: 400px;
top: 0;
bottom: 0;
height: 100vh;
z-index: 99;
transition: left 0.3s;
}
#sidebar.open {
left: 0;
}
#sidebar-overlay.open {
display: block;
}
#sidebar-toggle {
display: block;
}
#content {
padding: 60px 16px 24px;
}
#content > * {
max-width: 100%;
}
}
@media (max-width: 500px) {
#sidebar {
width: 100vw;
left: -100vw;
}
}
@media print {
#sidebar, #sidebar-toggle { display: none !important; }
body { background: white; color: black; }
#content { max-width: none; }
}
</style>
</head>
<body>
<script id="session-data" type="application/json">eyJoZWFkZXIiOnsidHlwZSI6InNlc3Npb24iLCJ2ZXJzaW9uIjoyLCJpZCI6Ijc2MDljMjE1LWZlYTMtNGUyNi1hZjFlLTQ0YTc4YjQzMjYwMiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6MzI6MDEuMjE2WiIsImN3ZCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8ifSwiZW50cmllcyI6W3sidHlwZSI6Im1vZGVsX2NoYW5nZSIsImlkIjoiN2JjZGJlZTAiLCJwYXJlbnRJZCI6bnVsbCwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTozMjowMS40OTdaIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbElkIjoiY2xhdWRlLW9wdXMtNC01In0seyJ0eXBlIjoidGhpbmtpbmdfbGV2ZWxfY2hhbmdlIiwiaWQiOiJjNjZkODRkYSIsInBhcmVudElkIjoiN2JjZGJlZTAiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjMyOjAxLjQ5N1oiLCJ0aGlua2luZ0xldmVsIjoiaGlnaCJ9LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6Ijk3NDFhZGI3IiwicGFyZW50SWQiOiJjNjZkODRkYSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6MzM6MTIuODAyWiIsIm1lc3NhZ2UiOnsicm9sZSI6InVzZXIiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby9wdWxsLzM4N1xuXG5odHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby9pc3N1ZXMvMzgwXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL2lzc3Vlcy8zNzVcblxucmVhZCB0aGVtIGFsbCBpbiBmdWxsLiBpIGZlZWwgbGlrZSBAcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sLnRzIGlzIGEgZnVja2luZyBwaWcsIHdoaWNoIHdlIG1pZ2h0IGJlIGFibGUgdG8gcmV3cml0ZSBpbiBhIGJldHRlciB3YXk/XG5cbmFuYWx5emUsIHByb3Bvc2UgaG93IHdlIGNvdWxkIGNoYW5nZSB0aGluZ3MuIn1dLCJ0aW1lc3RhbXAiOjE3NjcyMzExOTI3OTR9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI4YjczYWExZCIsInBhcmVudElkIjoiOTc0MWFkYjciLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjMzOjE5LjkwNloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSB1c2VyIHdhbnRzIG1lIHRvIHJlYWQgYSBQUiBhbmQgdHdvIGlzc3VlcywgdGhlbiBhbmFseXplIHRoZSBleHBvcnQtaHRtbC50cyBmaWxlIHRvIHNlZSBpZiBpdCBjYW4gYmUgaW1wcm92ZWQuIExldCBtZSBzdGFydCBieSByZWFkaW5nIGFsbCB0aHJlZSBHaXRIdWIgaXRlbXMgYW5kIHRoZSBmaWxlLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXRjQ0NrWUlDeGdDS2tEdXN5MkJSdGFtUjB1ZWRsS0pWWFNjNFJocnNyaFI0YTZyMm9LalRoNlo1SG1FeC9jbzB5TDFKTGIxc3FTYkJwaThlTXUwaTZTdjNyU2dLTUNHZ01RV0VneGd2TTZUemlUNERvRk9zV0FhREVSck5ScWd4OUVPWFVrcjVTSXdvWU1ka29sT2p6V2h6ZlBseWc2Wlc4c3YyaDRiQ1FZcVgrVnpiRE1uK1BGVDlXVzZTUFRaZHFXaUpnR1pybHNXS3I0QmpEWC9DOXlmRW94aFV6dEREV3pEd0s0NlpLMlVENThFVWRybUZMcHVxaHBRVGI5WUxjc3hoV3Z3TDI2QjhXVVVRb0ZVdDgrY3I2am1pY3BWSDV5K0lnNTBSRHh4TngwNEpOWlNFN2RDSlZPRlFhWDBqUXFwbW91SVZSQkxSUUpNN2dzRHhkWElHTFhweXNRb0N1cjI3V01YQmZ5dURRdlFUN0pqYUFqY2VvUWtsU3VwZGFBKzdZejZjeEpKZXBYTkRGR0dYRWV6K3V0Um5XZlVGcHNiSXVIU1NtOHFTSnFzTGtkaDNtWmJmRks0NWhMbFhrbHFudU1IOXB4YzZSZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFWTXp1czlRSnhVYmMxcVNnSzhzNEVUIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdoIHByIHZpZXcgMzg3IC0tcmVwbyBiYWRsb2dpYy9waS1tb25vIC0tanNvbiB0aXRsZSxib2R5LGNvbW1lbnRzLHJldmlld3MifX0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxM1pjall6WERCQmNlVFlZZThoejY2ZCIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJnaCBpc3N1ZSB2aWV3IDM4MCAtLXJlcG8gYmFkbG9naWMvcGktbW9ubyAtLWpzb24gdGl0bGUsYm9keSxjb21tZW50cyJ9fSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFMVjFLWHE1QjY2c2E0cmhBbjNRYndnIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdoIGlzc3VlIHZpZXcgMzc1IC0tcmVwbyBiYWRsb2dpYy9waS1tb25vIC0tanNvbiB0aXRsZSxib2R5LGNvbW1lbnRzIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMTIxRDFyYVl3U294dDZoU2tYam1ZNXgiLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwudHMifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjM5NDUsIm91dHB1dCI6Mjk3LCJjYWNoZVJlYWQiOjAsImNhY2hlV3JpdGUiOjAsInRvdGFsVG9rZW5zIjo0MjQyLCJjb3N0Ijp7ImlucHV0IjowLjAxOTcyNTAwMDAwMDAwMDAwMywib3V0cHV0IjowLjAwNzQyNSwiY2FjaGVSZWFkIjowLCJjYWNoZVdyaXRlIjowLCJ0b3RhbCI6MC4wMjcxNTAwMDAwMDAwMDAwMDR9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzExOTI3OTl9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwZDg4ZDc2ZCIsInBhcmVudElkIjoiOGI3M2FhMWQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjMzOjIwLjU5OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxVk16dXM5UUp4VWJjMXFTZ0s4czRFVCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IntcImJvZHlcIjpcIlByZXZpb3VzbHkgbXkgdGhlbWUgY3JlYXRlZCBhbiB1bnJlYWRhYmxlIHN5c3RlbSBwcm9tcHQgYmVjYXVzZSB0aGUgY29sb3JzIHdlcmUgaGFyZGNvZGVkLiAgVGhpcyBub3cgbWFrZXMgaXQgc28gdGhhdCB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSB0aGVtZSBhbmQgdGhlcmUgaXMgc29tZSBkZWZhdWx0IGNhbGN1bGF0aW9uIGdvaW5nIG9uLlxcclxcblxcclxcbkRlbW86IGh0dHBzOi8vZ2lzdHByZXZpZXcuZ2l0aHViLmlvLz81ZjdmYTQyMmQ3NWJiNDc2OWVjNzc1MGZkNjZmNjE5Ni9zZXNzaW9uLmh0bWxcIixcImNvbW1lbnRzXCI6W3tcImlkXCI6XCJJQ19rd0RPUGJGTms4N2N0eGhtXCIsXCJhdXRob3JcIjp7XCJsb2dpblwiOlwiYmFkbG9naWNcIn0sXCJhdXRob3JBc3NvY2lhdGlvblwiOlwiT1dORVJcIixcImJvZHlcIjpcIkxvdmVseS4gSSdtIGluIHRoZSBwcm9jZXNzIG9mIHJld3JpdHRpbmcgdGhlIEhUTUwgZXhwb3J0IGFuZCB3aWxsIHRha2UgdGhpcyBpbnRvIGFjY291bnQuXCIsXCJjcmVhdGVkQXRcIjpcIjIwMjUtMTItMzFUMjI6NDI6MDVaXCIsXCJpbmNsdWRlc0NyZWF0ZWRFZGl0XCI6ZmFsc2UsXCJpc01pbmltaXplZFwiOmZhbHNlLFwibWluaW1pemVkUmVhc29uXCI6XCJcIixcInJlYWN0aW9uR3JvdXBzXCI6W10sXCJ1cmxcIjpcImh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL3B1bGwvMzg3I2lzc3VlY29tbWVudC0zNzAyOTg2ODU0XCIsXCJ2aWV3ZXJEaWRBdXRob3JcIjp0cnVlfV0sXCJyZXZpZXdzXCI6W10sXCJ0aXRsZVwiOlwiUHJldHRpZXIgZXhwb3J0IGZlYXR1cmVcIn1cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMTIwMDU5NX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjQ3NjM5ODY1IiwicGFyZW50SWQiOiIwZDg4ZDc2ZCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6MzM6MjEuNzI5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDEzWmNqWXpYREJCY2VUWVllOGh6NjZkIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0Ijoie1wiYm9keVwiOlwiSSB0aGluayBpdCdzIHJlYWxseSBjb29sIHRoYXQgeW91IGNhbiBleHBvcnQgSFRNTCBidXQgdGhlIGFjdCBvZiBhY3R1YWxseSBzZXJ2aW5nIGl0IHVwIHNvbWV3aGVyZSBpcyBzdGlsbCBraW5kIG9mIGFubm95aW5nLiAgQnV0IGl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBiZWNhdXNlIHBpIGNvdWxkIGp1c3QgcHVibGlzaCBIVE1MIHdpdGhpbiBHaXN0cy4gIFRvIGRpc3BsYXkgdGhhdCBIVE1MLCBvbmUgY291bGQgcHVibGlzaCBhIHNpbXBsZSBzY3JpcHQgb24gc2hpdHR5Y29kaW5nYWdlbnQuYWkgb3IgZWxzZXdoZXJlIHdoaWNoIGZldGNoZXMgdGhlIGdpc3QgYW5kIHJlbmRlcnMgaXQuXFxuXFxuVXNlZnVsIHByaW9yIGFydDogaHR0cHM6Ly9naXRodWIuY29tL2dpc3RwcmV2aWV3L2dpc3RwcmV2aWV3LmdpdGh1Yi5pby9cIixcImNvbW1lbnRzXCI6W3tcImlkXCI6XCJJQ19rd0RPUGJGTms4N2NsZHpqXCIsXCJhdXRob3JcIjp7XCJsb2dpblwiOlwiYmFkbG9naWNcIn0sXCJhdXRob3JBc3NvY2lhdGlvblwiOlwiT1dORVJcIixcImJvZHlcIjpcIkkgc3VwcG9zZSBgL3NoYXJlYCBjb3VsZCBhc3N1bWUgZ2ggY2xpIGlzIGluc3RhbGxlZCB0byB1cGxvYWQgdGhlIGdpc3QuIE5vdCBzdXJlIEknZCB3YW50IHRoZSBzaGl0dHljb2RpbmdhZ2VudC5haSBzaXRlIHRvIGRvIHRoZSBhY3R1YWwgZ2lzdCBmZXRjaGluZyBhbmQgcmVuZGVyaW5nIGR1ZSB0byByYXRlIGxpbWl0cy4gSWYgeW91IHNldHVwIGEgcGkgc2Vzc2lvbiBzaGFyaW5nIHNlcnZpY2UsIEknbGwgaGFwcGlseSBoYXZlIHBpIGRvIHRoZSBnaXN0IHVwbG9hZCBhbmQgcmVkaXJlY3QgdG8geW91ciB0aGluZyA6KVwiLFwiY3JlYXRlZEF0XCI6XCIyMDI1LTEyLTMwVDIzOjE3OjA0WlwiLFwiaW5jbHVkZXNDcmVhdGVkRWRpdFwiOnRydWUsXCJpc01pbmltaXplZFwiOmZhbHNlLFwibWluaW1pemVkUmVhc29uXCI6XCJcIixcInJlYWN0aW9uR3JvdXBzXCI6W10sXCJ1cmxcIjpcImh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL2lzc3Vlcy8zODAjaXNzdWVjb21tZW50LTM3MDA4MDg5MzFcIixcInZpZXdlckRpZEF1dGhvclwiOnRydWV9LHtcImlkXCI6XCJJQ19rd0RPUGJGTms4N2NsZ3JpXCIsXCJhdXRob3JcIjp7XCJsb2dpblwiOlwibWl0c3VoaWtvXCJ9LFwiYXV0aG9yQXNzb2NpYXRpb25cIjpcIkNPTlRSSUJVVE9SXCIsXCJib2R5XCI6XCJUaGUgUFIgaSB2aWJlZCB1cCBqdXN0IHJldXNlcyB0aGUgYGdpc3RwcmV2aWV3LmdpdGh1Yi5pb2AgcGFnZS4gIFRoZSBzY29wZSBvZiB0aGUgcmF0ZSBsaW1pdCBJIHRoaW5rIGlzIHRoZSBJUCBvZiB0aGUgdXNlciByZXF1ZXN0aW5nIHNpbmNlIHRoaXMgaXMgYW4gdW5hdXRoZW50aWNhdGVkIHJlcXVlc3QuXCIsXCJjcmVhdGVkQXRcIjpcIjIwMjUtMTItMzBUMjM6MjA6MzJaXCIsXCJpbmNsdWRlc0NyZWF0ZWRFZGl0XCI6ZmFsc2UsXCJpc01pbmltaXplZFwiOmZhbHNlLFwibWluaW1pemVkUmVhc29uXCI6XCJcIixcInJlYWN0aW9uR3JvdXBzXCI6W10sXCJ1cmxcIjpcImh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL2lzc3Vlcy8zODAjaXNzdWVjb21tZW50LTM3MDA4MjA3MDZcIixcInZpZXdlckRpZEF1dGhvclwiOmZhbHNlfSx7XCJpZFwiOlwiSUNfa3dET1BiRk5rODdjbG1ZN1wiLFwiYXV0aG9yXCI6e1wibG9naW5cIjpcIm1pdHN1aGlrb1wifSxcImF1dGhvckFzc29jaWF0aW9uXCI6XCJDT05UUklCVVRPUlwiLFwiYm9keVwiOlwiVGhpcyBpcyB0aGUgbWluaW1hbCBIVE1MIHBhZ2UgdGhhdCByZXBsYWNlcyBpdHNlbGYgd2l0aCB0aGUgc2Vzc2lvbiBodG1sIGZyb20gYSBnaXN0OiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9taXRzdWhpa28vNTFjMjc2OTI0NzcyZGZiZjA5ZDk2ZmU2MjA1YzI0NjdcIixcImNyZWF0ZWRBdFwiOlwiMjAyNS0xMi0zMFQyMzozMDoxNVpcIixcImluY2x1ZGVzQ3JlYXRlZEVkaXRcIjpmYWxzZSxcImlzTWluaW1pemVkXCI6ZmFsc2UsXCJtaW5pbWl6ZWRSZWFzb25cIjpcIlwiLFwicmVhY3Rpb25Hcm91cHNcIjpbXSxcInVybFwiOlwiaHR0cHM6Ly9naXRodWIuY29tL2JhZGxvZ2ljL3BpLW1vbm8vaXNzdWVzLzM4MCNpc3N1ZWNvbW1lbnQtMzcwMDg0NDA5MVwiLFwidmlld2VyRGlkQXV0aG9yXCI6ZmFsc2V9LHtcImlkXCI6XCJJQ19rd0RPUGJGTms4N2NsMmNzXCIsXCJhdXRob3JcIjp7XCJsb2dpblwiOlwiYmFkbG9naWNcIn0sXCJhdXRob3JBc3NvY2lhdGlvblwiOlwiT1dORVJcIixcImJvZHlcIjpcIkFoLCBzaG91bGQgaGF2ZSBsb29rZWQgY2xvc2VyLiBZZWFoLCB0aGF0J3MgZWFzeSBlbm91Z2guIElmIHlvdSBmZWVsIGxpa2UgaXQsIHNlbmQgYSBQUiB0byBodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvc2hpdHR5Y29kaW5nYWdlbnQuYWksIG90aGVyd2lzZSBJJ2xsIGRvIGl0IGFmdGVyIHRoZSBmaW5pc2hpbmcgdG91Y2hlcyBvbiB0aGUgbmV3IHN0dWZmIGluIHBpLlwiLFwiY3JlYXRlZEF0XCI6XCIyMDI1LTEyLTMxVDAwOjIwOjM0WlwiLFwiaW5jbHVkZXNDcmVhdGVkRWRpdFwiOmZhbHNlLFwiaXNNaW5pbWl6ZWRcIjpmYWxzZSxcIm1pbmltaXplZFJlYXNvblwiOlwiXCIsXCJyZWFjdGlvbkdyb3Vwc1wiOltdLFwidXJsXCI6XCJodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby9pc3N1ZXMvMzgwI2lzc3VlY29tbWVudC0zNzAwOTA5ODY4XCIsXCJ2aWV3ZXJEaWRBdXRob3JcIjp0cnVlfSx7XCJpZFwiOlwiSUNfa3dET1BiRk5rODdjcDIzSlwiLFwiYXV0aG9yXCI6e1wibG9naW5cIjpcIm1pdHN1aGlrb1wifSxcImF1dGhvckFzc29jaWF0aW9uXCI6XCJDT05UUklCVVRPUlwiLFwiYm9keVwiOlwiKiBDaGFuZ2UgZm9yIHBpOiBodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby9wdWxsLzM4MVxcbiogQ2hhbmdlIGZvciB0aGUgd2Vic2l0ZTogaHR0cHM6Ly9naXRodWIuY29tL2JhZGxvZ2ljL3NoaXR0eWNvZGluZ2FnZW50LmFpL3B1bGwvMlxcbiogT3B0aW9uYWxseSBmb3IgbWFraW5nIGl0IHByZXR0aWVyIGZvciBjdXN0b20gdGhlbWVzOiBodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby9wdWxsLzM4N1wiLFwiY3JlYXRlZEF0XCI6XCIyMDI1LTEyLTMxVDEwOjQ1OjI4WlwiLFwiaW5jbHVkZXNDcmVhdGVkRWRpdFwiOnRydWUsXCJpc01pbmltaXplZFwiOmZhbHNlLFwibWluaW1pemVkUmVhc29uXCI6XCJcIixcInJlYWN0aW9uR3JvdXBzXCI6W10sXCJ1cmxcIjpcImh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL2lzc3Vlcy8zODAjaXNzdWVjb21tZW50LTM3MDE5NjAxMzdcIixcInZpZXdlckRpZEF1dGhvclwiOmZhbHNlfV0sXCJ0aXRsZVwiOlwiQWRkIC9zaGFyZSBmb3IgcXVpY2sgc2hhcmluZ1wifVxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMxMjAxNzE5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMmJlZWI0MDkiLCJwYXJlbnRJZCI6IjQ3NjM5ODY1IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTozMzoyMi40MjRaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUxWMUtYcTVCNjZzYTRyaEFuM1Fid2ciLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ7XCJib2R5XCI6XCJBZGQgc2Vzc2lvbiB0cmVlIHZpc3VhbGl6YXRpb24gdG8gSFRNTCBleHBvcnQuXFxuXFxuIyMgUmVxdWlyZW1lbnRzXFxuXFxuLSBbIF0gQWRkIGNvbGxhcHNpYmxlIHNpZGViYXIgc2hvd2luZyBmdWxsIHRyZWUgc3RydWN0dXJlXFxuLSBbIF0gQWxsb3cgc2VsZWN0aW5nIGFueSBub2RlIGluIHRyZWUgdG8gdmlldyB0aGF0IHBhdGhcXG4tIFsgXSBBZGQgXFxcInJlc2V0IHRvIHNlc3Npb24gbGVhZlxcXCIgYnV0dG9uXFxuLSBbIF0gUmVuZGVyIGZ1bGwgcGF0aCAobm8gY29tcGFjdGlvbiByZXNvbHV0aW9uIG5lZWRlZClcXG4tIFsgXSBSZXNwb25zaXZlOiBjb2xsYXBzZSBzaWRlYmFyIG9uIG1vYmlsZVxcblxcbiMjIENvbnRleHRcXG5cXG5TZXNzaW9uIHRyZWUgc3RydWN0dXJlIGlzIG5vdyBpbXBsZW1lbnRlZCB3aXRoIGJyYW5jaGluZyBzdXBwb3J0LiBUaGUgSFRNTCBleHBvcnQgc2hvdWxkIGFsbG93IHVzZXJzIHRvIG5hdmlnYXRlIHRoZSB0cmVlIHZpc3VhbGx5LlxcblxcblJlZmVyZW5jZTogYHBhY2thZ2VzL2NvZGluZy1hZ2VudC9kb2NzL3Nlc3Npb24tdHJlZS1wbGFuLm1kYFwiLFwiY29tbWVudHNcIjpbXSxcInRpdGxlXCI6XCJIVE1MIEV4cG9ydDogQWRkIHRyZWUgdmlzdWFsaXphdGlvbiBzaWRlYmFyXCJ9XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzEyMDI0MjB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmMTdhN2JkNiIsInBhcmVudElkIjoiMmJlZWI0MDkiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjMzOjIyLjQ4OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxMjFEMXJhWXdTb3h0NmhTa1hqbVk1eCIsInRvb2xOYW1lIjoicmVhZCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImltcG9ydCB0eXBlIHsgQWdlbnRNZXNzYWdlLCBBZ2VudFN0YXRlIH0gZnJvbSBcIkBtYXJpb3plY2huZXIvcGktYWdlbnQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBBc3Npc3RhbnRNZXNzYWdlLCBJbWFnZUNvbnRlbnQsIE1lc3NhZ2UsIFRvb2xSZXN1bHRNZXNzYWdlLCBVc2VyTWVzc2FnZSB9IGZyb20gXCJAbWFyaW96ZWNobmVyL3BpLWFpXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCBobGpzIGZyb20gXCJoaWdobGlnaHQuanNcIjtcbmltcG9ydCB7IG1hcmtlZCB9IGZyb20gXCJtYXJrZWRcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwib3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEFQUF9OQU1FLCBnZXRDdXN0b21UaGVtZXNEaXIsIGdldFRoZW1lc0RpciwgVkVSU0lPTiB9IGZyb20gXCIuLi9jb25maWcuanNcIjtcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi9zZXNzaW9uLW1hbmFnZXIuanNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW50ZXJmYWNlIE1lc3NhZ2VFdmVudCB7XG5cdHR5cGU6IFwibWVzc2FnZVwiO1xuXHRtZXNzYWdlOiBNZXNzYWdlO1xuXHR0aW1lc3RhbXA/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBNb2RlbENoYW5nZUV2ZW50IHtcblx0dHlwZTogXCJtb2RlbF9jaGFuZ2VcIjtcblx0cHJvdmlkZXI6IHN0cmluZztcblx0bW9kZWxJZDogc3RyaW5nO1xuXHR0aW1lc3RhbXA/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDb21wYWN0aW9uRXZlbnQge1xuXHR0eXBlOiBcImNvbXBhY3Rpb25cIjtcblx0dGltZXN0YW1wOiBzdHJpbmc7XG5cdHN1bW1hcnk6IHN0cmluZztcblx0dG9rZW5zQmVmb3JlOiBudW1iZXI7XG59XG5cbnR5cGUgU2Vzc2lvbkV2ZW50ID0gTWVzc2FnZUV2ZW50IHwgTW9kZWxDaGFuZ2VFdmVudCB8IENvbXBhY3Rpb25FdmVudDtcblxuaW50ZXJmYWNlIFBhcnNlZFNlc3Npb25EYXRhIHtcblx0c2Vzc2lvbklkOiBzdHJpbmc7XG5cdHRpbWVzdGFtcDogc3RyaW5nO1xuXHRzeXN0ZW1Qcm9tcHQ/OiBzdHJpbmc7XG5cdG1vZGVsc1VzZWQ6IFNldDxzdHJpbmc+O1xuXHRtZXNzYWdlczogTWVzc2FnZVtdO1xuXHR0b29sUmVzdWx0c01hcDogTWFwPHN0cmluZywgVG9vbFJlc3VsdE1lc3NhZ2U+O1xuXHRzZXNzaW9uRXZlbnRzOiBTZXNzaW9uRXZlbnRbXTtcblx0dG9rZW5TdGF0czogeyBpbnB1dDogbnVtYmVyOyBvdXRwdXQ6IG51bWJlcjsgY2FjaGVSZWFkOiBudW1iZXI7IGNhY2hlV3JpdGU6IG51bWJlciB9O1xuXHRjb3N0U3RhdHM6IHsgaW5wdXQ6IG51bWJlcjsgb3V0cHV0OiBudW1iZXI7IGNhY2hlUmVhZDogbnVtYmVyOyBjYWNoZVdyaXRlOiBudW1iZXIgfTtcblx0dG9vbHM/OiB7IG5hbWU6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9W107XG5cdGNvbnRleHRXaW5kb3c/OiBudW1iZXI7XG5cdGlzU3RyZWFtaW5nRm9ybWF0PzogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGhlbWUgVHlwZXMgYW5kIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW50ZXJmYWNlIFRoZW1lSnNvbiB7XG5cdG5hbWU6IHN0cmluZztcblx0dmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG5cdGNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPjtcbn1cblxuaW50ZXJmYWNlIFRoZW1lQ29sb3JzIHtcblx0Ly8gQ29yZSBVSVxuXHRhY2NlbnQ6IHN0cmluZztcblx0Ym9yZGVyOiBzdHJpbmc7XG5cdGJvcmRlckFjY2VudDogc3RyaW5nO1xuXHRzdWNjZXNzOiBzdHJpbmc7XG5cdGVycm9yOiBzdHJpbmc7XG5cdHdhcm5pbmc6IHN0cmluZztcblx0bXV0ZWQ6IHN0cmluZztcblx0ZGltOiBzdHJpbmc7XG5cdHRleHQ6IHN0cmluZztcblx0Ly8gQmFja2dyb3VuZHNcblx0dXNlck1lc3NhZ2VCZzogc3RyaW5nO1xuXHR1c2VyTWVzc2FnZVRleHQ6IHN0cmluZztcblx0dG9vbFBlbmRpbmdCZzogc3RyaW5nO1xuXHR0b29sU3VjY2Vzc0JnOiBzdHJpbmc7XG5cdHRvb2xFcnJvckJnOiBzdHJpbmc7XG5cdHRvb2xPdXRwdXQ6IHN0cmluZztcblx0Ly8gTWFya2Rvd25cblx0bWRIZWFkaW5nOiBzdHJpbmc7XG5cdG1kTGluazogc3RyaW5nO1xuXHRtZExpbmtVcmw6IHN0cmluZztcblx0bWRDb2RlOiBzdHJpbmc7XG5cdG1kQ29kZUJsb2NrOiBzdHJpbmc7XG5cdG1kQ29kZUJsb2NrQm9yZGVyOiBzdHJpbmc7XG5cdG1kUXVvdGU6IHN0cmluZztcblx0bWRRdW90ZUJvcmRlcjogc3RyaW5nO1xuXHRtZEhyOiBzdHJpbmc7XG5cdG1kTGlzdEJ1bGxldDogc3RyaW5nO1xuXHQvLyBEaWZmc1xuXHR0b29sRGlmZkFkZGVkOiBzdHJpbmc7XG5cdHRvb2xEaWZmUmVtb3ZlZDogc3RyaW5nO1xuXHR0b29sRGlmZkNvbnRleHQ6IHN0cmluZztcblx0Ly8gU3ludGF4IGhpZ2hsaWdodGluZ1xuXHRzeW50YXhDb21tZW50OiBzdHJpbmc7XG5cdHN5bnRheEtleXdvcmQ6IHN0cmluZztcblx0c3ludGF4RnVuY3Rpb246IHN0cmluZztcblx0c3ludGF4VmFyaWFibGU6IHN0cmluZztcblx0c3ludGF4U3RyaW5nOiBzdHJpbmc7XG5cdHN5bnRheE51bWJlcjogc3RyaW5nO1xuXHRzeW50YXhUeXBlOiBzdHJpbmc7XG5cdHN5bnRheE9wZXJhdG9yOiBzdHJpbmc7XG5cdHN5bnRheFB1bmN0dWF0aW9uOiBzdHJpbmc7XG59XG5cbi8qKiBSZXNvbHZlIGEgdGhlbWUgY29sb3IgdmFsdWUsIGZvbGxvd2luZyB2YXJpYWJsZSByZWZlcmVuY2VzIHVudGlsIHdlIGdldCBhIGZpbmFsIHZhbHVlLiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvbG9yVmFsdWUoXG5cdHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG5cdHZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4sXG5cdGRlZmF1bHRWYWx1ZTogc3RyaW5nLFxuXHR2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCksXG4pOiBzdHJpbmcge1xuXHRpZiAodmFsdWUgPT09IFwiXCIpIHJldHVybiBkZWZhdWx0VmFsdWU7XG5cdGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiBkZWZhdWx0VmFsdWU7XG5cdGlmICh2aXNpdGVkLmhhcyh2YWx1ZSkpIHJldHVybiBkZWZhdWx0VmFsdWU7XG5cdGlmICghKHZhbHVlIGluIHZhcnMpKSByZXR1cm4gdmFsdWU7IC8vIFJldHVybiBhcy1pcyAoaGV4IGNvbG9ycyB3b3JrIGluIENTUylcblx0dmlzaXRlZC5hZGQodmFsdWUpO1xuXHRyZXR1cm4gcmVzb2x2ZUNvbG9yVmFsdWUodmFyc1t2YWx1ZV0sIHZhcnMsIGRlZmF1bHRWYWx1ZSwgdmlzaXRlZCk7XG59XG5cbi8qKiBMb2FkIHRoZW1lIEpTT04gZnJvbSBidWlsdC1pbiBvciBjdXN0b20gdGhlbWVzIGRpcmVjdG9yeS4gKi9cbmZ1bmN0aW9uIGxvYWRUaGVtZUpzb24obmFtZTogc3RyaW5nKTogVGhlbWVKc29uIHwgdW5kZWZpbmVkIHtcblx0Ly8gVHJ5IGJ1aWx0LWluIHRoZW1lcyBmaXJzdFxuXHRjb25zdCB0aGVtZXNEaXIgPSBnZXRUaGVtZXNEaXIoKTtcblx0Y29uc3QgYnVpbHRpblBhdGggPSBwYXRoLmpvaW4odGhlbWVzRGlyLCBgJHtuYW1lfS5qc29uYCk7XG5cdGlmIChleGlzdHNTeW5jKGJ1aWx0aW5QYXRoKSkge1xuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoYnVpbHRpblBhdGgsIFwidXRmLThcIikpIGFzIFRoZW1lSnNvbjtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVHJ5IGN1c3RvbSB0aGVtZXNcblx0Y29uc3QgY3VzdG9tVGhlbWVzRGlyID0gZ2V0Q3VzdG9tVGhlbWVzRGlyKCk7XG5cdGNvbnN0IGN1c3RvbVBhdGggPSBwYXRoLmpvaW4oY3VzdG9tVGhlbWVzRGlyLCBgJHtuYW1lfS5qc29uYCk7XG5cdGlmIChleGlzdHNTeW5jKGN1c3RvbVBhdGgpKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhjdXN0b21QYXRoLCBcInV0Zi04XCIpKSBhcyBUaGVtZUpzb247XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBCdWlsZCBjb21wbGV0ZSB0aGVtZSBjb2xvcnMgb2JqZWN0LCByZXNvbHZpbmcgdGhlbWUgSlNPTiB2YWx1ZXMgYWdhaW5zdCBkZWZhdWx0cy4gKi9cbmZ1bmN0aW9uIGdldFRoZW1lQ29sb3JzKHRoZW1lTmFtZT86IHN0cmluZyk6IFRoZW1lQ29sb3JzIHtcblx0Y29uc3QgaXNMaWdodCA9IGlzTGlnaHRUaGVtZSh0aGVtZU5hbWUpO1xuXG5cdC8vIERlZmF1bHQgY29sb3JzIGJhc2VkIG9uIHRoZW1lIHR5cGVcblx0Y29uc3QgZGVmYXVsdENvbG9yczogVGhlbWVDb2xvcnMgPSBpc0xpZ2h0XG5cdFx0PyB7XG5cdFx0XHRcdC8vIExpZ2h0IHRoZW1lIGRlZmF1bHRzXG5cdFx0XHRcdGFjY2VudDogXCJyZ2IoOTUsIDEzNSwgMTM1KVwiLFxuXHRcdFx0XHRib3JkZXI6IFwicmdiKDk1LCAxMzUsIDE3NSlcIixcblx0XHRcdFx0Ym9yZGVyQWNjZW50OiBcInJnYig5NSwgMTM1LCAxMzUpXCIsXG5cdFx0XHRcdHN1Y2Nlc3M6IFwicmdiKDEzNSwgMTc1LCAxMzUpXCIsXG5cdFx0XHRcdGVycm9yOiBcInJnYigxNzUsIDk1LCA5NSlcIixcblx0XHRcdFx0d2FybmluZzogXCJyZ2IoMjE1LCAxNzUsIDk1KVwiLFxuXHRcdFx0XHRtdXRlZDogXCJyZ2IoMTA4LCAxMDgsIDEwOClcIixcblx0XHRcdFx0ZGltOiBcInJnYigxMzgsIDEzOCwgMTM4KVwiLFxuXHRcdFx0XHR0ZXh0OiBcInJnYigwLCAwLCAwKVwiLFxuXHRcdFx0XHR1c2VyTWVzc2FnZUJnOiBcInJnYigyMzIsIDIzMiwgMjMyKVwiLFxuXHRcdFx0XHR1c2VyTWVzc2FnZVRleHQ6IFwicmdiKDAsIDAsIDApXCIsXG5cdFx0XHRcdHRvb2xQZW5kaW5nQmc6IFwicmdiKDIzMiwgMjMyLCAyNDApXCIsXG5cdFx0XHRcdHRvb2xTdWNjZXNzQmc6IFwicmdiKDIzMiwgMjQwLCAyMzIpXCIsXG5cdFx0XHRcdHRvb2xFcnJvckJnOiBcInJnYigyNDAsIDIzMiwgMjMyKVwiLFxuXHRcdFx0XHR0b29sT3V0cHV0OiBcInJnYigxMDgsIDEwOCwgMTA4KVwiLFxuXHRcdFx0XHRtZEhlYWRpbmc6IFwicmdiKDIxNSwgMTc1LCA5NSlcIixcblx0XHRcdFx0bWRMaW5rOiBcInJnYig5NSwgMTM1LCAxNzUpXCIsXG5cdFx0XHRcdG1kTGlua1VybDogXCJyZ2IoMTM4LCAxMzgsIDEzOClcIixcblx0XHRcdFx0bWRDb2RlOiBcInJnYig5NSwgMTM1LCAxMzUpXCIsXG5cdFx0XHRcdG1kQ29kZUJsb2NrOiBcInJnYigxMzUsIDE3NSwgMTM1KVwiLFxuXHRcdFx0XHRtZENvZGVCbG9ja0JvcmRlcjogXCJyZ2IoMTA4LCAxMDgsIDEwOClcIixcblx0XHRcdFx0bWRRdW90ZTogXCJyZ2IoMTA4LCAxMDgsIDEwOClcIixcblx0XHRcdFx0bWRRdW90ZUJvcmRlcjogXCJyZ2IoMTA4LCAxMDgsIDEwOClcIixcblx0XHRcdFx0bWRIcjogXCJyZ2IoMTA4LCAxMDgsIDEwOClcIixcblx0XHRcdFx0bWRMaXN0QnVsbGV0OiBcInJnYigxMzUsIDE3NSwgMTM1KVwiLFxuXHRcdFx0XHR0b29sRGlmZkFkZGVkOiBcInJnYigxMzUsIDE3NSwgMTM1KVwiLFxuXHRcdFx0XHR0b29sRGlmZlJlbW92ZWQ6IFwicmdiKDE3NSwgOTUsIDk1KVwiLFxuXHRcdFx0XHR0b29sRGlmZkNvbnRleHQ6IFwicmdiKDEwOCwgMTA4LCAxMDgpXCIsXG5cdFx0XHRcdHN5bnRheENvbW1lbnQ6IFwicmdiKDAsIDEyOCwgMClcIixcblx0XHRcdFx0c3ludGF4S2V5d29yZDogXCJyZ2IoMCwgMCwgMjU1KVwiLFxuXHRcdFx0XHRzeW50YXhGdW5jdGlvbjogXCJyZ2IoMTIxLCA5NCwgMzgpXCIsXG5cdFx0XHRcdHN5bnRheFZhcmlhYmxlOiBcInJnYigwLCAxNiwgMTI4KVwiLFxuXHRcdFx0XHRzeW50YXhTdHJpbmc6IFwicmdiKDE2MywgMjEsIDIxKVwiLFxuXHRcdFx0XHRzeW50YXhOdW1iZXI6IFwicmdiKDksIDEzNCwgODgpXCIsXG5cdFx0XHRcdHN5bnRheFR5cGU6IFwicmdiKDM4LCAxMjcsIDE1MylcIixcblx0XHRcdFx0c3ludGF4T3BlcmF0b3I6IFwicmdiKDAsIDAsIDApXCIsXG5cdFx0XHRcdHN5bnRheFB1bmN0dWF0aW9uOiBcInJnYigwLCAwLCAwKVwiLFxuXHRcdFx0fVxuXHRcdDoge1xuXHRcdFx0XHQvLyBEYXJrIHRoZW1lIGRlZmF1bHRzXG5cdFx0XHRcdGFjY2VudDogXCJyZ2IoMTM4LCAxOTAsIDE4MylcIixcblx0XHRcdFx0Ym9yZGVyOiBcInJnYig5NSwgMTM1LCAyNTUpXCIsXG5cdFx0XHRcdGJvcmRlckFjY2VudDogXCJyZ2IoMCwgMjE1LCAyNTUpXCIsXG5cdFx0XHRcdHN1Y2Nlc3M6IFwicmdiKDE4MSwgMTg5LCAxMDQpXCIsXG5cdFx0XHRcdGVycm9yOiBcInJnYigyMDQsIDEwMiwgMTAyKVwiLFxuXHRcdFx0XHR3YXJuaW5nOiBcInJnYigyNTUsIDI1NSwgMClcIixcblx0XHRcdFx0bXV0ZWQ6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdGRpbTogXCJyZ2IoMTAyLCAxMDIsIDEwMilcIixcblx0XHRcdFx0dGV4dDogXCJyZ2IoMjI5LCAyMjksIDIzMSlcIixcblx0XHRcdFx0dXNlck1lc3NhZ2VCZzogXCJyZ2IoNTIsIDUzLCA2NSlcIixcblx0XHRcdFx0dXNlck1lc3NhZ2VUZXh0OiBcInJnYigyMjksIDIyOSwgMjMxKVwiLFxuXHRcdFx0XHR0b29sUGVuZGluZ0JnOiBcInJnYig0MCwgNDAsIDUwKVwiLFxuXHRcdFx0XHR0b29sU3VjY2Vzc0JnOiBcInJnYig0MCwgNTAsIDQwKVwiLFxuXHRcdFx0XHR0b29sRXJyb3JCZzogXCJyZ2IoNjAsIDQwLCA0MClcIixcblx0XHRcdFx0dG9vbE91dHB1dDogXCJyZ2IoMTI4LCAxMjgsIDEyOClcIixcblx0XHRcdFx0bWRIZWFkaW5nOiBcInJnYigyNDAsIDE5OCwgMTE2KVwiLFxuXHRcdFx0XHRtZExpbms6IFwicmdiKDEyOSwgMTYyLCAxOTApXCIsXG5cdFx0XHRcdG1kTGlua1VybDogXCJyZ2IoMTAyLCAxMDIsIDEwMilcIixcblx0XHRcdFx0bWRDb2RlOiBcInJnYigxMzgsIDE5MCwgMTgzKVwiLFxuXHRcdFx0XHRtZENvZGVCbG9jazogXCJyZ2IoMTgxLCAxODksIDEwNClcIixcblx0XHRcdFx0bWRDb2RlQmxvY2tCb3JkZXI6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdG1kUXVvdGU6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdG1kUXVvdGVCb3JkZXI6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdG1kSHI6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdG1kTGlzdEJ1bGxldDogXCJyZ2IoMTM4LCAxOTAsIDE4MylcIixcblx0XHRcdFx0dG9vbERpZmZBZGRlZDogXCJyZ2IoMTgxLCAxODksIDEwNClcIixcblx0XHRcdFx0dG9vbERpZmZSZW1vdmVkOiBcInJnYigyMDQsIDEwMiwgMTAyKVwiLFxuXHRcdFx0XHR0b29sRGlmZkNvbnRleHQ6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdHN5bnRheENvbW1lbnQ6IFwicmdiKDEwNiwgMTUzLCA4NSlcIixcblx0XHRcdFx0c3ludGF4S2V5d29yZDogXCJyZ2IoODYsIDE1NiwgMjE0KVwiLFxuXHRcdFx0XHRzeW50YXhGdW5jdGlvbjogXCJyZ2IoMjIwLCAyMjAsIDE3MClcIixcblx0XHRcdFx0c3ludGF4VmFyaWFibGU6IFwicmdiKDE1NiwgMjIwLCAyNTQpXCIsXG5cdFx0XHRcdHN5bnRheFN0cmluZzogXCJyZ2IoMjA2LCAxNDUsIDEyMClcIixcblx0XHRcdFx0c3ludGF4TnVtYmVyOiBcInJnYigxODEsIDIwNiwgMTY4KVwiLFxuXHRcdFx0XHRzeW50YXhUeXBlOiBcInJnYig3OCwgMjAxLCAxNzYpXCIsXG5cdFx0XHRcdHN5bnRheE9wZXJhdG9yOiBcInJnYigyMTIsIDIxMiwgMjEyKVwiLFxuXHRcdFx0XHRzeW50YXhQdW5jdHVhdGlvbjogXCJyZ2IoMjEyLCAyMTIsIDIxMilcIixcblx0XHRcdH07XG5cblx0aWYgKCF0aGVtZU5hbWUpIHJldHVybiBkZWZhdWx0Q29sb3JzO1xuXG5cdGNvbnN0IHRoZW1lSnNvbiA9IGxvYWRUaGVtZUpzb24odGhlbWVOYW1lKTtcblx0aWYgKCF0aGVtZUpzb24pIHJldHVybiBkZWZhdWx0Q29sb3JzO1xuXG5cdGNvbnN0IHZhcnMgPSB0aGVtZUpzb24udmFycyB8fCB7fTtcblx0Y29uc3QgY29sb3JzID0gdGhlbWVKc29uLmNvbG9ycztcblxuXHRjb25zdCByZXNvbHZlID0gKGtleToga2V5b2YgVGhlbWVDb2xvcnMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHZhbHVlID0gY29sb3JzW2tleV07XG5cdFx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29sb3JzW2tleV07XG5cdFx0cmV0dXJuIHJlc29sdmVDb2xvclZhbHVlKHZhbHVlLCB2YXJzLCBkZWZhdWx0Q29sb3JzW2tleV0pO1xuXHR9O1xuXG5cdHJldHVybiB7XG5cdFx0YWNjZW50OiByZXNvbHZlKFwiYWNjZW50XCIpLFxuXHRcdGJvcmRlcjogcmVzb2x2ZShcImJvcmRlclwiKSxcblx0XHRib3JkZXJBY2NlbnQ6IHJlc29sdmUoXCJib3JkZXJBY2NlbnRcIiksXG5cdFx0c3VjY2VzczogcmVzb2x2ZShcInN1Y2Nlc3NcIiksXG5cdFx0ZXJyb3I6IHJlc29sdmUoXCJlcnJvclwiKSxcblx0XHR3YXJuaW5nOiByZXNvbHZlKFwid2FybmluZ1wiKSxcblx0XHRtdXRlZDogcmVzb2x2ZShcIm11dGVkXCIpLFxuXHRcdGRpbTogcmVzb2x2ZShcImRpbVwiKSxcblx0XHR0ZXh0OiByZXNvbHZlKFwidGV4dFwiKSxcblx0XHR1c2VyTWVzc2FnZUJnOiByZXNvbHZlKFwidXNlck1lc3NhZ2VCZ1wiKSxcblx0XHR1c2VyTWVzc2FnZVRleHQ6IHJlc29sdmUoXCJ1c2VyTWVzc2FnZVRleHRcIiksXG5cdFx0dG9vbFBlbmRpbmdCZzogcmVzb2x2ZShcInRvb2xQZW5kaW5nQmdcIiksXG5cdFx0dG9vbFN1Y2Nlc3NCZzogcmVzb2x2ZShcInRvb2xTdWNjZXNzQmdcIiksXG5cdFx0dG9vbEVycm9yQmc6IHJlc29sdmUoXCJ0b29sRXJyb3JCZ1wiKSxcblx0XHR0b29sT3V0cHV0OiByZXNvbHZlKFwidG9vbE91dHB1dFwiKSxcblx0XHRtZEhlYWRpbmc6IHJlc29sdmUoXCJtZEhlYWRpbmdcIiksXG5cdFx0bWRMaW5rOiByZXNvbHZlKFwibWRMaW5rXCIpLFxuXHRcdG1kTGlua1VybDogcmVzb2x2ZShcIm1kTGlua1VybFwiKSxcblx0XHRtZENvZGU6IHJlc29sdmUoXCJtZENvZGVcIiksXG5cdFx0bWRDb2RlQmxvY2s6IHJlc29sdmUoXCJtZENvZGVCbG9ja1wiKSxcblx0XHRtZENvZGVCbG9ja0JvcmRlcjogcmVzb2x2ZShcIm1kQ29kZUJsb2NrQm9yZGVyXCIpLFxuXHRcdG1kUXVvdGU6IHJlc29sdmUoXCJtZFF1b3RlXCIpLFxuXHRcdG1kUXVvdGVCb3JkZXI6IHJlc29sdmUoXCJtZFF1b3RlQm9yZGVyXCIpLFxuXHRcdG1kSHI6IHJlc29sdmUoXCJtZEhyXCIpLFxuXHRcdG1kTGlzdEJ1bGxldDogcmVzb2x2ZShcIm1kTGlzdEJ1bGxldFwiKSxcblx0XHR0b29sRGlmZkFkZGVkOiByZXNvbHZlKFwidG9vbERpZmZBZGRlZFwiKSxcblx0XHR0b29sRGlmZlJlbW92ZWQ6IHJlc29sdmUoXCJ0b29sRGlmZlJlbW92ZWRcIiksXG5cdFx0dG9vbERpZmZDb250ZXh0OiByZXNvbHZlKFwidG9vbERpZmZDb250ZXh0XCIpLFxuXHRcdHN5bnRheENvbW1lbnQ6IHJlc29sdmUoXCJzeW50YXhDb21tZW50XCIpLFxuXHRcdHN5bnRheEtleXdvcmQ6IHJlc29sdmUoXCJzeW50YXhLZXl3b3JkXCIpLFxuXHRcdHN5bnRheEZ1bmN0aW9uOiByZXNvbHZlKFwic3ludGF4RnVuY3Rpb25cIiksXG5cdFx0c3ludGF4VmFyaWFibGU6IHJlc29sdmUoXCJzeW50YXhWYXJpYWJsZVwiKSxcblx0XHRzeW50YXhTdHJpbmc6IHJlc29sdmUoXCJzeW50YXhTdHJpbmdcIiksXG5cdFx0c3ludGF4TnVtYmVyOiByZXNvbHZlKFwic3ludGF4TnVtYmVyXCIpLFxuXHRcdHN5bnRheFR5cGU6IHJlc29sdmUoXCJzeW50YXhUeXBlXCIpLFxuXHRcdHN5bnRheE9wZXJhdG9yOiByZXNvbHZlKFwic3ludGF4T3BlcmF0b3JcIiksXG5cdFx0c3ludGF4UHVuY3R1YXRpb246IHJlc29sdmUoXCJzeW50YXhQdW5jdHVhdGlvblwiKSxcblx0fTtcbn1cblxuLyoqIENoZWNrIGlmIHRoZW1lIGlzIGEgbGlnaHQgdGhlbWUgKGN1cnJlbnRseSBvbmx5IG1hdGNoZXMgXCJsaWdodFwiIGV4YWN0bHkpLiAqL1xuZnVuY3Rpb24gaXNMaWdodFRoZW1lKHRoZW1lTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gdGhlbWVOYW1lID09PSBcImxpZ2h0XCI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFV0aWxpdHkgZnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHRleHRcblx0XHQucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpXG5cdFx0LnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG5cdFx0LnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG5cdFx0LnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG5cdFx0LnJlcGxhY2UoLycvZywgXCImIzAzOTtcIik7XG59XG5cbmZ1bmN0aW9uIHNob3J0ZW5QYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IGhvbWUgPSBob21lZGlyKCk7XG5cdHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoaG9tZSkgPyBgfiR7cGF0aC5zbGljZShob21lLmxlbmd0aCl9YCA6IHBhdGg7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VUYWJzKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiB0ZXh0LnJlcGxhY2UoL1xcdC9nLCBcIiAgIFwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcDogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0aWYgKCF0aW1lc3RhbXApIHJldHVybiBcIlwiO1xuXHRjb25zdCBkYXRlID0gbmV3IERhdGUodHlwZW9mIHRpbWVzdGFtcCA9PT0gXCJzdHJpbmdcIiA/IHRpbWVzdGFtcCA6IHRpbWVzdGFtcCk7XG5cdHJldHVybiBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyh1bmRlZmluZWQsIHsgaG91cjogXCIyLWRpZ2l0XCIsIG1pbnV0ZTogXCIyLWRpZ2l0XCIsIHNlY29uZDogXCIyLWRpZ2l0XCIgfSk7XG59XG5cbi8qKiBIaWdobGlnaHQgY29kZSB1c2luZyBoaWdobGlnaHQuanMuIFJldHVybnMgSFRNTCB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcgc3BhbnMuICovXG5mdW5jdGlvbiBoaWdobGlnaHRDb2RlKGNvZGU6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICghbGFuZykge1xuXHRcdHJldHVybiBlc2NhcGVIdG1sKGNvZGUpO1xuXHR9XG5cdHRyeSB7XG5cdFx0Ly8gQ2hlY2sgaWYgbGFuZ3VhZ2UgaXMgc3VwcG9ydGVkXG5cdFx0aWYgKGhsanMuZ2V0TGFuZ3VhZ2UobGFuZykpIHtcblx0XHRcdHJldHVybiBobGpzLmhpZ2hsaWdodChjb2RlLCB7IGxhbmd1YWdlOiBsYW5nLCBpZ25vcmVJbGxlZ2FsczogdHJ1ZSB9KS52YWx1ZTtcblx0XHR9XG5cdFx0Ly8gVHJ5IGNvbW1vbiBhbGlhc2VzXG5cdFx0Y29uc3QgYWxpYXNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XHRcdHRzOiBcInR5cGVzY3JpcHRcIixcblx0XHRcdGpzOiBcImphdmFzY3JpcHRcIixcblx0XHRcdHB5OiBcInB5dGhvblwiLFxuXHRcdFx0cmI6IFwicnVieVwiLFxuXHRcdFx0c2g6IFwiYmFzaFwiLFxuXHRcdFx0eW1sOiBcInlhbWxcIixcblx0XHRcdG1kOiBcIm1hcmtkb3duXCIsXG5cdFx0fTtcblx0XHRjb25zdCBhbGlhc2VkTGFuZyA9IGFsaWFzZXNbbGFuZ107XG5cdFx0aWYgKGFsaWFzZWRMYW5nICYmIGhsanMuZ2V0TGFuZ3VhZ2UoYWxpYXNlZExhbmcpKSB7XG5cdFx0XHRyZXR1cm4gaGxqcy5oaWdobGlnaHQoY29kZSwgeyBsYW5ndWFnZTogYWxpYXNlZExhbmcsIGlnbm9yZUlsbGVnYWxzOiB0cnVlIH0pLnZhbHVlO1xuXHRcdH1cblx0fSBjYXRjaCB7XG5cdFx0Ly8gRmFsbCB0aHJvdWdoIHRvIGVzY2FwZWQgb3V0cHV0XG5cdH1cblx0cmV0dXJuIGVzY2FwZUh0bWwoY29kZSk7XG59XG5cbi8qKiBHZXQgbGFuZ3VhZ2UgZnJvbSBmaWxlIHBhdGggZXh0ZW5zaW9uLiAqL1xuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGcm9tUGF0aChmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgZXh0ID0gZmlsZVBhdGguc3BsaXQoXCIuXCIpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xuXHRpZiAoIWV4dCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRjb25zdCBleHRUb0xhbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFx0dHM6IFwidHlwZXNjcmlwdFwiLFxuXHRcdHRzeDogXCJ0eXBlc2NyaXB0XCIsXG5cdFx0anM6IFwiamF2YXNjcmlwdFwiLFxuXHRcdGpzeDogXCJqYXZhc2NyaXB0XCIsXG5cdFx0bWpzOiBcImphdmFzY3JpcHRcIixcblx0XHRjanM6IFwiamF2YXNjcmlwdFwiLFxuXHRcdHB5OiBcInB5dGhvblwiLFxuXHRcdHJiOiBcInJ1YnlcIixcblx0XHRyczogXCJydXN0XCIsXG5cdFx0Z286IFwiZ29cIixcblx0XHRqYXZhOiBcImphdmFcIixcblx0XHRrdDogXCJrb3RsaW5cIixcblx0XHRzd2lmdDogXCJzd2lmdFwiLFxuXHRcdGM6IFwiY1wiLFxuXHRcdGg6IFwiY1wiLFxuXHRcdGNwcDogXCJjcHBcIixcblx0XHRjYzogXCJjcHBcIixcblx0XHRjeHg6IFwiY3BwXCIsXG5cdFx0aHBwOiBcImNwcFwiLFxuXHRcdGNzOiBcImNzaGFycFwiLFxuXHRcdHBocDogXCJwaHBcIixcblx0XHRzaDogXCJiYXNoXCIsXG5cdFx0YmFzaDogXCJiYXNoXCIsXG5cdFx0enNoOiBcImJhc2hcIixcblx0XHRmaXNoOiBcImJhc2hcIixcblx0XHRwczE6IFwicG93ZXJzaGVsbFwiLFxuXHRcdHNxbDogXCJzcWxcIixcblx0XHRodG1sOiBcImh0bWxcIixcblx0XHRodG06IFwiaHRtbFwiLFxuXHRcdHhtbDogXCJ4bWxcIixcblx0XHRjc3M6IFwiY3NzXCIsXG5cdFx0c2NzczogXCJzY3NzXCIsXG5cdFx0c2FzczogXCJzY3NzXCIsXG5cdFx0bGVzczogXCJsZXNzXCIsXG5cdFx0anNvbjogXCJqc29uXCIsXG5cdFx0eWFtbDogXCJ5YW1sXCIsXG5cdFx0eW1sOiBcInlhbWxcIixcblx0XHR0b21sOiBcInRvbWxcIixcblx0XHRpbmk6IFwiaW5pXCIsXG5cdFx0bWQ6IFwibWFya2Rvd25cIixcblx0XHRtYXJrZG93bjogXCJtYXJrZG93blwiLFxuXHRcdGRvY2tlcmZpbGU6IFwiZG9ja2VyZmlsZVwiLFxuXHRcdG1ha2VmaWxlOiBcIm1ha2VmaWxlXCIsXG5cdFx0Y21ha2U6IFwiY21ha2VcIixcblx0XHRsdWE6IFwibHVhXCIsXG5cdFx0cjogXCJyXCIsXG5cdFx0c2NhbGE6IFwic2NhbGFcIixcblx0XHRjbGo6IFwiY2xvanVyZVwiLFxuXHRcdGNsanM6IFwiY2xvanVyZVwiLFxuXHRcdGV4OiBcImVsaXhpclwiLFxuXHRcdGV4czogXCJlbGl4aXJcIixcblx0XHRlcmw6IFwiZXJsYW5nXCIsXG5cdFx0aHJsOiBcImVybGFuZ1wiLFxuXHRcdGhzOiBcImhhc2tlbGxcIixcblx0XHRtbDogXCJvY2FtbFwiLFxuXHRcdG1saTogXCJvY2FtbFwiLFxuXHRcdGZzOiBcImZzaGFycFwiLFxuXHRcdGZzeDogXCJmc2hhcnBcIixcblx0XHR2dWU6IFwidnVlXCIsXG5cdFx0c3ZlbHRlOiBcInhtbFwiLFxuXHRcdHRmOiBcImhjbFwiLFxuXHRcdGhjbDogXCJoY2xcIixcblx0XHRwcm90bzogXCJwcm90b2J1ZlwiLFxuXHRcdGdyYXBocWw6IFwiZ3JhcGhxbFwiLFxuXHRcdGdxbDogXCJncmFwaHFsXCIsXG5cdH07XG5cblx0cmV0dXJuIGV4dFRvTGFuZ1tleHRdO1xufVxuXG4vKiogUmVuZGVyIG1hcmtkb3duIHRvIEhUTUwgc2VydmVyLXNpZGUgd2l0aCBUVUktc3R5bGUgY29kZSBibG9jayBmb3JtYXR0aW5nIGFuZCBzeW50YXggaGlnaGxpZ2h0aW5nLiAqL1xuZnVuY3Rpb24gcmVuZGVyTWFya2Rvd24odGV4dDogc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gQ3VzdG9tIHJlbmRlcmVyIGZvciBjb2RlIGJsb2NrcyB0byBtYXRjaCBUVUkgc3R5bGVcblx0Y29uc3QgcmVuZGVyZXIgPSBuZXcgbWFya2VkLlJlbmRlcmVyKCk7XG5cdHJlbmRlcmVyLmNvZGUgPSAoeyB0ZXh0OiBjb2RlLCBsYW5nIH06IHsgdGV4dDogc3RyaW5nOyBsYW5nPzogc3RyaW5nIH0pID0+IHtcblx0XHRjb25zdCBsYW5ndWFnZSA9IGxhbmcgfHwgXCJcIjtcblx0XHRjb25zdCBoaWdobGlnaHRlZCA9IGhpZ2hsaWdodENvZGUoY29kZSwgbGFuZyk7XG5cdFx0cmV0dXJuIChcblx0XHRcdCc8ZGl2IGNsYXNzPVwiY29kZS1ibG9jay13cmFwcGVyXCI+JyArXG5cdFx0XHRgPGRpdiBjbGFzcz1cImNvZGUtYmxvY2staGVhZGVyXCI+XFxgXFxgXFxgJHtsYW5ndWFnZX08L2Rpdj5gICtcblx0XHRcdGA8cHJlPjxjb2RlIGNsYXNzPVwiaGxqc1wiPiR7aGlnaGxpZ2h0ZWR9PC9jb2RlPjwvcHJlPmAgK1xuXHRcdFx0JzxkaXYgY2xhc3M9XCJjb2RlLWJsb2NrLWZvb3RlclwiPmBgYDwvZGl2PicgK1xuXHRcdFx0XCI8L2Rpdj5cIlxuXHRcdCk7XG5cdH07XG5cblx0Ly8gQ29uZmlndXJlIG1hcmtlZCBmb3Igc2FmZSByZW5kZXJpbmdcblx0bWFya2VkLnNldE9wdGlvbnMoe1xuXHRcdGJyZWFrczogdHJ1ZSxcblx0XHRnZm06IHRydWUsXG5cdH0pO1xuXG5cdC8vIFBhcnNlIG1hcmtkb3duIChtYXJrZWQgZXNjYXBlcyBIVE1MIGJ5IGRlZmF1bHQgaW4gbmV3ZXIgdmVyc2lvbnMpXG5cdHJldHVybiBtYXJrZWQucGFyc2UodGV4dCwgeyByZW5kZXJlciB9KSBhcyBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEV4cGFuZGFibGVPdXRwdXQobGluZXM6IHN0cmluZ1tdLCBtYXhMaW5lczogbnVtYmVyLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgZGlzcGxheUxpbmVzID0gbGluZXMuc2xpY2UoMCwgbWF4TGluZXMpO1xuXHRjb25zdCByZW1haW5pbmcgPSBsaW5lcy5sZW5ndGggLSBtYXhMaW5lcztcblxuXHQvLyBJZiBsYW5ndWFnZSBpcyBwcm92aWRlZCwgaGlnaGxpZ2h0IHRoZSBlbnRpcmUgY29kZSBibG9ja1xuXHRpZiAobGFuZykge1xuXHRcdGNvbnN0IGNvZGUgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuXHRcdGNvbnN0IGhpZ2hsaWdodGVkID0gaGlnaGxpZ2h0Q29kZShjb2RlLCBsYW5nKTtcblxuXHRcdGlmIChyZW1haW5pbmcgPiAwKSB7XG5cdFx0XHQvLyBGb3IgZXhwYW5kYWJsZSwgd2UgbmVlZCBwcmV2aWV3IGFuZCBmdWxsIHZlcnNpb25zXG5cdFx0XHRjb25zdCBwcmV2aWV3Q29kZSA9IGRpc3BsYXlMaW5lcy5qb2luKFwiXFxuXCIpO1xuXHRcdFx0Y29uc3QgcHJldmlld0hpZ2hsaWdodGVkID0gaGlnaGxpZ2h0Q29kZShwcmV2aWV3Q29kZSwgbGFuZyk7XG5cblx0XHRcdGxldCBvdXQgPSAnPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0IGV4cGFuZGFibGVcIiBvbmNsaWNrPVwidGhpcy5jbGFzc0xpc3QudG9nZ2xlKFxcJ2V4cGFuZGVkXFwnKVwiPic7XG5cdFx0XHRvdXQgKz0gYDxkaXYgY2xhc3M9XCJvdXRwdXQtcHJldmlld1wiPjxwcmU+PGNvZGUgY2xhc3M9XCJobGpzXCI+JHtwcmV2aWV3SGlnaGxpZ2h0ZWR9PC9jb2RlPjwvcHJlPmA7XG5cdFx0XHRvdXQgKz0gYDxkaXYgY2xhc3M9XCJleHBhbmQtaGludFwiPi4uLiAoJHtyZW1haW5pbmd9IG1vcmUgbGluZXMpIC0gY2xpY2sgdG8gZXhwYW5kPC9kaXY+YDtcblx0XHRcdG91dCArPSBcIjwvZGl2PlwiO1xuXHRcdFx0b3V0ICs9IGA8ZGl2IGNsYXNzPVwib3V0cHV0LWZ1bGxcIj48cHJlPjxjb2RlIGNsYXNzPVwiaGxqc1wiPiR7aGlnaGxpZ2h0ZWR9PC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PmA7XG5cdFx0XHRyZXR1cm4gb3V0O1xuXHRcdH1cblxuXHRcdHJldHVybiBgPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0XCI+PHByZT48Y29kZSBjbGFzcz1cImhsanNcIj4ke2hpZ2hsaWdodGVkfTwvY29kZT48L3ByZT48L2Rpdj5gO1xuXHR9XG5cblx0Ly8gTm8gbGFuZ3VhZ2UgLSBwbGFpbiB0ZXh0IG91dHB1dFxuXHRpZiAocmVtYWluaW5nID4gMCkge1xuXHRcdGxldCBvdXQgPSAnPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0IGV4cGFuZGFibGVcIiBvbmNsaWNrPVwidGhpcy5jbGFzc0xpc3QudG9nZ2xlKFxcJ2V4cGFuZGVkXFwnKVwiPic7XG5cdFx0b3V0ICs9ICc8ZGl2IGNsYXNzPVwib3V0cHV0LXByZXZpZXdcIj4nO1xuXHRcdGZvciAoY29uc3QgbGluZSBvZiBkaXNwbGF5TGluZXMpIHtcblx0XHRcdG91dCArPSBgPGRpdj4ke2VzY2FwZUh0bWwocmVwbGFjZVRhYnMobGluZSkpfTwvZGl2PmA7XG5cdFx0fVxuXHRcdG91dCArPSBgPGRpdiBjbGFzcz1cImV4cGFuZC1oaW50XCI+Li4uICgke3JlbWFpbmluZ30gbW9yZSBsaW5lcykgLSBjbGljayB0byBleHBhbmQ8L2Rpdj5gO1xuXHRcdG91dCArPSBcIjwvZGl2PlwiO1xuXHRcdG91dCArPSAnPGRpdiBjbGFzcz1cIm91dHB1dC1mdWxsXCI+Jztcblx0XHRmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcblx0XHRcdG91dCArPSBgPGRpdj4ke2VzY2FwZUh0bWwocmVwbGFjZVRhYnMobGluZSkpfTwvZGl2PmA7XG5cdFx0fVxuXHRcdG91dCArPSBcIjwvZGl2PjwvZGl2PlwiO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRsZXQgb3V0ID0gJzxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dFwiPic7XG5cdGZvciAoY29uc3QgbGluZSBvZiBkaXNwbGF5TGluZXMpIHtcblx0XHRvdXQgKz0gYDxkaXY+JHtlc2NhcGVIdG1sKHJlcGxhY2VUYWJzKGxpbmUpKX08L2Rpdj5gO1xuXHR9XG5cdG91dCArPSBcIjwvZGl2PlwiO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXJzaW5nIGZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBwYXJzZVNlc3Npb25NYW5hZ2VyRm9ybWF0KGxpbmVzOiBzdHJpbmdbXSk6IFBhcnNlZFNlc3Npb25EYXRhIHtcblx0Y29uc3QgZGF0YTogUGFyc2VkU2Vzc2lvbkRhdGEgPSB7XG5cdFx0c2Vzc2lvbklkOiBcInVua25vd25cIixcblx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRtb2RlbHNVc2VkOiBuZXcgU2V0KCksXG5cdFx0bWVzc2FnZXM6IFtdLFxuXHRcdHRvb2xSZXN1bHRzTWFwOiBuZXcgTWFwKCksXG5cdFx0c2Vzc2lvbkV2ZW50czogW10sXG5cdFx0dG9rZW5TdGF0czogeyBpbnB1dDogMCwgb3V0cHV0OiAwLCBjYWNoZVJlYWQ6IDAsIGNhY2hlV3JpdGU6IDAgfSxcblx0XHRjb3N0U3RhdHM6IHsgaW5wdXQ6IDAsIG91dHB1dDogMCwgY2FjaGVSZWFkOiAwLCBjYWNoZVdyaXRlOiAwIH0sXG5cdH07XG5cblx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG5cdFx0bGV0IGVudHJ5OiB7IHR5cGU6IHN0cmluZzsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuXHRcdHRyeSB7XG5cdFx0XHRlbnRyeSA9IEpTT04ucGFyc2UobGluZSkgYXMgeyB0eXBlOiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdHN3aXRjaCAoZW50cnkudHlwZSkge1xuXHRcdFx0Y2FzZSBcInNlc3Npb25cIjpcblx0XHRcdFx0ZGF0YS5zZXNzaW9uSWQgPSAoZW50cnkuaWQgYXMgc3RyaW5nKSB8fCBcInVua25vd25cIjtcblx0XHRcdFx0ZGF0YS50aW1lc3RhbXAgPSAoZW50cnkudGltZXN0YW1wIGFzIHN0cmluZykgfHwgZGF0YS50aW1lc3RhbXA7XG5cdFx0XHRcdGRhdGEuc3lzdGVtUHJvbXB0ID0gZW50cnkuc3lzdGVtUHJvbXB0IGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGVudHJ5Lm1vZGVsSWQpIHtcblx0XHRcdFx0XHRjb25zdCBtb2RlbEluZm8gPSBlbnRyeS5wcm92aWRlciA/IGAke2VudHJ5LnByb3ZpZGVyfS8ke2VudHJ5Lm1vZGVsSWR9YCA6IChlbnRyeS5tb2RlbElkIGFzIHN0cmluZyk7XG5cdFx0XHRcdFx0ZGF0YS5tb2RlbHNVc2VkLmFkZChtb2RlbEluZm8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwibWVzc2FnZVwiOiB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlbnRyeS5tZXNzYWdlIGFzIE1lc3NhZ2U7XG5cdFx0XHRcdGRhdGEubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcblx0XHRcdFx0ZGF0YS5zZXNzaW9uRXZlbnRzLnB1c2goe1xuXHRcdFx0XHRcdHR5cGU6IFwibWVzc2FnZVwiLFxuXHRcdFx0XHRcdG1lc3NhZ2UsXG5cdFx0XHRcdFx0dGltZXN0YW1wOiBlbnRyeS50aW1lc3RhbXAgYXMgbnVtYmVyIHwgdW5kZWZpbmVkLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAobWVzc2FnZS5yb2xlID09PSBcInRvb2xSZXN1bHRcIikge1xuXHRcdFx0XHRcdGNvbnN0IHRvb2xSZXN1bHQgPSBtZXNzYWdlIGFzIFRvb2xSZXN1bHRNZXNzYWdlO1xuXHRcdFx0XHRcdGRhdGEudG9vbFJlc3VsdHNNYXAuc2V0KHRvb2xSZXN1bHQudG9vbENhbGxJZCwgdG9vbFJlc3VsdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgYXNzaXN0YW50TXNnID0gbWVzc2FnZSBhcyBBc3Npc3RhbnRNZXNzYWdlO1xuXHRcdFx0XHRcdGlmIChhc3Npc3RhbnRNc2cudXNhZ2UpIHtcblx0XHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5pbnB1dCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuaW5wdXQgfHwgMDtcblx0XHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5vdXRwdXQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLm91dHB1dCB8fCAwO1xuXHRcdFx0XHRcdFx0ZGF0YS50b2tlblN0YXRzLmNhY2hlUmVhZCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY2FjaGVSZWFkIHx8IDA7XG5cdFx0XHRcdFx0XHRkYXRhLnRva2VuU3RhdHMuY2FjaGVXcml0ZSArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY2FjaGVXcml0ZSB8fCAwO1xuXHRcdFx0XHRcdFx0aWYgKGFzc2lzdGFudE1zZy51c2FnZS5jb3N0KSB7XG5cdFx0XHRcdFx0XHRcdGRhdGEuY29zdFN0YXRzLmlucHV0ICs9IGFzc2lzdGFudE1zZy51c2FnZS5jb3N0LmlucHV0IHx8IDA7XG5cdFx0XHRcdFx0XHRcdGRhdGEuY29zdFN0YXRzLm91dHB1dCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5vdXRwdXQgfHwgMDtcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb3N0U3RhdHMuY2FjaGVSZWFkICs9IGFzc2lzdGFudE1zZy51c2FnZS5jb3N0LmNhY2hlUmVhZCB8fCAwO1xuXHRcdFx0XHRcdFx0XHRkYXRhLmNvc3RTdGF0cy5jYWNoZVdyaXRlICs9IGFzc2lzdGFudE1zZy51c2FnZS5jb3N0LmNhY2hlV3JpdGUgfHwgMDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgXCJtb2RlbF9jaGFuZ2VcIjpcblx0XHRcdFx0ZGF0YS5zZXNzaW9uRXZlbnRzLnB1c2goe1xuXHRcdFx0XHRcdHR5cGU6IFwibW9kZWxfY2hhbmdlXCIsXG5cdFx0XHRcdFx0cHJvdmlkZXI6IGVudHJ5LnByb3ZpZGVyIGFzIHN0cmluZyxcblx0XHRcdFx0XHRtb2RlbElkOiBlbnRyeS5tb2RlbElkIGFzIHN0cmluZyxcblx0XHRcdFx0XHR0aW1lc3RhbXA6IGVudHJ5LnRpbWVzdGFtcCBhcyBudW1iZXIgfCB1bmRlZmluZWQsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoZW50cnkubW9kZWxJZCkge1xuXHRcdFx0XHRcdGNvbnN0IG1vZGVsSW5mbyA9IGVudHJ5LnByb3ZpZGVyID8gYCR7ZW50cnkucHJvdmlkZXJ9LyR7ZW50cnkubW9kZWxJZH1gIDogKGVudHJ5Lm1vZGVsSWQgYXMgc3RyaW5nKTtcblx0XHRcdFx0XHRkYXRhLm1vZGVsc1VzZWQuYWRkKG1vZGVsSW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb21wYWN0aW9uXCI6XG5cdFx0XHRcdGRhdGEuc2Vzc2lvbkV2ZW50cy5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBcImNvbXBhY3Rpb25cIixcblx0XHRcdFx0XHR0aW1lc3RhbXA6IGVudHJ5LnRpbWVzdGFtcCBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0c3VtbWFyeTogZW50cnkuc3VtbWFyeSBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0dG9rZW5zQmVmb3JlOiBlbnRyeS50b2tlbnNCZWZvcmUgYXMgbnVtYmVyLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RyZWFtaW5nRXZlbnRGb3JtYXQobGluZXM6IHN0cmluZ1tdKTogUGFyc2VkU2Vzc2lvbkRhdGEge1xuXHRjb25zdCBkYXRhOiBQYXJzZWRTZXNzaW9uRGF0YSA9IHtcblx0XHRzZXNzaW9uSWQ6IFwidW5rbm93blwiLFxuXHRcdHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdG1vZGVsc1VzZWQ6IG5ldyBTZXQoKSxcblx0XHRtZXNzYWdlczogW10sXG5cdFx0dG9vbFJlc3VsdHNNYXA6IG5ldyBNYXAoKSxcblx0XHRzZXNzaW9uRXZlbnRzOiBbXSxcblx0XHR0b2tlblN0YXRzOiB7IGlucHV0OiAwLCBvdXRwdXQ6IDAsIGNhY2hlUmVhZDogMCwgY2FjaGVXcml0ZTogMCB9LFxuXHRcdGNvc3RTdGF0czogeyBpbnB1dDogMCwgb3V0cHV0OiAwLCBjYWNoZVJlYWQ6IDAsIGNhY2hlV3JpdGU6IDAgfSxcblx0XHRpc1N0cmVhbWluZ0Zvcm1hdDogdHJ1ZSxcblx0fTtcblxuXHRsZXQgdGltZXN0YW1wU2V0ID0gZmFsc2U7XG5cblx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG5cdFx0bGV0IGVudHJ5OiB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZT86IE1lc3NhZ2UgfTtcblx0XHR0cnkge1xuXHRcdFx0ZW50cnkgPSBKU09OLnBhcnNlKGxpbmUpIGFzIHsgdHlwZTogc3RyaW5nOyBtZXNzYWdlPzogTWVzc2FnZSB9O1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0aWYgKGVudHJ5LnR5cGUgPT09IFwibWVzc2FnZV9lbmRcIiAmJiBlbnRyeS5tZXNzYWdlKSB7XG5cdFx0XHRjb25zdCBtc2cgPSBlbnRyeS5tZXNzYWdlO1xuXHRcdFx0ZGF0YS5tZXNzYWdlcy5wdXNoKG1zZyk7XG5cdFx0XHRkYXRhLnNlc3Npb25FdmVudHMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IFwibWVzc2FnZVwiLFxuXHRcdFx0XHRtZXNzYWdlOiBtc2csXG5cdFx0XHRcdHRpbWVzdGFtcDogKG1zZyBhcyB7IHRpbWVzdGFtcD86IG51bWJlciB9KS50aW1lc3RhbXAsXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKG1zZy5yb2xlID09PSBcInRvb2xSZXN1bHRcIikge1xuXHRcdFx0XHRjb25zdCB0b29sUmVzdWx0ID0gbXNnIGFzIFRvb2xSZXN1bHRNZXNzYWdlO1xuXHRcdFx0XHRkYXRhLnRvb2xSZXN1bHRzTWFwLnNldCh0b29sUmVzdWx0LnRvb2xDYWxsSWQsIHRvb2xSZXN1bHQpO1xuXHRcdFx0fSBlbHNlIGlmIChtc2cucm9sZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuXHRcdFx0XHRjb25zdCBhc3Npc3RhbnRNc2cgPSBtc2cgYXMgQXNzaXN0YW50TWVzc2FnZTtcblx0XHRcdFx0aWYgKGFzc2lzdGFudE1zZy5tb2RlbCkge1xuXHRcdFx0XHRcdGNvbnN0IG1vZGVsSW5mbyA9IGFzc2lzdGFudE1zZy5wcm92aWRlclxuXHRcdFx0XHRcdFx0PyBgJHthc3Npc3RhbnRNc2cucHJvdmlkZXJ9LyR7YXNzaXN0YW50TXNnLm1vZGVsfWBcblx0XHRcdFx0XHRcdDogYXNzaXN0YW50TXNnLm1vZGVsO1xuXHRcdFx0XHRcdGRhdGEubW9kZWxzVXNlZC5hZGQobW9kZWxJbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoYXNzaXN0YW50TXNnLnVzYWdlKSB7XG5cdFx0XHRcdFx0ZGF0YS50b2tlblN0YXRzLmlucHV0ICs9IGFzc2lzdGFudE1zZy51c2FnZS5pbnB1dCB8fCAwO1xuXHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5vdXRwdXQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLm91dHB1dCB8fCAwO1xuXHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5jYWNoZVJlYWQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmNhY2hlUmVhZCB8fCAwO1xuXHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5jYWNoZVdyaXRlICs9IGFzc2lzdGFudE1zZy51c2FnZS5jYWNoZVdyaXRlIHx8IDA7XG5cdFx0XHRcdFx0aWYgKGFzc2lzdGFudE1zZy51c2FnZS5jb3N0KSB7XG5cdFx0XHRcdFx0XHRkYXRhLmNvc3RTdGF0cy5pbnB1dCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5pbnB1dCB8fCAwO1xuXHRcdFx0XHRcdFx0ZGF0YS5jb3N0U3RhdHMub3V0cHV0ICs9IGFzc2lzdGFudE1zZy51c2FnZS5jb3N0Lm91dHB1dCB8fCAwO1xuXHRcdFx0XHRcdFx0ZGF0YS5jb3N0U3RhdHMuY2FjaGVSZWFkICs9IGFzc2lzdGFudE1zZy51c2FnZS5jb3N0LmNhY2hlUmVhZCB8fCAwO1xuXHRcdFx0XHRcdFx0ZGF0YS5jb3N0U3RhdHMuY2FjaGVXcml0ZSArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5jYWNoZVdyaXRlIHx8IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghdGltZXN0YW1wU2V0ICYmIChtc2cgYXMgeyB0aW1lc3RhbXA/OiBudW1iZXIgfSkudGltZXN0YW1wKSB7XG5cdFx0XHRcdGRhdGEudGltZXN0YW1wID0gbmV3IERhdGUoKG1zZyBhcyB7IHRpbWVzdGFtcDogbnVtYmVyIH0pLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKTtcblx0XHRcdFx0dGltZXN0YW1wU2V0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRkYXRhLnNlc3Npb25JZCA9IGBzdHJlYW0tJHtkYXRhLnRpbWVzdGFtcC5yZXBsYWNlKC9bOi5dL2csIFwiLVwiKX1gO1xuXHRyZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0Rm9ybWF0KGxpbmVzOiBzdHJpbmdbXSk6IFwic2Vzc2lvbi1tYW5hZ2VyXCIgfCBcInN0cmVhbWluZy1ldmVudHNcIiB8IFwidW5rbm93blwiIHtcblx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGVudHJ5ID0gSlNPTi5wYXJzZShsaW5lKSBhcyB7IHR5cGU6IHN0cmluZyB9O1xuXHRcdFx0aWYgKGVudHJ5LnR5cGUgPT09IFwic2Vzc2lvblwiKSByZXR1cm4gXCJzZXNzaW9uLW1hbmFnZXJcIjtcblx0XHRcdGlmIChlbnRyeS50eXBlID09PSBcImFnZW50X3N0YXJ0XCIgfHwgZW50cnkudHlwZSA9PT0gXCJtZXNzYWdlX3N0YXJ0XCIgfHwgZW50cnkudHlwZSA9PT0gXCJ0dXJuX3N0YXJ0XCIpIHtcblx0XHRcdFx0cmV0dXJuIFwic3RyZWFtaW5nLWV2ZW50c1wiO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2gge31cblx0fVxuXHRyZXR1cm4gXCJ1bmtub3duXCI7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2Vzc2lvbkZpbGUoY29udGVudDogc3RyaW5nKTogUGFyc2VkU2Vzc2lvbkRhdGEge1xuXHRjb25zdCBsaW5lcyA9IGNvbnRlbnRcblx0XHQudHJpbSgpXG5cdFx0LnNwbGl0KFwiXFxuXCIpXG5cdFx0LmZpbHRlcigobCkgPT4gbC50cmltKCkpO1xuXG5cdGlmIChsaW5lcy5sZW5ndGggPT09IDApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJFbXB0eSBzZXNzaW9uIGZpbGVcIik7XG5cdH1cblxuXHRjb25zdCBmb3JtYXQgPSBkZXRlY3RGb3JtYXQobGluZXMpO1xuXHRpZiAoZm9ybWF0ID09PSBcInVua25vd25cIikge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlVua25vd24gc2Vzc2lvbiBmaWxlIGZvcm1hdFwiKTtcblx0fVxuXG5cdHJldHVybiBmb3JtYXQgPT09IFwic2Vzc2lvbi1tYW5hZ2VyXCIgPyBwYXJzZVNlc3Npb25NYW5hZ2VyRm9ybWF0KGxpbmVzKSA6IHBhcnNlU3RyZWFtaW5nRXZlbnRGb3JtYXQobGluZXMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIVE1MIGZvcm1hdHRpbmcgZnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGZvcm1hdFRvb2xFeGVjdXRpb24oXG5cdHRvb2xOYW1lOiBzdHJpbmcsXG5cdGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRyZXN1bHQ6IFRvb2xSZXN1bHRNZXNzYWdlIHwgdW5kZWZpbmVkLFxuXHRjb2xvcnM6IFRoZW1lQ29sb3JzLFxuKTogeyBodG1sOiBzdHJpbmc7IGJnQ29sb3I6IHN0cmluZyB9IHtcblx0bGV0IGh0bWwgPSBcIlwiO1xuXHRjb25zdCBpc0Vycm9yID0gcmVzdWx0Py5pc0Vycm9yIHx8IGZhbHNlO1xuXHRjb25zdCBiZ0NvbG9yID0gcmVzdWx0ID8gKGlzRXJyb3IgPyBjb2xvcnMudG9vbEVycm9yQmcgOiBjb2xvcnMudG9vbFN1Y2Nlc3NCZykgOiBjb2xvcnMudG9vbFBlbmRpbmdCZztcblxuXHRjb25zdCBnZXRUZXh0T3V0cHV0ID0gKCk6IHN0cmluZyA9PiB7XG5cdFx0aWYgKCFyZXN1bHQpIHJldHVybiBcIlwiO1xuXHRcdGNvbnN0IHRleHRCbG9ja3MgPSByZXN1bHQuY29udGVudC5maWx0ZXIoKGMpID0+IGMudHlwZSA9PT0gXCJ0ZXh0XCIpO1xuXHRcdHJldHVybiB0ZXh0QmxvY2tzLm1hcCgoYykgPT4gKGMgYXMgeyB0eXBlOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH0pLnRleHQpLmpvaW4oXCJcXG5cIik7XG5cdH07XG5cblx0c3dpdGNoICh0b29sTmFtZSkge1xuXHRcdGNhc2UgXCJiYXNoXCI6IHtcblx0XHRcdGNvbnN0IGNvbW1hbmQgPSAoYXJncz8uY29tbWFuZCBhcyBzdHJpbmcpIHx8IFwiXCI7XG5cdFx0XHRodG1sID0gYDxkaXYgY2xhc3M9XCJ0b29sLWNvbW1hbmRcIj4kICR7ZXNjYXBlSHRtbChjb21tYW5kIHx8IFwiLi4uXCIpfTwvZGl2PmA7XG5cdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdGNvbnN0IG91dHB1dCA9IGdldFRleHRPdXRwdXQoKS50cmltKCk7XG5cdFx0XHRcdGlmIChvdXRwdXQpIHtcblx0XHRcdFx0XHRodG1sICs9IGZvcm1hdEV4cGFuZGFibGVPdXRwdXQob3V0cHV0LnNwbGl0KFwiXFxuXCIpLCA1KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0Y2FzZSBcInJlYWRcIjoge1xuXHRcdFx0Y29uc3QgZmlsZVBhdGggPSAoYXJncz8uZmlsZV9wYXRoIGFzIHN0cmluZykgfHwgKGFyZ3M/LnBhdGggYXMgc3RyaW5nKSB8fCBcIlwiO1xuXHRcdFx0Y29uc3Qgc2hvcnRlbmVkUGF0aCA9IHNob3J0ZW5QYXRoKGZpbGVQYXRoKTtcblx0XHRcdGNvbnN0IG9mZnNldCA9IGFyZ3M/Lm9mZnNldCBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBsaW1pdCA9IGFyZ3M/LmxpbWl0IGFzIG51bWJlciB8IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IGxhbmcgPSBnZXRMYW5ndWFnZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuXHRcdFx0Ly8gQnVpbGQgcGF0aCBkaXNwbGF5IHdpdGggb2Zmc2V0L2xpbWl0IHN1ZmZpeFxuXHRcdFx0bGV0IHBhdGhIdG1sID0gZXNjYXBlSHRtbChzaG9ydGVuZWRQYXRoIHx8IFwiLi4uXCIpO1xuXHRcdFx0aWYgKG9mZnNldCAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3Qgc3RhcnRMaW5lID0gb2Zmc2V0ID8/IDE7XG5cdFx0XHRcdGNvbnN0IGVuZExpbmUgPSBsaW1pdCAhPT0gdW5kZWZpbmVkID8gc3RhcnRMaW5lICsgbGltaXQgLSAxIDogXCJcIjtcblx0XHRcdFx0cGF0aEh0bWwgKz0gYDxzcGFuIGNsYXNzPVwibGluZS1udW1iZXJzXCI+OiR7c3RhcnRMaW5lfSR7ZW5kTGluZSA/IGAtJHtlbmRMaW5lfWAgOiBcIlwifTwvc3Bhbj5gO1xuXHRcdFx0fVxuXG5cdFx0XHRodG1sID0gYDxkaXYgY2xhc3M9XCJ0b29sLWhlYWRlclwiPjxzcGFuIGNsYXNzPVwidG9vbC1uYW1lXCI+cmVhZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ0b29sLXBhdGhcIj4ke3BhdGhIdG1sfTwvc3Bhbj48L2Rpdj5gO1xuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRjb25zdCBvdXRwdXQgPSBnZXRUZXh0T3V0cHV0KCk7XG5cdFx0XHRcdGlmIChvdXRwdXQpIHtcblx0XHRcdFx0XHRodG1sICs9IGZvcm1hdEV4cGFuZGFibGVPdXRwdXQob3V0cHV0LnNwbGl0KFwiXFxuXCIpLCAxMCwgbGFuZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGNhc2UgXCJ3cml0ZVwiOiB7XG5cdFx0XHRjb25zdCBmaWxlUGF0aCA9IChhcmdzPy5maWxlX3BhdGggYXMgc3RyaW5nKSB8fCAoYXJncz8ucGF0aCBhcyBzdHJpbmcpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBzaG9ydGVuZWRQYXRoID0gc2hvcnRlblBhdGgoZmlsZVBhdGgpO1xuXHRcdFx0Y29uc3QgZmlsZUNvbnRlbnQgPSAoYXJncz8uY29udGVudCBhcyBzdHJpbmcpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBsaW5lcyA9IGZpbGVDb250ZW50ID8gZmlsZUNvbnRlbnQuc3BsaXQoXCJcXG5cIikgOiBbXTtcblx0XHRcdGNvbnN0IGxhbmcgPSBnZXRMYW5ndWFnZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuXHRcdFx0aHRtbCA9IGA8ZGl2IGNsYXNzPVwidG9vbC1oZWFkZXJcIj48c3BhbiBjbGFzcz1cInRvb2wtbmFtZVwiPndyaXRlPC9zcGFuPiA8c3BhbiBjbGFzcz1cInRvb2wtcGF0aFwiPiR7ZXNjYXBlSHRtbChzaG9ydGVuZWRQYXRoIHx8IFwiLi4uXCIpfTwvc3Bhbj5gO1xuXHRcdFx0aWYgKGxpbmVzLmxlbmd0aCA+IDEwKSB7XG5cdFx0XHRcdGh0bWwgKz0gYCA8c3BhbiBjbGFzcz1cImxpbmUtY291bnRcIj4oJHtsaW5lcy5sZW5ndGh9IGxpbmVzKTwvc3Bhbj5gO1xuXHRcdFx0fVxuXHRcdFx0aHRtbCArPSBcIjwvZGl2PlwiO1xuXG5cdFx0XHRpZiAoZmlsZUNvbnRlbnQpIHtcblx0XHRcdFx0aHRtbCArPSBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KGxpbmVzLCAxMCwgbGFuZyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdGNvbnN0IG91dHB1dCA9IGdldFRleHRPdXRwdXQoKS50cmltKCk7XG5cdFx0XHRcdGlmIChvdXRwdXQpIHtcblx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidG9vbC1vdXRwdXRcIj48ZGl2PiR7ZXNjYXBlSHRtbChvdXRwdXQpfTwvZGl2PjwvZGl2PmA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGNhc2UgXCJlZGl0XCI6IHtcblx0XHRcdGNvbnN0IHBhdGggPSBzaG9ydGVuUGF0aCgoYXJncz8uZmlsZV9wYXRoIGFzIHN0cmluZykgfHwgKGFyZ3M/LnBhdGggYXMgc3RyaW5nKSB8fCBcIlwiKTtcblx0XHRcdGh0bWwgPSBgPGRpdiBjbGFzcz1cInRvb2wtaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJ0b29sLW5hbWVcIj5lZGl0PC9zcGFuPiA8c3BhbiBjbGFzcz1cInRvb2wtcGF0aFwiPiR7ZXNjYXBlSHRtbChwYXRoIHx8IFwiLi4uXCIpfTwvc3Bhbj48L2Rpdj5gO1xuXG5cdFx0XHRpZiAocmVzdWx0Py5kZXRhaWxzPy5kaWZmKSB7XG5cdFx0XHRcdGNvbnN0IGRpZmZMaW5lcyA9IHJlc3VsdC5kZXRhaWxzLmRpZmYuc3BsaXQoXCJcXG5cIik7XG5cdFx0XHRcdGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJ0b29sLWRpZmZcIj4nO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGxpbmUgb2YgZGlmZkxpbmVzKSB7XG5cdFx0XHRcdFx0aWYgKGxpbmUuc3RhcnRzV2l0aChcIitcIikpIHtcblx0XHRcdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJkaWZmLWxpbmUtbmV3XCI+JHtlc2NhcGVIdG1sKGxpbmUpfTwvZGl2PmA7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG5cdFx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiZGlmZi1saW5lLW9sZFwiPiR7ZXNjYXBlSHRtbChsaW5lKX08L2Rpdj5gO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiZGlmZi1saW5lLWNvbnRleHRcIj4ke2VzY2FwZUh0bWwobGluZSl9PC9kaXY+YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aHRtbCArPSBcIjwvZGl2PlwiO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRjb25zdCBvdXRwdXQgPSBnZXRUZXh0T3V0cHV0KCkudHJpbSgpO1xuXHRcdFx0XHRpZiAob3V0cHV0KSB7XG5cdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0XCI+PGRpdj4ke2VzY2FwZUh0bWwob3V0cHV0KX08L2Rpdj48L2Rpdj5gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRodG1sID0gYDxkaXYgY2xhc3M9XCJ0b29sLWhlYWRlclwiPjxzcGFuIGNsYXNzPVwidG9vbC1uYW1lXCI+JHtlc2NhcGVIdG1sKHRvb2xOYW1lKX08L3NwYW4+PC9kaXY+YDtcblx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dFwiPjxwcmU+JHtlc2NhcGVIdG1sKEpTT04uc3RyaW5naWZ5KGFyZ3MsIG51bGwsIDIpKX08L3ByZT48L2Rpdj5gO1xuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRjb25zdCBvdXRwdXQgPSBnZXRUZXh0T3V0cHV0KCk7XG5cdFx0XHRcdGlmIChvdXRwdXQpIHtcblx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidG9vbC1vdXRwdXRcIj48ZGl2PiR7ZXNjYXBlSHRtbChvdXRwdXQpfTwvZGl2PjwvZGl2PmA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyBodG1sLCBiZ0NvbG9yIH07XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2UoXG5cdG1lc3NhZ2U6IEFnZW50TWVzc2FnZSxcblx0dG9vbFJlc3VsdHNNYXA6IE1hcDxzdHJpbmcsIFRvb2xSZXN1bHRNZXNzYWdlPixcblx0Y29sb3JzOiBUaGVtZUNvbG9ycyxcbik6IHN0cmluZyB7XG5cdGxldCBodG1sID0gXCJcIjtcblx0Y29uc3QgdGltZXN0YW1wID0gKG1lc3NhZ2UgYXMgeyB0aW1lc3RhbXA/OiBudW1iZXIgfSkudGltZXN0YW1wO1xuXHRjb25zdCB0aW1lc3RhbXBIdG1sID0gdGltZXN0YW1wID8gYDxkaXYgY2xhc3M9XCJtZXNzYWdlLXRpbWVzdGFtcFwiPiR7Zm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCl9PC9kaXY+YCA6IFwiXCI7XG5cblx0c3dpdGNoIChtZXNzYWdlLnJvbGUpIHtcblx0XHRjYXNlIFwiYmFzaEV4ZWN1dGlvblwiOiB7XG5cdFx0XHRjb25zdCBpc0Vycm9yID1cblx0XHRcdFx0bWVzc2FnZS5jYW5jZWxsZWQgfHxcblx0XHRcdFx0KG1lc3NhZ2UuZXhpdENvZGUgIT09IDAgJiYgbWVzc2FnZS5leGl0Q29kZSAhPT0gbnVsbCAmJiBtZXNzYWdlLmV4aXRDb2RlICE9PSB1bmRlZmluZWQpO1xuXG5cdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidG9vbC1leGVjdXRpb24gdXNlci1iYXNoJHtpc0Vycm9yID8gXCIgdXNlci1iYXNoLWVycm9yXCIgOiBcIlwifVwiPmA7XG5cdFx0XHRodG1sICs9IHRpbWVzdGFtcEh0bWw7XG5cdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidG9vbC1jb21tYW5kXCI+JCAke2VzY2FwZUh0bWwobWVzc2FnZS5jb21tYW5kKX08L2Rpdj5gO1xuXG5cdFx0XHRpZiAobWVzc2FnZS5vdXRwdXQpIHtcblx0XHRcdFx0Y29uc3QgbGluZXMgPSBtZXNzYWdlLm91dHB1dC5zcGxpdChcIlxcblwiKTtcblx0XHRcdFx0aHRtbCArPSBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KGxpbmVzLCAxMCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlLmNhbmNlbGxlZCkge1xuXHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiYmFzaC1zdGF0dXMgd2FybmluZ1wiPihjYW5jZWxsZWQpPC9kaXY+YDtcblx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZS5leGl0Q29kZSAhPT0gMCAmJiBtZXNzYWdlLmV4aXRDb2RlICE9PSBudWxsICYmIG1lc3NhZ2UuZXhpdENvZGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiYmFzaC1zdGF0dXMgZXJyb3JcIj4oZXhpdCAke21lc3NhZ2UuZXhpdENvZGV9KTwvZGl2PmA7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlLnRydW5jYXRlZCAmJiBtZXNzYWdlLmZ1bGxPdXRwdXRQYXRoKSB7XG5cdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJiYXNoLXRydW5jYXRpb24gd2FybmluZ1wiPk91dHB1dCB0cnVuY2F0ZWQuIEZ1bGwgb3V0cHV0OiAke2VzY2FwZUh0bWwobWVzc2FnZS5mdWxsT3V0cHV0UGF0aCl9PC9kaXY+YDtcblx0XHRcdH1cblxuXHRcdFx0aHRtbCArPSBgPC9kaXY+YDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwidXNlclwiOiB7XG5cdFx0XHRjb25zdCB1c2VyTXNnID0gbWVzc2FnZSBhcyBVc2VyTWVzc2FnZTtcblx0XHRcdGxldCB0ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHRjb25zdCBpbWFnZXM6IEltYWdlQ29udGVudFtdID0gW107XG5cblx0XHRcdGlmICh0eXBlb2YgdXNlck1zZy5jb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdHRleHRDb250ZW50ID0gdXNlck1zZy5jb250ZW50O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yIChjb25zdCBibG9jayBvZiB1c2VyTXNnLmNvbnRlbnQpIHtcblx0XHRcdFx0XHRpZiAoYmxvY2sudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcblx0XHRcdFx0XHRcdHRleHRDb250ZW50ICs9IGJsb2NrLnRleHQ7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChibG9jay50eXBlID09PSBcImltYWdlXCIpIHtcblx0XHRcdFx0XHRcdGltYWdlcy5wdXNoKGJsb2NrIGFzIEltYWdlQ29udGVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ1c2VyLW1lc3NhZ2VcIj4ke3RpbWVzdGFtcEh0bWx9YDtcblxuXHRcdFx0Ly8gUmVuZGVyIGltYWdlcyBmaXJzdFxuXHRcdFx0aWYgKGltYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJtZXNzYWdlLWltYWdlc1wiPmA7XG5cdFx0XHRcdGZvciAoY29uc3QgaW1nIG9mIGltYWdlcykge1xuXHRcdFx0XHRcdGh0bWwgKz0gYDxpbWcgc3JjPVwiZGF0YToke2ltZy5taW1lVHlwZX07YmFzZTY0LCR7aW1nLmRhdGF9XCIgYWx0PVwiVXNlciB1cGxvYWRlZCBpbWFnZVwiIGNsYXNzPVwibWVzc2FnZS1pbWFnZVwiIC8+YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRodG1sICs9IGA8L2Rpdj5gO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZW5kZXIgdGV4dCBhcyBtYXJrZG93biAoc2VydmVyLXNpZGUpXG5cdFx0XHRpZiAodGV4dENvbnRlbnQudHJpbSgpKSB7XG5cdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJtYXJrZG93bi1jb250ZW50XCI+JHtyZW5kZXJNYXJrZG93bih0ZXh0Q29udGVudCl9PC9kaXY+YDtcblx0XHRcdH1cblxuXHRcdFx0aHRtbCArPSBgPC9kaXY+YDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwiYXNzaXN0YW50XCI6IHtcblx0XHRcdGh0bWwgKz0gdGltZXN0YW1wSHRtbCA/IGA8ZGl2IGNsYXNzPVwiYXNzaXN0YW50LW1lc3NhZ2VcIj4ke3RpbWVzdGFtcEh0bWx9YCA6IFwiXCI7XG5cblx0XHRcdGZvciAoY29uc3QgY29udGVudCBvZiBtZXNzYWdlLmNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGNvbnRlbnQudHlwZSA9PT0gXCJ0ZXh0XCIgJiYgY29udGVudC50ZXh0LnRyaW0oKSkge1xuXHRcdFx0XHRcdC8vIFJlbmRlciBtYXJrZG93biBzZXJ2ZXItc2lkZVxuXHRcdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJhc3Npc3RhbnQtdGV4dCBtYXJrZG93bi1jb250ZW50XCI+JHtyZW5kZXJNYXJrZG93bihjb250ZW50LnRleHQpfTwvZGl2PmA7XG5cdFx0XHRcdH0gZWxzZSBpZiAoY29udGVudC50eXBlID09PSBcInRoaW5raW5nXCIgJiYgY29udGVudC50aGlua2luZy50cmltKCkpIHtcblx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidGhpbmtpbmctdGV4dFwiPiR7ZXNjYXBlSHRtbChjb250ZW50LnRoaW5raW5nLnRyaW0oKSkucmVwbGFjZSgvXFxuL2csIFwiPGJyPlwiKX08L2Rpdj5gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgY29udGVudCBvZiBtZXNzYWdlLmNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGNvbnRlbnQudHlwZSA9PT0gXCJ0b29sQ2FsbFwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgdG9vbFJlc3VsdCA9IHRvb2xSZXN1bHRzTWFwLmdldChjb250ZW50LmlkKTtcblx0XHRcdFx0XHRjb25zdCB7IGh0bWw6IHRvb2xIdG1sLCBiZ0NvbG9yIH0gPSBmb3JtYXRUb29sRXhlY3V0aW9uKFxuXHRcdFx0XHRcdFx0Y29udGVudC5uYW1lLFxuXHRcdFx0XHRcdFx0Y29udGVudC5hcmd1bWVudHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdFx0XHRcdFx0XHR0b29sUmVzdWx0LFxuXHRcdFx0XHRcdFx0Y29sb3JzLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtZXhlY3V0aW9uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAke2JnQ29sb3J9XCI+JHt0b29sSHRtbH08L2Rpdj5gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGhhc1Rvb2xDYWxscyA9IG1lc3NhZ2UuY29udGVudC5zb21lKChjKSA9PiBjLnR5cGUgPT09IFwidG9vbENhbGxcIik7XG5cdFx0XHRpZiAoIWhhc1Rvb2xDYWxscykge1xuXHRcdFx0XHRpZiAobWVzc2FnZS5zdG9wUmVhc29uID09PSBcImFib3J0ZWRcIikge1xuXHRcdFx0XHRcdGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJlcnJvci10ZXh0XCI+QWJvcnRlZDwvZGl2Pic7XG5cdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZS5zdG9wUmVhc29uID09PSBcImVycm9yXCIpIHtcblx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiZXJyb3ItdGV4dFwiPkVycm9yOiAke2VzY2FwZUh0bWwobWVzc2FnZS5lcnJvck1lc3NhZ2UgfHwgXCJVbmtub3duIGVycm9yXCIpfTwvZGl2PmA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHRpbWVzdGFtcEh0bWwpIHtcblx0XHRcdFx0aHRtbCArPSBcIjwvZGl2PlwiO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNhc2UgXCJ0b29sUmVzdWx0XCI6XG5cdFx0XHQvLyBUb29sIHJlc3VsdHMgYXJlIHJlbmRlcmVkIGlubGluZSB3aXRoIHRvb2wgY2FsbHNcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJob29rTWVzc2FnZVwiOlxuXHRcdFx0Ly8gSG9vayBtZXNzYWdlcyB3aXRoIGRpc3BsYXk6dHJ1ZSBzaG93biBhcyBpbmZvIGJveGVzXG5cdFx0XHRpZiAobWVzc2FnZS5kaXNwbGF5KSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSBcInN0cmluZ1wiID8gbWVzc2FnZS5jb250ZW50IDogSlNPTi5zdHJpbmdpZnkobWVzc2FnZS5jb250ZW50KTtcblx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImhvb2stbWVzc2FnZVwiPiR7dGltZXN0YW1wSHRtbH08ZGl2IGNsYXNzPVwiaG9vay10eXBlXCI+WyR7ZXNjYXBlSHRtbChtZXNzYWdlLmN1c3RvbVR5cGUpfV08L2Rpdj48ZGl2IGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiPiR7cmVuZGVyTWFya2Rvd24oY29udGVudCl9PC9kaXY+PC9kaXY+YDtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJjb21wYWN0aW9uU3VtbWFyeVwiOlxuXHRcdFx0Ly8gUmVuZGVyZWQgc2VwYXJhdGVseSB2aWEgZm9ybWF0Q29tcGFjdGlvblxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImJyYW5jaFN1bW1hcnlcIjpcblx0XHRcdC8vIFJlbmRlcmVkIGFzIGNvbXBhY3Rpb24tbGlrZSBzdW1tYXJ5XG5cdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1jb250YWluZXIgZXhwYW5kZWRcIj48ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1jb250ZW50XCI+PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tc3VtbWFyeVwiPjxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLXN1bW1hcnktaGVhZGVyXCI+QnJhbmNoIFN1bW1hcnk8L2Rpdj48ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1zdW1tYXJ5LWNvbnRlbnRcIj4ke2VzY2FwZUh0bWwobWVzc2FnZS5zdW1tYXJ5KS5yZXBsYWNlKC9cXG4vZywgXCI8YnI+XCIpfTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PmA7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OiB7XG5cdFx0XHQvLyBFeGhhdXN0aXZlIGNoZWNrXG5cdFx0XHRjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBtZXNzYWdlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBodG1sO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNb2RlbENoYW5nZShldmVudDogTW9kZWxDaGFuZ2VFdmVudCk6IHN0cmluZyB7XG5cdGNvbnN0IHRpbWVzdGFtcCA9IGZvcm1hdFRpbWVzdGFtcChldmVudC50aW1lc3RhbXApO1xuXHRjb25zdCB0aW1lc3RhbXBIdG1sID0gdGltZXN0YW1wID8gYDxkaXYgY2xhc3M9XCJtZXNzYWdlLXRpbWVzdGFtcFwiPiR7dGltZXN0YW1wfTwvZGl2PmAgOiBcIlwiO1xuXHRjb25zdCBtb2RlbEluZm8gPSBgJHtldmVudC5wcm92aWRlcn0vJHtldmVudC5tb2RlbElkfWA7XG5cdHJldHVybiBgPGRpdiBjbGFzcz1cIm1vZGVsLWNoYW5nZVwiPiR7dGltZXN0YW1wSHRtbH08ZGl2IGNsYXNzPVwibW9kZWwtY2hhbmdlLXRleHRcIj5Td2l0Y2hlZCB0byBtb2RlbDogPHNwYW4gY2xhc3M9XCJtb2RlbC1uYW1lXCI+JHtlc2NhcGVIdG1sKG1vZGVsSW5mbyl9PC9zcGFuPjwvZGl2PjwvZGl2PmA7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENvbXBhY3Rpb24oZXZlbnQ6IENvbXBhY3Rpb25FdmVudCk6IHN0cmluZyB7XG5cdGNvbnN0IHRpbWVzdGFtcCA9IGZvcm1hdFRpbWVzdGFtcChldmVudC50aW1lc3RhbXApO1xuXHRjb25zdCB0aW1lc3RhbXBIdG1sID0gdGltZXN0YW1wID8gYDxkaXYgY2xhc3M9XCJtZXNzYWdlLXRpbWVzdGFtcFwiPiR7dGltZXN0YW1wfTwvZGl2PmAgOiBcIlwiO1xuXHRjb25zdCBzdW1tYXJ5SHRtbCA9IGVzY2FwZUh0bWwoZXZlbnQuc3VtbWFyeSkucmVwbGFjZSgvXFxuL2csIFwiPGJyPlwiKTtcblxuXHRyZXR1cm4gYDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLWNvbnRhaW5lclwiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLWhlYWRlclwiIG9uY2xpY2s9XCJ0aGlzLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnZXhwYW5kZWQnKVwiPlxuXHRcdFx0JHt0aW1lc3RhbXBIdG1sfVxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24taGVhZGVyLXJvd1wiPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNvbXBhY3Rpb24tdG9nZ2xlXCI+4pa2PC9zcGFuPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNvbXBhY3Rpb24tdGl0bGVcIj5Db250ZXh0IGNvbXBhY3RlZCBmcm9tICR7ZXZlbnQudG9rZW5zQmVmb3JlLnRvTG9jYWxlU3RyaW5nKCl9IHRva2Vuczwvc3Bhbj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjb21wYWN0aW9uLWhpbnRcIj4oY2xpY2sgdG8gZXhwYW5kIHN1bW1hcnkpPC9zcGFuPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tY29udGVudFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tc3VtbWFyeVwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1zdW1tYXJ5LWhlYWRlclwiPlN1bW1hcnkgc2VudCB0byBtb2RlbDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1zdW1tYXJ5LWNvbnRlbnRcIj4ke3N1bW1hcnlIdG1sfTwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PmA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhUTUwgZ2VuZXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUh0bWwoZGF0YTogUGFyc2VkU2Vzc2lvbkRhdGEsIGZpbGVuYW1lOiBzdHJpbmcsIGNvbG9yczogVGhlbWVDb2xvcnMsIGlzTGlnaHQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRjb25zdCB1c2VyTWVzc2FnZXMgPSBkYXRhLm1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS5yb2xlID09PSBcInVzZXJcIikubGVuZ3RoO1xuXHRjb25zdCBhc3Npc3RhbnRNZXNzYWdlcyA9IGRhdGEubWVzc2FnZXMuZmlsdGVyKChtKSA9PiBtLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpLmxlbmd0aDtcblxuXHRsZXQgdG9vbENhbGxzQ291bnQgPSAwO1xuXHRmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgZGF0YS5tZXNzYWdlcykge1xuXHRcdGlmIChtZXNzYWdlLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpIHtcblx0XHRcdHRvb2xDYWxsc0NvdW50ICs9IChtZXNzYWdlIGFzIEFzc2lzdGFudE1lc3NhZ2UpLmNvbnRlbnQuZmlsdGVyKChjKSA9PiBjLnR5cGUgPT09IFwidG9vbENhbGxcIikubGVuZ3RoO1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGxhc3RBc3Npc3RhbnRNZXNzYWdlID0gZGF0YS5tZXNzYWdlc1xuXHRcdC5zbGljZSgpXG5cdFx0LnJldmVyc2UoKVxuXHRcdC5maW5kKChtKSA9PiBtLnJvbGUgPT09IFwiYXNzaXN0YW50XCIgJiYgKG0gYXMgQXNzaXN0YW50TWVzc2FnZSkuc3RvcFJlYXNvbiAhPT0gXCJhYm9ydGVkXCIpIGFzXG5cdFx0fCBBc3Npc3RhbnRNZXNzYWdlXG5cdFx0fCB1bmRlZmluZWQ7XG5cblx0Y29uc3QgY29udGV4dFRva2VucyA9IGxhc3RBc3Npc3RhbnRNZXNzYWdlXG5cdFx0PyBsYXN0QXNzaXN0YW50TWVzc2FnZS51c2FnZS5pbnB1dCArXG5cdFx0XHRsYXN0QXNzaXN0YW50TWVzc2FnZS51c2FnZS5vdXRwdXQgK1xuXHRcdFx0bGFzdEFzc2lzdGFudE1lc3NhZ2UudXNhZ2UuY2FjaGVSZWFkICtcblx0XHRcdGxhc3RBc3Npc3RhbnRNZXNzYWdlLnVzYWdlLmNhY2hlV3JpdGVcblx0XHQ6IDA7XG5cblx0Y29uc3QgbGFzdE1vZGVsID0gbGFzdEFzc2lzdGFudE1lc3NhZ2U/Lm1vZGVsIHx8IFwidW5rbm93blwiO1xuXHRjb25zdCBsYXN0UHJvdmlkZXIgPSBsYXN0QXNzaXN0YW50TWVzc2FnZT8ucHJvdmlkZXIgfHwgXCJcIjtcblx0Y29uc3QgbGFzdE1vZGVsSW5mbyA9IGxhc3RQcm92aWRlciA/IGAke2xhc3RQcm92aWRlcn0vJHtsYXN0TW9kZWx9YCA6IGxhc3RNb2RlbDtcblxuXHRjb25zdCBjb250ZXh0V2luZG93ID0gZGF0YS5jb250ZXh0V2luZG93IHx8IDA7XG5cdGNvbnN0IGNvbnRleHRQZXJjZW50ID0gY29udGV4dFdpbmRvdyA+IDAgPyAoKGNvbnRleHRUb2tlbnMgLyBjb250ZXh0V2luZG93KSAqIDEwMCkudG9GaXhlZCgxKSA6IHVuZGVmaW5lZDtcblxuXHRsZXQgbWVzc2FnZXNIdG1sID0gXCJcIjtcblx0Zm9yIChjb25zdCBldmVudCBvZiBkYXRhLnNlc3Npb25FdmVudHMpIHtcblx0XHRzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcblx0XHRcdGNhc2UgXCJtZXNzYWdlXCI6XG5cdFx0XHRcdGlmIChldmVudC5tZXNzYWdlLnJvbGUgIT09IFwidG9vbFJlc3VsdFwiKSB7XG5cdFx0XHRcdFx0bWVzc2FnZXNIdG1sICs9IGZvcm1hdE1lc3NhZ2UoZXZlbnQubWVzc2FnZSwgZGF0YS50b29sUmVzdWx0c01hcCwgY29sb3JzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJtb2RlbF9jaGFuZ2VcIjpcblx0XHRcdFx0bWVzc2FnZXNIdG1sICs9IGZvcm1hdE1vZGVsQ2hhbmdlKGV2ZW50KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiY29tcGFjdGlvblwiOlxuXHRcdFx0XHRtZXNzYWdlc0h0bWwgKz0gZm9ybWF0Q29tcGFjdGlvbihldmVudCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHN5c3RlbVByb21wdEh0bWwgPSBkYXRhLnN5c3RlbVByb21wdFxuXHRcdD8gYDxkaXYgY2xhc3M9XCJzeXN0ZW0tcHJvbXB0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3lzdGVtLXByb21wdC1oZWFkZXJcIj5TeXN0ZW0gUHJvbXB0PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3lzdGVtLXByb21wdC1jb250ZW50XCI+JHtlc2NhcGVIdG1sKGRhdGEuc3lzdGVtUHJvbXB0KX08L2Rpdj5cbiAgICAgICAgPC9kaXY+YFxuXHRcdDogXCJcIjtcblxuXHRjb25zdCB0b29sc0h0bWwgPSBkYXRhLnRvb2xzXG5cdFx0PyBgPGRpdiBjbGFzcz1cInRvb2xzLWxpc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29scy1oZWFkZXJcIj5BdmFpbGFibGUgVG9vbHM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29scy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgJHtkYXRhLnRvb2xzLm1hcCgodG9vbCkgPT4gYDxkaXYgY2xhc3M9XCJ0b29sLWl0ZW1cIj48c3BhbiBjbGFzcz1cInRvb2wtaXRlbS1uYW1lXCI+JHtlc2NhcGVIdG1sKHRvb2wubmFtZSl9PC9zcGFuPiAtICR7ZXNjYXBlSHRtbCh0b29sLmRlc2NyaXB0aW9uKX08L2Rpdj5gKS5qb2luKFwiXCIpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PmBcblx0XHQ6IFwiXCI7XG5cblx0Y29uc3Qgc3RyZWFtaW5nTm90aWNlID0gZGF0YS5pc1N0cmVhbWluZ0Zvcm1hdFxuXHRcdD8gYDxkaXYgY2xhc3M9XCJzdHJlYW1pbmctbm90aWNlXCI+XG4gICAgICAgICAgICA8ZW0+Tm90ZTogVGhpcyBzZXNzaW9uIHdhcyByZWNvbnN0cnVjdGVkIGZyb20gcmF3IGFnZW50IGV2ZW50IGxvZ3MsIHdoaWNoIGRvIG5vdCBjb250YWluIHN5c3RlbSBwcm9tcHQgb3IgdG9vbCBkZWZpbml0aW9ucy48L2VtPlxuICAgICAgICA8L2Rpdj5gXG5cdFx0OiBcIlwiO1xuXG5cdGNvbnN0IGNvbnRleHRVc2FnZVRleHQgPSBjb250ZXh0UGVyY2VudFxuXHRcdD8gYCR7Y29udGV4dFRva2Vucy50b0xvY2FsZVN0cmluZygpfSAvICR7Y29udGV4dFdpbmRvdy50b0xvY2FsZVN0cmluZygpfSB0b2tlbnMgKCR7Y29udGV4dFBlcmNlbnR9JSkgLSAke2VzY2FwZUh0bWwobGFzdE1vZGVsSW5mbyl9YFxuXHRcdDogYCR7Y29udGV4dFRva2Vucy50b0xvY2FsZVN0cmluZygpfSB0b2tlbnMgKGxhc3QgdHVybikgLSAke2VzY2FwZUh0bWwobGFzdE1vZGVsSW5mbyl9YDtcblxuXHQvLyBDb21wdXRlIGJvZHkgYmFja2dyb3VuZCBiYXNlZCBvbiB0aGVtZVxuXHRjb25zdCBib2R5QmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjQ4LCAyNDgsIDI0OClcIiA6IFwicmdiKDI0LCAyNCwgMzApXCI7XG5cdGNvbnN0IGNvbnRhaW5lckJnID0gaXNMaWdodCA/IFwicmdiKDI1NSwgMjU1LCAyNTUpXCIgOiBcInJnYigzMCwgMzAsIDM2KVwiO1xuXHRjb25zdCBjb21wYWN0aW9uQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjU1LCAyNDgsIDIyMClcIiA6IFwicmdiKDYwLCA1NSwgMzUpXCI7XG5cdGNvbnN0IHN5c3RlbVByb21wdEJnID0gaXNMaWdodCA/IFwicmdiKDI1NSwgMjUwLCAyMzApXCIgOiBcInJnYig2MCwgNTUsIDQwKVwiO1xuXHRjb25zdCBzdHJlYW1pbmdOb3RpY2VCZyA9IGlzTGlnaHQgPyBcInJnYigyNTAsIDI0NSwgMjM1KVwiIDogXCJyZ2IoNTAsIDQ1LCAzNSlcIjtcblx0Y29uc3QgbW9kZWxDaGFuZ2VCZyA9IGlzTGlnaHQgPyBcInJnYigyNDAsIDI0MCwgMjUwKVwiIDogXCJyZ2IoNDAsIDQwLCA1MClcIjtcblx0Y29uc3QgdXNlckJhc2hCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI1MCwgMjQwKVwiIDogXCJyZ2IoNTAsIDQ4LCAzNSlcIjtcblx0Y29uc3QgdXNlckJhc2hFcnJvckJnID0gaXNMaWdodCA/IFwicmdiKDI1NSwgMjQ1LCAyMzUpXCIgOiBcInJnYig2MCwgNDUsIDM1KVwiO1xuXG5cdHJldHVybiBgPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbjxoZWFkPlxuICAgIDxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPlxuICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCI+XG4gICAgPHRpdGxlPlNlc3Npb24gRXhwb3J0IC0gJHtlc2NhcGVIdG1sKGZpbGVuYW1lKX08L3RpdGxlPlxuICAgIDxzdHlsZT5cbiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICAgICAgICBib2R5IHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsICdDYXNjYWRpYSBDb2RlJywgJ1NvdXJjZSBDb2RlIFBybycsIE1lbmxvLCBDb25zb2xhcywgJ0RlamFWdSBTYW5zIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLnRleHR9O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtib2R5Qmd9O1xuICAgICAgICAgICAgcGFkZGluZzogMjRweDtcbiAgICAgICAgfVxuICAgICAgICAuY29udGFpbmVyIHsgbWF4LXdpZHRoOiA3MDBweDsgbWFyZ2luOiAwIGF1dG87IH1cbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y29udGFpbmVyQmd9O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXIgaDEge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLmJvcmRlckFjY2VudH07XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlci1pbmZvIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAzcHg7IGZvbnQtc2l6ZTogMTFweDsgfVxuICAgICAgICAuaW5mby1pdGVtIHsgY29sb3I6ICR7Y29sb3JzLmRpbX07IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgfVxuICAgICAgICAuaW5mby1sYWJlbCB7IGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbi1yaWdodDogOHB4OyBtaW4td2lkdGg6IDEwMHB4OyB9XG4gICAgICAgIC5pbmZvLXZhbHVlIHsgY29sb3I6ICR7Y29sb3JzLnRleHR9OyBmbGV4OiAxOyB9XG4gICAgICAgIC5pbmZvLXZhbHVlLmNvc3QgeyBmb250LWZhbWlseTogJ1NGIE1vbm8nLCBtb25vc3BhY2U7IH1cbiAgICAgICAgLm1lc3NhZ2VzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNnB4OyB9XG4gICAgICAgIC5tZXNzYWdlLXRpbWVzdGFtcCB7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICR7Y29sb3JzLmRpbX07IG1hcmdpbi1ib3R0b206IDRweDsgb3BhY2l0eTogMC44OyB9XG4gICAgICAgIC51c2VyLW1lc3NhZ2Uge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjb2xvcnMudXNlck1lc3NhZ2VCZ307XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMudXNlck1lc3NhZ2VUZXh0fTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgfVxuICAgICAgICAuYXNzaXN0YW50LW1lc3NhZ2UgeyBwYWRkaW5nOiAwOyB9XG4gICAgICAgIC5hc3Npc3RhbnQtdGV4dCwgLnRoaW5raW5nLXRleHQge1xuICAgICAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICB9XG4gICAgICAgIC50aGlua2luZy10ZXh0IHsgY29sb3I6ICR7Y29sb3JzLmRpbX07IGZvbnQtc3R5bGU6IGl0YWxpYzsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9XG4gICAgICAgIC5tb2RlbC1jaGFuZ2UgeyBwYWRkaW5nOiA4cHggMTZweDsgYmFja2dyb3VuZDogJHttb2RlbENoYW5nZUJnfTsgYm9yZGVyLXJhZGl1czogNHB4OyB9XG4gICAgICAgIC5tb2RlbC1jaGFuZ2UtdGV4dCB7IGNvbG9yOiAke2NvbG9ycy5kaW19OyBmb250LXNpemU6IDExcHg7IH1cbiAgICAgICAgLm1vZGVsLW5hbWUgeyBjb2xvcjogJHtjb2xvcnMuYm9yZGVyQWNjZW50fTsgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgICAgICAgLmNvbXBhY3Rpb24tY29udGFpbmVyIHsgYmFja2dyb3VuZDogJHtjb21wYWN0aW9uQmd9OyBib3JkZXItcmFkaXVzOiA0cHg7IG92ZXJmbG93OiBoaWRkZW47IH1cbiAgICAgICAgLmNvbXBhY3Rpb24taGVhZGVyIHsgcGFkZGluZzogMTJweCAxNnB4OyBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgICAgICAgLmNvbXBhY3Rpb24taGVhZGVyOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgke2lzTGlnaHQgPyBcIjAsIDAsIDBcIiA6IFwiMjU1LCAyNTUsIDI1NVwifSwgMC4wNSk7IH1cbiAgICAgICAgLmNvbXBhY3Rpb24taGVhZGVyLXJvdyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9XG4gICAgICAgIC5jb21wYWN0aW9uLXRvZ2dsZSB7IGNvbG9yOiAke2NvbG9ycy5ib3JkZXJBY2NlbnR9OyBmb250LXNpemU6IDEwcHg7IHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWNvbnRhaW5lci5leHBhbmRlZCAuY29tcGFjdGlvbi10b2dnbGUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cbiAgICAgICAgLmNvbXBhY3Rpb24tdGl0bGUgeyBjb2xvcjogJHtjb2xvcnMudGV4dH07IGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWhpbnQgeyBjb2xvcjogJHtjb2xvcnMuZGltfTsgZm9udC1zaXplOiAxMXB4OyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWNvbnRlbnQgeyBkaXNwbGF5OiBub25lOyBwYWRkaW5nOiAwIDE2cHggMTZweCAxNnB4OyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWNvbnRhaW5lci5leHBhbmRlZCAuY29tcGFjdGlvbi1jb250ZW50IHsgZGlzcGxheTogYmxvY2s7IH1cbiAgICAgICAgLmNvbXBhY3Rpb24tc3VtbWFyeSB7IGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsgYm9yZGVyLXJhZGl1czogNHB4OyBwYWRkaW5nOiAxMnB4OyB9XG4gICAgICAgIC5jb21wYWN0aW9uLXN1bW1hcnktaGVhZGVyIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAke2NvbG9ycy5ib3JkZXJBY2NlbnR9OyBtYXJnaW4tYm90dG9tOiA4cHg7IGZvbnQtc2l6ZTogMTFweDsgfVxuICAgICAgICAuY29tcGFjdGlvbi1zdW1tYXJ5LWNvbnRlbnQgeyBjb2xvcjogJHtjb2xvcnMudGV4dH07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgd29yZC13cmFwOiBicmVhay13b3JkOyB9XG4gICAgICAgIC50b29sLWV4ZWN1dGlvbiB7IHBhZGRpbmc6IDEycHggMTZweDsgYm9yZGVyLXJhZGl1czogNHB4OyBtYXJnaW4tdG9wOiA4cHg7IH1cbiAgICAgICAgLnRvb2wtZXhlY3V0aW9uLnVzZXItYmFzaCB7IGJhY2tncm91bmQ6ICR7dXNlckJhc2hCZ307IH1cbiAgICAgICAgLnRvb2wtZXhlY3V0aW9uLnVzZXItYmFzaC1lcnJvciB7IGJhY2tncm91bmQ6ICR7dXNlckJhc2hFcnJvckJnfTsgfVxuICAgICAgICAudG9vbC1oZWFkZXIsIC50b29sLW5hbWUgeyBmb250LXdlaWdodDogYm9sZDsgfVxuICAgICAgICAudG9vbC1wYXRoIHsgY29sb3I6ICR7Y29sb3JzLmJvcmRlckFjY2VudH07IHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsgfVxuICAgICAgICAubGluZS1udW1iZXJzIHsgY29sb3I6ICR7Y29sb3JzLndhcm5pbmd9OyB9XG4gICAgICAgIC5saW5lLWNvdW50IHsgY29sb3I6ICR7Y29sb3JzLmRpbX07IH1cbiAgICAgICAgLnRvb2wtY29tbWFuZCB7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgd29yZC1icmVhazogYnJlYWstd29yZDsgfVxuICAgICAgICAudG9vbC1vdXRwdXQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy50b29sT3V0cHV0fTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB9XG4gICAgICAgIC50b29sLW91dHB1dCA+IGRpdiB7IGxpbmUtaGVpZ2h0OiAxLjQ7IH1cbiAgICAgICAgLnRvb2wtb3V0cHV0IHByZSB7IG1hcmdpbjogMDsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGNvbG9yOiBpbmhlcml0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgfVxuICAgICAgICAudG9vbC1vdXRwdXQuZXhwYW5kYWJsZSB7IGN1cnNvcjogcG9pbnRlcjsgfVxuICAgICAgICAudG9vbC1vdXRwdXQuZXhwYW5kYWJsZTpob3ZlciB7IG9wYWNpdHk6IDAuOTsgfVxuICAgICAgICAudG9vbC1vdXRwdXQuZXhwYW5kYWJsZSAub3V0cHV0LWZ1bGwgeyBkaXNwbGF5OiBub25lOyB9XG4gICAgICAgIC50b29sLW91dHB1dC5leHBhbmRhYmxlLmV4cGFuZGVkIC5vdXRwdXQtcHJldmlldyB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgICAgICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGUuZXhwYW5kZWQgLm91dHB1dC1mdWxsIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgICAgICAgLmV4cGFuZC1oaW50IHsgY29sb3I6ICR7Y29sb3JzLmJvcmRlckFjY2VudH07IGZvbnQtc3R5bGU6IGl0YWxpYzsgbWFyZ2luLXRvcDogNHB4OyB9XG4gICAgICAgIC5zeXN0ZW0tcHJvbXB0LCAudG9vbHMtbGlzdCB7IGJhY2tncm91bmQ6ICR7c3lzdGVtUHJvbXB0Qmd9OyBwYWRkaW5nOiAxMnB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgbWFyZ2luLWJvdHRvbTogMTZweDsgfVxuICAgICAgICAuc3lzdGVtLXByb21wdC1oZWFkZXIsIC50b29scy1oZWFkZXIgeyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICR7Y29sb3JzLndhcm5pbmd9OyBtYXJnaW4tYm90dG9tOiA4cHg7IH1cbiAgICAgICAgLnN5c3RlbS1wcm9tcHQtY29udGVudCwgLnRvb2xzLWNvbnRlbnQgeyBjb2xvcjogJHtjb2xvcnMuZGltfTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IGZvbnQtc2l6ZTogMTFweDsgfVxuICAgICAgICAudG9vbC1pdGVtIHsgbWFyZ2luOiA0cHggMDsgfVxuICAgICAgICAudG9vbC1pdGVtLW5hbWUgeyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICR7Y29sb3JzLnRleHR9OyB9XG4gICAgICAgIC50b29sLWRpZmYgeyBtYXJnaW4tdG9wOiAxMnB4OyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyBvdmVyZmxvdy14OiBhdXRvOyBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgICAgICAgLmRpZmYtbGluZS1vbGQgeyBjb2xvcjogJHtjb2xvcnMudG9vbERpZmZSZW1vdmVkfTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IH1cbiAgICAgICAgLmRpZmYtbGluZS1uZXcgeyBjb2xvcjogJHtjb2xvcnMudG9vbERpZmZBZGRlZH07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgd29yZC13cmFwOiBicmVhay13b3JkOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB9XG4gICAgICAgIC5kaWZmLWxpbmUtY29udGV4dCB7IGNvbG9yOiAke2NvbG9ycy50b29sRGlmZkNvbnRleHR9OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgfVxuICAgICAgICAuZXJyb3ItdGV4dCB7IGNvbG9yOiAke2NvbG9ycy5lcnJvcn07IHBhZGRpbmc6IDEycHggMTZweDsgfVxuICAgICAgICAuYmFzaC1zdGF0dXMud2FybmluZyB7IGNvbG9yOiAke2NvbG9ycy53YXJuaW5nfTsgfVxuICAgICAgICAuYmFzaC1zdGF0dXMuZXJyb3IgeyBjb2xvcjogJHtjb2xvcnMuZXJyb3J9OyB9XG4gICAgICAgIC5iYXNoLXRydW5jYXRpb24ud2FybmluZyB7IGNvbG9yOiAke2NvbG9ycy53YXJuaW5nfTsgfVxuICAgICAgICAuZm9vdGVyIHsgbWFyZ2luLXRvcDogNDhweDsgcGFkZGluZzogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogJHtjb2xvcnMuZGltfTsgZm9udC1zaXplOiAxMHB4OyB9XG4gICAgICAgIC5zdHJlYW1pbmctbm90aWNlIHsgYmFja2dyb3VuZDogJHtzdHJlYW1pbmdOb3RpY2VCZ307IHBhZGRpbmc6IDEycHggMTZweDsgYm9yZGVyLXJhZGl1czogNHB4OyBtYXJnaW4tYm90dG9tOiAxNnB4OyBjb2xvcjogJHtjb2xvcnMuZGltfTsgZm9udC1zaXplOiAxMXB4OyB9XG5cbiAgICAgICAgLyogSW1hZ2Ugc3R5bGVzICovXG4gICAgICAgIC5tZXNzYWdlLWltYWdlcyB7IG1hcmdpbi1ib3R0b206IDEycHg7IH1cbiAgICAgICAgLm1lc3NhZ2UtaW1hZ2UgeyBtYXgtd2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6IDQwMHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IG1hcmdpbjogNHB4IDA7IH1cblxuICAgICAgICAvKiBNYXJrZG93biBzdHlsZXMgKi9cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgaDEsIC5tYXJrZG93bi1jb250ZW50IGgyLCAubWFya2Rvd24tY29udGVudCBoMyxcbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgaDQsIC5tYXJrZG93bi1jb250ZW50IGg1LCAubWFya2Rvd24tY29udGVudCBoNiB7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMubWRIZWFkaW5nfTtcbiAgICAgICAgICAgIG1hcmdpbjogMWVtIDAgMC41ZW0gMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGgxIHsgZm9udC1zaXplOiAxLjRlbTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgaDIgeyBmb250LXNpemU6IDEuMmVtOyB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGgzIHsgZm9udC1zaXplOiAxLjFlbTsgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBwIHsgbWFyZ2luOiAwLjVlbSAwOyB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGEgeyBjb2xvcjogJHtjb2xvcnMubWRMaW5rfTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgYTpob3ZlciB7IG9wYWNpdHk6IDAuODsgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBjb2RlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJHtpc0xpZ2h0ID8gXCIwLCAwLCAwXCIgOiBcIjI1NSwgMjU1LCAyNTVcIn0sIDAuMSk7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMubWRDb2RlfTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBwcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgcHJlIGNvZGUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLm1kQ29kZUJsb2NrfTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgICAgICB9XG4gICAgICAgIC5jb2RlLWJsb2NrLXdyYXBwZXIge1xuICAgICAgICAgICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgICAgICB9XG4gICAgICAgIC5jb2RlLWJsb2NrLWhlYWRlciB7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMubWRDb2RlQmxvY2tCb3JkZXJ9O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB9XG4gICAgICAgIC5jb2RlLWJsb2NrLWZvb3RlciB7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMubWRDb2RlQmxvY2tCb3JkZXJ9O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGJsb2NrcXVvdGUge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAke2NvbG9ycy5tZFF1b3RlQm9yZGVyfTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy5tZFF1b3RlfTtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCB1bCwgLm1hcmtkb3duLWNvbnRlbnQgb2wge1xuICAgICAgICAgICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4O1xuICAgICAgICB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGxpIHsgbWFyZ2luOiAwLjI1ZW0gMDsgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBsaTo6bWFya2VyIHsgY29sb3I6ICR7Y29sb3JzLm1kTGlzdEJ1bGxldH07IH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgaHIge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7Y29sb3JzLm1kSHJ9O1xuICAgICAgICAgICAgbWFyZ2luOiAxZW0gMDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCB0YWJsZSB7XG4gICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgICAgICAgICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgdGgsIC5tYXJrZG93bi1jb250ZW50IHRkIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JzLm1kQ29kZUJsb2NrQm9yZGVyfTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCR7aXNMaWdodCA/IFwiMCwgMCwgMFwiIDogXCIyNTUsIDI1NSwgMjU1XCJ9LCAwLjA1KTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGltZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBTeW50YXggaGlnaGxpZ2h0aW5nIChoaWdobGlnaHQuanMpICovXG4gICAgICAgIC5obGpzIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgICAgICAgLmhsanMtY29tbWVudCwgLmhsanMtcXVvdGUgeyBjb2xvcjogJHtjb2xvcnMuc3ludGF4Q29tbWVudH07IH1cbiAgICAgICAgLmhsanMta2V5d29yZCwgLmhsanMtc2VsZWN0b3ItdGFnLCAuaGxqcy1hZGRpdGlvbiB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhLZXl3b3JkfTsgfVxuICAgICAgICAuaGxqcy1udW1iZXIsIC5obGpzLWxpdGVyYWwsIC5obGpzLXN5bWJvbCwgLmhsanMtYnVsbGV0IHsgY29sb3I6ICR7Y29sb3JzLnN5bnRheE51bWJlcn07IH1cbiAgICAgICAgLmhsanMtc3RyaW5nLCAuaGxqcy1kb2N0YWcsIC5obGpzLXJlZ2V4cCB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhTdHJpbmd9OyB9XG4gICAgICAgIC5obGpzLXRpdGxlLCAuaGxqcy1zZWN0aW9uLCAuaGxqcy1uYW1lLCAuaGxqcy1zZWxlY3Rvci1pZCwgLmhsanMtc2VsZWN0b3ItY2xhc3MgeyBjb2xvcjogJHtjb2xvcnMuc3ludGF4RnVuY3Rpb259OyB9XG4gICAgICAgIC5obGpzLXR5cGUsIC5obGpzLWNsYXNzLCAuaGxqcy1idWlsdF9pbiB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhUeXBlfTsgfVxuICAgICAgICAuaGxqcy1hdHRyLCAuaGxqcy12YXJpYWJsZSwgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsIC5obGpzLXBhcmFtcyB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhWYXJpYWJsZX07IH1cbiAgICAgICAgLmhsanMtYXR0cmlidXRlIHsgY29sb3I6ICR7Y29sb3JzLnN5bnRheFZhcmlhYmxlfTsgfVxuICAgICAgICAuaGxqcy1tZXRhIHsgY29sb3I6ICR7Y29sb3JzLnN5bnRheEtleXdvcmR9OyB9XG4gICAgICAgIC5obGpzLWZvcm11bGEgeyBiYWNrZ3JvdW5kOiByZ2JhKCR7aXNMaWdodCA/IFwiMCwgMCwgMFwiIDogXCIyNTUsIDI1NSwgMjU1XCJ9LCAwLjA1KTsgfVxuICAgICAgICAuaGxqcy1kZWxldGlvbiB7IGNvbG9yOiAke2NvbG9ycy50b29sRGlmZlJlbW92ZWR9OyB9XG4gICAgICAgIC5obGpzLWVtcGhhc2lzIHsgZm9udC1zdHlsZTogaXRhbGljOyB9XG4gICAgICAgIC5obGpzLXN0cm9uZyB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gICAgICAgIC5obGpzLWxpbmsgeyBjb2xvcjogJHtjb2xvcnMubWRMaW5rfTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuICAgICAgICBAbWVkaWEgcHJpbnQgeyBib2R5IHsgYmFja2dyb3VuZDogd2hpdGU7IGNvbG9yOiBibGFjazsgfSAudG9vbC1leGVjdXRpb24geyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyB9IH1cbiAgICA8L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDE+JHtBUFBfTkFNRX0gdiR7VkVSU0lPTn08L2gxPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPlNlc3Npb246PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7ZXNjYXBlSHRtbChkYXRhLnNlc3Npb25JZCl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5EYXRlOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke25ldyBEYXRlKGRhdGEudGltZXN0YW1wKS50b0xvY2FsZVN0cmluZygpfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+TW9kZWxzOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke1xuXHRcdFx0XHRcdFx0XHRBcnJheS5mcm9tKGRhdGEubW9kZWxzVXNlZClcblx0XHRcdFx0XHRcdFx0XHQubWFwKChtKSA9PiBlc2NhcGVIdG1sKG0pKVxuXHRcdFx0XHRcdFx0XHRcdC5qb2luKFwiLCBcIikgfHwgXCJ1bmtub3duXCJcblx0XHRcdFx0XHRcdH08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGgxPk1lc3NhZ2VzPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5Vc2VyOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke3VzZXJNZXNzYWdlc308L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPkFzc2lzdGFudDo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHthc3Npc3RhbnRNZXNzYWdlc308L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPlRvb2wgQ2FsbHM6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7dG9vbENhbGxzQ291bnR9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMT5Ub2tlbnMgJiBDb3N0PC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5JbnB1dDo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHtkYXRhLnRva2VuU3RhdHMuaW5wdXQudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5PdXRwdXQ6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7ZGF0YS50b2tlblN0YXRzLm91dHB1dC50b0xvY2FsZVN0cmluZygpfSB0b2tlbnM8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPkNhY2hlIFJlYWQ6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7ZGF0YS50b2tlblN0YXRzLmNhY2hlUmVhZC50b0xvY2FsZVN0cmluZygpfSB0b2tlbnM8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPkNhY2hlIFdyaXRlOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke2RhdGEudG9rZW5TdGF0cy5jYWNoZVdyaXRlLnRvTG9jYWxlU3RyaW5nKCl9IHRva2Vuczwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+VG90YWw6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7KGRhdGEudG9rZW5TdGF0cy5pbnB1dCArIGRhdGEudG9rZW5TdGF0cy5vdXRwdXQgKyBkYXRhLnRva2VuU3RhdHMuY2FjaGVSZWFkICsgZGF0YS50b2tlblN0YXRzLmNhY2hlV3JpdGUpLnRvTG9jYWxlU3RyaW5nKCl9IHRva2Vuczwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+SW5wdXQgQ29zdDo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlIGNvc3RcIj4kJHtkYXRhLmNvc3RTdGF0cy5pbnB1dC50b0ZpeGVkKDQpfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+T3V0cHV0IENvc3Q6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZSBjb3N0XCI+JCR7ZGF0YS5jb3N0U3RhdHMub3V0cHV0LnRvRml4ZWQoNCl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5DYWNoZSBSZWFkIENvc3Q6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZSBjb3N0XCI+JCR7ZGF0YS5jb3N0U3RhdHMuY2FjaGVSZWFkLnRvRml4ZWQoNCl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5DYWNoZSBXcml0ZSBDb3N0Ojwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWUgY29zdFwiPiQke2RhdGEuY29zdFN0YXRzLmNhY2hlV3JpdGUudG9GaXhlZCg0KX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPlRvdGFsIENvc3Q6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZSBjb3N0XCI+PHN0cm9uZz4kJHsoZGF0YS5jb3N0U3RhdHMuaW5wdXQgKyBkYXRhLmNvc3RTdGF0cy5vdXRwdXQgKyBkYXRhLmNvc3RTdGF0cy5jYWNoZVJlYWQgKyBkYXRhLmNvc3RTdGF0cy5jYWNoZVdyaXRlKS50b0ZpeGVkKDQpfTwvc3Ryb25nPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+Q29udGV4dCBVc2FnZTo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHtjb250ZXh0VXNhZ2VUZXh0fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICAke3N5c3RlbVByb21wdEh0bWx9XG4gICAgICAgICR7dG9vbHNIdG1sfVxuICAgICAgICAke3N0cmVhbWluZ05vdGljZX1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZXNcIj5cbiAgICAgICAgICAgICR7bWVzc2FnZXNIdG1sfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICBHZW5lcmF0ZWQgYnkgJHtBUFBfTkFNRX0gY29kaW5nLWFnZW50IG9uICR7bmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQdWJsaWMgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0T3B0aW9ucyB7XG5cdG91dHB1dFBhdGg/OiBzdHJpbmc7XG5cdHRoZW1lTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFeHBvcnQgc2Vzc2lvbiB0byBIVE1MIHVzaW5nIFNlc3Npb25NYW5hZ2VyIGFuZCBBZ2VudFN0YXRlLlxuICogVXNlZCBieSBUVUkncyAvZXhwb3J0IGNvbW1hbmQuXG4gKiBAcGFyYW0gc2Vzc2lvbk1hbmFnZXIgVGhlIHNlc3Npb24gbWFuYWdlclxuICogQHBhcmFtIHN0YXRlIFRoZSBhZ2VudCBzdGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgRXhwb3J0IG9wdGlvbnMgaW5jbHVkaW5nIG91dHB1dCBwYXRoIGFuZCB0aGVtZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRTZXNzaW9uVG9IdG1sKFxuXHRzZXNzaW9uTWFuYWdlcjogU2Vzc2lvbk1hbmFnZXIsXG5cdHN0YXRlOiBBZ2VudFN0YXRlLFxuXHRvcHRpb25zPzogRXhwb3J0T3B0aW9ucyB8IHN0cmluZyxcbik6IHN0cmluZyB7XG5cdC8vIEhhbmRsZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogb3B0aW9ucyBjYW4gYmUganVzdCB0aGUgb3V0cHV0IHBhdGggc3RyaW5nXG5cdGNvbnN0IG9wdHM6IEV4cG9ydE9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/IHsgb3V0cHV0UGF0aDogb3B0aW9ucyB9IDogb3B0aW9ucyB8fCB7fTtcblxuXHRjb25zdCBzZXNzaW9uRmlsZSA9IHNlc3Npb25NYW5hZ2VyLmdldFNlc3Npb25GaWxlKCk7XG5cdGlmICghc2Vzc2lvbkZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZXhwb3J0IGluLW1lbW9yeSBzZXNzaW9uIHRvIEhUTUxcIik7XG5cdH1cblx0Y29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhzZXNzaW9uRmlsZSwgXCJ1dGY4XCIpO1xuXHRjb25zdCBkYXRhID0gcGFyc2VTZXNzaW9uRmlsZShjb250ZW50KTtcblxuXHQvLyBFbnJpY2ggd2l0aCBkYXRhIGZyb20gQWdlbnRTdGF0ZSAodG9vbHMsIGNvbnRleHQgd2luZG93KVxuXHRkYXRhLnRvb2xzID0gc3RhdGUudG9vbHMubWFwKCh0OiB7IG5hbWU6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9KSA9PiAoe1xuXHRcdG5hbWU6IHQubmFtZSxcblx0XHRkZXNjcmlwdGlvbjogdC5kZXNjcmlwdGlvbixcblx0fSkpO1xuXHRkYXRhLmNvbnRleHRXaW5kb3cgPSBzdGF0ZS5tb2RlbD8uY29udGV4dFdpbmRvdztcblx0aWYgKCFkYXRhLnN5c3RlbVByb21wdCkge1xuXHRcdGRhdGEuc3lzdGVtUHJvbXB0ID0gc3RhdGUuc3lzdGVtUHJvbXB0O1xuXHR9XG5cblx0bGV0IG91dHB1dFBhdGggPSBvcHRzLm91dHB1dFBhdGg7XG5cdGlmICghb3V0cHV0UGF0aCkge1xuXHRcdGNvbnN0IHNlc3Npb25CYXNlbmFtZSA9IGJhc2VuYW1lKHNlc3Npb25GaWxlLCBcIi5qc29ubFwiKTtcblx0XHRvdXRwdXRQYXRoID0gYCR7QVBQX05BTUV9LXNlc3Npb24tJHtzZXNzaW9uQmFzZW5hbWV9Lmh0bWxgO1xuXHR9XG5cblx0Y29uc3QgY29sb3JzID0gZ2V0VGhlbWVDb2xvcnMob3B0cy50aGVtZU5hbWUpO1xuXG5bU2hvd2luZyBsaW5lcyAxLTEzOTUgb2YgMTQzMiAoNTAuMEtCIGxpbWl0KS4gVXNlIG9mZnNldD0xMzk2IHRvIGNvbnRpbnVlXSJ9XSwiZGV0YWlscyI6eyJ0cnVuY2F0aW9uIjp7ImNvbnRlbnQiOiJpbXBvcnQgdHlwZSB7IEFnZW50TWVzc2FnZSwgQWdlbnRTdGF0ZSB9IGZyb20gXCJAbWFyaW96ZWNobmVyL3BpLWFnZW50LWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQXNzaXN0YW50TWVzc2FnZSwgSW1hZ2VDb250ZW50LCBNZXNzYWdlLCBUb29sUmVzdWx0TWVzc2FnZSwgVXNlck1lc3NhZ2UgfSBmcm9tIFwiQG1hcmlvemVjaG5lci9waS1haVwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgaGxqcyBmcm9tIFwiaGlnaGxpZ2h0LmpzXCI7XG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tIFwibWFya2VkXCI7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBBUFBfTkFNRSwgZ2V0Q3VzdG9tVGhlbWVzRGlyLCBnZXRUaGVtZXNEaXIsIFZFUlNJT04gfSBmcm9tIFwiLi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSBcIi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCI7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmludGVyZmFjZSBNZXNzYWdlRXZlbnQge1xuXHR0eXBlOiBcIm1lc3NhZ2VcIjtcblx0bWVzc2FnZTogTWVzc2FnZTtcblx0dGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTW9kZWxDaGFuZ2VFdmVudCB7XG5cdHR5cGU6IFwibW9kZWxfY2hhbmdlXCI7XG5cdHByb3ZpZGVyOiBzdHJpbmc7XG5cdG1vZGVsSWQ6IHN0cmluZztcblx0dGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ29tcGFjdGlvbkV2ZW50IHtcblx0dHlwZTogXCJjb21wYWN0aW9uXCI7XG5cdHRpbWVzdGFtcDogc3RyaW5nO1xuXHRzdW1tYXJ5OiBzdHJpbmc7XG5cdHRva2Vuc0JlZm9yZTogbnVtYmVyO1xufVxuXG50eXBlIFNlc3Npb25FdmVudCA9IE1lc3NhZ2VFdmVudCB8IE1vZGVsQ2hhbmdlRXZlbnQgfCBDb21wYWN0aW9uRXZlbnQ7XG5cbmludGVyZmFjZSBQYXJzZWRTZXNzaW9uRGF0YSB7XG5cdHNlc3Npb25JZDogc3RyaW5nO1xuXHR0aW1lc3RhbXA6IHN0cmluZztcblx0c3lzdGVtUHJvbXB0Pzogc3RyaW5nO1xuXHRtb2RlbHNVc2VkOiBTZXQ8c3RyaW5nPjtcblx0bWVzc2FnZXM6IE1lc3NhZ2VbXTtcblx0dG9vbFJlc3VsdHNNYXA6IE1hcDxzdHJpbmcsIFRvb2xSZXN1bHRNZXNzYWdlPjtcblx0c2Vzc2lvbkV2ZW50czogU2Vzc2lvbkV2ZW50W107XG5cdHRva2VuU3RhdHM6IHsgaW5wdXQ6IG51bWJlcjsgb3V0cHV0OiBudW1iZXI7IGNhY2hlUmVhZDogbnVtYmVyOyBjYWNoZVdyaXRlOiBudW1iZXIgfTtcblx0Y29zdFN0YXRzOiB7IGlucHV0OiBudW1iZXI7IG91dHB1dDogbnVtYmVyOyBjYWNoZVJlYWQ6IG51bWJlcjsgY2FjaGVXcml0ZTogbnVtYmVyIH07XG5cdHRvb2xzPzogeyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdO1xuXHRjb250ZXh0V2luZG93PzogbnVtYmVyO1xuXHRpc1N0cmVhbWluZ0Zvcm1hdD86IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRoZW1lIFR5cGVzIGFuZCBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmludGVyZmFjZSBUaGVtZUpzb24ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+O1xuXHRjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG59XG5cbmludGVyZmFjZSBUaGVtZUNvbG9ycyB7XG5cdC8vIENvcmUgVUlcblx0YWNjZW50OiBzdHJpbmc7XG5cdGJvcmRlcjogc3RyaW5nO1xuXHRib3JkZXJBY2NlbnQ6IHN0cmluZztcblx0c3VjY2Vzczogc3RyaW5nO1xuXHRlcnJvcjogc3RyaW5nO1xuXHR3YXJuaW5nOiBzdHJpbmc7XG5cdG11dGVkOiBzdHJpbmc7XG5cdGRpbTogc3RyaW5nO1xuXHR0ZXh0OiBzdHJpbmc7XG5cdC8vIEJhY2tncm91bmRzXG5cdHVzZXJNZXNzYWdlQmc6IHN0cmluZztcblx0dXNlck1lc3NhZ2VUZXh0OiBzdHJpbmc7XG5cdHRvb2xQZW5kaW5nQmc6IHN0cmluZztcblx0dG9vbFN1Y2Nlc3NCZzogc3RyaW5nO1xuXHR0b29sRXJyb3JCZzogc3RyaW5nO1xuXHR0b29sT3V0cHV0OiBzdHJpbmc7XG5cdC8vIE1hcmtkb3duXG5cdG1kSGVhZGluZzogc3RyaW5nO1xuXHRtZExpbms6IHN0cmluZztcblx0bWRMaW5rVXJsOiBzdHJpbmc7XG5cdG1kQ29kZTogc3RyaW5nO1xuXHRtZENvZGVCbG9jazogc3RyaW5nO1xuXHRtZENvZGVCbG9ja0JvcmRlcjogc3RyaW5nO1xuXHRtZFF1b3RlOiBzdHJpbmc7XG5cdG1kUXVvdGVCb3JkZXI6IHN0cmluZztcblx0bWRIcjogc3RyaW5nO1xuXHRtZExpc3RCdWxsZXQ6IHN0cmluZztcblx0Ly8gRGlmZnNcblx0dG9vbERpZmZBZGRlZDogc3RyaW5nO1xuXHR0b29sRGlmZlJlbW92ZWQ6IHN0cmluZztcblx0dG9vbERpZmZDb250ZXh0OiBzdHJpbmc7XG5cdC8vIFN5bnRheCBoaWdobGlnaHRpbmdcblx0c3ludGF4Q29tbWVudDogc3RyaW5nO1xuXHRzeW50YXhLZXl3b3JkOiBzdHJpbmc7XG5cdHN5bnRheEZ1bmN0aW9uOiBzdHJpbmc7XG5cdHN5bnRheFZhcmlhYmxlOiBzdHJpbmc7XG5cdHN5bnRheFN0cmluZzogc3RyaW5nO1xuXHRzeW50YXhOdW1iZXI6IHN0cmluZztcblx0c3ludGF4VHlwZTogc3RyaW5nO1xuXHRzeW50YXhPcGVyYXRvcjogc3RyaW5nO1xuXHRzeW50YXhQdW5jdHVhdGlvbjogc3RyaW5nO1xufVxuXG4vKiogUmVzb2x2ZSBhIHRoZW1lIGNvbG9yIHZhbHVlLCBmb2xsb3dpbmcgdmFyaWFibGUgcmVmZXJlbmNlcyB1bnRpbCB3ZSBnZXQgYSBmaW5hbCB2YWx1ZS4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb2xvclZhbHVlKFxuXHR2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuXHR2YXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+LFxuXHRkZWZhdWx0VmFsdWU6IHN0cmluZyxcblx0dmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpLFxuKTogc3RyaW5nIHtcblx0aWYgKHZhbHVlID09PSBcIlwiKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHRpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHRpZiAodmlzaXRlZC5oYXModmFsdWUpKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHRpZiAoISh2YWx1ZSBpbiB2YXJzKSkgcmV0dXJuIHZhbHVlOyAvLyBSZXR1cm4gYXMtaXMgKGhleCBjb2xvcnMgd29yayBpbiBDU1MpXG5cdHZpc2l0ZWQuYWRkKHZhbHVlKTtcblx0cmV0dXJuIHJlc29sdmVDb2xvclZhbHVlKHZhcnNbdmFsdWVdLCB2YXJzLCBkZWZhdWx0VmFsdWUsIHZpc2l0ZWQpO1xufVxuXG4vKiogTG9hZCB0aGVtZSBKU09OIGZyb20gYnVpbHQtaW4gb3IgY3VzdG9tIHRoZW1lcyBkaXJlY3RvcnkuICovXG5mdW5jdGlvbiBsb2FkVGhlbWVKc29uKG5hbWU6IHN0cmluZyk6IFRoZW1lSnNvbiB8IHVuZGVmaW5lZCB7XG5cdC8vIFRyeSBidWlsdC1pbiB0aGVtZXMgZmlyc3Rcblx0Y29uc3QgdGhlbWVzRGlyID0gZ2V0VGhlbWVzRGlyKCk7XG5cdGNvbnN0IGJ1aWx0aW5QYXRoID0gcGF0aC5qb2luKHRoZW1lc0RpciwgYCR7bmFtZX0uanNvbmApO1xuXHRpZiAoZXhpc3RzU3luYyhidWlsdGluUGF0aCkpIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGJ1aWx0aW5QYXRoLCBcInV0Zi04XCIpKSBhcyBUaGVtZUpzb247XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRyeSBjdXN0b20gdGhlbWVzXG5cdGNvbnN0IGN1c3RvbVRoZW1lc0RpciA9IGdldEN1c3RvbVRoZW1lc0RpcigpO1xuXHRjb25zdCBjdXN0b21QYXRoID0gcGF0aC5qb2luKGN1c3RvbVRoZW1lc0RpciwgYCR7bmFtZX0uanNvbmApO1xuXHRpZiAoZXhpc3RzU3luYyhjdXN0b21QYXRoKSkge1xuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoY3VzdG9tUGF0aCwgXCJ1dGYtOFwiKSkgYXMgVGhlbWVKc29uO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogQnVpbGQgY29tcGxldGUgdGhlbWUgY29sb3JzIG9iamVjdCwgcmVzb2x2aW5nIHRoZW1lIEpTT04gdmFsdWVzIGFnYWluc3QgZGVmYXVsdHMuICovXG5mdW5jdGlvbiBnZXRUaGVtZUNvbG9ycyh0aGVtZU5hbWU/OiBzdHJpbmcpOiBUaGVtZUNvbG9ycyB7XG5cdGNvbnN0IGlzTGlnaHQgPSBpc0xpZ2h0VGhlbWUodGhlbWVOYW1lKTtcblxuXHQvLyBEZWZhdWx0IGNvbG9ycyBiYXNlZCBvbiB0aGVtZSB0eXBlXG5cdGNvbnN0IGRlZmF1bHRDb2xvcnM6IFRoZW1lQ29sb3JzID0gaXNMaWdodFxuXHRcdD8ge1xuXHRcdFx0XHQvLyBMaWdodCB0aGVtZSBkZWZhdWx0c1xuXHRcdFx0XHRhY2NlbnQ6IFwicmdiKDk1LCAxMzUsIDEzNSlcIixcblx0XHRcdFx0Ym9yZGVyOiBcInJnYig5NSwgMTM1LCAxNzUpXCIsXG5cdFx0XHRcdGJvcmRlckFjY2VudDogXCJyZ2IoOTUsIDEzNSwgMTM1KVwiLFxuXHRcdFx0XHRzdWNjZXNzOiBcInJnYigxMzUsIDE3NSwgMTM1KVwiLFxuXHRcdFx0XHRlcnJvcjogXCJyZ2IoMTc1LCA5NSwgOTUpXCIsXG5cdFx0XHRcdHdhcm5pbmc6IFwicmdiKDIxNSwgMTc1LCA5NSlcIixcblx0XHRcdFx0bXV0ZWQ6IFwicmdiKDEwOCwgMTA4LCAxMDgpXCIsXG5cdFx0XHRcdGRpbTogXCJyZ2IoMTM4LCAxMzgsIDEzOClcIixcblx0XHRcdFx0dGV4dDogXCJyZ2IoMCwgMCwgMClcIixcblx0XHRcdFx0dXNlck1lc3NhZ2VCZzogXCJyZ2IoMjMyLCAyMzIsIDIzMilcIixcblx0XHRcdFx0dXNlck1lc3NhZ2VUZXh0OiBcInJnYigwLCAwLCAwKVwiLFxuXHRcdFx0XHR0b29sUGVuZGluZ0JnOiBcInJnYigyMzIsIDIzMiwgMjQwKVwiLFxuXHRcdFx0XHR0b29sU3VjY2Vzc0JnOiBcInJnYigyMzIsIDI0MCwgMjMyKVwiLFxuXHRcdFx0XHR0b29sRXJyb3JCZzogXCJyZ2IoMjQwLCAyMzIsIDIzMilcIixcblx0XHRcdFx0dG9vbE91dHB1dDogXCJyZ2IoMTA4LCAxMDgsIDEwOClcIixcblx0XHRcdFx0bWRIZWFkaW5nOiBcInJnYigyMTUsIDE3NSwgOTUpXCIsXG5cdFx0XHRcdG1kTGluazogXCJyZ2IoOTUsIDEzNSwgMTc1KVwiLFxuXHRcdFx0XHRtZExpbmtVcmw6IFwicmdiKDEzOCwgMTM4LCAxMzgpXCIsXG5cdFx0XHRcdG1kQ29kZTogXCJyZ2IoOTUsIDEzNSwgMTM1KVwiLFxuXHRcdFx0XHRtZENvZGVCbG9jazogXCJyZ2IoMTM1LCAxNzUsIDEzNSlcIixcblx0XHRcdFx0bWRDb2RlQmxvY2tCb3JkZXI6IFwicmdiKDEwOCwgMTA4LCAxMDgpXCIsXG5cdFx0XHRcdG1kUXVvdGU6IFwicmdiKDEwOCwgMTA4LCAxMDgpXCIsXG5cdFx0XHRcdG1kUXVvdGVCb3JkZXI6IFwicmdiKDEwOCwgMTA4LCAxMDgpXCIsXG5cdFx0XHRcdG1kSHI6IFwicmdiKDEwOCwgMTA4LCAxMDgpXCIsXG5cdFx0XHRcdG1kTGlzdEJ1bGxldDogXCJyZ2IoMTM1LCAxNzUsIDEzNSlcIixcblx0XHRcdFx0dG9vbERpZmZBZGRlZDogXCJyZ2IoMTM1LCAxNzUsIDEzNSlcIixcblx0XHRcdFx0dG9vbERpZmZSZW1vdmVkOiBcInJnYigxNzUsIDk1LCA5NSlcIixcblx0XHRcdFx0dG9vbERpZmZDb250ZXh0OiBcInJnYigxMDgsIDEwOCwgMTA4KVwiLFxuXHRcdFx0XHRzeW50YXhDb21tZW50OiBcInJnYigwLCAxMjgsIDApXCIsXG5cdFx0XHRcdHN5bnRheEtleXdvcmQ6IFwicmdiKDAsIDAsIDI1NSlcIixcblx0XHRcdFx0c3ludGF4RnVuY3Rpb246IFwicmdiKDEyMSwgOTQsIDM4KVwiLFxuXHRcdFx0XHRzeW50YXhWYXJpYWJsZTogXCJyZ2IoMCwgMTYsIDEyOClcIixcblx0XHRcdFx0c3ludGF4U3RyaW5nOiBcInJnYigxNjMsIDIxLCAyMSlcIixcblx0XHRcdFx0c3ludGF4TnVtYmVyOiBcInJnYig5LCAxMzQsIDg4KVwiLFxuXHRcdFx0XHRzeW50YXhUeXBlOiBcInJnYigzOCwgMTI3LCAxNTMpXCIsXG5cdFx0XHRcdHN5bnRheE9wZXJhdG9yOiBcInJnYigwLCAwLCAwKVwiLFxuXHRcdFx0XHRzeW50YXhQdW5jdHVhdGlvbjogXCJyZ2IoMCwgMCwgMClcIixcblx0XHRcdH1cblx0XHQ6IHtcblx0XHRcdFx0Ly8gRGFyayB0aGVtZSBkZWZhdWx0c1xuXHRcdFx0XHRhY2NlbnQ6IFwicmdiKDEzOCwgMTkwLCAxODMpXCIsXG5cdFx0XHRcdGJvcmRlcjogXCJyZ2IoOTUsIDEzNSwgMjU1KVwiLFxuXHRcdFx0XHRib3JkZXJBY2NlbnQ6IFwicmdiKDAsIDIxNSwgMjU1KVwiLFxuXHRcdFx0XHRzdWNjZXNzOiBcInJnYigxODEsIDE4OSwgMTA0KVwiLFxuXHRcdFx0XHRlcnJvcjogXCJyZ2IoMjA0LCAxMDIsIDEwMilcIixcblx0XHRcdFx0d2FybmluZzogXCJyZ2IoMjU1LCAyNTUsIDApXCIsXG5cdFx0XHRcdG11dGVkOiBcInJnYigxMjgsIDEyOCwgMTI4KVwiLFxuXHRcdFx0XHRkaW06IFwicmdiKDEwMiwgMTAyLCAxMDIpXCIsXG5cdFx0XHRcdHRleHQ6IFwicmdiKDIyOSwgMjI5LCAyMzEpXCIsXG5cdFx0XHRcdHVzZXJNZXNzYWdlQmc6IFwicmdiKDUyLCA1MywgNjUpXCIsXG5cdFx0XHRcdHVzZXJNZXNzYWdlVGV4dDogXCJyZ2IoMjI5LCAyMjksIDIzMSlcIixcblx0XHRcdFx0dG9vbFBlbmRpbmdCZzogXCJyZ2IoNDAsIDQwLCA1MClcIixcblx0XHRcdFx0dG9vbFN1Y2Nlc3NCZzogXCJyZ2IoNDAsIDUwLCA0MClcIixcblx0XHRcdFx0dG9vbEVycm9yQmc6IFwicmdiKDYwLCA0MCwgNDApXCIsXG5cdFx0XHRcdHRvb2xPdXRwdXQ6IFwicmdiKDEyOCwgMTI4LCAxMjgpXCIsXG5cdFx0XHRcdG1kSGVhZGluZzogXCJyZ2IoMjQwLCAxOTgsIDExNilcIixcblx0XHRcdFx0bWRMaW5rOiBcInJnYigxMjksIDE2MiwgMTkwKVwiLFxuXHRcdFx0XHRtZExpbmtVcmw6IFwicmdiKDEwMiwgMTAyLCAxMDIpXCIsXG5cdFx0XHRcdG1kQ29kZTogXCJyZ2IoMTM4LCAxOTAsIDE4MylcIixcblx0XHRcdFx0bWRDb2RlQmxvY2s6IFwicmdiKDE4MSwgMTg5LCAxMDQpXCIsXG5cdFx0XHRcdG1kQ29kZUJsb2NrQm9yZGVyOiBcInJnYigxMjgsIDEyOCwgMTI4KVwiLFxuXHRcdFx0XHRtZFF1b3RlOiBcInJnYigxMjgsIDEyOCwgMTI4KVwiLFxuXHRcdFx0XHRtZFF1b3RlQm9yZGVyOiBcInJnYigxMjgsIDEyOCwgMTI4KVwiLFxuXHRcdFx0XHRtZEhyOiBcInJnYigxMjgsIDEyOCwgMTI4KVwiLFxuXHRcdFx0XHRtZExpc3RCdWxsZXQ6IFwicmdiKDEzOCwgMTkwLCAxODMpXCIsXG5cdFx0XHRcdHRvb2xEaWZmQWRkZWQ6IFwicmdiKDE4MSwgMTg5LCAxMDQpXCIsXG5cdFx0XHRcdHRvb2xEaWZmUmVtb3ZlZDogXCJyZ2IoMjA0LCAxMDIsIDEwMilcIixcblx0XHRcdFx0dG9vbERpZmZDb250ZXh0OiBcInJnYigxMjgsIDEyOCwgMTI4KVwiLFxuXHRcdFx0XHRzeW50YXhDb21tZW50OiBcInJnYigxMDYsIDE1MywgODUpXCIsXG5cdFx0XHRcdHN5bnRheEtleXdvcmQ6IFwicmdiKDg2LCAxNTYsIDIxNClcIixcblx0XHRcdFx0c3ludGF4RnVuY3Rpb246IFwicmdiKDIyMCwgMjIwLCAxNzApXCIsXG5cdFx0XHRcdHN5bnRheFZhcmlhYmxlOiBcInJnYigxNTYsIDIyMCwgMjU0KVwiLFxuXHRcdFx0XHRzeW50YXhTdHJpbmc6IFwicmdiKDIwNiwgMTQ1LCAxMjApXCIsXG5cdFx0XHRcdHN5bnRheE51bWJlcjogXCJyZ2IoMTgxLCAyMDYsIDE2OClcIixcblx0XHRcdFx0c3ludGF4VHlwZTogXCJyZ2IoNzgsIDIwMSwgMTc2KVwiLFxuXHRcdFx0XHRzeW50YXhPcGVyYXRvcjogXCJyZ2IoMjEyLCAyMTIsIDIxMilcIixcblx0XHRcdFx0c3ludGF4UHVuY3R1YXRpb246IFwicmdiKDIxMiwgMjEyLCAyMTIpXCIsXG5cdFx0XHR9O1xuXG5cdGlmICghdGhlbWVOYW1lKSByZXR1cm4gZGVmYXVsdENvbG9ycztcblxuXHRjb25zdCB0aGVtZUpzb24gPSBsb2FkVGhlbWVKc29uKHRoZW1lTmFtZSk7XG5cdGlmICghdGhlbWVKc29uKSByZXR1cm4gZGVmYXVsdENvbG9ycztcblxuXHRjb25zdCB2YXJzID0gdGhlbWVKc29uLnZhcnMgfHwge307XG5cdGNvbnN0IGNvbG9ycyA9IHRoZW1lSnNvbi5jb2xvcnM7XG5cblx0Y29uc3QgcmVzb2x2ZSA9IChrZXk6IGtleW9mIFRoZW1lQ29sb3JzKTogc3RyaW5nID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IGNvbG9yc1trZXldO1xuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbG9yc1trZXldO1xuXHRcdHJldHVybiByZXNvbHZlQ29sb3JWYWx1ZSh2YWx1ZSwgdmFycywgZGVmYXVsdENvbG9yc1trZXldKTtcblx0fTtcblxuXHRyZXR1cm4ge1xuXHRcdGFjY2VudDogcmVzb2x2ZShcImFjY2VudFwiKSxcblx0XHRib3JkZXI6IHJlc29sdmUoXCJib3JkZXJcIiksXG5cdFx0Ym9yZGVyQWNjZW50OiByZXNvbHZlKFwiYm9yZGVyQWNjZW50XCIpLFxuXHRcdHN1Y2Nlc3M6IHJlc29sdmUoXCJzdWNjZXNzXCIpLFxuXHRcdGVycm9yOiByZXNvbHZlKFwiZXJyb3JcIiksXG5cdFx0d2FybmluZzogcmVzb2x2ZShcIndhcm5pbmdcIiksXG5cdFx0bXV0ZWQ6IHJlc29sdmUoXCJtdXRlZFwiKSxcblx0XHRkaW06IHJlc29sdmUoXCJkaW1cIiksXG5cdFx0dGV4dDogcmVzb2x2ZShcInRleHRcIiksXG5cdFx0dXNlck1lc3NhZ2VCZzogcmVzb2x2ZShcInVzZXJNZXNzYWdlQmdcIiksXG5cdFx0dXNlck1lc3NhZ2VUZXh0OiByZXNvbHZlKFwidXNlck1lc3NhZ2VUZXh0XCIpLFxuXHRcdHRvb2xQZW5kaW5nQmc6IHJlc29sdmUoXCJ0b29sUGVuZGluZ0JnXCIpLFxuXHRcdHRvb2xTdWNjZXNzQmc6IHJlc29sdmUoXCJ0b29sU3VjY2Vzc0JnXCIpLFxuXHRcdHRvb2xFcnJvckJnOiByZXNvbHZlKFwidG9vbEVycm9yQmdcIiksXG5cdFx0dG9vbE91dHB1dDogcmVzb2x2ZShcInRvb2xPdXRwdXRcIiksXG5cdFx0bWRIZWFkaW5nOiByZXNvbHZlKFwibWRIZWFkaW5nXCIpLFxuXHRcdG1kTGluazogcmVzb2x2ZShcIm1kTGlua1wiKSxcblx0XHRtZExpbmtVcmw6IHJlc29sdmUoXCJtZExpbmtVcmxcIiksXG5cdFx0bWRDb2RlOiByZXNvbHZlKFwibWRDb2RlXCIpLFxuXHRcdG1kQ29kZUJsb2NrOiByZXNvbHZlKFwibWRDb2RlQmxvY2tcIiksXG5cdFx0bWRDb2RlQmxvY2tCb3JkZXI6IHJlc29sdmUoXCJtZENvZGVCbG9ja0JvcmRlclwiKSxcblx0XHRtZFF1b3RlOiByZXNvbHZlKFwibWRRdW90ZVwiKSxcblx0XHRtZFF1b3RlQm9yZGVyOiByZXNvbHZlKFwibWRRdW90ZUJvcmRlclwiKSxcblx0XHRtZEhyOiByZXNvbHZlKFwibWRIclwiKSxcblx0XHRtZExpc3RCdWxsZXQ6IHJlc29sdmUoXCJtZExpc3RCdWxsZXRcIiksXG5cdFx0dG9vbERpZmZBZGRlZDogcmVzb2x2ZShcInRvb2xEaWZmQWRkZWRcIiksXG5cdFx0dG9vbERpZmZSZW1vdmVkOiByZXNvbHZlKFwidG9vbERpZmZSZW1vdmVkXCIpLFxuXHRcdHRvb2xEaWZmQ29udGV4dDogcmVzb2x2ZShcInRvb2xEaWZmQ29udGV4dFwiKSxcblx0XHRzeW50YXhDb21tZW50OiByZXNvbHZlKFwic3ludGF4Q29tbWVudFwiKSxcblx0XHRzeW50YXhLZXl3b3JkOiByZXNvbHZlKFwic3ludGF4S2V5d29yZFwiKSxcblx0XHRzeW50YXhGdW5jdGlvbjogcmVzb2x2ZShcInN5bnRheEZ1bmN0aW9uXCIpLFxuXHRcdHN5bnRheFZhcmlhYmxlOiByZXNvbHZlKFwic3ludGF4VmFyaWFibGVcIiksXG5cdFx0c3ludGF4U3RyaW5nOiByZXNvbHZlKFwic3ludGF4U3RyaW5nXCIpLFxuXHRcdHN5bnRheE51bWJlcjogcmVzb2x2ZShcInN5bnRheE51bWJlclwiKSxcblx0XHRzeW50YXhUeXBlOiByZXNvbHZlKFwic3ludGF4VHlwZVwiKSxcblx0XHRzeW50YXhPcGVyYXRvcjogcmVzb2x2ZShcInN5bnRheE9wZXJhdG9yXCIpLFxuXHRcdHN5bnRheFB1bmN0dWF0aW9uOiByZXNvbHZlKFwic3ludGF4UHVuY3R1YXRpb25cIiksXG5cdH07XG59XG5cbi8qKiBDaGVjayBpZiB0aGVtZSBpcyBhIGxpZ2h0IHRoZW1lIChjdXJyZW50bHkgb25seSBtYXRjaGVzIFwibGlnaHRcIiBleGFjdGx5KS4gKi9cbmZ1bmN0aW9uIGlzTGlnaHRUaGVtZSh0aGVtZU5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIHRoZW1lTmFtZSA9PT0gXCJsaWdodFwiO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVdGlsaXR5IGZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiB0ZXh0XG5cdFx0LnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuXHRcdC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuXHRcdC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxuXHRcdC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuXHRcdC5yZXBsYWNlKC8nL2csIFwiJiMwMzk7XCIpO1xufVxuXG5mdW5jdGlvbiBzaG9ydGVuUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBob21lID0gaG9tZWRpcigpO1xuXHRyZXR1cm4gcGF0aC5zdGFydHNXaXRoKGhvbWUpID8gYH4ke3BhdGguc2xpY2UoaG9tZS5sZW5ndGgpfWAgOiBwYXRoO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlVGFicyh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gdGV4dC5yZXBsYWNlKC9cXHQvZywgXCIgICBcIik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRpbWVzdGFtcCh0aW1lc3RhbXA6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdGlmICghdGltZXN0YW1wKSByZXR1cm4gXCJcIjtcblx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKHR5cGVvZiB0aW1lc3RhbXAgPT09IFwic3RyaW5nXCIgPyB0aW1lc3RhbXAgOiB0aW1lc3RhbXApO1xuXHRyZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodW5kZWZpbmVkLCB7IGhvdXI6IFwiMi1kaWdpdFwiLCBtaW51dGU6IFwiMi1kaWdpdFwiLCBzZWNvbmQ6IFwiMi1kaWdpdFwiIH0pO1xufVxuXG4vKiogSGlnaGxpZ2h0IGNvZGUgdXNpbmcgaGlnaGxpZ2h0LmpzLiBSZXR1cm5zIEhUTUwgd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nIHNwYW5zLiAqL1xuZnVuY3Rpb24gaGlnaGxpZ2h0Q29kZShjb2RlOiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAoIWxhbmcpIHtcblx0XHRyZXR1cm4gZXNjYXBlSHRtbChjb2RlKTtcblx0fVxuXHR0cnkge1xuXHRcdC8vIENoZWNrIGlmIGxhbmd1YWdlIGlzIHN1cHBvcnRlZFxuXHRcdGlmIChobGpzLmdldExhbmd1YWdlKGxhbmcpKSB7XG5cdFx0XHRyZXR1cm4gaGxqcy5oaWdobGlnaHQoY29kZSwgeyBsYW5ndWFnZTogbGFuZywgaWdub3JlSWxsZWdhbHM6IHRydWUgfSkudmFsdWU7XG5cdFx0fVxuXHRcdC8vIFRyeSBjb21tb24gYWxpYXNlc1xuXHRcdGNvbnN0IGFsaWFzZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFx0XHR0czogXCJ0eXBlc2NyaXB0XCIsXG5cdFx0XHRqczogXCJqYXZhc2NyaXB0XCIsXG5cdFx0XHRweTogXCJweXRob25cIixcblx0XHRcdHJiOiBcInJ1YnlcIixcblx0XHRcdHNoOiBcImJhc2hcIixcblx0XHRcdHltbDogXCJ5YW1sXCIsXG5cdFx0XHRtZDogXCJtYXJrZG93blwiLFxuXHRcdH07XG5cdFx0Y29uc3QgYWxpYXNlZExhbmcgPSBhbGlhc2VzW2xhbmddO1xuXHRcdGlmIChhbGlhc2VkTGFuZyAmJiBobGpzLmdldExhbmd1YWdlKGFsaWFzZWRMYW5nKSkge1xuXHRcdFx0cmV0dXJuIGhsanMuaGlnaGxpZ2h0KGNvZGUsIHsgbGFuZ3VhZ2U6IGFsaWFzZWRMYW5nLCBpZ25vcmVJbGxlZ2FsczogdHJ1ZSB9KS52YWx1ZTtcblx0XHR9XG5cdH0gY2F0Y2gge1xuXHRcdC8vIEZhbGwgdGhyb3VnaCB0byBlc2NhcGVkIG91dHB1dFxuXHR9XG5cdHJldHVybiBlc2NhcGVIdG1sKGNvZGUpO1xufVxuXG4vKiogR2V0IGxhbmd1YWdlIGZyb20gZmlsZSBwYXRoIGV4dGVuc2lvbi4gKi9cbmZ1bmN0aW9uIGdldExhbmd1YWdlRnJvbVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGV4dCA9IGZpbGVQYXRoLnNwbGl0KFwiLlwiKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcblx0aWYgKCFleHQpIHJldHVybiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgZXh0VG9MYW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdHRzOiBcInR5cGVzY3JpcHRcIixcblx0XHR0c3g6IFwidHlwZXNjcmlwdFwiLFxuXHRcdGpzOiBcImphdmFzY3JpcHRcIixcblx0XHRqc3g6IFwiamF2YXNjcmlwdFwiLFxuXHRcdG1qczogXCJqYXZhc2NyaXB0XCIsXG5cdFx0Y2pzOiBcImphdmFzY3JpcHRcIixcblx0XHRweTogXCJweXRob25cIixcblx0XHRyYjogXCJydWJ5XCIsXG5cdFx0cnM6IFwicnVzdFwiLFxuXHRcdGdvOiBcImdvXCIsXG5cdFx0amF2YTogXCJqYXZhXCIsXG5cdFx0a3Q6IFwia290bGluXCIsXG5cdFx0c3dpZnQ6IFwic3dpZnRcIixcblx0XHRjOiBcImNcIixcblx0XHRoOiBcImNcIixcblx0XHRjcHA6IFwiY3BwXCIsXG5cdFx0Y2M6IFwiY3BwXCIsXG5cdFx0Y3h4OiBcImNwcFwiLFxuXHRcdGhwcDogXCJjcHBcIixcblx0XHRjczogXCJjc2hhcnBcIixcblx0XHRwaHA6IFwicGhwXCIsXG5cdFx0c2g6IFwiYmFzaFwiLFxuXHRcdGJhc2g6IFwiYmFzaFwiLFxuXHRcdHpzaDogXCJiYXNoXCIsXG5cdFx0ZmlzaDogXCJiYXNoXCIsXG5cdFx0cHMxOiBcInBvd2Vyc2hlbGxcIixcblx0XHRzcWw6IFwic3FsXCIsXG5cdFx0aHRtbDogXCJodG1sXCIsXG5cdFx0aHRtOiBcImh0bWxcIixcblx0XHR4bWw6IFwieG1sXCIsXG5cdFx0Y3NzOiBcImNzc1wiLFxuXHRcdHNjc3M6IFwic2Nzc1wiLFxuXHRcdHNhc3M6IFwic2Nzc1wiLFxuXHRcdGxlc3M6IFwibGVzc1wiLFxuXHRcdGpzb246IFwianNvblwiLFxuXHRcdHlhbWw6IFwieWFtbFwiLFxuXHRcdHltbDogXCJ5YW1sXCIsXG5cdFx0dG9tbDogXCJ0b21sXCIsXG5cdFx0aW5pOiBcImluaVwiLFxuXHRcdG1kOiBcIm1hcmtkb3duXCIsXG5cdFx0bWFya2Rvd246IFwibWFya2Rvd25cIixcblx0XHRkb2NrZXJmaWxlOiBcImRvY2tlcmZpbGVcIixcblx0XHRtYWtlZmlsZTogXCJtYWtlZmlsZVwiLFxuXHRcdGNtYWtlOiBcImNtYWtlXCIsXG5cdFx0bHVhOiBcImx1YVwiLFxuXHRcdHI6IFwiclwiLFxuXHRcdHNjYWxhOiBcInNjYWxhXCIsXG5cdFx0Y2xqOiBcImNsb2p1cmVcIixcblx0XHRjbGpzOiBcImNsb2p1cmVcIixcblx0XHRleDogXCJlbGl4aXJcIixcblx0XHRleHM6IFwiZWxpeGlyXCIsXG5cdFx0ZXJsOiBcImVybGFuZ1wiLFxuXHRcdGhybDogXCJlcmxhbmdcIixcblx0XHRoczogXCJoYXNrZWxsXCIsXG5cdFx0bWw6IFwib2NhbWxcIixcblx0XHRtbGk6IFwib2NhbWxcIixcblx0XHRmczogXCJmc2hhcnBcIixcblx0XHRmc3g6IFwiZnNoYXJwXCIsXG5cdFx0dnVlOiBcInZ1ZVwiLFxuXHRcdHN2ZWx0ZTogXCJ4bWxcIixcblx0XHR0ZjogXCJoY2xcIixcblx0XHRoY2w6IFwiaGNsXCIsXG5cdFx0cHJvdG86IFwicHJvdG9idWZcIixcblx0XHRncmFwaHFsOiBcImdyYXBocWxcIixcblx0XHRncWw6IFwiZ3JhcGhxbFwiLFxuXHR9O1xuXG5cdHJldHVybiBleHRUb0xhbmdbZXh0XTtcbn1cblxuLyoqIFJlbmRlciBtYXJrZG93biB0byBIVE1MIHNlcnZlci1zaWRlIHdpdGggVFVJLXN0eWxlIGNvZGUgYmxvY2sgZm9ybWF0dGluZyBhbmQgc3ludGF4IGhpZ2hsaWdodGluZy4gKi9cbmZ1bmN0aW9uIHJlbmRlck1hcmtkb3duKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIEN1c3RvbSByZW5kZXJlciBmb3IgY29kZSBibG9ja3MgdG8gbWF0Y2ggVFVJIHN0eWxlXG5cdGNvbnN0IHJlbmRlcmVyID0gbmV3IG1hcmtlZC5SZW5kZXJlcigpO1xuXHRyZW5kZXJlci5jb2RlID0gKHsgdGV4dDogY29kZSwgbGFuZyB9OiB7IHRleHQ6IHN0cmluZzsgbGFuZz86IHN0cmluZyB9KSA9PiB7XG5cdFx0Y29uc3QgbGFuZ3VhZ2UgPSBsYW5nIHx8IFwiXCI7XG5cdFx0Y29uc3QgaGlnaGxpZ2h0ZWQgPSBoaWdobGlnaHRDb2RlKGNvZGUsIGxhbmcpO1xuXHRcdHJldHVybiAoXG5cdFx0XHQnPGRpdiBjbGFzcz1cImNvZGUtYmxvY2std3JhcHBlclwiPicgK1xuXHRcdFx0YDxkaXYgY2xhc3M9XCJjb2RlLWJsb2NrLWhlYWRlclwiPlxcYFxcYFxcYCR7bGFuZ3VhZ2V9PC9kaXY+YCArXG5cdFx0XHRgPHByZT48Y29kZSBjbGFzcz1cImhsanNcIj4ke2hpZ2hsaWdodGVkfTwvY29kZT48L3ByZT5gICtcblx0XHRcdCc8ZGl2IGNsYXNzPVwiY29kZS1ibG9jay1mb290ZXJcIj5gYGA8L2Rpdj4nICtcblx0XHRcdFwiPC9kaXY+XCJcblx0XHQpO1xuXHR9O1xuXG5cdC8vIENvbmZpZ3VyZSBtYXJrZWQgZm9yIHNhZmUgcmVuZGVyaW5nXG5cdG1hcmtlZC5zZXRPcHRpb25zKHtcblx0XHRicmVha3M6IHRydWUsXG5cdFx0Z2ZtOiB0cnVlLFxuXHR9KTtcblxuXHQvLyBQYXJzZSBtYXJrZG93biAobWFya2VkIGVzY2FwZXMgSFRNTCBieSBkZWZhdWx0IGluIG5ld2VyIHZlcnNpb25zKVxuXHRyZXR1cm4gbWFya2VkLnBhcnNlKHRleHQsIHsgcmVuZGVyZXIgfSkgYXMgc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KGxpbmVzOiBzdHJpbmdbXSwgbWF4TGluZXM6IG51bWJlciwgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IGRpc3BsYXlMaW5lcyA9IGxpbmVzLnNsaWNlKDAsIG1heExpbmVzKTtcblx0Y29uc3QgcmVtYWluaW5nID0gbGluZXMubGVuZ3RoIC0gbWF4TGluZXM7XG5cblx0Ly8gSWYgbGFuZ3VhZ2UgaXMgcHJvdmlkZWQsIGhpZ2hsaWdodCB0aGUgZW50aXJlIGNvZGUgYmxvY2tcblx0aWYgKGxhbmcpIHtcblx0XHRjb25zdCBjb2RlID0gbGluZXMuam9pbihcIlxcblwiKTtcblx0XHRjb25zdCBoaWdobGlnaHRlZCA9IGhpZ2hsaWdodENvZGUoY29kZSwgbGFuZyk7XG5cblx0XHRpZiAocmVtYWluaW5nID4gMCkge1xuXHRcdFx0Ly8gRm9yIGV4cGFuZGFibGUsIHdlIG5lZWQgcHJldmlldyBhbmQgZnVsbCB2ZXJzaW9uc1xuXHRcdFx0Y29uc3QgcHJldmlld0NvZGUgPSBkaXNwbGF5TGluZXMuam9pbihcIlxcblwiKTtcblx0XHRcdGNvbnN0IHByZXZpZXdIaWdobGlnaHRlZCA9IGhpZ2hsaWdodENvZGUocHJldmlld0NvZGUsIGxhbmcpO1xuXG5cdFx0XHRsZXQgb3V0ID0gJzxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dCBleHBhbmRhYmxlXCIgb25jbGljaz1cInRoaXMuY2xhc3NMaXN0LnRvZ2dsZShcXCdleHBhbmRlZFxcJylcIj4nO1xuXHRcdFx0b3V0ICs9IGA8ZGl2IGNsYXNzPVwib3V0cHV0LXByZXZpZXdcIj48cHJlPjxjb2RlIGNsYXNzPVwiaGxqc1wiPiR7cHJldmlld0hpZ2hsaWdodGVkfTwvY29kZT48L3ByZT5gO1xuXHRcdFx0b3V0ICs9IGA8ZGl2IGNsYXNzPVwiZXhwYW5kLWhpbnRcIj4uLi4gKCR7cmVtYWluaW5nfSBtb3JlIGxpbmVzKSAtIGNsaWNrIHRvIGV4cGFuZDwvZGl2PmA7XG5cdFx0XHRvdXQgKz0gXCI8L2Rpdj5cIjtcblx0XHRcdG91dCArPSBgPGRpdiBjbGFzcz1cIm91dHB1dC1mdWxsXCI+PHByZT48Y29kZSBjbGFzcz1cImhsanNcIj4ke2hpZ2hsaWdodGVkfTwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj5gO1xuXHRcdFx0cmV0dXJuIG91dDtcblx0XHR9XG5cblx0XHRyZXR1cm4gYDxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dFwiPjxwcmU+PGNvZGUgY2xhc3M9XCJobGpzXCI+JHtoaWdobGlnaHRlZH08L2NvZGU+PC9wcmU+PC9kaXY+YDtcblx0fVxuXG5cdC8vIE5vIGxhbmd1YWdlIC0gcGxhaW4gdGV4dCBvdXRwdXRcblx0aWYgKHJlbWFpbmluZyA+IDApIHtcblx0XHRsZXQgb3V0ID0gJzxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dCBleHBhbmRhYmxlXCIgb25jbGljaz1cInRoaXMuY2xhc3NMaXN0LnRvZ2dsZShcXCdleHBhbmRlZFxcJylcIj4nO1xuXHRcdG91dCArPSAnPGRpdiBjbGFzcz1cIm91dHB1dC1wcmV2aWV3XCI+Jztcblx0XHRmb3IgKGNvbnN0IGxpbmUgb2YgZGlzcGxheUxpbmVzKSB7XG5cdFx0XHRvdXQgKz0gYDxkaXY+JHtlc2NhcGVIdG1sKHJlcGxhY2VUYWJzKGxpbmUpKX08L2Rpdj5gO1xuXHRcdH1cblx0XHRvdXQgKz0gYDxkaXYgY2xhc3M9XCJleHBhbmQtaGludFwiPi4uLiAoJHtyZW1haW5pbmd9IG1vcmUgbGluZXMpIC0gY2xpY2sgdG8gZXhwYW5kPC9kaXY+YDtcblx0XHRvdXQgKz0gXCI8L2Rpdj5cIjtcblx0XHRvdXQgKz0gJzxkaXYgY2xhc3M9XCJvdXRwdXQtZnVsbFwiPic7XG5cdFx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG5cdFx0XHRvdXQgKz0gYDxkaXY+JHtlc2NhcGVIdG1sKHJlcGxhY2VUYWJzKGxpbmUpKX08L2Rpdj5gO1xuXHRcdH1cblx0XHRvdXQgKz0gXCI8L2Rpdj48L2Rpdj5cIjtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0bGV0IG91dCA9ICc8ZGl2IGNsYXNzPVwidG9vbC1vdXRwdXRcIj4nO1xuXHRmb3IgKGNvbnN0IGxpbmUgb2YgZGlzcGxheUxpbmVzKSB7XG5cdFx0b3V0ICs9IGA8ZGl2PiR7ZXNjYXBlSHRtbChyZXBsYWNlVGFicyhsaW5lKSl9PC9kaXY+YDtcblx0fVxuXHRvdXQgKz0gXCI8L2Rpdj5cIjtcblx0cmV0dXJuIG91dDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGFyc2luZyBmdW5jdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gcGFyc2VTZXNzaW9uTWFuYWdlckZvcm1hdChsaW5lczogc3RyaW5nW10pOiBQYXJzZWRTZXNzaW9uRGF0YSB7XG5cdGNvbnN0IGRhdGE6IFBhcnNlZFNlc3Npb25EYXRhID0ge1xuXHRcdHNlc3Npb25JZDogXCJ1bmtub3duXCIsXG5cdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0bW9kZWxzVXNlZDogbmV3IFNldCgpLFxuXHRcdG1lc3NhZ2VzOiBbXSxcblx0XHR0b29sUmVzdWx0c01hcDogbmV3IE1hcCgpLFxuXHRcdHNlc3Npb25FdmVudHM6IFtdLFxuXHRcdHRva2VuU3RhdHM6IHsgaW5wdXQ6IDAsIG91dHB1dDogMCwgY2FjaGVSZWFkOiAwLCBjYWNoZVdyaXRlOiAwIH0sXG5cdFx0Y29zdFN0YXRzOiB7IGlucHV0OiAwLCBvdXRwdXQ6IDAsIGNhY2hlUmVhZDogMCwgY2FjaGVXcml0ZTogMCB9LFxuXHR9O1xuXG5cdGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuXHRcdGxldCBlbnRyeTogeyB0eXBlOiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcblx0XHR0cnkge1xuXHRcdFx0ZW50cnkgPSBKU09OLnBhcnNlKGxpbmUpIGFzIHsgdHlwZTogc3RyaW5nOyBba2V5OiBzdHJpbmddOiB1bmtub3duIH07XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKGVudHJ5LnR5cGUpIHtcblx0XHRcdGNhc2UgXCJzZXNzaW9uXCI6XG5cdFx0XHRcdGRhdGEuc2Vzc2lvbklkID0gKGVudHJ5LmlkIGFzIHN0cmluZykgfHwgXCJ1bmtub3duXCI7XG5cdFx0XHRcdGRhdGEudGltZXN0YW1wID0gKGVudHJ5LnRpbWVzdGFtcCBhcyBzdHJpbmcpIHx8IGRhdGEudGltZXN0YW1wO1xuXHRcdFx0XHRkYXRhLnN5c3RlbVByb21wdCA9IGVudHJ5LnN5c3RlbVByb21wdCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChlbnRyeS5tb2RlbElkKSB7XG5cdFx0XHRcdFx0Y29uc3QgbW9kZWxJbmZvID0gZW50cnkucHJvdmlkZXIgPyBgJHtlbnRyeS5wcm92aWRlcn0vJHtlbnRyeS5tb2RlbElkfWAgOiAoZW50cnkubW9kZWxJZCBhcyBzdHJpbmcpO1xuXHRcdFx0XHRcdGRhdGEubW9kZWxzVXNlZC5hZGQobW9kZWxJbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIm1lc3NhZ2VcIjoge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlID0gZW50cnkubWVzc2FnZSBhcyBNZXNzYWdlO1xuXHRcdFx0XHRkYXRhLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG5cdFx0XHRcdGRhdGEuc2Vzc2lvbkV2ZW50cy5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBcIm1lc3NhZ2VcIixcblx0XHRcdFx0XHRtZXNzYWdlLFxuXHRcdFx0XHRcdHRpbWVzdGFtcDogZW50cnkudGltZXN0YW1wIGFzIG51bWJlciB8IHVuZGVmaW5lZCxcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0aWYgKG1lc3NhZ2Uucm9sZSA9PT0gXCJ0b29sUmVzdWx0XCIpIHtcblx0XHRcdFx0XHRjb25zdCB0b29sUmVzdWx0ID0gbWVzc2FnZSBhcyBUb29sUmVzdWx0TWVzc2FnZTtcblx0XHRcdFx0XHRkYXRhLnRvb2xSZXN1bHRzTWFwLnNldCh0b29sUmVzdWx0LnRvb2xDYWxsSWQsIHRvb2xSZXN1bHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuXHRcdFx0XHRcdGNvbnN0IGFzc2lzdGFudE1zZyA9IG1lc3NhZ2UgYXMgQXNzaXN0YW50TWVzc2FnZTtcblx0XHRcdFx0XHRpZiAoYXNzaXN0YW50TXNnLnVzYWdlKSB7XG5cdFx0XHRcdFx0XHRkYXRhLnRva2VuU3RhdHMuaW5wdXQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmlucHV0IHx8IDA7XG5cdFx0XHRcdFx0XHRkYXRhLnRva2VuU3RhdHMub3V0cHV0ICs9IGFzc2lzdGFudE1zZy51c2FnZS5vdXRwdXQgfHwgMDtcblx0XHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5jYWNoZVJlYWQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmNhY2hlUmVhZCB8fCAwO1xuXHRcdFx0XHRcdFx0ZGF0YS50b2tlblN0YXRzLmNhY2hlV3JpdGUgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmNhY2hlV3JpdGUgfHwgMDtcblx0XHRcdFx0XHRcdGlmIChhc3Npc3RhbnRNc2cudXNhZ2UuY29zdCkge1xuXHRcdFx0XHRcdFx0XHRkYXRhLmNvc3RTdGF0cy5pbnB1dCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5pbnB1dCB8fCAwO1xuXHRcdFx0XHRcdFx0XHRkYXRhLmNvc3RTdGF0cy5vdXRwdXQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmNvc3Qub3V0cHV0IHx8IDA7XG5cdFx0XHRcdFx0XHRcdGRhdGEuY29zdFN0YXRzLmNhY2hlUmVhZCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5jYWNoZVJlYWQgfHwgMDtcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb3N0U3RhdHMuY2FjaGVXcml0ZSArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5jYWNoZVdyaXRlIHx8IDA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRjYXNlIFwibW9kZWxfY2hhbmdlXCI6XG5cdFx0XHRcdGRhdGEuc2Vzc2lvbkV2ZW50cy5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBcIm1vZGVsX2NoYW5nZVwiLFxuXHRcdFx0XHRcdHByb3ZpZGVyOiBlbnRyeS5wcm92aWRlciBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0bW9kZWxJZDogZW50cnkubW9kZWxJZCBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0dGltZXN0YW1wOiBlbnRyeS50aW1lc3RhbXAgYXMgbnVtYmVyIHwgdW5kZWZpbmVkLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGVudHJ5Lm1vZGVsSWQpIHtcblx0XHRcdFx0XHRjb25zdCBtb2RlbEluZm8gPSBlbnRyeS5wcm92aWRlciA/IGAke2VudHJ5LnByb3ZpZGVyfS8ke2VudHJ5Lm1vZGVsSWR9YCA6IChlbnRyeS5tb2RlbElkIGFzIHN0cmluZyk7XG5cdFx0XHRcdFx0ZGF0YS5tb2RlbHNVc2VkLmFkZChtb2RlbEluZm8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiY29tcGFjdGlvblwiOlxuXHRcdFx0XHRkYXRhLnNlc3Npb25FdmVudHMucHVzaCh7XG5cdFx0XHRcdFx0dHlwZTogXCJjb21wYWN0aW9uXCIsXG5cdFx0XHRcdFx0dGltZXN0YW1wOiBlbnRyeS50aW1lc3RhbXAgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdHN1bW1hcnk6IGVudHJ5LnN1bW1hcnkgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdHRva2Vuc0JlZm9yZTogZW50cnkudG9rZW5zQmVmb3JlIGFzIG51bWJlcixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmVhbWluZ0V2ZW50Rm9ybWF0KGxpbmVzOiBzdHJpbmdbXSk6IFBhcnNlZFNlc3Npb25EYXRhIHtcblx0Y29uc3QgZGF0YTogUGFyc2VkU2Vzc2lvbkRhdGEgPSB7XG5cdFx0c2Vzc2lvbklkOiBcInVua25vd25cIixcblx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRtb2RlbHNVc2VkOiBuZXcgU2V0KCksXG5cdFx0bWVzc2FnZXM6IFtdLFxuXHRcdHRvb2xSZXN1bHRzTWFwOiBuZXcgTWFwKCksXG5cdFx0c2Vzc2lvbkV2ZW50czogW10sXG5cdFx0dG9rZW5TdGF0czogeyBpbnB1dDogMCwgb3V0cHV0OiAwLCBjYWNoZVJlYWQ6IDAsIGNhY2hlV3JpdGU6IDAgfSxcblx0XHRjb3N0U3RhdHM6IHsgaW5wdXQ6IDAsIG91dHB1dDogMCwgY2FjaGVSZWFkOiAwLCBjYWNoZVdyaXRlOiAwIH0sXG5cdFx0aXNTdHJlYW1pbmdGb3JtYXQ6IHRydWUsXG5cdH07XG5cblx0bGV0IHRpbWVzdGFtcFNldCA9IGZhbHNlO1xuXG5cdGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuXHRcdGxldCBlbnRyeTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U/OiBNZXNzYWdlIH07XG5cdFx0dHJ5IHtcblx0XHRcdGVudHJ5ID0gSlNPTi5wYXJzZShsaW5lKSBhcyB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZT86IE1lc3NhZ2UgfTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGlmIChlbnRyeS50eXBlID09PSBcIm1lc3NhZ2VfZW5kXCIgJiYgZW50cnkubWVzc2FnZSkge1xuXHRcdFx0Y29uc3QgbXNnID0gZW50cnkubWVzc2FnZTtcblx0XHRcdGRhdGEubWVzc2FnZXMucHVzaChtc2cpO1xuXHRcdFx0ZGF0YS5zZXNzaW9uRXZlbnRzLnB1c2goe1xuXHRcdFx0XHR0eXBlOiBcIm1lc3NhZ2VcIixcblx0XHRcdFx0bWVzc2FnZTogbXNnLFxuXHRcdFx0XHR0aW1lc3RhbXA6IChtc2cgYXMgeyB0aW1lc3RhbXA/OiBudW1iZXIgfSkudGltZXN0YW1wLFxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChtc2cucm9sZSA9PT0gXCJ0b29sUmVzdWx0XCIpIHtcblx0XHRcdFx0Y29uc3QgdG9vbFJlc3VsdCA9IG1zZyBhcyBUb29sUmVzdWx0TWVzc2FnZTtcblx0XHRcdFx0ZGF0YS50b29sUmVzdWx0c01hcC5zZXQodG9vbFJlc3VsdC50b29sQ2FsbElkLCB0b29sUmVzdWx0KTtcblx0XHRcdH0gZWxzZSBpZiAobXNnLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpIHtcblx0XHRcdFx0Y29uc3QgYXNzaXN0YW50TXNnID0gbXNnIGFzIEFzc2lzdGFudE1lc3NhZ2U7XG5cdFx0XHRcdGlmIChhc3Npc3RhbnRNc2cubW9kZWwpIHtcblx0XHRcdFx0XHRjb25zdCBtb2RlbEluZm8gPSBhc3Npc3RhbnRNc2cucHJvdmlkZXJcblx0XHRcdFx0XHRcdD8gYCR7YXNzaXN0YW50TXNnLnByb3ZpZGVyfS8ke2Fzc2lzdGFudE1zZy5tb2RlbH1gXG5cdFx0XHRcdFx0XHQ6IGFzc2lzdGFudE1zZy5tb2RlbDtcblx0XHRcdFx0XHRkYXRhLm1vZGVsc1VzZWQuYWRkKG1vZGVsSW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGFzc2lzdGFudE1zZy51c2FnZSkge1xuXHRcdFx0XHRcdGRhdGEudG9rZW5TdGF0cy5pbnB1dCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuaW5wdXQgfHwgMDtcblx0XHRcdFx0XHRkYXRhLnRva2VuU3RhdHMub3V0cHV0ICs9IGFzc2lzdGFudE1zZy51c2FnZS5vdXRwdXQgfHwgMDtcblx0XHRcdFx0XHRkYXRhLnRva2VuU3RhdHMuY2FjaGVSZWFkICs9IGFzc2lzdGFudE1zZy51c2FnZS5jYWNoZVJlYWQgfHwgMDtcblx0XHRcdFx0XHRkYXRhLnRva2VuU3RhdHMuY2FjaGVXcml0ZSArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY2FjaGVXcml0ZSB8fCAwO1xuXHRcdFx0XHRcdGlmIChhc3Npc3RhbnRNc2cudXNhZ2UuY29zdCkge1xuXHRcdFx0XHRcdFx0ZGF0YS5jb3N0U3RhdHMuaW5wdXQgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmNvc3QuaW5wdXQgfHwgMDtcblx0XHRcdFx0XHRcdGRhdGEuY29zdFN0YXRzLm91dHB1dCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5vdXRwdXQgfHwgMDtcblx0XHRcdFx0XHRcdGRhdGEuY29zdFN0YXRzLmNhY2hlUmVhZCArPSBhc3Npc3RhbnRNc2cudXNhZ2UuY29zdC5jYWNoZVJlYWQgfHwgMDtcblx0XHRcdFx0XHRcdGRhdGEuY29zdFN0YXRzLmNhY2hlV3JpdGUgKz0gYXNzaXN0YW50TXNnLnVzYWdlLmNvc3QuY2FjaGVXcml0ZSB8fCAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXRpbWVzdGFtcFNldCAmJiAobXNnIGFzIHsgdGltZXN0YW1wPzogbnVtYmVyIH0pLnRpbWVzdGFtcCkge1xuXHRcdFx0XHRkYXRhLnRpbWVzdGFtcCA9IG5ldyBEYXRlKChtc2cgYXMgeyB0aW1lc3RhbXA6IG51bWJlciB9KS50aW1lc3RhbXApLnRvSVNPU3RyaW5nKCk7XG5cdFx0XHRcdHRpbWVzdGFtcFNldCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0ZGF0YS5zZXNzaW9uSWQgPSBgc3RyZWFtLSR7ZGF0YS50aW1lc3RhbXAucmVwbGFjZSgvWzouXS9nLCBcIi1cIil9YDtcblx0cmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGRldGVjdEZvcm1hdChsaW5lczogc3RyaW5nW10pOiBcInNlc3Npb24tbWFuYWdlclwiIHwgXCJzdHJlYW1pbmctZXZlbnRzXCIgfCBcInVua25vd25cIiB7XG5cdGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBlbnRyeSA9IEpTT04ucGFyc2UobGluZSkgYXMgeyB0eXBlOiBzdHJpbmcgfTtcblx0XHRcdGlmIChlbnRyeS50eXBlID09PSBcInNlc3Npb25cIikgcmV0dXJuIFwic2Vzc2lvbi1tYW5hZ2VyXCI7XG5cdFx0XHRpZiAoZW50cnkudHlwZSA9PT0gXCJhZ2VudF9zdGFydFwiIHx8IGVudHJ5LnR5cGUgPT09IFwibWVzc2FnZV9zdGFydFwiIHx8IGVudHJ5LnR5cGUgPT09IFwidHVybl9zdGFydFwiKSB7XG5cdFx0XHRcdHJldHVybiBcInN0cmVhbWluZy1ldmVudHNcIjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHt9XG5cdH1cblx0cmV0dXJuIFwidW5rbm93blwiO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNlc3Npb25GaWxlKGNvbnRlbnQ6IHN0cmluZyk6IFBhcnNlZFNlc3Npb25EYXRhIHtcblx0Y29uc3QgbGluZXMgPSBjb250ZW50XG5cdFx0LnRyaW0oKVxuXHRcdC5zcGxpdChcIlxcblwiKVxuXHRcdC5maWx0ZXIoKGwpID0+IGwudHJpbSgpKTtcblxuXHRpZiAobGluZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiRW1wdHkgc2Vzc2lvbiBmaWxlXCIpO1xuXHR9XG5cblx0Y29uc3QgZm9ybWF0ID0gZGV0ZWN0Rm9ybWF0KGxpbmVzKTtcblx0aWYgKGZvcm1hdCA9PT0gXCJ1bmtub3duXCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHNlc3Npb24gZmlsZSBmb3JtYXRcIik7XG5cdH1cblxuXHRyZXR1cm4gZm9ybWF0ID09PSBcInNlc3Npb24tbWFuYWdlclwiID8gcGFyc2VTZXNzaW9uTWFuYWdlckZvcm1hdChsaW5lcykgOiBwYXJzZVN0cmVhbWluZ0V2ZW50Rm9ybWF0KGxpbmVzKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSFRNTCBmb3JtYXR0aW5nIGZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBmb3JtYXRUb29sRXhlY3V0aW9uKFxuXHR0b29sTmFtZTogc3RyaW5nLFxuXHRhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0cmVzdWx0OiBUb29sUmVzdWx0TWVzc2FnZSB8IHVuZGVmaW5lZCxcblx0Y29sb3JzOiBUaGVtZUNvbG9ycyxcbik6IHsgaHRtbDogc3RyaW5nOyBiZ0NvbG9yOiBzdHJpbmcgfSB7XG5cdGxldCBodG1sID0gXCJcIjtcblx0Y29uc3QgaXNFcnJvciA9IHJlc3VsdD8uaXNFcnJvciB8fCBmYWxzZTtcblx0Y29uc3QgYmdDb2xvciA9IHJlc3VsdCA/IChpc0Vycm9yID8gY29sb3JzLnRvb2xFcnJvckJnIDogY29sb3JzLnRvb2xTdWNjZXNzQmcpIDogY29sb3JzLnRvb2xQZW5kaW5nQmc7XG5cblx0Y29uc3QgZ2V0VGV4dE91dHB1dCA9ICgpOiBzdHJpbmcgPT4ge1xuXHRcdGlmICghcmVzdWx0KSByZXR1cm4gXCJcIjtcblx0XHRjb25zdCB0ZXh0QmxvY2tzID0gcmVzdWx0LmNvbnRlbnQuZmlsdGVyKChjKSA9PiBjLnR5cGUgPT09IFwidGV4dFwiKTtcblx0XHRyZXR1cm4gdGV4dEJsb2Nrcy5tYXAoKGMpID0+IChjIGFzIHsgdHlwZTogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9KS50ZXh0KS5qb2luKFwiXFxuXCIpO1xuXHR9O1xuXG5cdHN3aXRjaCAodG9vbE5hbWUpIHtcblx0XHRjYXNlIFwiYmFzaFwiOiB7XG5cdFx0XHRjb25zdCBjb21tYW5kID0gKGFyZ3M/LmNvbW1hbmQgYXMgc3RyaW5nKSB8fCBcIlwiO1xuXHRcdFx0aHRtbCA9IGA8ZGl2IGNsYXNzPVwidG9vbC1jb21tYW5kXCI+JCAke2VzY2FwZUh0bWwoY29tbWFuZCB8fCBcIi4uLlwiKX08L2Rpdj5gO1xuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRjb25zdCBvdXRwdXQgPSBnZXRUZXh0T3V0cHV0KCkudHJpbSgpO1xuXHRcdFx0XHRpZiAob3V0cHV0KSB7XG5cdFx0XHRcdFx0aHRtbCArPSBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KG91dHB1dC5zcGxpdChcIlxcblwiKSwgNSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGNhc2UgXCJyZWFkXCI6IHtcblx0XHRcdGNvbnN0IGZpbGVQYXRoID0gKGFyZ3M/LmZpbGVfcGF0aCBhcyBzdHJpbmcpIHx8IChhcmdzPy5wYXRoIGFzIHN0cmluZykgfHwgXCJcIjtcblx0XHRcdGNvbnN0IHNob3J0ZW5lZFBhdGggPSBzaG9ydGVuUGF0aChmaWxlUGF0aCk7XG5cdFx0XHRjb25zdCBvZmZzZXQgPSBhcmdzPy5vZmZzZXQgYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgbGltaXQgPSBhcmdzPy5saW1pdCBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBsYW5nID0gZ2V0TGFuZ3VhZ2VGcm9tUGF0aChmaWxlUGF0aCk7XG5cblx0XHRcdC8vIEJ1aWxkIHBhdGggZGlzcGxheSB3aXRoIG9mZnNldC9saW1pdCBzdWZmaXhcblx0XHRcdGxldCBwYXRoSHRtbCA9IGVzY2FwZUh0bWwoc2hvcnRlbmVkUGF0aCB8fCBcIi4uLlwiKTtcblx0XHRcdGlmIChvZmZzZXQgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnN0IHN0YXJ0TGluZSA9IG9mZnNldCA/PyAxO1xuXHRcdFx0XHRjb25zdCBlbmRMaW5lID0gbGltaXQgIT09IHVuZGVmaW5lZCA/IHN0YXJ0TGluZSArIGxpbWl0IC0gMSA6IFwiXCI7XG5cdFx0XHRcdHBhdGhIdG1sICs9IGA8c3BhbiBjbGFzcz1cImxpbmUtbnVtYmVyc1wiPjoke3N0YXJ0TGluZX0ke2VuZExpbmUgPyBgLSR7ZW5kTGluZX1gIDogXCJcIn08L3NwYW4+YDtcblx0XHRcdH1cblxuXHRcdFx0aHRtbCA9IGA8ZGl2IGNsYXNzPVwidG9vbC1oZWFkZXJcIj48c3BhbiBjbGFzcz1cInRvb2wtbmFtZVwiPnJlYWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwidG9vbC1wYXRoXCI+JHtwYXRoSHRtbH08L3NwYW4+PC9kaXY+YDtcblx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0Y29uc3Qgb3V0cHV0ID0gZ2V0VGV4dE91dHB1dCgpO1xuXHRcdFx0XHRpZiAob3V0cHV0KSB7XG5cdFx0XHRcdFx0aHRtbCArPSBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KG91dHB1dC5zcGxpdChcIlxcblwiKSwgMTAsIGxhbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRjYXNlIFwid3JpdGVcIjoge1xuXHRcdFx0Y29uc3QgZmlsZVBhdGggPSAoYXJncz8uZmlsZV9wYXRoIGFzIHN0cmluZykgfHwgKGFyZ3M/LnBhdGggYXMgc3RyaW5nKSB8fCBcIlwiO1xuXHRcdFx0Y29uc3Qgc2hvcnRlbmVkUGF0aCA9IHNob3J0ZW5QYXRoKGZpbGVQYXRoKTtcblx0XHRcdGNvbnN0IGZpbGVDb250ZW50ID0gKGFyZ3M/LmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBcIlwiO1xuXHRcdFx0Y29uc3QgbGluZXMgPSBmaWxlQ29udGVudCA/IGZpbGVDb250ZW50LnNwbGl0KFwiXFxuXCIpIDogW107XG5cdFx0XHRjb25zdCBsYW5nID0gZ2V0TGFuZ3VhZ2VGcm9tUGF0aChmaWxlUGF0aCk7XG5cblx0XHRcdGh0bWwgPSBgPGRpdiBjbGFzcz1cInRvb2wtaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJ0b29sLW5hbWVcIj53cml0ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ0b29sLXBhdGhcIj4ke2VzY2FwZUh0bWwoc2hvcnRlbmVkUGF0aCB8fCBcIi4uLlwiKX08L3NwYW4+YDtcblx0XHRcdGlmIChsaW5lcy5sZW5ndGggPiAxMCkge1xuXHRcdFx0XHRodG1sICs9IGAgPHNwYW4gY2xhc3M9XCJsaW5lLWNvdW50XCI+KCR7bGluZXMubGVuZ3RofSBsaW5lcyk8L3NwYW4+YDtcblx0XHRcdH1cblx0XHRcdGh0bWwgKz0gXCI8L2Rpdj5cIjtcblxuXHRcdFx0aWYgKGZpbGVDb250ZW50KSB7XG5cdFx0XHRcdGh0bWwgKz0gZm9ybWF0RXhwYW5kYWJsZU91dHB1dChsaW5lcywgMTAsIGxhbmcpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRjb25zdCBvdXRwdXQgPSBnZXRUZXh0T3V0cHV0KCkudHJpbSgpO1xuXHRcdFx0XHRpZiAob3V0cHV0KSB7XG5cdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0XCI+PGRpdj4ke2VzY2FwZUh0bWwob3V0cHV0KX08L2Rpdj48L2Rpdj5gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRjYXNlIFwiZWRpdFwiOiB7XG5cdFx0XHRjb25zdCBwYXRoID0gc2hvcnRlblBhdGgoKGFyZ3M/LmZpbGVfcGF0aCBhcyBzdHJpbmcpIHx8IChhcmdzPy5wYXRoIGFzIHN0cmluZykgfHwgXCJcIik7XG5cdFx0XHRodG1sID0gYDxkaXYgY2xhc3M9XCJ0b29sLWhlYWRlclwiPjxzcGFuIGNsYXNzPVwidG9vbC1uYW1lXCI+ZWRpdDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ0b29sLXBhdGhcIj4ke2VzY2FwZUh0bWwocGF0aCB8fCBcIi4uLlwiKX08L3NwYW4+PC9kaXY+YDtcblxuXHRcdFx0aWYgKHJlc3VsdD8uZGV0YWlscz8uZGlmZikge1xuXHRcdFx0XHRjb25zdCBkaWZmTGluZXMgPSByZXN1bHQuZGV0YWlscy5kaWZmLnNwbGl0KFwiXFxuXCIpO1xuXHRcdFx0XHRodG1sICs9ICc8ZGl2IGNsYXNzPVwidG9vbC1kaWZmXCI+Jztcblx0XHRcdFx0Zm9yIChjb25zdCBsaW5lIG9mIGRpZmZMaW5lcykge1xuXHRcdFx0XHRcdGlmIChsaW5lLnN0YXJ0c1dpdGgoXCIrXCIpKSB7XG5cdFx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiZGlmZi1saW5lLW5ld1wiPiR7ZXNjYXBlSHRtbChsaW5lKX08L2Rpdj5gO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKFwiLVwiKSkge1xuXHRcdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImRpZmYtbGluZS1vbGRcIj4ke2VzY2FwZUh0bWwobGluZSl9PC9kaXY+YDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImRpZmYtbGluZS1jb250ZXh0XCI+JHtlc2NhcGVIdG1sKGxpbmUpfTwvZGl2PmA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGh0bWwgKz0gXCI8L2Rpdj5cIjtcblx0XHRcdH1cblx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0Y29uc3Qgb3V0cHV0ID0gZ2V0VGV4dE91dHB1dCgpLnRyaW0oKTtcblx0XHRcdFx0aWYgKG91dHB1dCkge1xuXHRcdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dFwiPjxkaXY+JHtlc2NhcGVIdG1sKG91dHB1dCl9PC9kaXY+PC9kaXY+YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0ZGVmYXVsdDoge1xuXHRcdFx0aHRtbCA9IGA8ZGl2IGNsYXNzPVwidG9vbC1oZWFkZXJcIj48c3BhbiBjbGFzcz1cInRvb2wtbmFtZVwiPiR7ZXNjYXBlSHRtbCh0b29sTmFtZSl9PC9zcGFuPjwvZGl2PmA7XG5cdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidG9vbC1vdXRwdXRcIj48cHJlPiR7ZXNjYXBlSHRtbChKU09OLnN0cmluZ2lmeShhcmdzLCBudWxsLCAyKSl9PC9wcmU+PC9kaXY+YDtcblx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0Y29uc3Qgb3V0cHV0ID0gZ2V0VGV4dE91dHB1dCgpO1xuXHRcdFx0XHRpZiAob3V0cHV0KSB7XG5cdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0XCI+PGRpdj4ke2VzY2FwZUh0bWwob3V0cHV0KX08L2Rpdj48L2Rpdj5gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgaHRtbCwgYmdDb2xvciB9O1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNZXNzYWdlKFxuXHRtZXNzYWdlOiBBZ2VudE1lc3NhZ2UsXG5cdHRvb2xSZXN1bHRzTWFwOiBNYXA8c3RyaW5nLCBUb29sUmVzdWx0TWVzc2FnZT4sXG5cdGNvbG9yczogVGhlbWVDb2xvcnMsXG4pOiBzdHJpbmcge1xuXHRsZXQgaHRtbCA9IFwiXCI7XG5cdGNvbnN0IHRpbWVzdGFtcCA9IChtZXNzYWdlIGFzIHsgdGltZXN0YW1wPzogbnVtYmVyIH0pLnRpbWVzdGFtcDtcblx0Y29uc3QgdGltZXN0YW1wSHRtbCA9IHRpbWVzdGFtcCA/IGA8ZGl2IGNsYXNzPVwibWVzc2FnZS10aW1lc3RhbXBcIj4ke2Zvcm1hdFRpbWVzdGFtcCh0aW1lc3RhbXApfTwvZGl2PmAgOiBcIlwiO1xuXG5cdHN3aXRjaCAobWVzc2FnZS5yb2xlKSB7XG5cdFx0Y2FzZSBcImJhc2hFeGVjdXRpb25cIjoge1xuXHRcdFx0Y29uc3QgaXNFcnJvciA9XG5cdFx0XHRcdG1lc3NhZ2UuY2FuY2VsbGVkIHx8XG5cdFx0XHRcdChtZXNzYWdlLmV4aXRDb2RlICE9PSAwICYmIG1lc3NhZ2UuZXhpdENvZGUgIT09IG51bGwgJiYgbWVzc2FnZS5leGl0Q29kZSAhPT0gdW5kZWZpbmVkKTtcblxuXHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtZXhlY3V0aW9uIHVzZXItYmFzaCR7aXNFcnJvciA/IFwiIHVzZXItYmFzaC1lcnJvclwiIDogXCJcIn1cIj5gO1xuXHRcdFx0aHRtbCArPSB0aW1lc3RhbXBIdG1sO1xuXHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtY29tbWFuZFwiPiQgJHtlc2NhcGVIdG1sKG1lc3NhZ2UuY29tbWFuZCl9PC9kaXY+YDtcblxuXHRcdFx0aWYgKG1lc3NhZ2Uub3V0cHV0KSB7XG5cdFx0XHRcdGNvbnN0IGxpbmVzID0gbWVzc2FnZS5vdXRwdXQuc3BsaXQoXCJcXG5cIik7XG5cdFx0XHRcdGh0bWwgKz0gZm9ybWF0RXhwYW5kYWJsZU91dHB1dChsaW5lcywgMTApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZS5jYW5jZWxsZWQpIHtcblx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImJhc2gtc3RhdHVzIHdhcm5pbmdcIj4oY2FuY2VsbGVkKTwvZGl2PmA7XG5cdFx0XHR9IGVsc2UgaWYgKG1lc3NhZ2UuZXhpdENvZGUgIT09IDAgJiYgbWVzc2FnZS5leGl0Q29kZSAhPT0gbnVsbCAmJiBtZXNzYWdlLmV4aXRDb2RlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImJhc2gtc3RhdHVzIGVycm9yXCI+KGV4aXQgJHttZXNzYWdlLmV4aXRDb2RlfSk8L2Rpdj5gO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZS50cnVuY2F0ZWQgJiYgbWVzc2FnZS5mdWxsT3V0cHV0UGF0aCkge1xuXHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiYmFzaC10cnVuY2F0aW9uIHdhcm5pbmdcIj5PdXRwdXQgdHJ1bmNhdGVkLiBGdWxsIG91dHB1dDogJHtlc2NhcGVIdG1sKG1lc3NhZ2UuZnVsbE91dHB1dFBhdGgpfTwvZGl2PmA7XG5cdFx0XHR9XG5cblx0XHRcdGh0bWwgKz0gYDwvZGl2PmA7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcInVzZXJcIjoge1xuXHRcdFx0Y29uc3QgdXNlck1zZyA9IG1lc3NhZ2UgYXMgVXNlck1lc3NhZ2U7XG5cdFx0XHRsZXQgdGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0Y29uc3QgaW1hZ2VzOiBJbWFnZUNvbnRlbnRbXSA9IFtdO1xuXG5cdFx0XHRpZiAodHlwZW9mIHVzZXJNc2cuY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHR0ZXh0Q29udGVudCA9IHVzZXJNc2cuY29udGVudDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoY29uc3QgYmxvY2sgb2YgdXNlck1zZy5jb250ZW50KSB7XG5cdFx0XHRcdFx0aWYgKGJsb2NrLnR5cGUgPT09IFwidGV4dFwiKSB7XG5cdFx0XHRcdFx0XHR0ZXh0Q29udGVudCArPSBibG9jay50ZXh0O1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYmxvY2sudHlwZSA9PT0gXCJpbWFnZVwiKSB7XG5cdFx0XHRcdFx0XHRpbWFnZXMucHVzaChibG9jayBhcyBJbWFnZUNvbnRlbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwidXNlci1tZXNzYWdlXCI+JHt0aW1lc3RhbXBIdG1sfWA7XG5cblx0XHRcdC8vIFJlbmRlciBpbWFnZXMgZmlyc3Rcblx0XHRcdGlmIChpbWFnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwibWVzc2FnZS1pbWFnZXNcIj5gO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGltZyBvZiBpbWFnZXMpIHtcblx0XHRcdFx0XHRodG1sICs9IGA8aW1nIHNyYz1cImRhdGE6JHtpbWcubWltZVR5cGV9O2Jhc2U2NCwke2ltZy5kYXRhfVwiIGFsdD1cIlVzZXIgdXBsb2FkZWQgaW1hZ2VcIiBjbGFzcz1cIm1lc3NhZ2UtaW1hZ2VcIiAvPmA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aHRtbCArPSBgPC9kaXY+YDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVuZGVyIHRleHQgYXMgbWFya2Rvd24gKHNlcnZlci1zaWRlKVxuXHRcdFx0aWYgKHRleHRDb250ZW50LnRyaW0oKSkge1xuXHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiPiR7cmVuZGVyTWFya2Rvd24odGV4dENvbnRlbnQpfTwvZGl2PmA7XG5cdFx0XHR9XG5cblx0XHRcdGh0bWwgKz0gYDwvZGl2PmA7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y2FzZSBcImFzc2lzdGFudFwiOiB7XG5cdFx0XHRodG1sICs9IHRpbWVzdGFtcEh0bWwgPyBgPGRpdiBjbGFzcz1cImFzc2lzdGFudC1tZXNzYWdlXCI+JHt0aW1lc3RhbXBIdG1sfWAgOiBcIlwiO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRlbnQgb2YgbWVzc2FnZS5jb250ZW50KSB7XG5cdFx0XHRcdGlmIChjb250ZW50LnR5cGUgPT09IFwidGV4dFwiICYmIGNvbnRlbnQudGV4dC50cmltKCkpIHtcblx0XHRcdFx0XHQvLyBSZW5kZXIgbWFya2Rvd24gc2VydmVyLXNpZGVcblx0XHRcdFx0XHRodG1sICs9IGA8ZGl2IGNsYXNzPVwiYXNzaXN0YW50LXRleHQgbWFya2Rvd24tY29udGVudFwiPiR7cmVuZGVyTWFya2Rvd24oY29udGVudC50ZXh0KX08L2Rpdj5gO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGNvbnRlbnQudHlwZSA9PT0gXCJ0aGlua2luZ1wiICYmIGNvbnRlbnQudGhpbmtpbmcudHJpbSgpKSB7XG5cdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cInRoaW5raW5nLXRleHRcIj4ke2VzY2FwZUh0bWwoY29udGVudC50aGlua2luZy50cmltKCkpLnJlcGxhY2UoL1xcbi9nLCBcIjxicj5cIil9PC9kaXY+YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRlbnQgb2YgbWVzc2FnZS5jb250ZW50KSB7XG5cdFx0XHRcdGlmIChjb250ZW50LnR5cGUgPT09IFwidG9vbENhbGxcIikge1xuXHRcdFx0XHRcdGNvbnN0IHRvb2xSZXN1bHQgPSB0b29sUmVzdWx0c01hcC5nZXQoY29udGVudC5pZCk7XG5cdFx0XHRcdFx0Y29uc3QgeyBodG1sOiB0b29sSHRtbCwgYmdDb2xvciB9ID0gZm9ybWF0VG9vbEV4ZWN1dGlvbihcblx0XHRcdFx0XHRcdGNvbnRlbnQubmFtZSxcblx0XHRcdFx0XHRcdGNvbnRlbnQuYXJndW1lbnRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdFx0XHRcdFx0dG9vbFJlc3VsdCxcblx0XHRcdFx0XHRcdGNvbG9ycyxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLWV4ZWN1dGlvblwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJHtiZ0NvbG9yfVwiPiR7dG9vbEh0bWx9PC9kaXY+YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBoYXNUb29sQ2FsbHMgPSBtZXNzYWdlLmNvbnRlbnQuc29tZSgoYykgPT4gYy50eXBlID09PSBcInRvb2xDYWxsXCIpO1xuXHRcdFx0aWYgKCFoYXNUb29sQ2FsbHMpIHtcblx0XHRcdFx0aWYgKG1lc3NhZ2Uuc3RvcFJlYXNvbiA9PT0gXCJhYm9ydGVkXCIpIHtcblx0XHRcdFx0XHRodG1sICs9ICc8ZGl2IGNsYXNzPVwiZXJyb3ItdGV4dFwiPkFib3J0ZWQ8L2Rpdj4nO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG1lc3NhZ2Uuc3RvcFJlYXNvbiA9PT0gXCJlcnJvclwiKSB7XG5cdFx0XHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImVycm9yLXRleHRcIj5FcnJvcjogJHtlc2NhcGVIdG1sKG1lc3NhZ2UuZXJyb3JNZXNzYWdlIHx8IFwiVW5rbm93biBlcnJvclwiKX08L2Rpdj5gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aW1lc3RhbXBIdG1sKSB7XG5cdFx0XHRcdGh0bWwgKz0gXCI8L2Rpdj5cIjtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRjYXNlIFwidG9vbFJlc3VsdFwiOlxuXHRcdFx0Ly8gVG9vbCByZXN1bHRzIGFyZSByZW5kZXJlZCBpbmxpbmUgd2l0aCB0b29sIGNhbGxzXG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiaG9va01lc3NhZ2VcIjpcblx0XHRcdC8vIEhvb2sgbWVzc2FnZXMgd2l0aCBkaXNwbGF5OnRydWUgc2hvd24gYXMgaW5mbyBib3hlc1xuXHRcdFx0aWYgKG1lc3NhZ2UuZGlzcGxheSkge1xuXHRcdFx0XHRjb25zdCBjb250ZW50ID0gdHlwZW9mIG1lc3NhZ2UuY29udGVudCA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2UuY29udGVudCA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UuY29udGVudCk7XG5cdFx0XHRcdGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJob29rLW1lc3NhZ2VcIj4ke3RpbWVzdGFtcEh0bWx9PGRpdiBjbGFzcz1cImhvb2stdHlwZVwiPlske2VzY2FwZUh0bWwobWVzc2FnZS5jdXN0b21UeXBlKX1dPC9kaXY+PGRpdiBjbGFzcz1cIm1hcmtkb3duLWNvbnRlbnRcIj4ke3JlbmRlck1hcmtkb3duKGNvbnRlbnQpfTwvZGl2PjwvZGl2PmA7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tcGFjdGlvblN1bW1hcnlcIjpcblx0XHRcdC8vIFJlbmRlcmVkIHNlcGFyYXRlbHkgdmlhIGZvcm1hdENvbXBhY3Rpb25cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJicmFuY2hTdW1tYXJ5XCI6XG5cdFx0XHQvLyBSZW5kZXJlZCBhcyBjb21wYWN0aW9uLWxpa2Ugc3VtbWFyeVxuXHRcdFx0aHRtbCArPSBgPGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tY29udGFpbmVyIGV4cGFuZGVkXCI+PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tY29udGVudFwiPjxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLXN1bW1hcnlcIj48ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1zdW1tYXJ5LWhlYWRlclwiPkJyYW5jaCBTdW1tYXJ5PC9kaXY+PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tc3VtbWFyeS1jb250ZW50XCI+JHtlc2NhcGVIdG1sKG1lc3NhZ2Uuc3VtbWFyeSkucmVwbGFjZSgvXFxuL2csIFwiPGJyPlwiKX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj5gO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDoge1xuXHRcdFx0Ly8gRXhoYXVzdGl2ZSBjaGVja1xuXHRcdFx0Y29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gbWVzc2FnZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gaHRtbDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TW9kZWxDaGFuZ2UoZXZlbnQ6IE1vZGVsQ2hhbmdlRXZlbnQpOiBzdHJpbmcge1xuXHRjb25zdCB0aW1lc3RhbXAgPSBmb3JtYXRUaW1lc3RhbXAoZXZlbnQudGltZXN0YW1wKTtcblx0Y29uc3QgdGltZXN0YW1wSHRtbCA9IHRpbWVzdGFtcCA/IGA8ZGl2IGNsYXNzPVwibWVzc2FnZS10aW1lc3RhbXBcIj4ke3RpbWVzdGFtcH08L2Rpdj5gIDogXCJcIjtcblx0Y29uc3QgbW9kZWxJbmZvID0gYCR7ZXZlbnQucHJvdmlkZXJ9LyR7ZXZlbnQubW9kZWxJZH1gO1xuXHRyZXR1cm4gYDxkaXYgY2xhc3M9XCJtb2RlbC1jaGFuZ2VcIj4ke3RpbWVzdGFtcEh0bWx9PGRpdiBjbGFzcz1cIm1vZGVsLWNoYW5nZS10ZXh0XCI+U3dpdGNoZWQgdG8gbW9kZWw6IDxzcGFuIGNsYXNzPVwibW9kZWwtbmFtZVwiPiR7ZXNjYXBlSHRtbChtb2RlbEluZm8pfTwvc3Bhbj48L2Rpdj48L2Rpdj5gO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRDb21wYWN0aW9uKGV2ZW50OiBDb21wYWN0aW9uRXZlbnQpOiBzdHJpbmcge1xuXHRjb25zdCB0aW1lc3RhbXAgPSBmb3JtYXRUaW1lc3RhbXAoZXZlbnQudGltZXN0YW1wKTtcblx0Y29uc3QgdGltZXN0YW1wSHRtbCA9IHRpbWVzdGFtcCA/IGA8ZGl2IGNsYXNzPVwibWVzc2FnZS10aW1lc3RhbXBcIj4ke3RpbWVzdGFtcH08L2Rpdj5gIDogXCJcIjtcblx0Y29uc3Qgc3VtbWFyeUh0bWwgPSBlc2NhcGVIdG1sKGV2ZW50LnN1bW1hcnkpLnJlcGxhY2UoL1xcbi9nLCBcIjxicj5cIik7XG5cblx0cmV0dXJuIGA8ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1jb250YWluZXJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1oZWFkZXJcIiBvbmNsaWNrPVwidGhpcy5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ2V4cGFuZGVkJylcIj5cblx0XHRcdCR7dGltZXN0YW1wSHRtbH1cblx0XHRcdDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLWhlYWRlci1yb3dcIj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjb21wYWN0aW9uLXRvZ2dsZVwiPuKWtjwvc3Bhbj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjb21wYWN0aW9uLXRpdGxlXCI+Q29udGV4dCBjb21wYWN0ZWQgZnJvbSAke2V2ZW50LnRva2Vuc0JlZm9yZS50b0xvY2FsZVN0cmluZygpfSB0b2tlbnM8L3NwYW4+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiY29tcGFjdGlvbi1oaW50XCI+KGNsaWNrIHRvIGV4cGFuZCBzdW1tYXJ5KTwvc3Bhbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLWNvbnRlbnRcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLXN1bW1hcnlcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tc3VtbWFyeS1oZWFkZXJcIj5TdW1tYXJ5IHNlbnQgdG8gbW9kZWw8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tc3VtbWFyeS1jb250ZW50XCI+JHtzdW1tYXJ5SHRtbH08L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5gO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIVE1MIGdlbmVyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gZ2VuZXJhdGVIdG1sKGRhdGE6IFBhcnNlZFNlc3Npb25EYXRhLCBmaWxlbmFtZTogc3RyaW5nLCBjb2xvcnM6IFRoZW1lQ29sb3JzLCBpc0xpZ2h0OiBib29sZWFuKTogc3RyaW5nIHtcblx0Y29uc3QgdXNlck1lc3NhZ2VzID0gZGF0YS5tZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0ucm9sZSA9PT0gXCJ1c2VyXCIpLmxlbmd0aDtcblx0Y29uc3QgYXNzaXN0YW50TWVzc2FnZXMgPSBkYXRhLm1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS5yb2xlID09PSBcImFzc2lzdGFudFwiKS5sZW5ndGg7XG5cblx0bGV0IHRvb2xDYWxsc0NvdW50ID0gMDtcblx0Zm9yIChjb25zdCBtZXNzYWdlIG9mIGRhdGEubWVzc2FnZXMpIHtcblx0XHRpZiAobWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG5cdFx0XHR0b29sQ2FsbHNDb3VudCArPSAobWVzc2FnZSBhcyBBc3Npc3RhbnRNZXNzYWdlKS5jb250ZW50LmZpbHRlcigoYykgPT4gYy50eXBlID09PSBcInRvb2xDYWxsXCIpLmxlbmd0aDtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBsYXN0QXNzaXN0YW50TWVzc2FnZSA9IGRhdGEubWVzc2FnZXNcblx0XHQuc2xpY2UoKVxuXHRcdC5yZXZlcnNlKClcblx0XHQuZmluZCgobSkgPT4gbS5yb2xlID09PSBcImFzc2lzdGFudFwiICYmIChtIGFzIEFzc2lzdGFudE1lc3NhZ2UpLnN0b3BSZWFzb24gIT09IFwiYWJvcnRlZFwiKSBhc1xuXHRcdHwgQXNzaXN0YW50TWVzc2FnZVxuXHRcdHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGNvbnRleHRUb2tlbnMgPSBsYXN0QXNzaXN0YW50TWVzc2FnZVxuXHRcdD8gbGFzdEFzc2lzdGFudE1lc3NhZ2UudXNhZ2UuaW5wdXQgK1xuXHRcdFx0bGFzdEFzc2lzdGFudE1lc3NhZ2UudXNhZ2Uub3V0cHV0ICtcblx0XHRcdGxhc3RBc3Npc3RhbnRNZXNzYWdlLnVzYWdlLmNhY2hlUmVhZCArXG5cdFx0XHRsYXN0QXNzaXN0YW50TWVzc2FnZS51c2FnZS5jYWNoZVdyaXRlXG5cdFx0OiAwO1xuXG5cdGNvbnN0IGxhc3RNb2RlbCA9IGxhc3RBc3Npc3RhbnRNZXNzYWdlPy5tb2RlbCB8fCBcInVua25vd25cIjtcblx0Y29uc3QgbGFzdFByb3ZpZGVyID0gbGFzdEFzc2lzdGFudE1lc3NhZ2U/LnByb3ZpZGVyIHx8IFwiXCI7XG5cdGNvbnN0IGxhc3RNb2RlbEluZm8gPSBsYXN0UHJvdmlkZXIgPyBgJHtsYXN0UHJvdmlkZXJ9LyR7bGFzdE1vZGVsfWAgOiBsYXN0TW9kZWw7XG5cblx0Y29uc3QgY29udGV4dFdpbmRvdyA9IGRhdGEuY29udGV4dFdpbmRvdyB8fCAwO1xuXHRjb25zdCBjb250ZXh0UGVyY2VudCA9IGNvbnRleHRXaW5kb3cgPiAwID8gKChjb250ZXh0VG9rZW5zIC8gY29udGV4dFdpbmRvdykgKiAxMDApLnRvRml4ZWQoMSkgOiB1bmRlZmluZWQ7XG5cblx0bGV0IG1lc3NhZ2VzSHRtbCA9IFwiXCI7XG5cdGZvciAoY29uc3QgZXZlbnQgb2YgZGF0YS5zZXNzaW9uRXZlbnRzKSB7XG5cdFx0c3dpdGNoIChldmVudC50eXBlKSB7XG5cdFx0XHRjYXNlIFwibWVzc2FnZVwiOlxuXHRcdFx0XHRpZiAoZXZlbnQubWVzc2FnZS5yb2xlICE9PSBcInRvb2xSZXN1bHRcIikge1xuXHRcdFx0XHRcdG1lc3NhZ2VzSHRtbCArPSBmb3JtYXRNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UsIGRhdGEudG9vbFJlc3VsdHNNYXAsIGNvbG9ycyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwibW9kZWxfY2hhbmdlXCI6XG5cdFx0XHRcdG1lc3NhZ2VzSHRtbCArPSBmb3JtYXRNb2RlbENoYW5nZShldmVudCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcImNvbXBhY3Rpb25cIjpcblx0XHRcdFx0bWVzc2FnZXNIdG1sICs9IGZvcm1hdENvbXBhY3Rpb24oZXZlbnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRjb25zdCBzeXN0ZW1Qcm9tcHRIdG1sID0gZGF0YS5zeXN0ZW1Qcm9tcHRcblx0XHQ/IGA8ZGl2IGNsYXNzPVwic3lzdGVtLXByb21wdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5c3RlbS1wcm9tcHQtaGVhZGVyXCI+U3lzdGVtIFByb21wdDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5c3RlbS1wcm9tcHQtY29udGVudFwiPiR7ZXNjYXBlSHRtbChkYXRhLnN5c3RlbVByb21wdCl9PC9kaXY+XG4gICAgICAgIDwvZGl2PmBcblx0XHQ6IFwiXCI7XG5cblx0Y29uc3QgdG9vbHNIdG1sID0gZGF0YS50b29sc1xuXHRcdD8gYDxkaXYgY2xhc3M9XCJ0b29scy1saXN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtaGVhZGVyXCI+QXZhaWxhYmxlIFRvb2xzPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICR7ZGF0YS50b29scy5tYXAoKHRvb2wpID0+IGA8ZGl2IGNsYXNzPVwidG9vbC1pdGVtXCI+PHNwYW4gY2xhc3M9XCJ0b29sLWl0ZW0tbmFtZVwiPiR7ZXNjYXBlSHRtbCh0b29sLm5hbWUpfTwvc3Bhbj4gLSAke2VzY2FwZUh0bWwodG9vbC5kZXNjcmlwdGlvbil9PC9kaXY+YCkuam9pbihcIlwiKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5gXG5cdFx0OiBcIlwiO1xuXG5cdGNvbnN0IHN0cmVhbWluZ05vdGljZSA9IGRhdGEuaXNTdHJlYW1pbmdGb3JtYXRcblx0XHQ/IGA8ZGl2IGNsYXNzPVwic3RyZWFtaW5nLW5vdGljZVwiPlxuICAgICAgICAgICAgPGVtPk5vdGU6IFRoaXMgc2Vzc2lvbiB3YXMgcmVjb25zdHJ1Y3RlZCBmcm9tIHJhdyBhZ2VudCBldmVudCBsb2dzLCB3aGljaCBkbyBub3QgY29udGFpbiBzeXN0ZW0gcHJvbXB0IG9yIHRvb2wgZGVmaW5pdGlvbnMuPC9lbT5cbiAgICAgICAgPC9kaXY+YFxuXHRcdDogXCJcIjtcblxuXHRjb25zdCBjb250ZXh0VXNhZ2VUZXh0ID0gY29udGV4dFBlcmNlbnRcblx0XHQ/IGAke2NvbnRleHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gLyAke2NvbnRleHRXaW5kb3cudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zICgke2NvbnRleHRQZXJjZW50fSUpIC0gJHtlc2NhcGVIdG1sKGxhc3RNb2RlbEluZm8pfWBcblx0XHQ6IGAke2NvbnRleHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zIChsYXN0IHR1cm4pIC0gJHtlc2NhcGVIdG1sKGxhc3RNb2RlbEluZm8pfWA7XG5cblx0Ly8gQ29tcHV0ZSBib2R5IGJhY2tncm91bmQgYmFzZWQgb24gdGhlbWVcblx0Y29uc3QgYm9keUJnID0gaXNMaWdodCA/IFwicmdiKDI0OCwgMjQ4LCAyNDgpXCIgOiBcInJnYigyNCwgMjQsIDMwKVwiO1xuXHRjb25zdCBjb250YWluZXJCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI1NSwgMjU1KVwiIDogXCJyZ2IoMzAsIDMwLCAzNilcIjtcblx0Y29uc3QgY29tcGFjdGlvbkJnID0gaXNMaWdodCA/IFwicmdiKDI1NSwgMjQ4LCAyMjApXCIgOiBcInJnYig2MCwgNTUsIDM1KVwiO1xuXHRjb25zdCBzeXN0ZW1Qcm9tcHRCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI1MCwgMjMwKVwiIDogXCJyZ2IoNjAsIDU1LCA0MClcIjtcblx0Y29uc3Qgc3RyZWFtaW5nTm90aWNlQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjUwLCAyNDUsIDIzNSlcIiA6IFwicmdiKDUwLCA0NSwgMzUpXCI7XG5cdGNvbnN0IG1vZGVsQ2hhbmdlQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjQwLCAyNDAsIDI1MClcIiA6IFwicmdiKDQwLCA0MCwgNTApXCI7XG5cdGNvbnN0IHVzZXJCYXNoQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjU1LCAyNTAsIDI0MClcIiA6IFwicmdiKDUwLCA0OCwgMzUpXCI7XG5cdGNvbnN0IHVzZXJCYXNoRXJyb3JCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI0NSwgMjM1KVwiIDogXCJyZ2IoNjAsIDQ1LCAzNSlcIjtcblxuXHRyZXR1cm4gYDwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbiAgICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbiAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiPlxuICAgIDx0aXRsZT5TZXNzaW9uIEV4cG9ydCAtICR7ZXNjYXBlSHRtbChmaWxlbmFtZSl9PC90aXRsZT5cbiAgICA8c3R5bGU+XG4gICAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgICAgICAgYm9keSB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCAnQ2FzY2FkaWEgQ29kZScsICdTb3VyY2UgQ29kZSBQcm8nLCBNZW5sbywgQ29uc29sYXMsICdEZWphVnUgU2FucyBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy50ZXh0fTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Ym9keUJnfTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRhaW5lciB7IG1heC13aWR0aDogNzAwcHg7IG1hcmdpbjogMCBhdXRvOyB9XG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2NvbnRhaW5lckJnfTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgfVxuICAgICAgICAuaGVhZGVyIGgxIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy5ib3JkZXJBY2NlbnR9O1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXItaW5mbyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4OyBmb250LXNpemU6IDExcHg7IH1cbiAgICAgICAgLmluZm8taXRlbSB7IGNvbG9yOiAke2NvbG9ycy5kaW19OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH1cbiAgICAgICAgLmluZm8tbGFiZWwgeyBmb250LXdlaWdodDogNjAwOyBtYXJnaW4tcmlnaHQ6IDhweDsgbWluLXdpZHRoOiAxMDBweDsgfVxuICAgICAgICAuaW5mby12YWx1ZSB7IGNvbG9yOiAke2NvbG9ycy50ZXh0fTsgZmxleDogMTsgfVxuICAgICAgICAuaW5mby12YWx1ZS5jb3N0IHsgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgbW9ub3NwYWNlOyB9XG4gICAgICAgIC5tZXNzYWdlcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTZweDsgfVxuICAgICAgICAubWVzc2FnZS10aW1lc3RhbXAgeyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAke2NvbG9ycy5kaW19OyBtYXJnaW4tYm90dG9tOiA0cHg7IG9wYWNpdHk6IDAuODsgfVxuICAgICAgICAudXNlci1tZXNzYWdlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y29sb3JzLnVzZXJNZXNzYWdlQmd9O1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLnVzZXJNZXNzYWdlVGV4dH07XG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmFzc2lzdGFudC1tZXNzYWdlIHsgcGFkZGluZzogMDsgfVxuICAgICAgICAuYXNzaXN0YW50LXRleHQsIC50aGlua2luZy10ZXh0IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgfVxuICAgICAgICAudGhpbmtpbmctdGV4dCB7IGNvbG9yOiAke2NvbG9ycy5kaW19OyBmb250LXN0eWxlOiBpdGFsaWM7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgfVxuICAgICAgICAubW9kZWwtY2hhbmdlIHsgcGFkZGluZzogOHB4IDE2cHg7IGJhY2tncm91bmQ6ICR7bW9kZWxDaGFuZ2VCZ307IGJvcmRlci1yYWRpdXM6IDRweDsgfVxuICAgICAgICAubW9kZWwtY2hhbmdlLXRleHQgeyBjb2xvcjogJHtjb2xvcnMuZGltfTsgZm9udC1zaXplOiAxMXB4OyB9XG4gICAgICAgIC5tb2RlbC1uYW1lIHsgY29sb3I6ICR7Y29sb3JzLmJvcmRlckFjY2VudH07IGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWNvbnRhaW5lciB7IGJhY2tncm91bmQ6ICR7Y29tcGFjdGlvbkJnfTsgYm9yZGVyLXJhZGl1czogNHB4OyBvdmVyZmxvdzogaGlkZGVuOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWhlYWRlciB7IHBhZGRpbmc6IDEycHggMTZweDsgY3Vyc29yOiBwb2ludGVyOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWhlYWRlcjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoJHtpc0xpZ2h0ID8gXCIwLCAwLCAwXCIgOiBcIjI1NSwgMjU1LCAyNTVcIn0sIDAuMDUpOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLWhlYWRlci1yb3cgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgfVxuICAgICAgICAuY29tcGFjdGlvbi10b2dnbGUgeyBjb2xvcjogJHtjb2xvcnMuYm9yZGVyQWNjZW50fTsgZm9udC1zaXplOiAxMHB4OyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yczsgfVxuICAgICAgICAuY29tcGFjdGlvbi1jb250YWluZXIuZXhwYW5kZWQgLmNvbXBhY3Rpb24tdG9nZ2xlIHsgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLXRpdGxlIHsgY29sb3I6ICR7Y29sb3JzLnRleHR9OyBmb250LXdlaWdodDogYm9sZDsgfVxuICAgICAgICAuY29tcGFjdGlvbi1oaW50IHsgY29sb3I6ICR7Y29sb3JzLmRpbX07IGZvbnQtc2l6ZTogMTFweDsgfVxuICAgICAgICAuY29tcGFjdGlvbi1jb250ZW50IHsgZGlzcGxheTogbm9uZTsgcGFkZGluZzogMCAxNnB4IDE2cHggMTZweDsgfVxuICAgICAgICAuY29tcGFjdGlvbi1jb250YWluZXIuZXhwYW5kZWQgLmNvbXBhY3Rpb24tY29udGVudCB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgICAgIC5jb21wYWN0aW9uLXN1bW1hcnkgeyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7IGJvcmRlci1yYWRpdXM6IDRweDsgcGFkZGluZzogMTJweDsgfVxuICAgICAgICAuY29tcGFjdGlvbi1zdW1tYXJ5LWhlYWRlciB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogJHtjb2xvcnMuYm9yZGVyQWNjZW50fTsgbWFyZ2luLWJvdHRvbTogOHB4OyBmb250LXNpemU6IDExcHg7IH1cbiAgICAgICAgLmNvbXBhY3Rpb24tc3VtbWFyeS1jb250ZW50IHsgY29sb3I6ICR7Y29sb3JzLnRleHR9OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgfVxuICAgICAgICAudG9vbC1leGVjdXRpb24geyBwYWRkaW5nOiAxMnB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgbWFyZ2luLXRvcDogOHB4OyB9XG4gICAgICAgIC50b29sLWV4ZWN1dGlvbi51c2VyLWJhc2ggeyBiYWNrZ3JvdW5kOiAke3VzZXJCYXNoQmd9OyB9XG4gICAgICAgIC50b29sLWV4ZWN1dGlvbi51c2VyLWJhc2gtZXJyb3IgeyBiYWNrZ3JvdW5kOiAke3VzZXJCYXNoRXJyb3JCZ307IH1cbiAgICAgICAgLnRvb2wtaGVhZGVyLCAudG9vbC1uYW1lIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgICAgICAgLnRvb2wtcGF0aCB7IGNvbG9yOiAke2NvbG9ycy5ib3JkZXJBY2NlbnR9OyB3b3JkLWJyZWFrOiBicmVhay1hbGw7IH1cbiAgICAgICAgLmxpbmUtbnVtYmVycyB7IGNvbG9yOiAke2NvbG9ycy53YXJuaW5nfTsgfVxuICAgICAgICAubGluZS1jb3VudCB7IGNvbG9yOiAke2NvbG9ycy5kaW19OyB9XG4gICAgICAgIC50b29sLWNvbW1hbmQgeyBmb250LXdlaWdodDogYm9sZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IH1cbiAgICAgICAgLnRvb2wtb3V0cHV0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMudG9vbE91dHB1dH07XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgfVxuICAgICAgICAudG9vbC1vdXRwdXQgPiBkaXYgeyBsaW5lLWhlaWdodDogMS40OyB9XG4gICAgICAgIC50b29sLW91dHB1dCBwcmUgeyBtYXJnaW46IDA7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyBjb2xvcjogaW5oZXJpdDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IH1cbiAgICAgICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGUgeyBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgICAgICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGU6aG92ZXIgeyBvcGFjaXR5OiAwLjk7IH1cbiAgICAgICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGUgLm91dHB1dC1mdWxsIHsgZGlzcGxheTogbm9uZTsgfVxuICAgICAgICAudG9vbC1vdXRwdXQuZXhwYW5kYWJsZS5leHBhbmRlZCAub3V0cHV0LXByZXZpZXcgeyBkaXNwbGF5OiBub25lOyB9XG4gICAgICAgIC50b29sLW91dHB1dC5leHBhbmRhYmxlLmV4cGFuZGVkIC5vdXRwdXQtZnVsbCB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgICAgIC5leHBhbmQtaGludCB7IGNvbG9yOiAke2NvbG9ycy5ib3JkZXJBY2NlbnR9OyBmb250LXN0eWxlOiBpdGFsaWM7IG1hcmdpbi10b3A6IDRweDsgfVxuICAgICAgICAuc3lzdGVtLXByb21wdCwgLnRvb2xzLWxpc3QgeyBiYWNrZ3JvdW5kOiAke3N5c3RlbVByb21wdEJnfTsgcGFkZGluZzogMTJweCAxNnB4OyBib3JkZXItcmFkaXVzOiA0cHg7IG1hcmdpbi1ib3R0b206IDE2cHg7IH1cbiAgICAgICAgLnN5c3RlbS1wcm9tcHQtaGVhZGVyLCAudG9vbHMtaGVhZGVyIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAke2NvbG9ycy53YXJuaW5nfTsgbWFyZ2luLWJvdHRvbTogOHB4OyB9XG4gICAgICAgIC5zeXN0ZW0tcHJvbXB0LWNvbnRlbnQsIC50b29scy1jb250ZW50IHsgY29sb3I6ICR7Y29sb3JzLmRpbX07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgd29yZC13cmFwOiBicmVhay13b3JkOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB3b3JkLWJyZWFrOiBicmVhay13b3JkOyBmb250LXNpemU6IDExcHg7IH1cbiAgICAgICAgLnRvb2wtaXRlbSB7IG1hcmdpbjogNHB4IDA7IH1cbiAgICAgICAgLnRvb2wtaXRlbS1uYW1lIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAke2NvbG9ycy50ZXh0fTsgfVxuICAgICAgICAudG9vbC1kaWZmIHsgbWFyZ2luLXRvcDogMTJweDsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogaW5oZXJpdDsgb3ZlcmZsb3cteDogYXV0bzsgbWF4LXdpZHRoOiAxMDAlOyB9XG4gICAgICAgIC5kaWZmLWxpbmUtb2xkIHsgY29sb3I6ICR7Y29sb3JzLnRvb2xEaWZmUmVtb3ZlZH07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgd29yZC13cmFwOiBicmVhay13b3JkOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB9XG4gICAgICAgIC5kaWZmLWxpbmUtbmV3IHsgY29sb3I6ICR7Y29sb3JzLnRvb2xEaWZmQWRkZWR9OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgfVxuICAgICAgICAuZGlmZi1saW5lLWNvbnRleHQgeyBjb2xvcjogJHtjb2xvcnMudG9vbERpZmZDb250ZXh0fTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IH1cbiAgICAgICAgLmVycm9yLXRleHQgeyBjb2xvcjogJHtjb2xvcnMuZXJyb3J9OyBwYWRkaW5nOiAxMnB4IDE2cHg7IH1cbiAgICAgICAgLmJhc2gtc3RhdHVzLndhcm5pbmcgeyBjb2xvcjogJHtjb2xvcnMud2FybmluZ307IH1cbiAgICAgICAgLmJhc2gtc3RhdHVzLmVycm9yIHsgY29sb3I6ICR7Y29sb3JzLmVycm9yfTsgfVxuICAgICAgICAuYmFzaC10cnVuY2F0aW9uLndhcm5pbmcgeyBjb2xvcjogJHtjb2xvcnMud2FybmluZ307IH1cbiAgICAgICAgLmZvb3RlciB7IG1hcmdpbi10b3A6IDQ4cHg7IHBhZGRpbmc6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6ICR7Y29sb3JzLmRpbX07IGZvbnQtc2l6ZTogMTBweDsgfVxuICAgICAgICAuc3RyZWFtaW5nLW5vdGljZSB7IGJhY2tncm91bmQ6ICR7c3RyZWFtaW5nTm90aWNlQmd9OyBwYWRkaW5nOiAxMnB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgbWFyZ2luLWJvdHRvbTogMTZweDsgY29sb3I6ICR7Y29sb3JzLmRpbX07IGZvbnQtc2l6ZTogMTFweDsgfVxuXG4gICAgICAgIC8qIEltYWdlIHN0eWxlcyAqL1xuICAgICAgICAubWVzc2FnZS1pbWFnZXMgeyBtYXJnaW4tYm90dG9tOiAxMnB4OyB9XG4gICAgICAgIC5tZXNzYWdlLWltYWdlIHsgbWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0OiA0MDBweDsgYm9yZGVyLXJhZGl1czogNHB4OyBtYXJnaW46IDRweCAwOyB9XG5cbiAgICAgICAgLyogTWFya2Rvd24gc3R5bGVzICovXG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGgxLCAubWFya2Rvd24tY29udGVudCBoMiwgLm1hcmtkb3duLWNvbnRlbnQgaDMsXG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGg0LCAubWFya2Rvd24tY29udGVudCBoNSwgLm1hcmtkb3duLWNvbnRlbnQgaDYge1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLm1kSGVhZGluZ307XG4gICAgICAgICAgICBtYXJnaW46IDFlbSAwIDAuNWVtIDA7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBoMSB7IGZvbnQtc2l6ZTogMS40ZW07IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGgyIHsgZm9udC1zaXplOiAxLjJlbTsgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBoMyB7IGZvbnQtc2l6ZTogMS4xZW07IH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgcCB7IG1hcmdpbjogMC41ZW0gMDsgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBhIHsgY29sb3I6ICR7Y29sb3JzLm1kTGlua307IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGE6aG92ZXIgeyBvcGFjaXR5OiAwLjg7IH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgY29kZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCR7aXNMaWdodCA/IFwiMCwgMCwgMFwiIDogXCIyNTUsIDI1NSwgMjU1XCJ9LCAwLjEpO1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLm1kQ29kZX07XG4gICAgICAgICAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgcHJlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IHByZSBjb2RlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy5tZENvZGVCbG9ja307XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgICAgfVxuICAgICAgICAuY29kZS1ibG9jay13cmFwcGVyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgICAgfVxuICAgICAgICAuY29kZS1ibG9jay1oZWFkZXIge1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLm1kQ29kZUJsb2NrQm9yZGVyfTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgfVxuICAgICAgICAuY29kZS1ibG9jay1mb290ZXIge1xuICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLm1kQ29kZUJsb2NrQm9yZGVyfTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBibG9ja3F1b3RlIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJHtjb2xvcnMubWRRdW90ZUJvcmRlcn07XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgICAgICAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMubWRRdW90ZX07XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgdWwsIC5tYXJrZG93bi1jb250ZW50IG9sIHtcbiAgICAgICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBsaSB7IG1hcmdpbjogMC4yNWVtIDA7IH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgbGk6Om1hcmtlciB7IGNvbG9yOiAke2NvbG9ycy5tZExpc3RCdWxsZXR9OyB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IGhyIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2NvbG9ycy5tZEhyfTtcbiAgICAgICAgICAgIG1hcmdpbjogMWVtIDA7XG4gICAgICAgIH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgdGFibGUge1xuICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIC5tYXJrZG93bi1jb250ZW50IHRoLCAubWFya2Rvd24tY29udGVudCB0ZCB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2NvbG9ycy5tZENvZGVCbG9ja0JvcmRlcn07XG4gICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgLm1hcmtkb3duLWNvbnRlbnQgdGgge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgke2lzTGlnaHQgPyBcIjAsIDAsIDBcIiA6IFwiMjU1LCAyNTUsIDI1NVwifSwgMC4wNSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgICAgICAubWFya2Rvd24tY29udGVudCBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLyogU3ludGF4IGhpZ2hsaWdodGluZyAoaGlnaGxpZ2h0LmpzKSAqL1xuICAgICAgICAuaGxqcyB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gICAgICAgIC5obGpzLWNvbW1lbnQsIC5obGpzLXF1b3RlIHsgY29sb3I6ICR7Y29sb3JzLnN5bnRheENvbW1lbnR9OyB9XG4gICAgICAgIC5obGpzLWtleXdvcmQsIC5obGpzLXNlbGVjdG9yLXRhZywgLmhsanMtYWRkaXRpb24geyBjb2xvcjogJHtjb2xvcnMuc3ludGF4S2V5d29yZH07IH1cbiAgICAgICAgLmhsanMtbnVtYmVyLCAuaGxqcy1saXRlcmFsLCAuaGxqcy1zeW1ib2wsIC5obGpzLWJ1bGxldCB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhOdW1iZXJ9OyB9XG4gICAgICAgIC5obGpzLXN0cmluZywgLmhsanMtZG9jdGFnLCAuaGxqcy1yZWdleHAgeyBjb2xvcjogJHtjb2xvcnMuc3ludGF4U3RyaW5nfTsgfVxuICAgICAgICAuaGxqcy10aXRsZSwgLmhsanMtc2VjdGlvbiwgLmhsanMtbmFtZSwgLmhsanMtc2VsZWN0b3ItaWQsIC5obGpzLXNlbGVjdG9yLWNsYXNzIHsgY29sb3I6ICR7Y29sb3JzLnN5bnRheEZ1bmN0aW9ufTsgfVxuICAgICAgICAuaGxqcy10eXBlLCAuaGxqcy1jbGFzcywgLmhsanMtYnVpbHRfaW4geyBjb2xvcjogJHtjb2xvcnMuc3ludGF4VHlwZX07IH1cbiAgICAgICAgLmhsanMtYXR0ciwgLmhsanMtdmFyaWFibGUsIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLCAuaGxqcy1wYXJhbXMgeyBjb2xvcjogJHtjb2xvcnMuc3ludGF4VmFyaWFibGV9OyB9XG4gICAgICAgIC5obGpzLWF0dHJpYnV0ZSB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhWYXJpYWJsZX07IH1cbiAgICAgICAgLmhsanMtbWV0YSB7IGNvbG9yOiAke2NvbG9ycy5zeW50YXhLZXl3b3JkfTsgfVxuICAgICAgICAuaGxqcy1mb3JtdWxhIHsgYmFja2dyb3VuZDogcmdiYSgke2lzTGlnaHQgPyBcIjAsIDAsIDBcIiA6IFwiMjU1LCAyNTUsIDI1NVwifSwgMC4wNSk7IH1cbiAgICAgICAgLmhsanMtZGVsZXRpb24geyBjb2xvcjogJHtjb2xvcnMudG9vbERpZmZSZW1vdmVkfTsgfVxuICAgICAgICAuaGxqcy1lbXBoYXNpcyB7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuICAgICAgICAuaGxqcy1zdHJvbmcgeyBmb250LXdlaWdodDogYm9sZDsgfVxuICAgICAgICAuaGxqcy1saW5rIHsgY29sb3I6ICR7Y29sb3JzLm1kTGlua307IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbiAgICAgICAgQG1lZGlhIHByaW50IHsgYm9keSB7IGJhY2tncm91bmQ6IHdoaXRlOyBjb2xvcjogYmxhY2s7IH0gLnRvb2wtZXhlY3V0aW9uIHsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgfSB9XG4gICAgPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGgxPiR7QVBQX05BTUV9IHYke1ZFUlNJT059PC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5TZXNzaW9uOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke2VzY2FwZUh0bWwoZGF0YS5zZXNzaW9uSWQpfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+RGF0ZTo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHtuZXcgRGF0ZShkYXRhLnRpbWVzdGFtcCkudG9Mb2NhbGVTdHJpbmcoKX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPk1vZGVsczo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHtcblx0XHRcdFx0XHRcdFx0QXJyYXkuZnJvbShkYXRhLm1vZGVsc1VzZWQpXG5cdFx0XHRcdFx0XHRcdFx0Lm1hcCgobSkgPT4gZXNjYXBlSHRtbChtKSlcblx0XHRcdFx0XHRcdFx0XHQuam9pbihcIiwgXCIpIHx8IFwidW5rbm93blwiXG5cdFx0XHRcdFx0XHR9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMT5NZXNzYWdlczwvaDE+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+VXNlcjo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHt1c2VyTWVzc2FnZXN9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5Bc3Npc3RhbnQ6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7YXNzaXN0YW50TWVzc2FnZXN9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5Ub29sIENhbGxzOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke3Rvb2xDYWxsc0NvdW50fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDE+VG9rZW5zICYgQ29zdDwvaDE+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+SW5wdXQ6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7ZGF0YS50b2tlblN0YXRzLmlucHV0LnRvTG9jYWxlU3RyaW5nKCl9IHRva2Vuczwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+T3V0cHV0Ojwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke2RhdGEudG9rZW5TdGF0cy5vdXRwdXQudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5DYWNoZSBSZWFkOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke2RhdGEudG9rZW5TdGF0cy5jYWNoZVJlYWQudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5DYWNoZSBXcml0ZTo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHtkYXRhLnRva2VuU3RhdHMuY2FjaGVXcml0ZS50b0xvY2FsZVN0cmluZygpfSB0b2tlbnM8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPlRvdGFsOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4keyhkYXRhLnRva2VuU3RhdHMuaW5wdXQgKyBkYXRhLnRva2VuU3RhdHMub3V0cHV0ICsgZGF0YS50b2tlblN0YXRzLmNhY2hlUmVhZCArIGRhdGEudG9rZW5TdGF0cy5jYWNoZVdyaXRlKS50b0xvY2FsZVN0cmluZygpfSB0b2tlbnM8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPklucHV0IENvc3Q6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZSBjb3N0XCI+JCR7ZGF0YS5jb3N0U3RhdHMuaW5wdXQudG9GaXhlZCg0KX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPk91dHB1dCBDb3N0Ojwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWUgY29zdFwiPiQke2RhdGEuY29zdFN0YXRzLm91dHB1dC50b0ZpeGVkKDQpfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+Q2FjaGUgUmVhZCBDb3N0Ojwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWUgY29zdFwiPiQke2RhdGEuY29zdFN0YXRzLmNhY2hlUmVhZC50b0ZpeGVkKDQpfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+Q2FjaGUgV3JpdGUgQ29zdDo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlIGNvc3RcIj4kJHtkYXRhLmNvc3RTdGF0cy5jYWNoZVdyaXRlLnRvRml4ZWQoNCl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5Ub3RhbCBDb3N0Ojwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWUgY29zdFwiPjxzdHJvbmc+JCR7KGRhdGEuY29zdFN0YXRzLmlucHV0ICsgZGF0YS5jb3N0U3RhdHMub3V0cHV0ICsgZGF0YS5jb3N0U3RhdHMuY2FjaGVSZWFkICsgZGF0YS5jb3N0U3RhdHMuY2FjaGVXcml0ZSkudG9GaXhlZCg0KX08L3N0cm9uZz48L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPkNvbnRleHQgVXNhZ2U6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7Y29udGV4dFVzYWdlVGV4dH08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgJHtzeXN0ZW1Qcm9tcHRIdG1sfVxuICAgICAgICAke3Rvb2xzSHRtbH1cbiAgICAgICAgJHtzdHJlYW1pbmdOb3RpY2V9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VzXCI+XG4gICAgICAgICAgICAke21lc3NhZ2VzSHRtbH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICAgICAgR2VuZXJhdGVkIGJ5ICR7QVBQX05BTUV9IGNvZGluZy1hZ2VudCBvbiAke25ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2JvZHk+XG48L2h0bWw+YDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHVibGljIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydE9wdGlvbnMge1xuXHRvdXRwdXRQYXRoPzogc3RyaW5nO1xuXHR0aGVtZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXhwb3J0IHNlc3Npb24gdG8gSFRNTCB1c2luZyBTZXNzaW9uTWFuYWdlciBhbmQgQWdlbnRTdGF0ZS5cbiAqIFVzZWQgYnkgVFVJJ3MgL2V4cG9ydCBjb21tYW5kLlxuICogQHBhcmFtIHNlc3Npb25NYW5hZ2VyIFRoZSBzZXNzaW9uIG1hbmFnZXJcbiAqIEBwYXJhbSBzdGF0ZSBUaGUgYWdlbnQgc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zIEV4cG9ydCBvcHRpb25zIGluY2x1ZGluZyBvdXRwdXQgcGF0aCBhbmQgdGhlbWUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2Vzc2lvblRvSHRtbChcblx0c2Vzc2lvbk1hbmFnZXI6IFNlc3Npb25NYW5hZ2VyLFxuXHRzdGF0ZTogQWdlbnRTdGF0ZSxcblx0b3B0aW9ucz86IEV4cG9ydE9wdGlvbnMgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuXHQvLyBIYW5kbGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IG9wdGlvbnMgY2FuIGJlIGp1c3QgdGhlIG91dHB1dCBwYXRoIHN0cmluZ1xuXHRjb25zdCBvcHRzOiBFeHBvcnRPcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgPyB7IG91dHB1dFBhdGg6IG9wdGlvbnMgfSA6IG9wdGlvbnMgfHwge307XG5cblx0Y29uc3Qgc2Vzc2lvbkZpbGUgPSBzZXNzaW9uTWFuYWdlci5nZXRTZXNzaW9uRmlsZSgpO1xuXHRpZiAoIXNlc3Npb25GaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGV4cG9ydCBpbi1tZW1vcnkgc2Vzc2lvbiB0byBIVE1MXCIpO1xuXHR9XG5cdGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmMoc2Vzc2lvbkZpbGUsIFwidXRmOFwiKTtcblx0Y29uc3QgZGF0YSA9IHBhcnNlU2Vzc2lvbkZpbGUoY29udGVudCk7XG5cblx0Ly8gRW5yaWNoIHdpdGggZGF0YSBmcm9tIEFnZW50U3RhdGUgKHRvb2xzLCBjb250ZXh0IHdpbmRvdylcblx0ZGF0YS50b29scyA9IHN0YXRlLnRvb2xzLm1hcCgodDogeyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfSkgPT4gKHtcblx0XHRuYW1lOiB0Lm5hbWUsXG5cdFx0ZGVzY3JpcHRpb246IHQuZGVzY3JpcHRpb24sXG5cdH0pKTtcblx0ZGF0YS5jb250ZXh0V2luZG93ID0gc3RhdGUubW9kZWw/LmNvbnRleHRXaW5kb3c7XG5cdGlmICghZGF0YS5zeXN0ZW1Qcm9tcHQpIHtcblx0XHRkYXRhLnN5c3RlbVByb21wdCA9IHN0YXRlLnN5c3RlbVByb21wdDtcblx0fVxuXG5cdGxldCBvdXRwdXRQYXRoID0gb3B0cy5vdXRwdXRQYXRoO1xuXHRpZiAoIW91dHB1dFBhdGgpIHtcblx0XHRjb25zdCBzZXNzaW9uQmFzZW5hbWUgPSBiYXNlbmFtZShzZXNzaW9uRmlsZSwgXCIuanNvbmxcIik7XG5cdFx0b3V0cHV0UGF0aCA9IGAke0FQUF9OQU1FfS1zZXNzaW9uLSR7c2Vzc2lvbkJhc2VuYW1lfS5odG1sYDtcblx0fVxuXG5cdGNvbnN0IGNvbG9ycyA9IGdldFRoZW1lQ29sb3JzKG9wdHMudGhlbWVOYW1lKTsiLCJ0cnVuY2F0ZWQiOnRydWUsInRydW5jYXRlZEJ5IjoiYnl0ZXMiLCJ0b3RhbExpbmVzIjoxNDMyLCJ0b3RhbEJ5dGVzIjo1MjU1Nywib3V0cHV0TGluZXMiOjEzOTUsIm91dHB1dEJ5dGVzIjo1MTE5NywibGFzdExpbmVQYXJ0aWFsIjpmYWxzZSwiZmlyc3RMaW5lRXhjZWVkc0xpbWl0IjpmYWxzZSwibWF4TGluZXMiOjIwMDAsIm1heEJ5dGVzIjo1MTIwMH19LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMxMjAyNDMzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYzdkODZlOGUiLCJwYXJlbnRJZCI6ImYxN2E3YmQ2IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTozMzoyNi42MTZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJMZXQgbWUgcmVhZCB0aGUgcmVzdCBvZiB0aGUgZmlsZSB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdVVCQ2tZSUN4Z0NLa0RwRmoxdzZ3TlBIUWw4d2Z4RnlNdkNpUnhKU0loYU9QWnhiMkxxK3padUpvdk5QTUoxMTJQUXhzNldnd3U0NlFRUG1xb1duLzVPM1IyZ2JGa2gvK2FCRWd5Si84MTArV0pLNU5FVlRJZ2FEQWlLNFNOWWZncnJsQmlaYlNJdzhOWVQrbkVwbGRJd2N3aVJWQk93V0YrT1ZkSFVNR2UySStPZHRJTVQzSXExRnRDbWgwdklUZTVCME9HNUN0MGNLazM4SkdFU0xRZ3FqSVVkdWtycDRkbnhWZkUzdWQyN1ROQm5KcXkydVJocHUrUTlsaU1ZWTl1SnZNVXFrdzBFZUEzaWhlNTJvQTc0WlV2RldKWk1zYW90TzlhOHo5eDVaUGFTdk1Wb2dSZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFNS0g0NzdtYVNQVFRCSnk2Mjk5UWhKIiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sLnRzIiwib2Zmc2V0IjoxMzk1fX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTIwLCJjYWNoZVJlYWQiOjAsImNhY2hlV3JpdGUiOjIyNTk1LCJ0b3RhbFRva2VucyI6MjI3MjMsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDMsImNhY2hlUmVhZCI6MCwiY2FjaGVXcml0ZSI6MC4xNDEyMTg3NSwidG90YWwiOjAuMTQ0MjU4NzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzEyMDI0OTB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI0MDhlZGMzMCIsInBhcmVudElkIjoiYzdkODZlOGUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjMzOjI2LjYyNloiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxTUtINDc3bWFTUFRUQkp5NjI5OVFoSiIsInRvb2xOYW1lIjoicmVhZCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ilx0Y29uc3QgY29sb3JzID0gZ2V0VGhlbWVDb2xvcnMob3B0cy50aGVtZU5hbWUpO1xuXHRjb25zdCBpc0xpZ2h0ID0gaXNMaWdodFRoZW1lKG9wdHMudGhlbWVOYW1lKTtcblx0Y29uc3QgaHRtbCA9IGdlbmVyYXRlSHRtbChkYXRhLCBiYXNlbmFtZShzZXNzaW9uRmlsZSksIGNvbG9ycywgaXNMaWdodCk7XG5cdHdyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgaHRtbCwgXCJ1dGY4XCIpO1xuXHRyZXR1cm4gb3V0cHV0UGF0aDtcbn1cblxuLyoqXG4gKiBFeHBvcnQgc2Vzc2lvbiBmaWxlIHRvIEhUTUwgKHN0YW5kYWxvbmUsIHdpdGhvdXQgQWdlbnRTdGF0ZSkuXG4gKiBBdXRvLWRldGVjdHMgZm9ybWF0OiBzZXNzaW9uIG1hbmFnZXIgZm9ybWF0IG9yIHN0cmVhbWluZyBldmVudCBmb3JtYXQuXG4gKiBVc2VkIGJ5IENMSSBmb3IgZXhwb3J0aW5nIGFyYml0cmFyeSBzZXNzaW9uIGZpbGVzLlxuICogQHBhcmFtIGlucHV0UGF0aCBQYXRoIHRvIHRoZSBzZXNzaW9uIGZpbGVcbiAqIEBwYXJhbSBvcHRpb25zIEV4cG9ydCBvcHRpb25zIGluY2x1ZGluZyBvdXRwdXQgcGF0aCBhbmQgdGhlbWUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0RnJvbUZpbGUoaW5wdXRQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBFeHBvcnRPcHRpb25zIHwgc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gSGFuZGxlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBvcHRpb25zIGNhbiBiZSBqdXN0IHRoZSBvdXRwdXQgcGF0aCBzdHJpbmdcblx0Y29uc3Qgb3B0czogRXhwb3J0T3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID8geyBvdXRwdXRQYXRoOiBvcHRpb25zIH0gOiBvcHRpb25zIHx8IHt9O1xuXG5cdGlmICghZXhpc3RzU3luYyhpbnB1dFBhdGgpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtpbnB1dFBhdGh9YCk7XG5cdH1cblxuXHRjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKGlucHV0UGF0aCwgXCJ1dGY4XCIpO1xuXHRjb25zdCBkYXRhID0gcGFyc2VTZXNzaW9uRmlsZShjb250ZW50KTtcblxuXHRsZXQgb3V0cHV0UGF0aCA9IG9wdHMub3V0cHV0UGF0aDtcblx0aWYgKCFvdXRwdXRQYXRoKSB7XG5cdFx0Y29uc3QgaW5wdXRCYXNlbmFtZSA9IGJhc2VuYW1lKGlucHV0UGF0aCwgXCIuanNvbmxcIik7XG5cdFx0b3V0cHV0UGF0aCA9IGAke0FQUF9OQU1FfS1zZXNzaW9uLSR7aW5wdXRCYXNlbmFtZX0uaHRtbGA7XG5cdH1cblxuXHRjb25zdCBjb2xvcnMgPSBnZXRUaGVtZUNvbG9ycyhvcHRzLnRoZW1lTmFtZSk7XG5cdGNvbnN0IGlzTGlnaHQgPSBpc0xpZ2h0VGhlbWUob3B0cy50aGVtZU5hbWUpO1xuXHRjb25zdCBodG1sID0gZ2VuZXJhdGVIdG1sKGRhdGEsIGJhc2VuYW1lKGlucHV0UGF0aCksIGNvbG9ycywgaXNMaWdodCk7XG5cdHdyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgaHRtbCwgXCJ1dGY4XCIpO1xuXHRyZXR1cm4gb3V0cHV0UGF0aDtcbn1cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMTIwNjYxOH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjM5YTVkNjdhIiwicGFyZW50SWQiOiI0MDhlZGMzMCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6MzQ6MDYuNDk5WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTm93IEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuIExldCBtZSBhbmFseXplOlxuXG4qKlRoZSBmaWxlIGlzIDE0MzIgbGluZXMqKiBhbmQgZG9lczpcbjEuIFNlc3Npb24gcGFyc2luZyAodHdvIGZvcm1hdHM6IHNlc3Npb24tbWFuYWdlciBhbmQgc3RyZWFtaW5nLWV2ZW50cylcbjIuIFRoZW1lIGxvYWRpbmcgYW5kIGNvbG9yIHJlc29sdXRpb25cbjMuIEhUTUwvQ1NTIGdlbmVyYXRpb24gd2l0aCBpbmxpbmUgc3R5bGVzXG40LiBNZXNzYWdlIGZvcm1hdHRpbmcgKHVzZXIsIGFzc2lzdGFudCwgdG9vbCBjYWxscywgZXRjLilcbjUuIE1hcmtkb3duIHJlbmRlcmluZyB3aXRoIGhpZ2hsaWdodC5qcyBzeW50YXggaGlnaGxpZ2h0aW5nXG42LiBVdGlsaXR5IGZ1bmN0aW9ucyAoZXNjYXBlIEhUTUwsIHBhdGggc2hvcnRlbmluZywgZXRjLilcblxuKipJc3N1ZXMvUHJvYmxlbXM6KipcblxuMS4gKipNYXNzaXZlIGlubGluZSBDU1MqKiAtIFRoZSBgZ2VuZXJhdGVIdG1sYCBmdW5jdGlvbiBoYXMgfjMwMCsgbGluZXMgb2YgQ1NTIGVtYmVkZGVkIGFzIGEgdGVtcGxhdGUgc3RyaW5nLiBUaGlzIG1ha2VzIGl0IGhhcmQgdG8gcmVhZCwgbW9kaWZ5LCBhbmQgbWFpbnRhaW4uXG5cbjIuICoqSGFyZC1jb2RlZCBjb2xvcnMgdGhyb3VnaG91dCoqIC0gRGVzcGl0ZSBoYXZpbmcgYSBgVGhlbWVDb2xvcnNgIG9iamVjdCwgdGhlcmUgYXJlIHN0aWxsIG1hbnkgaGFyZGNvZGVkIGNvbG9yIGNhbGN1bGF0aW9ucyBsaWtlIGByZ2JhKCR7aXNMaWdodCA/IFwiMCwgMCwgMFwiIDogXCIyNTUsIDI1NSwgMjU1XCJ9LCAwLjEpYCBzY2F0dGVyZWQgaW4gdGhlIENTUyB0ZW1wbGF0ZS5cblxuMy4gKipUaWdodCBjb3VwbGluZyoqIC0gUGFyc2luZywgdGhlbWUgcmVzb2x1dGlvbiwgSFRNTCBnZW5lcmF0aW9uLCBhbmQgbWVzc2FnZSBmb3JtYXR0aW5nIGFyZSBhbGwgaW4gb25lIGZpbGUgd2l0aCBubyBjbGVhciBzZXBhcmF0aW9uLlxuXG40LiAqKk5vIHRyZWUgdmlzdWFsaXphdGlvbiB5ZXQqKiAtIElzc3VlICMzNzUgd2FudHMgYSBjb2xsYXBzaWJsZSBzaWRlYmFyIGZvciB0cmVlIG5hdmlnYXRpb24sIHdoaWNoIHdpbGwgYWRkIGV2ZW4gbW9yZSBjb21wbGV4aXR5LlxuXG41LiAqKlBSICMzODcqKiB3YW50cyB0aGVtZS1vdmVycmlkYWJsZSBjb2xvcnMgZm9yIHRoZSBzeXN0ZW0gcHJvbXB0IGJhY2tncm91bmQgYW5kIG90aGVyIGVsZW1lbnRzLiBUaGUgY3VycmVudCBhcHByb2FjaCBvZiBjb21wdXRpbmcgZGVyaXZlZCBjb2xvcnMgbGlrZSBgY29tcGFjdGlvbkJnYCwgYHN5c3RlbVByb21wdEJnYCwgZXRjLiBpcyBmcmFnaWxlLlxuXG42LiAqKkNvZGUgZHVwbGljYXRpb24qKiAtIFRoZSBgVGhlbWVDb2xvcnNgIGludGVyZmFjZSBsaXN0cyB+MzUgY29sb3IgcHJvcGVydGllcywgYnV0IHRoZW4gdGhlIGRhcmsvbGlnaHQgZGVmYXVsdHMgcmVwZWF0IGFsbCBvZiB0aGVtLlxuXG4qKlBvdGVudGlhbCBJbXByb3ZlbWVudHM6KipcblxuMS4gKipDU1MgYXMgYSBzZXBhcmF0ZSB0ZW1wbGF0ZSoqIC0gRXh0cmFjdCBDU1MgdG8gaXRzIG93biBmaWxlL2Z1bmN0aW9uIHdpdGggQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzICh2YXJpYWJsZXMpIGZvciBjb2xvcnMuIFRoZSB0aGVtZSBjb3VsZCBqdXN0IHNldCBgLS1jb2xvci1hY2NlbnRgLCBgLS1jb2xvci1ib3JkZXJgLCBldGMuLCBhbmQgdGhlIENTUyB1c2VzIGB2YXIoLS1jb2xvci1hY2NlbnQpYC5cblxuMi4gKipTcGxpdCB0aGUgZmlsZSoqOlxuICAgLSBgZXhwb3J0LWh0bWwvcGFyc2UudHNgIC0gU2Vzc2lvbiBwYXJzaW5nIGxvZ2ljXG4gICAtIGBleHBvcnQtaHRtbC90aGVtZS50c2AgLSBUaGVtZSBsb2FkaW5nIGFuZCBjb2xvciByZXNvbHV0aW9uXG4gICAtIGBleHBvcnQtaHRtbC9mb3JtYXQudHNgIC0gTWVzc2FnZS90b29sIGZvcm1hdHRpbmcgZnVuY3Rpb25zXG4gICAtIGBleHBvcnQtaHRtbC9yZW5kZXIudHNgIC0gTWFpbiBIVE1MIGdlbmVyYXRpb25cbiAgIC0gYGV4cG9ydC1odG1sL2Nzcy50c2AgLSBDU1MgZ2VuZXJhdGlvblxuXG5JIHNlZSBhIG1vZHVsYXIgYXBwcm9hY2ggdGhhdCBicmVha3MgZG93biB0aGUgbW9ub2xpdGhpYyBmaWxlIGludG8gc3BlY2lhbGl6ZWQgbW9kdWxlcy4gVGhpcyBzdHJhdGVneSBzZXBhcmF0ZXMgY29uY2VybnMsIG1ha2luZyBlYWNoIGNvbXBvbmVudCBtb3JlIGZvY3VzZWQgYW5kIGVhc2llciB0byBtYWludGFpbi4gQnkgY3JlYXRpbmcgZGlzdGluY3QgZmlsZXMgZm9yIHBhcnNpbmcsIHRoZW1pbmcsIGZvcm1hdHRpbmcsIHJlbmRlcmluZywgYW5kIENTUyBnZW5lcmF0aW9uLCB3ZSBjYW4gaW1wcm92ZSBjb2RlIG9yZ2FuaXphdGlvbiBhbmQgcmVhZGFiaWxpdHkuXG5cblRoZSBwcm9wb3NlZCBzdHJ1Y3R1cmUgYWxsb3dzIGZvciBtb3JlIGdyYW51bGFyIGNvbnRyb2wgYW5kIGVhc2llciBmdXR1cmUgZW5oYW5jZW1lbnRzLiBFYWNoIG1vZHVsZSBjYW4gYmUgZGV2ZWxvcGVkLCB0ZXN0ZWQsIGFuZCBtb2RpZmllZCBpbmRlcGVuZGVudGx5LCByZWR1Y2luZyB0aGUgcmlzayBvZiB1bmludGVuZGVkIHNpZGUgZWZmZWN0cyB3aGVuIG1ha2luZyBjaGFuZ2VzLlxuXG5MZXZlcmFnaW5nIENTUyBjYWxjdWxhdGlvbnMgZm9yIGNvbG9yIGRlcml2YXRpb24gb2ZmZXJzIGEgbW9yZSBkeW5hbWljIGFuZCBmbGV4aWJsZSBhcHByb2FjaCB0byBzdHlsaW5nLiBCeSB1c2luZyBgY29sb3ItbWl4KClgIG9yIGBoc2woKWAgYWRqdXN0bWVudHMsIHdlIGNhbiBnZW5lcmF0ZSBjb2xvciB2YXJpYXRpb25zIHByb2dyYW1tYXRpY2FsbHkgd2l0aGluIHRoZSBDU1MgaXRzZWxmLCByZWR1Y2luZyB0aGUgbmVlZCBmb3IgY29tcGxleCBKYXZhU2NyaXB0IGNvbG9yIG1hbmlwdWxhdGlvbi5cblxuVGhlIHRlbXBsYXRlIGRlc2lnbiBlbXBoYXNpemVzIHN0cnVjdHVyYWwgc2VwYXJhdGlvbiwgd2l0aCBDU1MgdmFyaWFibGVzIGhhbmRsaW5nIHN0eWxpbmcgY29uY2VybnMuIFRoaXMgYXBwcm9hY2ggY3JlYXRlcyBhIGNsZWFuZXIsIG1vcmUgbWFpbnRhaW5hYmxlIEhUTUwgc3RydWN0dXJlIHRoYXQgZGVjb3VwbGVzIGNvbnRlbnQgZnJvbSBwcmVzZW50YXRpb24uXG5cbkZvciB0aGUgdHJlZSBzaWRlYmFyIGltcGxlbWVudGF0aW9uLCB3ZSdsbCBuZWVkIGEgY29tcHJlaGVuc2l2ZSBzdHJhdGVneSBpbnZvbHZpbmcgcGFyc2luZywgSFRNTCBzdHJ1Y3R1cmUsIHJlc3BvbnNpdmUgQ1NTLCBhbmQgaW50ZXJhY3RpdmUgSmF2YVNjcmlwdC4gVGhpcyBtdWx0aWZhY2V0ZWQgYXBwcm9hY2ggZW5zdXJlcyBhIHJvYnVzdCBhbmQgZmxleGlibGUgc2lkZWJhciBmZWF0dXJlIHRoYXQgY2FuIGFkYXB0IHRvIGRpZmZlcmVudCBjb250ZW50IGFuZCB1c2VyIGludGVyYWN0aW9ucy4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVyWVhDa1lJQ3hnQ0trQlNZUU1MSmJRMTZDSU5tSVFQTmN4cVRyT0dUdkZ3d1FtZ08yUDBlZHpZOVpHdU1TMm1UTFNEVEJmTFlCK2paSVhUdHdUWnhrQmdYdUk4MFJ0REdJSmRFZ3d3N2ptOTluV28vbENkTldRYURNdFAxVjdXSVIxbmNiMUtGU0l3c2o0My9UL3JWeU54N09QN2lDTU0zeWxwMHN1QVhGdHQreE1sWGhHY2YyQVp0cVh5M0JrMWx1YVZ3dWgyNWV6ektwMFc4SjRLd0VaWVk0L3RXT0xNcUZUVnBxKzIyZmV2QThtb2tJVzY2UTh5b2FneU9PUTZRNXRCcEZOK0pXNEN0aXRKY2xFc0ZuTVNjY2cyQXRtVGtOd1JHOXY5V3BqN283bCtoaW40d2dxYTQ3Wm9IdndMRm92a1M0TW5QMEwyY0xjb3NrYVd4S0NJNzQ5MFV2UHhKUnh0MjVnb3VBS0RiRUxteGJSazhtd2tvOHlseXhGWTE2aUZpM0syYnp4b0txTTJqQ0Z2M0Vva0g1RUM5VUx2MUNaandsVEw3SXJ2V3VWUjJ6b3JYODEyU052OWRaVzM3WlRpZXNPSmFMdVZFNHg3dEdVbVY2dnJNV2VxVkxSSFVBZGQ4VUlFQ01idDdsZk9Zc1lnU2w3aEV3dkg5dFZvdVhic1R0NHRBN2hPbWNGcDJHVlhTTS9VcUQ1ZnN4ZHVIemlxWjZjclpHY1A0V3N3TTcrRVZZbmRVZFdrL05vaFVtMFd6ODQ2UGRUQWgrNGVFMEFJVGdGdzFBMm9Fd2lsRWNLZDRQZmNaR05MRC84Nld3SmQ1eGc1SWEzSDFpYm54OFltTFZMM1hOYVpKUVo1S3VmMjh1MUYwLzdyUFRmMGxSTU9qV0dJYlBEa1Z3NDNLNU9zWTBQeWtZQVExY3d0blU2Umo3ZU1Lblh4VmwxUjJvMnJNcWZEaUNaMEJLakZLbG5UbnN1UW56ZENuaWVoaDRnOFdOS2pCcmZ3ZlZiQUptcXpKdkQxcXhZa0ZhNFlBYUN6cW9Pd2VwWjdCK3BGdXhWdEQ0ZGV3QXd0dytOeTQ5bCt4U1Z3Y3hXMzNFUUlLamJyOVBJVnBQQk05Q2hFT25aWTE2MjM4dUVXMTZqUUpuZ0Q5SmdQMGdsaXdXTzZMOERJSUlOUGlIZVM5Nlp0dE9jVFJadFY2Y1B3aElFMHk1eFEzY04xUlBaSGhsd2doTU5nY3p5V0VveXlSVnBiaTJyWE5SUlMvdUJ5WlNqZVRub09WdzJWa1ZhKzFpZC9nOUVmR3lncmxWRXhCRllMQ2NaYndsdWxRM1I5RDV0aHZ4NFIvY0VjL3NIQ3ZsZ3paUEJ4VmRONFNmRE5EbWMvYy9WWFF4aWRIcVhFWVgzZEVBZ1ZVKzUvK01UdDVNRU14UEM3ZTBsMFF3U1ZwemIxNXQ5ZFVQT3NwOE41RjI3K0oweDd0aTFRdzViR3ZqU2oyOEdLU3B3OTUyMzJITXN6bjFiTzR6K1VpaDk1YWRlWjB5bkZobkNpQjNMSlg0OHVGZGdnTG5wRGNLQldkYlhqdHQ1TDJBbXV5V1ZYaE8xUFdWZEN5eDhSOGhTVjN5Q1FWY3pyNW9qNHNyWU5aam5tekl1R1NydmtFbldyTkJpV0NrcVhWcW1kSUM2UVRRdWQ2czNYU1VmNU85ZzRYaXBiTXlYVE0xOGNicDBIWmVNdEQvR2ZNekxOLytHYjBIWHg0U2lVWnhXTnpHK01GRmNQT0tndjJvRE41emtnUVAxV0hUY1VDWlBpVjJVRGw1UXJoOTFHSmpoZTJNeWlWUkM1dXhxTHYxWGI1RU45Zmdmb2RsOTRrSzNVeTFuSFJ2NUxnNVA2dmF6YjdDNk1ZWWlGR2JSRVlSVDFRdWEzVm1tNzlhVk9pZy9mQTZwSW9sZkI4eCswNzEvelgxTktoUXBwdWpMQ3RlODExdlJGcGs1bVAwV1NhZXQ0N2tJbmlxbjBDM1prME8xMnhFaUlHQ2hkbWljdEo1WmpsZFZ1MmR0UVJxV1VJTUFtVFR5LzY0TUpoQ3Vkbi9pUUs4dVkrZUQ0YVYvWlB1c0w5N0R1SVBkRTd6dUZ1NjNsbzJ5MFk3S2dKVGFvN0J3V1lFWVFnWUw3V3RWQllPSVpVQm5tYXVvY0tDVC8veXJsMGl4UkJ1dTYwMEkyUmpueTBtVE9BUWtDMmxpSXJTMUpGMXVNVXZDekQxbGtPQW9Fdktyb2VRS0xxbHNZN0FmVUh6c29CRE5pQW1CVUZvRmVIRGxjTjFCUThhLzQwYXVEQzRFR0k4NFFnL0NkVWhhN1VjUkljK1ZaQnhLejhkbUpMM1JWK0RWLzkweUJJODg3Z09aOVk1V0lLR3RUUlpYVnVKU01PdGk3R2FYZXo0M0JaSkJiYU5qWjkvSFRMeVhrMnpoYllVUGtBUUZWWjFZQkdjK1pYdUh6dU52WmlYQUkwQ2dvKzJuWDlxV0hrRWhIVHNUNFU4Y1RrRUlWRVRsMUwyMGUzNTlMZ1ROZ29DMkJKL05CN3pMVnJCQlZPK1VCN2ZEVHhNdDRhdGxwSEdpS2tuRW1IZFFaT2RpU0loQm82Nmw1MDYvRzB6a3EzNkRwdFgvaFdRbVczOHlmWXRsZm9yVHFzbVYwblhmWERyVStyYnVnOGJTRTAxZWpWaGZzZVhocVBXRmdST3M3Y3M5VENUL3pzbWh2V1RlVnR6T2lEdXNSNmlaSW94dFNrUFQvM0RBZi9ScEhSS1dzait3ckZKc3hjSVp1OWlCMUZTWmdRczZSU0c2NjA2RjlsMFJYWE1Ocko2bElpR0d2eEFsK3hLK0RGVHhjUnA3V1FJbXgzUEQ4V3VqUkVWb2kzdVRkclU3WTk4aTlrRGZjSXZ4bHU2bzEzRnkwZUFZVmVRYjhtQ2IraEJIREZIa2h6Y3dHWWZ5OUQzUWhtVWNvTXFTU0pNOXVCL0JsVDdZRVhwdHlRV1N6OC8vRXg1S05ZR3l5TmhwUjZuS2ZjbTJiQm5GbVlDbFJQNSswRkhqTFR0NXZOY1hDNFVpYW9MUGs2YmxwaU01LzFzdVpEMzJ6QWpvczNEbUtmWXp6RWRjSkRSdjF6T2M0MXJLcGttSmZJV1JpKy9UMGZlUktCenFseTR0ZHl5eWNDUmdVR05lMnVsbnprbTRFM2t2a3dTRVNSd1ZmUkJnNlVCRW5iMFdvblg5S0hUc2ttNWFrNDhxdzV1TFUrQ0lmeTd6em1RdU15QW9YVGRGdVYxa1hsQTVNUnZpY29IR3d0dk1KWUtHcWlLamswVy9YMlZjMENpVjgvTmJxYkpUS1lRcnNEYXQ1a1Y5WHQ5cjFXalFYODBWUkYwMEJjZ1grcGZSUys4Z0c5M1pWd2xtRjNnVm1yeEswTnpHTmF0RnBCTk5jdWJvSFJHUmZCTTlmbUpZWTcwbHBTejRyRHl5aGNubGFpcDQ2cTBUbGF0Tlg2WmZDK2ZVd3BYWGRBaGtKMHVyamVpdUFpeWVrNlMxWHY2VXl5RGNqWU1HSmFLdFY0amlTNmJiQ3VqTkNidnE5M05tb2UyblJZWlhKdm8yMlpNZThFRWdIRXN3eHExejl5ZlI5SEs3Tm5GVFZlKy9wVlh1STROZVdyN2pyZ1JUM3lWOHQ2YmZraXF3ZW9LRzVzQUdVV01mazkxaytxMGtFSTdSNXdPcHRKRmc2SFo2dSszRGYrb2NWMXhjK3R4bFJOSGFOZGI1UzRlcitoT25UaFdKT0tuRVd2Q3dMZzBVeWpWbjNkUGdOV0J1Y1FwdXdmcFRWWFFLbVlWQU9od2tXYWNaeHdxelJhblRjSXVzdlhGbmZQZENnSnZQejRCbG9mcGVOZ0lOOWc2bm1zREQ1TDlVT1dBanoveXNBMVVmcDdFWWdLc2RRZmE3YkEwODNLZFBTUjhva2Ywa2dsQ1UyUC9kSytYNGFqYXlsR1RvRTM0UTFPeFoyTEJzQ2FOMEh5S0V3aEppNXYwVXF5N0dNSzVuVS91TjRBVlBWTVA2ZXRkV0NpbHlycDd0a1YxREcwWVkyQmpCaWlPKzVVMGVxOHdYZ2NPR0gyTXQwS0RoNHpabEVuQ3NEbVFWSmJlSTBtT1Bvb3grcGVJMGdZeEFiQTVMSk9wQThxMWdsNGplOGFneFJjSDBwQlJmL1FZZHBOWUwrZjBBK2VQd3NIcEcrU0xKRDNCSW9kS2VSQkhXdFl4VWprVFE4T3hTaTJ4V3A0aWN4aEdNMTFEMkVPYU0yeVE0Mlg0OGJTM1NaeUdpdjVhYVNOdnNFeHNFWVNRWFZVYnpub0QrQ3RrOEpZMGg3UlJ4MzZocEh3K2tDK2lYb2V1UW5RM3RvMkxkUFBLNzh0c3YwSFZ4VTNQNXo3WDVFWTFJRWJySFFNTkFoRGFPUHg3dWxQUEFvbDA0bk5wREFHREg0aERjbnNjRlI0blRicFRCRGJCMFRvRE45QVcvNGhyaHlqd2Q4WlN2TG03ZW1jUktMV2JFWGVyQjZXUldBRDduaEl4c0djWmgwa0EvN1BlUVQzcWNKdVQyeVBNcTl6dDZ6NWVOeDJNVkFqTDNJN215aTQ5SG9nd0NmQisrdHlkV1JKQ1RHL3M5ZCtrTzMrMVVjZkljN255YjVDZHF5TUxhR1lqa2FmbEpiaVVxa3pWVTdES2kwNTVFc1ZZT0J4Nm9yVE5HallMcTFRTmN5N2dPSkdaWFVaVUVDekNVRk5NVll0THlsaDFiOHpvOFZzcWI2VFpZa0MvWWUrODdIbHhJSnBTZTJSNDFkTS9FcHM4S1ZFVGRsWjZEQXoyWWNjblFiZGRUUDBPYzJPTEVYNXE0L2QyOXVsU3NxbmpmamZWdkszc3pvbFlNYnRHdFFCQ3lGeERNOG1PUFUwdGQ3a3h0elpHaDNSSUJ0WU5oNUhCZnBOTHJjRmhMQTUrVWJQMnNUZGllVTc4UDcrdXFESjdYWHZsQ0JFZm9IVjFjbi9lT2FvdUp6MTc3Q2VHWTZhNVcxVDFUcFdGTGZTTzdqcjZYQ29DZ1pwRnQyZWx0NXJjSDhHNXp1Qm5memdMYW5sSnhWNGdTZGgxSnU1MkhBbENkZGtFbmo0dUdDWng5TnFpK2JnY240OUZLcnJRUkxNaTRidXIxRW9pWWZVck9sSWQrZEtYMTJiMWdFdnJld0JXNm8vUEtJQk9BcjdQUEU3R2RIWFFGWm9idEFkclJnY3VtelBtd052WW9reXRCdzZWanhTelordXVKcGRKbkt2cFFwSVdza01CZ0FraGx1aS9yU21ud1BwbEx3YUJ0MUdIdys5QmdCIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJOb3cgSSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUuIExldCBtZSBzdW1tYXJpemUgd2hhdCBJIGZvdW5kLlxuXG4tLS1cblxuIyMgQW5hbHlzaXNcblxuKipUaGUgZmlsZSBpcyAxNDMyIGxpbmVzKiogYW5kIGhhbmRsZXMgdG9vIG1hbnkgY29uY2VybnMgaW4gb25lIHBsYWNlOlxuXG4xLiAqKlNlc3Npb24gcGFyc2luZyoqICh0d28gZm9ybWF0czogc2Vzc2lvbi1tYW5hZ2VyIGFuZCBzdHJlYW1pbmctZXZlbnRzKVxuMi4gKipUaGVtZSBsb2FkaW5nKiogYW5kIGNvbG9yIHJlc29sdXRpb24gZnJvbSBKU09OIGZpbGVzXG4zLiAqKkhUTUwgZ2VuZXJhdGlvbioqIHdpdGggfjMwMCBsaW5lcyBvZiBpbmxpbmUgQ1NTXG40LiAqKk1lc3NhZ2UgZm9ybWF0dGluZyoqICh1c2VyLCBhc3Npc3RhbnQsIHRvb2xzLCBkaWZmcywgZXRjLilcbjUuICoqTWFya2Rvd24gcmVuZGVyaW5nKiogd2l0aCBoaWdobGlnaHQuanMgc3ludGF4IGhpZ2hsaWdodGluZ1xuNi4gKipVdGlsaXR5IGZ1bmN0aW9ucyoqIChlc2NhcGVIdG1sLCBzaG9ydGVuUGF0aCwgZXRjLilcblxuIyMjIFByb2JsZW1zXG5cbnwgSXNzdWUgfCBEZXNjcmlwdGlvbiB8XG58LS0tLS0tLXwtLS0tLS0tLS0tLS0tfFxufCAqKklubGluZSBDU1Mgc291cCoqIHwgVGhlIGBnZW5lcmF0ZUh0bWxgIGZ1bmN0aW9uIGhhcyB+MzAwIGxpbmVzIG9mIENTUyBlbWJlZGRlZCBpbiBhIHRlbXBsYXRlIHN0cmluZy4gSGFyZCB0byByZWFkLCBpbXBvc3NpYmxlIHRvIGxpbnQsIGFuZCBjaGFuZ2VzIGFyZSBlcnJvci1wcm9uZS4gfFxufCAqKkhhcmRjb2RlZCBkZXJpdmVkIGNvbG9ycyoqIHwgRGVzcGl0ZSBgVGhlbWVDb2xvcnNgLCB0aGVyZSBhcmUgc3RpbGwgbWFueSBhZC1ob2MgY29tcHV0YXRpb25zIGxpa2UgYHJnYmEoJHtpc0xpZ2h0ID8gXCIwLCAwLCAwXCIgOiBcIjI1NSwgMjU1LCAyNTVcIn0sIDAuMSlgIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHxcbnwgKipUaGVtZSBjb2xvcnMgYmxvYXQqKiB8IDM1KyBjb2xvciBwcm9wZXJ0aWVzIGluIGBUaGVtZUNvbG9yc2AsIHdpdGggdGhlIGVudGlyZSBsaXN0IGR1cGxpY2F0ZWQgaW4gbGlnaHQvZGFyayBkZWZhdWx0cyB8XG58ICoqUFIgIzM4NyBwYWluKiogfCBBZGRpbmcgbmV3IHRoZW1lLW92ZXJyaWRhYmxlIGNvbG9ycyAobGlrZSBzeXN0ZW0gcHJvbXB0IGJhY2tncm91bmQpIHJlcXVpcmVzIHRvdWNoaW5nIDQrIHBsYWNlczogaW50ZXJmYWNlLCBsaWdodCBkZWZhdWx0cywgZGFyayBkZWZhdWx0cywgQ1NTIHRlbXBsYXRlLCBhbmQgdGhlIHJlc29sdmVyIHxcbnwgKiojMzc1ICh0cmVlIHNpZGViYXIpKiogfCBBZGRpbmcgdGhpcyBmZWF0dXJlIHRvIHRoZSBjdXJyZW50IHN0cnVjdHVyZSB3b3VsZCBiZSBhIG5pZ2h0bWFyZSB8XG5cbi0tLVxuXG4jIyBQcm9wb3NhbDogQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzICsgRmlsZSBTcGxpdFxuXG4jIyMgMS4gVXNlIENTUyBDdXN0b20gUHJvcGVydGllcyAoVmFyaWFibGVzKVxuXG5JbnN0ZWFkIG9mIGludGVycG9sYXRpbmcgY29sb3JzIGludG8gQ1NTIHN0cmluZ3M6XG5cbmBgYHR5cGVzY3JpcHRcbi8vIEN1cnJlbnQgKGJhZClcbmAudXNlci1tZXNzYWdlIHsgYmFja2dyb3VuZDogJHtjb2xvcnMudXNlck1lc3NhZ2VCZ307IH1gXG5cbi8vIFByb3Bvc2VkIChnb29kKVxuYDpyb290IHsgLS11c2VyLW1lc3NhZ2UtYmc6ICR7Y29sb3JzLnVzZXJNZXNzYWdlQmd9OyB9YFxuYC51c2VyLW1lc3NhZ2UgeyBiYWNrZ3JvdW5kOiB2YXIoLS11c2VyLW1lc3NhZ2UtYmcpOyB9YFxuYGBgXG5cbkJlbmVmaXRzOlxuLSBDU1MgYmVjb21lcyBzdGF0aWMgKGNhbiBiZSBhIHNlcGFyYXRlIGZpbGUgb3IgY29uc3RhbnQpXG4tIFRoZW1lIGNvbG9ycyBhcmUgaW5qZWN0ZWQgb25jZSBhdCB0aGUgdG9wXG4tIERlcml2ZWQgY29sb3JzIGNhbiB1c2UgQ1NTIGBjb2xvci1taXgoKWAgaW5zdGVhZCBvZiBKUyBjb21wdXRhdGlvblxuLSBGdXR1cmU6IGNsaWVudC1zaWRlIHRoZW1lIHN3aXRjaGluZyBiZWNvbWVzIHBvc3NpYmxlXG5cbiMjIyAyLiBTcGxpdCB0aGUgRmlsZVxuXG5gYGBcbmV4cG9ydC1odG1sL1xu4pSc4pSA4pSAIGluZGV4LnRzICAgICAgICAgICAjIFB1YmxpYyBBUEkgKGV4cG9ydFNlc3Npb25Ub0h0bWwsIGV4cG9ydEZyb21GaWxlKVxu4pSc4pSA4pSAIHBhcnNlLnRzICAgICAgICAgICAjIHBhcnNlU2Vzc2lvbkZpbGUsIGRldGVjdEZvcm1hdCwgZXRjLlxu4pSc4pSA4pSAIHRoZW1lLnRzICAgICAgICAgICAjIFRoZW1lQ29sb3JzLCBsb2FkVGhlbWVKc29uLCBnZXRUaGVtZUNvbG9yc1xu4pSc4pSA4pSAIGZvcm1hdC1tZXNzYWdlLnRzICAjIGZvcm1hdE1lc3NhZ2UsIGZvcm1hdFRvb2xFeGVjdXRpb24sIGV0Yy5cbuKUnOKUgOKUgCByZW5kZXIudHMgICAgICAgICAgIyBnZW5lcmF0ZUh0bWwgKGFzc2VtYmxlcyB0aGUgcGFnZSlcbuKUlOKUgOKUgCBzdHlsZXMudHMgICAgICAgICAgIyBDU1MgYXMgYSB0ZW1wbGF0ZSBzdHJpbmcgd2l0aCB2YXIoKSByZWZlcmVuY2VzXG5gYGBcblxuIyMjIDMuIFNpbXBsaWZ5IFRoZW1lIENvbG9yc1xuXG5JbnN0ZWFkIG9mIDM1KyBleHBsaWNpdCBjb2xvcnMsIHVzZSBhIHNtYWxsZXIgY29yZSBzZXQgKyBDU1MgZm9yIGRlcml2YXRpb25zOlxuXG5gYGB0eXBlc2NyaXB0XG4vLyBDb3JlIHRoZW1lIGNvbG9ycyAobWF5YmUgMTAtMTUpXG5pbnRlcmZhY2UgVGhlbWVDb2xvcnMge1xuICBhY2NlbnQ6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBtdXRlZDogc3RyaW5nO1xuICBzdWNjZXNzOiBzdHJpbmc7XG4gIGVycm9yOiBzdHJpbmc7XG4gIHdhcm5pbmc6IHN0cmluZztcbiAgLy8gLi4uXG59XG5cbi8vIERlcml2ZWQgY29sb3JzIHZpYSBDU1Ncbi50b29sLXN1Y2Nlc3MtYmcgeyBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tc3VjY2VzcykgMTUlLCB0cmFuc3BhcmVudCk7IH1cbi50b29sLWVycm9yLWJnIHsgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWVycm9yKSAxNSUsIHRyYW5zcGFyZW50KTsgfVxuYGBgXG5cbiMjIyA0LiBQcmVwYXJlIGZvciBUcmVlIFNpZGViYXIgKCMzNzUpXG5cblRoZSBzcGxpdCBzdHJ1Y3R1cmUgbWFrZXMgaXQgZWFzaWVyIHRvIGFkZDpcbi0gYGZvcm1hdC10cmVlLnRzYCBmb3IgdHJlZSBIVE1MIGdlbmVyYXRpb25cbi0gQWRkaXRpb25hbCBDU1MgaW4gYHN0eWxlcy50c2AgZm9yIHNpZGViYXIgbGF5b3V0XG4tIEEgc21hbGwgSlMgc25pcHBldCBmb3IgdHJlZSBpbnRlcmFjdGlvbiAoY29sbGFwc2UvZXhwYW5kKVxuXG4tLS1cblxuIyMgUXVpY2sgV2luIEFsdGVybmF0aXZlXG5cbklmIGEgZnVsbCByZXdyaXRlIGlzIHRvbyBtdWNoIHJpZ2h0IG5vdywgYSAqKnNtYWxsZXIgcmVmYWN0b3IqKiBjb3VsZDpcblxuMS4gRXh0cmFjdCBDU1MgdG8gYSBgZ2VuZXJhdGVTdHlsZXMoY29sb3JzOiBUaGVtZUNvbG9ycywgaXNMaWdodDogYm9vbGVhbik6IHN0cmluZ2AgZnVuY3Rpb25cbjIuIE1vdmUgcGFyc2luZyB0byBhIHNlcGFyYXRlIGZpbGVcbjMuIEtlZXAgdGhlIHJlc3QgYXMtaXNcblxuVGhpcyByZWR1Y2VzIHRoZSB3b3JzdCBvZmZlbmRlciAoaW5saW5lIENTUyBpbiBgZ2VuZXJhdGVIdG1sYCkgd2hpbGUgcHJlc2VydmluZyBzdHJ1Y3R1cmUuXG5cbi0tLVxuXG5XaGF0IGRpcmVjdGlvbiBhcHBlYWxzIHRvIHlvdT8gRnVsbCByZXN0cnVjdHVyZSwgb3IgaW5jcmVtZW50YWwgZXh0cmFjdGlvbj8ifV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNzU1LCJjYWNoZVJlYWQiOjIyNTk1LCJjYWNoZVdyaXRlIjo1NDYsInRvdGFsVG9rZW5zIjoyNDkwNCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjA0Mzg3NTAwMDAwMDAwMDAwNCwiY2FjaGVSZWFkIjowLjAxMTI5NzUsImNhY2hlV3JpdGUiOjAuMDAzNDEyNSwidG90YWwiOjAuMDU4NjI1MDAwMDAwMDAwMDAzfX0sInN0b3BSZWFzb24iOiJzdG9wIiwidGltZXN0YW1wIjoxNzY3MjMxMjA2NjI3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiN2EyMzYwNmQiLCJwYXJlbnRJZCI6IjM5YTVkNjdhIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTozNjo1OC4wMjNaIiwibWVzc2FnZSI6eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Im9rLCBmb3Igc2Vzc2lvbiBmaWxlcyBhbmQgdGhlbWVzLlxuXG53aHkgZG9uJ3Qgd2UgcmV1c2Ugb3VyIEBwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL3RoZW1lLnRzID8gdXNlIHRoZSBleGFjdCBzYW1lIGNvbG9yIHRva2Vucz9cblxuZm9yIHNlc3Npb24gZmlsZXM6IHdlIGhhdmUgU2Vzc2lvbk1hbmFnZXIsIHdoaWNoIGkgYmVsaWV2ZSB3ZSBjb3VsZCB1c2UgdG8gZGVkdXBsaWNhdGUgYSBsb3Qgb2YgY29kZT8gYW5kIGl0IGFsc28gaGVscHMgd2l0aCB0aGUgdHJlZSBzaGl0P1xuXG53ZSBtaWdodCB3YW50IHRvIHJlbW92ZSB0aGUgc3RyZWFtaW5nLWV2ZW50cyBzdXBwb3J0IHBvc3NpYmx5LCBkdW5ubywgd2FudCB0byBzbGltIHRoaXMgc2hpdCBkb3duLiJ9XSwidGltZXN0YW1wIjoxNzY3MjMxNDE4MDIwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiY2ViODBlMWQiLCJwYXJlbnRJZCI6IjdhMjM2MDZkIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTozNzowMy43MDhaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgdXNlciB3YW50cyBtZSB0bzpcbjEuIExvb2sgYXQgdGhlIGV4aXN0aW5nIHRoZW1lLnRzIHRvIHNlZSBpZiB3ZSBjYW4gcmV1c2UgdGhvc2UgY29sb3IgdG9rZW5zXG4yLiBMb29rIGF0IFNlc3Npb25NYW5hZ2VyIHRvIHNlZSBpZiB3ZSBjYW4gcmV1c2UgaXQgZm9yIHBhcnNpbmcvdHJlZSBzdXBwb3J0XG4zLiBDb25zaWRlciByZW1vdmluZyBzdHJlYW1pbmctZXZlbnRzIGZvcm1hdCB0byBzaW1wbGlmeVxuXG5MZXQgbWUgcmVhZCBib3RoIGZpbGVzLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXFVRENrWUlDeGdDS2tEMTMvTUlZMG5GeUtjUzZEcEpUVjJRaUJ3Q3k5eDZ4NFlRVFhBZ09TM3g5UDMvQTcrMFFDdytENFRPRFRZd1JnZ2ZyMGxkTVdSOTRWVEZzZkE0U1hVREVneUhWNlZvZGNKc0NpcjdjRVlhRENYSCtyZ2p1WThuazZaU1V5SXdaUmxEdnJiZ2FDbmlGZFlsY1NJSTBKMUVYWHlWQ25laDRQZ01kT0kvblBXU0wzYlg2VkNxTjNKRTl4M2dHZ0xCS293Q2NEY1JkUHhxMUVEVTZWRHhlL01oZ3lyUVRGdTNUT2VBTm01VzVyR0VBcmorWGtEcnd4b1ZYQ1JFSE8vdjdxZlRPZ3BpT0VRMkcwOEtaV2hpZ0JIQ1hmdlZKQWNGdTVoVTdpZmQ0MXcrNGFFbDdOWFBQOEEzRFV0cU91a1BpOUxzSGJRVVlCMFh2Um43dVVibStIKytzNS9ONFVOakRBWDNFSkVoSUlxL2svTDYvN3hSVU5aQnJFR0YxeDJxNHdSaUtFWnVUTmlvMVRvblpOYTQ0Q2o4c0pDSU03a0VhY1IxOVZDMTBWREIwTnhCaktrT253Vk9pTkh1Yzc1bDlKTlhlSVZTYjJQc0tpcFRKbFF4MXpFVklQa0U5OEZialpCRHp0aG5LbDY1OVUzLzc3cHVZb1pyVWN5VDBZR0YzdFYzbVU0NEJQc0dEZzBRaXFUTUFJNUcxa09Ua011cDh3WldYZU9KWGhnQiJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiTGV0IG1lIGxvb2sgYXQgYm90aCBmaWxlcyB0byB1bmRlcnN0YW5kIHdoYXQgd2UgY2FuIHJldXNlLiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUZSV2pnV29zUlBFdWI1Wm5NZm51TFIiLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL3RoZW1lLnRzIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUVQOFFFTUJaOHVIUHYxQUduUnIyS3EiLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvc2Vzc2lvbi1tYW5hZ2VyLnRzIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0IjoxMCwib3V0cHV0IjoyMzMsImNhY2hlUmVhZCI6MjMxNDEsImNhY2hlV3JpdGUiOjE4NDYsInRvdGFsVG9rZW5zIjoyNTIzMCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNSwib3V0cHV0IjowLjAwNTgyNSwiY2FjaGVSZWFkIjowLjAxMTU3MDUsImNhY2hlV3JpdGUiOjAuMDExNTM3NTAwMDAwMDAwMDAxLCJ0b3RhbCI6MC4wMjg5ODMwMDAwMDAwMDAwMDJ9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzE0MTgwMjF9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIyMTI3YTBhNyIsInBhcmVudElkIjoiY2ViODBlMWQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjM3OjAzLjc1NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxRlJXamdXb3NSUEV1YjVabk1mbnVMUiIsInRvb2xOYW1lIjoicmVhZCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgRWRpdG9yVGhlbWUsIE1hcmtkb3duVGhlbWUsIFNlbGVjdExpc3RUaGVtZSB9IGZyb20gXCJAbWFyaW96ZWNobmVyL3BpLXR1aVwiO1xuaW1wb3J0IHsgdHlwZSBTdGF0aWMsIFR5cGUgfSBmcm9tIFwiQHNpbmNsYWlyL3R5cGVib3hcIjtcbmltcG9ydCB7IFR5cGVDb21waWxlciB9IGZyb20gXCJAc2luY2xhaXIvdHlwZWJveC9jb21waWxlclwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgaGlnaGxpZ2h0LCBzdXBwb3J0c0xhbmd1YWdlIH0gZnJvbSBcImNsaS1oaWdobGlnaHRcIjtcbmltcG9ydCB7IGdldEN1c3RvbVRoZW1lc0RpciwgZ2V0VGhlbWVzRGlyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy5qc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBlcyAmIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBDb2xvclZhbHVlU2NoZW1hID0gVHlwZS5VbmlvbihbXG5cdFR5cGUuU3RyaW5nKCksIC8vIGhleCBcIiNmZjAwMDBcIiwgdmFyIHJlZiBcInByaW1hcnlcIiwgb3IgZW1wdHkgXCJcIlxuXHRUeXBlLkludGVnZXIoeyBtaW5pbXVtOiAwLCBtYXhpbXVtOiAyNTUgfSksIC8vIDI1Ni1jb2xvciBpbmRleFxuXSk7XG5cbnR5cGUgQ29sb3JWYWx1ZSA9IFN0YXRpYzx0eXBlb2YgQ29sb3JWYWx1ZVNjaGVtYT47XG5cbmNvbnN0IFRoZW1lSnNvblNjaGVtYSA9IFR5cGUuT2JqZWN0KHtcblx0JHNjaGVtYTogVHlwZS5PcHRpb25hbChUeXBlLlN0cmluZygpKSxcblx0bmFtZTogVHlwZS5TdHJpbmcoKSxcblx0dmFyczogVHlwZS5PcHRpb25hbChUeXBlLlJlY29yZChUeXBlLlN0cmluZygpLCBDb2xvclZhbHVlU2NoZW1hKSksXG5cdGNvbG9yczogVHlwZS5PYmplY3Qoe1xuXHRcdC8vIENvcmUgVUkgKDEwIGNvbG9ycylcblx0XHRhY2NlbnQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Ym9yZGVyOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdGJvcmRlckFjY2VudDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRib3JkZXJNdXRlZDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRzdWNjZXNzOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdGVycm9yOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHdhcm5pbmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0bXV0ZWQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0ZGltOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRleHQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dGhpbmtpbmdUZXh0OiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdC8vIEJhY2tncm91bmRzICYgQ29udGVudCBUZXh0ICgxMSBjb2xvcnMpXG5cdFx0c2VsZWN0ZWRCZzogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR1c2VyTWVzc2FnZUJnOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHVzZXJNZXNzYWdlVGV4dDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRjdXN0b21NZXNzYWdlQmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Y3VzdG9tTWVzc2FnZVRleHQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Y3VzdG9tTWVzc2FnZUxhYmVsOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRvb2xQZW5kaW5nQmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dG9vbFN1Y2Nlc3NCZzogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR0b29sRXJyb3JCZzogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR0b29sVGl0bGU6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dG9vbE91dHB1dDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHQvLyBNYXJrZG93biAoMTAgY29sb3JzKVxuXHRcdG1kSGVhZGluZzogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRtZExpbms6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0bWRMaW5rVXJsOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdG1kQ29kZTogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRtZENvZGVCbG9jazogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRtZENvZGVCbG9ja0JvcmRlcjogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRtZFF1b3RlOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdG1kUXVvdGVCb3JkZXI6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0bWRIcjogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRtZExpc3RCdWxsZXQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Ly8gVG9vbCBEaWZmcyAoMyBjb2xvcnMpXG5cdFx0dG9vbERpZmZBZGRlZDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR0b29sRGlmZlJlbW92ZWQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dG9vbERpZmZDb250ZXh0OiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdC8vIFN5bnRheCBIaWdobGlnaHRpbmcgKDkgY29sb3JzKVxuXHRcdHN5bnRheENvbW1lbnQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0c3ludGF4S2V5d29yZDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRzeW50YXhGdW5jdGlvbjogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRzeW50YXhWYXJpYWJsZTogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRzeW50YXhTdHJpbmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0c3ludGF4TnVtYmVyOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHN5bnRheFR5cGU6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0c3ludGF4T3BlcmF0b3I6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0c3ludGF4UHVuY3R1YXRpb246IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Ly8gVGhpbmtpbmcgTGV2ZWwgQm9yZGVycyAoNiBjb2xvcnMpXG5cdFx0dGhpbmtpbmdPZmY6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dGhpbmtpbmdNaW5pbWFsOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRoaW5raW5nTG93OiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRoaW5raW5nTWVkaXVtOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRoaW5raW5nSGlnaDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR0aGlua2luZ1hoaWdoOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdC8vIEJhc2ggTW9kZSAoMSBjb2xvcilcblx0XHRiYXNoTW9kZTogQ29sb3JWYWx1ZVNjaGVtYSxcblx0fSksXG59KTtcblxudHlwZSBUaGVtZUpzb24gPSBTdGF0aWM8dHlwZW9mIFRoZW1lSnNvblNjaGVtYT47XG5cbmNvbnN0IHZhbGlkYXRlVGhlbWVKc29uID0gVHlwZUNvbXBpbGVyLkNvbXBpbGUoVGhlbWVKc29uU2NoZW1hKTtcblxuZXhwb3J0IHR5cGUgVGhlbWVDb2xvciA9XG5cdHwgXCJhY2NlbnRcIlxuXHR8IFwiYm9yZGVyXCJcblx0fCBcImJvcmRlckFjY2VudFwiXG5cdHwgXCJib3JkZXJNdXRlZFwiXG5cdHwgXCJzdWNjZXNzXCJcblx0fCBcImVycm9yXCJcblx0fCBcIndhcm5pbmdcIlxuXHR8IFwibXV0ZWRcIlxuXHR8IFwiZGltXCJcblx0fCBcInRleHRcIlxuXHR8IFwidGhpbmtpbmdUZXh0XCJcblx0fCBcInVzZXJNZXNzYWdlVGV4dFwiXG5cdHwgXCJjdXN0b21NZXNzYWdlVGV4dFwiXG5cdHwgXCJjdXN0b21NZXNzYWdlTGFiZWxcIlxuXHR8IFwidG9vbFRpdGxlXCJcblx0fCBcInRvb2xPdXRwdXRcIlxuXHR8IFwibWRIZWFkaW5nXCJcblx0fCBcIm1kTGlua1wiXG5cdHwgXCJtZExpbmtVcmxcIlxuXHR8IFwibWRDb2RlXCJcblx0fCBcIm1kQ29kZUJsb2NrXCJcblx0fCBcIm1kQ29kZUJsb2NrQm9yZGVyXCJcblx0fCBcIm1kUXVvdGVcIlxuXHR8IFwibWRRdW90ZUJvcmRlclwiXG5cdHwgXCJtZEhyXCJcblx0fCBcIm1kTGlzdEJ1bGxldFwiXG5cdHwgXCJ0b29sRGlmZkFkZGVkXCJcblx0fCBcInRvb2xEaWZmUmVtb3ZlZFwiXG5cdHwgXCJ0b29sRGlmZkNvbnRleHRcIlxuXHR8IFwic3ludGF4Q29tbWVudFwiXG5cdHwgXCJzeW50YXhLZXl3b3JkXCJcblx0fCBcInN5bnRheEZ1bmN0aW9uXCJcblx0fCBcInN5bnRheFZhcmlhYmxlXCJcblx0fCBcInN5bnRheFN0cmluZ1wiXG5cdHwgXCJzeW50YXhOdW1iZXJcIlxuXHR8IFwic3ludGF4VHlwZVwiXG5cdHwgXCJzeW50YXhPcGVyYXRvclwiXG5cdHwgXCJzeW50YXhQdW5jdHVhdGlvblwiXG5cdHwgXCJ0aGlua2luZ09mZlwiXG5cdHwgXCJ0aGlua2luZ01pbmltYWxcIlxuXHR8IFwidGhpbmtpbmdMb3dcIlxuXHR8IFwidGhpbmtpbmdNZWRpdW1cIlxuXHR8IFwidGhpbmtpbmdIaWdoXCJcblx0fCBcInRoaW5raW5nWGhpZ2hcIlxuXHR8IFwiYmFzaE1vZGVcIjtcblxuZXhwb3J0IHR5cGUgVGhlbWVCZyA9XG5cdHwgXCJzZWxlY3RlZEJnXCJcblx0fCBcInVzZXJNZXNzYWdlQmdcIlxuXHR8IFwiY3VzdG9tTWVzc2FnZUJnXCJcblx0fCBcInRvb2xQZW5kaW5nQmdcIlxuXHR8IFwidG9vbFN1Y2Nlc3NCZ1wiXG5cdHwgXCJ0b29sRXJyb3JCZ1wiO1xuXG50eXBlIENvbG9yTW9kZSA9IFwidHJ1ZWNvbG9yXCIgfCBcIjI1NmNvbG9yXCI7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbG9yIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBkZXRlY3RDb2xvck1vZGUoKTogQ29sb3JNb2RlIHtcblx0Y29uc3QgY29sb3J0ZXJtID0gcHJvY2Vzcy5lbnYuQ09MT1JURVJNO1xuXHRpZiAoY29sb3J0ZXJtID09PSBcInRydWVjb2xvclwiIHx8IGNvbG9ydGVybSA9PT0gXCIyNGJpdFwiKSB7XG5cdFx0cmV0dXJuIFwidHJ1ZWNvbG9yXCI7XG5cdH1cblx0Ly8gV2luZG93cyBUZXJtaW5hbCBzdXBwb3J0cyB0cnVlY29sb3Jcblx0aWYgKHByb2Nlc3MuZW52LldUX1NFU1NJT04pIHtcblx0XHRyZXR1cm4gXCJ0cnVlY29sb3JcIjtcblx0fVxuXHRjb25zdCB0ZXJtID0gcHJvY2Vzcy5lbnYuVEVSTSB8fCBcIlwiO1xuXHRpZiAodGVybS5pbmNsdWRlcyhcIjI1NmNvbG9yXCIpKSB7XG5cdFx0cmV0dXJuIFwiMjU2Y29sb3JcIjtcblx0fVxuXHRyZXR1cm4gXCIyNTZjb2xvclwiO1xufVxuXG5mdW5jdGlvbiBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHsgcjogbnVtYmVyOyBnOiBudW1iZXI7IGI6IG51bWJlciB9IHtcblx0Y29uc3QgY2xlYW5lZCA9IGhleC5yZXBsYWNlKFwiI1wiLCBcIlwiKTtcblx0aWYgKGNsZWFuZWQubGVuZ3RoICE9PSA2KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhleCBjb2xvcjogJHtoZXh9YCk7XG5cdH1cblx0Y29uc3QgciA9IHBhcnNlSW50KGNsZWFuZWQuc3Vic3RyaW5nKDAsIDIpLCAxNik7XG5cdGNvbnN0IGcgPSBwYXJzZUludChjbGVhbmVkLnN1YnN0cmluZygyLCA0KSwgMTYpO1xuXHRjb25zdCBiID0gcGFyc2VJbnQoY2xlYW5lZC5zdWJzdHJpbmcoNCwgNiksIDE2KTtcblx0aWYgKE51bWJlci5pc05hTihyKSB8fCBOdW1iZXIuaXNOYU4oZykgfHwgTnVtYmVyLmlzTmFOKGIpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhleCBjb2xvcjogJHtoZXh9YCk7XG5cdH1cblx0cmV0dXJuIHsgciwgZywgYiB9O1xufVxuXG4vLyBUaGUgNng2eDYgY29sb3IgY3ViZSBjaGFubmVsIHZhbHVlcyAoaW5kaWNlcyAwLTUpXG5jb25zdCBDVUJFX1ZBTFVFUyA9IFswLCA5NSwgMTM1LCAxNzUsIDIxNSwgMjU1XTtcblxuLy8gR3JheXNjYWxlIHJhbXAgdmFsdWVzIChpbmRpY2VzIDIzMi0yNTUsIDI0IGdyYXlzIGZyb20gOCB0byAyMzgpXG5jb25zdCBHUkFZX1ZBTFVFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiA4ICsgaSAqIDEwKTtcblxuZnVuY3Rpb24gZmluZENsb3Nlc3RDdWJlSW5kZXgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG5cdGxldCBtaW5EaXN0ID0gSW5maW5pdHk7XG5cdGxldCBtaW5JZHggPSAwO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IENVQkVfVkFMVUVTLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgZGlzdCA9IE1hdGguYWJzKHZhbHVlIC0gQ1VCRV9WQUxVRVNbaV0pO1xuXHRcdGlmIChkaXN0IDwgbWluRGlzdCkge1xuXHRcdFx0bWluRGlzdCA9IGRpc3Q7XG5cdFx0XHRtaW5JZHggPSBpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWluSWR4O1xufVxuXG5mdW5jdGlvbiBmaW5kQ2xvc2VzdEdyYXlJbmRleChncmF5OiBudW1iZXIpOiBudW1iZXIge1xuXHRsZXQgbWluRGlzdCA9IEluZmluaXR5O1xuXHRsZXQgbWluSWR4ID0gMDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBHUkFZX1ZBTFVFUy5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGRpc3QgPSBNYXRoLmFicyhncmF5IC0gR1JBWV9WQUxVRVNbaV0pO1xuXHRcdGlmIChkaXN0IDwgbWluRGlzdCkge1xuXHRcdFx0bWluRGlzdCA9IGRpc3Q7XG5cdFx0XHRtaW5JZHggPSBpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWluSWR4O1xufVxuXG5mdW5jdGlvbiBjb2xvckRpc3RhbmNlKHIxOiBudW1iZXIsIGcxOiBudW1iZXIsIGIxOiBudW1iZXIsIHIyOiBudW1iZXIsIGcyOiBudW1iZXIsIGIyOiBudW1iZXIpOiBudW1iZXIge1xuXHQvLyBXZWlnaHRlZCBFdWNsaWRlYW4gZGlzdGFuY2UgKGh1bWFuIGV5ZSBpcyBtb3JlIHNlbnNpdGl2ZSB0byBncmVlbilcblx0Y29uc3QgZHIgPSByMSAtIHIyO1xuXHRjb25zdCBkZyA9IGcxIC0gZzI7XG5cdGNvbnN0IGRiID0gYjEgLSBiMjtcblx0cmV0dXJuIGRyICogZHIgKiAwLjI5OSArIGRnICogZGcgKiAwLjU4NyArIGRiICogZGIgKiAwLjExNDtcbn1cblxuZnVuY3Rpb24gcmdiVG8yNTYocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG5cdC8vIEZpbmQgY2xvc2VzdCBjb2xvciBpbiB0aGUgNng2eDYgY3ViZVxuXHRjb25zdCBySWR4ID0gZmluZENsb3Nlc3RDdWJlSW5kZXgocik7XG5cdGNvbnN0IGdJZHggPSBmaW5kQ2xvc2VzdEN1YmVJbmRleChnKTtcblx0Y29uc3QgYklkeCA9IGZpbmRDbG9zZXN0Q3ViZUluZGV4KGIpO1xuXHRjb25zdCBjdWJlUiA9IENVQkVfVkFMVUVTW3JJZHhdO1xuXHRjb25zdCBjdWJlRyA9IENVQkVfVkFMVUVTW2dJZHhdO1xuXHRjb25zdCBjdWJlQiA9IENVQkVfVkFMVUVTW2JJZHhdO1xuXHRjb25zdCBjdWJlSW5kZXggPSAxNiArIDM2ICogcklkeCArIDYgKiBnSWR4ICsgYklkeDtcblx0Y29uc3QgY3ViZURpc3QgPSBjb2xvckRpc3RhbmNlKHIsIGcsIGIsIGN1YmVSLCBjdWJlRywgY3ViZUIpO1xuXG5cdC8vIEZpbmQgY2xvc2VzdCBncmF5c2NhbGVcblx0Y29uc3QgZ3JheSA9IE1hdGgucm91bmQoMC4yOTkgKiByICsgMC41ODcgKiBnICsgMC4xMTQgKiBiKTtcblx0Y29uc3QgZ3JheUlkeCA9IGZpbmRDbG9zZXN0R3JheUluZGV4KGdyYXkpO1xuXHRjb25zdCBncmF5VmFsdWUgPSBHUkFZX1ZBTFVFU1tncmF5SWR4XTtcblx0Y29uc3QgZ3JheUluZGV4ID0gMjMyICsgZ3JheUlkeDtcblx0Y29uc3QgZ3JheURpc3QgPSBjb2xvckRpc3RhbmNlKHIsIGcsIGIsIGdyYXlWYWx1ZSwgZ3JheVZhbHVlLCBncmF5VmFsdWUpO1xuXG5cdC8vIENoZWNrIGlmIGNvbG9yIGhhcyBub3RpY2VhYmxlIHNhdHVyYXRpb24gKGh1ZSBtYXR0ZXJzKVxuXHQvLyBJZiBtYXgtbWluIHNwcmVhZCBpcyBzaWduaWZpY2FudCwgcHJlZmVyIGN1YmUgdG8gcHJlc2VydmUgdGludFxuXHRjb25zdCBtYXhDID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IG1pbkMgPSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3Qgc3ByZWFkID0gbWF4QyAtIG1pbkM7XG5cblx0Ly8gT25seSBjb25zaWRlciBncmF5c2NhbGUgaWYgY29sb3IgaXMgbmVhcmx5IG5ldXRyYWwgKHNwcmVhZCA8IDEwKVxuXHQvLyBBTkQgZ3JheXNjYWxlIGlzIGFjdHVhbGx5IGNsb3NlclxuXHRpZiAoc3ByZWFkIDwgMTAgJiYgZ3JheURpc3QgPCBjdWJlRGlzdCkge1xuXHRcdHJldHVybiBncmF5SW5kZXg7XG5cdH1cblxuXHRyZXR1cm4gY3ViZUluZGV4O1xufVxuXG5mdW5jdGlvbiBoZXhUbzI1NihoZXg6IHN0cmluZyk6IG51bWJlciB7XG5cdGNvbnN0IHsgciwgZywgYiB9ID0gaGV4VG9SZ2IoaGV4KTtcblx0cmV0dXJuIHJnYlRvMjU2KHIsIGcsIGIpO1xufVxuXG5mdW5jdGlvbiBmZ0Fuc2koY29sb3I6IHN0cmluZyB8IG51bWJlciwgbW9kZTogQ29sb3JNb2RlKTogc3RyaW5nIHtcblx0aWYgKGNvbG9yID09PSBcIlwiKSByZXR1cm4gXCJcXHgxYlszOW1cIjtcblx0aWYgKHR5cGVvZiBjb2xvciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGBcXHgxYlszODs1OyR7Y29sb3J9bWA7XG5cdGlmIChjb2xvci5zdGFydHNXaXRoKFwiI1wiKSkge1xuXHRcdGlmIChtb2RlID09PSBcInRydWVjb2xvclwiKSB7XG5cdFx0XHRjb25zdCB7IHIsIGcsIGIgfSA9IGhleFRvUmdiKGNvbG9yKTtcblx0XHRcdHJldHVybiBgXFx4MWJbMzg7Mjske3J9OyR7Z307JHtifW1gO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBpbmRleCA9IGhleFRvMjU2KGNvbG9yKTtcblx0XHRcdHJldHVybiBgXFx4MWJbMzg7NTske2luZGV4fW1gO1xuXHRcdH1cblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29sb3IgdmFsdWU6ICR7Y29sb3J9YCk7XG59XG5cbmZ1bmN0aW9uIGJnQW5zaShjb2xvcjogc3RyaW5nIHwgbnVtYmVyLCBtb2RlOiBDb2xvck1vZGUpOiBzdHJpbmcge1xuXHRpZiAoY29sb3IgPT09IFwiXCIpIHJldHVybiBcIlxceDFiWzQ5bVwiO1xuXHRpZiAodHlwZW9mIGNvbG9yID09PSBcIm51bWJlclwiKSByZXR1cm4gYFxceDFiWzQ4OzU7JHtjb2xvcn1tYDtcblx0aWYgKGNvbG9yLnN0YXJ0c1dpdGgoXCIjXCIpKSB7XG5cdFx0aWYgKG1vZGUgPT09IFwidHJ1ZWNvbG9yXCIpIHtcblx0XHRcdGNvbnN0IHsgciwgZywgYiB9ID0gaGV4VG9SZ2IoY29sb3IpO1xuXHRcdFx0cmV0dXJuIGBcXHgxYls0ODsyOyR7cn07JHtnfTske2J9bWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGluZGV4ID0gaGV4VG8yNTYoY29sb3IpO1xuXHRcdFx0cmV0dXJuIGBcXHgxYls0ODs1OyR7aW5kZXh9bWA7XG5cdFx0fVxuXHR9XG5cdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb2xvciB2YWx1ZTogJHtjb2xvcn1gKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhclJlZnMoXG5cdHZhbHVlOiBDb2xvclZhbHVlLFxuXHR2YXJzOiBSZWNvcmQ8c3RyaW5nLCBDb2xvclZhbHVlPixcblx0dmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpLFxuKTogc3RyaW5nIHwgbnVtYmVyIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB2YWx1ZSA9PT0gXCJcIiB8fCB2YWx1ZS5zdGFydHNXaXRoKFwiI1wiKSkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAodmlzaXRlZC5oYXModmFsdWUpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciB2YXJpYWJsZSByZWZlcmVuY2UgZGV0ZWN0ZWQ6ICR7dmFsdWV9YCk7XG5cdH1cblx0aWYgKCEodmFsdWUgaW4gdmFycykpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFZhcmlhYmxlIHJlZmVyZW5jZSBub3QgZm91bmQ6ICR7dmFsdWV9YCk7XG5cdH1cblx0dmlzaXRlZC5hZGQodmFsdWUpO1xuXHRyZXR1cm4gcmVzb2x2ZVZhclJlZnModmFyc1t2YWx1ZV0sIHZhcnMsIHZpc2l0ZWQpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVGhlbWVDb2xvcnM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIENvbG9yVmFsdWU+Pihcblx0Y29sb3JzOiBULFxuXHR2YXJzOiBSZWNvcmQ8c3RyaW5nLCBDb2xvclZhbHVlPiA9IHt9LFxuKTogUmVjb3JkPGtleW9mIFQsIHN0cmluZyB8IG51bWJlcj4ge1xuXHRjb25zdCByZXNvbHZlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb2xvcnMpKSB7XG5cdFx0cmVzb2x2ZWRba2V5XSA9IHJlc29sdmVWYXJSZWZzKHZhbHVlLCB2YXJzKTtcblx0fVxuXHRyZXR1cm4gcmVzb2x2ZWQgYXMgUmVjb3JkPGtleW9mIFQsIHN0cmluZyB8IG51bWJlcj47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRoZW1lIENsYXNzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjbGFzcyBUaGVtZSB7XG5cdHByaXZhdGUgZmdDb2xvcnM6IE1hcDxUaGVtZUNvbG9yLCBzdHJpbmc+O1xuXHRwcml2YXRlIGJnQ29sb3JzOiBNYXA8VGhlbWVCZywgc3RyaW5nPjtcblx0cHJpdmF0ZSBtb2RlOiBDb2xvck1vZGU7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0ZmdDb2xvcnM6IFJlY29yZDxUaGVtZUNvbG9yLCBzdHJpbmcgfCBudW1iZXI+LFxuXHRcdGJnQ29sb3JzOiBSZWNvcmQ8VGhlbWVCZywgc3RyaW5nIHwgbnVtYmVyPixcblx0XHRtb2RlOiBDb2xvck1vZGUsXG5cdCkge1xuXHRcdHRoaXMubW9kZSA9IG1vZGU7XG5cdFx0dGhpcy5mZ0NvbG9ycyA9IG5ldyBNYXAoKTtcblx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmZ0NvbG9ycykgYXMgW1RoZW1lQ29sb3IsIHN0cmluZyB8IG51bWJlcl1bXSkge1xuXHRcdFx0dGhpcy5mZ0NvbG9ycy5zZXQoa2V5LCBmZ0Fuc2kodmFsdWUsIG1vZGUpKTtcblx0XHR9XG5cdFx0dGhpcy5iZ0NvbG9ycyA9IG5ldyBNYXAoKTtcblx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhiZ0NvbG9ycykgYXMgW1RoZW1lQmcsIHN0cmluZyB8IG51bWJlcl1bXSkge1xuXHRcdFx0dGhpcy5iZ0NvbG9ycy5zZXQoa2V5LCBiZ0Fuc2kodmFsdWUsIG1vZGUpKTtcblx0XHR9XG5cdH1cblxuXHRmZyhjb2xvcjogVGhlbWVDb2xvciwgdGV4dDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRjb25zdCBhbnNpID0gdGhpcy5mZ0NvbG9ycy5nZXQoY29sb3IpO1xuXHRcdGlmICghYW5zaSkgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRoZW1lIGNvbG9yOiAke2NvbG9yfWApO1xuXHRcdHJldHVybiBgJHthbnNpfSR7dGV4dH1cXHgxYlszOW1gOyAvLyBSZXNldCBvbmx5IGZvcmVncm91bmQgY29sb3Jcblx0fVxuXG5cdGJnKGNvbG9yOiBUaGVtZUJnLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGFuc2kgPSB0aGlzLmJnQ29sb3JzLmdldChjb2xvcik7XG5cdFx0aWYgKCFhbnNpKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdGhlbWUgYmFja2dyb3VuZCBjb2xvcjogJHtjb2xvcn1gKTtcblx0XHRyZXR1cm4gYCR7YW5zaX0ke3RleHR9XFx4MWJbNDltYDsgLy8gUmVzZXQgb25seSBiYWNrZ3JvdW5kIGNvbG9yXG5cdH1cblxuXHRib2xkKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGNoYWxrLmJvbGQodGV4dCk7XG5cdH1cblxuXHRpdGFsaWModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gY2hhbGsuaXRhbGljKHRleHQpO1xuXHR9XG5cblx0dW5kZXJsaW5lKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGNoYWxrLnVuZGVybGluZSh0ZXh0KTtcblx0fVxuXG5cdGludmVyc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gY2hhbGsuaW52ZXJzZSh0ZXh0KTtcblx0fVxuXG5cdGdldEZnQW5zaShjb2xvcjogVGhlbWVDb2xvcik6IHN0cmluZyB7XG5cdFx0Y29uc3QgYW5zaSA9IHRoaXMuZmdDb2xvcnMuZ2V0KGNvbG9yKTtcblx0XHRpZiAoIWFuc2kpIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0aGVtZSBjb2xvcjogJHtjb2xvcn1gKTtcblx0XHRyZXR1cm4gYW5zaTtcblx0fVxuXG5cdGdldEJnQW5zaShjb2xvcjogVGhlbWVCZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgYW5zaSA9IHRoaXMuYmdDb2xvcnMuZ2V0KGNvbG9yKTtcblx0XHRpZiAoIWFuc2kpIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0aGVtZSBiYWNrZ3JvdW5kIGNvbG9yOiAke2NvbG9yfWApO1xuXHRcdHJldHVybiBhbnNpO1xuXHR9XG5cblx0Z2V0Q29sb3JNb2RlKCk6IENvbG9yTW9kZSB7XG5cdFx0cmV0dXJuIHRoaXMubW9kZTtcblx0fVxuXG5cdGdldFRoaW5raW5nQm9yZGVyQ29sb3IobGV2ZWw6IFwib2ZmXCIgfCBcIm1pbmltYWxcIiB8IFwibG93XCIgfCBcIm1lZGl1bVwiIHwgXCJoaWdoXCIgfCBcInhoaWdoXCIpOiAoc3RyOiBzdHJpbmcpID0+IHN0cmluZyB7XG5cdFx0Ly8gTWFwIHRoaW5raW5nIGxldmVscyB0byBkZWRpY2F0ZWQgdGhlbWUgY29sb3JzXG5cdFx0c3dpdGNoIChsZXZlbCkge1xuXHRcdFx0Y2FzZSBcIm9mZlwiOlxuXHRcdFx0XHRyZXR1cm4gKHN0cjogc3RyaW5nKSA9PiB0aGlzLmZnKFwidGhpbmtpbmdPZmZcIiwgc3RyKTtcblx0XHRcdGNhc2UgXCJtaW5pbWFsXCI6XG5cdFx0XHRcdHJldHVybiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuZmcoXCJ0aGlua2luZ01pbmltYWxcIiwgc3RyKTtcblx0XHRcdGNhc2UgXCJsb3dcIjpcblx0XHRcdFx0cmV0dXJuIChzdHI6IHN0cmluZykgPT4gdGhpcy5mZyhcInRoaW5raW5nTG93XCIsIHN0cik7XG5cdFx0XHRjYXNlIFwibWVkaXVtXCI6XG5cdFx0XHRcdHJldHVybiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuZmcoXCJ0aGlua2luZ01lZGl1bVwiLCBzdHIpO1xuXHRcdFx0Y2FzZSBcImhpZ2hcIjpcblx0XHRcdFx0cmV0dXJuIChzdHI6IHN0cmluZykgPT4gdGhpcy5mZyhcInRoaW5raW5nSGlnaFwiLCBzdHIpO1xuXHRcdFx0Y2FzZSBcInhoaWdoXCI6XG5cdFx0XHRcdHJldHVybiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuZmcoXCJ0aGlua2luZ1hoaWdoXCIsIHN0cik7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gKHN0cjogc3RyaW5nKSA9PiB0aGlzLmZnKFwidGhpbmtpbmdPZmZcIiwgc3RyKTtcblx0XHR9XG5cdH1cblxuXHRnZXRCYXNoTW9kZUJvcmRlckNvbG9yKCk6IChzdHI6IHN0cmluZykgPT4gc3RyaW5nIHtcblx0XHRyZXR1cm4gKHN0cjogc3RyaW5nKSA9PiB0aGlzLmZnKFwiYmFzaE1vZGVcIiwgc3RyKTtcblx0fVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUaGVtZSBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmxldCBCVUlMVElOX1RIRU1FUzogUmVjb3JkPHN0cmluZywgVGhlbWVKc29uPiB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gZ2V0QnVpbHRpblRoZW1lcygpOiBSZWNvcmQ8c3RyaW5nLCBUaGVtZUpzb24+IHtcblx0aWYgKCFCVUlMVElOX1RIRU1FUykge1xuXHRcdGNvbnN0IHRoZW1lc0RpciA9IGdldFRoZW1lc0RpcigpO1xuXHRcdGNvbnN0IGRhcmtQYXRoID0gcGF0aC5qb2luKHRoZW1lc0RpciwgXCJkYXJrLmpzb25cIik7XG5cdFx0Y29uc3QgbGlnaHRQYXRoID0gcGF0aC5qb2luKHRoZW1lc0RpciwgXCJsaWdodC5qc29uXCIpO1xuXHRcdEJVSUxUSU5fVEhFTUVTID0ge1xuXHRcdFx0ZGFyazogSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZGFya1BhdGgsIFwidXRmLThcIikpIGFzIFRoZW1lSnNvbixcblx0XHRcdGxpZ2h0OiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhsaWdodFBhdGgsIFwidXRmLThcIikpIGFzIFRoZW1lSnNvbixcblx0XHR9O1xuXHR9XG5cdHJldHVybiBCVUlMVElOX1RIRU1FUztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVRoZW1lcygpOiBzdHJpbmdbXSB7XG5cdGNvbnN0IHRoZW1lcyA9IG5ldyBTZXQ8c3RyaW5nPihPYmplY3Qua2V5cyhnZXRCdWlsdGluVGhlbWVzKCkpKTtcblx0Y29uc3QgY3VzdG9tVGhlbWVzRGlyID0gZ2V0Q3VzdG9tVGhlbWVzRGlyKCk7XG5cdGlmIChmcy5leGlzdHNTeW5jKGN1c3RvbVRoZW1lc0RpcikpIHtcblx0XHRjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGN1c3RvbVRoZW1lc0Rpcik7XG5cdFx0Zm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG5cdFx0XHRpZiAoZmlsZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG5cdFx0XHRcdHRoZW1lcy5hZGQoZmlsZS5zbGljZSgwLCAtNSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gQXJyYXkuZnJvbSh0aGVtZXMpLnNvcnQoKTtcbn1cblxuZnVuY3Rpb24gbG9hZFRoZW1lSnNvbihuYW1lOiBzdHJpbmcpOiBUaGVtZUpzb24ge1xuXHRjb25zdCBidWlsdGluVGhlbWVzID0gZ2V0QnVpbHRpblRoZW1lcygpO1xuXHRpZiAobmFtZSBpbiBidWlsdGluVGhlbWVzKSB7XG5cdFx0cmV0dXJuIGJ1aWx0aW5UaGVtZXNbbmFtZV07XG5cdH1cblx0Y29uc3QgY3VzdG9tVGhlbWVzRGlyID0gZ2V0Q3VzdG9tVGhlbWVzRGlyKCk7XG5cdGNvbnN0IHRoZW1lUGF0aCA9IHBhdGguam9pbihjdXN0b21UaGVtZXNEaXIsIGAke25hbWV9Lmpzb25gKTtcblx0aWYgKCFmcy5leGlzdHNTeW5jKHRoZW1lUGF0aCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFRoZW1lIG5vdCBmb3VuZDogJHtuYW1lfWApO1xuXHR9XG5cdGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmModGhlbWVQYXRoLCBcInV0Zi04XCIpO1xuXHRsZXQganNvbjogdW5rbm93bjtcblx0dHJ5IHtcblx0XHRqc29uID0gSlNPTi5wYXJzZShjb250ZW50KTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSB0aGVtZSAke25hbWV9OiAke2Vycm9yfWApO1xuXHR9XG5cdGlmICghdmFsaWRhdGVUaGVtZUpzb24uQ2hlY2soanNvbikpIHtcblx0XHRjb25zdCBlcnJvcnMgPSBBcnJheS5mcm9tKHZhbGlkYXRlVGhlbWVKc29uLkVycm9ycyhqc29uKSk7XG5cdFx0Y29uc3QgbWlzc2luZ0NvbG9yczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBvdGhlckVycm9yczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3QgZSBvZiBlcnJvcnMpIHtcblx0XHRcdC8vIENoZWNrIGZvciBtaXNzaW5nIHJlcXVpcmVkIGNvbG9yIHByb3BlcnRpZXNcblx0XHRcdGNvbnN0IG1hdGNoID0gZS5wYXRoLm1hdGNoKC9eXFwvY29sb3JzXFwvKFxcdyspJC8pO1xuXHRcdFx0aWYgKG1hdGNoICYmIGUubWVzc2FnZS5pbmNsdWRlcyhcIlJlcXVpcmVkXCIpKSB7XG5cdFx0XHRcdG1pc3NpbmdDb2xvcnMucHVzaChtYXRjaFsxXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdGhlckVycm9ycy5wdXNoKGAgIC0gJHtlLnBhdGh9OiAke2UubWVzc2FnZX1gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgZXJyb3JNZXNzYWdlID0gYEludmFsaWQgdGhlbWUgXCIke25hbWV9XCI6XFxuYDtcblx0XHRpZiAobWlzc2luZ0NvbG9ycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlcnJvck1lc3NhZ2UgKz0gYFxcbk1pc3NpbmcgcmVxdWlyZWQgY29sb3IgdG9rZW5zOlxcbmA7XG5cdFx0XHRlcnJvck1lc3NhZ2UgKz0gbWlzc2luZ0NvbG9ycy5tYXAoKGMpID0+IGAgIC0gJHtjfWApLmpvaW4oXCJcXG5cIik7XG5cdFx0XHRlcnJvck1lc3NhZ2UgKz0gYFxcblxcblBsZWFzZSBhZGQgdGhlc2UgY29sb3JzIHRvIHlvdXIgdGhlbWUncyBcImNvbG9yc1wiIG9iamVjdC5gO1xuXHRcdFx0ZXJyb3JNZXNzYWdlICs9IGBcXG5TZWUgdGhlIGJ1aWx0LWluIHRoZW1lcyAoZGFyay5qc29uLCBsaWdodC5qc29uKSBmb3IgcmVmZXJlbmNlIHZhbHVlcy5gO1xuXHRcdH1cblx0XHRpZiAob3RoZXJFcnJvcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0ZXJyb3JNZXNzYWdlICs9IGBcXG5cXG5PdGhlciBlcnJvcnM6XFxuJHtvdGhlckVycm9ycy5qb2luKFwiXFxuXCIpfWA7XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG5cdH1cblx0cmV0dXJuIGpzb24gYXMgVGhlbWVKc29uO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUaGVtZSh0aGVtZUpzb246IFRoZW1lSnNvbiwgbW9kZT86IENvbG9yTW9kZSk6IFRoZW1lIHtcblx0Y29uc3QgY29sb3JNb2RlID0gbW9kZSA/PyBkZXRlY3RDb2xvck1vZGUoKTtcblx0Y29uc3QgcmVzb2x2ZWRDb2xvcnMgPSByZXNvbHZlVGhlbWVDb2xvcnModGhlbWVKc29uLmNvbG9ycywgdGhlbWVKc29uLnZhcnMpO1xuXHRjb25zdCBmZ0NvbG9yczogUmVjb3JkPFRoZW1lQ29sb3IsIHN0cmluZyB8IG51bWJlcj4gPSB7fSBhcyBSZWNvcmQ8VGhlbWVDb2xvciwgc3RyaW5nIHwgbnVtYmVyPjtcblx0Y29uc3QgYmdDb2xvcnM6IFJlY29yZDxUaGVtZUJnLCBzdHJpbmcgfCBudW1iZXI+ID0ge30gYXMgUmVjb3JkPFRoZW1lQmcsIHN0cmluZyB8IG51bWJlcj47XG5cdGNvbnN0IGJnQ29sb3JLZXlzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuXHRcdFwic2VsZWN0ZWRCZ1wiLFxuXHRcdFwidXNlck1lc3NhZ2VCZ1wiLFxuXHRcdFwiY3VzdG9tTWVzc2FnZUJnXCIsXG5cdFx0XCJ0b29sUGVuZGluZ0JnXCIsXG5cdFx0XCJ0b29sU3VjY2Vzc0JnXCIsXG5cdFx0XCJ0b29sRXJyb3JCZ1wiLFxuXHRdKTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWRDb2xvcnMpKSB7XG5cdFx0aWYgKGJnQ29sb3JLZXlzLmhhcyhrZXkpKSB7XG5cdFx0XHRiZ0NvbG9yc1trZXkgYXMgVGhlbWVCZ10gPSB2YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZmdDb2xvcnNba2V5IGFzIFRoZW1lQ29sb3JdID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBuZXcgVGhlbWUoZmdDb2xvcnMsIGJnQ29sb3JzLCBjb2xvck1vZGUpO1xufVxuXG5mdW5jdGlvbiBsb2FkVGhlbWUobmFtZTogc3RyaW5nLCBtb2RlPzogQ29sb3JNb2RlKTogVGhlbWUge1xuXHRjb25zdCB0aGVtZUpzb24gPSBsb2FkVGhlbWVKc29uKG5hbWUpO1xuXHRyZXR1cm4gY3JlYXRlVGhlbWUodGhlbWVKc29uLCBtb2RlKTtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0VGVybWluYWxCYWNrZ3JvdW5kKCk6IFwiZGFya1wiIHwgXCJsaWdodFwiIHtcblx0Y29uc3QgY29sb3JmZ2JnID0gcHJvY2Vzcy5lbnYuQ09MT1JGR0JHIHx8IFwiXCI7XG5cdGlmIChjb2xvcmZnYmcpIHtcblx0XHRjb25zdCBwYXJ0cyA9IGNvbG9yZmdiZy5zcGxpdChcIjtcIik7XG5cdFx0aWYgKHBhcnRzLmxlbmd0aCA+PSAyKSB7XG5cdFx0XHRjb25zdCBiZyA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7XG5cdFx0XHRpZiAoIU51bWJlci5pc05hTihiZykpIHtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYmcgPCA4ID8gXCJkYXJrXCIgOiBcImxpZ2h0XCI7XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBcImRhcmtcIjtcbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFRoZW1lKCk6IHN0cmluZyB7XG5cdHJldHVybiBkZXRlY3RUZXJtaW5hbEJhY2tncm91bmQoKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIFRoZW1lIEluc3RhbmNlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBsZXQgdGhlbWU6IFRoZW1lO1xubGV0IGN1cnJlbnRUaGVtZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbmxldCB0aGVtZVdhdGNoZXI6IGZzLkZTV2F0Y2hlciB8IHVuZGVmaW5lZDtcbmxldCBvblRoZW1lQ2hhbmdlQ2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRUaGVtZSh0aGVtZU5hbWU/OiBzdHJpbmcsIGVuYWJsZVdhdGNoZXI6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuXHRjb25zdCBuYW1lID0gdGhlbWVOYW1lID8/IGdldERlZmF1bHRUaGVtZSgpO1xuXHRjdXJyZW50VGhlbWVOYW1lID0gbmFtZTtcblx0dHJ5IHtcblx0XHR0aGVtZSA9IGxvYWRUaGVtZShuYW1lKTtcblx0XHRpZiAoZW5hYmxlV2F0Y2hlcikge1xuXHRcdFx0c3RhcnRUaGVtZVdhdGNoZXIoKTtcblx0XHR9XG5cdH0gY2F0Y2ggKF9lcnJvcikge1xuXHRcdC8vIFRoZW1lIGlzIGludmFsaWQgLSBmYWxsIGJhY2sgdG8gZGFyayB0aGVtZSBzaWxlbnRseVxuXHRcdGN1cnJlbnRUaGVtZU5hbWUgPSBcImRhcmtcIjtcblx0XHR0aGVtZSA9IGxvYWRUaGVtZShcImRhcmtcIik7XG5cdFx0Ly8gRG9uJ3Qgc3RhcnQgd2F0Y2hlciBmb3IgZmFsbGJhY2sgdGhlbWVcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGhlbWUobmFtZTogc3RyaW5nLCBlbmFibGVXYXRjaGVyOiBib29sZWFuID0gZmFsc2UpOiB7IHN1Y2Nlc3M6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuXHRjdXJyZW50VGhlbWVOYW1lID0gbmFtZTtcblx0dHJ5IHtcblx0XHR0aGVtZSA9IGxvYWRUaGVtZShuYW1lKTtcblx0XHRpZiAoZW5hYmxlV2F0Y2hlcikge1xuXHRcdFx0c3RhcnRUaGVtZVdhdGNoZXIoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFRoZW1lIGlzIGludmFsaWQgLSBmYWxsIGJhY2sgdG8gZGFyayB0aGVtZVxuXHRcdGN1cnJlbnRUaGVtZU5hbWUgPSBcImRhcmtcIjtcblx0XHR0aGVtZSA9IGxvYWRUaGVtZShcImRhcmtcIik7XG5cdFx0Ly8gRG9uJ3Qgc3RhcnQgd2F0Y2hlciBmb3IgZmFsbGJhY2sgdGhlbWVcblx0XHRyZXR1cm4ge1xuXHRcdFx0c3VjY2VzczogZmFsc2UsXG5cdFx0XHRlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuXHRcdH07XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uVGhlbWVDaGFuZ2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0b25UaGVtZUNoYW5nZUNhbGxiYWNrID0gY2FsbGJhY2s7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0VGhlbWVXYXRjaGVyKCk6IHZvaWQge1xuXHQvLyBTdG9wIGV4aXN0aW5nIHdhdGNoZXIgaWYgYW55XG5cdGlmICh0aGVtZVdhdGNoZXIpIHtcblx0XHR0aGVtZVdhdGNoZXIuY2xvc2UoKTtcblx0XHR0aGVtZVdhdGNoZXIgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBPbmx5IHdhdGNoIGlmIGl0J3MgYSBjdXN0b20gdGhlbWUgKG5vdCBidWlsdC1pbilcblx0aWYgKCFjdXJyZW50VGhlbWVOYW1lIHx8IGN1cnJlbnRUaGVtZU5hbWUgPT09IFwiZGFya1wiIHx8IGN1cnJlbnRUaGVtZU5hbWUgPT09IFwibGlnaHRcIikge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGN1c3RvbVRoZW1lc0RpciA9IGdldEN1c3RvbVRoZW1lc0RpcigpO1xuXHRjb25zdCB0aGVtZUZpbGUgPSBwYXRoLmpvaW4oY3VzdG9tVGhlbWVzRGlyLCBgJHtjdXJyZW50VGhlbWVOYW1lfS5qc29uYCk7XG5cblx0Ly8gT25seSB3YXRjaCBpZiB0aGUgZmlsZSBleGlzdHNcblx0aWYgKCFmcy5leGlzdHNTeW5jKHRoZW1lRmlsZSkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR0cnkge1xuXHRcdHRoZW1lV2F0Y2hlciA9IGZzLndhdGNoKHRoZW1lRmlsZSwgKGV2ZW50VHlwZSkgPT4ge1xuXHRcdFx0aWYgKGV2ZW50VHlwZSA9PT0gXCJjaGFuZ2VcIikge1xuXHRcdFx0XHQvLyBEZWJvdW5jZSByYXBpZCBjaGFuZ2VzXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHQvLyBSZWxvYWQgdGhlIHRoZW1lXG5cdFx0XHRcdFx0XHR0aGVtZSA9IGxvYWRUaGVtZShjdXJyZW50VGhlbWVOYW1lISk7XG5cdFx0XHRcdFx0XHQvLyBOb3RpZnkgY2FsbGJhY2sgKHRvIGludmFsaWRhdGUgVUkpXG5cdFx0XHRcdFx0XHRpZiAob25UaGVtZUNoYW5nZUNhbGxiYWNrKSB7XG5cdFx0XHRcdFx0XHRcdG9uVGhlbWVDaGFuZ2VDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKF9lcnJvcikge1xuXHRcdFx0XHRcdFx0Ly8gSWdub3JlIGVycm9ycyAoZmlsZSBtaWdodCBiZSBpbiBpbnZhbGlkIHN0YXRlIHdoaWxlIGJlaW5nIGVkaXRlZClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIDEwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gXCJyZW5hbWVcIikge1xuXHRcdFx0XHQvLyBGaWxlIHdhcyBkZWxldGVkIG9yIHJlbmFtZWQgLSBmYWxsIGJhY2sgdG8gZGVmYXVsdCB0aGVtZVxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRpZiAoIWZzLmV4aXN0c1N5bmModGhlbWVGaWxlKSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudFRoZW1lTmFtZSA9IFwiZGFya1wiO1xuXHRcdFx0XHRcdFx0dGhlbWUgPSBsb2FkVGhlbWUoXCJkYXJrXCIpO1xuXHRcdFx0XHRcdFx0aWYgKHRoZW1lV2F0Y2hlcikge1xuXHRcdFx0XHRcdFx0XHR0aGVtZVdhdGNoZXIuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0dGhlbWVXYXRjaGVyID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG9uVGhlbWVDaGFuZ2VDYWxsYmFjaykge1xuXHRcdFx0XHRcdFx0XHRvblRoZW1lQ2hhbmdlQ2FsbGJhY2soKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIDEwMCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0gY2F0Y2ggKF9lcnJvcikge1xuXHRcdC8vIElnbm9yZSBlcnJvcnMgc3RhcnRpbmcgd2F0Y2hlclxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wVGhlbWVXYXRjaGVyKCk6IHZvaWQge1xuXHRpZiAodGhlbWVXYXRjaGVyKSB7XG5cdFx0dGhlbWVXYXRjaGVyLmNsb3NlKCk7XG5cdFx0dGhlbWVXYXRjaGVyID0gdW5kZWZpbmVkO1xuXHR9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRVSSBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnR5cGUgQ2xpSGlnaGxpZ2h0VGhlbWUgPSBSZWNvcmQ8c3RyaW5nLCAoczogc3RyaW5nKSA9PiBzdHJpbmc+O1xuXG5sZXQgY2FjaGVkSGlnaGxpZ2h0VGhlbWVGb3I6IFRoZW1lIHwgdW5kZWZpbmVkO1xubGV0IGNhY2hlZENsaUhpZ2hsaWdodFRoZW1lOiBDbGlIaWdobGlnaHRUaGVtZSB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gYnVpbGRDbGlIaWdobGlnaHRUaGVtZSh0OiBUaGVtZSk6IENsaUhpZ2hsaWdodFRoZW1lIHtcblx0cmV0dXJuIHtcblx0XHRrZXl3b3JkOiAoczogc3RyaW5nKSA9PiB0LmZnKFwic3ludGF4S2V5d29yZFwiLCBzKSxcblx0XHRidWlsdF9pbjogKHM6IHN0cmluZykgPT4gdC5mZyhcInN5bnRheFR5cGVcIiwgcyksXG5cdFx0bGl0ZXJhbDogKHM6IHN0cmluZykgPT4gdC5mZyhcInN5bnRheE51bWJlclwiLCBzKSxcblx0XHRudW1iZXI6IChzOiBzdHJpbmcpID0+IHQuZmcoXCJzeW50YXhOdW1iZXJcIiwgcyksXG5cdFx0c3RyaW5nOiAoczogc3RyaW5nKSA9PiB0LmZnKFwic3ludGF4U3RyaW5nXCIsIHMpLFxuXHRcdGNvbW1lbnQ6IChzOiBzdHJpbmcpID0+IHQuZmcoXCJzeW50YXhDb21tZW50XCIsIHMpLFxuXHRcdGZ1bmN0aW9uOiAoczogc3RyaW5nKSA9PiB0LmZnKFwic3ludGF4RnVuY3Rpb25cIiwgcyksXG5cdFx0dGl0bGU6IChzOiBzdHJpbmcpID0+IHQuZmcoXCJzeW50YXhGdW5jdGlvblwiLCBzKSxcblx0XHRjbGFzczogKHM6IHN0cmluZykgPT4gdC5mZyhcInN5bnRheFR5cGVcIiwgcyksXG5cdFx0dHlwZTogKHM6IHN0cmluZykgPT4gdC5mZyhcInN5bnRheFR5cGVcIiwgcyksXG5cdFx0YXR0cjogKHM6IHN0cmluZykgPT4gdC5mZyhcInN5bnRheFZhcmlhYmxlXCIsIHMpLFxuXHRcdHZhcmlhYmxlOiAoczogc3RyaW5nKSA9PiB0LmZnKFwic3ludGF4VmFyaWFibGVcIiwgcyksXG5cdFx0cGFyYW1zOiAoczogc3RyaW5nKSA9PiB0LmZnKFwic3ludGF4VmFyaWFibGVcIiwgcyksXG5cdFx0b3BlcmF0b3I6IChzOiBzdHJpbmcpID0+IHQuZmcoXCJzeW50YXhPcGVyYXRvclwiLCBzKSxcblx0XHRwdW5jdHVhdGlvbjogKHM6IHN0cmluZykgPT4gdC5mZyhcInN5bnRheFB1bmN0dWF0aW9uXCIsIHMpLFxuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRDbGlIaWdobGlnaHRUaGVtZSh0OiBUaGVtZSk6IENsaUhpZ2hsaWdodFRoZW1lIHtcblx0aWYgKGNhY2hlZEhpZ2hsaWdodFRoZW1lRm9yICE9PSB0IHx8ICFjYWNoZWRDbGlIaWdobGlnaHRUaGVtZSkge1xuXHRcdGNhY2hlZEhpZ2hsaWdodFRoZW1lRm9yID0gdDtcblx0XHRjYWNoZWRDbGlIaWdobGlnaHRUaGVtZSA9IGJ1aWxkQ2xpSGlnaGxpZ2h0VGhlbWUodCk7XG5cdH1cblx0cmV0dXJuIGNhY2hlZENsaUhpZ2hsaWdodFRoZW1lO1xufVxuXG4vKipcbiAqIEhpZ2hsaWdodCBjb2RlIHdpdGggc3ludGF4IGNvbG9yaW5nIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uIG9yIGxhbmd1YWdlLlxuICogUmV0dXJucyBhcnJheSBvZiBoaWdobGlnaHRlZCBsaW5lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodENvZGUoY29kZTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nW10ge1xuXHQvLyBWYWxpZGF0ZSBsYW5ndWFnZSBiZWZvcmUgaGlnaGxpZ2h0aW5nIHRvIGF2b2lkIHN0ZGVyciBzcGFtIGZyb20gY2xpLWhpZ2hsaWdodFxuXHRjb25zdCB2YWxpZExhbmcgPSBsYW5nICYmIHN1cHBvcnRzTGFuZ3VhZ2UobGFuZykgPyBsYW5nIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvcHRzID0ge1xuXHRcdGxhbmd1YWdlOiB2YWxpZExhbmcsXG5cdFx0aWdub3JlSWxsZWdhbHM6IHRydWUsXG5cdFx0dGhlbWU6IGdldENsaUhpZ2hsaWdodFRoZW1lKHRoZW1lKSxcblx0fTtcblx0dHJ5IHtcblx0XHRyZXR1cm4gaGlnaGxpZ2h0KGNvZGUsIG9wdHMpLnNwbGl0KFwiXFxuXCIpO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gY29kZS5zcGxpdChcIlxcblwiKTtcblx0fVxufVxuXG4vKipcbiAqIEdldCBsYW5ndWFnZSBpZGVudGlmaWVyIGZyb20gZmlsZSBwYXRoIGV4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmd1YWdlRnJvbVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGV4dCA9IGZpbGVQYXRoLnNwbGl0KFwiLlwiKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcblx0aWYgKCFleHQpIHJldHVybiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgZXh0VG9MYW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdHRzOiBcInR5cGVzY3JpcHRcIixcblx0XHR0c3g6IFwidHlwZXNjcmlwdFwiLFxuXHRcdGpzOiBcImphdmFzY3JpcHRcIixcblx0XHRqc3g6IFwiamF2YXNjcmlwdFwiLFxuXHRcdG1qczogXCJqYXZhc2NyaXB0XCIsXG5cdFx0Y2pzOiBcImphdmFzY3JpcHRcIixcblx0XHRweTogXCJweXRob25cIixcblx0XHRyYjogXCJydWJ5XCIsXG5cdFx0cnM6IFwicnVzdFwiLFxuXHRcdGdvOiBcImdvXCIsXG5cdFx0amF2YTogXCJqYXZhXCIsXG5cdFx0a3Q6IFwia290bGluXCIsXG5cdFx0c3dpZnQ6IFwic3dpZnRcIixcblx0XHRjOiBcImNcIixcblx0XHRoOiBcImNcIixcblx0XHRjcHA6IFwiY3BwXCIsXG5cdFx0Y2M6IFwiY3BwXCIsXG5cdFx0Y3h4OiBcImNwcFwiLFxuXHRcdGhwcDogXCJjcHBcIixcblx0XHRjczogXCJjc2hhcnBcIixcblx0XHRwaHA6IFwicGhwXCIsXG5cdFx0c2g6IFwiYmFzaFwiLFxuXHRcdGJhc2g6IFwiYmFzaFwiLFxuXHRcdHpzaDogXCJiYXNoXCIsXG5cdFx0ZmlzaDogXCJmaXNoXCIsXG5cdFx0cHMxOiBcInBvd2Vyc2hlbGxcIixcblx0XHRzcWw6IFwic3FsXCIsXG5cdFx0aHRtbDogXCJodG1sXCIsXG5cdFx0aHRtOiBcImh0bWxcIixcblx0XHRjc3M6IFwiY3NzXCIsXG5cdFx0c2NzczogXCJzY3NzXCIsXG5cdFx0c2FzczogXCJzYXNzXCIsXG5cdFx0bGVzczogXCJsZXNzXCIsXG5cdFx0anNvbjogXCJqc29uXCIsXG5cdFx0eWFtbDogXCJ5YW1sXCIsXG5cdFx0eW1sOiBcInlhbWxcIixcblx0XHR0b21sOiBcInRvbWxcIixcblx0XHR4bWw6IFwieG1sXCIsXG5cdFx0bWQ6IFwibWFya2Rvd25cIixcblx0XHRtYXJrZG93bjogXCJtYXJrZG93blwiLFxuXHRcdGRvY2tlcmZpbGU6IFwiZG9ja2VyZmlsZVwiLFxuXHRcdG1ha2VmaWxlOiBcIm1ha2VmaWxlXCIsXG5cdFx0Y21ha2U6IFwiY21ha2VcIixcblx0XHRsdWE6IFwibHVhXCIsXG5cdFx0cGVybDogXCJwZXJsXCIsXG5cdFx0cjogXCJyXCIsXG5cdFx0c2NhbGE6IFwic2NhbGFcIixcblx0XHRjbGo6IFwiY2xvanVyZVwiLFxuXHRcdGV4OiBcImVsaXhpclwiLFxuXHRcdGV4czogXCJlbGl4aXJcIixcblx0XHRlcmw6IFwiZXJsYW5nXCIsXG5cdFx0aHM6IFwiaGFza2VsbFwiLFxuXHRcdG1sOiBcIm9jYW1sXCIsXG5cdFx0dmltOiBcInZpbVwiLFxuXHRcdGdyYXBocWw6IFwiZ3JhcGhxbFwiLFxuXHRcdHByb3RvOiBcInByb3RvYnVmXCIsXG5cdFx0dGY6IFwiaGNsXCIsXG5cdFx0aGNsOiBcImhjbFwiLFxuXHR9O1xuXG5cdHJldHVybiBleHRUb0xhbmdbZXh0XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duVGhlbWUoKTogTWFya2Rvd25UaGVtZSB7XG5cdHJldHVybiB7XG5cdFx0aGVhZGluZzogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZEhlYWRpbmdcIiwgdGV4dCksXG5cdFx0bGluazogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZExpbmtcIiwgdGV4dCksXG5cdFx0bGlua1VybDogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZExpbmtVcmxcIiwgdGV4dCksXG5cdFx0Y29kZTogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZENvZGVcIiwgdGV4dCksXG5cdFx0Y29kZUJsb2NrOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcIm1kQ29kZUJsb2NrXCIsIHRleHQpLFxuXHRcdGNvZGVCbG9ja0JvcmRlcjogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZENvZGVCbG9ja0JvcmRlclwiLCB0ZXh0KSxcblx0XHRxdW90ZTogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZFF1b3RlXCIsIHRleHQpLFxuXHRcdHF1b3RlQm9yZGVyOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcIm1kUXVvdGVCb3JkZXJcIiwgdGV4dCksXG5cdFx0aHI6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRIclwiLCB0ZXh0KSxcblx0XHRsaXN0QnVsbGV0OiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcIm1kTGlzdEJ1bGxldFwiLCB0ZXh0KSxcblx0XHRib2xkOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5ib2xkKHRleHQpLFxuXHRcdGl0YWxpYzogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuaXRhbGljKHRleHQpLFxuXHRcdHVuZGVybGluZTogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUudW5kZXJsaW5lKHRleHQpLFxuXHRcdHN0cmlrZXRocm91Z2g6ICh0ZXh0OiBzdHJpbmcpID0+IGNoYWxrLnN0cmlrZXRocm91Z2godGV4dCksXG5cdFx0aGlnaGxpZ2h0Q29kZTogKGNvZGU6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcblx0XHRcdC8vIFZhbGlkYXRlIGxhbmd1YWdlIGJlZm9yZSBoaWdobGlnaHRpbmcgdG8gYXZvaWQgc3RkZXJyIHNwYW0gZnJvbSBjbGktaGlnaGxpZ2h0XG5cdFx0XHRjb25zdCB2YWxpZExhbmcgPSBsYW5nICYmIHN1cHBvcnRzTGFuZ3VhZ2UobGFuZykgPyBsYW5nIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3Qgb3B0cyA9IHtcblx0XHRcdFx0bGFuZ3VhZ2U6IHZhbGlkTGFuZyxcblx0XHRcdFx0aWdub3JlSWxsZWdhbHM6IHRydWUsXG5cdFx0XHRcdHRoZW1lOiBnZXRDbGlIaWdobGlnaHRUaGVtZSh0aGVtZSksXG5cdFx0XHR9O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGhpZ2hsaWdodChjb2RlLCBvcHRzKS5zcGxpdChcIlxcblwiKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRyZXR1cm4gY29kZS5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IHRoZW1lLmZnKFwibWRDb2RlQmxvY2tcIiwgbGluZSkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RMaXN0VGhlbWUoKTogU2VsZWN0TGlzdFRoZW1lIHtcblx0cmV0dXJuIHtcblx0XHRzZWxlY3RlZFByZWZpeDogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJhY2NlbnRcIiwgdGV4dCksXG5cdFx0c2VsZWN0ZWRUZXh0OiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcImFjY2VudFwiLCB0ZXh0KSxcblx0XHRkZXNjcmlwdGlvbjogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtdXRlZFwiLCB0ZXh0KSxcblx0XHRzY3JvbGxJbmZvOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcIm11dGVkXCIsIHRleHQpLFxuXHRcdG5vTWF0Y2g6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibXV0ZWRcIiwgdGV4dCksXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JUaGVtZSgpOiBFZGl0b3JUaGVtZSB7XG5cdHJldHVybiB7XG5cdFx0Ym9yZGVyQ29sb3I6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwiYm9yZGVyTXV0ZWRcIiwgdGV4dCksXG5cdFx0c2VsZWN0TGlzdDogZ2V0U2VsZWN0TGlzdFRoZW1lKCksXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nc0xpc3RUaGVtZSgpOiBpbXBvcnQoXCJAbWFyaW96ZWNobmVyL3BpLXR1aVwiKS5TZXR0aW5nc0xpc3RUaGVtZSB7XG5cdHJldHVybiB7XG5cdFx0bGFiZWw6ICh0ZXh0OiBzdHJpbmcsIHNlbGVjdGVkOiBib29sZWFuKSA9PiAoc2VsZWN0ZWQgPyB0aGVtZS5mZyhcImFjY2VudFwiLCB0ZXh0KSA6IHRleHQpLFxuXHRcdHZhbHVlOiAodGV4dDogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbikgPT4gKHNlbGVjdGVkID8gdGhlbWUuZmcoXCJhY2NlbnRcIiwgdGV4dCkgOiB0aGVtZS5mZyhcIm11dGVkXCIsIHRleHQpKSxcblx0XHRkZXNjcmlwdGlvbjogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJkaW1cIiwgdGV4dCksXG5cdFx0Y3Vyc29yOiB0aGVtZS5mZyhcImFjY2VudFwiLCBcIuKGkiBcIiksXG5cdFx0aGludDogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJkaW1cIiwgdGV4dCksXG5cdH07XG59XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzE0MjM3MTJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwNjc3MzRjMyIsInBhcmVudElkIjoiMjEyN2EwYTciLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjM3OjAzLjc4MFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxRVA4UUVNQlo4dUhQdjFBR25ScjJLcSIsInRvb2xOYW1lIjoicmVhZCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImltcG9ydCB0eXBlIHsgQWdlbnRNZXNzYWdlIH0gZnJvbSBcIkBtYXJpb3plY2huZXIvcGktYWdlbnQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBJbWFnZUNvbnRlbnQsIE1lc3NhZ2UsIFRleHRDb250ZW50IH0gZnJvbSBcIkBtYXJpb3plY2huZXIvcGktYWlcIjtcbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQge1xuXHRhcHBlbmRGaWxlU3luYyxcblx0Y2xvc2VTeW5jLFxuXHRleGlzdHNTeW5jLFxuXHRta2RpclN5bmMsXG5cdG9wZW5TeW5jLFxuXHRyZWFkZGlyU3luYyxcblx0cmVhZEZpbGVTeW5jLFxuXHRyZWFkU3luYyxcblx0c3RhdFN5bmMsXG5cdHdyaXRlRmlsZVN5bmMsXG59IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBnZXRBZ2VudERpciBhcyBnZXREZWZhdWx0QWdlbnREaXIgfSBmcm9tIFwiLi4vY29uZmlnLmpzXCI7XG5pbXBvcnQge1xuXHR0eXBlIEJhc2hFeGVjdXRpb25NZXNzYWdlLFxuXHRjcmVhdGVCcmFuY2hTdW1tYXJ5TWVzc2FnZSxcblx0Y3JlYXRlQ29tcGFjdGlvblN1bW1hcnlNZXNzYWdlLFxuXHRjcmVhdGVIb29rTWVzc2FnZSxcblx0dHlwZSBIb29rTWVzc2FnZSxcbn0gZnJvbSBcIi4vbWVzc2FnZXMuanNcIjtcblxuZXhwb3J0IGNvbnN0IENVUlJFTlRfU0VTU0lPTl9WRVJTSU9OID0gMjtcblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uSGVhZGVyIHtcblx0dHlwZTogXCJzZXNzaW9uXCI7XG5cdHZlcnNpb24/OiBudW1iZXI7IC8vIHYxIHNlc3Npb25zIGRvbid0IGhhdmUgdGhpc1xuXHRpZDogc3RyaW5nO1xuXHR0aW1lc3RhbXA6IHN0cmluZztcblx0Y3dkOiBzdHJpbmc7XG5cdGJyYW5jaGVkRnJvbT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uRW50cnlCYXNlIHtcblx0dHlwZTogc3RyaW5nO1xuXHRpZDogc3RyaW5nO1xuXHRwYXJlbnRJZDogc3RyaW5nIHwgbnVsbDtcblx0dGltZXN0YW1wOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbk1lc3NhZ2VFbnRyeSBleHRlbmRzIFNlc3Npb25FbnRyeUJhc2Uge1xuXHR0eXBlOiBcIm1lc3NhZ2VcIjtcblx0bWVzc2FnZTogQWdlbnRNZXNzYWdlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoaW5raW5nTGV2ZWxDaGFuZ2VFbnRyeSBleHRlbmRzIFNlc3Npb25FbnRyeUJhc2Uge1xuXHR0eXBlOiBcInRoaW5raW5nX2xldmVsX2NoYW5nZVwiO1xuXHR0aGlua2luZ0xldmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDaGFuZ2VFbnRyeSBleHRlbmRzIFNlc3Npb25FbnRyeUJhc2Uge1xuXHR0eXBlOiBcIm1vZGVsX2NoYW5nZVwiO1xuXHRwcm92aWRlcjogc3RyaW5nO1xuXHRtb2RlbElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFjdGlvbkVudHJ5PFQgPSB1bmtub3duPiBleHRlbmRzIFNlc3Npb25FbnRyeUJhc2Uge1xuXHR0eXBlOiBcImNvbXBhY3Rpb25cIjtcblx0c3VtbWFyeTogc3RyaW5nO1xuXHRmaXJzdEtlcHRFbnRyeUlkOiBzdHJpbmc7XG5cdHRva2Vuc0JlZm9yZTogbnVtYmVyO1xuXHQvKiogSG9vay1zcGVjaWZpYyBkYXRhIChlLmcuLCBBcnRpZmFjdEluZGV4LCB2ZXJzaW9uIG1hcmtlcnMgZm9yIHN0cnVjdHVyZWQgY29tcGFjdGlvbikgKi9cblx0ZGV0YWlscz86IFQ7XG5cdC8qKiBUcnVlIGlmIGdlbmVyYXRlZCBieSBhIGhvb2ssIHVuZGVmaW5lZC9mYWxzZSBpZiBwaS1nZW5lcmF0ZWQgKGJhY2t3YXJkIGNvbXBhdGlibGUpICovXG5cdGZyb21Ib29rPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hTdW1tYXJ5RW50cnk8VCA9IHVua25vd24+IGV4dGVuZHMgU2Vzc2lvbkVudHJ5QmFzZSB7XG5cdHR5cGU6IFwiYnJhbmNoX3N1bW1hcnlcIjtcblx0ZnJvbUlkOiBzdHJpbmc7XG5cdHN1bW1hcnk6IHN0cmluZztcblx0LyoqIEhvb2stc3BlY2lmaWMgZGF0YSAobm90IHNlbnQgdG8gTExNKSAqL1xuXHRkZXRhaWxzPzogVDtcblx0LyoqIFRydWUgaWYgZ2VuZXJhdGVkIGJ5IGEgaG9vaywgZmFsc2UgaWYgcGktZ2VuZXJhdGVkICovXG5cdGZyb21Ib29rPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gZW50cnkgZm9yIGhvb2tzIHRvIHN0b3JlIGhvb2stc3BlY2lmaWMgZGF0YSBpbiB0aGUgc2Vzc2lvbi5cbiAqIFVzZSBjdXN0b21UeXBlIHRvIGlkZW50aWZ5IHlvdXIgaG9vaydzIGVudHJpZXMuXG4gKlxuICogUHVycG9zZTogUGVyc2lzdCBob29rIHN0YXRlIGFjcm9zcyBzZXNzaW9uIHJlbG9hZHMuIE9uIHJlbG9hZCwgaG9va3MgY2FuXG4gKiBzY2FuIGVudHJpZXMgZm9yIHRoZWlyIGN1c3RvbVR5cGUgYW5kIHJlY29uc3RydWN0IGludGVybmFsIHN0YXRlLlxuICpcbiAqIERvZXMgTk9UIHBhcnRpY2lwYXRlIGluIExMTSBjb250ZXh0IChpZ25vcmVkIGJ5IGJ1aWxkU2Vzc2lvbkNvbnRleHQpLlxuICogRm9yIGluamVjdGluZyBjb250ZW50IGludG8gY29udGV4dCwgc2VlIEN1c3RvbU1lc3NhZ2VFbnRyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21FbnRyeTxUID0gdW5rbm93bj4gZXh0ZW5kcyBTZXNzaW9uRW50cnlCYXNlIHtcblx0dHlwZTogXCJjdXN0b21cIjtcblx0Y3VzdG9tVHlwZTogc3RyaW5nO1xuXHRkYXRhPzogVDtcbn1cblxuLyoqIExhYmVsIGVudHJ5IGZvciB1c2VyLWRlZmluZWQgYm9va21hcmtzL21hcmtlcnMgb24gZW50cmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxFbnRyeSBleHRlbmRzIFNlc3Npb25FbnRyeUJhc2Uge1xuXHR0eXBlOiBcImxhYmVsXCI7XG5cdHRhcmdldElkOiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ3VzdG9tIG1lc3NhZ2UgZW50cnkgZm9yIGhvb2tzIHRvIGluamVjdCBtZXNzYWdlcyBpbnRvIExMTSBjb250ZXh0LlxuICogVXNlIGN1c3RvbVR5cGUgdG8gaWRlbnRpZnkgeW91ciBob29rJ3MgZW50cmllcy5cbiAqXG4gKiBVbmxpa2UgQ3VzdG9tRW50cnksIHRoaXMgRE9FUyBwYXJ0aWNpcGF0ZSBpbiBMTE0gY29udGV4dC5cbiAqIFRoZSBjb250ZW50IGlzIGNvbnZlcnRlZCB0byBhIHVzZXIgbWVzc2FnZSBpbiBidWlsZFNlc3Npb25Db250ZXh0KCkuXG4gKiBVc2UgZGV0YWlscyBmb3IgaG9vay1zcGVjaWZpYyBtZXRhZGF0YSAobm90IHNlbnQgdG8gTExNKS5cbiAqXG4gKiBkaXNwbGF5IGNvbnRyb2xzIFRVSSByZW5kZXJpbmc6XG4gKiAtIGZhbHNlOiBoaWRkZW4gZW50aXJlbHlcbiAqIC0gdHJ1ZTogcmVuZGVyZWQgd2l0aCBkaXN0aW5jdCBzdHlsaW5nIChkaWZmZXJlbnQgZnJvbSB1c2VyIG1lc3NhZ2VzKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbU1lc3NhZ2VFbnRyeTxUID0gdW5rbm93bj4gZXh0ZW5kcyBTZXNzaW9uRW50cnlCYXNlIHtcblx0dHlwZTogXCJjdXN0b21fbWVzc2FnZVwiO1xuXHRjdXN0b21UeXBlOiBzdHJpbmc7XG5cdGNvbnRlbnQ6IHN0cmluZyB8IChUZXh0Q29udGVudCB8IEltYWdlQ29udGVudClbXTtcblx0ZGV0YWlscz86IFQ7XG5cdGRpc3BsYXk6IGJvb2xlYW47XG59XG5cbi8qKiBTZXNzaW9uIGVudHJ5IC0gaGFzIGlkL3BhcmVudElkIGZvciB0cmVlIHN0cnVjdHVyZSAocmV0dXJuZWQgYnkgXCJyZWFkXCIgbWV0aG9kcyBpbiBTZXNzaW9uTWFuYWdlcikgKi9cbmV4cG9ydCB0eXBlIFNlc3Npb25FbnRyeSA9XG5cdHwgU2Vzc2lvbk1lc3NhZ2VFbnRyeVxuXHR8IFRoaW5raW5nTGV2ZWxDaGFuZ2VFbnRyeVxuXHR8IE1vZGVsQ2hhbmdlRW50cnlcblx0fCBDb21wYWN0aW9uRW50cnlcblx0fCBCcmFuY2hTdW1tYXJ5RW50cnlcblx0fCBDdXN0b21FbnRyeVxuXHR8IEN1c3RvbU1lc3NhZ2VFbnRyeVxuXHR8IExhYmVsRW50cnk7XG5cbi8qKiBSYXcgZmlsZSBlbnRyeSAoaW5jbHVkZXMgaGVhZGVyKSAqL1xuZXhwb3J0IHR5cGUgRmlsZUVudHJ5ID0gU2Vzc2lvbkhlYWRlciB8IFNlc3Npb25FbnRyeTtcblxuLyoqIFRyZWUgbm9kZSBmb3IgZ2V0VHJlZSgpIC0gZGVmZW5zaXZlIGNvcHkgb2Ygc2Vzc2lvbiBzdHJ1Y3R1cmUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblRyZWVOb2RlIHtcblx0ZW50cnk6IFNlc3Npb25FbnRyeTtcblx0Y2hpbGRyZW46IFNlc3Npb25UcmVlTm9kZVtdO1xuXHQvKiogUmVzb2x2ZWQgbGFiZWwgZm9yIHRoaXMgZW50cnksIGlmIGFueSAqL1xuXHRsYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uQ29udGV4dCB7XG5cdG1lc3NhZ2VzOiBBZ2VudE1lc3NhZ2VbXTtcblx0dGhpbmtpbmdMZXZlbDogc3RyaW5nO1xuXHRtb2RlbDogeyBwcm92aWRlcjogc3RyaW5nOyBtb2RlbElkOiBzdHJpbmcgfSB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkluZm8ge1xuXHRwYXRoOiBzdHJpbmc7XG5cdGlkOiBzdHJpbmc7XG5cdGNyZWF0ZWQ6IERhdGU7XG5cdG1vZGlmaWVkOiBEYXRlO1xuXHRtZXNzYWdlQ291bnQ6IG51bWJlcjtcblx0Zmlyc3RNZXNzYWdlOiBzdHJpbmc7XG5cdGFsbE1lc3NhZ2VzVGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZWFkb25seVNlc3Npb25NYW5hZ2VyID0gUGljazxcblx0U2Vzc2lvbk1hbmFnZXIsXG5cdHwgXCJnZXRDd2RcIlxuXHR8IFwiZ2V0U2Vzc2lvbkRpclwiXG5cdHwgXCJnZXRTZXNzaW9uSWRcIlxuXHR8IFwiZ2V0U2Vzc2lvbkZpbGVcIlxuXHR8IFwiZ2V0TGVhZklkXCJcblx0fCBcImdldExlYWZFbnRyeVwiXG5cdHwgXCJnZXRFbnRyeVwiXG5cdHwgXCJnZXRMYWJlbFwiXG5cdHwgXCJnZXRCcmFuY2hcIlxuXHR8IFwiZ2V0SGVhZGVyXCJcblx0fCBcImdldEVudHJpZXNcIlxuXHR8IFwiZ2V0VHJlZVwiXG4+O1xuXG4vKiogR2VuZXJhdGUgYSB1bmlxdWUgc2hvcnQgSUQgKDggaGV4IGNoYXJzLCBjb2xsaXNpb24tY2hlY2tlZCkgKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSWQoYnlJZDogeyBoYXMoaWQ6IHN0cmluZyk6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHtcblx0XHRjb25zdCBpZCA9IHJhbmRvbVVVSUQoKS5zbGljZSgwLCA4KTtcblx0XHRpZiAoIWJ5SWQuaGFzKGlkKSkgcmV0dXJuIGlkO1xuXHR9XG5cdC8vIEZhbGxiYWNrIHRvIGZ1bGwgVVVJRCBpZiBzb21laG93IHdlIGhhdmUgY29sbGlzaW9uc1xuXHRyZXR1cm4gcmFuZG9tVVVJRCgpO1xufVxuXG4vKiogTWlncmF0ZSB2MSDihpIgdjI6IGFkZCBpZC9wYXJlbnRJZCB0cmVlIHN0cnVjdHVyZS4gTXV0YXRlcyBpbiBwbGFjZS4gKi9cbmZ1bmN0aW9uIG1pZ3JhdGVWMVRvVjIoZW50cmllczogRmlsZUVudHJ5W10pOiB2b2lkIHtcblx0Y29uc3QgaWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cdGxldCBwcmV2SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuXHRcdGlmIChlbnRyeS50eXBlID09PSBcInNlc3Npb25cIikge1xuXHRcdFx0ZW50cnkudmVyc2lvbiA9IDI7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRlbnRyeS5pZCA9IGdlbmVyYXRlSWQoaWRzKTtcblx0XHRlbnRyeS5wYXJlbnRJZCA9IHByZXZJZDtcblx0XHRwcmV2SWQgPSBlbnRyeS5pZDtcblxuXHRcdC8vIENvbnZlcnQgZmlyc3RLZXB0RW50cnlJbmRleCB0byBmaXJzdEtlcHRFbnRyeUlkIGZvciBjb21wYWN0aW9uXG5cdFx0aWYgKGVudHJ5LnR5cGUgPT09IFwiY29tcGFjdGlvblwiKSB7XG5cdFx0XHRjb25zdCBjb21wID0gZW50cnkgYXMgQ29tcGFjdGlvbkVudHJ5ICYgeyBmaXJzdEtlcHRFbnRyeUluZGV4PzogbnVtYmVyIH07XG5cdFx0XHRpZiAodHlwZW9mIGNvbXAuZmlyc3RLZXB0RW50cnlJbmRleCA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRFbnRyeSA9IGVudHJpZXNbY29tcC5maXJzdEtlcHRFbnRyeUluZGV4XTtcblx0XHRcdFx0aWYgKHRhcmdldEVudHJ5ICYmIHRhcmdldEVudHJ5LnR5cGUgIT09IFwic2Vzc2lvblwiKSB7XG5cdFx0XHRcdFx0Y29tcC5maXJzdEtlcHRFbnRyeUlkID0gdGFyZ2V0RW50cnkuaWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVsZXRlIGNvbXAuZmlyc3RLZXB0RW50cnlJbmRleDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8gQWRkIGZ1dHVyZSBtaWdyYXRpb25zIGhlcmU6XG4vLyBmdW5jdGlvbiBtaWdyYXRlVjJUb1YzKGVudHJpZXM6IEZpbGVFbnRyeVtdKTogdm9pZCB7IC4uLiB9XG5cbi8qKlxuICogUnVuIGFsbCBuZWNlc3NhcnkgbWlncmF0aW9ucyB0byBicmluZyBlbnRyaWVzIHRvIGN1cnJlbnQgdmVyc2lvbi5cbiAqIE11dGF0ZXMgZW50cmllcyBpbiBwbGFjZS4gUmV0dXJucyB0cnVlIGlmIGFueSBtaWdyYXRpb24gd2FzIGFwcGxpZWQuXG4gKi9cbmZ1bmN0aW9uIG1pZ3JhdGVUb0N1cnJlbnRWZXJzaW9uKGVudHJpZXM6IEZpbGVFbnRyeVtdKTogYm9vbGVhbiB7XG5cdGNvbnN0IGhlYWRlciA9IGVudHJpZXMuZmluZCgoZSkgPT4gZS50eXBlID09PSBcInNlc3Npb25cIikgYXMgU2Vzc2lvbkhlYWRlciB8IHVuZGVmaW5lZDtcblx0Y29uc3QgdmVyc2lvbiA9IGhlYWRlcj8udmVyc2lvbiA/PyAxO1xuXG5cdGlmICh2ZXJzaW9uID49IENVUlJFTlRfU0VTU0lPTl9WRVJTSU9OKSByZXR1cm4gZmFsc2U7XG5cblx0aWYgKHZlcnNpb24gPCAyKSBtaWdyYXRlVjFUb1YyKGVudHJpZXMpO1xuXHQvLyBpZiAodmVyc2lvbiA8IDMpIG1pZ3JhdGVWMlRvVjMoZW50cmllcyk7XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbi8qKiBFeHBvcnRlZCBmb3IgdGVzdGluZyAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVTZXNzaW9uRW50cmllcyhlbnRyaWVzOiBGaWxlRW50cnlbXSk6IHZvaWQge1xuXHRtaWdyYXRlVG9DdXJyZW50VmVyc2lvbihlbnRyaWVzKTtcbn1cblxuLyoqIEV4cG9ydGVkIGZvciBjb21wYWN0aW9uLnRlc3QudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlc3Npb25FbnRyaWVzKGNvbnRlbnQ6IHN0cmluZyk6IEZpbGVFbnRyeVtdIHtcblx0Y29uc3QgZW50cmllczogRmlsZUVudHJ5W10gPSBbXTtcblx0Y29uc3QgbGluZXMgPSBjb250ZW50LnRyaW0oKS5zcGxpdChcIlxcblwiKTtcblxuXHRmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcblx0XHRpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZW50cnkgPSBKU09OLnBhcnNlKGxpbmUpIGFzIEZpbGVFbnRyeTtcblx0XHRcdGVudHJpZXMucHVzaChlbnRyeSk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHQvLyBTa2lwIG1hbGZvcm1lZCBsaW5lc1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbnRyaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF0ZXN0Q29tcGFjdGlvbkVudHJ5KGVudHJpZXM6IFNlc3Npb25FbnRyeVtdKTogQ29tcGFjdGlvbkVudHJ5IHwgbnVsbCB7XG5cdGZvciAobGV0IGkgPSBlbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0aWYgKGVudHJpZXNbaV0udHlwZSA9PT0gXCJjb21wYWN0aW9uXCIpIHtcblx0XHRcdHJldHVybiBlbnRyaWVzW2ldIGFzIENvbXBhY3Rpb25FbnRyeTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIHNlc3Npb24gY29udGV4dCBmcm9tIGVudHJpZXMgdXNpbmcgdHJlZSB0cmF2ZXJzYWwuXG4gKiBJZiBsZWFmSWQgaXMgcHJvdmlkZWQsIHdhbGtzIGZyb20gdGhhdCBlbnRyeSB0byByb290LlxuICogSGFuZGxlcyBjb21wYWN0aW9uIGFuZCBicmFuY2ggc3VtbWFyaWVzIGFsb25nIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTZXNzaW9uQ29udGV4dChcblx0ZW50cmllczogU2Vzc2lvbkVudHJ5W10sXG5cdGxlYWZJZD86IHN0cmluZyB8IG51bGwsXG5cdGJ5SWQ/OiBNYXA8c3RyaW5nLCBTZXNzaW9uRW50cnk+LFxuKTogU2Vzc2lvbkNvbnRleHQge1xuXHQvLyBCdWlsZCB1dWlkIGluZGV4IGlmIG5vdCBhdmFpbGFibGVcblx0aWYgKCFieUlkKSB7XG5cdFx0YnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBTZXNzaW9uRW50cnk+KCk7XG5cdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG5cdFx0XHRieUlkLnNldChlbnRyeS5pZCwgZW50cnkpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZpbmQgbGVhZlxuXHRsZXQgbGVhZjogU2Vzc2lvbkVudHJ5IHwgdW5kZWZpbmVkO1xuXHRpZiAobGVhZklkID09PSBudWxsKSB7XG5cdFx0Ly8gRXhwbGljaXRseSBudWxsIC0gcmV0dXJuIG5vIG1lc3NhZ2VzIChuYXZpZ2F0ZWQgdG8gYmVmb3JlIGZpcnN0IGVudHJ5KVxuXHRcdHJldHVybiB7IG1lc3NhZ2VzOiBbXSwgdGhpbmtpbmdMZXZlbDogXCJvZmZcIiwgbW9kZWw6IG51bGwgfTtcblx0fVxuXHRpZiAobGVhZklkKSB7XG5cdFx0bGVhZiA9IGJ5SWQuZ2V0KGxlYWZJZCk7XG5cdH1cblx0aWYgKCFsZWFmKSB7XG5cdFx0Ly8gRmFsbGJhY2sgdG8gbGFzdCBlbnRyeSAod2hlbiBsZWFmSWQgaXMgdW5kZWZpbmVkKVxuXHRcdGxlYWYgPSBlbnRyaWVzW2VudHJpZXMubGVuZ3RoIC0gMV07XG5cdH1cblxuXHRpZiAoIWxlYWYpIHtcblx0XHRyZXR1cm4geyBtZXNzYWdlczogW10sIHRoaW5raW5nTGV2ZWw6IFwib2ZmXCIsIG1vZGVsOiBudWxsIH07XG5cdH1cblxuXHQvLyBXYWxrIGZyb20gbGVhZiB0byByb290LCBjb2xsZWN0aW5nIHBhdGhcblx0Y29uc3QgcGF0aDogU2Vzc2lvbkVudHJ5W10gPSBbXTtcblx0bGV0IGN1cnJlbnQ6IFNlc3Npb25FbnRyeSB8IHVuZGVmaW5lZCA9IGxlYWY7XG5cdHdoaWxlIChjdXJyZW50KSB7XG5cdFx0cGF0aC51bnNoaWZ0KGN1cnJlbnQpO1xuXHRcdGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudElkID8gYnlJZC5nZXQoY3VycmVudC5wYXJlbnRJZCkgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBFeHRyYWN0IHNldHRpbmdzIGFuZCBmaW5kIGNvbXBhY3Rpb25cblx0bGV0IHRoaW5raW5nTGV2ZWwgPSBcIm9mZlwiO1xuXHRsZXQgbW9kZWw6IHsgcHJvdmlkZXI6IHN0cmluZzsgbW9kZWxJZDogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcblx0bGV0IGNvbXBhY3Rpb246IENvbXBhY3Rpb25FbnRyeSB8IG51bGwgPSBudWxsO1xuXG5cdGZvciAoY29uc3QgZW50cnkgb2YgcGF0aCkge1xuXHRcdGlmIChlbnRyeS50eXBlID09PSBcInRoaW5raW5nX2xldmVsX2NoYW5nZVwiKSB7XG5cdFx0XHR0aGlua2luZ0xldmVsID0gZW50cnkudGhpbmtpbmdMZXZlbDtcblx0XHR9IGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09IFwibW9kZWxfY2hhbmdlXCIpIHtcblx0XHRcdG1vZGVsID0geyBwcm92aWRlcjogZW50cnkucHJvdmlkZXIsIG1vZGVsSWQ6IGVudHJ5Lm1vZGVsSWQgfTtcblx0XHR9IGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGVudHJ5Lm1lc3NhZ2Uucm9sZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuXHRcdFx0bW9kZWwgPSB7IHByb3ZpZGVyOiBlbnRyeS5tZXNzYWdlLnByb3ZpZGVyLCBtb2RlbElkOiBlbnRyeS5tZXNzYWdlLm1vZGVsIH07XG5cdFx0fSBlbHNlIGlmIChlbnRyeS50eXBlID09PSBcImNvbXBhY3Rpb25cIikge1xuXHRcdFx0Y29tcGFjdGlvbiA9IGVudHJ5O1xuXHRcdH1cblx0fVxuXG5cdC8vIEJ1aWxkIG1lc3NhZ2VzIGFuZCBjb2xsZWN0IGNvcnJlc3BvbmRpbmcgZW50cmllc1xuXHQvLyBXaGVuIHRoZXJlJ3MgYSBjb21wYWN0aW9uLCB3ZSBuZWVkIHRvOlxuXHQvLyAxLiBFbWl0IHN1bW1hcnkgZmlyc3QgKGVudHJ5ID0gY29tcGFjdGlvbilcblx0Ly8gMi4gRW1pdCBrZXB0IG1lc3NhZ2VzIChmcm9tIGZpcnN0S2VwdEVudHJ5SWQgdXAgdG8gY29tcGFjdGlvbilcblx0Ly8gMy4gRW1pdCBtZXNzYWdlcyBhZnRlciBjb21wYWN0aW9uXG5cdGNvbnN0IG1lc3NhZ2VzOiBBZ2VudE1lc3NhZ2VbXSA9IFtdO1xuXG5cdGNvbnN0IGFwcGVuZE1lc3NhZ2UgPSAoZW50cnk6IFNlc3Npb25FbnRyeSkgPT4ge1xuXHRcdGlmIChlbnRyeS50eXBlID09PSBcIm1lc3NhZ2VcIikge1xuXHRcdFx0bWVzc2FnZXMucHVzaChlbnRyeS5tZXNzYWdlKTtcblx0XHR9IGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09IFwiY3VzdG9tX21lc3NhZ2VcIikge1xuXHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0Y3JlYXRlSG9va01lc3NhZ2UoZW50cnkuY3VzdG9tVHlwZSwgZW50cnkuY29udGVudCwgZW50cnkuZGlzcGxheSwgZW50cnkuZGV0YWlscywgZW50cnkudGltZXN0YW1wKSxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIGlmIChlbnRyeS50eXBlID09PSBcImJyYW5jaF9zdW1tYXJ5XCIgJiYgZW50cnkuc3VtbWFyeSkge1xuXHRcdFx0bWVzc2FnZXMucHVzaChjcmVhdGVCcmFuY2hTdW1tYXJ5TWVzc2FnZShlbnRyeS5zdW1tYXJ5LCBlbnRyeS5mcm9tSWQsIGVudHJ5LnRpbWVzdGFtcCkpO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoY29tcGFjdGlvbikge1xuXHRcdC8vIEVtaXQgc3VtbWFyeSBmaXJzdFxuXHRcdG1lc3NhZ2VzLnB1c2goY3JlYXRlQ29tcGFjdGlvblN1bW1hcnlNZXNzYWdlKGNvbXBhY3Rpb24uc3VtbWFyeSwgY29tcGFjdGlvbi50b2tlbnNCZWZvcmUsIGNvbXBhY3Rpb24udGltZXN0YW1wKSk7XG5cblx0XHQvLyBGaW5kIGNvbXBhY3Rpb24gaW5kZXggaW4gcGF0aFxuXHRcdGNvbnN0IGNvbXBhY3Rpb25JZHggPSBwYXRoLmZpbmRJbmRleCgoZSkgPT4gZS50eXBlID09PSBcImNvbXBhY3Rpb25cIiAmJiBlLmlkID09PSBjb21wYWN0aW9uLmlkKTtcblxuXHRcdC8vIEVtaXQga2VwdCBtZXNzYWdlcyAoYmVmb3JlIGNvbXBhY3Rpb24sIHN0YXJ0aW5nIGZyb20gZmlyc3RLZXB0RW50cnlJZClcblx0XHRsZXQgZm91bmRGaXJzdEtlcHQgPSBmYWxzZTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBhY3Rpb25JZHg7IGkrKykge1xuXHRcdFx0Y29uc3QgZW50cnkgPSBwYXRoW2ldO1xuXHRcdFx0aWYgKGVudHJ5LmlkID09PSBjb21wYWN0aW9uLmZpcnN0S2VwdEVudHJ5SWQpIHtcblx0XHRcdFx0Zm91bmRGaXJzdEtlcHQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGZvdW5kRmlyc3RLZXB0KSB7XG5cdFx0XHRcdGFwcGVuZE1lc3NhZ2UoZW50cnkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEVtaXQgbWVzc2FnZXMgYWZ0ZXIgY29tcGFjdGlvblxuXHRcdGZvciAobGV0IGkgPSBjb21wYWN0aW9uSWR4ICsgMTsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGVudHJ5ID0gcGF0aFtpXTtcblx0XHRcdGFwcGVuZE1lc3NhZ2UoZW50cnkpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBObyBjb21wYWN0aW9uIC0gZW1pdCBhbGwgbWVzc2FnZXMsIGhhbmRsZSBicmFuY2ggc3VtbWFyaWVzIGFuZCBjdXN0b20gbWVzc2FnZXNcblx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIHBhdGgpIHtcblx0XHRcdGFwcGVuZE1lc3NhZ2UoZW50cnkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IG1lc3NhZ2VzLCB0aGlua2luZ0xldmVsLCBtb2RlbCB9O1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIGRlZmF1bHQgc2Vzc2lvbiBkaXJlY3RvcnkgZm9yIGEgY3dkLlxuICogRW5jb2RlcyBjd2QgaW50byBhIHNhZmUgZGlyZWN0b3J5IG5hbWUgdW5kZXIgfi8ucGkvYWdlbnQvc2Vzc2lvbnMvLlxuICovXG5mdW5jdGlvbiBnZXREZWZhdWx0U2Vzc2lvbkRpcihjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHNhZmVQYXRoID0gYC0tJHtjd2QucmVwbGFjZSgvXlsvXFxcXF0vLCBcIlwiKS5yZXBsYWNlKC9bL1xcXFw6XS9nLCBcIi1cIil9LS1gO1xuXHRjb25zdCBzZXNzaW9uRGlyID0gam9pbihnZXREZWZhdWx0QWdlbnREaXIoKSwgXCJzZXNzaW9uc1wiLCBzYWZlUGF0aCk7XG5cdGlmICghZXhpc3RzU3luYyhzZXNzaW9uRGlyKSkge1xuXHRcdG1rZGlyU3luYyhzZXNzaW9uRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0fVxuXHRyZXR1cm4gc2Vzc2lvbkRpcjtcbn1cblxuLyoqIEV4cG9ydGVkIGZvciB0ZXN0aW5nICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXNGcm9tRmlsZShmaWxlUGF0aDogc3RyaW5nKTogRmlsZUVudHJ5W10ge1xuXHRpZiAoIWV4aXN0c1N5bmMoZmlsZVBhdGgpKSByZXR1cm4gW107XG5cblx0Y29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGY4XCIpO1xuXHRjb25zdCBlbnRyaWVzOiBGaWxlRW50cnlbXSA9IFtdO1xuXHRjb25zdCBsaW5lcyA9IGNvbnRlbnQudHJpbSgpLnNwbGl0KFwiXFxuXCIpO1xuXG5cdGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuXHRcdGlmICghbGluZS50cmltKCkpIGNvbnRpbnVlO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBlbnRyeSA9IEpTT04ucGFyc2UobGluZSkgYXMgRmlsZUVudHJ5O1xuXHRcdFx0ZW50cmllcy5wdXNoKGVudHJ5KTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdC8vIFNraXAgbWFsZm9ybWVkIGxpbmVzXG5cdFx0fVxuXHR9XG5cblx0Ly8gVmFsaWRhdGUgc2Vzc2lvbiBoZWFkZXJcblx0aWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZW50cmllcztcblx0Y29uc3QgaGVhZGVyID0gZW50cmllc1swXTtcblx0aWYgKGhlYWRlci50eXBlICE9PSBcInNlc3Npb25cIiB8fCB0eXBlb2YgKGhlYWRlciBhcyBhbnkpLmlkICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cblx0cmV0dXJuIGVudHJpZXM7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRTZXNzaW9uRmlsZShmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgZmQgPSBvcGVuU3luYyhmaWxlUGF0aCwgXCJyXCIpO1xuXHRcdGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg1MTIpO1xuXHRcdGNvbnN0IGJ5dGVzUmVhZCA9IHJlYWRTeW5jKGZkLCBidWZmZXIsIDAsIDUxMiwgMCk7XG5cdFx0Y2xvc2VTeW5jKGZkKTtcblx0XHRjb25zdCBmaXJzdExpbmUgPSBidWZmZXIudG9TdHJpbmcoXCJ1dGY4XCIsIDAsIGJ5dGVzUmVhZCkuc3BsaXQoXCJcXG5cIilbMF07XG5cdFx0aWYgKCFmaXJzdExpbmUpIHJldHVybiBmYWxzZTtcblx0XHRjb25zdCBoZWFkZXIgPSBKU09OLnBhcnNlKGZpcnN0TGluZSk7XG5cdFx0cmV0dXJuIGhlYWRlci50eXBlID09PSBcInNlc3Npb25cIiAmJiB0eXBlb2YgaGVhZGVyLmlkID09PSBcInN0cmluZ1wiO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuLyoqIEV4cG9ydGVkIGZvciB0ZXN0aW5nICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE1vc3RSZWNlbnRTZXNzaW9uKHNlc3Npb25EaXI6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuXHR0cnkge1xuXHRcdGNvbnN0IGZpbGVzID0gcmVhZGRpclN5bmMoc2Vzc2lvbkRpcilcblx0XHRcdC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoXCIuanNvbmxcIikpXG5cdFx0XHQubWFwKChmKSA9PiBqb2luKHNlc3Npb25EaXIsIGYpKVxuXHRcdFx0LmZpbHRlcihpc1ZhbGlkU2Vzc2lvbkZpbGUpXG5cdFx0XHQubWFwKChwYXRoKSA9PiAoeyBwYXRoLCBtdGltZTogc3RhdFN5bmMocGF0aCkubXRpbWUgfSkpXG5cdFx0XHQuc29ydCgoYSwgYikgPT4gYi5tdGltZS5nZXRUaW1lKCkgLSBhLm10aW1lLmdldFRpbWUoKSk7XG5cblx0XHRyZXR1cm4gZmlsZXNbMF0/LnBhdGggfHwgbnVsbDtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBNYW5hZ2VzIGNvbnZlcnNhdGlvbiBzZXNzaW9ucyBhcyBhcHBlbmQtb25seSB0cmVlcyBzdG9yZWQgaW4gSlNPTkwgZmlsZXMuXG4gKlxuICogRWFjaCBzZXNzaW9uIGVudHJ5IGhhcyBhbiBpZCBhbmQgcGFyZW50SWQgZm9ybWluZyBhIHRyZWUgc3RydWN0dXJlLiBUaGUgXCJsZWFmXCJcbiAqIHBvaW50ZXIgdHJhY2tzIHRoZSBjdXJyZW50IHBvc2l0aW9uLiBBcHBlbmRpbmcgY3JlYXRlcyBhIGNoaWxkIG9mIHRoZSBjdXJyZW50IGxlYWYuXG4gKiBCcmFuY2hpbmcgbW92ZXMgdGhlIGxlYWYgdG8gYW4gZWFybGllciBlbnRyeSwgYWxsb3dpbmcgbmV3IGJyYW5jaGVzIHdpdGhvdXRcbiAqIG1vZGlmeWluZyBoaXN0b3J5LlxuICpcbiAqIFVzZSBidWlsZFNlc3Npb25Db250ZXh0KCkgdG8gZ2V0IHRoZSByZXNvbHZlZCBtZXNzYWdlIGxpc3QgZm9yIHRoZSBMTE0sIHdoaWNoXG4gKiBoYW5kbGVzIGNvbXBhY3Rpb24gc3VtbWFyaWVzIGFuZCBmb2xsb3dzIHRoZSBwYXRoIGZyb20gcm9vdCB0byBjdXJyZW50IGxlYWYuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciB7XG5cdHByaXZhdGUgc2Vzc2lvbklkOiBzdHJpbmcgPSBcIlwiO1xuXHRwcml2YXRlIHNlc3Npb25GaWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHByaXZhdGUgc2Vzc2lvbkRpcjogc3RyaW5nO1xuXHRwcml2YXRlIGN3ZDogc3RyaW5nO1xuXHRwcml2YXRlIHBlcnNpc3Q6IGJvb2xlYW47XG5cdHByaXZhdGUgZmx1c2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuXHRwcml2YXRlIGZpbGVFbnRyaWVzOiBGaWxlRW50cnlbXSA9IFtdO1xuXHRwcml2YXRlIGJ5SWQ6IE1hcDxzdHJpbmcsIFNlc3Npb25FbnRyeT4gPSBuZXcgTWFwKCk7XG5cdHByaXZhdGUgbGFiZWxzQnlJZDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblx0cHJpdmF0ZSBsZWFmSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoY3dkOiBzdHJpbmcsIHNlc3Npb25EaXI6IHN0cmluZywgc2Vzc2lvbkZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGVyc2lzdDogYm9vbGVhbikge1xuXHRcdHRoaXMuY3dkID0gY3dkO1xuXHRcdHRoaXMuc2Vzc2lvbkRpciA9IHNlc3Npb25EaXI7XG5cdFx0dGhpcy5wZXJzaXN0ID0gcGVyc2lzdDtcblx0XHRpZiAocGVyc2lzdCAmJiBzZXNzaW9uRGlyICYmICFleGlzdHNTeW5jKHNlc3Npb25EaXIpKSB7XG5cdFx0XHRta2RpclN5bmMoc2Vzc2lvbkRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHNlc3Npb25GaWxlKSB7XG5cdFx0XHR0aGlzLnNldFNlc3Npb25GaWxlKHNlc3Npb25GaWxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5uZXdTZXNzaW9uKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFN3aXRjaCB0byBhIGRpZmZlcmVudCBzZXNzaW9uIGZpbGUgKHVzZWQgZm9yIHJlc3VtZSBhbmQgYnJhbmNoaW5nKSAqL1xuXHRzZXRTZXNzaW9uRmlsZShzZXNzaW9uRmlsZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zZXNzaW9uRmlsZSA9IHJlc29sdmUoc2Vzc2lvbkZpbGUpO1xuXHRcdGlmIChleGlzdHNTeW5jKHRoaXMuc2Vzc2lvbkZpbGUpKSB7XG5cdFx0XHR0aGlzLmZpbGVFbnRyaWVzID0gbG9hZEVudHJpZXNGcm9tRmlsZSh0aGlzLnNlc3Npb25GaWxlKTtcblx0XHRcdGNvbnN0IGhlYWRlciA9IHRoaXMuZmlsZUVudHJpZXMuZmluZCgoZSkgPT4gZS50eXBlID09PSBcInNlc3Npb25cIikgYXMgU2Vzc2lvbkhlYWRlciB8IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuc2Vzc2lvbklkID0gaGVhZGVyPy5pZCA/PyByYW5kb21VVUlEKCk7XG5cblx0XHRcdGlmIChtaWdyYXRlVG9DdXJyZW50VmVyc2lvbih0aGlzLmZpbGVFbnRyaWVzKSkge1xuXHRcdFx0XHR0aGlzLl9yZXdyaXRlRmlsZSgpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLl9idWlsZEluZGV4KCk7XG5cdFx0XHR0aGlzLmZsdXNoZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5ld1Nlc3Npb24oKTtcblx0XHR9XG5cdH1cblxuXHRuZXdTZXNzaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0dGhpcy5zZXNzaW9uSWQgPSByYW5kb21VVUlEKCk7XG5cdFx0Y29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXHRcdGNvbnN0IGhlYWRlcjogU2Vzc2lvbkhlYWRlciA9IHtcblx0XHRcdHR5cGU6IFwic2Vzc2lvblwiLFxuXHRcdFx0dmVyc2lvbjogQ1VSUkVOVF9TRVNTSU9OX1ZFUlNJT04sXG5cdFx0XHRpZDogdGhpcy5zZXNzaW9uSWQsXG5cdFx0XHR0aW1lc3RhbXAsXG5cdFx0XHRjd2Q6IHRoaXMuY3dkLFxuXHRcdH07XG5cdFx0dGhpcy5maWxlRW50cmllcyA9IFtoZWFkZXJdO1xuXHRcdHRoaXMuYnlJZC5jbGVhcigpO1xuXHRcdHRoaXMubGVhZklkID0gbnVsbDtcblx0XHR0aGlzLmZsdXNoZWQgPSBmYWxzZTtcblx0XHQvLyBPbmx5IGdlbmVyYXRlIGZpbGVuYW1lIGlmIHBlcnNpc3RpbmcgYW5kIG5vdCBhbHJlYWR5IHNldCAoZS5nLiwgdmlhIC0tc2Vzc2lvbiBmbGFnKVxuXHRcdGlmICh0aGlzLnBlcnNpc3QgJiYgIXRoaXMuc2Vzc2lvbkZpbGUpIHtcblx0XHRcdGNvbnN0IGZpbGVUaW1lc3RhbXAgPSB0aW1lc3RhbXAucmVwbGFjZSgvWzouXS9nLCBcIi1cIik7XG5cdFx0XHR0aGlzLnNlc3Npb25GaWxlID0gam9pbih0aGlzLmdldFNlc3Npb25EaXIoKSwgYCR7ZmlsZVRpbWVzdGFtcH1fJHt0aGlzLnNlc3Npb25JZH0uanNvbmxgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuc2Vzc2lvbkZpbGU7XG5cdH1cblxuXHRwcml2YXRlIF9idWlsZEluZGV4KCk6IHZvaWQge1xuXHRcdHRoaXMuYnlJZC5jbGVhcigpO1xuXHRcdHRoaXMubGFiZWxzQnlJZC5jbGVhcigpO1xuXHRcdHRoaXMubGVhZklkID0gbnVsbDtcblx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuZmlsZUVudHJpZXMpIHtcblx0XHRcdGlmIChlbnRyeS50eXBlID09PSBcInNlc3Npb25cIikgY29udGludWU7XG5cdFx0XHR0aGlzLmJ5SWQuc2V0KGVudHJ5LmlkLCBlbnRyeSk7XG5cdFx0XHR0aGlzLmxlYWZJZCA9IGVudHJ5LmlkO1xuXHRcdFx0aWYgKGVudHJ5LnR5cGUgPT09IFwibGFiZWxcIikge1xuXHRcdFx0XHRpZiAoZW50cnkubGFiZWwpIHtcblx0XHRcdFx0XHR0aGlzLmxhYmVsc0J5SWQuc2V0KGVudHJ5LnRhcmdldElkLCBlbnRyeS5sYWJlbCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5sYWJlbHNCeUlkLmRlbGV0ZShlbnRyeS50YXJnZXRJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9yZXdyaXRlRmlsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMucGVyc2lzdCB8fCAhdGhpcy5zZXNzaW9uRmlsZSkgcmV0dXJuO1xuXHRcdGNvbnN0IGNvbnRlbnQgPSBgJHt0aGlzLmZpbGVFbnRyaWVzLm1hcCgoZSkgPT4gSlNPTi5zdHJpbmdpZnkoZSkpLmpvaW4oXCJcXG5cIil9XFxuYDtcblx0XHR3cml0ZUZpbGVTeW5jKHRoaXMuc2Vzc2lvbkZpbGUsIGNvbnRlbnQpO1xuXHR9XG5cblx0aXNQZXJzaXN0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucGVyc2lzdDtcblx0fVxuXG5cdGdldEN3ZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmN3ZDtcblx0fVxuXG5cdGdldFNlc3Npb25EaXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zZXNzaW9uRGlyO1xuXHR9XG5cblx0Z2V0U2Vzc2lvbklkKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc2Vzc2lvbklkO1xuXHR9XG5cblx0Z2V0U2Vzc2lvbkZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5zZXNzaW9uRmlsZTtcblx0fVxuXG5cdF9wZXJzaXN0KGVudHJ5OiBTZXNzaW9uRW50cnkpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMucGVyc2lzdCB8fCAhdGhpcy5zZXNzaW9uRmlsZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgaGFzQXNzaXN0YW50ID0gdGhpcy5maWxlRW50cmllcy5zb21lKChlKSA9PiBlLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGUubWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKTtcblx0XHRpZiAoIWhhc0Fzc2lzdGFudCkgcmV0dXJuO1xuXG5cdFx0aWYgKCF0aGlzLmZsdXNoZWQpIHtcblx0XHRcdGZvciAoY29uc3QgZSBvZiB0aGlzLmZpbGVFbnRyaWVzKSB7XG5cdFx0XHRcdGFwcGVuZEZpbGVTeW5jKHRoaXMuc2Vzc2lvbkZpbGUsIGAke0pTT04uc3RyaW5naWZ5KGUpfVxcbmApO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5mbHVzaGVkID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXBwZW5kRmlsZVN5bmModGhpcy5zZXNzaW9uRmlsZSwgYCR7SlNPTi5zdHJpbmdpZnkoZW50cnkpfVxcbmApO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX2FwcGVuZEVudHJ5KGVudHJ5OiBTZXNzaW9uRW50cnkpOiB2b2lkIHtcblx0XHR0aGlzLmZpbGVFbnRyaWVzLnB1c2goZW50cnkpO1xuXHRcdHRoaXMuYnlJZC5zZXQoZW50cnkuaWQsIGVudHJ5KTtcblx0XHR0aGlzLmxlYWZJZCA9IGVudHJ5LmlkO1xuXHRcdHRoaXMuX3BlcnNpc3QoZW50cnkpO1xuXHR9XG5cblx0LyoqIEFwcGVuZCBhIG1lc3NhZ2UgYXMgY2hpbGQgb2YgY3VycmVudCBsZWFmLCB0aGVuIGFkdmFuY2UgbGVhZi4gUmV0dXJucyBlbnRyeSBpZC5cblx0ICogRG9lcyBub3QgYWxsb3cgd3JpdGluZyBDb21wYWN0aW9uU3VtbWFyeU1lc3NhZ2UgYW5kIEJyYW5jaFN1bW1hcnlNZXNzYWdlIGRpcmVjdGx5LlxuXHQgKiBSZWFzb246IHdlIHdhbnQgdGhlc2UgdG8gYmUgdG9wLWxldmVsIGVudHJpZXMgaW4gdGhlIHNlc3Npb24sIG5vdCBtZXNzYWdlIHNlc3Npb24gZW50cmllcyxcblx0ICogc28gaXQgaXMgZWFzaWVyIHRvIGZpbmQgdGhlbS5cblx0ICogVGhlc2UgbmVlZCB0byBiZSBhcHBlbmRlZCB2aWEgYXBwZW5kQ29tcGFjdGlvbigpIGFuZCBhcHBlbmRCcmFuY2hTdW1tYXJ5KCkgbWV0aG9kcy5cblx0ICovXG5cdGFwcGVuZE1lc3NhZ2UobWVzc2FnZTogTWVzc2FnZSB8IEhvb2tNZXNzYWdlIHwgQmFzaEV4ZWN1dGlvbk1lc3NhZ2UpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudHJ5OiBTZXNzaW9uTWVzc2FnZUVudHJ5ID0ge1xuXHRcdFx0dHlwZTogXCJtZXNzYWdlXCIsXG5cdFx0XHRpZDogZ2VuZXJhdGVJZCh0aGlzLmJ5SWQpLFxuXHRcdFx0cGFyZW50SWQ6IHRoaXMubGVhZklkLFxuXHRcdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRtZXNzYWdlLFxuXHRcdH07XG5cdFx0dGhpcy5fYXBwZW5kRW50cnkoZW50cnkpO1xuXHRcdHJldHVybiBlbnRyeS5pZDtcblx0fVxuXG5cdC8qKiBBcHBlbmQgYSB0aGlua2luZyBsZXZlbCBjaGFuZ2UgYXMgY2hpbGQgb2YgY3VycmVudCBsZWFmLCB0aGVuIGFkdmFuY2UgbGVhZi4gUmV0dXJucyBlbnRyeSBpZC4gKi9cblx0YXBwZW5kVGhpbmtpbmdMZXZlbENoYW5nZSh0aGlua2luZ0xldmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudHJ5OiBUaGlua2luZ0xldmVsQ2hhbmdlRW50cnkgPSB7XG5cdFx0XHR0eXBlOiBcInRoaW5raW5nX2xldmVsX2NoYW5nZVwiLFxuXHRcdFx0aWQ6IGdlbmVyYXRlSWQodGhpcy5ieUlkKSxcblx0XHRcdHBhcmVudElkOiB0aGlzLmxlYWZJZCxcblx0XHRcdHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0dGhpbmtpbmdMZXZlbCxcblx0XHR9O1xuXHRcdHRoaXMuX2FwcGVuZEVudHJ5KGVudHJ5KTtcblx0XHRyZXR1cm4gZW50cnkuaWQ7XG5cdH1cblxuXHQvKiogQXBwZW5kIGEgbW9kZWwgY2hhbmdlIGFzIGNoaWxkIG9mIGN1cnJlbnQgbGVhZiwgdGhlbiBhZHZhbmNlIGxlYWYuIFJldHVybnMgZW50cnkgaWQuICovXG5cdGFwcGVuZE1vZGVsQ2hhbmdlKHByb3ZpZGVyOiBzdHJpbmcsIG1vZGVsSWQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZW50cnk6IE1vZGVsQ2hhbmdlRW50cnkgPSB7XG5cdFx0XHR0eXBlOiBcIm1vZGVsX2NoYW5nZVwiLFxuXHRcdFx0aWQ6IGdlbmVyYXRlSWQodGhpcy5ieUlkKSxcblx0XHRcdHBhcmVudElkOiB0aGlzLmxlYWZJZCxcblx0XHRcdHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0cHJvdmlkZXIsXG5cdFx0XHRtb2RlbElkLFxuXHRcdH07XG5cdFx0dGhpcy5fYXBwZW5kRW50cnkoZW50cnkpO1xuXHRcdHJldHVybiBlbnRyeS5pZDtcblx0fVxuXG5cdC8qKiBBcHBlbmQgYSBjb21wYWN0aW9uIHN1bW1hcnkgYXMgY2hpbGQgb2YgY3VycmVudCBsZWFmLCB0aGVuIGFkdmFuY2UgbGVhZi4gUmV0dXJucyBlbnRyeSBpZC4gKi9cblx0YXBwZW5kQ29tcGFjdGlvbjxUID0gdW5rbm93bj4oXG5cdFx0c3VtbWFyeTogc3RyaW5nLFxuXHRcdGZpcnN0S2VwdEVudHJ5SWQ6IHN0cmluZyxcblx0XHR0b2tlbnNCZWZvcmU6IG51bWJlcixcblx0XHRkZXRhaWxzPzogVCxcblx0XHRmcm9tSG9vaz86IGJvb2xlYW4sXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZW50cnk6IENvbXBhY3Rpb25FbnRyeTxUPiA9IHtcblx0XHRcdHR5cGU6IFwiY29tcGFjdGlvblwiLFxuXHRcdFx0aWQ6IGdlbmVyYXRlSWQodGhpcy5ieUlkKSxcblx0XHRcdHBhcmVudElkOiB0aGlzLmxlYWZJZCxcblx0XHRcdHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0c3VtbWFyeSxcblx0XHRcdGZpcnN0S2VwdEVudHJ5SWQsXG5cdFx0XHR0b2tlbnNCZWZvcmUsXG5cdFx0XHRkZXRhaWxzLFxuXHRcdFx0ZnJvbUhvb2ssXG5cdFx0fTtcblx0XHR0aGlzLl9hcHBlbmRFbnRyeShlbnRyeSk7XG5cdFx0cmV0dXJuIGVudHJ5LmlkO1xuXHR9XG5cblx0LyoqIEFwcGVuZCBhIGN1c3RvbSBlbnRyeSAoZm9yIGhvb2tzKSBhcyBjaGlsZCBvZiBjdXJyZW50IGxlYWYsIHRoZW4gYWR2YW5jZSBsZWFmLiBSZXR1cm5zIGVudHJ5IGlkLiAqL1xuXHRhcHBlbmRDdXN0b21FbnRyeShjdXN0b21UeXBlOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKTogc3RyaW5nIHtcblx0XHRjb25zdCBlbnRyeTogQ3VzdG9tRW50cnkgPSB7XG5cdFx0XHR0eXBlOiBcImN1c3RvbVwiLFxuXHRcdFx0Y3VzdG9tVHlwZSxcblx0XHRcdGRhdGEsXG5cdFx0XHRpZDogZ2VuZXJhdGVJZCh0aGlzLmJ5SWQpLFxuXHRcdFx0cGFyZW50SWQ6IHRoaXMubGVhZklkLFxuXHRcdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0fTtcblx0XHR0aGlzLl9hcHBlbmRFbnRyeShlbnRyeSk7XG5cdFx0cmV0dXJuIGVudHJ5LmlkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGVuZCBhIGN1c3RvbSBtZXNzYWdlIGVudHJ5IChmb3IgaG9va3MpIHRoYXQgcGFydGljaXBhdGVzIGluIExMTSBjb250ZXh0LlxuXHQgKiBAcGFyYW0gY3VzdG9tVHlwZSBIb29rIGlkZW50aWZpZXIgZm9yIGZpbHRlcmluZyBvbiByZWxvYWRcblx0ICogQHBhcmFtIGNvbnRlbnQgTWVzc2FnZSBjb250ZW50IChzdHJpbmcgb3IgVGV4dENvbnRlbnQvSW1hZ2VDb250ZW50IGFycmF5KVxuXHQgKiBAcGFyYW0gZGlzcGxheSBXaGV0aGVyIHRvIHNob3cgaW4gVFVJICh0cnVlID0gc3R5bGVkIGRpc3BsYXksIGZhbHNlID0gaGlkZGVuKVxuXHQgKiBAcGFyYW0gZGV0YWlscyBPcHRpb25hbCBob29rLXNwZWNpZmljIG1ldGFkYXRhIChub3Qgc2VudCB0byBMTE0pXG5cdCAqIEByZXR1cm5zIEVudHJ5IGlkXG5cdCAqL1xuXHRhcHBlbmRDdXN0b21NZXNzYWdlRW50cnk8VCA9IHVua25vd24+KFxuXHRcdGN1c3RvbVR5cGU6IHN0cmluZyxcblx0XHRjb250ZW50OiBzdHJpbmcgfCAoVGV4dENvbnRlbnQgfCBJbWFnZUNvbnRlbnQpW10sXG5cdFx0ZGlzcGxheTogYm9vbGVhbixcblx0XHRkZXRhaWxzPzogVCxcblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBlbnRyeTogQ3VzdG9tTWVzc2FnZUVudHJ5PFQ+ID0ge1xuXHRcdFx0dHlwZTogXCJjdXN0b21fbWVzc2FnZVwiLFxuXHRcdFx0Y3VzdG9tVHlwZSxcblx0XHRcdGNvbnRlbnQsXG5cdFx0XHRkaXNwbGF5LFxuXHRcdFx0ZGV0YWlscyxcblx0XHRcdGlkOiBnZW5lcmF0ZUlkKHRoaXMuYnlJZCksXG5cdFx0XHRwYXJlbnRJZDogdGhpcy5sZWFmSWQsXG5cdFx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHR9O1xuXHRcdHRoaXMuX2FwcGVuZEVudHJ5KGVudHJ5KTtcblx0XHRyZXR1cm4gZW50cnkuaWQ7XG5cdH1cblxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cdC8vIFRyZWUgVHJhdmVyc2FsXG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHRnZXRMZWFmSWQoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMubGVhZklkO1xuXHR9XG5cblx0Z2V0TGVhZkVudHJ5KCk6IFNlc3Npb25FbnRyeSB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMubGVhZklkID8gdGhpcy5ieUlkLmdldCh0aGlzLmxlYWZJZCkgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRFbnRyeShpZDogc3RyaW5nKTogU2Vzc2lvbkVudHJ5IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5ieUlkLmdldChpZCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFsbCBkaXJlY3QgY2hpbGRyZW4gb2YgYW4gZW50cnkuXG5cdCAqL1xuXHRnZXRDaGlsZHJlbihwYXJlbnRJZDogc3RyaW5nKTogU2Vzc2lvbkVudHJ5W10ge1xuXHRcdGNvbnN0IGNoaWxkcmVuOiBTZXNzaW9uRW50cnlbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5ieUlkLnZhbHVlcygpKSB7XG5cdFx0XHRpZiAoZW50cnkucGFyZW50SWQgPT09IHBhcmVudElkKSB7XG5cdFx0XHRcdGNoaWxkcmVuLnB1c2goZW50cnkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2hpbGRyZW47XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBsYWJlbCBmb3IgYW4gZW50cnksIGlmIGFueS5cblx0ICovXG5cdGdldExhYmVsKGlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmxhYmVsc0J5SWQuZ2V0KGlkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgb3IgY2xlYXIgYSBsYWJlbCBvbiBhbiBlbnRyeS5cblx0ICogTGFiZWxzIGFyZSB1c2VyLWRlZmluZWQgbWFya2VycyBmb3IgYm9va21hcmtpbmcvbmF2aWdhdGlvbi5cblx0ICogUGFzcyB1bmRlZmluZWQgb3IgZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBsYWJlbC5cblx0ICovXG5cdGFwcGVuZExhYmVsQ2hhbmdlKHRhcmdldElkOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuXHRcdGlmICghdGhpcy5ieUlkLmhhcyh0YXJnZXRJZCkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRW50cnkgJHt0YXJnZXRJZH0gbm90IGZvdW5kYCk7XG5cdFx0fVxuXHRcdGNvbnN0IGVudHJ5OiBMYWJlbEVudHJ5ID0ge1xuXHRcdFx0dHlwZTogXCJsYWJlbFwiLFxuXHRcdFx0aWQ6IGdlbmVyYXRlSWQodGhpcy5ieUlkKSxcblx0XHRcdHBhcmVudElkOiB0aGlzLmxlYWZJZCxcblx0XHRcdHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0dGFyZ2V0SWQsXG5cdFx0XHRsYWJlbCxcblx0XHR9O1xuXHRcdHRoaXMuX2FwcGVuZEVudHJ5KGVudHJ5KTtcblx0XHRpZiAobGFiZWwpIHtcblx0XHRcdHRoaXMubGFiZWxzQnlJZC5zZXQodGFyZ2V0SWQsIGxhYmVsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5sYWJlbHNCeUlkLmRlbGV0ZSh0YXJnZXRJZCk7XG5cdFx0fVxuXHRcdHJldHVybiBlbnRyeS5pZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXYWxrIGZyb20gZW50cnkgdG8gcm9vdCwgcmV0dXJuaW5nIGFsbCBlbnRyaWVzIGluIHBhdGggb3JkZXIuXG5cdCAqIEluY2x1ZGVzIGFsbCBlbnRyeSB0eXBlcyAobWVzc2FnZXMsIGNvbXBhY3Rpb24sIG1vZGVsIGNoYW5nZXMsIGV0Yy4pLlxuXHQgKiBVc2UgYnVpbGRTZXNzaW9uQ29udGV4dCgpIHRvIGdldCB0aGUgcmVzb2x2ZWQgbWVzc2FnZXMgZm9yIHRoZSBMTE0uXG5cdCAqL1xuXHRnZXRCcmFuY2goZnJvbUlkPzogc3RyaW5nKTogU2Vzc2lvbkVudHJ5W10ge1xuXHRcdGNvbnN0IHBhdGg6IFNlc3Npb25FbnRyeVtdID0gW107XG5cdFx0Y29uc3Qgc3RhcnRJZCA9IGZyb21JZCA/PyB0aGlzLmxlYWZJZDtcblx0XHRsZXQgY3VycmVudCA9IHN0YXJ0SWQgPyB0aGlzLmJ5SWQuZ2V0KHN0YXJ0SWQpIDogdW5kZWZpbmVkO1xuXHRcdHdoaWxlIChjdXJyZW50KSB7XG5cdFx0XHRwYXRoLnVuc2hpZnQoY3VycmVudCk7XG5cdFx0XHRjdXJyZW50ID0gY3VycmVudC5wYXJlbnRJZCA/IHRoaXMuYnlJZC5nZXQoY3VycmVudC5wYXJlbnRJZCkgOiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBwYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkIHRoZSBzZXNzaW9uIGNvbnRleHQgKHdoYXQgZ2V0cyBzZW50IHRvIHRoZSBMTE0pLlxuXHQgKiBVc2VzIHRyZWUgdHJhdmVyc2FsIGZyb20gY3VycmVudCBsZWFmLlxuXHQgKi9cblx0YnVpbGRTZXNzaW9uQ29udGV4dCgpOiBTZXNzaW9uQ29udGV4dCB7XG5cdFx0cmV0dXJuIGJ1aWxkU2Vzc2lvbkNvbnRleHQodGhpcy5nZXRFbnRyaWVzKCksIHRoaXMubGVhZklkLCB0aGlzLmJ5SWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBzZXNzaW9uIGhlYWRlci5cblx0ICovXG5cdGdldEhlYWRlcigpOiBTZXNzaW9uSGVhZGVyIHwgbnVsbCB7XG5cdFx0Y29uc3QgaCA9IHRoaXMuZmlsZUVudHJpZXMuZmluZCgoZSkgPT4gZS50eXBlID09PSBcInNlc3Npb25cIik7XG5cdFx0cmV0dXJuIGggPyAoaCBhcyBTZXNzaW9uSGVhZGVyKSA6IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFsbCBzZXNzaW9uIGVudHJpZXMgKGV4Y2x1ZGVzIGhlYWRlcikuIFJldHVybnMgYSBzaGFsbG93IGNvcHkuXG5cdCAqIFRoZSBzZXNzaW9uIGlzIGFwcGVuZC1vbmx5OiB1c2UgYXBwZW5kWFhYKCkgdG8gYWRkIGVudHJpZXMsIGJyYW5jaCgpIHRvXG5cdCAqIGNoYW5nZSB0aGUgbGVhZiBwb2ludGVyLiBFbnRyaWVzIGNhbm5vdCBiZSBtb2RpZmllZCBvciBkZWxldGVkLlxuXHQgKi9cblx0Z2V0RW50cmllcygpOiBTZXNzaW9uRW50cnlbXSB7XG5cdFx0cmV0dXJuIHRoaXMuZmlsZUVudHJpZXMuZmlsdGVyKChlKTogZSBpcyBTZXNzaW9uRW50cnkgPT4gZS50eXBlICE9PSBcInNlc3Npb25cIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZXNzaW9uIGFzIGEgdHJlZSBzdHJ1Y3R1cmUuIFJldHVybnMgYSBzaGFsbG93IGRlZmVuc2l2ZSBjb3B5IG9mIGFsbCBlbnRyaWVzLlxuXHQgKiBBIHdlbGwtZm9ybWVkIHNlc3Npb24gaGFzIGV4YWN0bHkgb25lIHJvb3QgKGZpcnN0IGVudHJ5IHdpdGggcGFyZW50SWQgPT09IG51bGwpLlxuXHQgKiBPcnBoYW5lZCBlbnRyaWVzIChicm9rZW4gcGFyZW50IGNoYWluKSBhcmUgYWxzbyByZXR1cm5lZCBhcyByb290cy5cblx0ICovXG5cdGdldFRyZWUoKTogU2Vzc2lvblRyZWVOb2RlW10ge1xuXHRcdGNvbnN0IGVudHJpZXMgPSB0aGlzLmdldEVudHJpZXMoKTtcblx0XHRjb25zdCBub2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFNlc3Npb25UcmVlTm9kZT4oKTtcblx0XHRjb25zdCByb290czogU2Vzc2lvblRyZWVOb2RlW10gPSBbXTtcblxuXHRcdC8vIENyZWF0ZSBub2RlcyB3aXRoIHJlc29sdmVkIGxhYmVsc1xuXHRcdGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuXHRcdFx0Y29uc3QgbGFiZWwgPSB0aGlzLmxhYmVsc0J5SWQuZ2V0KGVudHJ5LmlkKTtcblx0XHRcdG5vZGVNYXAuc2V0KGVudHJ5LmlkLCB7IGVudHJ5LCBjaGlsZHJlbjogW10sIGxhYmVsIH0pO1xuXHRcdH1cblxuXHRcdC8vIEJ1aWxkIHRyZWVcblx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcblx0XHRcdGNvbnN0IG5vZGUgPSBub2RlTWFwLmdldChlbnRyeS5pZCkhO1xuXHRcdFx0aWYgKGVudHJ5LnBhcmVudElkID09PSBudWxsIHx8IGVudHJ5LnBhcmVudElkID09PSBlbnRyeS5pZCkge1xuXHRcdFx0XHRyb290cy5wdXNoKG5vZGUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgcGFyZW50ID0gbm9kZU1hcC5nZXQoZW50cnkucGFyZW50SWQpO1xuXHRcdFx0XHRpZiAocGFyZW50KSB7XG5cdFx0XHRcdFx0cGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gT3JwaGFuIC0gdHJlYXQgYXMgcm9vdFxuXHRcdFx0XHRcdHJvb3RzLnB1c2gobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTb3J0IGNoaWxkcmVuIGJ5IHRpbWVzdGFtcCAob2xkZXN0IGZpcnN0LCBuZXdlc3QgYXQgYm90dG9tKVxuXHRcdC8vIFVzZSBpdGVyYXRpdmUgYXBwcm9hY2ggdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cgb24gZGVlcCB0cmVlc1xuXHRcdGNvbnN0IHN0YWNrOiBTZXNzaW9uVHJlZU5vZGVbXSA9IFsuLi5yb290c107XG5cdFx0d2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG5vZGUgPSBzdGFjay5wb3AoKSE7XG5cdFx0XHRub2RlLmNoaWxkcmVuLnNvcnQoKGEsIGIpID0+IG5ldyBEYXRlKGEuZW50cnkudGltZXN0YW1wKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShiLmVudHJ5LnRpbWVzdGFtcCkuZ2V0VGltZSgpKTtcblx0XHRcdHN0YWNrLnB1c2goLi4ubm9kZS5jaGlsZHJlbik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJvb3RzO1xuXHR9XG5cblx0Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXHQvLyBCcmFuY2hpbmdcblx0Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cdC8qKlxuXHQgKiBTdGFydCBhIG5ldyBicmFuY2ggZnJvbSBhbiBlYXJsaWVyIGVudHJ5LlxuXHQgKiBNb3ZlcyB0aGUgbGVhZiBwb2ludGVyIHRvIHRoZSBzcGVjaWZpZWQgZW50cnkuIFRoZSBuZXh0IGFwcGVuZFhYWCgpIGNhbGxcblx0ICogd2lsbCBjcmVhdGUgYSBjaGlsZCBvZiB0aGF0IGVudHJ5LCBmb3JtaW5nIGEgbmV3IGJyYW5jaC4gRXhpc3RpbmcgZW50cmllc1xuXHQgKiBhcmUgbm90IG1vZGlmaWVkIG9yIGRlbGV0ZWQuXG5cdCAqL1xuXHRicmFuY2goYnJhbmNoRnJvbUlkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuYnlJZC5oYXMoYnJhbmNoRnJvbUlkKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBFbnRyeSAke2JyYW5jaEZyb21JZH0gbm90IGZvdW5kYCk7XG5cdFx0fVxuXHRcdHRoaXMubGVhZklkID0gYnJhbmNoRnJvbUlkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSBsZWFmIHBvaW50ZXIgdG8gbnVsbCAoYmVmb3JlIGFueSBlbnRyaWVzKS5cblx0ICogVGhlIG5leHQgYXBwZW5kWFhYKCkgY2FsbCB3aWxsIGNyZWF0ZSBhIG5ldyByb290IGVudHJ5IChwYXJlbnRJZCA9IG51bGwpLlxuXHQgKiBVc2UgdGhpcyB3aGVuIG5hdmlnYXRpbmcgdG8gcmUtZWRpdCB0aGUgZmlyc3QgdXNlciBtZXNzYWdlLlxuXHQgKi9cblx0cmVzZXRMZWFmKCk6IHZvaWQge1xuXHRcdHRoaXMubGVhZklkID0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdGFydCBhIG5ldyBicmFuY2ggd2l0aCBhIHN1bW1hcnkgb2YgdGhlIGFiYW5kb25lZCBwYXRoLlxuXHQgKiBTYW1lIGFzIGJyYW5jaCgpLCBidXQgYWxzbyBhcHBlbmRzIGEgYnJhbmNoX3N1bW1hcnkgZW50cnkgdGhhdCBjYXB0dXJlc1xuXHQgKiBjb250ZXh0IGZyb20gdGhlIGFiYW5kb25lZCBjb252ZXJzYXRpb24gcGF0aC5cblx0ICovXG5cdGJyYW5jaFdpdGhTdW1tYXJ5KGJyYW5jaEZyb21JZDogc3RyaW5nIHwgbnVsbCwgc3VtbWFyeTogc3RyaW5nLCBkZXRhaWxzPzogdW5rbm93biwgZnJvbUhvb2s/OiBib29sZWFuKTogc3RyaW5nIHtcblx0XHRpZiAoYnJhbmNoRnJvbUlkICE9PSBudWxsICYmICF0aGlzLmJ5SWQuaGFzKGJyYW5jaEZyb21JZCkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRW50cnkgJHticmFuY2hGcm9tSWR9IG5vdCBmb3VuZGApO1xuXHRcdH1cblx0XHR0aGlzLmxlYWZJZCA9IGJyYW5jaEZyb21JZDtcblx0XHRjb25zdCBlbnRyeTogQnJhbmNoU3VtbWFyeUVudHJ5ID0ge1xuXHRcdFx0dHlwZTogXCJicmFuY2hfc3VtbWFyeVwiLFxuXHRcdFx0aWQ6IGdlbmVyYXRlSWQodGhpcy5ieUlkKSxcblx0XHRcdHBhcmVudElkOiBicmFuY2hGcm9tSWQsXG5cdFx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGZyb21JZDogYnJhbmNoRnJvbUlkID8/IFwicm9vdFwiLFxuXHRcdFx0c3VtbWFyeSxcblx0XHRcdGRldGFpbHMsXG5cdFx0XHRmcm9tSG9vayxcblx0XHR9O1xuXHRcdHRoaXMuX2FwcGVuZEVudHJ5KGVudHJ5KTtcblx0XHRyZXR1cm4gZW50cnkuaWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIGEgbmV3IHNlc3Npb24gZmlsZSBjb250YWluaW5nIG9ubHkgdGhlIHBhdGggZnJvbSByb290IHRvIHRoZSBzcGVjaWZpZWQgbGVhZi5cblx0ICogVXNlZnVsIGZvciBleHRyYWN0aW5nIGEgc2luZ2xlIGNvbnZlcnNhdGlvbiBwYXRoIGZyb20gYSBicmFuY2hlZCBzZXNzaW9uLlxuXHQgKiBSZXR1cm5zIHRoZSBuZXcgc2Vzc2lvbiBmaWxlIHBhdGgsIG9yIHVuZGVmaW5lZCBpZiBub3QgcGVyc2lzdGluZy5cblx0ICovXG5cdGNyZWF0ZUJyYW5jaGVkU2Vzc2lvbihsZWFmSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcGF0aCA9IHRoaXMuZ2V0QnJhbmNoKGxlYWZJZCk7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEVudHJ5ICR7bGVhZklkfSBub3QgZm91bmRgKTtcblx0XHR9XG5cblx0XHQvLyBGaWx0ZXIgb3V0IExhYmVsRW50cnkgZnJvbSBwYXRoIC0gd2UnbGwgcmVjcmVhdGUgdGhlbSBmcm9tIHRoZSByZXNvbHZlZCBtYXBcblx0XHRjb25zdCBwYXRoV2l0aG91dExhYmVscyA9IHBhdGguZmlsdGVyKChlKSA9PiBlLnR5cGUgIT09IFwibGFiZWxcIik7XG5cblx0XHRjb25zdCBuZXdTZXNzaW9uSWQgPSByYW5kb21VVUlEKCk7XG5cdFx0Y29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXHRcdGNvbnN0IGZpbGVUaW1lc3RhbXAgPSB0aW1lc3RhbXAucmVwbGFjZSgvWzouXS9nLCBcIi1cIik7XG5cdFx0Y29uc3QgbmV3U2Vzc2lvbkZpbGUgPSBqb2luKHRoaXMuZ2V0U2Vzc2lvbkRpcigpLCBgJHtmaWxlVGltZXN0YW1wfV8ke25ld1Nlc3Npb25JZH0uanNvbmxgKTtcblxuXHRcdGNvbnN0IGhlYWRlcjogU2Vzc2lvbkhlYWRlciA9IHtcblx0XHRcdHR5cGU6IFwic2Vzc2lvblwiLFxuXHRcdFx0dmVyc2lvbjogQ1VSUkVOVF9TRVNTSU9OX1ZFUlNJT04sXG5cdFx0XHRpZDogbmV3U2Vzc2lvbklkLFxuXHRcdFx0dGltZXN0YW1wLFxuXHRcdFx0Y3dkOiB0aGlzLmN3ZCxcblx0XHRcdGJyYW5jaGVkRnJvbTogdGhpcy5wZXJzaXN0ID8gdGhpcy5zZXNzaW9uRmlsZSA6IHVuZGVmaW5lZCxcblx0XHR9O1xuXG5cdFx0Ly8gQ29sbGVjdCBsYWJlbHMgZm9yIGVudHJpZXMgaW4gdGhlIHBhdGhcblx0XHRjb25zdCBwYXRoRW50cnlJZHMgPSBuZXcgU2V0KHBhdGhXaXRob3V0TGFiZWxzLm1hcCgoZSkgPT4gZS5pZCkpO1xuXHRcdGNvbnN0IGxhYmVsc1RvV3JpdGU6IEFycmF5PHsgdGFyZ2V0SWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9PiA9IFtdO1xuXHRcdGZvciAoY29uc3QgW3RhcmdldElkLCBsYWJlbF0gb2YgdGhpcy5sYWJlbHNCeUlkKSB7XG5cdFx0XHRpZiAocGF0aEVudHJ5SWRzLmhhcyh0YXJnZXRJZCkpIHtcblx0XHRcdFx0bGFiZWxzVG9Xcml0ZS5wdXNoKHsgdGFyZ2V0SWQsIGxhYmVsIH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnBlcnNpc3QpIHtcblx0XHRcdGFwcGVuZEZpbGVTeW5jKG5ld1Nlc3Npb25GaWxlLCBgJHtKU09OLnN0cmluZ2lmeShoZWFkZXIpfVxcbmApO1xuXHRcdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBwYXRoV2l0aG91dExhYmVscykge1xuXHRcdFx0XHRhcHBlbmRGaWxlU3luYyhuZXdTZXNzaW9uRmlsZSwgYCR7SlNPTi5zdHJpbmdpZnkoZW50cnkpfVxcbmApO1xuXHRcdFx0fVxuXHRcdFx0Ly8gV3JpdGUgZnJlc2ggbGFiZWwgZW50cmllcyBhdCB0aGUgZW5kXG5cdFx0XHRjb25zdCBsYXN0RW50cnlJZCA9IHBhdGhXaXRob3V0TGFiZWxzW3BhdGhXaXRob3V0TGFiZWxzLmxlbmd0aCAtIDFdPy5pZCB8fCBudWxsO1xuXHRcdFx0bGV0IHBhcmVudElkID0gbGFzdEVudHJ5SWQ7XG5cdFx0XHRjb25zdCBsYWJlbEVudHJpZXM6IExhYmVsRW50cnlbXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCB7IHRhcmdldElkLCBsYWJlbCB9IG9mIGxhYmVsc1RvV3JpdGUpIHtcblx0XHRcdFx0Y29uc3QgbGFiZWxFbnRyeTogTGFiZWxFbnRyeSA9IHtcblx0XHRcdFx0XHR0eXBlOiBcImxhYmVsXCIsXG5cdFx0XHRcdFx0aWQ6IGdlbmVyYXRlSWQobmV3IFNldChwYXRoRW50cnlJZHMpKSxcblx0XHRcdFx0XHRwYXJlbnRJZCxcblx0XHRcdFx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdFx0XHR0YXJnZXRJZCxcblx0XHRcdFx0XHRsYWJlbCxcblx0XHRcdFx0fTtcblx0XHRcdFx0YXBwZW5kRmlsZVN5bmMobmV3U2Vzc2lvbkZpbGUsIGAke0pTT04uc3RyaW5naWZ5KGxhYmVsRW50cnkpfVxcbmApO1xuXHRcdFx0XHRwYXRoRW50cnlJZHMuYWRkKGxhYmVsRW50cnkuaWQpO1xuXHRcdFx0XHRsYWJlbEVudHJpZXMucHVzaChsYWJlbEVudHJ5KTtcblx0XHRcdFx0cGFyZW50SWQgPSBsYWJlbEVudHJ5LmlkO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5maWxlRW50cmllcyA9IFtoZWFkZXIsIC4uLnBhdGhXaXRob3V0TGFiZWxzLCAuLi5sYWJlbEVudHJpZXNdO1xuXHRcdFx0dGhpcy5zZXNzaW9uSWQgPSBuZXdTZXNzaW9uSWQ7XG5cdFx0XHR0aGlzLl9idWlsZEluZGV4KCk7XG5cdFx0XHRyZXR1cm4gbmV3U2Vzc2lvbkZpbGU7XG5cdFx0fVxuXG5cdFx0Ly8gSW4tbWVtb3J5IG1vZGU6IHJlcGxhY2UgY3VycmVudCBzZXNzaW9uIHdpdGggdGhlIHBhdGggKyBsYWJlbHNcblx0XHRjb25zdCBsYWJlbEVudHJpZXM6IExhYmVsRW50cnlbXSA9IFtdO1xuXHRcdGxldCBwYXJlbnRJZCA9IHBhdGhXaXRob3V0TGFiZWxzW3BhdGhXaXRob3V0TGFiZWxzLmxlbmd0aCAtIDFdPy5pZCB8fCBudWxsO1xuXHRcdGZvciAoY29uc3QgeyB0YXJnZXRJZCwgbGFiZWwgfSBvZiBsYWJlbHNUb1dyaXRlKSB7XG5cdFx0XHRjb25zdCBsYWJlbEVudHJ5OiBMYWJlbEVudHJ5ID0ge1xuXHRcdFx0XHR0eXBlOiBcImxhYmVsXCIsXG5cdFx0XHRcdGlkOiBnZW5lcmF0ZUlkKG5ldyBTZXQoWy4uLnBhdGhFbnRyeUlkcywgLi4ubGFiZWxFbnRyaWVzLm1hcCgoZSkgPT4gZS5pZCldKSksXG5cdFx0XHRcdHBhcmVudElkLFxuXHRcdFx0XHR0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdFx0dGFyZ2V0SWQsXG5cdFx0XHRcdGxhYmVsLFxuXHRcdFx0fTtcblx0XHRcdGxhYmVsRW50cmllcy5wdXNoKGxhYmVsRW50cnkpO1xuXHRcdFx0cGFyZW50SWQgPSBsYWJlbEVudHJ5LmlkO1xuXHRcdH1cblx0XHR0aGlzLmZpbGVFbnRyaWVzID0gW2hlYWRlciwgLi4ucGF0aFdpdGhvdXRMYWJlbHMsIC4uLmxhYmVsRW50cmllc107XG5cdFx0dGhpcy5zZXNzaW9uSWQgPSBuZXdTZXNzaW9uSWQ7XG5cdFx0dGhpcy5fYnVpbGRJbmRleCgpO1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIGEgbmV3IHNlc3Npb24uXG5cdCAqIEBwYXJhbSBjd2QgV29ya2luZyBkaXJlY3RvcnkgKHN0b3JlZCBpbiBzZXNzaW9uIGhlYWRlcilcblx0ICogQHBhcmFtIHNlc3Npb25EaXIgT3B0aW9uYWwgc2Vzc2lvbiBkaXJlY3RvcnkuIElmIG9taXR0ZWQsIHVzZXMgZGVmYXVsdCAofi8ucGkvYWdlbnQvc2Vzc2lvbnMvPGVuY29kZWQtY3dkPi8pLlxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZShjd2Q6IHN0cmluZywgc2Vzc2lvbkRpcj86IHN0cmluZyk6IFNlc3Npb25NYW5hZ2VyIHtcblx0XHRjb25zdCBkaXIgPSBzZXNzaW9uRGlyID8/IGdldERlZmF1bHRTZXNzaW9uRGlyKGN3ZCk7XG5cdFx0cmV0dXJuIG5ldyBTZXNzaW9uTWFuYWdlcihjd2QsIGRpciwgdW5kZWZpbmVkLCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVuIGEgc3BlY2lmaWMgc2Vzc2lvbiBmaWxlLlxuXHQgKiBAcGFyYW0gcGF0aCBQYXRoIHRvIHNlc3Npb24gZmlsZVxuXHQgKiBAcGFyYW0gc2Vzc2lvbkRpciBPcHRpb25hbCBzZXNzaW9uIGRpcmVjdG9yeSBmb3IgL25ldyBvciAvYnJhbmNoLiBJZiBvbWl0dGVkLCBkZXJpdmVzIGZyb20gZmlsZSdzIHBhcmVudC5cblx0ICovXG5cdHN0YXRpYyBvcGVuKHBhdGg6IHN0cmluZywgc2Vzc2lvbkRpcj86IHN0cmluZyk6IFNlc3Npb25NYW5hZ2VyIHtcblx0XHQvLyBFeHRyYWN0IGN3ZCBmcm9tIHNlc3Npb24gaGVhZGVyIGlmIHBvc3NpYmxlLCBvdGhlcndpc2UgdXNlIHByb2Nlc3MuY3dkKClcblx0XHRjb25zdCBlbnRyaWVzID0gbG9hZEVudHJpZXNGcm9tRmlsZShwYXRoKTtcblx0XHRjb25zdCBoZWFkZXIgPSBlbnRyaWVzLmZpbmQoKGUpID0+IGUudHlwZSA9PT0gXCJzZXNzaW9uXCIpIGFzIFNlc3Npb25IZWFkZXIgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgY3dkID0gaGVhZGVyPy5jd2QgPz8gcHJvY2Vzcy5jd2QoKTtcblx0XHQvLyBJZiBubyBzZXNzaW9uRGlyIHByb3ZpZGVkLCBkZXJpdmUgZnJvbSBmaWxlJ3MgcGFyZW50IGRpcmVjdG9yeVxuXHRcdGNvbnN0IGRpciA9IHNlc3Npb25EaXIgPz8gcmVzb2x2ZShwYXRoLCBcIi4uXCIpO1xuXHRcdHJldHVybiBuZXcgU2Vzc2lvbk1hbmFnZXIoY3dkLCBkaXIsIHBhdGgsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnRpbnVlIHRoZSBtb3N0IHJlY2VudCBzZXNzaW9uLCBvciBjcmVhdGUgbmV3IGlmIG5vbmUuXG5cdCAqIEBwYXJhbSBjd2QgV29ya2luZyBkaXJlY3Rvcnlcblx0ICogQHBhcmFtIHNlc3Npb25EaXIgT3B0aW9uYWwgc2Vzc2lvbiBkaXJlY3RvcnkuIElmIG9taXR0ZWQsIHVzZXMgZGVmYXVsdCAofi8ucGkvYWdlbnQvc2Vzc2lvbnMvPGVuY29kZWQtY3dkPi8pLlxuXHQgKi9cblx0c3RhdGljIGNvbnRpbnVlUmVjZW50KGN3ZDogc3RyaW5nLCBzZXNzaW9uRGlyPzogc3RyaW5nKTogU2Vzc2lvbk1hbmFnZXIge1xuXHRcdGNvbnN0IGRpciA9IHNlc3Npb25EaXIgPz8gZ2V0RGVmYXVsdFNlc3Npb25EaXIoY3dkKTtcblx0XHRjb25zdCBtb3N0UmVjZW50ID0gZmluZE1vc3RSZWNlbnRTZXNzaW9uKGRpcik7XG5cdFx0aWYgKG1vc3RSZWNlbnQpIHtcblx0XHRcdHJldHVybiBuZXcgU2Vzc2lvbk1hbmFnZXIoY3dkLCBkaXIsIG1vc3RSZWNlbnQsIHRydWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFNlc3Npb25NYW5hZ2VyKGN3ZCwgZGlyLCB1bmRlZmluZWQsIHRydWUpO1xuXHR9XG5cblx0LyoqIENyZWF0ZSBhbiBpbi1tZW1vcnkgc2Vzc2lvbiAobm8gZmlsZSBwZXJzaXN0ZW5jZSkgKi9cblx0c3RhdGljIGluTWVtb3J5KGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IFNlc3Npb25NYW5hZ2VyIHtcblx0XHRyZXR1cm4gbmV3IFNlc3Npb25NYW5hZ2VyKGN3ZCwgXCJcIiwgdW5kZWZpbmVkLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogTGlzdCBhbGwgc2Vzc2lvbnMuXG5cdCAqIEBwYXJhbSBjd2QgV29ya2luZyBkaXJlY3RvcnkgKHVzZWQgdG8gY29tcHV0ZSBkZWZhdWx0IHNlc3Npb24gZGlyZWN0b3J5KVxuXHQgKiBAcGFyYW0gc2Vzc2lvbkRpciBPcHRpb25hbCBzZXNzaW9uIGRpcmVjdG9yeS4gSWYgb21pdHRlZCwgdXNlcyBkZWZhdWx0ICh+Ly5waS9hZ2VudC9zZXNzaW9ucy88ZW5jb2RlZC1jd2Q+LykuXG5cdCAqL1xuXHRzdGF0aWMgbGlzdChjd2Q6IHN0cmluZywgc2Vzc2lvbkRpcj86IHN0cmluZyk6IFNlc3Npb25JbmZvW10ge1xuXHRcdGNvbnN0IGRpciA9IHNlc3Npb25EaXIgPz8gZ2V0RGVmYXVsdFNlc3Npb25EaXIoY3dkKTtcblx0XHRjb25zdCBzZXNzaW9uczogU2Vzc2lvbkluZm9bXSA9IFtdO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGZpbGVzID0gcmVhZGRpclN5bmMoZGlyKVxuXHRcdFx0XHQuZmlsdGVyKChmKSA9PiBmLmVuZHNXaXRoKFwiLmpzb25sXCIpKVxuXHRcdFx0XHQubWFwKChmKSA9PiBqb2luKGRpciwgZikpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKGZpbGUsIFwidXRmOFwiKTtcblx0XHRcdFx0XHRjb25zdCBsaW5lcyA9IGNvbnRlbnQudHJpbSgpLnNwbGl0KFwiXFxuXCIpO1xuXHRcdFx0XHRcdGlmIChsaW5lcy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZmlyc3QgbGluZSBmb3IgdmFsaWQgc2Vzc2lvbiBoZWFkZXJcblx0XHRcdFx0XHRsZXQgaGVhZGVyOiB7IHR5cGU6IHN0cmluZzsgaWQ6IHN0cmluZzsgdGltZXN0YW1wOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBmaXJzdCA9IEpTT04ucGFyc2UobGluZXNbMF0pO1xuXHRcdFx0XHRcdFx0aWYgKGZpcnN0LnR5cGUgPT09IFwic2Vzc2lvblwiICYmIGZpcnN0LmlkKSB7XG5cdFx0XHRcdFx0XHRcdGhlYWRlciA9IGZpcnN0O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdFx0Ly8gTm90IHZhbGlkIEpTT05cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFoZWFkZXIpIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0Y29uc3Qgc3RhdHMgPSBzdGF0U3luYyhmaWxlKTtcblx0XHRcdFx0XHRsZXQgbWVzc2FnZUNvdW50ID0gMDtcblx0XHRcdFx0XHRsZXQgZmlyc3RNZXNzYWdlID0gXCJcIjtcblx0XHRcdFx0XHRjb25zdCBhbGxNZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGVudHJ5ID0gSlNPTi5wYXJzZShsaW5lc1tpXSk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGVudHJ5LnR5cGUgPT09IFwibWVzc2FnZVwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUNvdW50Kys7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoZW50cnkubWVzc2FnZS5yb2xlID09PSBcInVzZXJcIiB8fCBlbnRyeS5tZXNzYWdlLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRleHRDb250ZW50ID0gZW50cnkubWVzc2FnZS5jb250ZW50XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5maWx0ZXIoKGM6IGFueSkgPT4gYy50eXBlID09PSBcInRleHRcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0Lm1hcCgoYzogYW55KSA9PiBjLnRleHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5qb2luKFwiIFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRleHRDb250ZW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFsbE1lc3NhZ2VzLnB1c2godGV4dENvbnRlbnQpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghZmlyc3RNZXNzYWdlICYmIGVudHJ5Lm1lc3NhZ2Uucm9sZSA9PT0gXCJ1c2VyXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaXJzdE1lc3NhZ2UgPSB0ZXh0Q29udGVudDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdFx0XHRcdC8vIFNraXAgbWFsZm9ybWVkIGxpbmVzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0c2Vzc2lvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRwYXRoOiBmaWxlLFxuXHRcdFx0XHRcdFx0aWQ6IGhlYWRlci5pZCxcblx0XHRcdFx0XHRcdGNyZWF0ZWQ6IG5ldyBEYXRlKGhlYWRlci50aW1lc3RhbXApLFxuXHRcdFx0XHRcdFx0bW9kaWZpZWQ6IHN0YXRzLm10aW1lLFxuXHRcdFx0XHRcdFx0bWVzc2FnZUNvdW50LFxuXHRcdFx0XHRcdFx0Zmlyc3RNZXNzYWdlOiBmaXJzdE1lc3NhZ2UgfHwgXCIobm8gbWVzc2FnZXMpXCIsXG5cdFx0XHRcdFx0XHRhbGxNZXNzYWdlc1RleHQ6IGFsbE1lc3NhZ2VzLmpvaW4oXCIgXCIpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHQvLyBTa2lwIGZpbGVzIHRoYXQgY2FuJ3QgYmUgcmVhZFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHNlc3Npb25zLnNvcnQoKGEsIGIpID0+IGIubW9kaWZpZWQuZ2V0VGltZSgpIC0gYS5tb2RpZmllZC5nZXRUaW1lKCkpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0Ly8gUmV0dXJuIGVtcHR5IGxpc3Qgb24gZXJyb3Jcblx0XHR9XG5cblx0XHRyZXR1cm4gc2Vzc2lvbnM7XG5cdH1cbn1cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMTQyMzc1N319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjMyMTRkYTU4IiwicGFyZW50SWQiOiIwNjc3MzRjMyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6Mzc6MDQuMTIzWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOltdLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjAsIm91dHB1dCI6MCwiY2FjaGVSZWFkIjowLCJjYWNoZVdyaXRlIjowLCJ0b3RhbFRva2VucyI6MCwiY29zdCI6eyJpbnB1dCI6MCwib3V0cHV0IjowLCJjYWNoZVJlYWQiOjAsImNhY2hlV3JpdGUiOjAsInRvdGFsIjowfX0sInN0b3BSZWFzb24iOiJhYm9ydGVkIiwidGltZXN0YW1wIjoxNzY3MjMxNDIzNzgwLCJlcnJvck1lc3NhZ2UiOiJSZXF1ZXN0IHdhcyBhYm9ydGVkLiJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwMTBlZTI2OSIsInBhcmVudElkIjoiMzIxNGRhNTgiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjM4OjUyLjg0OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ1c2VyIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0Ijoib2gsIGFuZCBvbmUgbW9yZSByZWxhdGVkIFBSIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL3B1bGwvMzM1L2NoYW5nZXMgdGhvIHRoZSBjb250cmlidXRvciBjbG9zZWQgaXQuIG5vdCBzdXJlIGhvdyBpIGZlZWwgYWJvdXQgaXQuIn1dLCJ0aW1lc3RhbXAiOjE3NjcyMzE1MzI4NDZ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI5ZWJiYjBhNiIsInBhcmVudElkIjoiMDEwZWUyNjkiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjM4OjU3LjYwMVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSB1c2VyIHdhbnRzIG1lIHRvIGxvb2sgYXQgUFIgIzMzNSBhcyB3ZWxsLiBMZXQgbWUgZmV0Y2ggdGhhdC4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1Z0JDa1lJQ3hnQ0trQngySGxlSmgyak10MUUremMzVm9lTUtxaGZVNXVlUStWTXFqVHQvNC9TeGhsUGdVQW0yc3NZL3FwTlhnb3h3OWJLSHZld2IyZUVObzRpa2QrUWxON2JFZ3lFcVRZLzZaL0RyZEI5NkxnYURIT3Ewa0Q2bjVTaHFmZjQxU0l3SUdXd3U4Vm9xbFFkc1pyRks0T0o3UkxQZ3R4bFV6UFk4b3l2aGVQUkhnUkxVZVVoVUFRV3MwWElXWEl5Z2RPNEtsQTYxQlVnYk1OM1dmakZ0Kzc0YTlGQkk4SU5xWEpWajkwRkMza29uUG5pd1FBUFFxT0xIenRBdnlLOE9QRmp3b015Zm94bGtDZUxYeVNwUUZzbStIQVl4Zjl1RitIRjJnLzk5NGdCZVZNMlVCZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDE4MUtrUDVMVFJHUlRuUEM1b294b0NhIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdoIHByIHZpZXcgMzM1IC0tcmVwbyBiYWRsb2dpYy9waS1tb25vIC0tanNvbiB0aXRsZSxib2R5LGNvbW1lbnRzLHN0YXRlLGZpbGVzIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0IjoxMCwib3V0cHV0IjoxMDMsImNhY2hlUmVhZCI6NDQyMzAsImNhY2hlV3JpdGUiOjQ0LCJ0b3RhbFRva2VucyI6NDQzODcsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDUsIm91dHB1dCI6MC4wMDI1NzUsImNhY2hlUmVhZCI6MC4wMjIxMTUsImNhY2hlV3JpdGUiOjAuMDAwMjc1LCJ0b3RhbCI6MC4wMjUwMTV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzE1MzI4NDh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxZDkxM2ZhMSIsInBhcmVudElkIjoiOWViYmIwYTYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjM4OjU4LjIwNloiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxODFLa1A1TFRSR1JUblBDNW9veG9DYSIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IntcImJvZHlcIjpcIldoZW4gY3VzdG9tIHN5c3RlbSBwcm9tcHRzIGFyZSB1c2VkIChgLS1zeXN0ZW0tcHJvbXB0YCksIHRoZSBzZXNzaW9uIGJlY29tZXMgbm9uLXJlcHJvZHVjaWJsZS4gQW55IGZ1dHVyZSByZXN0b3JlcyAoYC1yYCkgd2l0aCBhIGRpZmZlcmVudCBzeXN0ZW0gcHJvbXB0IHJlc3VtZXMgd2l0aCB0aGUgbmV3IHByb21wdCwgbm90IHdoYXQgd2FzIG9yaWdpbmFsbHkgdXNlZCBpbiB0aGUgc2Vzc2lvbi5cXHJcXG5cXHJcXG5Nb2RlbHMgZ2V0IHF1aXRlIGNvbmZ1c2VkIGJ5IHRoaXMuXFxyXFxuXFxyXFxuVGhpcyBQUjpcXHJcXG4xLiBTdG9yZXMgdGhlIHN5bnRoZXNpemVkIHN5c3RlbSBwcm9tcHQgaW4gc2Vzc2lvbiBKU09OTCBmaWxlcyB3aGVuIGNyZWF0aW5nIG5ldyBzZXNzaW9uc1xcclxcbjIuIFJlc3RvcmVzIHRoZSBzeXN0ZW0gcHJvbXB0IHdoZW4gcmVzdW1pbmcgYSBzZXNzaW9uLCBlbnN1cmluZyByZXN1bWVkIHNlc3Npb25zIHVzZSB0aGUgZXhhY3Qgc2FtZSBwcm9tcHQgdGhleSB3ZXJlIGNyZWF0ZWQgd2l0aFxcclxcblxcclxcblRoZSBzaWRlIGVmZmVjdCBoZXJlIGlzIGlmIHRoZSBwcm9qZWN0IGNvbnRleHQgY2hhbmdlcyBiZXR3ZWVuIHNlc3Npb25zLCBtb2RlbHMgbm8gbG9uZ2VyIHNlZSB0aGF0LiBUaGV5IGFsd2F5cyBzZWUgdGhlIG9sZCBjb250ZXh0LiBJIHdvbmRlciBpZiB3ZSBuZWVkIHRvIHBlcnNpc3QgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRleHQuIEBiYWRsb2dpYyB3aGF0IHdvdWxkIHlvdSByZWNvbW1lbmQ/XCIsXCJjb21tZW50c1wiOlt7XCJpZFwiOlwiSUNfa3dET1BiRk5rODdjTUJSMVwiLFwiYXV0aG9yXCI6e1wibG9naW5cIjpcImJhZGxvZ2ljXCJ9LFwiYXV0aG9yQXNzb2NpYXRpb25cIjpcIk9XTkVSXCIsXCJib2R5XCI6XCJUaGlzIG9uZSdzIHRyaWNreS4gSW4gZ2VuZXJhbCwgaXQgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2UgdG8gc3RvcmUgdGhlIGN1c3RvbSBzeXN0ZW0gcHJvbXB0IHBhc3NlZCB2aWEgLS1zeXN0ZW0tcHJvbXB0Ly0tYXBwZW5kLXN5c3RlbS1wcm9tcHQgaW4gdGhlIHNlc3Npb24gZmlsZSBpdHNlbGYuIEJ1dCBJIHRoaW5rIGl0IHNob3VsZCBvbmx5IHN0b3JlIHRoZSBub24tZHluYW1pYyBwYXJ0cywgbm90IHRoZSBpbmplY3RlZC9keW5hbWljIHBhcnRzICh0b29scywgc2tpbGxzLCBBR0VOVFMubWQgZmlsZXMpLlxcclxcblxcclxcbkUuZy4gSSBvZnRlbiBmaW5kIG15c2VsZiB3b3JraW5nIGluIGEgc2Vzc2lvbiwgb25seSB0byBmaW5kIHRoYXQgbXkgQUdFTlRTLm1kIGZvciB0aGUgY3VycmVudCBwcm9qZWN0IG5lZWRzIHRvIGJlIGFkanVzdGVkLiBJIHN0b3AgdGhlIHNlc3Npb24sIG1vZGlmeSBBR0VOVFMubWQsIHJlc3VtZS4gVGhpcyB3b3JrcyB3aXRoIHRoZSBidWlsdC1pbiBzeXN0ZW0gcHJvbXB0LCBhcyB0aGUgbmV3IEFHRU5UUy5tZCBpcyBpbmplY3RlZCBhbmV3LlxcclxcblxcclxcbkFub3RoZXIgdGhpbmc6IGEgc2Vzc2lvbiBjYW4gYmUgcmVzdW1lZCB3aXRoIGEgbmV3IC0tc3lzdGVtLXByb21wdC4gV2UnZCBoYXZlIHRvIGFwcGVuZCBhIG5ldyBzeXN0ZW0gcHJvbXB0IGVudHJ5IGluIHRoYXQgY2FzZSwgd2hpY2ggc3VwZXJjZWRlcyB0aGUgb2xkIC0tc3lzdGVtLXByb21wdCBlbnRyeSBpbiB0aGUgc2Vzc2lvbiBmaWxlIG9uIHNlc3Npb24gbG9hZC5cXHJcXG5cXHJcXG5GbG93IHdvdWxkIGJlOlxcclxcbi0gb3B0aW9ucy5zeXN0ZW1Qcm9tcHQ/IHVzZSB0aGF0XFxyXFxuLSBsb2FkIHNlc3Npb25cXHJcXG4tIGZpbmQgbGFzdCBzeXN0ZW0gcHJvbXB0IGVudHJ5LCB1c2UgdGhhdFxcclxcbi0gb3RoZXJ3aXNlIHVzZSBidWlsdC1pbiBzeXN0ZW0gcHJvbXB0XFxyXFxuXFxyXFxuRm9yIC0tYXBwZW5kLXN5c3RlbS1wcm9tcHQsIHdlIGxpa2VseSBuZWVkIGEgc2Vjb25kIGVudHJ5IHR5cGUsIHdoaWNoIHdvdWxkIGZvbGxvdyB0aGUgc2FtZSBmbG93IGFzIGFib3ZlIGFuZCBiZSBhcHBlbmRlZCB0byB3aGF0ZXZlciBzeXN0ZW0gcHJvbXB0IHdlIGRlY2lkZWQgaXMgdGhlIGNvcnJlY3Qgb25lLlxcclxcblxcclxcbkRvZXMgYW55IG9mIHRoaXMgbWFrZSBzZW5zZT8gSWYgbm90LCBhc2sgbWUgcXVlc3Rpb25zLiBPdGhlcndpc2UsIGFtZW5kIHRoZSBQUiBhbmQgSSdsbCBiZSBoYXBweSB0byBtZXJnZS5cIixcImNyZWF0ZWRBdFwiOlwiMjAyNS0xMi0yN1QxODoxNzoxNFpcIixcImluY2x1ZGVzQ3JlYXRlZEVkaXRcIjpmYWxzZSxcImlzTWluaW1pemVkXCI6ZmFsc2UsXCJtaW5pbWl6ZWRSZWFzb25cIjpcIlwiLFwicmVhY3Rpb25Hcm91cHNcIjpbXSxcInVybFwiOlwiaHR0cHM6Ly9naXRodWIuY29tL2JhZGxvZ2ljL3BpLW1vbm8vcHVsbC8zMzUjaXNzdWVjb21tZW50LTM2OTQxMzg0ODVcIixcInZpZXdlckRpZEF1dGhvclwiOnRydWV9LHtcImlkXCI6XCJJQ19rd0RPUGJGTms4N2NPTGd3XCIsXCJhdXRob3JcIjp7XCJsb2dpblwiOlwic2N1dGlmZXJcIn0sXCJhdXRob3JBc3NvY2lhdGlvblwiOlwiQ09OVFJJQlVUT1JcIixcImJvZHlcIjpcIkkgdGhpbmsgaXQgbWFrZXMgc2Vuc2U7IEkgbWFkZSBzb21lIGNoYW5nZXMuXFxyXFxuXFxyXFxuVGhlIHN5c3RlbSBwcm9tcHQgc2VlbXMgdG8gYmUgY29uc3RydWN0ZWQgb3V0IG9mIDYgcGFydHM6XFxyXFxuYGBgXFxyXFxuW21haW4gcHJvbXB0XSArIFthcHBlbmRdICsgW0FHRU5UUy5tZC9DTEFVREUubWRdICsgW3NraWxsc10gKyBbZGF0ZXRpbWVdICsgW2N3ZF1cXHJcXG4gICAgICAgXiAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgXiAgICAgICAgICBeXFxyXFxuICAgICBwYXJ0IDEgICAgICAgIHBhcnQgMiAgICAgICAgIHBhcnQgMyAgICAgICAgICAgICBwYXJ0IDQgICAgIHBhcnQgNSAgICAgcGFydCA2XFxyXFxuICAgICBzdGF0aWMgICAgICAgIHN0YXRpYyAgICAgICAgZHluYW1pYyAgICAgICAgICAgIGR5bmFtaWMgICAgZHluYW1pYyAgICBkeW5hbWljXFxyXFxuYGBgXFxyXFxuXFxyXFxuVGhlIG5ldyBjaGFuZ2VzIGRvIHRoZSBmb2xsb3dpbmcgKGluIHBzZXVkb2NvZGUpXFxyXFxuXFxyXFxuKipbUGFydCAxXSoqIGBvcHRpb25zLnN5c3RlbVByb21wdCA/PyBzZXNzaW9uLmxhc3RFbnRyeShcXFwic3lzdGVtX3Byb21wdFxcXCIpID8/IGRlZmF1bHRQcm9tcHRgXFxyXFxuKipbUGFydCAyXSoqIGBvcHRpb25zLmFwcGVuZFByb21wdCA/PyBzZXNzaW9uLmxhc3RFbnRyeShcXFwiYXBwZW5kX3N5c3RlbV9wcm9tcHRcXFwiKSA/PyBcXFwiXFxcImBcXHJcXG5QYXJ0cyAzIHRvIDYgYXJlIG5vdCB0b3VjaGVkLlxcclxcblxcclxcblNvLCBhIG5ldyBzZXNzaW9uIHdpdGggYC0tc3lzdGVtLXByb21wdGAgd2lsbCBwZXJzaXN0IHRoYXQgdG8gdGhlIHNlc3Npb24gZmlsZS4gVXBvbiBgLXJgLCB0aGlzIGVudHJ5IGlzIHVzZWQgaW5zdGVhZCBvZiBkZWZhdWx0LiBJZiB0aGV5IGRvIGAtciAtLXN5c3RlbS1wcm9tcHQgXFxcInNvbWV0aGluZyBlbHNlXFxcImAgdGhlbiB0aGUgbmV3IG9uZSBpcyBhbHNvIHBlcnNpc3RlZCB0byBzZXNzaW9uIGZpbGUsIGFuZCBzdXBlcnNlZGVzIHRoZSBvbGRlciBvbmUuIChUaGUgc2Vzc2lvbiBmaWxlIGlzIHRyZWF0ZWQgYXMgYW4gYXBwZW5kLW9ubHkgbG9nKVxcclxcblxcclxcbklzIHRoaXMgZ29vZD9cIixcImNyZWF0ZWRBdFwiOlwiMjAyNS0xMi0yOFQxMjoxODo0M1pcIixcImluY2x1ZGVzQ3JlYXRlZEVkaXRcIjp0cnVlLFwiaXNNaW5pbWl6ZWRcIjpmYWxzZSxcIm1pbmltaXplZFJlYXNvblwiOlwiXCIsXCJyZWFjdGlvbkdyb3Vwc1wiOltdLFwidXJsXCI6XCJodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby9wdWxsLzMzNSNpc3N1ZWNvbW1lbnQtMzY5NDcwNDY4OFwiLFwidmlld2VyRGlkQXV0aG9yXCI6ZmFsc2V9LHtcImlkXCI6XCJJQ19rd0RPUGJGTms4N2NPMHJ5XCIsXCJhdXRob3JcIjp7XCJsb2dpblwiOlwiYmFkbG9naWNcIn0sXCJhdXRob3JBc3NvY2lhdGlvblwiOlwiT1dORVJcIixcImJvZHlcIjpcIlNvdW5kcyBnb29kIHRvIG1lISBJJ2xsIG1lcmdlIG9uY2UgSSdtIGRvbmUgd2l0aCB0aGUgYmlnIHJlZmFjdG9yLlwiLFwiY3JlYXRlZEF0XCI6XCIyMDI1LTEyLTI4VDE2OjM3OjA3WlwiLFwiaW5jbHVkZXNDcmVhdGVkRWRpdFwiOmZhbHNlLFwiaXNNaW5pbWl6ZWRcIjpmYWxzZSxcIm1pbmltaXplZFJlYXNvblwiOlwiXCIsXCJyZWFjdGlvbkdyb3Vwc1wiOlt7XCJjb250ZW50XCI6XCJUSFVNQlNfVVBcIixcInVzZXJzXCI6e1widG90YWxDb3VudFwiOjF9fV0sXCJ1cmxcIjpcImh0dHBzOi8vZ2l0aHViLmNvbS9iYWRsb2dpYy9waS1tb25vL3B1bGwvMzM1I2lzc3VlY29tbWVudC0zNjk0ODczMzMwXCIsXCJ2aWV3ZXJEaWRBdXRob3JcIjp0cnVlfV0sXCJmaWxlc1wiOlt7XCJwYXRoXCI6XCJwYWNrYWdlcy9jb2RpbmctYWdlbnQvQ0hBTkdFTE9HLm1kXCIsXCJhZGRpdGlvbnNcIjoxLFwiZGVsZXRpb25zXCI6MH0se1wicGF0aFwiOlwicGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL3Nkay50c1wiLFwiYWRkaXRpb25zXCI6NDIsXCJkZWxldGlvbnNcIjoxNH0se1wicGF0aFwiOlwicGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL3Nlc3Npb24tbWFuYWdlci50c1wiLFwiYWRkaXRpb25zXCI6NDQsXCJkZWxldGlvbnNcIjoyfSx7XCJwYXRoXCI6XCJwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2luZGV4LnRzXCIsXCJhZGRpdGlvbnNcIjoyLFwiZGVsZXRpb25zXCI6MH0se1wicGF0aFwiOlwicGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tYWluLnRzXCIsXCJhZGRpdGlvbnNcIjo1LFwiZGVsZXRpb25zXCI6Nn1dLFwic3RhdGVcIjpcIkNMT1NFRFwiLFwidGl0bGVcIjpcImNvZGluZy1hZ2VudDogU3RvcmUgYW5kIHJlc3RvcmUgc3lzdGVtIHByb21wdCBpbiBzZXNzaW9uIGZpbGVzXCJ9XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzE1MzgxOTl9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmYTNhNDJhZCIsInBhcmVudElkIjoiMWQ5MTNmYTEiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjM5OjQwLjI4MloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ik5vdyBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS4gTGV0IG1lIGFuYWx5emUgYWxsIHRoaXM6XG5cbiMjIFN1bW1hcnlcblxuIyMjIEN1cnJlbnQgc3RhdGUgb2YgZXhwb3J0LWh0bWwudHMgKDE0MzIgbGluZXMpXG4tIEhhcyBpdHMgb3duIGBUaGVtZUNvbG9yc2AgaW50ZXJmYWNlIHdpdGggfjM1IGNvbG9yc1xuLSBIYXMgaXRzIG93biBgbG9hZFRoZW1lSnNvbmAgZnVuY3Rpb25cbi0gSGFzIGl0cyBvd24gdGhlbWUgcmVzb2x1dGlvbiBsb2dpY1xuLSBQYXJzZXMgc2Vzc2lvbiBmaWxlcyBkaXJlY3RseSAoZHVwbGljYXRlcyBTZXNzaW9uTWFuYWdlciBsb2dpYylcbi0gU3VwcG9ydHMgdHdvIGZvcm1hdHM6IHNlc3Npb24tbWFuYWdlciBhbmQgc3RyZWFtaW5nLWV2ZW50c1xuXG4jIyMgdGhlbWUudHMgKGludGVyYWN0aXZlIG1vZGUpXG4tIEFscmVhZHkgaGFzIGEgd2VsbC1zdHJ1Y3R1cmVkIGBUaGVtZUpzb25gIHNjaGVtYSB3aXRoIGFsbCB0aGUgY29sb3IgdG9rZW5zXG4tIEhhcyBwcm9wZXIgdmFsaWRhdGlvbiB2aWEgVHlwZUJveFxuLSBIYXMgdGhlIHNhbWUgY29sb3IgdG9rZW5zIChhY2NlbnQsIGJvcmRlciwgc3VjY2VzcywgZXJyb3IsIG1kSGVhZGluZywgc3ludGF4S2V5d29yZCwgZXRjLilcbi0gQ29udmVydHMgaGV4LzI1Ni1jb2xvciB0byBBTlNJIGZvciB0ZXJtaW5hbCB1c2VcblxuIyMjIFNlc3Npb25NYW5hZ2VyXG4tIEFscmVhZHkgcGFyc2VzIHNlc3Npb24gZmlsZXMgcHJvcGVybHlcbi0gSGFzIHRyZWUgc3RydWN0dXJlIHN1cHBvcnQgKGdldFRyZWUoKSwgZ2V0QnJhbmNoKCksIGdldEVudHJpZXMoKSlcbi0gSGFzIGBidWlsZFNlc3Npb25Db250ZXh0KClgIHRvIGdldCB0aGUgcmVzb2x2ZWQgbWVzc2FnZXNcbi0gSGFuZGxlcyBjb21wYWN0aW9uLCBtb2RlbCBjaGFuZ2VzLCBldGMuXG5cbiMjIyBXaGF0IHRoZSB1c2VyIGlzIHN1Z2dlc3Rpbmc6XG5cbjEuICoqUmV1c2UgdGhlbWUudHMgY29sb3IgdG9rZW5zKiogLSBJbnN0ZWFkIG9mIGRlZmluaW5nIGEgc2VwYXJhdGUgYFRoZW1lQ29sb3JzYCBpbnRlcmZhY2UgaW4gZXhwb3J0LWh0bWwudHMsIHVzZSB0aGUgc2FtZSBzY2hlbWEgZnJvbSB0aGVtZS50cy4gVGhlIHRoZW1lLnRzIGhhczpcbiAgIC0gYFRoZW1lSnNvblNjaGVtYWAgd2l0aCBhbGwgY29sb3JzIGRlZmluZWRcbiAgIC0gYGxvYWRUaGVtZUpzb24oKWAgdG8gbG9hZCB0aGVtZSBmaWxlc1xuICAgLSBgcmVzb2x2ZVRoZW1lQ29sb3JzKClgIHRvIHJlc29sdmUgdmFyaWFibGUgcmVmZXJlbmNlc1xuXG4yLiAqKlJldXNlIFNlc3Npb25NYW5hZ2VyKiogLSBJbnN0ZWFkIG9mIHBhcnNpbmcgdGhlIHNlc3Npb24gZmlsZSBhZ2FpbiwganVzdCB1c2UgU2Vzc2lvbk1hbmFnZXIgdG86XG4gICAtIExvYWQgdGhlIHNlc3Npb24gZmlsZVxuICAgLSBHZXQgZW50cmllcyB2aWEgYGdldEVudHJpZXMoKWBcbiAgIC0gR2V0IHRyZWUgc3RydWN0dXJlIHZpYSBgZ2V0VHJlZSgpYCAoZm9yIGlzc3VlICMzNzUpXG4gICAtIEdldCBicmFuY2gvcGF0aCB2aWEgYGdldEJyYW5jaCgpYFxuXG4zLiAqKlJlbW92ZSBzdHJlYW1pbmctZXZlbnRzIGZvcm1hdCoqIC0gU2ltcGxpZnkgYnkgb25seSBzdXBwb3J0aW5nIHRoZSBTZXNzaW9uTWFuYWdlciBmb3JtYXRcblxuIyMjIFBSICMzMzUgY29udGV4dFxuVGhpcyBQUiB3YW50ZWQgdG8gc3RvcmUgc3lzdGVtIHByb21wdHMgaW4gc2Vzc2lvbiBmaWxlcy4gSXQgd2FzIGFwcHJvdmVkIGNvbmNlcHR1YWxseSBidXQgY2xvc2VkIChjb250cmlidXRvciBjbG9zZWQgaXQpLiBUaGUgaWRlYSB3YXM6XG5cblxuSSBzZWUgYW4gb3Bwb3J0dW5pdHkgdG8gaW50ZWdyYXRlIHN5c3RlbSBwcm9tcHRzIGludG8gc2Vzc2lvbiBzdG9yYWdlLiBCeSBzdG9yaW5nIHRoZSBzeXN0ZW0gcHJvbXB0IGRpcmVjdGx5IGluIHRoZSBzZXNzaW9uIGZpbGUsIHdlIGNhbiBzdHJlYW1saW5lIHRoZSByZXN1bWUgcHJvY2VzcyBhbmQgcHJvdmlkZSBtb3JlIGNvbnRleHQgcHJlc2VydmF0aW9uLiBUaGlzIGFwcHJvYWNoIHdvdWxkIGFsbG93IHRoZSBIVE1MIGV4cG9ydCB0byBjYXB0dXJlIGFuZCBkaXNwbGF5IHN5c3RlbSBwcm9tcHRzIGFzIHBhcnQgb2YgdGhlIHNlc3Npb24ncyBtZXRhZGF0YSwgZW5oYW5jaW5nIHRoZSBvdmVyYWxsIGRvY3VtZW50YXRpb24gYW5kIHJlcHJvZHVjaWJpbGl0eSBvZiBjb252ZXJzYXRpb25zLlxuXG4jIyMgTXkgcHJvcG9zYWxcblxuKipQaGFzZSAxOiBTbGltIGRvd24gZXhwb3J0LWh0bWwudHMqKlxuXG4xLiAqKlRoZW1lIGNvbG9ycyoqOiBFeHBvcnQgdGhlIGNvbG9yIHR5cGVzIGZyb20gdGhlbWUudHMgYW5kIGNyZWF0ZSBhIGhlbHBlciB0aGF0IGNvbnZlcnRzIHRoZW1lIGNvbG9ycyB0byBDU1MtY29tcGF0aWJsZSBmb3JtYXQgKGhleCBzdHJpbmdzKS4gVGhlIHRoZW1lLnRzIGFscmVhZHkgaGFzIGhleCB2YWx1ZXMsIHdlIGp1c3QgbmVlZCB0byBleHBvc2UgdGhlbS5cblxuMi4gKipTZXNzaW9uIHBhcnNpbmcqKjogVXNlIFNlc3Npb25NYW5hZ2VyIHRvIGxvYWQgYW5kIHBhcnNlIHNlc3Npb25zLiBSZXBsYWNlOlxuICAgLSBgcGFyc2VTZXNzaW9uRmlsZSgpYCDihpIgYFNlc3Npb25NYW5hZ2VyLm9wZW5gXG4gICAtIEN1c3RvbSBwYXJzaW5nIOKGkiBgc2Vzc2lvbk1hbmFnZXIuZ2V0RW50cmllcygpYFxuICAgLSBGb3IgdHJlZSAoIzM3NSkg4oaSIGBzZXNzaW9uTWFuYWdlci5nZXRUcmVlKClgXG5cbjMuICoqUmVtb3ZlIHN0cmVhbWluZy1ldmVudHMqKjogRWxpbWluYXRlIGxlZ2FjeSBzdHJlYW1pbmcgZXZlbnQgbG9nIHN1cHBvcnQsIHJlcXVpcmluZyB1c2VycyB0byBjb252ZXJ0IG9sZCBsb2dzIG9yIGFjY2VwdCBub24tY29tcGF0aWJpbGl0eS5cblxuKipQaGFzZSAyOiBDU1MgaW1wcm92ZW1lbnRzKipcblxuMS4gR2VuZXJhdGUgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzIGZyb20gdGhlbWUgY29sb3JzXG4yLiBNb3ZlIENTUyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uL2NvbnN0YW50XG4zLiBVc2UgYHZhcigtLWNvbG9yLW5hbWUpYCB0aHJvdWdob3V0IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFb2tYQ2tZSUN4Z0NLa0JuQmtGZHhObkhOdzdJa2VnOUlzYXFCUm5vUHJDdXN5Rm80OVVRWEtFNHRQaUowNnZibUZaWjhmUVcydEgrejdwd0Z5dUl4TzVqUHZlNmIvNWZDdTR2RWd6Z2hpNDBEWmNFVi9lSDRtb2FESzlDaXdyNEc0eUNkT3dYN1NJd1V6MzhydldiSW5VK2FnWk0xY0VQczc4WTUzb0FpZVM5bE5mUXN3V3BrZkpQNjErc3JsclhKekhweGpERDhaRm5LdkFWcU1TcUYySk56Y3M4VWZ2OWsyaVhkWkpSRlg2R3g4bHVhN2RWSjJlOCtuL2lyMEpFQnVLYzlleTZhdHlMeWt0UW54dVVRdzhRMXRSeG53M3dmWGNLTFNLTDg0RFgrZzFGNnFlWXZZZjhqTk5RVkp5TXRUZW1NdFU1bEd2RXZJK1plVEYyQkkrTlFabjdVU2pDaTZiR2lCbEtaUzZMT1hXMGVaT01BemNtL0UzbUJaZjlpQk51dmk1STh5ZFRFY3pWSUlXa1dzcWJ2d2dJNnBUSGtRampRNUd5VzE0NDZtSUZ0WnQzMXlkSSs0NDF3KzBqRUxNSnVwTk8zTXRqUUdKMDh5ODUrTi9CaktZK2JpTXdFT3NqcmZkZnIxYUNkdnJnNDZ6dFg0TTc1ZmV2TkJkamdFZmxhS29ZVy8rWThxWldRQ0hBR0xobXEvaC9iZjZLb29wa3hQMVJ0Vk54SEVNRmR1SFc4OGhiaGxZYVpiNXhiRlZhbGE2S0ZyeEFQTlBXSS9rNFlicWxrUnk5MEJGL1NZVlBaZTBXczVEMDlab2RJQXdoTEFJNnZORlJSUnZObTkvek80UGlFUkpBOWd4Y0c1dmFBME1IRmx1K1Q1QkRyNjI0MXI3aDBGOXhVZGljOHRMeTNGNFFyeXVaQ1YyMkJjMWwrNkZaL25DK1hERnhQQTQrSklEZ2tSM2ttdXdqcUxjUkNIaUozUjBJb0NmdDJ2M1UrSmk1WXVSUDdnRGM1em9ZTkRNL3RiOXZDR2NrbkVlQ20rT2ZNMVZMcmJRMDdFZkVEZUJ3N1hJMExEZDJJZ0JGbHlITFllWTZBSWMrR0dSMzk4Qy9yclQwSUNPV3loMW5pems2Q1RVVXc0NXBjUk54ZWR6dGkrMkVLdHovR0ZZaCszS3JkSlFqRWdDRUlBYXVZQUdoNVd5cEJ1a1lkL2J6NnJ3RWZrS2RiRVVMZkVWTkI1d3RNd2V4cnB5am1WRW5kUFZHYTh3bWkyakNiV2x3aVJlRmJobGQ2N2FIWnRUZjZpK3d3Zk5tVzY3VlgwSVNvcUF6aCtTSXdENzJ6ek16Rm8wVHU2RzVldkl3cnBCUXhtTFJ5T3pWaHFyYmVPQVdvTDFFMTBvQUJpWmEzUXNZaXhrRVMzdWlpdTdJTWprdGs4UDR4elZ4RkpocVdmOXNwQ2JWVThqNXFaZmQ0c0RvdlEvYjMzdE84RVFoMGlFQTNkR3EwcS9lYURrOWc0bTdtMXhuVWFhaGp1NWg4T2poNFJKMmtzaEZQSEc3YVcxTE5ORGx5cVBKTHNmWVZ6ak5mTEtsZlFrRnZlb0RtL0Fpa2hVRFNCTTdJanRIN2JqVk1zQnNUME9NRFFuK1k5QnpPMmJtOFBzdlYzeEtJZjBBbURkanBiQTA2OFc5RGtEcisvaEVkUm41NjN5eWdtSlprc0xGMUEyQ0J0L3RIbmd4WGFlM1hzdnczSWN4WkFmZllKRGlsOERHVUl1WHB0RXVvTU9pOTB5dkdNOFRjM3VlbTkwN205WHBydFZKTU9SZUVBc2cwMGh2ZmNNK2FBaUJqQzdvblpGWGxaVnpQb2JULzVJL1pyampqb3ZTVjhZYitRWWdhcEJtZ1BjS1RHVHg2c0JiVzMvWUtHam9DM0s0KzZweVVqUFF6TlhMS0FQZGtLaXFJcUlRNjFhcytXcTJ6V2U2TENCNzZ6NnhUaVF1VHF1RjBGQjZzZ2R5bTBObFZHc0FwaDJYT3BERlZXQk9BV04rb1hqSHQyVFRnU3kydDkyUGNkRlJnRGJJN1B4QkJhZ0gxUXpuVzBIVnhadDQ4bHNSOWRqQ2JiNDdwK1hmc1o0YmFmMk95dDRuRjhFaldsYktyOEtGUE0rQnhZVDdjMTBOd3kzNkt1YlVRZUx4N1h3anB0Rmc3UHE0R09wZ29SYzgxTlIwWGtTMFFpQUxUcVF6RlI5WlQ4RE1RU0Y0TExtTHVnQnk2aS9sOVBiMUw2SE1jNSs4K3F2MldVWnJsR3c4T3l6SU1UbEVkMk1Pa28rR1pjYW80RGwxeElZdk9ySXFMckdHMFpyRWdGSWJEdW13SGFyNG1pMnZ2Y2R2T2IraE1MMVluM2JsNTFmczIwSnJ3TFNPdEVGNVFma0VWK1ZqUXgzckE3NEtoY1FpYW8weCtwL2Fob0RWK0dKVUoycWVuNVBablVFcm5sQmxxVlVHblRvaFQrbG9DVVVnSUdyVnYxaFA0cXUvMTg5WG1HZkdXTDlGdGwxeVl1blNXSXpQblhRUFB3WXlZclh1K1p0OGNVRkFqdnozZzZWUENSeDVPUkcvTmxwU0cvSHNUOFVzZjBhVXlHcUhNeTVFN3hYOWVQL3p4RWdiZGVEZFNWUWxSdmZMSUdBUFBPdkRaVFFxS3VhOUtXN0FGMGV4MkVleGR2dDB4dW1uMTR2N0JRYXZWN1hheWg0aE1ueTNpOXZud2pldU81MnU4TlBLZ1ZiY3kvZDJMaWRLdXVrQ21XL3FOY0xRbDgvYSswMXBEak5UK0lqeUFyMGtCQ0VrR21mb0hORkFmUmxIWXIzNDhoYlZuQ2pTdG1GR3VQeWNJWXo2azFnU2RQdGlocE84dGhLcjNNQzZadkUxTkpoOSszT1JlK0hBeWdoWWV3bDFkMkIwaGhwVEttMGpleldVNGxNbUp3OU5uOUdXNkJPYmtUNFcyNGFvOEZacm9Ybm81eDJBbm91NU4vMHBJc2pDN25Kc3JFa3dnSW5sM3NaZUxHdXAvRXF0VlZzUHd1VXFhaUhHU1F6aVVjS2E3cUp5MVFTUnY0RmNXa2d4empMenFJK3FkRDUrSG5tbWVUZlh2SE5QMzFUWko5NlFKWXNoUnBkR0xWZXdtQjN4WUpUMEJzUW56N2hxYy9Wa3UrbkhzQ0g4WkN1N241ZktpQ09Gb0Z2am5CZURXdXZLanVSMkEwSklpZDFnM1VtaTREYVZZQjk5WHBQNG1JeFNaTGh3ZXM2RGkvdzVxbDJLYVY0aHJFdDFvNlRHMkdMMjZCbG4yNkkvSCtpN25XNkRYWGYwSENPSHJ5d3hDbGZVUHhNc2lCY0puVU9jaWUzcDVod2g3UzZsNml2UGx3NW5EMVlEeGxUc3NXd2psVHEydGhGK1dVUXhoNkdQczdjd3FqMTRBSm5abEdKMUFsb1pmKzVrOTlVdHRwR1o2aFdOc29HTVViU2llRmN2SEJSb3VPSDRvM0J0VVR4OHNTR1RZbUNobXgyTm93YnNMbUs0MXBKUUlJdmcwYWtUZ29EQ1YrYXJWVnQ3RUY0NndRc1F3MTVJSmEvdFlXdjR5RmlKS0dTbElmb0RIRzVPbW14QzRNbzRSblhaekZwci9UMFdteHp6U0Q5c0pTM2h0MTdaT3k4TG12OTJKczJqbXFINmwzWnoybnNwVEVQR2I4czdwbjNtd04raHRxYUFlTXR2WmhSR2k0VFV3MEMrSnByL3paUE5SekVCRHo1d3FPaFdhVlVvbFpWSGphcWFaWlVrVzV6b3NhZWY0SE1JMUNrbzZsSy82NlcxRCtmcUxnMGxYM1NXUC9ESHltc1ZOY05TMS81elM5RFluNUJnT0tkRUlKUk5mMXcrTWhKQXEvM3hld3ZVTXB0SjlyQ1NlZnVER091TER4Z3FtRVhLcDI2N1FrejAwY0JaMTlqZkZtd1FpbWFUc0FkNnpveVBLRThwL2RsU2J6MlNQa0xOa3ZROUY2c0hOZklYSHVyUE5sLzhUc1ZNMDNWMU1jNTd0blJaVVp6QXRFMWk1bHNheUQzVTlUYnVRQTR6VDhYZmROVzQyMEpBN3c3blI2dG4yWFVEZW54eVdLaXJHcTBhbnVSQXFqc3U3TmJrZzhoMW9TcDJtQkhvNElhU1d4V3R2aVRJeGVxNkNoaE1iVXRab1F1Q1RxVmp0ckgxSEhMV0JXWSsvWHdCWWZjMjdIbFNUNjJvRDdqUW0yMlhSM0s5N04wdklhQWtBRTRiaks0ZjY1YWN0NDdHWnY0dnE5b0pCbGJxSkRTb0VBR3lqT0NvalV3Y1RsVVJOM245VmJscDJQeGZXK2F1QThhcGU5QklWSytKb21uQXowOXd6Q3l3M1JBR2JuMFR5bDhpdjB0aTB3elY5RURjUm5iQTEvdDVYWWV3KzBBK3l2TDVmQ2xEYzVsRjNtbCt1MHNRdnNub2dQQnBSTTR4cDlHeVBjeEYxMzBPNGJKOTZPU0EwekxIK0h1K3V2c3U0a1RvV3E1Q01POGp6dzBOdXl6cnIxK3hpVEEzT1JuNWl0dUI2SS9YQThLNnk1M3lZdHBxNHN6Zi9meW5LTkNMbm0xL1M4dDNvdkQyNWswM1hBMzdCeVRzZXZoYXhKbVROYitLMEx5aWtuYktnWXJmVW9LcVFJTUVpM1BoMUFzc0NOcUJBY3h5TjRack15MHNDTDNwenBUQU1HVm1QN2NOcDdFclZoU3hPU1d5dFVJVXpUM1djMFJiRERTMVdLVGFGVS8wYXRCaklXdHJlSk9NbzMrenhZd2N1SlBWMUtCKzZrSE8xMXBFbVc2Sks2RXRDcWlxNWs2OThsbnJ5QWgwUWMyWHNSTUVxRCs3MmNoM3dWQWcvWXZrN1ROU1YvNjBJbEczYWNWbytCY2lGekI3N05ldFBzWW8xR2ZMeWd0S05VVzBOV0lOd0JoMm5OTGQzOU9VYmtBRERqVndubHlTekZaOC9pWlArY1RNRzdMQzg5bEVoVWFoaGgwM1VFbGZQcUNVMTVZYnlFQjUvRFRqc0tCUXFZcUIzUmdzUEJPZkxNMWRyWjhMKzM2cTM0T1JsaHVGMkVkNmR3UDg0b2NZaUpjMEVBU2dNT21XUXJCZytJbFhGWDVnRWtvRERNem1teWJvK3VSWGRIczJwY052b3p5ZmV5NmdESjVnd3ZKdEs5VnVEbEUyUWtPWUR0alZsK0MwZm9ra2lLWk95U09ZdUJnQiJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiTm93IEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLiBMZXQgbWUgc3VtbWFyaXplOlxuXG4tLS1cblxuIyMgQW5hbHlzaXNcblxuIyMjIFdoYXQgd2UgaGF2ZVxuXG58IEZpbGUgfCBQdXJwb3NlIHwgTGluZXMgfFxufC0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLXxcbnwgYGV4cG9ydC1odG1sLnRzYCB8IEhUTUwgZXhwb3J0IHdpdGggaXRzIG93biB0aGVtZS9wYXJzaW5nIHwgMTQzMiB8XG58IGB0aGVtZS50c2AgfCBUVUkgdGhlbWUgd2l0aCB2YWxpZGF0ZWQgc2NoZW1hIHwgNTMwIHxcbnwgYHNlc3Npb24tbWFuYWdlci50c2AgfCBTZXNzaW9uIHBhcnNpbmcgd2l0aCB0cmVlIHN1cHBvcnQgfCA3NTAgfFxuXG4jIyMgRHVwbGljYXRpb24gaW4gZXhwb3J0LWh0bWwudHNcblxuMS4gKipUaGVtZSBoYW5kbGluZyoqOiBEZWZpbmVzIGl0cyBvd24gYFRoZW1lQ29sb3JzYCAoMzUgY29sb3JzKSwgYGxvYWRUaGVtZUpzb24oKWAsIGByZXNvbHZlQ29sb3JWYWx1ZSgpYC4gVGhlIHRoZW1lLnRzIGFscmVhZHkgaGFzIGFsbCBvZiB0aGlzIHdpdGggcHJvcGVyIFR5cGVCb3ggdmFsaWRhdGlvbi5cblxuMi4gKipTZXNzaW9uIHBhcnNpbmcqKjogSGFzIGBwYXJzZVNlc3Npb25GaWxlKClgLCBgcGFyc2VTZXNzaW9uTWFuYWdlckZvcm1hdCgpYCwgYHBhcnNlU3RyZWFtaW5nRXZlbnRGb3JtYXQoKWAgd2hlbiBTZXNzaW9uTWFuYWdlciBhbHJlYWR5IGRvZXMgdGhpcyB3aXRoIGBnZXRFbnRyaWVzKClgLCBgZ2V0VHJlZSgpYCwgYGdldEJyYW5jaCgpYC5cblxuMy4gKipTdHJlYW1pbmctZXZlbnRzIGZvcm1hdCoqOiA2MCsgbGluZXMgZm9yIGEgZm9ybWF0IHRoYXQncyBvbmx5IHVzZWQgYnkgcmF3IGFnZW50IGV2ZW50IGxvZ3MuIFJhcmVseSBuZWVkZWQuXG5cbiMjIyBQUiAjMzM1IChzeXN0ZW0gcHJvbXB0IHN0b3JhZ2UpXG5cbkdvb2QgaWRlYSBidXQgdGFuZ2VudGlhbC4gVGhlIGNvbnRyaWJ1dG9yIGhhZCB0aGUgcmlnaHQgYXBwcm9hY2ggKHN0b3JlIHN0YXRpYyBwYXJ0cywgbm90IGR5bmFtaWMpLiBZb3UgYXBwcm92ZWQgaXQgY29uY2VwdHVhbGx5LiBJZiB3ZSBzbGltIGRvd24gZXhwb3J0LWh0bWwudHMgZmlyc3QsIGFkZGluZyBzeXN0ZW0gcHJvbXB0IGRpc3BsYXkgYmVjb21lcyB0cml2aWFsIHNpbmNlIFNlc3Npb25NYW5hZ2VyIHdvdWxkIGhhbmRsZSB0aGUgZW50cnkgdHlwZS5cblxuLS0tXG5cbiMjIFByb3Bvc2FsXG5cbiMjIyAxLiBSZXVzZSB0aGVtZS50c1xuXG5FeHBvcnQgdGhlIHJhdyBjb2xvciB2YWx1ZXMgZnJvbSB0aGVtZS50cyAoY3VycmVudGx5IGl0IG9ubHkgZXhwb3J0cyBBTlNJLXdyYXBwZWQgZnVuY3Rpb25zKTpcblxuYGBgdHlwZXNjcmlwdFxuLy8gSW4gdGhlbWUudHMsIGFkZDpcbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGVtZUNvbG9ycyh0aGVtZU5hbWU/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgdGhlbWVKc29uID0gbG9hZFRoZW1lSnNvbih0aGVtZU5hbWUgPz8gZ2V0RGVmYXVsdFRoZW1lKCkpO1xuICByZXR1cm4gcmVzb2x2ZVRoZW1lQ29sb3JzKHRoZW1lSnNvbi5jb2xvcnMsIHRoZW1lSnNvbi52YXJzKTtcbn1cblxuLy8gUmV0dXJucyB7IGFjY2VudDogXCIjOGFiZWI3XCIsIGJvcmRlcjogXCIjNWY4N2ZmXCIsIC4uLiB9XG5gYGBcblxuVGhlbiBleHBvcnQtaHRtbC50cyBqdXN0IGltcG9ydHMgdGhpcy4gTm8gbW9yZSBkdXBsaWNhdGUgY29sb3IgZGVmaW5pdGlvbnMuXG5cbiMjIyAyLiBSZXVzZSBTZXNzaW9uTWFuYWdlclxuXG5gYGB0eXBlc2NyaXB0XG4vLyBCZWZvcmUgKGV4cG9ydC1odG1sLnRzKVxuY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhpbnB1dFBhdGgsIFwidXRmOFwiKTtcbmNvbnN0IGRhdGEgPSBwYXJzZVNlc3Npb25GaWxlKGNvbnRlbnQpOyAgLy8gMjAwKyBsaW5lcyBvZiBwYXJzaW5nXG5cbi8vIEFmdGVyXG5jb25zdCBzbSA9IFNlc3Npb25NYW5hZ2VyLm9wZW4oaW5wdXRQYXRoKTtcbmNvbnN0IGVudHJpZXMgPSBzbS5nZXRFbnRyaWVzKCk7XG5jb25zdCB0cmVlID0gc20uZ2V0VHJlZSgpOyAgLy8gRm9yICMzNzUgc2lkZWJhclxuY29uc3QgY29udGV4dCA9IHNtLmJ1aWxkU2Vzc2lvbkNvbnRleHQoKTtcbmBgYFxuXG5UaGlzIGVsaW1pbmF0ZXM6XG4tIGBwYXJzZVNlc3Npb25NYW5hZ2VyRm9ybWF0KClgICg3MCBsaW5lcylcbi0gYHBhcnNlU3RyZWFtaW5nRXZlbnRGb3JtYXQoKWAgKDUwIGxpbmVzKVxuLSBgZGV0ZWN0Rm9ybWF0KClgICgxNSBsaW5lcylcbi0gYHBhcnNlU2Vzc2lvbkZpbGUoKWAgKDIwIGxpbmVzKVxuLSBBbGwgdGhlIGV2ZW50IHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBkdXBsaWNhdGUgU2Vzc2lvbk1hbmFnZXIgdHlwZXNcblxuIyMjIDMuIERyb3Agc3RyZWFtaW5nLWV2ZW50cyBmb3JtYXRcblxuSXQncyA2MCsgbGluZXMgZm9yIGVkZ2UgY2FzZXMuIElmIHNvbWVvbmUgaGFzIHJhdyBldmVudCBsb2dzLCB0aGV5IGNhbiBwaXBlIHRoZW0gdGhyb3VnaCB0aGUgYWdlbnQgdG8gY3JlYXRlIGEgcHJvcGVyIHNlc3Npb24uXG5cbiMjIyA0LiBDU1MgYXMgc3RhdGljIHRlbXBsYXRlICsgdmFyaWFibGVzXG5cbmBgYHR5cGVzY3JpcHRcbi8vIHN0eWxlcy50c1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU3R5bGVzKGNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgaXNMaWdodDogYm9vbGVhbik6IHN0cmluZyB7XG4gIHJldHVybiBgXG4gICAgOnJvb3Qge1xuICAgICAgLS1hY2NlbnQ6ICR7Y29sb3JzLmFjY2VudH07XG4gICAgICAtLWJvcmRlcjogJHtjb2xvcnMuYm9yZGVyfTtcbiAgICAgIC0tc3VjY2VzczogJHtjb2xvcnMuc3VjY2Vzc307XG4gICAgICAvKiAuLi4gYWxsIGNvbG9ycyAuLi4gKi9cbiAgICB9XG4gICAgXG4gICAgLyogU3RhdGljIENTUyB1c2luZyB2YXIoKSAqL1xuICAgIC51c2VyLW1lc3NhZ2UgeyBiYWNrZ3JvdW5kOiB2YXIoLS11c2VyTWVzc2FnZUJnKTsgfVxuICAgIC50b29sLWV4ZWN1dGlvbi5zdWNjZXNzIHsgYmFja2dyb3VuZDogdmFyKC0tdG9vbFN1Y2Nlc3NCZyk7IH1cbiAgYDtcbn1cbmBgYFxuXG5UaGlzIG1ha2VzIFBSICMzODcncyByZXF1ZXN0ICh0aGVtZS1vdmVycmlkYWJsZSBzeXN0ZW0gcHJvbXB0IGNvbG9ycykgdHJpdmlhbDoganVzdCBhZGQgdGhlIENTUyB2YXJpYWJsZS5cblxuLS0tXG5cbiMjIEVzdGltYXRlZCBJbXBhY3RcblxufCBNZXRyaWMgfCBCZWZvcmUgfCBBZnRlciB8XG58LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLXxcbnwgTGluZXMgaW4gZXhwb3J0LWh0bWwudHMgfCAxNDMyIHwgfjYwMC03MDAgfFxufCBUaGVtZSBjb2xvciBkZWZpbml0aW9ucyB8IDIgY29waWVzIHwgMSAodGhlbWUudHMpIHxcbnwgU2Vzc2lvbiBwYXJzaW5nIGNvZGUgfCAyIGNvcGllcyB8IDEgKFNlc3Npb25NYW5hZ2VyKSB8XG58IEZvcm1hdHMgc3VwcG9ydGVkIHwgMiB8IDEgfFxuXG4qKkJvbnVzKio6IFRyZWUgc2lkZWJhciAoIzM3NSkgYmVjb21lcyBlYXN5IHNpbmNlIHdlIGp1c3QgY2FsbCBgc20uZ2V0VHJlZSgpYC5cblxuLS0tXG5cbldhbnQgbWUgdG8gc3RhcnQgaW1wbGVtZW50aW5nIHRoaXM/IEknZCBzdWdnZXN0OlxuMS4gRmlyc3QsIGFkZCBgZ2V0VGhlbWVDb2xvcnMoKWAgZXhwb3J0IHRvIHRoZW1lLnRzXG4yLiBUaGVuIHJlZmFjdG9yIGV4cG9ydC1odG1sLnRzIHRvIHVzZSBTZXNzaW9uTWFuYWdlciArIHRoZW1lLnRzXG4zLiBGaW5hbGx5LCBleHRyYWN0IENTUyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uIn1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTc5MCwiY2FjaGVSZWFkIjo0NDI3NCwiY2FjaGVXcml0ZSI6MTU2NCwidG90YWxUb2tlbnMiOjQ3NjM2LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDQ0NzUwMDAwMDAwMDAwMDA1LCJjYWNoZVJlYWQiOjAuMDIyMTM3LCJjYWNoZVdyaXRlIjowLjAwOTc3NSwidG90YWwiOjAuMDc2NzAyfX0sInN0b3BSZWFzb24iOiJzdG9wIiwidGltZXN0YW1wIjoxNzY3MjMxNTM4MjA3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZjhmM2ZhM2UiLCJwYXJlbnRJZCI6ImZhM2E0MmFkIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0MTowNS4yMzdaIiwibWVzc2FnZSI6eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6InlvdSBkaWQgbm90IGNvbnNpZGVyIHRoZSB0cmVlIHNpZGViYXIgaXNzdWUsIG5vciB0aGUgL3NoYXJlIGlzc3VlLiBpZiB3ZSBkbyB0aGlzLCB3ZSBtdXN0IGRvIGl0IGFsbCBpbiBvbmUgZ28uIn1dLCJ0aW1lc3RhbXAiOjE3NjcyMzE2NjUyMzR9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwN2E2MWY0ZSIsInBhcmVudElkIjoiZjhmM2ZhM2UiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQxOjEyLjU1M1oiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSB1c2VyIGlzIHJpZ2h0LiBJIG5lZWQgdG8gY29uc2lkZXI6XG5cbjEuICoqSXNzdWUgIzM3NSAtIFRyZWUgc2lkZWJhcioqOiBBZGQgY29sbGFwc2libGUgc2lkZWJhciBzaG93aW5nIGZ1bGwgdHJlZSBzdHJ1Y3R1cmUsIGFsbG93IHNlbGVjdGluZyBhbnkgbm9kZSwgXCJyZXNldCB0byBzZXNzaW9uIGxlYWZcIiBidXR0b24sIHJlc3BvbnNpdmUgKGNvbGxhcHNlIG9uIG1vYmlsZSlcblxuMi4gKipJc3N1ZSAjMzgwIC0gL3NoYXJlKio6IFVwbG9hZCB0byBnaXN0IGFuZCB1c2UgZ2lzdHByZXZpZXcuZ2l0aHViLmlvIHRvIGRpc3BsYXkuIFBSICMzODEgd2FzIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudHMgYXMgdGhlIGltcGxlbWVudGF0aW9uLlxuXG5MZXQgbWUgbG9vayBhdCBQUiAjMzgxIHRvIHVuZGVyc3RhbmQgd2hhdCB3YXMgZG9uZSBmb3IgL3NoYXJlLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXM0RUNrWUlDeGdDS2tCaGZIVDVLaUxnRjhRK1lBL3JocGtqWVdYN1ZBV0ZuMGt5WjFpeWxmT01PeFRYRC9xYWo3TnVXSXB0WCtwdWFqdVFCM2VpYkE4WStqdDFmTXJxUGZBRUVneVg0SGNhNTRudDJXY3RkNm9hRE1xVzZldS8rQVJ6OWNzcXFTSXd0VzRQTnpMd1htN3JEbjNvRFd3S1NQSzU5L3dMLy9OakdRTk9Qd2NKSjlXemR4ZE5WNWZibzVxQVhpSURrUVF1S3JVRHpKaXhNUWg1WjdPK3RiTHlkNnZ5Tjc3K041cUowUnFnWU9SZEx2bEtGTGtkQ2ZtZWlFTWY5cHE5eTRhclZOTmdmV3lNVUlUTjg3dlZXUUJNUXlJWWVmR3c4MUY2Skpqam5zejlvY1JVMTZRMzZJOVRTc05nRnNKWllybU13MWJOaHltbCtqMTNuWVpsZWFsT0NINFc2Z1pZMUNpN2pTZWx0K2ljTnBIYU16c0d4TjVrT01uR1pFcWRtMHlpSDZUU0gzeGpFTXN4QjZadEVsaFJPOG1iN1VGY1BLR0R3c0QzU05NRG9YenRkR3lFM0E5K05mU1hnbTVWMzRVbHlsRDZ3UTFtN1lOMUNQVFIzYk8zODI1bTRzNlRmS2Irek1UakxkVFVFN21pOGVKSTFsSEp6RUVPWjRXWUJCK1A3ZVdFUTB4K3BpQlVUZDk4QyttaiszRjJMVzBhRVFQNWJWUVp6Nno3L21HWU9PWlQ3V0Q4UHBTWW9Rc01UaU9UcjQwWlZHUmN2dUlhRXMrQzYzU0lYSXRGZTJ0OVQxNGdSTk9YZmxTM3hJbVRvamF1dFJUR0lMRldWTVFqdmxBWVNXL2dQdXBJeVM4bHgxak4zZi9xdFR1M0V4OWV1aVFDQjBkV1lNNk5mY2dpYTkzbWN5M2ZTQWNZWWw4TWd6SU9JWmk4RGd0WmtiY0dGdkJCcGd6UnJtSHdMS2llQUE5dmdBV1V1bzFhN0lKQXJzUzBHZmg1RmQyZzlhUVZBckJQKzFlUXBXS2t0QmtZQVE9PSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiWW91J3JlIHJpZ2h0LiBMZXQgbWUgbG9vayBhdCBQUiAjMzgxICh0aGUgL3NoYXJlIGltcGxlbWVudGF0aW9uKSBhbmQgdGhpbmsgdGhyb3VnaCB0aGUgZnVsbCBwaWN0dXJlLiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMVd6alpHQ1NLTVlvbkZTZ3NBdkVLRW8iLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ2ggcHIgdmlldyAzODEgLS1yZXBvIGJhZGxvZ2ljL3BpLW1vbm8gLS1qc29uIHRpdGxlLGJvZHksZmlsZXMsc3RhdGUifX0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxUm1EZzZVems2ajdjc2lWd3VkQWRGVSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJnaCBwciBkaWZmIDM4MSAtLXJlcG8gYmFkbG9naWMvcGktbW9ubyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6MTAsIm91dHB1dCI6MjY3LCJjYWNoZVJlYWQiOjQ1ODM4LCJjYWNoZVdyaXRlIjoxNzk5LCJ0b3RhbFRva2VucyI6NDc5MTQsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDUsIm91dHB1dCI6MC4wMDY2NzUsImNhY2hlUmVhZCI6MC4wMjI5MTksImNhY2hlV3JpdGUiOjAuMDExMjQzNzUsInRvdGFsIjowLjA0MDg4Nzc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMxNjY1MjM1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYTJkZmRiYTMiLCJwYXJlbnRJZCI6IjA3YTYxZjRlIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0MToxMy4wMDRaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVd6alpHQ1NLTVlvbkZTZ3NBdkVLRW8iLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ7XCJib2R5XCI6XCJUaGlzIGlzIHRoZSBzZXNzaW9uIHRoYXQgaW1wbGVtZW50ZWQgdGhpcyBmZWF0dXJlOiBodHRwczovL2dpc3RwcmV2aWV3LmdpdGh1Yi5pby8/MGNiYTE0ZWI0NDZiM2QzMDZiZTg4OTlkZDYxNWNjNzMvc2Vzc2lvbi5odG1sXFxyXFxuXFxyXFxuVGhpcyBjdXJyZW50bHkgY2Fubm90IGJlIGltcGxlbWVudGVkIGFzIGEgY3VzdG9tIGNvbW1hbmQgYmVjYXVzZSBleHBvcnRpbmcgb2Ygc2Vzc2lvbnMgaXMgbm90IHBvc3NpYmxlIGZyb20gYSBob29rLiAgSXQgZGVwZW5kcyBvbiBtYWtpbmcgYSBzZXNzaW9uIHZpZXdlciBhdmFpbGFibGUgb24gc2hpdHR5Y29kaW5nYWdlbnQuYWkuXFxyXFxuXFxyXFxuPGltZyB3aWR0aD1cXFwiNzYwXFxcIiBoZWlnaHQ9XFxcIjI2MVxcXCIgYWx0PVxcXCJpbWFnZVxcXCIgc3JjPVxcXCJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNTEyOGQ4ZWMtNmZkNC00M2FiLTk1ZDUtOGQ0MWFjOTgwZTY1XFxcIiAvPlxcclxcblxcclxcbkZpeGVzICMzODBcIixcImZpbGVzXCI6W3tcInBhdGhcIjpcInBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC50c1wiLFwiYWRkaXRpb25zXCI6MyxcImRlbGV0aW9uc1wiOjB9LHtcInBhdGhcIjpcInBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvaW50ZXJhY3RpdmUtbW9kZS50c1wiLFwiYWRkaXRpb25zXCI6ODYsXCJkZWxldGlvbnNcIjoxfV0sXCJzdGF0ZVwiOlwiT1BFTlwiLFwidGl0bGVcIjpcIkFkZGVkIC9zaGFyZSBjb21tYW5kXCJ9XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzE2NzMwMDN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJiZDRiZTY3ZCIsInBhcmVudElkIjoiYTJkZmRiYTMiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQxOjEzLjU4MVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxUm1EZzZVems2ajdjc2lWd3VkQWRGVSIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImRpZmYgLS1naXQgYS9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwudHMgYi9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwudHNcbmluZGV4IGM2ZjMxMzlmOS4uZmM3YjdiOGVkIDEwMDY0NFxuLS0tIGEvcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sLnRzXG4rKysgYi9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwudHNcbkBAIC0xMzczLDYgKzEzNzMsOSBAQCBleHBvcnQgZnVuY3Rpb24gZXhwb3J0U2Vzc2lvblRvSHRtbChcbiBcdGlmICghc2Vzc2lvbkZpbGUpIHtcbiBcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGV4cG9ydCBpbi1tZW1vcnkgc2Vzc2lvbiB0byBIVE1MXCIpO1xuIFx0fVxuK1x0aWYgKCFleGlzdHNTeW5jKHNlc3Npb25GaWxlKSkge1xuK1x0XHR0aHJvdyBuZXcgRXJyb3IoXCJOb3RoaW5nIHRvIGV4cG9ydCB5ZXQgLSBzdGFydCBhIGNvbnZlcnNhdGlvbiBmaXJzdFwiKTtcbitcdH1cbiBcdGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmMoc2Vzc2lvbkZpbGUsIFwidXRmOFwiKTtcbiBcdGNvbnN0IGRhdGEgPSBwYXJzZVNlc3Npb25GaWxlKGNvbnRlbnQpO1xuIFxuZGlmZiAtLWdpdCBhL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvaW50ZXJhY3RpdmUtbW9kZS50cyBiL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvaW50ZXJhY3RpdmUtbW9kZS50c1xuaW5kZXggMTdmZWY4YzBiLi5mOGMzMWIzMzMgMTAwNjQ0XG4tLS0gYS9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21vZGVzL2ludGVyYWN0aXZlL2ludGVyYWN0aXZlLW1vZGUudHNcbisrKyBiL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvaW50ZXJhY3RpdmUtbW9kZS50c1xuQEAgLTIzLDcgKzIzLDcgQEAgaW1wb3J0IHtcbiBcdFRVSSxcbiBcdHZpc2libGVXaWR0aCxcbiB9IGZyb20gXCJAbWFyaW96ZWNobmVyL3BpLXR1aVwiO1xuLWltcG9ydCB7IGV4ZWMsIHNwYXduU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG4raW1wb3J0IHsgZXhlYywgc3Bhd24sIHNwYXduU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG4gaW1wb3J0IHsgQVBQX05BTUUsIGdldEF1dGhQYXRoLCBnZXREZWJ1Z0xvZ1BhdGggfSBmcm9tIFwiLi4vLi4vY29uZmlnLmpzXCI7XG4gaW1wb3J0IHR5cGUgeyBBZ2VudFNlc3Npb24sIEFnZW50U2Vzc2lvbkV2ZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUvYWdlbnQtc2Vzc2lvbi5qc1wiO1xuIGltcG9ydCB0eXBlIHsgTG9hZGVkQ3VzdG9tVG9vbCwgU2Vzc2lvbkV2ZW50IGFzIFRvb2xTZXNzaW9uRXZlbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9jdXN0b20tdG9vbHMvaW5kZXguanNcIjtcbkBAIC0xNjAsNiArMTYwLDcgQEAgZXhwb3J0IGNsYXNzIEludGVyYWN0aXZlTW9kZSB7XG4gXHRcdFx0eyBuYW1lOiBcInNldHRpbmdzXCIsIGRlc2NyaXB0aW9uOiBcIk9wZW4gc2V0dGluZ3MgbWVudVwiIH0sXG4gXHRcdFx0eyBuYW1lOiBcIm1vZGVsXCIsIGRlc2NyaXB0aW9uOiBcIlNlbGVjdCBtb2RlbCAob3BlbnMgc2VsZWN0b3IgVUkpXCIgfSxcbiBcdFx0XHR7IG5hbWU6IFwiZXhwb3J0XCIsIGRlc2NyaXB0aW9uOiBcIkV4cG9ydCBzZXNzaW9uIHRvIEhUTUwgZmlsZVwiIH0sXG4rXHRcdFx0eyBuYW1lOiBcInNoYXJlXCIsIGRlc2NyaXB0aW9uOiBcIlNoYXJlIHNlc3Npb24gYXMgYSBzZWNyZXQgR2l0SHViIGdpc3RcIiB9LFxuIFx0XHRcdHsgbmFtZTogXCJjb3B5XCIsIGRlc2NyaXB0aW9uOiBcIkNvcHkgbGFzdCBhZ2VudCBtZXNzYWdlIHRvIGNsaXBib2FyZFwiIH0sXG4gXHRcdFx0eyBuYW1lOiBcInNlc3Npb25cIiwgZGVzY3JpcHRpb246IFwiU2hvdyBzZXNzaW9uIGluZm8gYW5kIHN0YXRzXCIgfSxcbiBcdFx0XHR7IG5hbWU6IFwiY2hhbmdlbG9nXCIsIGRlc2NyaXB0aW9uOiBcIlNob3cgY2hhbmdlbG9nIGVudHJpZXNcIiB9LFxuQEAgLTY2OCw2ICs2NjksMTEgQEAgZXhwb3J0IGNsYXNzIEludGVyYWN0aXZlTW9kZSB7XG4gXHRcdFx0XHR0aGlzLmVkaXRvci5zZXRUZXh0KFwiXCIpO1xuIFx0XHRcdFx0cmV0dXJuO1xuIFx0XHRcdH1cbitcdFx0XHRpZiAodGV4dCA9PT0gXCIvc2hhcmVcIikge1xuK1x0XHRcdFx0YXdhaXQgdGhpcy5oYW5kbGVTaGFyZUNvbW1hbmQoKTtcbitcdFx0XHRcdHRoaXMuZWRpdG9yLnNldFRleHQoXCJcIik7XG4rXHRcdFx0XHRyZXR1cm47XG4rXHRcdFx0fVxuIFx0XHRcdGlmICh0ZXh0ID09PSBcIi9jb3B5XCIpIHtcbiBcdFx0XHRcdHRoaXMuaGFuZGxlQ29weUNvbW1hbmQoKTtcbiBcdFx0XHRcdHRoaXMuZWRpdG9yLnNldFRleHQoXCJcIik7XG5AQCAtMTg2OCw2ICsxODc0LDg1IEBAIGV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2ZU1vZGUge1xuIFx0XHR9XG4gXHR9XG4gXG4rXHRwcml2YXRlIGFzeW5jIGhhbmRsZVNoYXJlQ29tbWFuZCgpOiBQcm9taXNlPHZvaWQ+IHtcbitcdFx0Ly8gQ2hlY2sgaWYgZ2ggaXMgYXZhaWxhYmxlIGFuZCBsb2dnZWQgaW5cbitcdFx0dHJ5IHtcbitcdFx0XHRjb25zdCBhdXRoUmVzdWx0ID0gc3Bhd25TeW5jKFwiZ2hcIiwgW1wiYXV0aFwiLCBcInN0YXR1c1wiXSwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pO1xuK1x0XHRcdGlmIChhdXRoUmVzdWx0LnN0YXR1cyAhPT0gMCkge1xuK1x0XHRcdFx0dGhpcy5zaG93RXJyb3IoXCJHaXRIdWIgQ0xJIGlzIG5vdCBsb2dnZWQgaW4uIFJ1biAnZ2ggYXV0aCBsb2dpbicgZmlyc3QuXCIpO1xuK1x0XHRcdFx0cmV0dXJuO1xuK1x0XHRcdH1cbitcdFx0fSBjYXRjaCB7XG4rXHRcdFx0dGhpcy5zaG93RXJyb3IoXCJHaXRIdWIgQ0xJIChnaCkgaXMgbm90IGluc3RhbGxlZC4gSW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vXCIpO1xuK1x0XHRcdHJldHVybjtcbitcdFx0fVxuK1xuK1x0XHQvLyBFeHBvcnQgdG8gYSB0ZW1wIGZpbGVcbitcdFx0Y29uc3QgdG1wRmlsZSA9IHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJzZXNzaW9uLmh0bWxcIik7XG4rXHRcdHRyeSB7XG4rXHRcdFx0dGhpcy5zZXNzaW9uLmV4cG9ydFRvSHRtbCh0bXBGaWxlKTtcbitcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbitcdFx0XHR0aGlzLnNob3dFcnJvcihgRmFpbGVkIHRvIGV4cG9ydCBzZXNzaW9uOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCk7XG4rXHRcdFx0cmV0dXJuO1xuK1x0XHR9XG4rXG4rXHRcdC8vIFNob3cgbG9hZGVyIHdoaWxlIGNyZWF0aW5nIGdpc3RcbitcdFx0Y29uc3QgbG9hZGVyID0gbmV3IExvYWRlcihcbitcdFx0XHR0aGlzLnVpLFxuK1x0XHRcdChzcGlubmVyKSA9PiB0aGVtZS5mZyhcImFjY2VudFwiLCBzcGlubmVyKSxcbitcdFx0XHQodGV4dCkgPT4gdGhlbWUuZmcoXCJtdXRlZFwiLCB0ZXh0KSxcbitcdFx0XHRcIkNyZWF0aW5nIGdpc3QuLi5cIixcbitcdFx0KTtcbitcdFx0dGhpcy5zdGF0dXNDb250YWluZXIuYWRkQ2hpbGQobG9hZGVyKTtcbitcdFx0dGhpcy51aS5yZXF1ZXN0UmVuZGVyKCk7XG4rXG4rXHRcdC8vIENyZWF0ZSBhIHNlY3JldCBnaXN0IGFzeW5jaHJvbm91c2x5XG4rXHRcdHRyeSB7XG4rXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgbmV3IFByb21pc2U8eyBzdGRvdXQ6IHN0cmluZzsgc3RkZXJyOiBzdHJpbmc7IGNvZGU6IG51bWJlciB8IG51bGwgfT4oKHJlc29sdmUpID0+IHtcbitcdFx0XHRcdGNvbnN0IHByb2MgPSBzcGF3bihcImdoXCIsIFtcImdpc3RcIiwgXCJjcmVhdGVcIiwgXCItLXB1YmxpYz1mYWxzZVwiLCB0bXBGaWxlXSk7XG4rXHRcdFx0XHRsZXQgc3Rkb3V0ID0gXCJcIjtcbitcdFx0XHRcdGxldCBzdGRlcnIgPSBcIlwiO1xuK1x0XHRcdFx0cHJvYy5zdGRvdXQub24oXCJkYXRhXCIsIChkYXRhKSA9PiB7XG4rXHRcdFx0XHRcdHN0ZG91dCArPSBkYXRhLnRvU3RyaW5nKCk7XG4rXHRcdFx0XHR9KTtcbitcdFx0XHRcdHByb2Muc3RkZXJyLm9uKFwiZGF0YVwiLCAoZGF0YSkgPT4ge1xuK1x0XHRcdFx0XHRzdGRlcnIgKz0gZGF0YS50b1N0cmluZygpO1xuK1x0XHRcdFx0fSk7XG4rXHRcdFx0XHRwcm9jLm9uKFwiY2xvc2VcIiwgKGNvZGUpID0+IHJlc29sdmUoeyBzdGRvdXQsIHN0ZGVyciwgY29kZSB9KSk7XG4rXHRcdFx0fSk7XG4rXG4rXHRcdFx0aWYgKHJlc3VsdC5jb2RlICE9PSAwKSB7XG4rXHRcdFx0XHRjb25zdCBlcnJvck1zZyA9IHJlc3VsdC5zdGRlcnI/LnRyaW0oKSB8fCBcIlVua25vd24gZXJyb3JcIjtcbitcdFx0XHRcdHRoaXMuc2hvd0Vycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGdpc3Q6ICR7ZXJyb3JNc2d9YCk7XG4rXHRcdFx0XHRyZXR1cm47XG4rXHRcdFx0fVxuK1xuK1x0XHRcdC8vIEV4dHJhY3QgZ2lzdCBJRCBmcm9tIHRoZSBVUkwgcmV0dXJuZWQgYnkgZ2hcbitcdFx0XHQvLyBnaCByZXR1cm5zIHNvbWV0aGluZyBsaWtlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS91c2VybmFtZS9HSVNUX0lEXG4rXHRcdFx0Y29uc3QgZ2lzdFVybCA9IHJlc3VsdC5zdGRvdXQ/LnRyaW0oKTtcbitcdFx0XHRjb25zdCBnaXN0SWQgPSBnaXN0VXJsPy5zcGxpdChcIi9cIikucG9wKCk7XG4rXHRcdFx0aWYgKCFnaXN0SWQpIHtcbitcdFx0XHRcdHRoaXMuc2hvd0Vycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGdpc3QgSUQgZnJvbSBnaCBvdXRwdXRcIik7XG4rXHRcdFx0XHRyZXR1cm47XG4rXHRcdFx0fVxuK1xuK1x0XHRcdC8vIENyZWF0ZSB0aGUgcHJldmlldyBVUkxcbitcdFx0XHRjb25zdCBwcmV2aWV3VXJsID0gYGh0dHBzOi8vc2hpdHR5Y29kaW5nYWdlbnQuYWkvc2Vzc2lvbj8ke2dpc3RJZH1gO1xuK1x0XHRcdHRoaXMuc2hvd1N0YXR1cyhgU2hhcmUgVVJMOiAke3ByZXZpZXdVcmx9XFxuR2lzdDogJHtnaXN0VXJsfWApO1xuK1x0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuK1x0XHRcdHRoaXMuc2hvd0Vycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGdpc3Q6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIlVua25vd24gZXJyb3JcIn1gKTtcbitcdFx0fSBmaW5hbGx5IHtcbitcdFx0XHQvLyBTdG9wIGxvYWRlciBhbmQgY2xlYW4gdXBcbitcdFx0XHRsb2FkZXIuc3RvcCgpO1xuK1x0XHRcdHRoaXMuc3RhdHVzQ29udGFpbmVyLmNsZWFyKCk7XG4rXHRcdFx0dHJ5IHtcbitcdFx0XHRcdGZzLnVubGlua1N5bmModG1wRmlsZSk7XG4rXHRcdFx0fSBjYXRjaCB7XG4rXHRcdFx0XHQvLyBJZ25vcmUgY2xlYW51cCBlcnJvcnNcbitcdFx0XHR9XG4rXHRcdH1cbitcdH1cbitcbiBcdHByaXZhdGUgaGFuZGxlQ29weUNvbW1hbmQoKTogdm9pZCB7XG4gXHRcdGNvbnN0IHRleHQgPSB0aGlzLnNlc3Npb24uZ2V0TGFzdEFzc2lzdGFudFRleHQoKTtcbiBcdFx0aWYgKCF0ZXh0KSB7XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzE2NzM1NzV9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmMjc3OThlMiIsInBhcmVudElkIjoiYmQ0YmU2N2QiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQyOjI3LjA4NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ik5vdyBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0IG1lIHRoaW5rIHRocm91Z2ggYWxsIHRoZSByZXF1aXJlbWVudHM6XG5cbiMjIFJlcXVpcmVtZW50c1xuXG4jIyMgSXNzdWUgIzM3NSAtIFRyZWUgU2lkZWJhclxuLSBDb2xsYXBzaWJsZSBzaWRlYmFyIHNob3dpbmcgZnVsbCB0cmVlIHN0cnVjdHVyZVxuLSBBbGxvdyBzZWxlY3RpbmcgYW55IG5vZGUgaW4gdHJlZSB0byB2aWV3IHRoYXQgcGF0aFxuLSBcIlJlc2V0IHRvIHNlc3Npb24gbGVhZlwiIGJ1dHRvblxuLSBSZW5kZXIgZnVsbCBwYXRoIChubyBjb21wYWN0aW9uIHJlc29sdXRpb24gbmVlZGVkKVxuLSBSZXNwb25zaXZlOiBjb2xsYXBzZSBzaWRlYmFyIG9uIG1vYmlsZVxuXG4jIyMgSXNzdWUgIzM4MCAvIFBSICMzODEgLSAvc2hhcmVcbi0gVXBsb2FkIHNlc3Npb24gSFRNTCB0byBHaXRIdWIgZ2lzdFxuLSBVc2UgZ2lzdHByZXZpZXcuZ2l0aHViLmlvIG9yIHNoaXR0eWNvZGluZ2FnZW50LmFpL3Nlc3Npb24gdG8gZGlzcGxheVxuLSBBbHJlYWR5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCBpbiBQUiAjMzgxXG5cbiMjIyBQUiAjMzg3IC0gVGhlbWUgT3ZlcnJpZGVzXG4tIFRoZW1lIGNvbG9ycyBmb3Igc3lzdGVtIHByb21wdCwgYmFja2dyb3VuZHMsIGV0Yy4gc2hvdWxkIGJlIG92ZXJyaWRhYmxlXG4tIEN1cnJlbnRseSBoYXJkY29kZWQgY29sb3JzIG1ha2UgY3VzdG9tIHRoZW1lcyB1bnJlYWRhYmxlXG5cbiMjIyBQUiAjMzM1IC0gU3lzdGVtIFByb21wdCBTdG9yYWdlIChjbG9zZWQgYnV0IGdvb2QgaWRlYSlcbi0gU3RvcmUgLS1zeXN0ZW0tcHJvbXB0IGluIHNlc3Npb24gZmlsZVxuLSBSZXN0b3JlIG9uIHJlc3VtZVxuXG4jIyBGdWxsIFByb3Bvc2FsXG5cbkdpdmVuIGFsbCB0aGVzZSByZXF1aXJlbWVudHMsIGhlcmUncyB3aGF0IEkgbmVlZCB0byBkZXNpZ246XG5cbiMjIyAxLiBUaGVtZSBJbnRlZ3JhdGlvblxuLSBVc2UgdGhlbWUudHMgY29sb3IgdG9rZW5zIGRpcmVjdGx5XG4tIEV4cG9ydCBhIGZ1bmN0aW9uIHRvIGdldCByZXNvbHZlZCBoZXggY29sb3JzXG4tIENTUyB1c2VzIENTUyBjdXN0b20gcHJvcGVydGllcyAodmFyaWFibGVzKVxuXG4jIyMgMi4gU2Vzc2lvbiBEYXRhXG4tIFVzZSBTZXNzaW9uTWFuYWdlciB0byBsb2FkIHNlc3Npb25cbi0gVXNlIGdldFRyZWUoKSBmb3Igc2lkZWJhclxuLSBVc2UgZ2V0QnJhbmNoKGxlYWZJZCkgZm9yIGN1cnJlbnQgcGF0aCBkaXNwbGF5XG4tIFVzZSBidWlsZFNlc3Npb25Db250ZXh0KCkgZm9yIExMTS1yZWxldmFudCBtZXNzYWdlc1xuXG4jIyMgMy4gSFRNTCBTdHJ1Y3R1cmVcblRoZSBIVE1MIG5lZWRzOlxuLSAqKlNpZGViYXIqKiAoY29sbGFwc2libGUsIHNob3dzIHRyZWUpXG4tICoqTWFpbiBjb250ZW50KiogKG1lc3NhZ2VzIGZvciBzZWxlY3RlZCBwYXRoKVxuLSAqKkhlYWRlcioqIChzZXNzaW9uIGluZm8sIHN0YXRzKVxuLSAqKkZvb3RlcioqXG5cbkZvciB0aGUgdHJlZSBzaWRlYmFyOlxuLSBFYWNoIG5vZGUgc2hvd3M6IGVudHJ5IHR5cGUgaWNvbiwgdGltZXN0YW1wLCBwcmV2aWV3IHRleHRcbi0gQnJhbmNoaW5nIHBvaW50cyBzaG93biB3aXRoIGluZGVudGF0aW9uXG4tIEN1cnJlbnQgcGF0aCBoaWdobGlnaHRlZFxuLSBDbGljayB0byBuYXZpZ2F0ZSB0byB0aGF0IG5vZGVcbi0gXCJSZXNldCB0byBsZWFmXCIgYnV0dG9uXG5cbiMjIyA0LiBKYXZhU2NyaXB0IChtaW5pbWFsKVxuLSBUcmVlIGV4cGFuZC9jb2xsYXBzZVxuLSBOb2RlIHNlbGVjdGlvbiAocmUtcmVuZGVycyBtYWluIGNvbnRlbnQ/IE9yIGp1c3QgaGlnaGxpZ2h0cyBwYXRoPylcblxuXG4tIFJlc3BvbnNpdmUgc2lkZWJhciB0b2dnbGVcblxuSSBzZWUgdGhyZWUgcG90ZW50aWFsIGFwcHJvYWNoZXMgZm9yIHJlbmRlcmluZyB0aGUgc2Vzc2lvbiB0cmVlIGFuZCBjb250ZW50OlxuXG4qKk9wdGlvbiBBOiBTZXJ2ZXItc2lkZSByZW5kZXJpbmcqKlxuLSBQcmUtcmVuZGVyIGFsbCBwb3NzaWJsZSBwYXRoIHZhcmlhdGlvbnNcbi0gSmF2YVNjcmlwdCBzd2l0Y2hlcyBiZXR3ZWVuIHByZS1yZW5kZXJlZCBjb250ZW50XG4tIFBvdGVudGlhbCBwZXJmb3JtYW5jZSBpc3N1ZXMgd2l0aCBsYXJnZSwgY29tcGxleCBzZXNzaW9uc1xuXG4qKk9wdGlvbiBCOiBDbGllbnQtc2lkZSBkeW5hbWljIHJlbmRlcmluZyoqXG4tIEVtYmVkIHNlc3Npb24gZGF0YSBhcyBKU09OXG4tIEphdmFTY3JpcHQgZHluYW1pY2FsbHkgcmVuZGVycyBzZWxlY3RlZCBwYXRoXG4tIE1vcmUgZmxleGlibGUgYnV0IHJlcXVpcmVzIG1vcmUgY29tcGxleCBjbGllbnQtc2lkZSBsb2dpY1xuXG4qKk9wdGlvbiBDOiBQYXRoIGhpZ2hsaWdodGluZyBvbmx5Kipcbi0gVHJlZSBzdHJ1Y3R1cmUgdmlzaWJsZVxuLSBDbGlja2luZyBub2RlcyBqdXN0IGhpZ2hsaWdodHMgdGhlIHBhdGhcbi0gTWluaW1hbCBjb250ZW50IG1hbmlwdWxhdGlvblxuLSBLZWVwcyBjdXJyZW50IHZpZXcgY29uc2lzdGVudFxuXG5FYWNoIGFwcHJvYWNoIGhhcyB0cmFkZS1vZmZzIGJldHdlZW4gcGVyZm9ybWFuY2UsIGNvbXBsZXhpdHksIGFuZCB1c2VyIGV4cGVyaWVuY2UuIFRoZSBjaG9pY2UgZGVwZW5kcyBvbiBzZXNzaW9uIGNvbXBsZXhpdHkgYW5kIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50cy5cblxuVGhlIGN1cnJlbnQgZXhwb3J0J3MgbGluZWFyIHN0cnVjdHVyZSBwb3NlcyBjaGFsbGVuZ2VzIGZvciBicmFuY2hlZCBzZXNzaW9ucy4gV2hlbiBtdWx0aXBsZSBwYXRocyBleGlzdCwgc2ltcGx5IGZvbGxvd2luZyB0aGUgbGVhZiBwYXRoIHdvbid0IGNhcHR1cmUgdGhlIGZ1bGwgc2Vzc2lvbiBjb250ZXh0LiBXZSBuZWVkIGEgcmVuZGVyaW5nIHN0cmF0ZWd5IHRoYXQgcHJlc2VydmVzIGJyYW5jaCByZWxhdGlvbnNoaXBzIHdoaWxlIGFsbG93aW5nIGludHVpdGl2ZSBuYXZpZ2F0aW9uLlxuXG5DbGllbnQtc2lkZSByZW5kZXJpbmcgZW1lcmdlcyBhcyBhbiBlbGVnYW50IHNvbHV0aW9uLiBCeSBlbWJlZGRpbmcgc2Vzc2lvbiBkYXRhIGFzIEpTT04gYW5kIGltcGxlbWVudGluZyBhIGR5bmFtaWMgSmF2YVNjcmlwdCByZW5kZXIgZnVuY3Rpb24sIHdlIGNhbiBkeW5hbWljYWxseSByZWNvbnN0cnVjdCBjb252ZXJzYXRpb24gcGF0aHMuIFRoaXMgYXBwcm9hY2ggZW5hYmxlcyB1c2VycyB0byBleHBsb3JlIGRpZmZlcmVudCBicmFuY2hlcyBpbnRlcmFjdGl2ZWx5LCBjbGlja2luZyBub2RlcyB0byByZXZlYWwgc3BlY2lmaWMgY29udmVyc2F0aW9uIHRyYWplY3Rvcmllcy5cblxuVGhlIGltcGxlbWVudGF0aW9uIGludm9sdmVzIGJ1aWxkaW5nIHRoZSB0cmVlIGZyb20gSlNPTiBlbnRyaWVzLCByZW5kZXJpbmcgYSBzaWRlYmFyIHZpc3VhbGl6YXRpb24sIGFuZCBkeW5hbWljYWxseSB1cGRhdGluZyB0aGUgbWFpbiBjb250ZW50IGJhc2VkIG9uIHVzZXIgaW50ZXJhY3Rpb24uIFRoaXMgbWV0aG9kIGVuc3VyZXMgYSBjb21wYWN0LCBzZWxmLWNvbnRhaW5lZCBleHBvcnQgdGhhdCBzdXBwb3J0cyBjb21wbGV4LCBtdWx0aS1icmFuY2hlZCBjb252ZXJzYXRpb24gc3RydWN0dXJlcy5cblxuQSBoeWJyaWQgcmVuZGVyaW5nIHN0cmF0ZWd5IG9mZmVycyBhbiBpbnRyaWd1aW5nIG9wdGltaXphdGlvbi4gUHJlLXJlbmRlcmluZyB1bmlxdWUgbWVzc2FnZSBIVE1MIGFuZCBzdG9yaW5nIHRoZW0gaW4gYSBtYXAgYWxsb3dzIGVmZmljaWVudCBjbGllbnQtc2lkZSBwYXRoIGFzc2VtYmx5LiBUaGlzIHRlY2huaXF1ZSBiYWxhbmNlcyBwZXJmb3JtYW5jZSB3aXRoIGZsZXhpYmlsaXR5LCBlbmFibGluZyBzb3BoaXN0aWNhdGVkIHJlbmRlcmluZyB0ZWNobmlxdWVzIGxpa2UgbWFya2Rvd24gcHJvY2Vzc2luZyBhbmQgc3ludGF4IGhpZ2hsaWdodGluZyB3aXRob3V0IG92ZXJ3aGVsbWluZyBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nLlxuXG5UaGUgcHJvcG9zZWQgSFRNTCBzdHJ1Y3R1cmUgZWxlZ2FudGx5IHNlcGFyYXRlcyBjb25jZXJuczogYSBKU09OIHNjcmlwdCBjb250YWlucyByYXcgZW50cnkgZGF0YSBhbmQgcHJlLXJlbmRlcmVkIEhUTUwsIHdoaWxlIHNlcGFyYXRlIHNpZGViYXIgYW5kIGNvbnRlbnQgZGl2cyBlbmFibGUgY2xlYW4gSmF2YVNjcmlwdC1kcml2ZW4gcmVuZGVyaW5nLiBDbGllbnQtc2lkZSBKYXZhU2NyaXB0IGNhbiBlZmZpY2llbnRseSBidWlsZCB0aGUgbmF2aWdhdGlvbiB0cmVlIGFuZCBkeW5hbWljYWxseSBwb3B1bGF0ZSBjb250ZW50IGJ5IHJlZmVyZW5jaW5nIHByZS1jb21wdXRlZCBIVE1MIGZyYWdtZW50cy5cblxuQnkgbW92aW5nIGNvbXBsZXggcmVuZGVyaW5nIGxvZ2ljIHRvIHRoZSBzZXJ2ZXIgYW5kIGtlZXBpbmcgY2xpZW50LXNpZGUgaW50ZXJhY3Rpb25zIGxpZ2h0d2VpZ2h0LCB3ZSBjcmVhdGUgYSBzdHJlYW1saW5lZCwgcGVyZm9ybWFudCBhcHByb2FjaCB0byBkaXNwbGF5aW5nIHN0cnVjdHVyZWQgY29udGVudC4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVvQXNDa1lJQ3hnQ0trQ3Y2VE5FTmFxditQbDdEcGVNeGsvNWxkcEtoVXFhb2hOdGpzeDIwQktTVW9IdFdjamFFZlRDcUxScm5qVTczRVU5YS9mTnp2c3NYNDVIa2hxNmNHN1hFZ3lZQ3RnQk8wVlVDVFRYYktJYURHS1A3T2ptREUwQ3ZuRXFaU0l3Z2k3YWJaWnZjcEVLenMza2dkS2UvQy8xTVljUUJXUkJMazNmZ1hVeFJrY2RCbHpISjlMZEtOb1BtSmQxcmdPckt1Y3FhSlQ3OGQyYzd4Z2RJTmxLMWhFZUVqdFFLbWNodGFaNkgrOHRjdkZUMkpER1JYZi9CMmpsMmtJTFMreWlOeUt4d000WnlHeC9Gbkl6TnplVFNyTHRIZXNMc0JmckNYaHRWd3NERFVTd1RFZE5nRVp2M0RPUHhDdlhqZHRCZkg2SGVleng3VWswSWoxd080STRJcWRDNmlqVE4yV2pKRGpOTEY3OXl2ejAzUnlEcGVCSWdxaU5jajFXTlZ3bkVHYmxFc0tyZWlPaURuWDQzRGM3eFU5ZWN0OFR3YjFQV25XZlhhN3Y5MjBwUFU4ZXo0bDhQRnY1SXZiODhucXlHREh1cE1KMnNnMzNUU1RoMzlTb1l4QzcxVEhha2xhMGZYK3JIN3dCQks5RVl2Vzk1akFNTUxTekl0M2RWd1YvUkpUNTNMTXR6dHRoSU5zcW5nNzFhRXBZdk4xK2hIMVlWMFJIWFNWdFRZdCs3amM5VjhOUFRnVmo5ZTIxVlRJeFpBeG9IeW81MkxHMThCQzBCSWtDN0pZNXpQWDJsemNyWXZCMkRjMXBCaTJycGw2WjhuZXY0aWJtVmhpQkdCTjROaWN5NDFFeUNJZ21lVG1kYWFzVEtQaGIyeHZ0QVU2VVcvT0FsaHdVVGNZeGd1VGY4L0JXUFVkdkg0ajJSUzgzcHF6TTZiMEJac3pMZThNLzBJRHZISXZ5TEZORWpGcXVjS2xlZTNDN3BLeG1MdE04dHlpVWVNK1djQ0VTWXEyR2JHL091cWFOWTI1MXhaNm9vOGoreE9Jd2JiME9VaFR3WXNSa1hHTTVUalFsSWRQZWpkeWNQVm15cDVsdGV2bjdRdnl6TkFqWEVWdGwwdjJGQ2tPUDR2TTBxdHNHMUFSNGNheHZVYzBVS0xtUDhJaFB3eEc4L2ZudC9Xa0hiSStuRkg5SWN1ek1JMzM3amp3c1lmSVdQVUw4TWp2V0xiUld5bkxiU2xOT1BQSHF2UU9SZ2g5ZEhNc2tuNUVhTHJYZ1NYSzk1QzBsNFl0a2NMbDNQWjRQazY4bmI4UXZUeERiMXFub1pEMEh1RVJnaktldXlGUlRScE8zSWZSWGlHbWVUWHdQbnM2NFdrd2krVWY1cmJ1bldPcDUzczR5dEllS3NMRUFaQjJqck1KYWFMT0xIVE1tWkRRck9aWHU0Wm5DUldwdjVZUFpPUFN5Ty9MTmVEeWpIcEdDdU5BT09xKzQxV3QrRG9ZdEFNR1FvSGF4Unp3Nm5hL2M2dTIvNEJGeksySEpLUG9RL2dIb3piTFhwcDNKdE1SWFUxVUNyWU55YlN1bEg2VWs4bDluMWNoNTVYU3QwQnp3UU5ROXFhR1U1bmR0WHN1KzRVYjR5SzArc2w5YWtPRStKU2loeDJSQXpRQ1JqUW1jL0NicXhXcklwYTVqcW01NWdCQ0gwMzAzS01zaGd4WmRMdFplMGZmcDUyd2x3OWZoMXBQQjJ3bEovbGI4QUlaay9UUEtkejYrTk1UL1dFY2ErblRjaENYcTNTMzUzdUtSaVJVdjdyYlNaS0NFTFNEcWpnbTBsR3dwL0pnQkkzUVlVMTlOc3dnNUhoY2V1OGhXcFZhQklBdi8valprVGdxekM4aHBMOGVXdGQrVFp4VjdkU1NleDVhejR2Ym5wT0lBbXFac1FFZC8xYllCMnFaalcxdkNMVVVCWFhuL1BVRk55Z3IxMTl0NmUwNzlybTJTTVRQRDFKc0dzZnFRanJTbU1CR0hsWVZwWnJTR1JYZGl6eFUrSUR1NHY4L1UyaXFLRGZhcFhpeWlnd2MxZWE2QXRtOE5JdW94dWI2NGpyQVYzUEw3YU5IaTBFTUN5cURNb0dqTTNXUFpIVUN2dElkd0RNSW5rNnV3WW5EaW5aSHVTczcxbHIyemlWYXhLU3preXpOS2JhK1lueHk4dGx2OUpTbHlDYlVJSmRpeVBIUFczU3FYZHVUNkR1UUNFcVJoOVgyT2NBK2hlUC9IaHo1cUZNZnd3cVNrbEh0ZGEzZGFkOTJlOHYyYklJZ2JaQ0YwbWhxU3NxN1B5Tm9lYUxFdzByS2FlSEtOL3lNeHR6QnIyK0dRdjZBeGhiV3V4aXpvWEZiNWZhbGtsWFJocXlObXpKS0YvSXM3aU8vd1pwTjFSRjZUbDBLeldrYnk5ek9uMitXTm85OFN2aVNldXJuWFFHanN3RnZhSU5McWtxUk9oWHRwOVJ6RVU3Z0xrd0Z1bGovU1JGbkFmaERiTGQxUE9jQnkvVkZKR0kyUWI3b2RUTWdPMk5ZUU1XWjdMSExYdnVsRmVvZVNDeDh5YjIyZVRtNzZjeElLZnEreEhWamhYTThGRGJBOVNQSys2ZjVUT1VtRU5JVWJCTloraWhsS1pvNzRyZm5iK0tkVWRUbENiV3J0TkwwNGNKT0dKSlorZUp4SjRDSTg0eU1vZDg5V3R2bC84empMbk1YdDhCd0k1dTdBL096bzk4VnorYnhLT3NNUjFjdjl6TmV6YzJ1eHluUXpqU3EwVE9GVUEvajh4UTJONDZDcDFpR3d5b3ZZSnRaVU9yOEZWQm9oKzVKazZxNS85MGNxYmlwN2ZselVuSm1PYyswYzBqTmNKR2lRWEg0elcrRGV3TjQ4Q29tc04wakRZKzkrVjJ6Z09LeXdvbVQ0T2tsbTJFZVVjWjhWTHY2UTZ6UDlmRHZhYTI0YUZhYmdmUndMRGdtU3R3ajNWL0xBVTl4T0hEbUpVejRTRnI4cG9mb2s3VEY3R1JnZjdqOEVLYzhsSVg4VXlDV1BGdnBvZnZZaEJVKzJrdmxPeHdGVi90NXk0dVZGV21HL1JueDVlTFFYRWVjcXJhcWVXeGZNVXdiN3dTNVhPT2FRbkw3SDBZSlhBS3ZOU2Y4RCtnOXJpTUVGdnV4S2crbnRBRjFvcEd1QXpTQlJSVGVnWU15cVgxb2poaWNTb2N5OFpUR21oaDhwZnI3VklSNzR4RzVoSlJqK3FHSkZxQzVFWmV6Uk1xNytQVCthUzNtSzYzNVVnWWIvRHk4QkdUd2RQUFIrVmRQNU1XdWVzbTFOQU1rTGpiNjRKY2VNNFkzOXJZamlWbU5JckpSdlpnUURLNlVpZXM1WlgrL01hSHpXSVlrODl2cDNnT0ZEb3lNaGpFTHRLeVgzbytwanRpRUxqRWJqeloyWDJ1V2ZWWHRtUENuK1dycHAzQkZvaXJQZy83bkpmNXAvSSt1cHVCMlZ1bWMwZDYwZlBPNkFZYy94ZWdaZzJPa2wwRldSSmNOanVkMTZnQzM4blZZUW9CbDNMQnVhUTBZSnJrbHIzMEN6NlpEODUvT2dNekc2MXNXMldINDJ4TnFGR3pHbGNqejBMZVRTT3daRFhZaU5TdkVlSVM2cjZiSUhGU1ptSW1FWkNiTTJDQjJxcGQ4OXNHU2FVSWZFdFF0b1I5d2FYSlVDNnlzVUJ5ZDg2OTVyZUJVUlJzU01CM3JUN3ZObHVNZnd5Z2pqL2wwVi96NG5PamFTVHp3NGQ3NHdYR0dYSEROVTIyaG9sRzREYXZoQ0pJRXJEdno0dTJFRjF5VUxVMXFLRGpiTmh2cmxEbE9UdE90Vmc2MG1za3J2N1hWYk5melM0cEhjM2FpY1ltZG1FS0ErTml0dnhwOEVDME02TXVoVmh6R1FwV2NjUVFPMWNwSXM5VUl3ZHp6QWpQV3M0OWtwd3JUQUFpY2hzMW85aEk2NkUram1GRmtteXYrVDFjSUREcy94U1lzaytPd01yZ1IwZER1aThDcnlyOHZDQkZKdFJXTndQckpDVnJVWjRPOXNRajdoV2dHWjVKZml3Q0YrLzBjeVpXRGllZVA2Z3FhRnkyaVJrWTRYUlZNNXdURTRpSlYrdGpYNjFxZEdKUTRXQjY4NldTSFFEcVJKVGMzVmp6OTdQTEVmN0k5NFF5djI4VTIzb1U3bEcxc0hQRTdSY2oxYzhKTDluZXNYMTgvUkxQZmZRZU96UTJBUXE2TzdkenBuYTE3SnN0djJydWF5MXV3MVNwVU1WN2xQZ2NmbmJnS1Erak85cEpxbkxqdFU4NitzYXVqYy83bEdrOCtkc3ducnFPQWpRRUdPQ2pSaTlhdFdWMkczV1drTDZXcDc3K2w5Tkg5QVJOSmZpTWxjWmVFQXUvaU1jSlZVcmlMMWZHQXQ5TW1zL1dXN2RYbjJ6MDV3ME9qc3ZXVDNuaDJhRFFYN2J0WmxTbi9nR002TzljdGVYSjU2OWUvMTBOaFNRNmRKVmg4Yi9ZbU5iU0ZWRHFzQVVCdXhoL3M2Tk9lRGduRjU0T3NwWjU0ZjFoN1ZMZjJLRzEyZzgwcTJ2L0JFRmFSUDRrOEc3VnVWb1g0L1ViYUU2SHRETkFvVEFwQ0xZT21xVzF1STY2WmRoREdPN1cybWMzTDdTTFByWnJxSmhraUw0eTJDMlFmTG9GU2pxL05xYm90V09lQ0l5TFViSHdOMDI2aEMwZXBuVEUvUmRJeFlzcHhIT2puN29INzlaaWNJeWdONFRia0hFRm5hQVZtbVlNUkJqSWRiYXVyelhmdlYwNTd0VXBLMy9XdVM1SGI2V2ZhZnJ4aUtVVUQ3M2JYTS9ENFlEUnZUbVNMWmhKczNHeUdobTk2L3MzcTc5S0R5bDcyUVEzUGhyUlBTang0VkJieEgzRWhuVmdPckd2S0IxemdzTm9LeFRpem5YQjhhMTlEYlVWVXJ4OVJlZ1BSM3QyemkwUUVPUEkxdmY1bGFHZEM0ZFd2VWpjY3RrOG95T00wSVBWeFh6MmVBaGIzV09XZjdZRlg0T2FVQ0tEU1lHYmFWckpGZzU2TnpHQ0E3eTlsd3hESEVNN082N3FtSjZSa1l5RDlJQVpiWUljbXZwblY1NFpoUUUrWGlDaGlvNDJoLzFJZ2gwWktsdzBYaGtIeElBdjN1RXc5RzdBcTRrU1QzZi9HQWdUUkNXcUZrVExRZjlTaWc5VmF1VWgvTUtSdWNuRUJlV0l3U1hVT3RINXZhS3V6OGFCcUpUNmt0aitEWFpMTjRZVS9hQWZ2ZVRKRG1mZ0dJRnpqVkc1T3JxRjdjRnhpTyt2MENsQ3BFWk1Tc1dEMEJBVXA1S3RDaWUzN1ZsWWhiVDVNU21MNENtS095LzZtQ0tuSGVjaUVnQkJaenJrUGZETHB0THI2K2kxMEVnMThaejlyYng5TTh6Q3YwbWhEZ0R2ZituVml1cGU1QjVOcFJwTDZxSGtjRFFQcE5TQk83Vm9nR0pGNlZoeGlpY3N3UWZHYXJ1ekZjZ0RrQk85dUxJNDY4bzgxdVZLb1h5bEIzL0VLUUtYOUxrWkphTTZaYW9KUFAzQzJzU2pRN3dtYlNXVDE4Q01Mdngzc1daS3IyQW9RdWxVWVVJMk51TVhLY0RNZFdUSHZGc2d4cmVPV1phRjJtV2FtVlRSWHJ2eGVvM2VYRy9FeFdNVVNHVkRTZ1JObDRFWHp5cDZWVUxGTVJPVStkOE5vUFM3UkIrVHo1WWdGUTREZVlXeDFpYmlLdTFGeXBWb3AvekpkVXU4VEp6OVY3Y0I1OWRhZG5KV2VXcjQrZloxNncwRDRpUGZ3U2hYay9PLzlJV09lR3ZKV2RiVFpyS3BYTnY0SXpMWVh0Qk83dkdvT0NpcTJmbVY5WmlnS1MxcGc2VEl6NnA1NnNyQk5YazFsYytTRVYvdlFiVmxENWJ4U0h3V0ZKWHUyeS9abGVhczFtUElXK2I4NFdlbjA3YUJabjcyZjZIOHB0UTJzT0RmTXg5Vnl4eUtUU3BOam5ucWpSUERMd0NrMzM1T2JXeW5sbjNaeElDRmZwZlQzYzRUOTl3dnFmMCtaWVZVNzRiaXJWaTA1d01GdzJJN2ZlV3lHUi9DdkE3VWpLZkloTFY3R3dyc1dHWHF1ak53M1YyQnZ6WnR0d0ZVNkpSV0QyOUM4am9pQTlzTHdER0xVeVAxdllUaXowM1RGODZnV3pjS2ZJQmlkcnk4TUhSaW81c1VabFpVTlpsWDFxU3lMdjBwZFZsYmZZbXZWS2VBblJMYnNhRm1yUUl2eVpWaUg4ckZMTnBMbmlKTmhOV2Q4T0wxUXpWTnJqS2h4Y3lJVW1WM05DVkxEUmYyWGpXUUZncHpHM0ZwR0Q2b1FROElJVnB4T0QxSlFBdlZWNFI2MVlrT2k3Y2w3T0hyQUdQTTk4UkpEVndPdzBuY1JZbEpKaW4vUVdHbkM1dER6VnFjOWxNRFpZbmtyZ1cybUNQVDA2cTYyNFdBblF3aXMvdnhKSzBDM3oyQXdsbUQvOE9lSmtIMWxGclQwWW90c3NzUWttZWdGNDBaWEpsQTh0SERvaGhPbk9aYkdkWFZTdWNXVGFacXFUaW5YYlhlZ1d6eGRPeWdRVWtHQkoyY2xFbEZCc2ZsVTV2RUdQZmZtYW5pTkVDY0ZiOCtiVVd1WXYwY0NyVHg2d0JlK3NUcGFsOElWeHdHTDBPYm9TR2NoSGxTc0dseVdINm5wRW13V2NQYWNkWUNEOHZoeDZ5cktOOUtmd21zTm1FaGwzRUR6ZEdwMEdoZThPbGFxMFIwcG1ESEFMVmY1cFA0ZGEzUENIVDlLKzJYTEMyK3hYY1ZwMUNqbEpoZmhHdm1IYWtTSjVwWVlJN1piYkh2UlI0bUdoREJ3c1J4SlIxRi9KbGtWeElCdVBOVmZObzlNTmI4WFg0dFo2R0Ixb3JJbXJZUm9vRUxFZVFuTFd0WkhsbkVMLzBwNjZhMFp1Y0lZa2xvU1FzV2YwQk1sNlVOYUs0WEFqalVaN1FVYWREYjdIV2Z5OXVsMkNXZVpudGZXQytGblh3KytCZGd6Ykx0K3FaSS9KNGhNT1lxZElyT1B1OTBpZHBOSkZWb3JLNGcvOHpqb0FqMG9jcDBrMVdrTmo2RkltcmoyUmd6djF2ZGk5b0RBSDM1NnNtUGpNMlR1VTc4Y0hEbytwWlEzT3NtalAyZDAwdkROTmMwWnUxUVlNeUhMV1cwL1BUV3BtQjdBL3NyVUlJakZPTEpGSzB2SnlXZVpOOUxSOEpyRmFFc3NsSHA3WXBscEV0MjRnS29BQ1ZiK0hDWXR6M1JHWUI1WmNqMEYyc3pBb0h0OGxRRW5TNXdzWHc1STZ5dW1kSENRN1paRnc4T3ovNzVxMmNKd2NOYVFnd0FiS0hRT29ITWdKa2J2OWVEWE83WUhqLzVCdnVTVTZ5dHcvOVNSR2E5Y2x6RE5ZQ1Z2MHVxakUwYTU4T2dlczFoMGczcmgybHgwSjJTcUxlZlFpWnNpbHQzMnhUOVo0NFpmc1JKV1pNd3lEcnlqS2pkSDBEVHpobVduTXpIM0pmaEZwWWkwUXZKc1hDdTMzWFhGNTRoTUYzZHZSL0huTFQyQjhqeGhYZVo4SzhhNjM5NlV3SEZlRnVsYWpkWTZ6eVRaRys4clpod2xmamVDRU9jSHlIaFZ6K0hZeHZBZ2ZJTVB2ajA1WDBCNDdaWlFZVlQ5ODZSWmZoVjR3RDNNRXJEc3JUZkhUUXhKRlhwUCtRTDRzS1hlREpGTzlKYkU3RUw1RUxtcEcwa1FraEVnRldIdG1FN2RuVXhueTJOMzhJRnE5b3FIN1BzREJBUWNKUGJnMjhrQVVqKzcxMlc0QmZDcHQrcEF1NmV2QWllSnBRSy8vWE83RHFkNGVveWoxdVpobHUrTHZad3Y3eTROV0tjeGc4NllycWpHTU1zamQxcDVSOGhXK2tnWUJNSDh4TWxKYVpVbWsyY0t2ZXNsbktxcCtJYzVGQko0MDNvNHduR3BUNytabi8rZWptNnc5dU1qYjl6SjhsTjhLdXVpQjF0aHc1MzJMcm9NcXlBOXFubEJ2Zk1XbGk1UEhWSUV3bFpkRk03bzFEelVWS1FTdkpuV0JqQlJBSjBLeFErWjBUc2IwUE5jRUNtY1A5RkRwOTcvTkVkN2kzR0ZRNzBjZmQwNncvc1VTQWRXWW4ySEdmM3pDbzJDLzBiMDI1VHJCa2xGaTBtVCtlWVNTRVJNczlzbGZtejZuNFhNR3RJbTNMRnZaZzJxNG5zajZqTUtqdCtkRWRGNmR4TGxLR25BRWYvY3R0aDJ4Tlp1RGRVQTJMWlZwTUNRTENlbXcxVGVrbTdHRERFWkhMZU9kM2RJY1NPNDVETVJJQy9ILzZVSUFwZnlNK2hrd05hMy9MaExObmUzdTVsaXduZ0NVbk1WZ3YrUzBEVVE1RUFXVjBZWEZITXBmSTBMbE5ad2VqMS9pZ0t3dHovcUhYM013TndYamJvM0NOWnkvdzMxMjJCK2tUeDgzRkFxOWw4dVNKaW53dUpHdDk5cit4Y3hzWG1SWkV5N0NCUGlnVjN4Skt6OXJmWWVyUmhSREx6YmxpWlRNYnpWWis2N1ZPLy9GVTBJMU5Ic2dpelN3YUdRTkFSSEVDZUpVOTJRL0JZY20rU003YzlNcytXMVRWd0xIRVR5NWJiZ296OTZvZGVQTnUvTDh3WHVwQ1FCeUdtR1lRVDZJTEtBNW5ocVgvZEtpRFhvbEdnN1p5cVBkUkIwYUdJbWlJc0lMUVRqQlNEYVRzaExVUzFCNURvU0Iyc2ZPbzRZdlR4cis2Qk9oSGtIRGxTVFFyVG56U1FNQ0E5M2o5bW1rN25nMlVsbkhzbU1qc0N4U0FLU0FRRkFmMXFacUNFVHNMdUZKY0t4QjhSMHRzU2U5cTREenNKeUZjVTA1bVNIWDdyVlhmdXhOUmdCTnc2dUFqMFF6dFh3empKcUFSODJCN0pVSmtmT3VUTDNUVWMxV0dyeHVLNUpHZjBGT21zMUNmanZ1NVlaTGVjSW9TNkFFcHdLMTBGTk9LUi9PQjd1MWRWQmdVVzBjdDFuTFg1dVUwbkRXaGVRZ3RMZjcxdFBJZytuSHdtNEhOdllRQmlzS3VMcSsxV3ZxYUFRSXlFSUR6RzhKcUlMVDNsdjNJOUtaVUhhMldYVUo3TUJOMjBLRm5ZZC9FY043aDNWVmZJd2NNVFI2ZzhRTEdoL1UzZ1hvSnc1cnpjNTZsVCtoZ1ZsVmFmbHZFVkVyd1AyOVo4ZE9oaVBRSCtKRUV5NmJTN2pLNnlqWFR1a2ExQjBIcENOOEs2VlIrblNYSEd0bHZKcmFmMFFPeTBpUjlIeFpzSVkyUkE5VUpQL0w3bVdHYmNZcSsvZVc1ZlVXT0JjaUFkRVZEaTczMGJaZCtjQnJuQmI5Z0V3UFAxRjNna3AwZU5NYkdDZVBjSXJTaDB6OXJOeksxeXMveTdsWVlDb2oyaWtqbXZucGhNb095V2JoSi9aOGZONnVlUWJ6Mkx1SkxaMWFOMjEwbUNiQ1NzK1Y0NVhYeTV5d3JuU3puQmtGUFpnVWlBSG5SQ3hLcUJzL3M5RjVvNVZPMlhBWDA2TWluaXRJMVRyNlFETHdRRjVmOGplWmRJUWV0dXFoY3lFN1lUZVVzMzI0QU1KNk44V2ZRVFp2OFc4SE1vd2U5RDNNRkRTQ1VmeTdKT04wanpENWtZaHV2YkhsMklGaE9Ld0xKQWt3VFN2ZUlsSVdJNFp0Z1VHWUFER0E2R0FMTUFRSW5OOUJxK210MkZGdzVhYm9UeStHTGdnb3FISS8vN25nYmFTdHduOFQvS1REQkp2UG1TOUxTSGVIVml0UHR0SXE5cm9UdW9vb1ZZcXhHZ3B3NkplM2JCTy9HN1ppU3QrUU96OEJNb21GbUpZZjFoZ0IifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ikdvb2QgcG9pbnQuIExldCBtZSB0aGluayB0aHJvdWdoIGFsbCByZXF1aXJlbWVudHMgdG9nZXRoZXI6XG5cbioqIzM3NSAtIFRyZWUgU2lkZWJhcioqOiBDb2xsYXBzaWJsZSBzaWRlYmFyLCBjbGljayBhbnkgbm9kZSB0byB2aWV3IHRoYXQgcGF0aCwgXCJyZXNldCB0byBsZWFmXCIgYnV0dG9uLCByZXNwb25zaXZlXG4qKiMzODAgLSAvc2hhcmUqKjogVXBsb2FkIHRvIGdpc3QsIHZpZXcgdmlhIHNoaXR0eWNvZGluZ2FnZW50LmFpL3Nlc3Npb25cbioqIzM4NyAtIFRoZW1lIE92ZXJyaWRlcyoqOiBBbGwgY29sb3JzIHNob3VsZCBiZSB0aGVtZS1vdmVycmlkYWJsZVxuXG4tLS1cblxuIyMgRnVsbCBSZWRlc2lnbiBQcm9wb3NhbFxuXG4jIyMgVGhlIENvcmUgUHJvYmxlbSB3aXRoIFRyZWUgU2lkZWJhclxuXG5DdXJyZW50IGV4cG9ydCBsaW5lYXJpemVzIG1lc3NhZ2VzLiBXaXRoIGJyYW5jaGluZzpcbmBgYFxucm9vdCDihpIgQSDihpIgQiDihpIgQyAobGVhZilcbiAgICAgICAg4oaYIEQg4oaSIEVcbmBgYFxuXG5DdXJyZW50IGV4cG9ydCBzaG93czogcm9vdCwgQSwgQiwgQyAobGVhZiBwYXRoIG9ubHkpLlxuXG5UcmVlIHNpZGViYXIgbmVlZHMgdG8gbGV0IHlvdSBjbGljayBFIGFuZCBzZWU6IHJvb3QsIEEsIEQsIEUuXG5cblRoaXMgcmVxdWlyZXMgKipjbGllbnQtc2lkZSBwYXRoIHJlbmRlcmluZyoqIHNpbmNlIHdlIGNhbid0IHByZS1yZW5kZXIgYWxsIHBvc3NpYmxlIHBhdGhzLlxuXG4jIyMgQXJjaGl0ZWN0dXJlXG5cbioqSHlicmlkIGFwcHJvYWNoKio6IFNlcnZlci1zaWRlIHJlbmRlcnMgZWFjaCBtZXNzYWdlIHRvIEhUTUwsIGNsaWVudC1zaWRlIGFzc2VtYmxlcyBwYXRocy5cblxuYGBgaHRtbFxuPCEtLSBFbWJlZGRlZCBkYXRhIC0tPlxuPHNjcmlwdCBpZD1cInNlc3Npb24tZGF0YVwiIHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+XG57XG4gIFwiaGVhZGVyXCI6IHsgXCJpZFwiOiBcIi4uLlwiLCBcInRpbWVzdGFtcFwiOiBcIi4uLlwiLCAuLi4gfSxcbiAgXCJlbnRyaWVzXCI6IFsgLyogcmF3IFNlc3Npb25FbnRyeVtdIGZvciB0cmVlIGJ1aWxkaW5nICovIF0sXG4gIFwicmVuZGVyZWRIdG1sXCI6IHsgXG4gICAgXCJhYmMxMjNcIjogXCI8ZGl2IGNsYXNzPSd1c2VyLW1lc3NhZ2UnPi4uLjwvZGl2PlwiLFxuICAgIFwiZGVmNDU2XCI6IFwiPGRpdiBjbGFzcz0nYXNzaXN0YW50LW1lc3NhZ2UnPi4uLjwvZGl2PlwiLFxuICAgIC4uLlxuICB9LFxuICBcImxlYWZJZFwiOiBcInh5ejc4OVwiLFxuICBcInN0YXRzXCI6IHsgXCJ0b2tlbnNcIjogey4uLn0sIFwiY29zdFwiOiB7Li4ufSB9XG59XG48L3NjcmlwdD5cblxuPCEtLSBTdGF0aWMgc3RydWN0dXJlIC0tPlxuPGRpdiBpZD1cImFwcFwiPlxuICA8ZGl2IGlkPVwic2lkZWJhclwiPjwhLS0gSlMgcmVuZGVycyB0cmVlIC0tPjwvZGl2PlxuICA8ZGl2IGlkPVwibWFpblwiPlxuICAgIDxkaXYgaWQ9XCJoZWFkZXJcIj48IS0tIHN0YXRzLCBzZXNzaW9uIGluZm8gLS0+PC9kaXY+XG4gICAgPGRpdiBpZD1cIm1lc3NhZ2VzXCI+PCEtLSBKUyBhc3NlbWJsZXMgcGF0aCBIVE1MIC0tPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIDpyb290IHtcbiAgICAtLWFjY2VudDogIzhhYmViNztcbiAgICAtLXRleHQ6ICNlNWU1ZTc7XG4gICAgLyogLi4uIGFsbCB0aGVtZSBjb2xvcnMgYXMgQ1NTIHZhcnMgLi4uICovXG4gIH1cbiAgLyogU3RhdGljIENTUyB1c2luZyB2YXIoKSAqL1xuPC9zdHlsZT5cblxuPHNjcmlwdD5cbiAgLy8gfjEwMCBsaW5lczogYnVpbGQgdHJlZSwgcmVuZGVyIHNpZGViYXIsIGhhbmRsZSBuYXZpZ2F0aW9uXG48L3NjcmlwdD5cbmBgYFxuXG4qKkJlbmVmaXRzKio6XG4tIE1hcmtkb3duL3N5bnRheCBoaWdobGlnaHRpbmcgc3RheXMgc2VydmVyLXNpZGUgKG5vIG1hcmtlZC5qcy9oaWdobGlnaHQuanMgaW4gYnJvd3Nlcilcbi0gQ2xpZW50LXNpZGUgaXMgc2ltcGxlOiB0cmVlIHRyYXZlcnNhbCArIEhUTUwgY29uY2F0ZW5hdGlvblxuLSBGaWxlIGlzIHNlbGYtY29udGFpbmVkICh3b3JrcyBmb3IgL3NoYXJlIHZpYSBnaXN0KVxuLSBBbGwgcGF0aHMgYXJlIG5hdmlnYWJsZSB3aXRob3V0IHByZS1yZW5kZXJpbmcgZWFjaFxuXG4jIyMgRmlsZSBTdHJ1Y3R1cmVcblxuYGBgXG5zcmMvY29yZS9leHBvcnQtaHRtbC9cbuKUnOKUgOKUgCBpbmRleC50cyAgICAgICAgICAgIyBQdWJsaWMgQVBJOiBleHBvcnRTZXNzaW9uVG9IdG1sKCksIGV4cG9ydEZyb21GaWxlKClcbuKUnOKUgOKUgCByZW5kZXItbWVzc2FnZS50cyAgIyBmb3JtYXRNZXNzYWdlKCkg4oaSIEhUTUwgc3RyaW5nIHBlciBlbnRyeVxu4pSc4pSA4pSAIHJlbmRlci1wYWdlLnRzICAgICAjIEFzc2VtYmxlcyBmdWxsIEhUTUwgZG9jdW1lbnRcbuKUnOKUgOKUgCBzdHlsZXMudHMgICAgICAgICAgIyBDU1MgdGVtcGxhdGUgd2l0aCB2YXIoKSByZWZlcmVuY2VzXG7ilJzilIDilIAgc2NyaXB0cy50cyAgICAgICAgICMgQ2xpZW50LXNpZGUgSlMgZm9yIHRyZWUvbmF2aWdhdGlvblxu4pSU4pSA4pSAIHRoZW1lLWJyaWRnZS50cyAgICAjIEltcG9ydHMgZnJvbSB0aGVtZS50cywgb3V0cHV0cyBDU1MgY29sb3IgbWFwXG5gYGBcblxuIyMjIFRoZW1lIEJyaWRnZVxuXG5gYGB0eXBlc2NyaXB0XG4vLyB0aGVtZS1icmlkZ2UudHNcbmltcG9ydCB7IGxvYWRUaGVtZUpzb24sIHJlc29sdmVUaGVtZUNvbG9ycyB9IGZyb20gXCIuLi9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SHRtbFRoZW1lQ29sb3JzKHRoZW1lTmFtZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBqc29uID0gbG9hZFRoZW1lSnNvbih0aGVtZU5hbWUgPz8gXCJkYXJrXCIpO1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUaGVtZUNvbG9ycyhqc29uLmNvbG9ycywganNvbi52YXJzKTtcbiAgXG4gIC8vIENvbnZlcnQgYW55IDI1Ni1jb2xvciBpbmRpY2VzIHRvIGhleCBmb3IgQ1NTXG4gIGNvbnN0IGNzc0NvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZCkpIHtcbiAgICBjc3NDb2xvcnNba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiBcbiAgICAgID8gYW5zaTI1NlRvSGV4KHZhbHVlKSBcbiAgICAgIDogdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGNzc0NvbG9ycztcbn1cbmBgYFxuXG5ObyBtb3JlIGR1cGxpY2F0ZSBjb2xvciBkZWZpbml0aW9ucy4gdGhlbWUudHMgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguXG5cbiMjIyBTZXNzaW9uIERhdGEgdmlhIFNlc3Npb25NYW5hZ2VyXG5cbmBgYHR5cGVzY3JpcHRcbi8vIHJlbmRlci1wYWdlLnRzXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUGFnZShzbTogU2Vzc2lvbk1hbmFnZXIsIHN0YXRlPzogQWdlbnRTdGF0ZSwgdGhlbWVOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZW50cmllcyA9IHNtLmdldEVudHJpZXMoKTtcbiAgY29uc3QgaGVhZGVyID0gc20uZ2V0SGVhZGVyKCk7XG4gIGNvbnN0IGxlYWZJZCA9IHNtLmdldExlYWZJZCgpO1xuICBcbiAgLy8gUHJlLXJlbmRlciBlYWNoIGVudHJ5J3MgSFRNTFxuICBjb25zdCByZW5kZXJlZEh0bWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09IFwibWVzc2FnZVwiIHx8IGVudHJ5LnR5cGUgPT09IFwiY3VzdG9tX21lc3NhZ2VcIikge1xuICAgICAgcmVuZGVyZWRIdG1sW2VudHJ5LmlkXSA9IHJlbmRlck1lc3NhZ2UoZW50cnksIGVudHJpZXMpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkudHlwZSA9PT0gXCJjb21wYWN0aW9uXCIpIHtcbiAgICAgIHJlbmRlcmVkSHRtbFtlbnRyeS5pZF0gPSByZW5kZXJDb21wYWN0aW9uKGVudHJ5KTtcbiAgICB9XG4gICAgLy8gLi4uIG90aGVyIGVudHJ5IHR5cGVzXG4gIH1cbiAgXG4gIGNvbnN0IGNvbG9ycyA9IGdldEh0bWxUaGVtZUNvbG9ycyh0aGVtZU5hbWUpO1xuICBjb25zdCBkYXRhID0geyBoZWFkZXIsIGVudHJpZXMsIHJlbmRlcmVkSHRtbCwgbGVhZklkLCBzdGF0czogY29tcHV0ZVN0YXRzKGVudHJpZXMpIH07XG4gIFxuICByZXR1cm4gYDwhRE9DVFlQRSBodG1sPlxuPGh0bWw+XG48aGVhZD5cbiAgPHN0eWxlPiR7Z2VuZXJhdGVTdHlsZXMoY29sb3JzKX08L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gIDxzY3JpcHQgaWQ9XCJzZXNzaW9uLWRhdGFcIiB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiPiR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9PC9zY3JpcHQ+XG4gIDxkaXYgaWQ9XCJhcHBcIj48L2Rpdj5cbiAgPHNjcmlwdD4ke2NsaWVudFNjcmlwdH08L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuYGBgXG5cbiMjIyBDbGllbnQtU2lkZSBTY3JpcHQgKH4xNTAgbGluZXMpXG5cbmBgYGphdmFzY3JpcHRcbmNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXNzaW9uLWRhdGEnKS50ZXh0Q29udGVudCk7XG5cbi8vIEJ1aWxkIHRyZWUgZnJvbSBlbnRyaWVzXG5mdW5jdGlvbiBidWlsZFRyZWUoZW50cmllcykge1xuICBjb25zdCBieUlkID0gbmV3IE1hcChlbnRyaWVzLm1hcChlID0+IFtlLmlkLCB7IGVudHJ5OiBlLCBjaGlsZHJlbjogW10gfV0pKTtcbiAgY29uc3Qgcm9vdHMgPSBbXTtcbiAgZm9yIChjb25zdCBlIG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBub2RlID0gYnlJZC5nZXQoZS5pZCk7XG4gICAgaWYgKCFlLnBhcmVudElkKSByb290cy5wdXNoKG5vZGUpO1xuICAgIGVsc2UgYnlJZC5nZXQoZS5wYXJlbnRJZCk/LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gIH1cbiAgcmV0dXJuIHJvb3RzO1xufVxuXG4vLyBHZXQgcGF0aCBmcm9tIHJvb3QgdG8gbm9kZVxuZnVuY3Rpb24gZ2V0UGF0aChlbnRyaWVzLCB0YXJnZXRJZCkge1xuICBjb25zdCBieUlkID0gbmV3IE1hcChlbnRyaWVzLm1hcChlID0+IFtlLmlkLCBlXSkpO1xuICBjb25zdCBwYXRoID0gW107XG4gIGxldCBjdXJyZW50ID0gYnlJZC5nZXQodGFyZ2V0SWQpO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIHBhdGgudW5zaGlmdChjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnRJZCA/IGJ5SWQuZ2V0KGN1cnJlbnQucGFyZW50SWQpIDogbnVsbDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cblxuLy8gUmVuZGVyIHRyZWUgc2lkZWJhclxuZnVuY3Rpb24gcmVuZGVyVHJlZShub2RlLCBkZXB0aCA9IDApIHsgLyogLi4uICovIH1cblxuLy8gUmVuZGVyIG1lc3NhZ2VzIGZvciBwYXRoXG5mdW5jdGlvbiByZW5kZXJQYXRoKHBhdGgpIHtcbiAgY29uc3QgaHRtbCA9IHBhdGhcbiAgICAuZmlsdGVyKGUgPT4gZGF0YS5yZW5kZXJlZEh0bWxbZS5pZF0pXG4gICAgLm1hcChlID0+IGRhdGEucmVuZGVyZWRIdG1sW2UuaWRdKVxuICAgIC5qb2luKCcnKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2VzJykuaW5uZXJIVE1MID0gaHRtbDtcbn1cblxuLy8gSW5pdFxuY29uc3QgdHJlZSA9IGJ1aWxkVHJlZShkYXRhLmVudHJpZXMpO1xucmVuZGVyVHJlZSh0cmVlKTtcbnJlbmRlclBhdGgoZ2V0UGF0aChkYXRhLmVudHJpZXMsIGRhdGEubGVhZklkKSk7XG5gYGBcblxuIyMjIFdoYXQgR2V0cyBSZW1vdmVkXG5cbnwgUmVtb3ZlZCB8IExpbmVzIHwgUmVhc29uIHxcbnwtLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLXxcbnwgYFRoZW1lQ29sb3JzYCBpbnRlcmZhY2UgfCA4MCB8IFVzZSB0aGVtZS50cyB8XG58IGBsb2FkVGhlbWVKc29uKClgIGR1cGxpY2F0ZSB8IDMwIHwgVXNlIHRoZW1lLnRzIHxcbnwgYGdldFRoZW1lQ29sb3JzKClgIGR1cGxpY2F0ZSB8IDEwMCB8IFVzZSB0aGVtZS50cyB8XG58IGBwYXJzZVNlc3Npb25NYW5hZ2VyRm9ybWF0KClgIHwgNzAgfCBVc2UgU2Vzc2lvbk1hbmFnZXIgfFxufCBgcGFyc2VTdHJlYW1pbmdFdmVudEZvcm1hdCgpYCB8IDUwIHwgRHJvcHBlZCB8XG58IGBkZXRlY3RGb3JtYXQoKWAgfCAxNSB8IERyb3BwZWQgfFxufCBgUGFyc2VkU2Vzc2lvbkRhdGFgIHR5cGUgfCAyMCB8IFVzZSBTZXNzaW9uTWFuYWdlciB0eXBlcyB8XG58IElubGluZSBDU1MgaW4gdGVtcGxhdGUgfCAyMDAgfCBTZXBhcmF0ZSBzdHlsZXMudHMgfFxuXG4qKkJlZm9yZSoqOiAxNDMyIGxpbmVzIGluIG9uZSBmaWxlXG4qKkFmdGVyKio6IH42MDAgbGluZXMgYWNyb3NzIDYgZm9jdXNlZCBmaWxlc1xuXG4jIyMgL3NoYXJlIENvbXBhdGliaWxpdHlcblxuVGhlIHNlbGYtY29udGFpbmVkIEhUTUwgd2l0aCBlbWJlZGRlZCBKU09OIHdvcmtzIHBlcmZlY3RseSBmb3IgZ2lzdCBzaGFyaW5nLiBObyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuXG5cbi0tLVxuXG5Eb2VzIHRoaXMgZGVzaWduIG1ha2Ugc2Vuc2U/IElmIHNvLCBJIGNhbiBzdGFydCBpbXBsZW1lbnRpbmcuIn1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MzM2MiwiY2FjaGVSZWFkIjo0NzYzNywiY2FjaGVXcml0ZSI6MjI2NSwidG90YWxUb2tlbnMiOjUzMjcyLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDg0MDUsImNhY2hlUmVhZCI6MC4wMjM4MTg1LCJjYWNoZVdyaXRlIjowLjAxNDE1NjI1LCJ0b3RhbCI6MC4xMjIwNjQ3NDk5OTk5OTk5OX19LCJzdG9wUmVhc29uIjoic3RvcCIsInRpbWVzdGFtcCI6MTc2NzIzMTY3MzU4Mn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6Ijg4MzEyYWM3IiwicGFyZW50SWQiOiJmMjc3OThlMiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDU6MTcuOTE0WiIsIm1lc3NhZ2UiOnsicm9sZSI6InVzZXIiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ0aGVyZSBpcyBubyBzZXJ2ZXIgc2lkZS4gZXhwb3J0LWh0bWwgb3V0cHV0cyBhIHNlbGYtY29udGFpbmVkIC5odG1sIGZpbGUuIHNvIHdoYXQgd2UgbmVlZCB0byBkbyBpcyBiYXNpY2FsbHkgZW1iZWQgdGhlIGZ1bGwgc2Vzc2lvbiBkYXRhLCBhbmQgcmVuZGVyIGl0IGFkLWhvYywgYXMgeW91IGRlc2NyaWJlZCwgYW5kIGVtYmVkIHZlbmRvcmVkIG1hcmtlZCBhbmQgaGlnaGxpZ2h0anMgYXMgd2VsbCBpbiB0aGUgLmh0bWwgZmlsZS4gbWFrZXMgc2Vuc2U/In1dLCJ0aW1lc3RhbXAiOjE3NjcyMzE5MTc5MTB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIzZjNiYjdjYiIsInBhcmVudElkIjoiODgzMTJhYzciLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ2OjA0LjY3NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSB1c2VyIGlzIGNsYXJpZnlpbmcgdGhhdCB0aGVyZSdzIG5vIHNlcnZlciAtIHRoaXMgaXMgYSBmdWxseSBzZWxmLWNvbnRhaW5lZCBIVE1MIGZpbGUuIFNvIHdlIG5lZWQgdG86XG5cbjEuIEVtYmVkIHRoZSBzZXNzaW9uIGRhdGEgYXMgSlNPTlxuMi4gRW1iZWQgbWFya2VkLmpzIGFuZCBoaWdobGlnaHQuanMgKHZlbmRvcmVkL21pbmlmaWVkKVxuMy4gQ2xpZW50LXNpZGUgSmF2YVNjcmlwdCByZW5kZXJzIGV2ZXJ5dGhpbmc6XG4gICAtIFBhcnNlIHNlc3Npb24gZGF0YVxuICAgLSBCdWlsZCB0cmVlXG4gICAtIFJlbmRlciBtYXJrZG93biB3aXRoIG1hcmtlZFxuICAgLSBTeW50YXggaGlnaGxpZ2h0IHdpdGggaGlnaGxpZ2h0LmpzXG4gICAtIEhhbmRsZSB0cmVlIG5hdmlnYXRpb25cblxuVGhpcyBpcyBhY3R1YWxseSBzaW1wbGVyIGluIHNvbWUgd2F5cyAtIHdlIGRvbid0IG5lZWQgc2VydmVyLXNpZGUgbWVzc2FnZSByZW5kZXJpbmcgYXQgYWxsLiBUaGUgY2xpZW50IGRvZXMgZXZlcnl0aGluZy5cblxuVGhlIEhUTUwgc3RydWN0dXJlIHdvdWxkIGJlOlxuYGBgaHRtbFxuPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbjxoZWFkPlxuICA8c3R5bGU+LyogQ1NTIHdpdGggdGhlbWUgdmFycyAqLzwvc3R5bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgPHNjcmlwdCBpZD1cInNlc3Npb24tZGF0YVwiIHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+XG4gICAge1xuICAgICAgXCJoZWFkZXJcIjogey4uLn0sXG4gICAgICBcImVudHJpZXNcIjogWy4uLl0sXG4gICAgICBcInN5c3RlbVByb21wdFwiOiBcIi4uLlwiLFxuICAgICAgXCJ0b29sc1wiOiBbLi4uXSxcbiAgICAgIFwibGVhZklkXCI6IFwiLi4uXCJcbiAgICB9XG4gIDwvc2NyaXB0PlxuICBcbiAgPGRpdiBpZD1cImFwcFwiPlxuICAgIDxkaXYgaWQ9XCJzaWRlYmFyXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cIm1haW5cIj48L2Rpdj5cbiAgPC9kaXY+XG4gIFxuICA8IS0tIFZlbmRvcmVkIGxpYnJhcmllcyAtLT5cbiAgPHNjcmlwdD4vKiBtYXJrZWQubWluLmpzICovPC9zY3JpcHQ+XG4gIDxzY3JpcHQ+LyogaGlnaGxpZ2h0Lm1pbi5qcyArIGxhbmd1YWdlcyAqLzwvc2NyaXB0PlxuICBcbiAgPCEtLSBPdXIgcmVuZGVyaW5nIGNvZGUgLS0+XG4gIDxzY3JpcHQ+XG4gICAgLy8gQnVpbGQgdHJlZVxuICAgIC8vIFJlbmRlciBtZXNzYWdlcyB3aXRoIG1hcmtlZCArIGhsanNcbiAgICAvLyBIYW5kbGUgbmF2aWdhdGlvblxuICA8L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5cbmBgYFxuXG5UaGlzIG1lYW5zOlxuLSBObyBzZXJ2ZXItc2lkZSBtZXNzYWdlIHJlbmRlcmluZyBuZWVkZWRcbi0gQWxsIHJlbmRlcmluZyBsb2dpYyBpcyBpbiB0aGUgY2xpZW50LXNpZGUgSlNcbi0gV2UgdmVuZG9yIG1hcmtlZC5qcyAofjQwS0IgbWluaWZpZWQpIGFuZCBoaWdobGlnaHQuanMgKH4zMEtCIGNvcmUgKyBsYW5ndWFnZXMpXG4tIFRoZSB0aGVtZSBjb2xvcnMgYmVjb21lIENTUyB2YXJpYWJsZXNcbi0gU2Vzc2lvbiBkYXRhIGlzIGp1c3QgdGhlIHJhdyBlbnRyaWVzXG5cblRoaXMgaXMgY2xlYW5lciBhY3R1YWxseS4gVGhlIGV4cG9ydC1odG1sIG1vZHVsZSBqdXN0OlxuMS4gR2V0cyBzZXNzaW9uIGRhdGEgZnJvbSBTZXNzaW9uTWFuYWdlclxuXG5cbjIuIEdldHMgdGhlbWUgY29sb3JzIGZyb20gdGhlbWUudHNcbjMuIEFzc2VtYmxlcyB0aGUgSFRNTCB0ZW1wbGF0ZSB3aXRoIGVtYmVkZGVkIGRhdGEgYW5kIHZlbmRvcmVkIGxpYnNcblxuSSdsbCBleHBsb3JlIHZlbmRvcmluZyBzdHJhdGVnaWVzIGZvciB0aGUgbGlicmFyaWVzLiBJbmxpbmUgZW1iZWRkaW5nIHNlZW1zIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGZvciBhIHNlbGYtY29udGFpbmVkIGZpbGUuIFRoZSBidWlsZCBwcm9jZXNzIGNvdWxkIGdlbmVyYXRlIGEgY29uc3RhbnQgd2l0aCBtaW5pZmllZCBzY3JpcHRzLCBlbnN1cmluZyBldmVyeXRoaW5nIHN0YXlzIGJ1bmRsZWQgdG9nZXRoZXIuIFRoaXMgYXBwcm9hY2gga2VlcHMgdGhlIGV4cG9ydCBjb21wbGV0ZWx5IHBvcnRhYmxlIGFuZCBpbmRlcGVuZGVudCBvZiBleHRlcm5hbCByZXNvdXJjZXMuXG5cblRoZSBjb21wbGV4aXR5IHNoaWZ0cyB0byBjbGllbnQtc2lkZSByZW5kZXJpbmcsIGJ1dCBjcmVhdGVzIGEgc2ltcGxlLCBwb3J0YWJsZSBIVE1MIGV4cG9ydCBtZWNoYW5pc20uIElubGluaW5nIGxpYnJhcmllcyBkaXJlY3RseSBtZWFucyBubyBuZXR3b3JrIGRlcGVuZGVuY2llcywgbWFraW5nIHRoZSBleHBvcnRlZCBmaWxlIHRydWx5IHN0YW5kYWxvbmUuIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFcVFTQ2tZSUN4Z0NLa0Irb1VORm1CQUg3em9nVXE4RWdTU2t0bTAxWUUyWFh3WEVadG1WY3VZUCttQXgxUEM0VmZoOXBQSDB1QlRGN0ZSQzRkenVlbGs1MXFudmtodkNpVHBuRWd5M3pJbEsyQ2s0cEtNSmVmNGFERVQ5akxnMjg5TklsUXNNaXlJd0RTZkxGdDB3WExEdVBsR3BvcXpBVlo3MWVaV252OTV5U25XNE5ma2YwcVYwb0pST0NQR1FwZ1ZGb09oL2RIUVlLb3NScllzODRXN2s4QXJBdllyUE1NNTBTcjlhRitMaTQvMHBoZXVNYnFVWXFtK1JyR3NBYTFyUGR1UFc4UGt1RmRTeEtIWlp2aG5LWXF1SFFnU1JiRzJvTmhUNE1Xc1NlRnhFR3Y2Ujk4ektTU2Zmd3ZpMDZ2ZjVtZDl5RjJEa1VHZE9EVjdUOVBRN2dUQW9BVnA4M0FrcTZiT1J1aGxWM0pmUHJUMXdldVlYRDJJRHNIRkowNzNXbFdVR1RNVVVsVzQxaGdkRkRKc1Z2bUx1UFlsQmRWWjVIbGUwLzNGZ1BWdlFyRFFRNFpXcTBGbEQ3b3UxR2lVS2tWdGZ6QnJjV3c5MWZNUDVueEJwWmZ5dHpiTTV5M1VvT3M2aDJVOUVVTXBYb3BEMHZycVRDOEphb2tPSGppcmF0bXMyY2Y5MjdxYk1tdm9lN3hqZ0Z3UGhGRks3c3M4K0c4ckhkODA4Ty9SZUZGNFZINCs4bkEzSWZvUWdpdkloTjdaL0dBQXFyVEhqSUZBRFUwVkZUcGdwTUhKU2RlN0cyeW45VERyT2k3VUR5MEJaUWl2ckdpV0NWRHN0Y0p1S2d2MXVhdUc3NmFEcnUyZlJyOEkvWE9FeWNYOWRmNS9CVURqVE5BeXdWbXB1NzVqU2lmcDltVFFMRUFxbGJkSUhzV2QvTVhiUC9vc3hURHZvaFByY1hTekJGK2NsSUdkcTJaSE95SFdCYnVaOFV6U0pSRUJRRVNveTdPajZqaFF3UXdJcnRrdG9wekxOQklNN241Z0FnbTlycVkzZmtadjlPRng3ZEJ2V0E0djhRbXk5Z0hzKzdKMk9NN0hxNXF3NVFwVUsxVUd3Z1pSUllleW1MMy9qa2I1TklreUdhaldtNE1jYmdWSEs0SUJrM3N6YVRPYWU3TS9FaFI2RVRIcFA4bUhSMlJrMkgxdHEwK29WZVJybU1mVDBPYkRUdE5TWWI5elFsTWdiRk50WHN4VnZnNjc0cVFUWFB6Y25wRDBHYURiR3prUk5uT1FGRVl6eUJKamlXaDEzYmkxbG5Kb1B1dHZTcEZSc0JOWEh2SmlmcTR2eFFQTjgreXFoSmd5eDhKNThGVU5lbzlNcnhsTnkzVzZrNUxPalFnM3NvTXUvY2xsZE00dmJnWllyS3BiZVFyYTZsMUdsQTladGR1TFRvVVJrdnF5bmlhQ2JaSklFNzdKMWJSRVZkTTRUbXorZyt2dGtVMlRIallWM1Yzcml0SEdHR2RQaDVRKys4YVBSYjRkNkJuZkd6ZkZmckdUN0tNMThGeGFDai9UUWxYTkE0eW9UTmpaVm1VL1NhS1F5QkJCRnhvSmVBTWhYbmZmbjNCTUZ1amxhaGtNbnhpSERhNVQ2ZHJFK0pSdS8yYmNtRjcwYlV3UW1UOGxvSHk2UWNqdUFrNWlOUG5GZVV3cFNEcGl6TWE2YkxuSWg3ekVPeGVieDZwdVBRdEgzSjVSdDJ1bnZZVlg2SEI5SXorc2E2ZC96TjJUV3NtL0grbG9HamtUWXdBSkxOVHBOeVNIOGd4T0Q0ZXhDT3VCUXZ5OUE2UWNwdTVrbkQ4bkk4MlgyQ1IrVXFMTjdhK09MRnFEb084NHhuOFVGMWNobWtDQWN2Ynd0V2pTaE9wZTNjeFBGWmtSeDdlSXJCam9abnZpdzV0QjZzc0JvaTl0dnY5bHQ5ekpLNE92b2NoTUhLczdFNGhxRTBSNnFSaDZwTERISy9xNG5GaTJuQ1F4WHNlUjBWemhtVnk1bzlGdU90K3ViRUxSbDdVbnBBWFNPLzc4YkxLSEQ3NVJ4TEtKUXk0UUlhV0FIeXBqemQyVWY4d2hDOHFzY3hVRlZaQWxqVzFJMHowL0xiVFVxeTBNYWovU2VSZTF6ZkpaSS9PSGNSc2RxWEZPQ2JOQk95MzNuY1B4TnRSNzZRM1Q2ZUdVNDlCa2VwU0FtREhOMjRoVko2eCsvWm55K2Zma1YweVRNTCtKUWdmMFJ1a1hDdDhIVzU2RHloUTVteENtaytRa1gwekJBT2tEdDRQN2ZYRjBVek96NEhEa09MN3FNNmQrUUt5ekh5eXMvUGVlME1WS2NsZUNjN0QyUGZsTTNubXo3ZjVDeERMZldWa0IrMGJSVTVjdjY4NVRiQkVzSU14eW85STZmL1BublFncEdLdFlOb3NmU0NtUDgyY3JoT21US1U4MlhERnZ2YkNPcnlWTjg0dlcrY0lSVVFMSGxZRXFoNlp4dTlpUE9tZmJXOVZsVkExSmtNRWZtK0d3cVpNWmdwUWpyckVJTlo0MDJUa01IOXQ4cXZUSThlZFdtSGMzUXhMUmV0ZlNFOURmNkdBQmdkUlFnaUxPaUlYS2R5WGh1cmR3UVFZMXNXY1d3S3RkSUR5Ukw3aTFLaDR1WHBibGtuK1YvVlhjbFlrRlQ5T3lBSklpcTAwbDllTWdKNXVadWdUeWI0MXowTVp1aDZjN0xjYWNPV2ovU0VHWjk4SmtJM1ROb3VqbXBnS3lxQUQ1QlhlTm1nRWhuL3NRL0pHYnRIOS9WbTNuME9xNTc4VGZ0M0Rrb21Icy9BZDZEaGRDQ1NsS2lRd0tqSHFvTHFzK0Vta0d0WlY4ejVydXphN1VnV2hKUm5wblJsVUw0alAwc0R2eWw2WE1xRVRmd2ljeWtYc3dmZ2oyWGk2V3VQOVBtdUlvV1pOOTdyUkxUNVMveTVmUUpLdmVrUFpLblRLenQ2WFRabDR5S21LT2Y0dFllbnhHeWJWeWdCNnY0bytwS0dCTjFhNlZLNlk1emQyMGZZOXgzVHRGbzJnWmFOSUNaZnhualM0RThaYzJrN2dXbE5UaFJpdGRvRm1hQkYxUjlSUlJhRGNqSHJpUUZaZzdNNm83WnhBZUM5T210Ri9pWVAwNGlIWFp4aXNveTB3NXo3VmlNVFRFaXlhWCs0TEJ5TENPNWlZaEtNMys3a2pHMUFyczlySkhLV2pFc2JPUGJCQ29SanVjc2I4b202TGQwYVl1b2ZyZkdtUDlKQmpMMGV3TjY1MTNpREd2d3F4MC9aS1ZNekpKUFdzd2tXUWJmSlExRjdzYWhiTzFtNUJaM3p1MC9WSzk4SkpxLzNwc0FoQWxFc1k0VkNZckd1Vk0rYzRlNnVHRm0vbWtZN25qeEM2VzAyV1licjZtakh0SEhiSk9tSWx2UE1KRTMrVmFJN1JjODhTTjlhbmFRQ2V6d0xMdnFjWk4zTXNUb1lGY09Kai9xV3daQzIyY1hvelVoTFNXN3d4VkV6YkhYTFFwOTRYVUpDbmNkUEt2U1hHMWZaLzRXeC81Z29TbGRoRnJWa0gzWE5BdjZlM0hIeDNhZjdSc2JoTU55S1Vic0xjcXBLb1JHYjdmNFJsdnMvbkFxeUc4ZW51TlZpcTdXL1dZYmtPalF6amdpVitNRkVic00yRER4QjhBRHRybFZXMG9FSUxzYVNLN3IvTmp2MHBiVE1McnY5a0hBNVkwQndoRU5makZEY3BhR1Z6YVpGUDVOTUoweFVQT0xmUE1YUXhvV09pWmw3UFkrWmhTZU0rakRHOWIxM2pRRVhvRzNpWWJEWG1PcUZucW1BNUduMWNWaTFGZFFKVDQ2V0JFNkx4Tm1kRnI4WE5TRHVZSFUxTHA5NEszTVc1R0xDNjRmUW4yYzBGdUVncUdmNTBOWlphcDdLUnZ3Tm1UMGdvSWFlNDVxc2hkdHAxUmN4OXNGRTREZlFTUDF4VG5QN0dmV0wzNHQzUE9QYXY4YkxvK3Zad0ZvaHpyTXArV2IybWx4SjVCVFVxekwrTTE1czV0WllPajd2ZDhwQ2FvanFQNnlnUUNOVGp1Z2hCd0RVUTVZeVNyaEhsWDNMNVdaYlZZVlg1UXRudnF2R0FFPSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiWWVzLCB0aGF0IG1ha2VzIHRvdGFsIHNlbnNlLiBGdWxseSBjbGllbnQtc2lkZSByZW5kZXJpbmcgd2l0aCB2ZW5kb3JlZCBsaWJyYXJpZXMuXG5cbiMjIFJldmlzZWQgRGVzaWduXG5cbiMjIyBXaGF0IEdldHMgRW1iZWRkZWQgaW4gdGhlIEhUTUxcblxuYGBgaHRtbFxuPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbjxoZWFkPlxuICA8c3R5bGU+XG4gICAgOnJvb3QgeyAtLWFjY2VudDogIzhhYmViNzsgLS10ZXh0OiAjZTVlNWU3OyAvKiAuLi4gKi8gfVxuICAgIC8qIFN0YXRpYyBDU1MgdXNpbmcgdmFyKCkgKi9cbiAgPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuICA8IS0tIFJhdyBzZXNzaW9uIGRhdGEgLS0+XG4gIDxzY3JpcHQgaWQ9XCJzZXNzaW9uLWRhdGFcIiB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiPlxuICB7XG4gICAgXCJoZWFkZXJcIjogeyBcImlkXCI6IFwiLi4uXCIsIFwidGltZXN0YW1wXCI6IFwiLi4uXCIsIFwiY3dkXCI6IFwiLi4uXCIgfSxcbiAgICBcImVudHJpZXNcIjogWyAvKiBTZXNzaW9uRW50cnlbXSAqLyBdLFxuICAgIFwibGVhZklkXCI6IFwieHl6Nzg5XCIsXG4gICAgXCJzeXN0ZW1Qcm9tcHRcIjogXCIuLi5cIixcbiAgICBcInRvb2xzXCI6IFt7IFwibmFtZVwiOiBcInJlYWRcIiwgXCJkZXNjcmlwdGlvblwiOiBcIi4uLlwiIH0sIC4uLl1cbiAgfVxuICA8L3NjcmlwdD5cblxuICA8ZGl2IGlkPVwiYXBwXCI+XG4gICAgPGFzaWRlIGlkPVwic2lkZWJhclwiPjwvYXNpZGU+XG4gICAgPG1haW4gaWQ9XCJjb250ZW50XCI+PC9tYWluPlxuICA8L2Rpdj5cblxuICA8IS0tIFZlbmRvcmVkIGxpYnMgKG1pbmlmaWVkKSAtLT5cbiAgPHNjcmlwdD4vKiBtYXJrZWQubWluLmpzIH40MEtCICovPC9zY3JpcHQ+XG4gIDxzY3JpcHQ+LyogaGlnaGxpZ2h0Lm1pbi5qcyArIGNvbW1vbiBsYW5ndWFnZXMgfjUwS0IgKi88L3NjcmlwdD5cbiAgXG4gIDwhLS0gT3VyIHJlbmRlcmVyIH4yMDAgbGluZXMgLS0+XG4gIDxzY3JpcHQ+XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nlc3Npb24tZGF0YScpLnRleHRDb250ZW50KTtcbiAgICAvLyBCdWlsZCB0cmVlLCByZW5kZXIgbWVzc2FnZXMsIGhhbmRsZSBuYXZpZ2F0aW9uXG4gIDwvc2NyaXB0PlxuPC9ib2R5PlxuPC9odG1sPlxuYGBgXG5cbiMjIyBGaWxlIFN0cnVjdHVyZVxuXG5gYGBcbnNyYy9jb3JlL2V4cG9ydC1odG1sL1xu4pSc4pSA4pSAIGluZGV4LnRzICAgICAgICAgICAgICAjIFB1YmxpYyBBUElcbuKUnOKUgOKUgCB0aGVtZS1icmlkZ2UudHMgICAgICAgIyBHZXQgQ1NTIGNvbG9ycyBmcm9tIHRoZW1lLnRzXG7ilJzilIDilIAgc3R5bGVzLnRzICAgICAgICAgICAgICMgQ1NTIHRlbXBsYXRlXG7ilJzilIDilIAgY2xpZW50LXNjcmlwdC50cyAgICAgICMgQ2xpZW50LXNpZGUgSlMgKHRyZWUsIHJlbmRlcmluZywgbmF2aWdhdGlvbilcbuKUnOKUgOKUgCB2ZW5kb3IvXG7ilIIgICDilJzilIDilIAgbWFya2VkLm1pbi5qcyAgICAgIyBWZW5kb3JlZFxu4pSCICAg4pSU4pSA4pSAIGhsanMtYnVuZGxlLm1pbi5qcyAjIGhpZ2hsaWdodC5qcyBjb3JlICsgY29tbW9uIGxhbmd1YWdlc1xu4pSU4pSA4pSAIHRlbXBsYXRlLnRzICAgICAgICAgICAjIEFzc2VtYmxlcyBmaW5hbCBIVE1MXG5gYGBcblxuIyMjIEJ1aWxkIENvbnNpZGVyYXRpb25cblxuV2UgbmVlZCB0byBpbmxpbmUgdGhlIHZlbmRvcmVkIEpTIGFzIHN0cmluZ3MuIE9wdGlvbnM6XG5cbjEuICoqSW1wb3J0IGFzIHJhdyBzdHJpbmcqKiAoaWYgYnVuZGxlciBzdXBwb3J0cyBpdClcbjIuICoqUmVhZCBhdCBidWlsZCB0aW1lKiogYW5kIGdlbmVyYXRlIGEgYHZlbmRvci1zdHJpbmdzLnRzYFxuMy4gKipJbmxpbmUgZGlyZWN0bHkqKiBpbiB0ZW1wbGF0ZS50cyBhcyB0ZW1wbGF0ZSBsaXRlcmFsc1xuXG5PcHRpb24gMiBpcyBjbGVhbmVzdC4gQSBzaW1wbGUgYnVpbGQgc2NyaXB0IGdlbmVyYXRlczpcblxuYGBgdHlwZXNjcmlwdFxuLy8gdmVuZG9yLXN0cmluZ3MudHMgKGdlbmVyYXRlZClcbmV4cG9ydCBjb25zdCBNQVJLRURfSlMgPSBgLi4ubWluaWZpZWQgbWFya2VkLi4uYDtcbmV4cG9ydCBjb25zdCBITEpTX0pTID0gYC4uLm1pbmlmaWVkIGhpZ2hsaWdodC5qcy4uLmA7XG5gYGBcblxuIyMjIENsaWVudC1TaWRlIFJlbmRlcmVyICh+MjAwLTI1MCBsaW5lcylcblxuYGBgamF2YXNjcmlwdFxuY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nlc3Npb24tZGF0YScpLnRleHRDb250ZW50KTtcblxuLy8gVHJlZSBidWlsZGluZyAocmV1c2UgU2Vzc2lvbk1hbmFnZXIgbG9naWMgY29uY2VwdHVhbGx5KVxuZnVuY3Rpb24gYnVpbGRUcmVlKGVudHJpZXMpIHsgLyogLi4uICovIH1cbmZ1bmN0aW9uIGdldFBhdGgodGFyZ2V0SWQpIHsgLyogLi4uICovIH1cblxuLy8gTWVzc2FnZSByZW5kZXJpbmdcbmZ1bmN0aW9uIHJlbmRlck1lc3NhZ2UoZW50cnkpIHtcbiAgaWYgKGVudHJ5LnR5cGUgPT09ICdtZXNzYWdlJykge1xuICAgIGNvbnN0IG1zZyA9IGVudHJ5Lm1lc3NhZ2U7XG4gICAgaWYgKG1zZy5yb2xlID09PSAndXNlcicpIHJldHVybiByZW5kZXJVc2VyTWVzc2FnZShtc2cpO1xuICAgIGlmIChtc2cucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHJldHVybiByZW5kZXJBc3Npc3RhbnRNZXNzYWdlKG1zZyk7XG4gIH1cbiAgaWYgKGVudHJ5LnR5cGUgPT09ICdjb21wYWN0aW9uJykgcmV0dXJuIHJlbmRlckNvbXBhY3Rpb24oZW50cnkpO1xuICBpZiAoZW50cnkudHlwZSA9PT0gJ21vZGVsX2NoYW5nZScpIHJldHVybiByZW5kZXJNb2RlbENoYW5nZShlbnRyeSk7XG4gIC8vIC4uLlxufVxuXG5mdW5jdGlvbiByZW5kZXJVc2VyTWVzc2FnZShtc2cpIHtcbiAgY29uc3QgdGV4dCA9IGdldFRleHRDb250ZW50KG1zZy5jb250ZW50KTtcbiAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidXNlci1tZXNzYWdlXCI+JHttYXJrZWQucGFyc2UodGV4dCl9PC9kaXY+YDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQXNzaXN0YW50TWVzc2FnZShtc2cpIHtcbiAgbGV0IGh0bWwgPSAnJztcbiAgZm9yIChjb25zdCBibG9jayBvZiBtc2cuY29udGVudCkge1xuICAgIGlmIChibG9jay50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJhc3Npc3RhbnQtdGV4dFwiPiR7bWFya2VkLnBhcnNlKGJsb2NrLnRleHQpfTwvZGl2PmA7XG4gICAgfSBlbHNlIGlmIChibG9jay50eXBlID09PSAndG9vbENhbGwnKSB7XG4gICAgICBodG1sICs9IHJlbmRlclRvb2xDYWxsKGJsb2NrKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRvb2xDYWxsKGNhbGwpIHtcbiAgLy8gRm9ybWF0IGJhc2VkIG9uIHRvb2wgbmFtZSAocmVhZCwgd3JpdGUsIGVkaXQsIGJhc2gsIGV0Yy4pXG59XG5cbi8vIFN5bnRheCBoaWdobGlnaHRpbmcgZm9yIGNvZGUgYmxvY2tzXG5tYXJrZWQuc2V0T3B0aW9ucyh7XG4gIGhpZ2hsaWdodDogKGNvZGUsIGxhbmcpID0+IHtcbiAgICBpZiAobGFuZyAmJiBobGpzLmdldExhbmd1YWdlKGxhbmcpKSB7XG4gICAgICByZXR1cm4gaGxqcy5oaWdobGlnaHQoY29kZSwgeyBsYW5ndWFnZTogbGFuZyB9KS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGU7XG4gIH1cbn0pO1xuXG4vLyBUcmVlIHNpZGViYXJcbmZ1bmN0aW9uIHJlbmRlclNpZGViYXIoKSB7IC8qIC4uLiAqLyB9XG5cbi8vIE5hdmlnYXRpb25cbmZ1bmN0aW9uIG5hdmlnYXRlVG8oZW50cnlJZCkge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChlbnRyeUlkKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2VzJykuaW5uZXJIVE1MID0gXG4gICAgcGF0aC5tYXAoZSA9PiByZW5kZXJNZXNzYWdlKGUpKS5qb2luKCcnKTtcbiAgaGlnaGxpZ2h0VHJlZVBhdGgoZW50cnlJZCk7XG59XG5cbi8vIEluaXRcbnJlbmRlclNpZGViYXIoKTtcbm5hdmlnYXRlVG8oZGF0YS5sZWFmSWQpO1xuYGBgXG5cbiMjIyBXaGF0IGV4cG9ydC1odG1sL2luZGV4LnRzIERvZXNcblxuYGBgdHlwZXNjcmlwdFxuaW1wb3J0IHsgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCI7XG5pbXBvcnQgeyBnZXRIdG1sVGhlbWVDb2xvcnMgfSBmcm9tIFwiLi90aGVtZS1icmlkZ2UuanNcIjtcbmltcG9ydCB7IGdlbmVyYXRlU3R5bGVzIH0gZnJvbSBcIi4vc3R5bGVzLmpzXCI7XG5pbXBvcnQgeyBDTElFTlRfU0NSSVBUIH0gZnJvbSBcIi4vY2xpZW50LXNjcmlwdC5qc1wiO1xuaW1wb3J0IHsgTUFSS0VEX0pTLCBITEpTX0pTIH0gZnJvbSBcIi4vdmVuZG9yLXN0cmluZ3MuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydFNlc3Npb25Ub0h0bWwoc206IFNlc3Npb25NYW5hZ2VyLCBzdGF0ZT86IEFnZW50U3RhdGUsIG9wdHM/OiBFeHBvcnRPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3QgZW50cmllcyA9IHNtLmdldEVudHJpZXMoKTtcbiAgY29uc3QgaGVhZGVyID0gc20uZ2V0SGVhZGVyKCk7XG4gIGNvbnN0IGxlYWZJZCA9IHNtLmdldExlYWZJZCgpO1xuICBcbiAgY29uc3Qgc2Vzc2lvbkRhdGEgPSB7XG4gICAgaGVhZGVyLFxuICAgIGVudHJpZXMsXG4gICAgbGVhZklkLFxuICAgIHN5c3RlbVByb21wdDogc3RhdGU/LnN5c3RlbVByb21wdCxcbiAgICB0b29sczogc3RhdGU/LnRvb2xzPy5tYXAodCA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIH0pKSxcbiAgfTtcbiAgXG4gIGNvbnN0IGNvbG9ycyA9IGdldEh0bWxUaGVtZUNvbG9ycyhvcHRzPy50aGVtZU5hbWUpO1xuICBcbiAgcmV0dXJuIGA8IURPQ1RZUEUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG4gIDxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPlxuICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiPlxuICA8dGl0bGU+U2Vzc2lvbiAtICR7aGVhZGVyPy5pZCB8fCAnZXhwb3J0J308L3RpdGxlPlxuICA8c3R5bGU+JHtnZW5lcmF0ZVN0eWxlcyhjb2xvcnMpfTwvc3R5bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgPHNjcmlwdCBpZD1cInNlc3Npb24tZGF0YVwiIHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+JHtKU09OLnN0cmluZ2lmeShzZXNzaW9uRGF0YSl9PC9zY3JpcHQ+XG4gIDxkaXYgaWQ9XCJhcHBcIj48YXNpZGUgaWQ9XCJzaWRlYmFyXCI+PC9hc2lkZT48bWFpbiBpZD1cImNvbnRlbnRcIj48L21haW4+PC9kaXY+XG4gIDxzY3JpcHQ+JHtNQVJLRURfSlN9PC9zY3JpcHQ+XG4gIDxzY3JpcHQ+JHtITEpTX0pTfTwvc2NyaXB0PlxuICA8c2NyaXB0PiR7Q0xJRU5UX1NDUklQVH08L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuYGBgXG5cbiMjIyBTaXplIEVzdGltYXRlXG5cbnwgQ29tcG9uZW50IHwgU2l6ZSAobWluaWZpZWQpIHxcbnwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXxcbnwgbWFya2VkLmpzIHwgfjQwS0IgfFxufCBoaWdobGlnaHQuanMgY29yZSB8IH4zMEtCIHxcbnwgQ29tbW9uIGxhbmd1YWdlcyB8IH4yMEtCIHxcbnwgQ1NTIHwgfjVLQiB8XG58IENsaWVudCBzY3JpcHQgfCB+OEtCIHxcbnwgKipUb3RhbCBvdmVyaGVhZCoqIHwgKip+MTAwS0IqKiB8XG5cblBsdXMgc2Vzc2lvbiBkYXRhICh2YXJpZXMpLiBSZWFzb25hYmxlIGZvciBhIHNlbGYtY29udGFpbmVkIGV4cG9ydC5cblxuLS0tXG5cblRoaXMgZ2l2ZXMgdXM6XG4tICoqIzM3NSoqOiBUcmVlIHNpZGViYXIgd2l0aCBmdWxsIG5hdmlnYXRpb25cbi0gKiojMzgwLyMzODEqKjogU2VsZi1jb250YWluZWQgZm9yIGdpc3Qgc2hhcmluZyAgXG4tICoqIzM4NyoqOiBUaGVtZSBjb2xvcnMgYXMgQ1NTIHZhcnMgKGVhc3kgdG8gb3ZlcnJpZGUpXG4tICoqQ2xlYW51cCoqOiBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciB0aGVtZSArIHNlc3Npb24gcGFyc2luZ1xuXG5SZWFkeSB0byBpbXBsZW1lbnQ/In1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjEwLCJvdXRwdXQiOjI0MTIsImNhY2hlUmVhZCI6NDk5MDIsImNhY2hlV3JpdGUiOjMzNjYsInRvdGFsVG9rZW5zIjo1NTY5MCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNSwib3V0cHV0IjowLjA2MDMsImNhY2hlUmVhZCI6MC4wMjQ5NTA5OTk5OTk5OTk5OTcsImNhY2hlV3JpdGUiOjAuMDIxMDM3NSwidG90YWwiOjAuMTA2MzM4NX19LCJzdG9wUmVhc29uIjoic3RvcCIsInRpbWVzdGFtcCI6MTc2NzIzMTkxNzkxMn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImY1YjY4YjBiIiwicGFyZW50SWQiOiIzZjNiYjdjYiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDg6MTYuNDI5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InVzZXIiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ3ZSBkb24ndCB1c2UgYSBidW5kbGVyLCBjaGVjayB0aGUgcGFja2FnZS5qc29uIGZpbGVzIG9uIGhvdyB3ZSBidWlsZCB0aGluZ3MgKGlnbm9yZSB0aGUgYnVuIHNoaXQpLlxuXG4gICDilJzilIDilIAgY2xpZW50LXNjcmlwdC50cyAgICAgICMgQ2xpZW50LXNpZGUgSlMgKHRyZWUsIHJlbmRlcmluZywgbmF2aWdhdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxudGhpcyBhbHNvIHdvbid0IHdvcmsuIHdlIG5lZWQgdG8gd3JpdGUgdGhlIGpzIGNvZGUgaW50byB0aGUgaHRtbC5cblxud2UgY2FuIGJ1aWxkIGEgdGVtcGxhdGUuaHRtbCB0aGF0IGhhcyB0aGUgY29kZSBpbiBpdCwgYW5kIHVzZSB0aGF0IGluIGV4cG9ydC1odG1sLnRzLCBqdXN0IG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hlbiB3ZSBidWlsZCBkaXN0LCB0aGF0IHRlbXBsYXRlIGlzIGFsc28gaW5jbHVkZWQgYW5kIGFjY2Vzc2libGUgdG8gZXhwb3J0LWh0bWwudHMifV0sInRpbWVzdGFtcCI6MTc2NzIzMjA5NjQyNX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjdkZWEwMmI3IiwicGFyZW50SWQiOiJmNWI2OGIwYiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDg6MTguNTY5WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOltdLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjAsIm91dHB1dCI6MCwiY2FjaGVSZWFkIjowLCJjYWNoZVdyaXRlIjowLCJ0b3RhbFRva2VucyI6MCwiY29zdCI6eyJpbnB1dCI6MCwib3V0cHV0IjowLCJjYWNoZVJlYWQiOjAsImNhY2hlV3JpdGUiOjAsInRvdGFsIjowfX0sInN0b3BSZWFzb24iOiJhYm9ydGVkIiwidGltZXN0YW1wIjoxNzY3MjMyMDk2NDI3LCJlcnJvck1lc3NhZ2UiOiJSZXF1ZXN0IHdhcyBhYm9ydGVkLiJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwMmE4ZTcwOCIsInBhcmVudElkIjoiN2RlYTAyYjciLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ4OjI2LjE2MFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ1c2VyIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoibGlrZSBkYXJrLmpzb24gYW5kIGxpZ2h0Lmpzb24gZm9yIHRoZW1lcyJ9XSwidGltZXN0YW1wIjoxNzY3MjMyMTA2MTU3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMjlkYTNmOGQiLCJwYXJlbnRJZCI6IjAyYThlNzA4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0ODozMy42OTFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgdXNlciBpcyBwb2ludGluZyBvdXQ6XG5cbjEuIFRoZXkgZG9uJ3QgdXNlIGEgYnVuZGxlciAtIGNoZWNrIHBhY2thZ2UuanNvbiBmb3IgYnVpbGQgcHJvY2Vzc1xuMi4gVGhlIGNsaWVudC1zY3JpcHQudHMgYXBwcm9hY2ggd29uJ3Qgd29yayAtIHdlIG5lZWQgdG8gd3JpdGUgSlMgZGlyZWN0bHkgaW50byB0aGUgSFRNTFxuMy4gV2UgY2FuIHVzZSBhIHRlbXBsYXRlLmh0bWwgZmlsZSB0aGF0IGdldHMgaW5jbHVkZWQgaW4gZGlzdCwgc2ltaWxhciB0byBob3cgZGFyay5qc29uIGFuZCBsaWdodC5qc29uIHRoZW1lcyB3b3JrXG5cbkxldCBtZSBjaGVjayB0aGUgcGFja2FnZS5qc29uIGFuZCBob3cgdGhlbWVzIGFyZSBoYW5kbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MuIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFcWdFQ2tZSUN4Z0NLa0RPZHJEbjRyb0ZianBHSDkwbTNoc1lUYSs2eHRiVGJwbGdJU3llL3FjMDY1cXMyMWRwSlJpUTdrRGJjS3Q1QnpBYi9CZjNYV0NsTFVnUmpIc3pzZVQyRWd4em4zTnhlekZUM1hoQWs2OGFETHYxK1hqdFFrUFRxbENEMUNJd05Temg0YlZuVlVSMmNPaVlublcyczhNVGg1R3RVbDhwZ2V6N0JpSEt0UTFvVXRyZWtUWUp6TFlsbCttcTIxZk1LbzhEeml2TnZhNXhJdEIrMjhmNjZHRlFGc3pWWTVNbWppU0M2UUJZSmcvY29nN2hQZEk2YmJLTmV3ZEZyS3Z3dHZkK2I4ajh3YTJlQUxBQmR6RUE0MElsVVdLRktwenNUdlowMjMvbzdpZVR5dFg0c3Q1V242bHZUZnphY1JFR3ZySGpVTjV6SjVXTEgyeWpRaEV4WTg3NDBtQ2tqTmZUbFhSOTFuamRlZWQ2R0RtVXdkcFhxbkpRMHRhMjB6SVFzeEcwTTB4T2FpRnp2Mmc4WVBBaWFHTS9NckNKK3A4OEFwZm5uV3ZFSXJjdHZ5dDlZek83WkpDT3FrUDcrR3M2NnQ1MFNoTEVkRXJCR2dGWSt1eUVHU3FnV3NpRVlxcDFCNURWOEhwcnYxU3FaWW4xcVgreVZIOEphaC95QWFCeDNBcFdnSmFRRkRGaS9uTmIzeEFDa3lmVWw4U3N3bHdYczFtb09pb3pqZFlKQ3huaGNnQnFoNGZiY3cydlBXd2JvV0VzU3MrWlhKUTk0RjJmTXIvd01qb0xJT3RMQW5SNVRQd1Yyak9uVzRiWXNFaFJrOWsrOUtDOUhudytnVE8zOUFkWkNQSU1WbFJDYjlNeVQrVkQxWDZ4VEYwd2ovdSt3Y1VTZnRkYUZrb0JLTUNINFAvdE1DRnB1TlJhbTFqU1hIenAzcVNqR1B5M2E2ZmJxcXVVbzliNkdBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFIa1hNR1BScEhoN2JVUDM2YjVKYXpLIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNhdCBwYWNrYWdlcy9jb2RpbmctYWdlbnQvcGFja2FnZS5qc29uIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMVBIVnFEOW1COU1yaHdiS25MSzJCdWIiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoibHMgLWxhIHBhY2thZ2VzL2NvZGluZy1hZ2VudC90aGVtZXMvIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMTN0UXNhOHh1dFNHN0FTQWg4SnRmYVQiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCAtciBcInRoZW1lc1wiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29uZmlnLnRzIDI+L2Rldi9udWxsIHx8IGdyZXAgLXIgXCJnZXRUaGVtZXNEaXJcIiBwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvbmZpZy50cyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6MTAsIm91dHB1dCI6Mjg1LCJjYWNoZVJlYWQiOjU1NzczLCJjYWNoZVdyaXRlIjoxMSwidG90YWxUb2tlbnMiOjU2MDc5LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA1LCJvdXRwdXQiOjAuMDA3MTI1LCJjYWNoZVJlYWQiOjAuMDI3ODg2NDk5OTk5OTk5OTk4LCJjYWNoZVdyaXRlIjowLjAwMDA2ODc1LCJ0b3RhbCI6MC4wMzUxMzAyNDk5OTk5OTk5OTV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzIxMDYxNTh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwMjM2NDk5MSIsInBhcmVudElkIjoiMjlkYTNmOGQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ4OjMzLjcxM1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxSGtYTUdQUnBIaDdiVVAzNmI1SmF6SyIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Intcblx0XCJuYW1lXCI6IFwiQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRcIixcblx0XCJ2ZXJzaW9uXCI6IFwiMC4zMC4yXCIsXG5cdFwiZGVzY3JpcHRpb25cIjogXCJDb2RpbmcgYWdlbnQgQ0xJIHdpdGggcmVhZCwgYmFzaCwgZWRpdCwgd3JpdGUgdG9vbHMgYW5kIHNlc3Npb24gbWFuYWdlbWVudFwiLFxuXHRcInR5cGVcIjogXCJtb2R1bGVcIixcblx0XCJwaUNvbmZpZ1wiOiB7XG5cdFx0XCJuYW1lXCI6IFwicGlcIixcblx0XHRcImNvbmZpZ0RpclwiOiBcIi5waVwiXG5cdH0sXG5cdFwiYmluXCI6IHtcblx0XHRcInBpXCI6IFwiZGlzdC9jbGkuanNcIlxuXHR9LFxuXHRcIm1haW5cIjogXCIuL2Rpc3QvaW5kZXguanNcIixcblx0XCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG5cdFwiZXhwb3J0c1wiOiB7XG5cdFx0XCIuXCI6IHtcblx0XHRcdFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXguanNcIlxuXHRcdH0sXG5cdFx0XCIuL2hvb2tzXCI6IHtcblx0XHRcdFwidHlwZXNcIjogXCIuL2Rpc3QvY29yZS9ob29rcy9pbmRleC5kLnRzXCIsXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9jb3JlL2hvb2tzL2luZGV4LmpzXCJcblx0XHR9XG5cdH0sXG5cdFwiZmlsZXNcIjogW1xuXHRcdFwiZGlzdFwiLFxuXHRcdFwiZG9jc1wiLFxuXHRcdFwiZXhhbXBsZXNcIixcblx0XHRcIkNIQU5HRUxPRy5tZFwiXG5cdF0sXG5cdFwic2NyaXB0c1wiOiB7XG5cdFx0XCJjbGVhblwiOiBcInJtIC1yZiBkaXN0XCIsXG5cdFx0XCJidWlsZFwiOiBcInRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvbiAmJiBjaG1vZCAreCBkaXN0L2NsaS5qcyAmJiBucG0gcnVuIGNvcHktYXNzZXRzXCIsXG5cdFx0XCJidWlsZDpiaW5hcnlcIjogXCJucG0gcnVuIGJ1aWxkICYmIGJ1biBidWlsZCAtLWNvbXBpbGUgLi9kaXN0L2NsaS5qcyAtLW91dGZpbGUgZGlzdC9waSAmJiBucG0gcnVuIGNvcHktYmluYXJ5LWFzc2V0c1wiLFxuXHRcdFwiY29weS1hc3NldHNcIjogXCJta2RpciAtcCBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lICYmIGNwIHNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8qLmpzb24gZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS9cIixcblx0XHRcImNvcHktYmluYXJ5LWFzc2V0c1wiOiBcImNwIHBhY2thZ2UuanNvbiBkaXN0LyAmJiBjcCBSRUFETUUubWQgZGlzdC8gJiYgY3AgQ0hBTkdFTE9HLm1kIGRpc3QvICYmIG1rZGlyIC1wIGRpc3QvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L3RoZW1lLyAmJiBjcCAtciBkb2NzIGRpc3QvICYmIGNwIC1yIGV4YW1wbGVzIGRpc3QvXCIsXG5cdFx0XCJ0ZXN0XCI6IFwidml0ZXN0IC0tcnVuXCIsXG5cdFx0XCJwcmVwdWJsaXNoT25seVwiOiBcIm5wbSBydW4gY2xlYW4gJiYgbnBtIHJ1biBidWlsZFwiXG5cdH0sXG5cdFwiZGVwZW5kZW5jaWVzXCI6IHtcblx0XHRcIkBtYXJpb3plY2huZXIvcGktYWdlbnQtY29yZVwiOiBcIl4wLjMwLjJcIixcblx0XHRcIkBtYXJpb3plY2huZXIvcGktYWlcIjogXCJeMC4zMC4yXCIsXG5cdFx0XCJAbWFyaW96ZWNobmVyL3BpLXR1aVwiOiBcIl4wLjMwLjJcIixcblx0XHRcImNoYWxrXCI6IFwiXjUuNS4wXCIsXG5cdFx0XCJjbGktaGlnaGxpZ2h0XCI6IFwiXjIuMS4xMVwiLFxuXHRcdFwiZGlmZlwiOiBcIl44LjAuMlwiLFxuXHRcdFwiZmlsZS10eXBlXCI6IFwiXjIxLjEuMVwiLFxuXHRcdFwiZ2xvYlwiOiBcIl4xMS4wLjNcIixcblx0XHRcImppdGlcIjogXCJeMi42LjFcIixcblx0XHRcIm1hcmtlZFwiOiBcIl4xNS4wLjEyXCJcblx0fSxcblx0XCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuXHRcdFwiQHR5cGVzL2RpZmZcIjogXCJeNy4wLjJcIixcblx0XHRcIkB0eXBlcy9ub2RlXCI6IFwiXjI0LjMuMFwiLFxuXHRcdFwidHlwZXNjcmlwdFwiOiBcIl41LjcuM1wiLFxuXHRcdFwidml0ZXN0XCI6IFwiXjMuMi40XCJcblx0fSxcblx0XCJrZXl3b3Jkc1wiOiBbXG5cdFx0XCJjb2RpbmctYWdlbnRcIixcblx0XHRcImFpXCIsXG5cdFx0XCJsbG1cIixcblx0XHRcImNsaVwiLFxuXHRcdFwidHVpXCIsXG5cdFx0XCJhZ2VudFwiXG5cdF0sXG5cdFwiYXV0aG9yXCI6IFwiTWFyaW8gWmVjaG5lclwiLFxuXHRcImxpY2Vuc2VcIjogXCJNSVRcIixcblx0XCJyZXBvc2l0b3J5XCI6IHtcblx0XHRcInR5cGVcIjogXCJnaXRcIixcblx0XHRcInVybFwiOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vYmFkbG9naWMvcGktbW9uby5naXRcIixcblx0XHRcImRpcmVjdG9yeVwiOiBcInBhY2thZ2VzL2NvZGluZy1hZ2VudFwiXG5cdH0sXG5cdFwiZW5naW5lc1wiOiB7XG5cdFx0XCJub2RlXCI6IFwiPj0yMC4wLjBcIlxuXHR9XG59XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIxMTM3MDh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI5N2E5ZDk5OCIsInBhcmVudElkIjoiMDIzNjQ5OTEiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ4OjMzLjcxOVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxUEhWcUQ5bUI5TXJod2JLbkxLMkJ1YiIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImxzOiBwYWNrYWdlcy9jb2RpbmctYWdlbnQvdGhlbWVzLzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVxuXG5cbkNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAxIn1dLCJkZXRhaWxzIjp7fSwiaXNFcnJvciI6dHJ1ZSwidGltZXN0YW1wIjoxNzY3MjMyMTEzNzE4fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZDNkZGIwZjYiLCJwYXJlbnRJZCI6Ijk3YTlkOTk4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0ODozMy43MzhaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTN0UXNhOHh1dFNHN0FTQWg4SnRmYVQiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvbmZpZy50czogKiBHZXQgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciByZXNvbHZpbmcgcGFja2FnZSBhc3NldHMgKHRoZW1lcywgcGFja2FnZS5qc29uLCBSRUFETUUubWQsIENIQU5HRUxPRy5tZCkuXG5wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvbmZpZy50czogKiBHZXQgcGF0aCB0byBidWlsdC1pbiB0aGVtZXMgZGlyZWN0b3J5IChzaGlwcGVkIHdpdGggcGFja2FnZSlcbnBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29uZmlnLnRzOi8qKiBHZXQgcGF0aCB0byB1c2VyJ3MgY3VzdG9tIHRoZW1lcyBkaXJlY3RvcnkgKi9cbnBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29uZmlnLnRzOlx0cmV0dXJuIGpvaW4oZ2V0QWdlbnREaXIoKSwgXCJ0aGVtZXNcIik7XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIxMTM3Mzh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJiNTQyMmUzNCIsInBhcmVudElkIjoiZDNkZGIwZjYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ4OjM5LjgyOVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ikkgc2VlLiBUaGUgYnVpbGQgcHJvY2VzcyBpczpcbjEuIGB0c2dvIC1wIHRzY29uZmlnLmJ1aWxkLmpzb25gIC0gVHlwZVNjcmlwdCBjb21waWxhdGlvblxuMi4gYG5wbSBydW4gY29weS1hc3NldHNgIC0gY29waWVzIHRoZW1lIEpTT04gZmlsZXMgZnJvbSBgc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbmAgdG8gYGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvYFxuXG5BbmQgdGhlIHRoZW1lcyBhcmUgaW4gYHNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS9gLiBMZXQgbWUgY2hlY2sgY29uZmlnLnRzIHRvIHNlZSBob3cgaXQgZmluZHMgdGhlbToiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1UURDa1lJQ3hnQ0trRDJkYVZkTmk3cFROem9wdndidm80THYvV0hoRDJwbWZ1bitGQkJUZHFPS2c1WmpQSytCZWpuTDlTeldURlRZU1FZWG8vTFZybGlRWVVhaHJsK0N2MTVFZ3l1MTFBQWE2TkhKN0hGWW9RYURQdmdVaVZUYmIrc0JYbHpFQ0l3TXEwOUJVTzdsWFk0L1FmaE15d0svbXJlL094TTlPcVYyZm91a2ZuM05XZTA5VnBHSFBPOXVVR3Y1NVNwM083REtzc0NEYW02dTd6eUpvK1U4RjJ4TnBzVGVJbnQ3RGJFeThWVlN5NVFyNEMzWndZRkR3UnZWbFVhNEk1cTdacVdscEkyVlhmNVVUNkF4T3ByR3lTSlBFTXR4aEo3UEpWSEUzV3llZ3JoWk14YU13TGVlWVBxL3ZmT0t1TE04SlpiNURCYjBhMXJvZHdZTktHaWp2QzhjcDFPVWNWSkJkZmI3ejBCMVo3UkJ3a1pIVzAzd1NaL29jT3FmUUk3dklQUHBpMFA1ZHRpOFRhSHBuZ3BFRjBRc21VbU5sOUdyS0VVTFE2QnhXTTBlTlh4UngxSmpXUkJqZVhxM3lOenpGci9PS3FMZ0NCcTUwZWlqWmphMENEMkNuZi8xSmg0eTJyUmhYdllDUkdkUnhVeCttYURrTnVicUxKcldZWVhCR0Rod3FnN0VtU2FvNm1MbUR3SjFWN0dOU0UvRG80WE5tREd5WlVycDU3ZFJXT2dvRmdmMDJvaktKZWxuemxGNlE1a1dQWTBZeVZ4Y0lucnJUYldIWW9sanNvbXZ2MFhsMC9FcGZPd1JFajF2ZUxnRm42N2MrSW54Qm1EdjNqZ1hCZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDExOUdjUXNHampaRHZFY29aemZTalM0IiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb25maWcudHMifX0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxTkNOcVpFNDFIeWsyZ0tHUzJzM01ObSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJscyAtbGEgcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8ifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MjI4LCJjYWNoZVJlYWQiOjU1Nzg0LCJjYWNoZVdyaXRlIjoxMzcyLCJ0b3RhbFRva2VucyI6NTczOTIsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDU3LCJjYWNoZVJlYWQiOjAuMDI3ODkyLCJjYWNoZVdyaXRlIjowLjAwODU3NTAwMDAwMDAwMDAwMSwidG90YWwiOjAuMDQyMjA3fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMTEzNzM5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiOGVhYmNlZGMiLCJwYXJlbnRJZCI6ImI1NDIyZTM0IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0ODozOS44NDhaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTE5R2NRc0dqalpEdkVjb1p6ZlNqUzQiLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwib3NcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJ1cmxcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhY2thZ2UgRGV0ZWN0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShfX2ZpbGVuYW1lKTtcblxuLyoqXG4gKiBEZXRlY3QgaWYgd2UncmUgcnVubmluZyBhcyBhIEJ1biBjb21waWxlZCBiaW5hcnkuXG4gKiBCdW4gYmluYXJpZXMgaGF2ZSBpbXBvcnQubWV0YS51cmwgY29udGFpbmluZyBcIiRidW5mc1wiLCBcIn5CVU5cIiwgb3IgXCIlN0VCVU5cIiAoQnVuJ3MgdmlydHVhbCBmaWxlc3lzdGVtIHBhdGgpXG4gKi9cbmV4cG9ydCBjb25zdCBpc0J1bkJpbmFyeSA9XG5cdGltcG9ydC5tZXRhLnVybC5pbmNsdWRlcyhcIiRidW5mc1wiKSB8fCBpbXBvcnQubWV0YS51cmwuaW5jbHVkZXMoXCJ+QlVOXCIpIHx8IGltcG9ydC5tZXRhLnVybC5pbmNsdWRlcyhcIiU3RUJVTlwiKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhY2thZ2UgQXNzZXQgUGF0aHMgKHNoaXBwZWQgd2l0aCBleGVjdXRhYmxlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciByZXNvbHZpbmcgcGFja2FnZSBhc3NldHMgKHRoZW1lcywgcGFja2FnZS5qc29uLCBSRUFETUUubWQsIENIQU5HRUxPRy5tZCkuXG4gKiAtIEZvciBCdW4gYmluYXJ5OiByZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZVxuICogLSBGb3IgTm9kZS5qcyAoZGlzdC8pOiByZXR1cm5zIF9fZGlybmFtZSAodGhlIGRpc3QvIGRpcmVjdG9yeSlcbiAqIC0gRm9yIHRzeCAoc3JjLyk6IHJldHVybnMgcGFyZW50IGRpcmVjdG9yeSAodGhlIHBhY2thZ2Ugcm9vdClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VEaXIoKTogc3RyaW5nIHtcblx0aWYgKGlzQnVuQmluYXJ5KSB7XG5cdFx0Ly8gQnVuIGJpbmFyeTogcHJvY2Vzcy5leGVjUGF0aCBwb2ludHMgdG8gdGhlIGNvbXBpbGVkIGV4ZWN1dGFibGVcblx0XHRyZXR1cm4gZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKTtcblx0fVxuXHQvLyBOb2RlLmpzOiB3YWxrIHVwIGZyb20gX19kaXJuYW1lIHVudGlsIHdlIGZpbmQgcGFja2FnZS5qc29uXG5cdGxldCBkaXIgPSBfX2Rpcm5hbWU7XG5cdHdoaWxlIChkaXIgIT09IGRpcm5hbWUoZGlyKSkge1xuXHRcdGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCBcInBhY2thZ2UuanNvblwiKSkpIHtcblx0XHRcdHJldHVybiBkaXI7XG5cdFx0fVxuXHRcdGRpciA9IGRpcm5hbWUoZGlyKTtcblx0fVxuXHQvLyBGYWxsYmFjayAoc2hvdWxkbid0IGhhcHBlbilcblx0cmV0dXJuIF9fZGlybmFtZTtcbn1cblxuLyoqXG4gKiBHZXQgcGF0aCB0byBidWlsdC1pbiB0aGVtZXMgZGlyZWN0b3J5IChzaGlwcGVkIHdpdGggcGFja2FnZSlcbiAqIC0gRm9yIEJ1biBiaW5hcnk6IHRoZW1lLyBuZXh0IHRvIGV4ZWN1dGFibGVcbiAqIC0gRm9yIE5vZGUuanMgKGRpc3QvKTogZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS9cbiAqIC0gRm9yIHRzeCAoc3JjLyk6IHNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRoZW1lc0RpcigpOiBzdHJpbmcge1xuXHRpZiAoaXNCdW5CaW5hcnkpIHtcblx0XHRyZXR1cm4gam9pbihkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpLCBcInRoZW1lXCIpO1xuXHR9XG5cdC8vIFRoZW1lIGlzIGluIG1vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyByZWxhdGl2ZSB0byBzcmMvIG9yIGRpc3QvXG5cdGNvbnN0IHBhY2thZ2VEaXIgPSBnZXRQYWNrYWdlRGlyKCk7XG5cdGNvbnN0IHNyY09yRGlzdCA9IGV4aXN0c1N5bmMoam9pbihwYWNrYWdlRGlyLCBcInNyY1wiKSkgPyBcInNyY1wiIDogXCJkaXN0XCI7XG5cdHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJtb2Rlc1wiLCBcImludGVyYWN0aXZlXCIsIFwidGhlbWVcIik7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBwYWNrYWdlLmpzb24gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlSnNvblBhdGgoKTogc3RyaW5nIHtcblx0cmV0dXJuIGpvaW4oZ2V0UGFja2FnZURpcigpLCBcInBhY2thZ2UuanNvblwiKTtcbn1cblxuLyoqIEdldCBwYXRoIHRvIFJFQURNRS5tZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWRtZVBhdGgoKTogc3RyaW5nIHtcblx0cmV0dXJuIHJlc29sdmUoam9pbihnZXRQYWNrYWdlRGlyKCksIFwiUkVBRE1FLm1kXCIpKTtcbn1cblxuLyoqIEdldCBwYXRoIHRvIGRvY3MgZGlyZWN0b3J5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9jc1BhdGgoKTogc3RyaW5nIHtcblx0cmV0dXJuIHJlc29sdmUoam9pbihnZXRQYWNrYWdlRGlyKCksIFwiZG9jc1wiKSk7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBleGFtcGxlcyBkaXJlY3RvcnkgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeGFtcGxlc1BhdGgoKTogc3RyaW5nIHtcblx0cmV0dXJuIHJlc29sdmUoam9pbihnZXRQYWNrYWdlRGlyKCksIFwiZXhhbXBsZXNcIikpO1xufVxuXG4vKiogR2V0IHBhdGggdG8gQ0hBTkdFTE9HLm1kICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlbG9nUGF0aCgpOiBzdHJpbmcge1xuXHRyZXR1cm4gcmVzb2x2ZShqb2luKGdldFBhY2thZ2VEaXIoKSwgXCJDSEFOR0VMT0cubWRcIikpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXBwIENvbmZpZyAoZnJvbSBwYWNrYWdlLmpzb24gcGlDb25maWcpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBwa2cgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhnZXRQYWNrYWdlSnNvblBhdGgoKSwgXCJ1dGYtOFwiKSk7XG5cbmV4cG9ydCBjb25zdCBBUFBfTkFNRTogc3RyaW5nID0gcGtnLnBpQ29uZmlnPy5uYW1lIHx8IFwicGlcIjtcbmV4cG9ydCBjb25zdCBDT05GSUdfRElSX05BTUU6IHN0cmluZyA9IHBrZy5waUNvbmZpZz8uY29uZmlnRGlyIHx8IFwiLnBpXCI7XG5leHBvcnQgY29uc3QgVkVSU0lPTjogc3RyaW5nID0gcGtnLnZlcnNpb247XG5cbi8vIGUuZy4sIFBJX0NPRElOR19BR0VOVF9ESVIgb3IgVEFVX0NPRElOR19BR0VOVF9ESVJcbmV4cG9ydCBjb25zdCBFTlZfQUdFTlRfRElSID0gYCR7QVBQX05BTUUudG9VcHBlckNhc2UoKX1fQ09ESU5HX0FHRU5UX0RJUmA7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVc2VyIENvbmZpZyBQYXRocyAofi8ucGkvYWdlbnQvKilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBHZXQgdGhlIGFnZW50IGNvbmZpZyBkaXJlY3RvcnkgKGUuZy4sIH4vLnBpL2FnZW50LykgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2VudERpcigpOiBzdHJpbmcge1xuXHRyZXR1cm4gcHJvY2Vzcy5lbnZbRU5WX0FHRU5UX0RJUl0gfHwgam9pbihob21lZGlyKCksIENPTkZJR19ESVJfTkFNRSwgXCJhZ2VudFwiKTtcbn1cblxuLyoqIEdldCBwYXRoIHRvIHVzZXIncyBjdXN0b20gdGhlbWVzIGRpcmVjdG9yeSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbVRoZW1lc0RpcigpOiBzdHJpbmcge1xuXHRyZXR1cm4gam9pbihnZXRBZ2VudERpcigpLCBcInRoZW1lc1wiKTtcbn1cblxuLyoqIEdldCBwYXRoIHRvIG1vZGVscy5qc29uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxzUGF0aCgpOiBzdHJpbmcge1xuXHRyZXR1cm4gam9pbihnZXRBZ2VudERpcigpLCBcIm1vZGVscy5qc29uXCIpO1xufVxuXG4vKiogR2V0IHBhdGggdG8gYXV0aC5qc29uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0aFBhdGgoKTogc3RyaW5nIHtcblx0cmV0dXJuIGpvaW4oZ2V0QWdlbnREaXIoKSwgXCJhdXRoLmpzb25cIik7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBzZXR0aW5ncy5qc29uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ3NQYXRoKCk6IHN0cmluZyB7XG5cdHJldHVybiBqb2luKGdldEFnZW50RGlyKCksIFwic2V0dGluZ3MuanNvblwiKTtcbn1cblxuLyoqIEdldCBwYXRoIHRvIHRvb2xzIGRpcmVjdG9yeSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2xzRGlyKCk6IHN0cmluZyB7XG5cdHJldHVybiBqb2luKGdldEFnZW50RGlyKCksIFwidG9vbHNcIik7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBzbGFzaCBjb21tYW5kcyBkaXJlY3RvcnkgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kc0RpcigpOiBzdHJpbmcge1xuXHRyZXR1cm4gam9pbihnZXRBZ2VudERpcigpLCBcImNvbW1hbmRzXCIpO1xufVxuXG4vKiogR2V0IHBhdGggdG8gc2Vzc2lvbnMgZGlyZWN0b3J5ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Vzc2lvbnNEaXIoKTogc3RyaW5nIHtcblx0cmV0dXJuIGpvaW4oZ2V0QWdlbnREaXIoKSwgXCJzZXNzaW9uc1wiKTtcbn1cblxuLyoqIEdldCBwYXRoIHRvIGRlYnVnIGxvZyBmaWxlICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdMb2dQYXRoKCk6IHN0cmluZyB7XG5cdHJldHVybiBqb2luKGdldEFnZW50RGlyKCksIGAke0FQUF9OQU1FfS1kZWJ1Zy5sb2dgKTtcbn1cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjExOTgzMn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjdlNWY1MTFkIiwicGFyZW50SWQiOiI4ZWFiY2VkYyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDg6MzkuODUzWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFOQ05xWkU0MUh5azJnS0dTMnMzTU5tIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoidG90YWwgODBcbmRyd3hyLXhyLXhAIDYgYmFkbG9naWMgIHN0YWZmICAgIDE5MiBKYW4gIDEgMDA6MjcgLlxuZHJ3eHIteHIteEAgNSBiYWRsb2dpYyAgc3RhZmYgICAgMTYwIEphbiAgMSAwMDozNiAuLlxuLXJ3LXItLXItLUAgMSBiYWRsb2dpYyAgc3RhZmYgICAxOTE0IEphbiAgMSAwMDoyNyBkYXJrLmpzb25cbi1ydy1yLS1yLS1AIDEgYmFkbG9naWMgIHN0YWZmICAgMTk0MCBKYW4gIDEgMDA6MjcgbGlnaHQuanNvblxuLXJ3LXItLXItLUAgMSBiYWRsb2dpYyAgc3RhZmYgICA3NDUwIEphbiAgMSAwMDoyNyB0aGVtZS1zY2hlbWEuanNvblxuLXJ3LXItLXItLUAgMSBiYWRsb2dpYyAgc3RhZmYgIDI0NDQ4IEphbiAgMSAwMDoyNyB0aGVtZS50c1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMTE5ODUzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMjM5N2FmN2EiLCJwYXJlbnRJZCI6IjdlNWY1MTFkIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0OTowMS44NDlaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgSSB1bmRlcnN0YW5kIHRoZSBwYXR0ZXJuLiBUaGUgYnVpbGQgcHJvY2VzczoxLiBUeXBlU2NyaXB0IGNvbXBpbGVzIHRvIGBkaXN0L2AyLiBgY29weS1hc3NldHNgIGNvcGllcyBgc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbmAg4oaSIGBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL2AzLiBgZ2V0VGhlbWVzRGlyKClgIGZpbmRzIHRoZSByaWdodCBwYXRoIGJhc2VkIG9uIHdoZXRoZXIgcnVubmluZyBmcm9tIHNyYy8gb3IgZGlzdC9cblxuU28gZm9yIHRoZSBIVE1MIGV4cG9ydCB0ZW1wbGF0ZSwgd2UgY2FuIGRvIHRoZSBzYW1lIHRoaW5nOlxuMS4gQ3JlYXRlIGBzcmMvY29yZS9leHBvcnQtaHRtbC90ZW1wbGF0ZS5odG1sYCAob3Igc2ltaWxhcilcbjIuIEFkZCB0byBgY29weS1hc3NldHNgIHNjcmlwdCB0byBjb3B5IGl0IHRvIGBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvYFxuMy4gQ3JlYXRlIGEgYGdldEV4cG9ydFRlbXBsYXRlUGF0aCgpYCBmdW5jdGlvbiBzaW1pbGFyIHRvIGBnZXRUaGVtZXNEaXIoKWBcblxuQWN0dWFsbHksIGxldCBtZSB0aGluayBhYm91dCB0aGlzIG1vcmUgY2FyZWZ1bGx5LiBUaGUgdGVtcGxhdGUuaHRtbCB3b3VsZCBjb250YWluOi0gQ1NTIHdpdGggcGxhY2Vob2xkZXIgZm9yIHRoZW1lIGNvbG9ycyAob3Igd2UgaW5qZWN0IHRoZW0pXG4tIFRoZSB2ZW5kb3JlZCBtYXJrZWQuanMgYW5kIGhpZ2hsaWdodC5qc1xuLSBUaGUgY2xpZW50LXNpZGUgSmF2YVNjcmlwdCBmb3IgcmVuZGVyaW5nXG5cblRoZW4gZXhwb3J0LWh0bWwudHMgd291bGQ6MS4gUmVhZCB0aGUgdGVtcGxhdGVcbjIuIEluamVjdCB0aGUgc2Vzc2lvbiBkYXRhIEpTT04zLiBJbmplY3QgdGhlIHRoZW1lIENTUyB2YXJpYWJsZXM0LiBPdXRwdXQgdGhlIGZpbmFsIEhUTUxcblxuQWN0dWFsbHksIHRoZSB0ZW1wbGF0ZSBjb3VsZCBoYXZlIHBsYWNlaG9sZGVycyBsaWtlOlxuYGBgaHRtbFxuPHN0eWxlPlxuICA6cm9vdCB7IC8qIHt7VEhFTUVfVkFSU319ICovIH1cbiAgLyogcmVzdCBvZiBDU1MgKi9cbjwvc3R5bGU+XG48c2NyaXB0IGlkPVwic2Vzc2lvbi1kYXRhXCIgdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cIj57e1NFU1NJT05fREFUQX19PC9zY3JpcHQ+XG5gYGBcblxuQW5kIGV4cG9ydC1odG1sLnRzIHJlcGxhY2VzIHRob3NlIHBsYWNlaG9sZGVycy5cblxuT3Igd2UgY291bGQgc3BsaXQgaXQgZGlmZmVyZW50bHkgLSBoYXZlIHRoZSBDU1MgYW5kIEpTIGluIHRoZSB0ZW1wbGF0ZSwgYW5kIGp1c3QgaW5qZWN0IHRoZSBkYXRhLlxuXG5MZXQgbWUgbG9vayBhdCBob3cgaGlnaGxpZ2h0LmpzIGlzIHR5cGljYWxseSBidW5kbGVkLiBXZSBtaWdodCBuZWVkIHRvIHZlbmRvciBhIHByZS1idWlsdCBidW5kbGUgb3IgdXNlIGEgQ0ROLi4uIGJ1dCBDRE4gYnJlYWtzIHNlbGYtY29udGFpbmVkLiBMZXQgbWUgY2hlY2sgd2hhdCdzIGFscmVhZHkgaW4gdGhlIGNvZGViYXNlIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXRFTUNrWUlDeGdDS2tEUGVvU1FPdVZpZXY0YmlRakZKVFp2TE1nZ05VQ1prOGtiL1NKRkdSOHBzcTFuNmQ0V0x1VlpSTFQ1MUpySXBFR2NPU3JhamdjUDdPWjFpSVdZRWRldEVnd2syMlppL2VDWkc5ZmhaMTRhRE5FMjJsZWZDeGVRTC9ERTdDSXdEMGFYRUx5ZEhrVFZUNm95bHlvUnFWVy82a2QvQzBqUDhiU1RETjlMTFVrSnBaSk90NFhrSk5Qai9jOTBLZHRNS3JnTHF4SG1sY1lCUGRJN2ZVbnlLRHJyL2RpR3FKTGFFMDFPYlJseE1PSytFQ0Y4blVaYkZSZWU1TFY1N2FuV2RuYmJubi9wVWRFZThuUmRuMmo2c013WTRMaTRGeW9tTHVLc1dwTVhxdVhIb054dllhTjhGNU5jRWpnR1hFL25Xb0FmR1dGMFpvOEJXV0tGVU5nWkpNblJoZ2N4N2kvZ1ZtNG0vVEg5NWQ0VkR6cUVDVDNBUUplTStGbVczYkgvQmZsek1XWmp4aTZzYTR6c2NlL1pVWURIRUdueVZyMEgyOXB3cjFCWVdVMmlpVmFuYWNGbEV1dVZZQ1lXdlV4eUYwMHhja0pORDJRWVRlZTNqdllQalZZbi9KcWh2VzR4S3hhRWZxY2tuQXpjUjlFVTFha3Q4TUV4TmRqS1pyWm5ZT0pQUjJDUVFFSE1nOWZUc2NVenhxMVV0MzRPTjZiemRoTHViNk5FS1ZxWHRzeVNvZWVzQm5kRmg0VU9iMlU1RFlnZ1lMUUhoNnJ1WlpRNVpKTk05QnBrcG9QaytFbUxIM0E3NTJJeXVHRkpMck02Vi9xdVViUHBxdUpEUGNGcEN2VGFYL09ZV0Q3aGRkQS91eWlORkU4RTlGOUh1UlRDS3NxdzJpL3dmejVZb3F6QTltckwrWS9JU0t5a2Z4OTJkd3hzNGQ0U252MWxOVGpnengzMTcxNEI3QzB3U3BSc3phTStlV1lMWi9uSlczV0VkMTJIdzhKTjRFWVdiVnZOVFBwcE5yb3cxenlJQkx6a3E5Vkk0OFdueXoxZWUwQUJUclM2VklMTGExVjVQWXVBdHN4bDNhVWFDb2d4WHI5VmswZnhPWkZtRGRxYUpPUFd5WFg0SDlCOXhLeUtyMHFhL2xnRUF2YlNPSzVtV0hLUUZvK3BiSDdGclhLa2lZUlJYbG90ekRkU0k5Wkx3dnl2aWpIVk5kVlZPSnhUU1V4SEdERnREWlFLa3VMVHR4VG5RTkhwMUlOSXhkZlpBalVBeDd1aDV1clVMOWk5b2lSMHh1SXFYWXpjSE1jMUFaYlM1VDhrUVI1ZVQ3OFpXZkdFdFoxcFZhTTNDQTFIN0xGMnU2MlJvOUZmUlN4WjAzYno3TTZocXB5SStzWVIyRDZyTENkVnlxb2Z1YVFhVFhvR2N0dmdPVjEvTjhRRGp5SkVmejZ2aUNRcEJoRmF0RzVEbU4rRGFJTUtEZFpjYmVqQmU3OUtJb0hGVDVjMVQ2SlEvNEtObUx0NXM2S0taM2lKWDFhVDBEWFAwVlZTSzZBVkdIWHZBc2VpRXdqT0sxTGZObE9ZanlmSmxrK1RhV281NjBteTNIZnRJZE5kb3Fxd1FiNnhyc2Q3MU9HL1J5WWpZejFZVC9jREdmMTJ4eFkwMTFDbXVDZGFBbWZ0ais2TXowTmU0QXNRWldOUGI4S1BGOXNNQ1YyWm1aYW0zNUE4MTRRQlNvL1RzeERHcWlUSnRqTXRxQlpRMVhOSmE3THAxbkNXKzEzdjdiOWlqa3J3ckU4UVJEaDNENTNRTFZBOS84ZFRXZXQ5bTZuYzZFTTR1L1pMUlVtNGxKWWhIUDcramZybkVoMTZqL2lxTVR1K0VrOHpOZ1FqdklCelFxY0xVbGo2UmhaYjA5QnVESnBhMjJuYXowOFRJS3UyaWkwTEROTGdvdFhwcHZ4cFRsZ1dqUWpHemVDTm9mSXlmd2EzeXpJa0NzekprMndXVHMvbFNLcUx5QThFaEluQW04dUJ5L28waWpTckpaZ0J5d1kwUUoxQnpLK0dWRkRTcmIycHdsTjczd2E3alExY09Icm1lMGZZVlpib3dmdWhUdlZGb1NBVUxrRndheWxjb05Va3hBRERNY29YVTJFNWxCQkR1bjFPd2ZqaG9HUUFlcU5Oajl0MTcvMWg0eUhmWTBLY0l4QXJRMStnSk1vU2gyYVlyL2hYQzhWdWpXbWJTcWVsU3h5WWZQQUY1aytzWnpjandXRExEM2pDcklKa1RucTUrQmxNUnFtc052bEVDdHRHUy9mMmZJU1JLS01MeTBkOFlJTVdrVE5pZXVGZWR4L0lZTzM0N1FKcE9uTUtaMkcwaFVmbFV3akl4MU1oenZmRVFRNm9ZUzQyWUt0ei9PUndlb2FVT3JoYmM0RXlDVGFTaVlTVXp1YU1FdzloY3RjR3c5MytQYm4xYVRKMVBpWTA0UjVZaUxIanZpV1QxeURkR2ltZEx2NnFubVNzWkdUL2JpUlpPSjVmZUtKRnJqeTFoRVIrMXpxSXd6NGNwWXRuV3YxTnU5OHVWQzNKVnhaK2s2Z3RCSnFubldQbjFINVdDUlkvUkN3TUdaMFVLbzhPWmttdlNtWEQwNHdmSnZBa21pQkdnN2hid2NSQWd0N2F5elFEMHR3OU5vazd4RmRJeXR4QitLS2IzZWlWS2FLczNRWHY0YnRoNmZUVmZIM2Y1YWFWTDZDa3FpYmd6eHZXNmg4QmpESkVzWUM4alZrdUV3OUFhQWRhTlN0UFFDcnlTZGtXMnFscSt3ZHhtdGMyeTc0NThtSnRGazkwRzdKK2E3U3NMQWphZHBKOUJ6ZXl2bFFVR0FFPSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiR290IGl0LiBTbyB0aGUgcGF0dGVybiBpczpcblxuMS4gU3RhdGljIGFzc2V0cyBsaXZlIGluIGBzcmMvYCBhbG9uZ3NpZGUgY29kZVxuMi4gYGNvcHktYXNzZXRzYCBzY3JpcHQgY29waWVzIHRoZW0gdG8gYGRpc3QvYFxuMy4gUnVudGltZSBmaW5kcyB0aGVtIHZpYSBgZ2V0VGhlbWVzRGlyKClgIHN0eWxlIGZ1bmN0aW9uc1xuXG5Gb3IgdGhlIEhUTUwgZXhwb3J0LCB3ZSdkIGRvOlxuXG5gYGBcbnNyYy9jb3JlL2V4cG9ydC1odG1sL1xu4pSc4pSA4pSAIGluZGV4LnRzICAgICAgICAgICAgICAgICAgICAjIEV4cG9ydCBsb2dpY1xu4pSc4pSA4pSAIHRlbXBsYXRlLmh0bWwgICAgICAgICAgICAgICAjIEZ1bGwgdGVtcGxhdGUgd2l0aCBDU1MsIEpTLCBwbGFjZWhvbGRlcnNcbuKUlOKUgOKUgCAobWFya2VkLm1pbi5qcywgaGxqcy5taW4uanMgdmVuZG9yZWQgaW5saW5lIGluIHRlbXBsYXRlKVxuYGBgXG5cbkFuZCB1cGRhdGUgYGNvcHktYXNzZXRzYDpcbmBgYGpzb25cblwiY29weS1hc3NldHNcIjogXCJta2RpciAtcCBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lICYmIGNwIHNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8qLmpzb24gZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8gJiYgbWtkaXIgLXAgZGlzdC9jb3JlL2V4cG9ydC1odG1sICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWwgZGlzdC9jb3JlL2V4cG9ydC1odG1sL1wiXG5gYGBcblxuQWRkIGEgaGVscGVyIGluIGNvbmZpZy50czpcbmBgYHR5cGVzY3JpcHRcbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHBvcnRUZW1wbGF0ZURpcigpOiBzdHJpbmcge1xuICBpZiAoaXNCdW5CaW5hcnkpIHtcbiAgICByZXR1cm4gam9pbihkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpLCBcImV4cG9ydC1odG1sXCIpO1xuICB9XG4gIGNvbnN0IHBhY2thZ2VEaXIgPSBnZXRQYWNrYWdlRGlyKCk7XG4gIGNvbnN0IHNyY09yRGlzdCA9IGV4aXN0c1N5bmMoam9pbihwYWNrYWdlRGlyLCBcInNyY1wiKSkgPyBcInNyY1wiIDogXCJkaXN0XCI7XG4gIHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJjb3JlXCIsIFwiZXhwb3J0LWh0bWxcIik7XG59XG5gYGBcblxuTm93LCBmb3IgbWFya2VkLmpzIGFuZCBoaWdobGlnaHQuanMsIGxldCBtZSBjaGVjayB3aGF0J3MgYWxyZWFkeSB1c2VkOiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUs2ekhmM0hMUGNBRmZzeW82Y2pBZkEiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCAtciBcImhpZ2hsaWdodFwiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9wYWNrYWdlLmpzb24gcGFja2FnZXMvdHVpL3BhY2thZ2UuanNvbiJ9fSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFXdHZ2MUNhVXZSR0VEUEtnYlV6eWJOIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdyZXAgLXIgXCJtYXJrZWRcIiBwYWNrYWdlcy9jb2RpbmctYWdlbnQvcGFja2FnZS5qc29uIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMVFZek5KNTh5THlYTERrTlpDaWduZmMiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoibHMgLWxhIG5vZGVfbW9kdWxlcy9tYXJrZWQvbGliLyAyPi9kZXYvbnVsbCB8IGhlYWQgLTIwIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMTNzTTlSYVlYQVVGZlhFSHRMcGtXaXEiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoibHMgLWxhIG5vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliLyAyPi9kZXYvbnVsbCB8IGhlYWQgLTEwIHx8IGVjaG8gXCJoaWdobGlnaHQuanMgbm90IGRpcmVjdGx5IGluc3RhbGxlZFwiIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjEwMDYsImNhY2hlUmVhZCI6NTcxNTYsImNhY2hlV3JpdGUiOjE4NTEsInRvdGFsVG9rZW5zIjo2MDAyMSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAyNTE1MDAwMDAwMDAwMDAwMiwiY2FjaGVSZWFkIjowLjAyODU3OCwiY2FjaGVXcml0ZSI6MC4wMTE1Njg3NTAwMDAwMDAwMDEsInRvdGFsIjowLjA2NTMzNjc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMTE5ODUzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYWM2MjU4ZjIiLCJwYXJlbnRJZCI6IjIzOTdhZjdhIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0OTowMS44NjRaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUs2ekhmM0hMUGNBRmZzeW82Y2pBZkEiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJwYWNrYWdlcy9jb2RpbmctYWdlbnQvcGFja2FnZS5qc29uOlx0XHRcImNsaS1oaWdobGlnaHRcIjogXCJeMi4xLjExXCIsXG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIxNDE4NjN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmM2E3MGViOCIsInBhcmVudElkIjoiYWM2MjU4ZjIiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ5OjAxLjg3M1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxV3R2djFDYVV2UkdFRFBLZ2JVenliTiIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6InBhY2thZ2VzL2NvZGluZy1hZ2VudC9wYWNrYWdlLmpzb246XHRcdFwibWFya2VkXCI6IFwiXjE1LjAuMTJcIlxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMTQxODcxfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNDliNjMzNDIiLCJwYXJlbnRJZCI6ImYzYTcwZWI4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0OTowMS44ODRaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVFZek5KNTh5THlYTERrTlpDaWduZmMiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ0b3RhbCAxMzkyXG5kcnd4ci14ci14QCAxMCBiYWRsb2dpYyAgc3RhZmYgICAgIDMyMCBEZWMgMzAgMDA6NTMgLlxuZHJ3eHIteHIteEAgIDkgYmFkbG9naWMgIHN0YWZmICAgICAyODggRGVjIDMwIDAwOjUzIC4uXG4tcnctci0tci0tQCAgMSBiYWRsb2dpYyAgc3RhZmYgICA3Mjk5MSBEZWMgMzAgMDA6NTMgbWFya2VkLmNqc1xuLXJ3LXItLXItLUAgIDEgYmFkbG9naWMgIHN0YWZmICAxNDU3MjcgRGVjIDMwIDAwOjUzIG1hcmtlZC5janMubWFwXG4tcnctci0tci0tQCAgMSBiYWRsb2dpYyAgc3RhZmYgICAyMDk0MiBEZWMgMzAgMDA6NTMgbWFya2VkLmQuY3RzXG4tcnctci0tci0tQCAgMSBiYWRsb2dpYyAgc3RhZmYgICAyMDk0MiBEZWMgMzAgMDA6NTMgbWFya2VkLmQudHNcbi1ydy1yLS1yLS1AICAxIGJhZGxvZ2ljICBzdGFmZiAgIDcxOTA1IERlYyAzMCAwMDo1MyBtYXJrZWQuZXNtLmpzXG4tcnctci0tci0tQCAgMSBiYWRsb2dpYyAgc3RhZmYgIDE0NTU5NyBEZWMgMzAgMDA6NTMgbWFya2VkLmVzbS5qcy5tYXBcbi1ydy1yLS1yLS1AICAxIGJhZGxvZ2ljICBzdGFmZiAgIDczMzg0IERlYyAzMCAwMDo1MyBtYXJrZWQudW1kLmpzXG4tcnctci0tci0tQCAgMSBiYWRsb2dpYyAgc3RhZmYgIDE0NTcyNyBEZWMgMzAgMDA6NTMgbWFya2VkLnVtZC5qcy5tYXBcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjE0MTg4Mn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjY3NmI2ZWJiIiwicGFyZW50SWQiOiI0OWI2MzM0MiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDk6MDEuODkxWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDEzc005UmFZWEFVRmZYRUh0THBrV2lxIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoidG90YWwgMTc2XG5kcnd4ci14ci14QCAgIDYgYmFkbG9naWMgIHN0YWZmICAgIDE5MiBEZWMgMzAgMDA6NTMgLlxuZHJ3eHIteHIteEAgICA5IGJhZGxvZ2ljICBzdGFmZiAgICAyODggRGVjIDMwIDAwOjUzIC4uXG4tcnctci0tci0tQCAgIDEgYmFkbG9naWMgIHN0YWZmICA3MzUxNyBEZWMgMzAgMDA6NTMgY29yZS5qc1xuLXJ3LXItLXItLUAgICAxIGJhZGxvZ2ljICBzdGFmZiAgICAgODMgRGVjIDMwIDAwOjUzIGhpZ2hsaWdodC5qc1xuLXJ3LXItLXItLUAgICAxIGJhZGxvZ2ljICBzdGFmZiAgMTIxOTQgRGVjIDMwIDAwOjUzIGluZGV4LmpzXG5kcnd4ci14ci14QCAxOTMgYmFkbG9naWMgIHN0YWZmICAgNjE3NiBEZWMgMzAgMDA6NTMgbGFuZ3VhZ2VzXG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIxNDE4OTF9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI5YTY1MGEzNCIsInBhcmVudElkIjoiNjc2YjZlYmIiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ5OjEzLjIxMFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlNvIHdlIGhhdmU6XG4tIGBtYXJrZWRgIGFscmVhZHkgYXMgYSBkZXBlbmRlbmN5IChoYXMgYSBVTUQgYnVpbGQgYXQgYG1hcmtlZC51bWQuanNgIH43M0tCKVxuLSBgaGlnaGxpZ2h0LmpzYCBpcyBhIHRyYW5zaXRpdmUgZGVwZW5kZW5jeSB2aWEgYGNsaS1oaWdobGlnaHRgVGhlIGV4cG9ydC1odG1sLnRzIGFscmVhZHkgaW1wb3J0cyBmcm9tIGJvdGg6LSBgaW1wb3J0IGhsanMgZnJvbSBcImhpZ2hsaWdodC5qc1wiO2AtIGBpbXBvcnQgeyBtYXJrZWQgfSBmcm9tIFwibWFya2VkXCI7YEZvciB0aGUgY2xpZW50LXNpZGUsIHdlIG5lZWQgYnJvd3Nlci1jb21wYXRpYmxlIGJ1bmRsZXMuIE9wdGlvbnM6XG5cbjEuICoqQ29weSB2ZW5kb3JlZCBidWlsZHMgYXQgYnVpbGQgdGltZSoqOiBgbm9kZV9tb2R1bGVzL21hcmtlZC9saWIvbWFya2VkLnVtZC5qc2AgYW5kIGEgaGlnaGxpZ2h0LmpzIGJyb3dzZXIgYnVuZGxlMi4gKipJbmxpbmUgdGhlbSBkaXJlY3RseSBpbiB0ZW1wbGF0ZS5odG1sKio6IFBhc3RlIHRoZSBtaW5pZmllZCBjb2RlMy4gKipGZXRjaCBmcm9tIENETiBhdCBydW50aW1lKio6IEJyZWFrcyBzZWxmLWNvbnRhaW5lZCByZXF1aXJlbWVudE9wdGlvbiAxIGlzIGNsZWFuZXN0LiBXZSBjYW4gYWRkIHRvIGBjb3B5LWFzc2V0c2A6XG5gYGBiYXNoXG5jcCBub2RlX21vZHVsZXMvbWFya2VkL2xpYi9tYXJrZWQudW1kLmpzIGRpc3QvY29yZS9leHBvcnQtaHRtbC9cbmNwIG5vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvLi4uIGRpc3QvY29yZS9leHBvcnQtaHRtbC9cbmBgYFxuXG5CdXQgd2FpdCwgZm9yIGhpZ2hsaWdodC5qcyB3ZSBuZWVkIGxhbmd1YWdlcyBidW5kbGVkLiBMZXQgbWUgY2hlY2sgaWYgdGhlcmUncyBhIFwiY29tbW9uXCIgYnVuZGxlLi4uIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFb2dJQ2tZSUN4Z0NLa0F1cjlEWjFJVkZUc0srZmljVFc1OTNmSVl5bE1rZVJMODg1TmN6SEVucGFWVlV5ai9qMU53LzRNRUhOVUM4bjZQd1V6VW8rMWh2THpqdjNGdDJRRGRORWd6b0VuNmhkNUxPSG9hdnJSRWFESzlWUElzWVpmekZmbjNyVFNJdzBrUXBEbVowa3pjcWFFakR4Q3pJYzdCaUtqWXlJYzFab0Zjdm56a0ZObjlBaTFoR2IyMzFocmNlanNOdG9Jc0hLdThHTlcvZkFoZmg3T1doVFVmdXZ1akM0UXlpM1BXeW81L2hrTWZLd0RLQ1ZKZTg4MDFQS01sRTZYK0dyMm5PdE9HTnZpNXNObDdBcWRIRFNlKytveWNkY1dDYll0b1NRMkFBTHRRK2ZpTDB2Qi8wQjdGZC9wTDUzODNVUy83d1ZTTVZaSUlYaFVVeENpN1A3WU8yZEJMVGhhdjlQeVIzQm5pRStqQTExTU9RV3NqdktWMU5ReWp2UEM0d0RRMHZZa3ZwUFRmdjFjdlN1dU5KZXJpMGJrWUR5TnZ6VjVOS050UDNJV3hIMDVRRVNpUno2N3NZa1JIZHRQY1F2b3lwcVY3QVVrZkVEdXcrNW1iNmJNTzBiVHc4NFA2NzZ3QkZrZjREdVpHWFM3SU0ybDd5MkR3aHV1RFZKakkvdFNSOEJSYXl2WGFhc2lnOGZ6dlVWNGUzMGFYUkxoOXNhMUlXc09JbkNnNkd0M0RKN0o5aFFOUk1LZk1UQlhJTlJXdDRhaUE2Q0JvN0Q3d0xNTGhpZ01QM20rNGtsemVwOStheE84TCtXcGdNQ0N3NXQxbU5PbWRaM2U3R01ERXhNclNFdll2VlJDcHUxSThTdllHL2tWU2U5c0tUcGFjVm54UDhLSEhQSW9JKzlkR25BQXNpdVVDRnpOamZNVWNDQ2Z0ZFdkbmpWbS9NdXBQUmJJaHFDM0RiWjVXbC9IMWJWcHE0emxIL3FPR2dOSFRNY284NlMzd3FEdHNCVUZWODBDNVl6WE0vOVFjVVRtN3IxeTg0eXViMUU4R01ldUtRdmIrczRvZGpieWZJWHJpd3JrT0hhUTl6M1p6Zk94RlJaZkNjRzJlSGIxVHBQOExtbnNXMFBFQjN0TU96c0tHMzhJUmtDcXhiSktZd2pBWGxwSVhhaW44UHZUby9DTGJaZ2F2TGQwTXUrTzgveGtHR0J3U1F3c1ZiVGhCb0tLRThuS3RZRFphWWEyNFAwTm1wa05QSytMemF4b2RYekhmNWhsZjdVMEtnYVBwU25UVWZLb3p6SWgvdmN5S1VxNEFXbkJMY3A1RWJxU0w3WTgzT3hTWDFXYTVuTGorRVhaM2ZmU0MyVjUrd3plTVVTbnJDN1diRzRlTWgxVXR0eFh3c3MyamNIZjliRlpEWnJ5NEpLdHdINmZ1dzVVMGFSTk9Hd3JPa2gzUUV2alhEc2djT0VUWEtJZGF4aWpXand4cHVJbUlaNnNQQ1djbFVrZEliL2VHRlA4Zld1NVVkK09YUFkvU2Q1QWdoUXJtMFBmdGhIODZmUFE0SEkxN2JJdEZ5cjM4SjNndVZoZVRxZW9tSlFFamVQMFNHazFOb0FLRVpUbFJTSE9IRURnVk90emIzeEhnS2lzQjI0WDI2eVEydHVUbnB4NnVjU0FYaWV5MWhjelF2Z3F4dDZBa0JJWXNLdCtnYWsybDRsZGlTdVdhOTNJeHVaMWlDMXBTK0dtVUhRbGFvdnhCTDVBazFPTzVGcXhrMmZadUhRYWNseXEyWUQzZjNKcUtCYUlXdEVSb0FFdHpCVll1N2tIVEhHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxTmIxaW4xNDcycWg3eENTQk5URVRnYyIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJscyBub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzLyB8IGhlYWQgLTIwIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMU5HZjZ4b0ZwRUxHdkpHUDl4ZUZnV2kiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiY2F0IG5vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvcGFja2FnZS5qc29uIHwgZ3JlcCAtQTUgJ1wibWFpblwiJyJ9fSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDE5c2pocGRQeTE0V3poN3BhR3VOaVg2IiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6IiMgQ2hlY2sgZm9yIHByZS1idWlsdCBicm93c2VyIGJ1bmRsZXNcbmxzIC1sYSBub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL3N0eWxlcy8qLmNzcyAyPi9kZXYvbnVsbCB8IGhlYWQgLTVcbmxzIC1sYSBub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzLyAyPi9kZXYvbnVsbCB8IGhlYWQgLTUifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6NDgwLCJjYWNoZVJlYWQiOjU5MDA3LCJjYWNoZVdyaXRlIjoxNzA4LCJ0b3RhbFRva2VucyI6NjEyMDMsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMTIsImNhY2hlUmVhZCI6MC4wMjk1MDM1LCJjYWNoZVdyaXRlIjowLjAxMDY3NSwidG90YWwiOjAuMDUyMjE4NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjE0MTg5Mn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjM1M2ExZjMwIiwicGFyZW50SWQiOiI5YTY1MGEzNCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDk6MTMuMjE5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFOYjFpbjE0NzJxaDd4Q1NCTlRFVGdjIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiTElDRU5TRVxuUkVBRE1FLm1kXG5saWJcbnBhY2thZ2UuanNvblxuc2Nzc1xuc3R5bGVzXG50eXBlc1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMTUzMjE4fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMmQxOGJmOTIiLCJwYXJlbnRJZCI6IjM1M2ExZjMwIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0OToxMy4yMjZaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMU5HZjZ4b0ZwRUxHdkpHUDl4ZUZnV2kiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIFwibWFpblwiOiBcIi4vbGliL2luZGV4LmpzXCIsXG4gIFwidHlwZXNcIjogXCIuL3R5cGVzL2luZGV4LmQudHNcIixcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcIm1vY2hhXCI6IFwibW9jaGFcIixcbiAgICBcImxpbnRcIjogXCJlc2xpbnQgc3JjLyouanMgc3JjL2xpYi8qLmpzIHNyYy9wbHVnaW5zLyouanMgZGVtby8qLmpzXCIsXG4gICAgXCJsaW50LWxhbmd1YWdlc1wiOiBcImVzbGludCAtLW5vLWVzbGludHJjIC1jIC5lc2xpbnRyYy5sYW5nLmpzIHNyYy9sYW5ndWFnZXMvKiovKi5qc1wiLFxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMTUzMjI1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYmIzNzBjOTQiLCJwYXJlbnRJZCI6IjJkMThiZjkyIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo0OToxMy4yMzlaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTlzamhwZFB5MTRXemg3cGFHdU5pWDYiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiItcnctci0tci0tQCAxIGJhZGxvZ2ljICBzdGFmZiAgMTQ0NyBEZWMgMzAgMDA6NTMgbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9zdHlsZXMvYTExeS1kYXJrLmNzc1xuLXJ3LXItLXItLUAgMSBiYWRsb2dpYyAgc3RhZmYgIDE0NDggRGVjIDMwIDAwOjUzIG5vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvc3R5bGVzL2ExMXktbGlnaHQuY3NzXG4tcnctci0tci0tQCAxIGJhZGxvZ2ljICBzdGFmZiAgMTI5OCBEZWMgMzAgMDA6NTMgbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9zdHlsZXMvYWdhdGUuY3NzXG4tcnctci0tci0tQCAxIGJhZGxvZ2ljICBzdGFmZiAgMTE4MyBEZWMgMzAgMDA6NTMgbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9zdHlsZXMvYW4tb2xkLWhvcGUuY3NzXG4tcnctci0tci0tQCAxIGJhZGxvZ2ljICBzdGFmZiAgIDc3NCBEZWMgMzAgMDA6NTMgbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9zdHlsZXMvYW5kcm9pZHN0dWRpby5jc3NcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjE1MzIzOX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImNkOTUzNzhjIiwicGFyZW50SWQiOiJiYjM3MGM5NCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NDk6MjQuMDcyWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiaGlnaGxpZ2h0LmpzIGRvZXNuJ3QgaGF2ZSBhIHByZS1idW5kbGVkIGJyb3dzZXIgVU1EIHdpdGggY29tbW9uIGxhbmd1YWdlcy4gV2UnZCBuZWVkIHRvIGVpdGhlcjpcblxuMS4gVXNlIGEgQ0ROIGxpbmsgbGlrZSBgaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGlnaGxpZ2h0LmpzLzExLjkuMC9oaWdobGlnaHQubWluLmpzYCAtIGJ1dCB0aGlzIGJyZWFrcyBzZWxmLWNvbnRhaW5lZFxuXG4yLiBDcmVhdGUgb3VyIG93biBidW5kbGUgYXQgYnVpbGQgdGltZSB1c2luZyBzb21ldGhpbmcgbGlrZSBlc2J1aWxkXG5cbjMuIElubGluZSBhIG1hbnVhbGx5IGRvd25sb2FkZWQgYnVuZGxlXG5cbjQuIEFjdHVhbGx5LCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUncyBhIHdheSB0byBnZXQgYSBjb21tb24gYnVuZGxlLi4uXG5cbkFjdHVhbGx5LCBsb29raW5nIGF0IHRoZSBoaWdobGlnaHQuanMgd2Vic2l0ZSwgdGhleSBvZmZlciBwcmUtYnVpbHQgQ0ROIGJ1bmRsZXMuIFdlIGNvdWxkIGRvd25sb2FkIG9uZSBhbmQgdmVuZG9yIGl0IGRpcmVjdGx5IGluIHRoZSBzcmMvIGZvbGRlciwgdGhlbiBjb3B5IGl0IGR1cmluZyBidWlsZC5cblxuTGV0IG1lIHRoaW5rIGFib3V0IHRoaXMgZGlmZmVyZW50bHkuIEZvciBzaW1wbGljaXR5LCB3aGF0IGlmIHdlOlxuXG4xLiBEb3dubG9hZCBgaGlnaGxpZ2h0Lm1pbi5qc2AgKGNvbW1vbiBsYW5ndWFnZXMpIG9uY2UgYW5kIGNvbW1pdCBpdCB0byB0aGUgcmVwbyBhcyBhIHN0YXRpYyBhc3NldFxuMi4gU2FtZSBmb3IgYG1hcmtlZC51bWQuanNgIChvciBtaW5pZmllZCB2ZXJzaW9uKVxuMy4gVGhlc2UgZ2V0IGNvcGllZCB0byBkaXN0LyBkdXJpbmcgYnVpbGRcbjQuIHRlbXBsYXRlLmh0bWwgaW5jbHVkZXMgdGhlbSBpbmxpbmUgb3IgcmVmZXJlbmNlcyB0aGVtXG5cbkFjdHVhbGx5LCBldmVuIHNpbXBsZXI6IHRoZSB0ZW1wbGF0ZS5odG1sIGZpbGUgaXRzZWxmIGNhbiBjb250YWluIHRoZSB2ZW5kb3JlZCBKUyBpbmxpbmUuIEl0J3MgYSBiaXQgdWdseSBidXQgY29tcGxldGVseSBzZWxmLWNvbnRhaW5lZCBhbmQgZG9lc24ndCByZXF1aXJlIGFueSBidWlsZC10aW1lIGNvcHlpbmcgb2Ygbm9kZV9tb2R1bGVzLlxuXG5MZXQgbWUgY2hlY2sgdGhlIHNpemVzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXY0SkNrWUlDeGdDS2tCSkJHekpEMHJ3TmZOYjZ6TGlLbHovZWUvNDlLbEF1Q1NYR09yaEhFa1dyNkJSRGFrZ3I5QUMrbURLczhvYzlOczZ2Y09hUjdFTDJEUEMzeFRzWXVlN0VndzNHQlp6aFVIdUhhT3Z2MTRhRE81dWdQbnZJZzVtQWVrVzFDSXd3VjhNbGRrWGVmaC9CMkRzZFlqa0JDTEovRk85WVU4U3NoYUZsaEZGaVczQjNncjVra1pyNWx1RnFzYUtTaTdZS3VVSVNCbHZFZCswSENtV05HcUNlOXhvd2NVSHFwYkg3ME1VVDM1VkRHREdiZkk5ZHFVYThiYS9hWkhZYlhPOXlYR1FDSzFLcm82aDJWcmtNZnhHY1RrbVpud1BTYXJXRVREZGlHRDdvaGdYVnFKWHl0cTBVTzZpZVo2UjBWTmIvd0JqUHJFYjZ6bDdhdEFoNnhJTVBTSG5GQmFscmcwQmgzejEyU0ZiekVKakg2RzAwOWhVOWJabUI5M282N2JoZ2pEejh1clBBdW43UG5PcVFGakdkLzRyeEExdW54ZjVzMDdRTFlYNXVqem9JclJyOFQ3MXhGVm1lMWNZbnlYSVFveVA1eTlucDNUcnI2UnZBOVd4dDlhNENCY3V3cDczWEM2YjVsVmJUQlU1TC9jbGRINjdaN3BlWnBuZmRNazRUOXZIYUJQaVV4eTJrckZPeWhtb3R6RXNoRVRyeXVQcndXYUF6cDB4TktNa05kN2tuR1N6NVRsVGNuaDJKTUZ5V2hVMmU1a3ZBZmlxaVB3cENZN1ZEZkQwT2ZJWEJzZXE5aHZidGVQMWpRRmVWUkZvZ0hIMkx4TUdBeXUrNlFYYjBYOUVSU3g1bWptN2xrdEZLcEFwODJXUWJtMnBqSEwxK2liTGphSittajBZRkVOMG5ic0tsbTB6NmJyazhCV01CMXlyb3VXMk4yRW53cEFnTlZGbVRURkpoZzR3VE83aFp5bWxzUG0zNUFhRFlCdmlrRk5tVlRFeTZlUjlJNUhJNDhsaWlQem5FazFSQ21EeWhFR0R1N2NBZmhmLzREQ2ZENEdZbEhhcUgzdVMxdU1lOEllOWQyZUR2cFVHOTJhSDJrdzJzbGI4S0FPYWNhcjJKdkpBWnZIUHowakVuOXpGaGovQXZZcVZUd3RXYTFHaVZiYXYyZk9SWWJKVXJZa3RONEFHdnlpbW82L0h6SVBmcWpHcjE3a2t3RC85T09Ha0k5VFJ5emxwRGxBaE8xbU1ISVl3QlNyRzk4OHgycjNJdFFtSkJ4cGF1MGhha3V4QmEzQnoxUmxPaEVIZjVXYTJkSWs1UXJOKzUxK3dyK3VjTTNxYTNHNzhucEE3Y2pMMHZ1YzVWL2R6WVhRR1R6UEtNenQyL3JEdDNVV1BoZ0MvS01naFVwTXFVcXFpK2M0L3VZOUg1TXVZVVVSWXhHb1d0RGxaVk5YTC9VRlE0czFYN3NQVFBhTitCY2xvaFB5ejQxRW96em5DQ2hZWjFJM1l5QTNBTlg1QWIvRjY3Nzh3T2NqclF2SE4wS1lvZWYvMTBHTnNkb1ZzZm1YUHpYTkp3eTFqNGJmUS9LVWVoQTJyMGVYMU5ieWFjekYvV1ZjVzdXdWdZUzdoMTRsUGpjRFlxMklqYllkTThxMVB2OXY1UGFSaXlHZ1Y2OXVRNFZUT1ZHdVZ1TzlrRG9KNEt5VDdhV1U5dGl4dURjdnJiVUllQmxsdnd4N1dxRGcxdTNnSlNqUnMzZlFjRENQTEFSd045Uk9nQ3BiUCs5d0szRm1ReTRwR0txekwyTkVuQjlvdjQxR09WUTYrQzJzUFI5SEwrL1dNWXUvRW8vMHozL2d4c2c1L0tuRTg5WmNZTWRtM2U3dXhBYVc4bnRoTzBxZE4zcXdVZ3dnOUxHMFJpeGtydk1wWEx3N3VTOGFROTVoaUo5QVlnOG8xcEZHYktiU1lTd1NnbUhtT0lpRjVjNU9DYStVa3kyYm1CbllRSlVmNjB0QzhwUTk4eWhJVllocTlZSHJyazZ6MXpxVUlFVE80YkJyZ0htamN3RWVUTmt5NkY2RkRUTVhraHVjOWxTRy9nbERJYWxMNmNPZWl5STJPaVdLZG9Kb1QySE5Nb1drQjY1WE9td2hWeEYrbmxTNkNibnJsSTJHbUE5bDhWQ1J2b1FZZG9UT3VCTXovaEJSQjR0dStvSGh1UjZEbFRySW1nanBrMGhrUFQvakd2T2hWandWWVRLem5JOWF5ejNTK0dBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDEycHhHamdRcmhWZ1pUZHlaUmJ4S0JBIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6IiMgQ2hlY2sgc2l6ZXMgb2Ygd2hhdCB3ZSdkIG5lZWQgdG8gdmVuZG9yXG53YyAtYyBub2RlX21vZHVsZXMvbWFya2VkL2xpYi9tYXJrZWQudW1kLmpzXG5cbiMgRm9yIGhpZ2hsaWdodC5qcywgd2UnZCBuZWVkIGNvcmUgKyBsYW5ndWFnZXMuIENoZWNrIGNvbW1vbiBidW5kbGUgZnJvbSBDRE5cbmN1cmwgLXMgXCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9oaWdobGlnaHQuanMvMTEuOS4wL2hpZ2hsaWdodC5taW4uanNcIiB8IHdjIC1jIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjQ0NCwiY2FjaGVSZWFkIjo2MDcxNSwiY2FjaGVXcml0ZSI6OTEwLCJ0b3RhbFRva2VucyI6NjIwNzcsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMTExLCJjYWNoZVJlYWQiOjAuMDMwMzU3NSwiY2FjaGVXcml0ZSI6MC4wMDU2ODc1LCJ0b3RhbCI6MC4wNDcxODV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzIxNTMyNDB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI1MjczOGNkZiIsInBhcmVudElkIjoiY2Q5NTM3OGMiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjQ5OjI0LjIwM1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxMnB4R2pnUXJoVmdaVGR5WlJieEtCQSIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgIDczMzg0IG5vZGVfbW9kdWxlcy9tYXJrZWQvbGliL21hcmtlZC51bWQuanNcbiAgMTIxNzI3XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIxNjQyMDN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI4ZDIzMGVmMSIsInBhcmVudElkIjoiNTI3MzhjZGYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUwOjEwLjUzNFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlNvOlxuLSBtYXJrZWQudW1kLmpzOiB+NzNLQiAodW5taW5pZmllZCwgbWluaWZpZWQgd291bGQgYmUgfjQwS0IpXG4tIGhpZ2hsaWdodC5taW4uanMgKENETiBjb21tb24gYnVuZGxlKTogfjEyMktCXG5cblRvZ2V0aGVyIHRoYXQncyBhYm91dCB+MjAwS0IgZm9yIHRoZSBsaWJyYXJpZXMsIHdoaWNoIGlzIGFjY2VwdGFibGUgZm9yIGEgc2VsZi1jb250YWluZWQgSFRNTCBleHBvcnQuXG5cblRoZSBjbGVhbmVzdCBhcHByb2FjaDpcbjEuIFZlbmRvciB0aGUgbWluaWZpZWQgdmVyc2lvbnMgZGlyZWN0bHkgaW4gYHNyYy9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci9gMi4gVGhlc2UgZ2V0IGNvbW1pdHRlZCB0byB0aGUgcmVwbyAodGhleSdyZSB0aGlyZC1wYXJ0eSBidXQgc3RhYmxlIHZlcnNpb25zKTMuIHRlbXBsYXRlLmh0bWwgaW5jbHVkZXMgdGhlbSBpbmxpbmUgYXMgYDxzY3JpcHQ+Li4uPC9zY3JpcHQ+YFxuNC4gTm8gYnVpbGQtdGltZSBub2RlX21vZHVsZXMgY29weWluZyBuZWVkZWRcblxuT3IgYWx0ZXJuYXRpdmVseSwgdGVtcGxhdGUuaHRtbCBjb3VsZCBoYXZlIHBsYWNlaG9sZGVycyBsaWtlIGB7e01BUktFRF9KU319YCBhbmQgYHt7SExKU19KU319YCwgYW5kIGV4cG9ydC1odG1sLnRzIHJlYWRzIHRoZSB2ZW5kb3IgZmlsZXMgYW5kIGluamVjdHMgdGhlbS4gVGhpcyBrZWVwcyB0ZW1wbGF0ZS5odG1sIGNsZWFuZXIuTGV0IG1lIHRoaW5rIGFib3V0IHdoYXQgYXBwcm9hY2ggaXMgYmVzdC4uLkFjdHVhbGx5LCB0aGUgc2ltcGxlc3QgaXMgcHJvYmFibHk6MS4gYHNyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWxgIC0gaGFzIENTUywgYXBwIHN0cnVjdHVyZSwgYW5kIG91ciByZW5kZXJlciBjb2RlXG4yLiBgc3JjL2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yL21hcmtlZC5taW4uanNgIC0gdmVuZG9yZWRcbjMuIGBzcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvaGlnaGxpZ2h0Lm1pbi5qc2AgLSB2ZW5kb3JlZDQuIGV4cG9ydC1odG1sLnRzIHJlYWRzIHRlbXBsYXRlLmh0bWwsIHJlYWRzIHZlbmRvciBmaWxlcywgYXNzZW1ibGVzIGZpbmFsIEhUTUxUaGlzIHdheTotIHRlbXBsYXRlLmh0bWwgaXMgY2xlYW4gYW5kIGVkaXRhYmxlLSBWZW5kb3IgZmlsZXMgYXJlIHNlcGFyYXRlIGFuZCBjYW4gYmUgdXBkYXRlZCBpbmRlcGVuZGVudGx5LSBObyBjb21wbGV4IGJ1aWxkIHN0ZXBzXG5cbkNvcHktYXNzZXRzIHdvdWxkIGNvcHkgdGhlIHdob2xlIGBleHBvcnQtaHRtbC9gIGRpcmVjdG9yeS5cblxuTGV0IG1lIHByb3Bvc2UgdGhlIGZpbmFsIHN0cnVjdHVyZS4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVwd0xDa1lJQ3hnQ0trQ2RGNytzRXhJMlAxcEhGU3crTHJscnVzRWIxdENNeCtBVlVEUVMrRlBKTWdWeXJaRkE4WERCWGVPQk80T2lSSXgxK0Z1RnpFY3diYUhXS1Qrc2IrYllFZ3d1QkF1Zlp2L1dGWUxZNWJFYUROTGhnUnB3QmgyRTNjZTZqU0l3SFREOGtaKyt5STFkcGJJeWlPaVorUHBLRm9HT1hrZnpEU0o5dm1Oek41OTNvRnpORmZrbWdIeGxRSTBLL1dXbktvTUsvVHZ6MlRlaWtuYUkvYW82R1BMOHE0UDBKWEpzMXVDbjZ3Sm9WdGtoeEwrK1V3VXdmc0JLa2hWckMyUkNXRU1KVm5FN3VxM3M1bS9sM3RTUmJvc1dsK01tWFZMVVJYM0ZSaVBKNmlkSVdRbnhIWXR0VDFuMDRUbXgrYy9tWUZUVktaUUNNdkVZYTI1cW5pTkV4aEdwWWlzdXoxTit5TFZNeE1tYnN2S05yWkt4RFFSRlh6NGErM21OV3JYYW81b21BMjJIYjFtMHY1SjdrQ29HUVVpM21FRjlmbEVWc1ZlZk0xUDR1NGpmQlRTS3p5cWVxWkE4TG1aaG9Cam1scDJiTFlVTjk5elRNOW5kangwR0d6M09sNkF3ZTV0QTFlcWVaT25EMkJhOGNOSkMwWk1QbmZGVHUrelpEMG13OGJuVUhtZlI4dVlFeXA2b2syRnA0SkV1SmFPZlpDaTFQbXVzaVluUDF1SWZOa3pJUnBnLzkyMGg2TlphOEp0TWtxNUE1YUMyZXpmODlRYVRyNlkxNzQyZk1rS3VOVmlwdHJBYndtN1ZBMUF2Um1qOWZ0bFltdUYwamRDRTg0V2Z4MFh0a3Q4c1l2MFlwa3pZN0ZyekRxMERUeCttT2pKNndFaVNITEZici83MEVXaW4xU2RERmFodDZ0TDM4elg1SGxlL1BTQmRyZk9iTnNBSWVtM1J4YWZWN1J3Z1VEN1lvYWNxUWpmYmhHU1dpVzlITFd1endmRkRvcGREalVuQk94VGNDOVo2ODlPMGxxQ1R2eWcyR1ZiVHU1NjR1OFNGd3Bsc1Z5VUpiUytxN0dhcGhIY25pZDNpbVk5QnJGODFBWmRmc2xWbmVoYmhHR2QzVjFRWG0yRVJEWDFwRk5oK0xlOS9wQlc2MG02b2xGd0YrdDJyRktNQVZxRms4SEtVNDBXc0o2ek9VYld4ZjJaZHRyZVFHUjFiMmx0cDJxUWhEY2ZvU2YzbDB0YTZyWDZwcGdOekxsVmZ3VjU2b0hlZ09vQ0ZwQkxOeEtwSnAxbGNmZExmU0NsREFzekNrWkxUM2hXMS9tWFQ3Z2wwZVYxdVlidEk3MStZUFdtUC9zTmNEZDNaMSs1ZU00WGk1dkNucGxjRjE4aElYUWVmMTBpa1Voc1l1dGYwc0pJM1B5U2pPanBQeCtEQkF4ejlqVmJWaTF1NWpyM3NzN3F5bXgxVWFHTWowV0lEeFdFajFzbkV4MHo4VUs3RElYQnpKS0dhTE1yMWhTUVM3M05lVHpndnBFWkFiZjJhZFFqQ3Z5ci84UDRxRS9tSlF5T3hZMVFwMWhqQlM0cExBSjNFRWxxTVp6SWZYSUJsc3FObU5OVkk2UGhCcW0rZ0FVb1Ayejl6bzd5RTlPSHRsN0xaUXMvcWlKSEYxTEZGTmluQ0NpUUZmS0hiamUrUWtiRTBta1JLeGtMYWNZU1oyejJrZTJBWGRpSHdRM1NPNytwSHI1bDRDRHYzbm9ucHJwcjdzakxqMFVML3h5MFdwWml3YjNHK1ljYndSSXRGTHZvUFk4emQ0cWFYS0RibzdiNHlBODlNcm45dGpWUURmRkRqTVBxZjZxWFg5Z0dqTnBDZTlFWVRjYXFPd2hsWEZQbmo2Ri8weUh3ZWZSK2ViSENqKzRSQVo1ZjAwcVBTSTROZWZ1ZCsxNTlHTVcxUDQ4TzZ0RGxFNUEwM25yZmFaektLQU5MUStGNnI1T3ZCbnJER3h0aDRVZGZBNXZkSkliTEJmRXp1Y2U3c3lCbkV4WGVBTlIwOFJid1RibCtvazdNL2xQVmduTEtKSTdkK1lMbHZNMmRQSmV1dTFBQ0R3ZUVhUDJoWXF6Vjh6clpQcXJscm4wRjVVV2ZZUUpDRlR1aFozM0NLUFg0ZW01ZFQ5b1JOeWN3ZkdKWElmRkN6bHZ6SzRYVDlUYnY4Sit4NnpaSHczczh2ZTVDd3NGeDNqMnFoQU01Q0p6TDhyUDdnNmEwT2JwM2hnRHlWeGJFb1dXUGRQdG1kVzdJSkNScy94Zndxa1VYbDhtdThIZ1RlajlXaitObkVZbE81T0pCYW8rYXVIcHdwODlIQUYwZHViVGg4MEVYWkczTWhOb2VwdXJybDhOZ05TZi8zLzByQTdPNjRRQUpXSzNIKzZqWFVGQlJNRGhNdkUxZkt3RUhnYW5wSzhZYnlFNllQMERDTGh4SVpqa0JnWjhrbDZrYzRYbGxiemZUUUNmRjkyZWM0T09RSmR3SzBDY2NsY3JEanFuQkJoemZTdDdVWUFRPT0ifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlNvIHdlJ3JlIGxvb2tpbmcgYXQgfjIwMEtCIGZvciB2ZW5kb3JlZCBsaWJzIChtYXJrZWQgfjQwS0IgbWluaWZpZWQsIGhpZ2hsaWdodC5qcyB+MTIwS0IpLiBSZWFzb25hYmxlLlxuXG4jIyBGaW5hbCBQcm9wb3NhbFxuXG4jIyMgRmlsZSBTdHJ1Y3R1cmVcblxuYGBgXG5zcmMvY29yZS9leHBvcnQtaHRtbC9cbuKUnOKUgOKUgCBpbmRleC50cyAgICAgICAgICAgICAgICAgICAgIyBQdWJsaWMgQVBJICsgYXNzZW1ibHkgbG9naWNcbuKUnOKUgOKUgCB0ZW1wbGF0ZS5odG1sICAgICAgICAgICAgICAgIyBIVE1MIHN0cnVjdHVyZSArIENTUyArIG91ciByZW5kZXJlciBKU1xu4pSU4pSA4pSAIHZlbmRvci9cbiAgICDilJzilIDilIAgbWFya2VkLm1pbi5qcyAgICAgICAgICAgIyBWZW5kb3JlZCAoY29tbWl0IHRvIHJlcG8pXG4gICAg4pSU4pSA4pSAIGhpZ2hsaWdodC5taW4uanMgICAgICAgICMgVmVuZG9yZWQgKGNvbW1pdCB0byByZXBvLCBjb21tb24gYnVuZGxlKVxuYGBgXG5cbiMjIyB0ZW1wbGF0ZS5odG1sXG5cbmBgYGh0bWxcbjwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbiAgPG1ldGEgY2hhcnNldD1cIlVURi04XCI+XG4gIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCI+XG4gIDx0aXRsZT57e1RJVExFfX08L3RpdGxlPlxuICA8c3R5bGU+XG4gICAgOnJvb3Qge1xuICAgICAge3tUSEVNRV9WQVJTfX1cbiAgICB9XG4gICAgXG4gICAgLyogU3RhdGljIENTUyB1c2luZyB2YXIoKSAtIH4yMDAgbGluZXMgKi9cbiAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgYm9keSB7IGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIC4uLjsgYmFja2dyb3VuZDogdmFyKC0tYm9keS1iZyk7IGNvbG9yOiB2YXIoLS10ZXh0KTsgfVxuICAgICNhcHAgeyBkaXNwbGF5OiBmbGV4OyB9XG4gICAgI3NpZGViYXIgeyB3aWR0aDogMjgwcHg7IC8qIHRyZWUgc3R5bGVzICovIH1cbiAgICAjY29udGVudCB7IGZsZXg6IDE7IC8qIG1lc3NhZ2Ugc3R5bGVzICovIH1cbiAgICAudXNlci1tZXNzYWdlIHsgYmFja2dyb3VuZDogdmFyKC0tdXNlck1lc3NhZ2VCZyk7IH1cbiAgICAvKiAuLi4gKi9cbiAgICBcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICNzaWRlYmFyIHsgZGlzcGxheTogbm9uZTsgfVxuICAgICAgI3NpZGViYXIub3BlbiB7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogZml4ZWQ7IC8qIC4uLiAqLyB9XG4gICAgfVxuICA8L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gIDxzY3JpcHQgaWQ9XCJzZXNzaW9uLWRhdGFcIiB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiPnt7U0VTU0lPTl9EQVRBfX08L3NjcmlwdD5cbiAgXG4gIDxkaXYgaWQ9XCJhcHBcIj5cbiAgICA8YnV0dG9uIGlkPVwic2lkZWJhci10b2dnbGVcIiBjbGFzcz1cIm1vYmlsZS1vbmx5XCI+4piwPC9idXR0b24+XG4gICAgPGFzaWRlIGlkPVwic2lkZWJhclwiPjwvYXNpZGU+XG4gICAgPG1haW4gaWQ9XCJjb250ZW50XCI+XG4gICAgICA8aGVhZGVyIGlkPVwiaGVhZGVyXCI+PC9oZWFkZXI+XG4gICAgICA8ZGl2IGlkPVwibWVzc2FnZXNcIj48L2Rpdj5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmVuZG9yZWQgbGlicyAoaW5qZWN0ZWQgYXQgZXhwb3J0IHRpbWUpIC0tPlxuICA8c2NyaXB0Pnt7TUFSS0VEX0pTfX08L3NjcmlwdD5cbiAgPHNjcmlwdD57e0hJR0hMSUdIVF9KU319PC9zY3JpcHQ+XG4gIFxuICA8IS0tIE91ciByZW5kZXJlciAtLT5cbiAgPHNjcmlwdD5cbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Vzc2lvbi1kYXRhJykudGV4dENvbnRlbnQpO1xuICAgIFxuICAgIC8vIFRyZWUgYnVpbGRpbmdcbiAgICBmdW5jdGlvbiBidWlsZFRyZWUoZW50cmllcykgeyAvKiAuLi4gKi8gfVxuICAgIGZ1bmN0aW9uIGdldFBhdGgodGFyZ2V0SWQpIHsgLyogLi4uICovIH1cbiAgICBcbiAgICAvLyBNYXJrZG93biBzZXR1cFxuICAgIG1hcmtlZC5zZXRPcHRpb25zKHtcbiAgICAgIGJyZWFrczogdHJ1ZSxcbiAgICAgIGdmbTogdHJ1ZSxcbiAgICAgIGhpZ2hsaWdodDogKGNvZGUsIGxhbmcpID0+IHtcbiAgICAgICAgaWYgKGxhbmcgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5nKSkge1xuICAgICAgICAgIHJldHVybiBobGpzLmhpZ2hsaWdodChjb2RlLCB7IGxhbmd1YWdlOiBsYW5nIH0pLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBobGpzLmhpZ2hsaWdodEF1dG8oY29kZSkudmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgLy8gTWVzc2FnZSByZW5kZXJpbmdcbiAgICBmdW5jdGlvbiByZW5kZXJFbnRyeShlbnRyeSkgeyAvKiAuLi4gKi8gfVxuICAgIGZ1bmN0aW9uIHJlbmRlclVzZXJNZXNzYWdlKG1zZykgeyAvKiAuLi4gKi8gfVxuICAgIGZ1bmN0aW9uIHJlbmRlckFzc2lzdGFudE1lc3NhZ2UobXNnKSB7IC8qIC4uLiAqLyB9XG4gICAgZnVuY3Rpb24gcmVuZGVyVG9vbENhbGwoY2FsbCwgcmVzdWx0KSB7IC8qIC4uLiAqLyB9XG4gICAgXG4gICAgLy8gVHJlZSBzaWRlYmFyICBcbiAgICBmdW5jdGlvbiByZW5kZXJTaWRlYmFyKHRyZWUpIHsgLyogLi4uICovIH1cbiAgICBcbiAgICAvLyBOYXZpZ2F0aW9uXG4gICAgbGV0IGN1cnJlbnRMZWFmSWQgPSBkYXRhLmxlYWZJZDtcbiAgICBmdW5jdGlvbiBuYXZpZ2F0ZVRvKGVudHJ5SWQpIHtcbiAgICAgIGN1cnJlbnRMZWFmSWQgPSBlbnRyeUlkO1xuICAgICAgY29uc3QgcGF0aCA9IGdldFBhdGgoZW50cnlJZCk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZXMnKS5pbm5lckhUTUwgPSBcbiAgICAgICAgcGF0aC5tYXAocmVuZGVyRW50cnkpLmpvaW4oJycpO1xuICAgICAgdXBkYXRlVHJlZUhpZ2hsaWdodChlbnRyeUlkKTtcbiAgICB9XG4gICAgXG4gICAgZnVuY3Rpb24gcmVzZXRUb0xlYWYoKSB7XG4gICAgICBuYXZpZ2F0ZVRvKGRhdGEubGVhZklkKTtcbiAgICB9XG4gICAgXG4gICAgLy8gSW5pdFxuICAgIGNvbnN0IHRyZWUgPSBidWlsZFRyZWUoZGF0YS5lbnRyaWVzKTtcbiAgICByZW5kZXJTaWRlYmFyKHRyZWUpO1xuICAgIG5hdmlnYXRlVG8oZGF0YS5sZWFmSWQpO1xuICAgIFxuICAgIC8vIE1vYmlsZSB0b2dnbGVcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lkZWJhci10b2dnbGUnKT8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lkZWJhcicpLmNsYXNzTGlzdC50b2dnbGUoJ29wZW4nKTtcbiAgICB9KTtcbiAgPC9zY3JpcHQ+XG48L2JvZHk+XG48L2h0bWw+XG5gYGBcblxuIyMjIGluZGV4LnRzXG5cbmBgYHR5cGVzY3JpcHRcbmltcG9ydCB7IHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYywgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRTdGF0ZSB9IGZyb20gXCJAYW50aHJvcGljLWFpL2FnZW50LWNvcmVcIjtcbmltcG9ydCB7IGdldEV4cG9ydFRlbXBsYXRlRGlyIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgbG9hZFRoZW1lSnNvbiB9IGZyb20gXCIuLi8uLi9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydE9wdGlvbnMge1xuICBvdXRwdXRQYXRoPzogc3RyaW5nO1xuICB0aGVtZU5hbWU/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFRoZW1lQ3NzVmFycyh0aGVtZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBqc29uID0gbG9hZFRoZW1lSnNvbih0aGVtZU5hbWUgPz8gXCJkYXJrXCIpO1xuICBjb25zdCB2YXJzID0ganNvbi52YXJzID8/IHt9O1xuICBjb25zdCBjb2xvcnMgPSBqc29uLmNvbG9ycztcbiAgXG4gIC8vIFJlc29sdmUgYW5kIGZvcm1hdCBhcyBDU1MgY3VzdG9tIHByb3BlcnRpZXNcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVDb2xvcih2YWx1ZSwgdmFycyk7XG4gICAgbGluZXMucHVzaChgLS0ke2NhbWVsVG9LZWJhYihrZXkpfTogJHtyZXNvbHZlZH07YCk7XG4gIH1cbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG4gICAgICBcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRTZXNzaW9uVG9IdG1sKFxuICBzbTogU2Vzc2lvbk1hbmFnZXIsXG4gIHN0YXRlPzogQWdlbnRTdGF0ZSxcbiAgb3B0aW9ucz86IEV4cG9ydE9wdGlvbnNcbik6IHN0cmluZyB7XG4gIGNvbnN0IHRlbXBsYXRlRGlyID0gZ2V0RXhwb3J0VGVtcGxhdGVEaXIoKTtcbiAgY29uc3QgdGVtcGxhdGUgPSByZWFkRmlsZVN5bmMoam9pbih0ZW1wbGF0ZURpciwgXCJ0ZW1wbGF0ZS5odG1sXCIpLCBcInV0Zi04XCIpO1xuICBjb25zdCBtYXJrZWRKcyA9IHJlYWRGaWxlU3luYyhqb2luKHRlbXBsYXRlRGlyLCBcInZlbmRvclwiLCBcIm1hcmtlZC5taW4uanNcIiksIFwidXRmLThcIik7XG4gIGNvbnN0IGhsanNKcyA9IHJlYWRGaWxlU3luYyhqb2luKHRlbXBsYXRlRGlyLCBcInZlbmRvclwiLCBcImhpZ2hsaWdodC5taW4uanNcIiksIFwidXRmLThcIik7XG4gIFxuICBjb25zdCBoZWFkZXIgPSBzbS5nZXRIZWFkZXIoKTtcbiAgY29uc3QgZW50cmllcyA9IHNtLmdldEVudHJpZXMoKTtcbiAgY29uc3QgbGVhZklkID0gc20uZ2V0TGVhZklkKCk7XG4gIFxuICBjb25zdCBzZXNzaW9uRGF0YSA9IHtcbiAgICBoZWFkZXIsXG4gICAgZW50cmllcyxcbiAgICBsZWFmSWQsXG4gICAgc3lzdGVtUHJvbXB0OiBzdGF0ZT8uc3lzdGVtUHJvbXB0LFxuICAgIHRvb2xzOiBzdGF0ZT8udG9vbHM/Lm1hcCh0ID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzY3JpcHRpb246IHQuZGVzY3JpcHRpb24gfSkpLFxuICB9O1xuICBcbiAgY29uc3QgdGhlbWVWYXJzID0gZ2V0VGhlbWVDc3NWYXJzKG9wdGlvbnM/LnRoZW1lTmFtZSk7XG4gIGNvbnN0IHRpdGxlID0gYFNlc3Npb24gJHtoZWFkZXI/LmlkID8/IFwiZXhwb3J0XCJ9YDtcbiAgXG4gIGNvbnN0IGh0bWwgPSB0ZW1wbGF0ZVxuICAgIC5yZXBsYWNlKFwie3tUSVRMRX19XCIsIHRpdGxlKVxuICAgIC5yZXBsYWNlKFwie3tUSEVNRV9WQVJTfX1cIiwgdGhlbWVWYXJzKVxuICAgIC5yZXBsYWNlKFwie3tTRVNTSU9OX0RBVEF9fVwiLCBKU09OLnN0cmluZ2lmeShzZXNzaW9uRGF0YSkpXG4gICAgLnJlcGxhY2UoXCJ7e01BUktFRF9KU319XCIsIG1hcmtlZEpzKVxuICAgIC5yZXBsYWNlKFwie3tISUdITElHSFRfSlN9fVwiLCBobGpzSnMpO1xuICBcbiAgY29uc3Qgb3V0cHV0UGF0aCA9IG9wdGlvbnM/Lm91dHB1dFBhdGggPz8gYHNlc3Npb24tJHtoZWFkZXI/LmlkID8/IFwiZXhwb3J0XCJ9Lmh0bWxgO1xuICB3cml0ZUZpbGVTeW5jKG91dHB1dFBhdGgsIGh0bWwsIFwidXRmLThcIik7XG4gIHJldHVybiBvdXRwdXRQYXRoO1xufVxuYGBgXG5cbiMjIyBCdWlsZCBDaGFuZ2VzXG5cbioqcGFja2FnZS5qc29uKio6XG5gYGBqc29uXG5cImNvcHktYXNzZXRzXCI6IFwibWtkaXIgLXAgZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvICYmIGNwIC1yIHNyYy9jb3JlL2V4cG9ydC1odG1sIGRpc3QvY29yZS9cIlxuYGBgXG5cbioqY29uZmlnLnRzKiogKGFkZCk6XG5gYGB0eXBlc2NyaXB0XG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhwb3J0VGVtcGxhdGVEaXIoKTogc3RyaW5nIHtcbiAgaWYgKGlzQnVuQmluYXJ5KSB7XG4gICAgcmV0dXJuIGpvaW4oZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKSwgXCJleHBvcnQtaHRtbFwiKTtcbiAgfVxuICBjb25zdCBwYWNrYWdlRGlyID0gZ2V0UGFja2FnZURpcigpO1xuICBjb25zdCBzcmNPckRpc3QgPSBleGlzdHNTeW5jKGpvaW4ocGFja2FnZURpciwgXCJzcmNcIikpID8gXCJzcmNcIiA6IFwiZGlzdFwiO1xuICByZXR1cm4gam9pbihwYWNrYWdlRGlyLCBzcmNPckRpc3QsIFwiY29yZVwiLCBcImV4cG9ydC1odG1sXCIpO1xufVxuYGBgXG5cbiMjIyBXaGF0IEdldHMgRGVsZXRlZFxuXG5UaGUgZW50aXJlIGN1cnJlbnQgYGV4cG9ydC1odG1sLnRzYCAoMTQzMiBsaW5lcykgZ2V0cyByZXBsYWNlZCBieTpcbi0gYGluZGV4LnRzYCAofjgwIGxpbmVzKVxuLSBgdGVtcGxhdGUuaHRtbGAgKH40MDAgbGluZXMgaW5jbHVkaW5nIENTUyBhbmQgSlMpXG4tIFR3byB2ZW5kb3JlZCBmaWxlcyAoc3RhdGljLCBub3Qgb3VyIGNvZGUpXG5cbiMjIyBGZWF0dXJlcyBDb3ZlcmVkXG5cbnwgUmVxdWlyZW1lbnQgfCBIb3cgfFxufC0tLS0tLS0tLS0tLS18LS0tLS18XG58ICMzNzUgVHJlZSBzaWRlYmFyIHwgU2lkZWJhciB3aXRoIHRyZWUsIGNsaWNrIHRvIG5hdmlnYXRlLCBcInJlc2V0IHRvIGxlYWZcIiBidXR0b24gfFxufCAjMzgwIC9zaGFyZSB8IFNlbGYtY29udGFpbmVkIEhUTUwgd29ya3Mgd2l0aCBnaXN0IHxcbnwgIzM4NyBUaGVtZSBvdmVycmlkZXMgfCBBbGwgY29sb3JzIGFyZSBDU1MgdmFycyBmcm9tIHRoZW1lLnRzIHxcbnwgQ2xlYW51cCB8IFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZW1lcywgdXNlcyBTZXNzaW9uTWFuYWdlciB8XG5cbi0tLVxuXG5SZWFkeSB0byBpbXBsZW1lbnQ/In1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MjQzNiwiY2FjaGVSZWFkIjo2MTYyNSwiY2FjaGVXcml0ZSI6NDgwLCJ0b3RhbFRva2VucyI6NjQ1NDksImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wNjA5LCJjYWNoZVJlYWQiOjAuMDMwODEyNSwiY2FjaGVXcml0ZSI6MC4wMDMsInRvdGFsIjowLjA5NDc1MjV9fSwic3RvcFJlYXNvbiI6InN0b3AiLCJ0aW1lc3RhbXAiOjE3NjcyMzIxNjQyMDN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI1YTY4OTQ5NiIsInBhcmVudElkIjoiOGQyMzBlZjEiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUwOjQyLjQwNloiLCJtZXNzYWdlIjp7InJvbGUiOiJ1c2VyIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoieWVzLCBjcmVhdGUgYSBsb2NhbCBleHBvcnQtaHRtbCBicmFuY2gsIGFuZCBpbXBsZW1lbnQgaW4gdGhlcmUuIHRoaW5rIHlvdSBjYW4gZG8gdGhpcyB3aXRoaW4gdGhlIHJlbWFpbmluZyBjb250ZXh0IHNwYWNlPyA3MCUgb2YgMjAwayB0b2tlbnMifV0sInRpbWVzdGFtcCI6MTc2NzIzMjI0MjQwMn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjA5ZWRlMTNlIiwicGFyZW50SWQiOiI1YTY4OTQ5NiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTA6NDguNDc3WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiVGhlIHVzZXIgd2FudHMgbWUgdG8gY3JlYXRlIGEgYnJhbmNoIGFuZCBpbXBsZW1lbnQgdGhlIGZ1bGwgZXhwb3J0LWh0bWwgcmV3cml0ZS4gSSBoYXZlIGFib3V0IDcwJSBvZiAyMDBrIHRva2VucyByZW1haW5pbmcsIHNvIGFib3V0IDE0MGsgdG9rZW5zLiBUaGlzIHNob3VsZCBiZSBlbm91Z2ggdG8gaW1wbGVtZW50OlxuXG4xLiBDcmVhdGUgYnJhbmNoXG4yLiBEb3dubG9hZC92ZW5kb3IgbWFya2VkLm1pbi5qcyBhbmQgaGlnaGxpZ2h0Lm1pbi5qc1xuMy4gQ3JlYXRlIHRlbXBsYXRlLmh0bWwgd2l0aCBDU1MsIEpTIGZvciB0cmVlL3JlbmRlcmluZ1xuNC4gQ3JlYXRlIG5ldyBpbmRleC50c1xuNS4gVXBkYXRlIGNvbmZpZy50cyB3aXRoIGdldEV4cG9ydFRlbXBsYXRlRGlyKClcbjYuIFVwZGF0ZSBwYWNrYWdlLmpzb24gY29weS1hc3NldHNcbjcuIERlbGV0ZSBvbGQgZXhwb3J0LWh0bWwudHNcbjguIFJ1biBucG0gcnVuIGNoZWNrIHRvIHZlcmlmeVxuXG5MZXQgbWUgc3RhcnQuIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFb2tGQ2tZSUN4Z0NLa0FqTVRvS2JYeVZQS29yZWVRK01QSm95WUdhVEZXZVRlY2hUa0JsaUJCaUs0TnpxR2s3a0h1UGx6Y0NjZnFYZGVrZDZ2NnZHSXVscWtMbVAydDQ1dHQzRWd6REpFZkhzSzhtNUhYblMrd2FEUGdXODQrMjB5VXlsaFQ4ZXlJd3doS1o0Y1ozWDVRaFZFelN5SitwZXMvcU4vTGhHbjRjaVFtTU04eEhXOTNZRFA2TkNENzlTNEtVdnBhbmlxQkJLdkFEYXgwVHJjcWFoVEcwVmhtZ0trL2krUzcwUlp3RXhicnlET2tzSWRCclBFM01JYmNiK2N6cnhFMnFnQThhU0s3VzZ0dTJXWkZESlBxS3dTMjBmMWtUSW9oK0tnMXBoeC9WNXFyQ1JmQ1JhL2toNmNHc25qSWR3dEdTRXgwYWZ3aDIrZGN2SHlZUTZ1cDRPYUk1eTBwRUp0dUVnL2kzRWFxL2xBR2VTNjJ0elhVT1BWOFNVK1UwaXYvaVJUQmJURThHRDlHVU1kSVd1ODl1cFYyc0dHWkU0MUVvWDJ0cm9Ba2pObXdvTm13dXBZZEZpNGdjYXVlaWltdEd0cDM1bUZhcmFMNnl0UGlWRHppdjcrQmlBaHNqVUNtSFBUTktPVUF6VGJJNmRtdkpKd25hVlBNUG9nTFp5SVZtQXFxWlIvT0NqdnJId3lZOFBTVFk5K1cwL24xRk05czFSZ0tFd3lwSkU4NEhaQS9UeEY3akxBZ1hKTGdQZytxNE9IREFhZVhPVVJyS2Q4UGxaL0c0aWlid1FzUE1FSm1WRzI4V1haN3RNMWpZKy8wbFVaQUNxWW42Y1lUYkVobGR5OFEyNG5FbFB3bTFETUhhelU5RDkyM2oralRncGFYUGVUTGpFSEtJWDZQMm5qZGxPTk8rUVo4c0RzaVFYcElRelVOeTlkL1ducGs3UzFDSHpXRi9ZM2lxS3o0UkNyK01NdGxKa1NPemljdnJ6L3BrSCsva05KUGVZUGN4bkhOaDcwblRoUmlXUzRGbk93N3M3NVNhU2p1NnN0UnN3c0s0V0swRkxpS0pKQ0JVeU9JWm9QdGwwK0VJRFFBbmVkM1gxai9OYVI3M0pRSWU5dWUrTVpqbGQzUlJDS1grcFJnQiJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiWWVzLCBsZXQncyBkbyBpdC4ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFZOXFlNFdRb3FnY044ZnhnbUM0V3pXIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNkIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8gJiYgZ2l0IGNoZWNrb3V0IC1iIGV4cG9ydC1odG1sIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0IjoxMCwib3V0cHV0IjoyMjgsImNhY2hlUmVhZCI6NjIxMDUsImNhY2hlV3JpdGUiOjI0NzYsInRvdGFsVG9rZW5zIjo2NDgxOSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNSwib3V0cHV0IjowLjAwNTcsImNhY2hlUmVhZCI6MC4wMzEwNTI1LCJjYWNoZVdyaXRlIjowLjAxNTQ3NTAwMDAwMDAwMDAwMSwidG90YWwiOjAuMDUyMjc3NTAwMDAwMDAwMDA1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjQyNDA0fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMGVlZTJjNzUiLCJwYXJlbnRJZCI6IjA5ZWRlMTNlIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MDo0OC41MzdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVk5cWU0V1FvcWdjTjhmeGdtQzRXelciLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJ2V4cG9ydC1odG1sJ1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMjQ4NTM3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNjUyOWJjYWYiLCJwYXJlbnRJZCI6IjBlZWUyYzc1IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MDo1NC43OTFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJHb29kLCBicmFuY2ggY3JlYXRlZC4gTm93IGxldCBtZTpcbjEuIENyZWF0ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZVxuMi4gRG93bmxvYWQgdmVuZG9yZWQgbGlicmFyaWVzXG4zLiBDcmVhdGUgdGVtcGxhdGUuaHRtbFxuNC4gQ3JlYXRlIGluZGV4LnRzXG41LiBVcGRhdGUgY29uZmlnLnRzXG42LiBVcGRhdGUgcGFja2FnZS5qc29uXG43LiBSZW1vdmUgb2xkIGV4cG9ydC1odG1sLnRzXG44LiBUZXN0IHdpdGggbnBtIHJ1biBjaGVjayIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXBRRENrWUlDeGdDS2tCNUx1d0VMUXVNZmFXMk9oa0RKbDVac1pDS3hLQjdjRGJ0bjNYMzVYV3NwNXhiWkt4Vk9JbHpHbWZza1Jmc2JsaXBJeE42WnlQcU9oRGxrOFBuVGJmcUVnekthcEZIeWgwNWx0OEhtZDhhREdpTXp3TDcvQlVsK3MrRE1pSXdCeEVweFhLTmNHYmxTUFRZU3hZOTZpYmZlYkdiUmRqRFBpRWZ1aXJUa3E5VjVEMFBZMWtOT0UvMENOTGlXTEk3S3ZzQjRwSUlSalMrSkc5MDF3WElHRnNYR3dBb1FZS1ZQK0tuM0xIN0RqOTBaVi9XN2pqUUl4MkUzUGx5TCtmVEVoOVZMZGRmamtUcTVQYmpYWmZQWmRIdGtEc1E4Q0RTSzFJUVQ2bnNKaUdHaHBGeXZTZWhuTzVWUWk0MVdSWUN3YjJYSmthaXNDbUI0VUw3dzNEZUorQlVwdldVeGR1T0o3aVZhUVQrQ3d6eUxEbFRJSGNMaHRkdjhGSmJwQURQZGYvbHQ5M05BWjE2M21VTURKSGdJbkQzd016VTNkVFdMTldWSjhra3VBanhkKzVtcHZSODVQaGo4dE5WMjhtQThWNWJaUXVKL3U3ZlBCdlBaeVRqSE4rUjNFR2d3c0pJRzV6K3NXTDZ3bTQvSm80cEpNTUpDUUlGNXoxbGRsdENoVkJUMFFJQVRZNGdiRVdqQjBzWUFRPT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDEyaGV0TVl0N1RXMUpCcHJHazdZU0NaIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6Im1rZGlyIC1wIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IifX0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxTWg4SlFYaFZyQUcxS1BqSzRLd0hVbyIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiIjIERvd25sb2FkIHZlbmRvcmVkIGxpYnJhcmllc1xuY3VybCAtcyBcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbWFya2VkQDE1LjAuNC9tYXJrZWQubWluLmpzXCIgLW8gcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci9tYXJrZWQubWluLmpzXG5jdXJsIC1zIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGlnaGxpZ2h0LmpzLzExLjkuMC9oaWdobGlnaHQubWluLmpzXCIgLW8gcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci9oaWdobGlnaHQubWluLmpzXG5cbiMgQ2hlY2sgc2l6ZXNcbndjIC1jIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvKi5qcyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjozMjIsImNhY2hlUmVhZCI6NjQ1ODEsImNhY2hlV3JpdGUiOjI1NiwidG90YWxUb2tlbnMiOjY1MTY3LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA4MDUsImNhY2hlUmVhZCI6MC4wMzIyOTA1LCJjYWNoZVdyaXRlIjowLjAwMTYsInRvdGFsIjowLjA0MTk4MDV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzIyNDg1Mzd9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIyMWJlY2Q4OCIsInBhcmVudElkIjoiNjUyOWJjYWYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUwOjU0Ljc5OFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxMmhldE1ZdDdUVzFKQnByR2s3WVNDWiIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IihubyBvdXRwdXQpIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMjU0Nzk3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZmIyZjRlOGYiLCJwYXJlbnRJZCI6IjIxYmVjZDg4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MDo1NS4wMDVaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMU1oOEpRWGhWckFHMUtQaks0S3dIVW8iLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDEyMTcyNyBwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yL2hpZ2hsaWdodC5taW4uanNcbiAgIDM5MDU1IHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvbWFya2VkLm1pbi5qc1xuICAxNjA3ODIgdG90YWxcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjI1NTAwNX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImY1ZTQ2OGE2IiwicGFyZW50SWQiOiJmYjJmNGU4ZiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTA6NTkuMjk5WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiR29vZCwgdmVuZG9yZWQgbGlicmFyaWVzIGRvd25sb2FkZWQuIE5vdyBsZXQgbWUgY2hlY2sgd2hhdCBsb2FkVGhlbWVKc29uIGV4cG9ydHMgZnJvbSB0aGVtZS50cyB0byB1bmRlcnN0YW5kIGhvdyB0byBpbXBvcnQgaXQgcHJvcGVybHkuIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFckFDQ2tZSUN4Z0NLa0ErWFpDUlN3SkFkSGhrZnZ5MG5WMFc4bmpxVFJtK3JudTFpY1ZCRytLbEtVcExhSTNCU2JUNDJmQ3RCbjBXM1NPYXRTQjJ1a0t2WmxmZFdzSXd0QldaRWd6YktrZGppZyt6UXkvSEtLRWFEUEpxR0dPQU1mNzlxdklrN1NJd3N0RlpEc3BWUVAvSVU1T1htcm43MTB0L2NmZGFzNkJ4VkMwT3l5T3JFNjJBSTRVZmRXdjhxbWNnd2ZIaFhEUElLcGNCWHpIRjQrbWNFeERNYjluOEg3cTVabVQ1QjBEVGRvcGtzN1BoMVpWV21mRWNDdUpka1JJRzIzMmpuUmw5WnhBYWhsMGh5dm1BL0NjQTVMNDBveDY2b3FwRFVsdzM3ZzArVGpON3M1djh5N3hHS3VIZmtuVjVwK1dxRUhXbFNaSGxnSjJRdnozZ0JVK3VsaGV4SDl1aTdRcmJTNmxacnIyQi9xb3RNTlE5bXhFTXYvWU5Lajh4bHJqZ2lyUDZ1dENQMmZsTXJ6VGhueGdCIn0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxNVBFYXBWcTQzczk4N3phWTNSdjdFSiIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIFwiXmV4cG9ydFwiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUudHMgfCBoZWFkIC0yMCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMTMsImNhY2hlUmVhZCI6NjQ4MzcsImNhY2hlV3JpdGUiOjQ0MywidG90YWxUb2tlbnMiOjY1NDAxLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyODI1MDAwMDAwMDAwMDAwMywiY2FjaGVSZWFkIjowLjAzMjQxODQ5OTk5OTk5OTk5NiwiY2FjaGVXcml0ZSI6MC4wMDI3Njg3NSwidG90YWwiOjAuMDM4MDUyMjQ5OTk5OTk5OTk2fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjU1MDA2fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZTY5Y2Y4ZmUiLCJwYXJlbnRJZCI6ImY1ZTQ2OGE2IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MDo1OS4zMTZaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTVQRWFwVnE0M3M5ODd6YVkzUnY3RUoiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJleHBvcnQgdHlwZSBUaGVtZUNvbG9yID1cbmV4cG9ydCB0eXBlIFRoZW1lQmcgPVxuZXhwb3J0IGNsYXNzIFRoZW1lIHtcbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVUaGVtZXMoKTogc3RyaW5nW10ge1xuZXhwb3J0IGxldCB0aGVtZTogVGhlbWU7XG5leHBvcnQgZnVuY3Rpb24gaW5pdFRoZW1lKHRoZW1lTmFtZT86IHN0cmluZywgZW5hYmxlV2F0Y2hlcjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG5leHBvcnQgZnVuY3Rpb24gc2V0VGhlbWUobmFtZTogc3RyaW5nLCBlbmFibGVXYXRjaGVyOiBib29sZWFuID0gZmFsc2UpOiB7IHN1Y2Nlc3M6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0ge1xuZXhwb3J0IGZ1bmN0aW9uIG9uVGhlbWVDaGFuZ2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbmV4cG9ydCBmdW5jdGlvbiBzdG9wVGhlbWVXYXRjaGVyKCk6IHZvaWQge1xuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodENvZGUoY29kZTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nW10ge1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmd1YWdlRnJvbVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25UaGVtZSgpOiBNYXJrZG93blRoZW1lIHtcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RMaXN0VGhlbWUoKTogU2VsZWN0TGlzdFRoZW1lIHtcbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JUaGVtZSgpOiBFZGl0b3JUaGVtZSB7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ3NMaXN0VGhlbWUoKTogaW1wb3J0KFwiQG1hcmlvemVjaG5lci9waS10dWlcIikuU2V0dGluZ3NMaXN0VGhlbWUge1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMjU5MzE1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZTMyZjcxY2QiLCJwYXJlbnRJZCI6ImU2OWNmOGZlIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MTowMy44MjFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJgbG9hZFRoZW1lSnNvbmAgaXMgbm90IGV4cG9ydGVkLiBJIG5lZWQgdG8gZWl0aGVyOlxuMS4gRXhwb3J0IGl0IGZyb20gdGhlbWUudHNcbjIuIER1cGxpY2F0ZSB0aGUgbG9naWMgaW4gZXhwb3J0LWh0bWxcblxuTGV0IG1lIGNoZWNrIHdoYXQgbG9hZFRoZW1lSnNvbiBkb2VzIGFuZCBzZWUgaWYgSSBjYW4gcmV1c2UgaXQgYnkgZXhwb3J0aW5nIGl0LiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXVzQ0NrWUlDeGdDS2tDZ2MrZllPYm14ZVFjVVlwRE9GT3VsSTd1bmV6eVNvbDhTa0ZJaGpadFp6cHR5V05HaDBsVlNoOGgxTTVYYTRNaHhXTlVHSmU2bnhudDI3a29JcVM5ZkVnenhyRVp0ODBiZSt3Wk9LeE1hRE9odVJXSzNQYlc0RVkwWVJDSXdVVlN5STNDQkZGMWZsbUhVSncxTnJPc2tTQVpTYWpqazNVZ1RPYTJPZ2RXakZwOG9Ld3FMYi9tWjhBWG1QZDFaS3RJQmFoNWRIWW9VS0V1UEc2ZmZQdHEvaGVhSVpFaC91SkIyRmcvdmRsNEMxYTFKZENlMEFzbTdXdm96QkllTlhkUDBNdm5sUkpMaElyZ1hsRmdLb0xMOTRLNXhJbDdMbm9vdEwwK3BwczZHcGpkTjNRaUF3WjlOWlJKY1dWQy9CVUZOVDNUTmt3cHNERjBCWFhQLys3Ung5Z2E4WjlKb1kvZmdwNWdObG1rcHlwY251cjBmUk9nT1gxbng2Y1p3WHlmUWh4N0hMR20xbDNEK1E1b0dvSGNnRE5aVjdJZVUra245L0QwNEVUb2JNVXhSWFR5K3gwVTRjY2pKUnRoejBXUStUalg1cG5WOW9kZ242RFl1UCt5RFd1MkRHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxQThmUW5ZanNpV3V0cms3dXJlZVI4ZyIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIC1BMzAgXCJeZnVuY3Rpb24gbG9hZFRoZW1lSnNvblwiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUudHMifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTQ2LCJjYWNoZVJlYWQiOjY1MjgwLCJjYWNoZVdyaXRlIjozNTksInRvdGFsVG9rZW5zIjo2NTc5MywiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMzY1LCJjYWNoZVJlYWQiOjAuMDMyNjM5OTk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwMjI0Mzc1LCJ0b3RhbCI6MC4wMzg1NzM3NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjI1OTMxN319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjcyODIwMmFmIiwicGFyZW50SWQiOiJlMzJmNzFjZCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTE6MDMuODM3WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFBOGZRbllqc2lXdXRyazd1cmVlUjhnIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gbG9hZFRoZW1lSnNvbihuYW1lOiBzdHJpbmcpOiBUaGVtZUpzb24ge1xuXHRjb25zdCBidWlsdGluVGhlbWVzID0gZ2V0QnVpbHRpblRoZW1lcygpO1xuXHRpZiAobmFtZSBpbiBidWlsdGluVGhlbWVzKSB7XG5cdFx0cmV0dXJuIGJ1aWx0aW5UaGVtZXNbbmFtZV07XG5cdH1cblx0Y29uc3QgY3VzdG9tVGhlbWVzRGlyID0gZ2V0Q3VzdG9tVGhlbWVzRGlyKCk7XG5cdGNvbnN0IHRoZW1lUGF0aCA9IHBhdGguam9pbihjdXN0b21UaGVtZXNEaXIsIGAke25hbWV9Lmpzb25gKTtcblx0aWYgKCFmcy5leGlzdHNTeW5jKHRoZW1lUGF0aCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFRoZW1lIG5vdCBmb3VuZDogJHtuYW1lfWApO1xuXHR9XG5cdGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmModGhlbWVQYXRoLCBcInV0Zi04XCIpO1xuXHRsZXQganNvbjogdW5rbm93bjtcblx0dHJ5IHtcblx0XHRqc29uID0gSlNPTi5wYXJzZShjb250ZW50KTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSB0aGVtZSAke25hbWV9OiAke2Vycm9yfWApO1xuXHR9XG5cdGlmICghdmFsaWRhdGVUaGVtZUpzb24uQ2hlY2soanNvbikpIHtcblx0XHRjb25zdCBlcnJvcnMgPSBBcnJheS5mcm9tKHZhbGlkYXRlVGhlbWVKc29uLkVycm9ycyhqc29uKSk7XG5cdFx0Y29uc3QgbWlzc2luZ0NvbG9yczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBvdGhlckVycm9yczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3QgZSBvZiBlcnJvcnMpIHtcblx0XHRcdC8vIENoZWNrIGZvciBtaXNzaW5nIHJlcXVpcmVkIGNvbG9yIHByb3BlcnRpZXNcblx0XHRcdGNvbnN0IG1hdGNoID0gZS5wYXRoLm1hdGNoKC9eXFwvY29sb3JzXFwvKFxcdyspJC8pO1xuXHRcdFx0aWYgKG1hdGNoICYmIGUubWVzc2FnZS5pbmNsdWRlcyhcIlJlcXVpcmVkXCIpKSB7XG5cdFx0XHRcdG1pc3NpbmdDb2xvcnMucHVzaChtYXRjaFsxXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdGhlckVycm9ycy5wdXNoKGAgIC0gJHtlLnBhdGh9OiAke2UubWVzc2FnZX1gKTtcblx0XHRcdH1cblx0XHR9XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIyNjM4MzZ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJjYmMyZmViYSIsInBhcmVudElkIjoiNzI4MjAyYWYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUxOjA3LjQ5MVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkkgbmVlZCB0byBleHBvcnQgYGxvYWRUaGVtZUpzb25gIGFuZCB0aGUgYHJlc29sdmVUaGVtZUNvbG9yc2AgZnVuY3Rpb24uIExldCBtZSBhbHNvIGxvb2sgYXQgcmVzb2x2ZVRoZW1lQ29sb3JzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXBjQ0NrWUlDeGdDS2tBTVA2QllTRk1CSnVrTkg3OVhXcXBqazVOcHpFVVltekQrM1JJWTQydlBUUExrOVBWdW91a2ZhQlpvazdjSlJUWE80cWk2bXk4cFdsL2ZWcVZQYWw5SUVneFltejF4Um9nRkFxTFpIQm9hREk1eTZ6QTVzMVpkcTRiakppSXdEUTlJcHVlUlFtckcxbU82MVl5WmpJQmIvL1EvNktaSUwvN0kyemxsS09hRTNDT2tjdzNnL1BjSGNGUzlIYUI0S24rQjQ5VEtuRkRhUnFTbno0SGFkRzROYVEwejE2Sm41MVlVUEQwWTdxWGgyWm1wazBTa0lxZythOFV4ZkhZRWl0T0h6bHpFMGJlbUhhR3E2bldHMjRUeVpacWhYcW5oTGRpdlZGOHFOOGN6eDFlazUycDEwS2tnNmNucWN3Mmx1UHl4eFlLdkpsRnZSWWhCOWkyU3h0Y0NwY285MFJVTWw0YzhmeVBIWUVyL0dBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFOdVgyenozWmk0VHJKd2oyTXBybUs3IiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdyZXAgLUIyIC1BMTUgXCJeZnVuY3Rpb24gcmVzb2x2ZVRoZW1lQ29sb3JzXCIgcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS50cyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMjUsImNhY2hlUmVhZCI6NjU2MzksImNhY2hlV3JpdGUiOjUxNSwidG90YWxUb2tlbnMiOjY2Mjg3LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzMTI1LCJjYWNoZVJlYWQiOjAuMDMyODE5NSwiY2FjaGVXcml0ZSI6MC4wMDMyMTg3NTAwMDAwMDAwMDAzLCJ0b3RhbCI6MC4wMzkyMDMyNX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjI2MzgzOH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImM0NDM2ZGQ1IiwicGFyZW50SWQiOiJjYmMyZmViYSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTE6MDcuNTA2WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFOdVgyenozWmk0VHJKd2oyTXBybUs3IiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifVxuXG5mdW5jdGlvbiByZXNvbHZlVGhlbWVDb2xvcnM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIENvbG9yVmFsdWU+Pihcblx0Y29sb3JzOiBULFxuXHR2YXJzOiBSZWNvcmQ8c3RyaW5nLCBDb2xvclZhbHVlPiA9IHt9LFxuKTogUmVjb3JkPGtleW9mIFQsIHN0cmluZyB8IG51bWJlcj4ge1xuXHRjb25zdCByZXNvbHZlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb2xvcnMpKSB7XG5cdFx0cmVzb2x2ZWRba2V5XSA9IHJlc29sdmVWYXJSZWZzKHZhbHVlLCB2YXJzKTtcblx0fVxuXHRyZXR1cm4gcmVzb2x2ZWQgYXMgUmVjb3JkPGtleW9mIFQsIHN0cmluZyB8IG51bWJlcj47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRoZW1lIENsYXNzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjbGFzcyBUaGVtZSB7XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIyNjc1MDV9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI2MmFlMDBkOCIsInBhcmVudElkIjoiYzQ0MzZkZDUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUxOjE1LjU2NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkkgbmVlZCB0byBleHBvcnQgYm90aCBgbG9hZFRoZW1lSnNvbmAgYW5kIGByZXNvbHZlVGhlbWVDb2xvcnNgLiBMZXQgbWUgYWxzbyBjaGVjayBpZiB0aGVyZSdzIGEgYENvbG9yVmFsdWVgIHR5cGUgSSBuZWVkIHRvIGV4cG9ydC5cblxuQWN0dWFsbHksIGxldCBtZSB0aGluayBhYm91dCB0aGlzLiBUaGUgdGhlbWUudHMgYWxyZWFkeSBoYXMgbG9naWMgdG8gcmVzb2x2ZSB0aGVtZSBjb2xvcnMuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhvc2UgZnVuY3Rpb25zIGFyZW4ndCBleHBvcnRlZC4gSSBzaG91bGQ6XG5cbjEuIEV4cG9ydCBgbG9hZFRoZW1lSnNvbmAgXG4yLiBFeHBvcnQgYHJlc29sdmVUaGVtZUNvbG9yc2BcblxuT3IsIEkgY291bGQgY3JlYXRlIGEgc2ltcGxlciBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGJvdGggYW5kIGV4cG9ydCBpdCBhcyBhIG5ldyBmdW5jdGlvbiBzcGVjaWZpY2FsbHkgZm9yIEhUTUwgZXhwb3J0LiBTb21ldGhpbmcgbGlrZTpcblxuYGBgdHlwZXNjcmlwdFxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+IHtcbiAgY29uc3QganNvbiA9IGxvYWRUaGVtZUpzb24odGhlbWVOYW1lKTtcbiAgcmV0dXJuIHJlc29sdmVUaGVtZUNvbG9ycyhqc29uLmNvbG9ycywganNvbi52YXJzKTtcbn1cbmBgYFxuXG5MZXQgbWUgYWRkIHRoaXMgZXhwb3J0IHRvIHRoZW1lLnRzIGFuZCB0aGVuIHVzZSBpdCBpbiBleHBvcnQtaHRtbC4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVwSUhDa1lJQ3hnQ0trQzJCRlJyOHBRSm5qaXUyY2tJZXUyek9mSWRUdzRIRldGK3FDd0pPb1VvUFdJZ1IxNjVSRGJqc3J3WDZtYUk5ck5WY3FXS1lkVjVvOUMyOXdYSWVNNGpFZ3llT2RyOHJyc2pWUjNtYkJvYURBVEtwdzdzcUhYOWdvVzg5U0l3bHFiRHZJNG92ZlRRcmVzYWF2TlgzTWpiTjdXNlpqSm5mOVpZRlM4bnlkb0luSDh0d0pRSzdzcjc5MWNaR0lYbEt2a0Z6MmNvQzF4TGJZenRhdmFnU1h2Q2Ryam5XczUyeTExeE9wRkY2eE1tYnJhZmRRMVZoVGpjSmhUb3V6WTFXbWRCZ0U1SWVKOS9ZQzBtNisyKzhsK3lZdHV3Rkd4VVNrWlRxSFJ2NjJaU2hza0IwWjJhTjZYY2oyNzBYd3B1a2Q0NUY3aG1WQXBwM0U3N2E1WWNodFdTNFNOaUdZY2o0dXBEU2pkVHN1MDJ5Z1VGUEREUWRGKzViTGZVSTRBSCt6SnlhTHMyN29DYkVRVVlvSnBpUW1PbWF0cm9weTFVbzZMcWlhaWVBTHdDeGFDU2hXdHdYMkd3cGVGUDg1S1BrbjBIdUlKcm1VdzRGUW4zM1FXOS9JQnV3VWV5QVNrem9INVpPYnV5aGVIN0xDV2JpN3BNSWQyZTgvU1Z6N2lCLzFUTUtFUUg4bTVmQ0lTdG1oNnZXWi85ck5zbFEwTTZ5NjZuQmtsWVBZSFJZelB3eXN3eE0wYlllY3Z5ZDFzc0pLVnNxbzZFUGFseko3bnlGUzBmVCtZcktYaXNNc2pzOEZxM1JhRG5KeEUvWTNrN0FoQjdmbGhLTWVqcTBReWQyVjFpb3pSY010R09oUGJhajh0c1dGWmV3NVNGWDJQTkFzQ0JSMVJ6SkRueWVMaDE2NitqTjA1V2FDLzljdmhIanBZOVBSMDhxWWJrT2h4YzRvSkdkVzFKOGVZUFpNYUpRT2FnSDk4bVNZaWgxNTNVbXN2V05QY0FIL0oyamdWckJCYkJXZlR2TUhXd2VIc0c2REhuRTAzSUVwMHYyek5CS2k4b0wyL1dEdEZHMFRrNThxcytnWEQwK3ByQ3NoL04wOXE2MEwrUkExMTFVV2c5OHZUWXlDMnJLWmFOdnFrYVBudnhyZlhRd1FIS01Jb2VSL3dLRndLdWhyS00xd3ZvNlNDVkVubXVQbWVpQnk0ODFPM3llcjZTU0JmdGgzZDl5ejNybS9pSXlLSlVFMWhNYStrTE9CSE1Fb0VqYTZlTlJsMDhmdGNGV1JDR2pVUmJQaFAzZ2Ntamx4RVZxYXRIYTlMdVk0RzByVHp1WWdscTFySUlDYk83ZmhSVElxaWs4WGhnNktxbHBjTTdhazlRTkVVUnBzWGxieGVCeVJ3bjdXOHJrY3c3V042eWlEenk1WDVYUDczS2ZsMFZBcU1rWEVrbTJuZC9nYUIxWHcxeVgvMXpoRHp6azNMSlozcHo5WWFrWVRxZUVEOGJZTW42NU5VTlZ4QmxLTGpCbk1oWnV2TklEa1hHQmkyeVFsZHFZcDhMdW92QiszYk91YVAwTThoOE16aVBRTWxmR29LTjA5WWw1bk1DclQ4WUFRPT0ifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkxldCBtZSBhZGQgZXhwb3J0cyB0byB0aGVtZS50cyBmb3IgdGhlIEhUTUwgZXhwb3J0IHRvIHVzZToifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDE4akxoc2hwZHAxdXZCajJqbkpxN2hSIiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS50cyIsIm9mZnNldCI6MSwibGltaXQiOjUwfX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MzQyLCJjYWNoZVJlYWQiOjY2MTU0LCJjYWNoZVdyaXRlIjoyODYsInRvdGFsVG9rZW5zIjo2Njc5MCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwODU1LCJjYWNoZVJlYWQiOjAuMDMzMDc2OTk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwMTc4NzUsInRvdGFsIjowLjA0MzQ1NDQ5OTk5OTk5OTk5fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjY3NTA3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYTRlNzg5ZjIiLCJwYXJlbnRJZCI6IjYyYWUwMGQ4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MToxNS41NzdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMThqTGhzaHBkcDF1dkJqMmpuSnE3aFIiLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJpbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IEVkaXRvclRoZW1lLCBNYXJrZG93blRoZW1lLCBTZWxlY3RMaXN0VGhlbWUgfSBmcm9tIFwiQG1hcmlvemVjaG5lci9waS10dWlcIjtcbmltcG9ydCB7IHR5cGUgU3RhdGljLCBUeXBlIH0gZnJvbSBcIkBzaW5jbGFpci90eXBlYm94XCI7XG5pbXBvcnQgeyBUeXBlQ29tcGlsZXIgfSBmcm9tIFwiQHNpbmNsYWlyL3R5cGVib3gvY29tcGlsZXJcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGhpZ2hsaWdodCwgc3VwcG9ydHNMYW5ndWFnZSB9IGZyb20gXCJjbGktaGlnaGxpZ2h0XCI7XG5pbXBvcnQgeyBnZXRDdXN0b21UaGVtZXNEaXIsIGdldFRoZW1lc0RpciB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcuanNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHlwZXMgJiBTY2hlbWFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgQ29sb3JWYWx1ZVNjaGVtYSA9IFR5cGUuVW5pb24oW1xuXHRUeXBlLlN0cmluZygpLCAvLyBoZXggXCIjZmYwMDAwXCIsIHZhciByZWYgXCJwcmltYXJ5XCIsIG9yIGVtcHR5IFwiXCJcblx0VHlwZS5JbnRlZ2VyKHsgbWluaW11bTogMCwgbWF4aW11bTogMjU1IH0pLCAvLyAyNTYtY29sb3IgaW5kZXhcbl0pO1xuXG50eXBlIENvbG9yVmFsdWUgPSBTdGF0aWM8dHlwZW9mIENvbG9yVmFsdWVTY2hlbWE+O1xuXG5jb25zdCBUaGVtZUpzb25TY2hlbWEgPSBUeXBlLk9iamVjdCh7XG5cdCRzY2hlbWE6IFR5cGUuT3B0aW9uYWwoVHlwZS5TdHJpbmcoKSksXG5cdG5hbWU6IFR5cGUuU3RyaW5nKCksXG5cdHZhcnM6IFR5cGUuT3B0aW9uYWwoVHlwZS5SZWNvcmQoVHlwZS5TdHJpbmcoKSwgQ29sb3JWYWx1ZVNjaGVtYSkpLFxuXHRjb2xvcnM6IFR5cGUuT2JqZWN0KHtcblx0XHQvLyBDb3JlIFVJICgxMCBjb2xvcnMpXG5cdFx0YWNjZW50OiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdGJvcmRlcjogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRib3JkZXJBY2NlbnQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Ym9yZGVyTXV0ZWQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0c3VjY2VzczogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHRlcnJvcjogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR3YXJuaW5nOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdG11dGVkOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdGRpbTogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR0ZXh0OiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRoaW5raW5nVGV4dDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHQvLyBCYWNrZ3JvdW5kcyAmIENvbnRlbnQgVGV4dCAoMTEgY29sb3JzKVxuXHRcdHNlbGVjdGVkQmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dXNlck1lc3NhZ2VCZzogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR1c2VyTWVzc2FnZVRleHQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Y3VzdG9tTWVzc2FnZUJnOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdGN1c3RvbU1lc3NhZ2VUZXh0OiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdGN1c3RvbU1lc3NhZ2VMYWJlbDogQ29sb3JWYWx1ZVNjaGVtYSxcblx0XHR0b29sUGVuZGluZ0JnOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRvb2xTdWNjZXNzQmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dG9vbEVycm9yQmc6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0dG9vbFRpdGxlOiBDb2xvclZhbHVlU2NoZW1hLFxuXHRcdHRvb2xPdXRwdXQ6IENvbG9yVmFsdWVTY2hlbWEsXG5cdFx0Ly8gTWFya2Rvd24gKDEwIGNvbG9ycylcblxuWzc5MSBtb3JlIGxpbmVzIGluIGZpbGUuIFVzZSBvZmZzZXQ9NTEgdG8gY29udGludWVdIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMjc1NTY5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMDRmOTBiMzAiLCJwYXJlbnRJZCI6ImE0ZTc4OWYyIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MToxOS43NzdaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJJIG5lZWQgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBmaWxlIG9yIGEgZ29vZCBwbGFjZSB0byBhZGQgdGhlIGV4cG9ydC4gTGV0IG1lIGxvb2sgZm9yIHdoZXJlIHRoZSBleHBvcnRzIGFyZSBhdCB0aGUgZW5kLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXFBQ0NrWUlDeGdDS2tBa2Rla2EwT2hlRG55bGNHQ1lha3JKc0ZqMjB3YTVkcFhrU0Z2K2xYVzhCYkFENmgzZ2t4ekh1d1NHMVN5clFqS0dQMm5iMDBZcU5QdDFMekNoamxOa0VndzV4N3BJR3hid05LS3ByQ0VhREJZd3hWOFRmbCtsRk9kWHF5SXdtL1ZFSnNqd2FMVDQwM21ZdzkvV3ZZRkJSQkI3U1VGc2Z1YkpmWkN1QXdiOTFOYzRIRkx2bllxaWNRVDlEc21MS29jQjl0K1VoMWwxR2pUcXJoQlVZVlg0NDFRS3ZYcCtCSEZxOGFNZEFodUdILzNRUWJRaGt3ZEhLUHhUZ3R4T0x6N3pvUitwTkZ0ZVhOaHMyY0hwSXgzQ3B3TjR3bzNuTTZ1bTgzWXhZRXFjbUZ2NytkR1A5YlZhREhlRWZuZUxqbmMxQTEvZGpSQ3laS2d3bHNsbmdhcU5rSTZxUjBJMFFEakxoTnZCM2paVHZJSUVRMkxoM2JnQkdBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFFVENwbkVXMjdpazd2aXU4eTFUZFFmIiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS50cyIsIm9mZnNldCI6NTIwLCJsaW1pdCI6MzB9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNTQsImNhY2hlUmVhZCI6NjY0NDAsImNhY2hlV3JpdGUiOjg5MiwidG90YWxUb2tlbnMiOjY3NDk0LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzODUsImNhY2hlUmVhZCI6MC4wMzMyMiwiY2FjaGVXcml0ZSI6MC4wMDU1NzUsInRvdGFsIjowLjA0MjY4NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjI3NTU3OH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImEwNTdjNjQ5IiwicGFyZW50SWQiOiIwNGY5MGIzMCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTE6MTkuNzgzWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFFVENwbkVXMjdpazd2aXU4eTFUZFFmIiwidG9vbE5hbWUiOiJyZWFkIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifVxuXG5mdW5jdGlvbiBkZXRlY3RUZXJtaW5hbEJhY2tncm91bmQoKTogXCJkYXJrXCIgfCBcImxpZ2h0XCIge1xuXHRjb25zdCBjb2xvcmZnYmcgPSBwcm9jZXNzLmVudi5DT0xPUkZHQkcgfHwgXCJcIjtcblx0aWYgKGNvbG9yZmdiZykge1xuXHRcdGNvbnN0IHBhcnRzID0gY29sb3JmZ2JnLnNwbGl0KFwiO1wiKTtcblx0XHRpZiAocGFydHMubGVuZ3RoID49IDIpIHtcblx0XHRcdGNvbnN0IGJnID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTtcblx0XHRcdGlmICghTnVtYmVyLmlzTmFOKGJnKSkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBiZyA8IDggPyBcImRhcmtcIiA6IFwibGlnaHRcIjtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIFwiZGFya1wiO1xufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0VGhlbWUoKTogc3RyaW5nIHtcblx0cmV0dXJuIGRldGVjdFRlcm1pbmFsQmFja2dyb3VuZCgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgVGhlbWUgSW5zdGFuY2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGxldCB0aGVtZTogVGhlbWU7XG5sZXQgY3VycmVudFRoZW1lTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IHRoZW1lV2F0Y2hlcjogZnMuRlNXYXRjaGVyIHwgdW5kZWZpbmVkO1xubGV0IG9uVGhlbWVDaGFuZ2VDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG5cblsyOTIgbW9yZSBsaW5lcyBpbiBmaWxlLiBVc2Ugb2Zmc2V0PTU1MCB0byBjb250aW51ZV0ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIyNzk3ODB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxNGNiYjQ4ZSIsInBhcmVudElkIjoiYTA1N2M2NDkiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUxOjI0LjE4NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkxldCBtZSBmaW5kIGEgZ29vZCBzcG90IHRvIGFkZCB0aGUgZXhwb3J0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gYWRkIGl0IGFmdGVyIGByZXNvbHZlVGhlbWVDb2xvcnNgIGFuZCBgbG9hZFRoZW1lSnNvbmAgZnVuY3Rpb25zIGV4aXN0LiBMZXQgbWUgbG9vayBmb3IgdGhlIGVuZCBvZiB0aGUgZmlsZSB0byBhZGQgdGhlIG5ldyBleHBvcnQgZnVuY3Rpb24uIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdkVDQ2tZSUN4Z0NLa0JOYk5RSyt5cFNrelY1UDlzYlhkZXlqR2N5YnQ3d3dCTVVEQUFlN1hwNU1EU1RKVG9LNlRkblhFY2g0c05IUmFQWGZweHRkTm5PNWc5dDM4Qld5NmtTRWd4SldQd1g4bVFsOC9oNThUNGFER3JmTlByZVoweGpuNFcxRXlJd2o5cjY5TGhJTjc5K3hxYUMvNWI4blR6SnNZRURqWGhkT1p2aWZZdW9ubDd2aEU5ZVUvWWtiVitXRmcySmVicmFLdGdCendXaVh1YXNPQTNSZFg3ZkkvNnA2em12NU1PMFcxM1JFUnlKSVlFUjNrdG5QZ1YrZ3A4N1JSalVzeTJ5UVpqQWxqZ0pGSzdGVS9wUFF3SENGWlJzV3BlV1VFRDlkQ3llQkRoS2pxdDMyZyt2OW1DTDFCUC92MWxqc2lSa0xjQTR0QTNPNDNqNjYrNnhUWmRnZGtMQ1I3YVkrZG5DTG9TbVpIM0dtZWxmZHI3TkhSQXZnakR3KzJjdzJWVEsrVzBVbUdJTTlFQzZIS0wwSVNwTmVLcGhiU042L0JSbmZTVDFpNjRCVWxqTkpMcGQ1bE1Odmd3VUhyVm1hdk1XN0FUelJPYzB2U2ZFakZEQmZwcGE5K0JDaWpjbVJOWkNIV1pTR0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUhqeHc4WWR3WmRhUkhtYlFqRzlkM2ciLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL3RoZW1lLnRzIiwib2Zmc2V0Ijo3ODB9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNTgsImNhY2hlUmVhZCI6NjczMzIsImNhY2hlV3JpdGUiOjQxNSwidG90YWxUb2tlbnMiOjY3OTEzLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzOTUsImNhY2hlUmVhZCI6MC4wMzM2NjYsImNhY2hlV3JpdGUiOjAuMDAyNTkzNzUsInRvdGFsIjowLjA0MDI0OTc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjc5Nzg0fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMGZmYWIwMTgiLCJwYXJlbnRJZCI6IjE0Y2JiNDhlIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MToyNC4xOTVaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUhqeHc4WWR3WmRhUkhtYlFqRzlkM2ciLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXJrZG93blRoZW1lKCk6IE1hcmtkb3duVGhlbWUge1xuXHRyZXR1cm4ge1xuXHRcdGhlYWRpbmc6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRIZWFkaW5nXCIsIHRleHQpLFxuXHRcdGxpbms6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRMaW5rXCIsIHRleHQpLFxuXHRcdGxpbmtVcmw6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRMaW5rVXJsXCIsIHRleHQpLFxuXHRcdGNvZGU6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRDb2RlXCIsIHRleHQpLFxuXHRcdGNvZGVCbG9jazogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZENvZGVCbG9ja1wiLCB0ZXh0KSxcblx0XHRjb2RlQmxvY2tCb3JkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRDb2RlQmxvY2tCb3JkZXJcIiwgdGV4dCksXG5cdFx0cXVvdGU6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibWRRdW90ZVwiLCB0ZXh0KSxcblx0XHRxdW90ZUJvcmRlcjogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZFF1b3RlQm9yZGVyXCIsIHRleHQpLFxuXHRcdGhyOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcIm1kSHJcIiwgdGV4dCksXG5cdFx0bGlzdEJ1bGxldDogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtZExpc3RCdWxsZXRcIiwgdGV4dCksXG5cdFx0Ym9sZDogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuYm9sZCh0ZXh0KSxcblx0XHRpdGFsaWM6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLml0YWxpYyh0ZXh0KSxcblx0XHR1bmRlcmxpbmU6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLnVuZGVybGluZSh0ZXh0KSxcblx0XHRzdHJpa2V0aHJvdWdoOiAodGV4dDogc3RyaW5nKSA9PiBjaGFsay5zdHJpa2V0aHJvdWdoKHRleHQpLFxuXHRcdGhpZ2hsaWdodENvZGU6IChjb2RlOiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG5cdFx0XHQvLyBWYWxpZGF0ZSBsYW5ndWFnZSBiZWZvcmUgaGlnaGxpZ2h0aW5nIHRvIGF2b2lkIHN0ZGVyciBzcGFtIGZyb20gY2xpLWhpZ2hsaWdodFxuXHRcdFx0Y29uc3QgdmFsaWRMYW5nID0gbGFuZyAmJiBzdXBwb3J0c0xhbmd1YWdlKGxhbmcpID8gbGFuZyA6IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IG9wdHMgPSB7XG5cdFx0XHRcdGxhbmd1YWdlOiB2YWxpZExhbmcsXG5cdFx0XHRcdGlnbm9yZUlsbGVnYWxzOiB0cnVlLFxuXHRcdFx0XHR0aGVtZTogZ2V0Q2xpSGlnaGxpZ2h0VGhlbWUodGhlbWUpLFxuXHRcdFx0fTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiBoaWdobGlnaHQoY29kZSwgb3B0cykuc3BsaXQoXCJcXG5cIik7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0cmV0dXJuIGNvZGUuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiB0aGVtZS5mZyhcIm1kQ29kZUJsb2NrXCIsIGxpbmUpKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0TGlzdFRoZW1lKCk6IFNlbGVjdExpc3RUaGVtZSB7XG5cdHJldHVybiB7XG5cdFx0c2VsZWN0ZWRQcmVmaXg6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwiYWNjZW50XCIsIHRleHQpLFxuXHRcdHNlbGVjdGVkVGV4dDogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJhY2NlbnRcIiwgdGV4dCksXG5cdFx0ZGVzY3JpcHRpb246ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwibXV0ZWRcIiwgdGV4dCksXG5cdFx0c2Nyb2xsSW5mbzogKHRleHQ6IHN0cmluZykgPT4gdGhlbWUuZmcoXCJtdXRlZFwiLCB0ZXh0KSxcblx0XHRub01hdGNoOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcIm11dGVkXCIsIHRleHQpLFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yVGhlbWUoKTogRWRpdG9yVGhlbWUge1xuXHRyZXR1cm4ge1xuXHRcdGJvcmRlckNvbG9yOiAodGV4dDogc3RyaW5nKSA9PiB0aGVtZS5mZyhcImJvcmRlck11dGVkXCIsIHRleHQpLFxuXHRcdHNlbGVjdExpc3Q6IGdldFNlbGVjdExpc3RUaGVtZSgpLFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ3NMaXN0VGhlbWUoKTogaW1wb3J0KFwiQG1hcmlvemVjaG5lci9waS10dWlcIikuU2V0dGluZ3NMaXN0VGhlbWUge1xuXHRyZXR1cm4ge1xuXHRcdGxhYmVsOiAodGV4dDogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbikgPT4gKHNlbGVjdGVkID8gdGhlbWUuZmcoXCJhY2NlbnRcIiwgdGV4dCkgOiB0ZXh0KSxcblx0XHR2YWx1ZTogKHRleHQ6IHN0cmluZywgc2VsZWN0ZWQ6IGJvb2xlYW4pID0+IChzZWxlY3RlZCA/IHRoZW1lLmZnKFwiYWNjZW50XCIsIHRleHQpIDogdGhlbWUuZmcoXCJtdXRlZFwiLCB0ZXh0KSksXG5cdFx0ZGVzY3JpcHRpb246ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwiZGltXCIsIHRleHQpLFxuXHRcdGN1cnNvcjogdGhlbWUuZmcoXCJhY2NlbnRcIiwgXCLihpIgXCIpLFxuXHRcdGhpbnQ6ICh0ZXh0OiBzdHJpbmcpID0+IHRoZW1lLmZnKFwiZGltXCIsIHRleHQpLFxuXHR9O1xufVxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMjg0MTg3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZjI1NDAwNDUiLCJwYXJlbnRJZCI6IjBmZmFiMDE4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MToyOC4zODNaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgSSBuZWVkIHRvIGFkZCBhIGZ1bmN0aW9uIHRoYXQgZXhwb3J0cyB0aGUgcmVzb2x2ZWQgdGhlbWUgY29sb3JzIGZvciBIVE1MIGV4cG9ydC4gSSdsbCBhZGQgaXQgYmVmb3JlIHRoZSBUVUkgSGVscGVycyBzZWN0aW9uLiBMZXQgbWUgZmluZCB3aGVyZSB0aGF0IHNlY3Rpb24gc3RhcnRzLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXRBQ0NrWUlDeGdDS2tCL2h3cXhlQW9FTHRPZTk4RnltazloVEszSUlzclFPMS9WZlZUclI2TkNGNTVrazc3a09SQnBuZUtMdjhtK1Irb0h2WFRHSzNyelQwZVlIQVFDalpmcEVneFlycmpuUVdaQTBNRjJ2Q0lhREhRNFpPK3pLVkNOa3JwMUlDSXcxdVVQb2dLMkRHM2dVTG5Bamx4WmpCcGtEc2pPRE8ydGM1L1pwSERzMGNuVzhDYVd4d1NLVG0yNVRReTBhWXlpS3JjQkcwVXNuSHg2WFlYRHZMZm5IUXBJUUEyZ0hBa1RhWTFLRmtjcWlJWWM2R2VWbE5WR1JMckJPaGYvQzZSS2g5NGFPeTlwRElvdkQwcE9sSGRMS1c1WGl5TTFuOGg4S09WSGhySHhLcFdNbDBZYmJ0c3AvTUlUSDhmcGRqMzQrZzBYNWx5Nm5UR1oweTcyeDF6cVdxRHdZNnFyMmZINkZaOWJCajRjZXpablRWT2tGT0M4MHJyZUhmRWlYeExDbGFmdUhOUWdKSWRialJBRm5TNWFQNXVmRnhQd0ZoeVRNL09STm11R1l2NXpTU25paVZqM0ExbS9HQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxN3FWN1pxUHYzQnJ1cHhRSHNFNlB6eiIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIC1uIFwiLy8gVFVJIEhlbHBlcnNcIiBwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL3RoZW1lLnRzIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjEyMiwiY2FjaGVSZWFkIjo2Nzc0NywiY2FjaGVXcml0ZSI6OTY4LCJ0b3RhbFRva2VucyI6Njg4NDUsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDMwNSwiY2FjaGVSZWFkIjowLjAzMzg3MzUsImNhY2hlV3JpdGUiOjAuMDA2MDUwMDAwMDAwMDAwMDAxLCJ0b3RhbCI6MC4wNDMwMTM1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjg0MTk2fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMWM1YzYxOTQiLCJwYXJlbnRJZCI6ImYyNTQwMDQ1IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MToyOC4zOTdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTdxVjdacVB2M0JydXB4UUhzRTZQenoiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI2NTY6Ly8gVFVJIEhlbHBlcnNcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjI4ODM5N319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImI4ZGNkM2EzIiwicGFyZW50SWQiOiIxYzVjNjE5NCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTE6MzIuNjgxWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiSSdsbCBhZGQgdGhlIG5ldyBleHBvcnQgZnVuY3Rpb24gYmVmb3JlIHRoZSBUVUkgSGVscGVycyBzZWN0aW9uIGF0IGxpbmUgNjU2LiBMZXQgbWUgc2VlIGEgYml0IG9mIGNvbnRleHQgYXJvdW5kIHRoZXJlLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXA4Q0NrWUlDeGdDS2tEczNFVzV3RDNYLzVJbm16YVdTTDU2amgwMDU1aFp3R0VLMEhkREdCa1dGdkFxcUM0QVNZRnJ5QllmeEV6L04zaTVEWk9FTEdBVTNFMlp4c0VZWkt1cUVnd1lJZE9KcXQzeFZzbmx4WHdhREJxV1NCZkNjakRuc1p1NU1DSXdGbnpkY2JVazZBTFdzTFlHTlp4dDFjUWsyTlpGZkZIQythNEdpdXllV05rUkdCRE1jMFhIVTJnSkRzVEU3SHlyS29ZQmZwcHQ5RitWN2l5WFAwOE5FM0x4Sy9YZ2JBTm5nYkVBS212YjdUTFY0K3hZQWRzc0MxeDFzQWtuSEZCNzBIc2E2azFpK0oxSGNQVlRXTU5qTmZwRkFzeWQ3Rk1xbW1wMnk5NmdqYkNkSkJpN2pDZFFXRTh1OXAycWFrbVJ3Nnp2MlNaQlh5NUV2MHBDK3RSdWc2RTJDSzdBa0lUVkJlRDkyekFQb3M0UVpRNHJhc3ExVVlZWUFRPT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDEyWVFXa1Z6SGtaQVU5TmJBdTNjSGtVIiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS50cyIsIm9mZnNldCI6NjQ1LCJsaW1pdCI6MjB9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNTMsImNhY2hlUmVhZCI6Njg3MTUsImNhY2hlV3JpdGUiOjE0OSwidG90YWxUb2tlbnMiOjY5MDI1LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzODI1MDAwMDAwMDAwMDAwMywiY2FjaGVSZWFkIjowLjAzNDM1NzUsImNhY2hlV3JpdGUiOjAuMDAwOTMxMjUsInRvdGFsIjowLjAzOTE1Mzc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjg4Mzk4fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYzA4MWIwM2UiLCJwYXJlbnRJZCI6ImI4ZGNkM2EzIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MTozMi42ODdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTJZUVdrVnpIa1pBVTlOYkF1M2NIa1UiLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BUaGVtZVdhdGNoZXIoKTogdm9pZCB7XG5cdGlmICh0aGVtZVdhdGNoZXIpIHtcblx0XHR0aGVtZVdhdGNoZXIuY2xvc2UoKTtcblx0XHR0aGVtZVdhdGNoZXIgPSB1bmRlZmluZWQ7XG5cdH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFVJIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBDbGlIaWdobGlnaHRUaGVtZSA9IFJlY29yZDxzdHJpbmcsIChzOiBzdHJpbmcpID0+IHN0cmluZz47XG5cbmxldCBjYWNoZWRIaWdobGlnaHRUaGVtZUZvcjogVGhlbWUgfCB1bmRlZmluZWQ7XG5sZXQgY2FjaGVkQ2xpSGlnaGxpZ2h0VGhlbWU6IENsaUhpZ2hsaWdodFRoZW1lIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBidWlsZENsaUhpZ2hsaWdodFRoZW1lKHQ6IFRoZW1lKTogQ2xpSGlnaGxpZ2h0VGhlbWUge1xuXG5bMTc3IG1vcmUgbGluZXMgaW4gZmlsZS4gVXNlIG9mZnNldD02NjUgdG8gY29udGludWVdIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMjkyNjg1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZGI5YmUwNzAiLCJwYXJlbnRJZCI6ImMwODFiMDNlIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MTozOS4yMzZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJJJ2xsIGFkZCB0aGUgbmV3IGV4cG9ydCBmdW5jdGlvbiBhZnRlciBgc3RvcFRoZW1lV2F0Y2hlcmAgYW5kIGJlZm9yZSB0aGUgVFVJIEhlbHBlcnMgc2VjdGlvbi4gSSBuZWVkIHRvIGFkZCBhIGZ1bmN0aW9uIHRoYXQ6MS4gVGFrZXMgYW4gb3B0aW9uYWwgdGhlbWUgbmFtZTIuIExvYWRzIHRoZSB0aGVtZSBKU09OMy4gUmVzb2x2ZXMgYWxsIGNvbG9yIHZhcmlhYmxlc1xuNC4gQ29udmVydHMgMjU2LWNvbG9yIGluZGljZXMgdG8gaGV4IGZvciBDU1M1LiBSZXR1cm5zIGEgUmVjb3JkPHN0cmluZywgc3RyaW5nPkxldCBtZSBhbHNvIGxvb2sgYXQgaG93IGhleFRvUmdiIGFuZCByZ2JUbzI1NiB3b3JrIHRvIGhlbHAgd2l0aCB0aGUgcmV2ZXJzZSBjb252ZXJzaW9uICgyNTYgdG8gaGV4KS4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVxMEVDa1lJQ3hnQ0trREJ4NTZxQXp0dkxlTEZsSWZxQkMyL1pSOHlkUWMyc1Y3eFlQVkNVWXkxeWhMWVNDQlhrRklPak1yd0JSQnVhT25VSVp3N2NDV2Fmd2FHVGtaRDdHQkFFZ3lrQ3JTS29ReWpPVHJqd0drYURDaVpOK3BWZVNld2FteG5HQ0l3enNuVCtqdUs0blhydTlWYWI3c0RHUEY3TlV0OGwzM0F5LzBob2ZvQmxrUWsrR1VFRDdlMDdSbXpNeDdSeGZHR0twUURqeEI0eXBWeWYzeGZPdjNtRHNJYUdwN05Ebm5zeUROV1d6dUhRcys0SUQwaDZKY0RnQ1piSnE4bGN0eHR6SGdMelhmWUJBNWNCMjVIcTVzYUlXL0FMQjBLVStlelhZWUhpbWIxK0JVeGVQSTZKNmhpYlRqREcwaEQrbjhobXVOeXNTNVEzZjZtaEZtR2xuRkQzN3lZeEU5TFB4MW1uQmZkVjUzeFBUQ1c1cGFCbzY5VnVTREpITjlNR253cStTbnVselNKYmtBVlBhaFIvL3dEZ3lraUoycUxTL1VUWlN4OXBDRHRON1dTbmVoWUZST3FCOFlRZnRRTUJDd2VtNVNORW5CSmdOdEowVURUQWVSN0dIUEdVQWJpTzlyVml0SlArbXlobXF2cGo4dStBaW93TTNxbHpVMXRJL0syTnBtRzd0ajI4eHEwb0theTRwTENhS29weWd0ME9hUDEwZ1k0RGdWeUF6THc2QVVnMmVOUENuWUMzQUNVc29tODlOTTUrd012ZzZEOWpzeWJLaFc4UE0rYW5ybEFqVDZUdW1pN0x0bVhaNkNyUzRNSmpHVGY1WHlqa3puQ1lqTitTV09QT3BDVjRYWHhoaVYvT0psd1VPNDBac3hzQmYwdW0xZTJIa0dQWFJoQStRZkg5c0ZjaTRCeURqbWRlUXFvdHlwd3BwdzlwblFxdGxoeVlLaU9aQWxhWEFROFFUc1lBUT09In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxQm9ZMVh2OXJiS2h6WXlqUUg0Nzd4ZSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIC1uIFwiQ1VCRV9WQUxVRVNcXHxHUkFZX1ZBTFVFU1wiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUudHMifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTk4LCJjYWNoZVJlYWQiOjY4ODY0LCJjYWNoZVdyaXRlIjozMzMsInRvdGFsVG9rZW5zIjo2OTQwMywiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwNDk1LCJjYWNoZVJlYWQiOjAuMDM0NDMyLCJjYWNoZVdyaXRlIjowLjAwMjA4MTI1LCJ0b3RhbCI6MC4wNDE1MDMyNX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjI5MjY4N319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImE0ZGU5MTAwIiwicGFyZW50SWQiOiJkYjliZTA3MCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTE6MzkuMjUxWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFCb1kxWHY5cmJLaHpZeWpRSDQ3N3hlIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiMTgzOmNvbnN0IENVQkVfVkFMVUVTID0gWzAsIDk1LCAxMzUsIDE3NSwgMjE1LCAyNTVdO1xuMTg2OmNvbnN0IEdSQVlfVkFMVUVTID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IDggKyBpICogMTApO1xuMTkxOlx0Zm9yIChsZXQgaSA9IDA7IGkgPCBDVUJFX1ZBTFVFUy5sZW5ndGg7IGkrKykge1xuMTkyOlx0XHRjb25zdCBkaXN0ID0gTWF0aC5hYnModmFsdWUgLSBDVUJFX1ZBTFVFU1tpXSk7XG4yMDQ6XHRmb3IgKGxldCBpID0gMDsgaSA8IEdSQVlfVkFMVUVTLmxlbmd0aDsgaSsrKSB7XG4yMDU6XHRcdGNvbnN0IGRpc3QgPSBNYXRoLmFicyhncmF5IC0gR1JBWV9WQUxVRVNbaV0pO1xuMjI3Olx0Y29uc3QgY3ViZVIgPSBDVUJFX1ZBTFVFU1tySWR4XTtcbjIyODpcdGNvbnN0IGN1YmVHID0gQ1VCRV9WQUxVRVNbZ0lkeF07XG4yMjk6XHRjb25zdCBjdWJlQiA9IENVQkVfVkFMVUVTW2JJZHhdO1xuMjM2Olx0Y29uc3QgZ3JheVZhbHVlID0gR1JBWV9WQUxVRVNbZ3JheUlkeF07XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIyOTkyNTF9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIwMzUxYTJhOSIsInBhcmVudElkIjoiYTRkZTkxMDAiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjUxOjU2LjY0NloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ikdvb2QsIHRoZSBDVUJFX1ZBTFVFUyBhbmQgR1JBWV9WQUxVRVMgYXJlIGF2YWlsYWJsZSBmb3IgbWUgdG8gaW1wbGVtZW50IHRoZSByZXZlcnNlIGNvbnZlcnNpb24gKDI1Ni1jb2xvciBpbmRleCB0byBoZXgpLiBMZXQgbWUgYWRkIHRoZSBleHBvcnQgZnVuY3Rpb24uIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFc0VDQ2tZSUN4Z0NLa0NpQlBnVUtjaEUrdzRsTCthSVYrVzV4dWhmc01uK2FkbThmWFZiYS9mQUxwSVI4S2JqcUhiU1ZFU0IyeWhlQmM2RUQ0UWlDdS9OVVVWTGNSRityQVo5RWd5VVlSdW03bzdPMlZxMElIWWFERGU3Tk1Ydmt0U1M0dmwycVNJdzRVazFWblRJSEVBemZ1VWlXSmZmc0VicEd1dEk5anJvYzVNbmxJQ0hQNWphUENiZGlIUGQxOGx1QWE2OUNpM0tLcWdCYjYzb0FiSzlKUU9INGtOT2JrTjZGRWpkOUg3UHBIZTRTeW1rRmdkT05SaGJ3cU5IMkJ0NVE2Y3V6VXZ1WW04aXpHNDZHVk9vaWRkVzFFaDZQL21jeWJ6aWpUcnUyQnFONnZUaktxUVkwbEtVc1lMckhteDNnWit4S2ZIaUVxeDNXT0RwbWhDZE14Q2hzYWtGQ0VzT1BWeE1YZzV4WHpoZTI0Q0VseUthSzBoNjNZUjVnVzZDS2h3ai9URlZrSlFELzkzU2xRMzU1am5sQjN5SmU3ZkdCSkhqeHdXRmcxOUdHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxSDNUcU1hRVdZR0VWdHk1Vzh2dmFiMSIsIm5hbWUiOiJlZGl0IiwiYXJndW1lbnRzIjp7InBhdGgiOiIvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUudHMiLCJvbGRUZXh0IjoiZXhwb3J0IGZ1bmN0aW9uIHN0b3BUaGVtZVdhdGNoZXIoKTogdm9pZCB7XG5cdGlmICh0aGVtZVdhdGNoZXIpIHtcblx0XHR0aGVtZVdhdGNoZXIuY2xvc2UoKTtcblx0XHR0aGVtZVdhdGNoZXIgPSB1bmRlZmluZWQ7XG5cdH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFVJIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iLCJuZXdUZXh0IjoiZXhwb3J0IGZ1bmN0aW9uIHN0b3BUaGVtZVdhdGNoZXIoKTogdm9pZCB7XG5cdGlmICh0aGVtZVdhdGNoZXIpIHtcblx0XHR0aGVtZVdhdGNoZXIuY2xvc2UoKTtcblx0XHR0aGVtZVdhdGNoZXIgPSB1bmRlZmluZWQ7XG5cdH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSFRNTCBFeHBvcnQgSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbnZlcnQgYSAyNTYtY29sb3IgaW5kZXggdG8gaGV4IHN0cmluZy5cbiAqIEluZGljZXMgMC0xNTogYmFzaWMgY29sb3JzIChhcHByb3hpbWF0ZSlcbiAqIEluZGljZXMgMTYtMjMxOiA2eDZ4NiBjb2xvciBjdWJlXG4gKiBJbmRpY2VzIDIzMi0yNTU6IGdyYXlzY2FsZSByYW1wXG4gKi9cbmZ1bmN0aW9uIGFuc2kyNTZUb0hleChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0Ly8gQmFzaWMgY29sb3JzICgwLTE1KSAtIGFwcHJveGltYXRlIGNvbW1vbiB0ZXJtaW5hbCB2YWx1ZXNcblx0Y29uc3QgYmFzaWNDb2xvcnMgPSBbXG5cdFx0XCIjMDAwMDAwXCIsIFwiIzgwMDAwMFwiLCBcIiMwMDgwMDBcIiwgXCIjODA4MDAwXCIsIFwiIzAwMDA4MFwiLCBcIiM4MDAwODBcIiwgXCIjMDA4MDgwXCIsIFwiI2MwYzBjMFwiLFxuXHRcdFwiIzgwODA4MFwiLCBcIiNmZjAwMDBcIiwgXCIjMDBmZjAwXCIsIFwiI2ZmZmYwMFwiLCBcIiMwMDAwZmZcIiwgXCIjZmYwMGZmXCIsIFwiIzAwZmZmZlwiLCBcIiNmZmZmZmZcIixcblx0XTtcblx0aWYgKGluZGV4IDwgMTYpIHtcblx0XHRyZXR1cm4gYmFzaWNDb2xvcnNbaW5kZXhdO1xuXHR9XG5cblx0Ly8gQ29sb3IgY3ViZSAoMTYtMjMxKTogNng2eDYgPSAyMTYgY29sb3JzXG5cdGlmIChpbmRleCA8IDIzMikge1xuXHRcdGNvbnN0IGN1YmVJbmRleCA9IGluZGV4IC0gMTY7XG5cdFx0Y29uc3QgciA9IE1hdGguZmxvb3IoY3ViZUluZGV4IC8gMzYpO1xuXHRcdGNvbnN0IGcgPSBNYXRoLmZsb29yKChjdWJlSW5kZXggJSAzNikgLyA2KTtcblx0XHRjb25zdCBiID0gY3ViZUluZGV4ICUgNjtcblx0XHRjb25zdCB0b0hleCA9IChuOiBudW1iZXIpID0+IChuID09PSAwID8gMCA6IDU1ICsgbiAqIDQwKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpO1xuXHRcdHJldHVybiBgIyR7dG9IZXgocil9JHt0b0hleChnKX0ke3RvSGV4KGIpfWA7XG5cdH1cblxuXHQvLyBHcmF5c2NhbGUgKDIzMi0yNTUpOiAyNCBzaGFkZXNcblx0Y29uc3QgZ3JheSA9IDggKyAoaW5kZXggLSAyMzIpICogMTA7XG5cdGNvbnN0IGdyYXlIZXggPSBncmF5LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIik7XG5cdHJldHVybiBgIyR7Z3JheUhleH0ke2dyYXlIZXh9JHtncmF5SGV4fWA7XG59XG5cbi8qKlxuICogR2V0IHJlc29sdmVkIHRoZW1lIGNvbG9ycyBhcyBDU1MtY29tcGF0aWJsZSBoZXggc3RyaW5ncy5cbiAqIFVzZWQgYnkgSFRNTCBleHBvcnQgdG8gZ2VuZXJhdGUgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x2ZWRUaGVtZUNvbG9ycyh0aGVtZU5hbWU/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcblx0Y29uc3QgbmFtZSA9IHRoZW1lTmFtZSA/PyBnZXREZWZhdWx0VGhlbWUoKTtcblx0Y29uc3QgdGhlbWVKc29uID0gbG9hZFRoZW1lSnNvbihuYW1lKTtcblx0Y29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlVGhlbWVDb2xvcnModGhlbWVKc29uLmNvbG9ycywgdGhlbWVKc29uLnZhcnMpO1xuXG5cdGNvbnN0IGNzc0NvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZCkpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRjc3NDb2xvcnNba2V5XSA9IGFuc2kyNTZUb0hleCh2YWx1ZSk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSA9PT0gXCJcIikge1xuXHRcdFx0Ly8gRW1wdHkgbWVhbnMgZGVmYXVsdC9pbmhlcml0IC0gdXNlIGEgZmFsbGJhY2tcblx0XHRcdGNzc0NvbG9yc1trZXldID0gXCJpbmhlcml0XCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNzc0NvbG9yc1trZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjc3NDb2xvcnM7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0aGVtZSBpcyBhIFwibGlnaHRcIiB0aGVtZSAoZm9yIENTUyB0aGF0IG5lZWRzIGxpZ2h0L2RhcmsgdmFyaWFudHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaWdodFRoZW1lKHRoZW1lTmFtZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuXHQvLyBDdXJyZW50bHkganVzdCBjaGVjayB0aGUgbmFtZSAtIGNvdWxkIGJlIGV4dGVuZGVkIHRvIGFuYWx5emUgY29sb3JzXG5cdHJldHVybiB0aGVtZU5hbWUgPT09IFwibGlnaHRcIjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFVJIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0ifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTA1MSwiY2FjaGVSZWFkIjo2OTE5NywiY2FjaGVXcml0ZSI6NDMzLCJ0b3RhbFRva2VucyI6NzA2ODksImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMjYyNzUsImNhY2hlUmVhZCI6MC4wMzQ1OTg1LCJjYWNoZVdyaXRlIjowLjAwMjcwNjI1MDAwMDAwMDAwMDMsInRvdGFsIjowLjA2MzYxOTc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMjk5MjUyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNThmODBmYzEiLCJwYXJlbnRJZCI6IjAzNTFhMmE5IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MTo1Ni42NTVaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUgzVHFNYUVXWUdFVnR5NVc4dnZhYjEiLCJ0b29sTmFtZSI6ImVkaXQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJTdWNjZXNzZnVsbHkgcmVwbGFjZWQgdGV4dCBpbiAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUudHMuIn1dLCJkZXRhaWxzIjp7ImRpZmYiOiIgICAgIC4uLlxuIDY1MiBcdH1cbiA2NTMgfVxuIDY1NCBcbiA2NTUgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuKzY1NiAvLyBIVE1MIEV4cG9ydCBIZWxwZXJzXG4rNjU3IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbis2NTggXG4rNjU5IC8qKlxuKzY2MCAgKiBDb252ZXJ0IGEgMjU2LWNvbG9yIGluZGV4IHRvIGhleCBzdHJpbmcuXG4rNjYxICAqIEluZGljZXMgMC0xNTogYmFzaWMgY29sb3JzIChhcHByb3hpbWF0ZSlcbis2NjIgICogSW5kaWNlcyAxNi0yMzE6IDZ4Nng2IGNvbG9yIGN1YmVcbis2NjMgICogSW5kaWNlcyAyMzItMjU1OiBncmF5c2NhbGUgcmFtcFxuKzY2NCAgKi9cbis2NjUgZnVuY3Rpb24gYW5zaTI1NlRvSGV4KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuKzY2NiBcdC8vIEJhc2ljIGNvbG9ycyAoMC0xNSkgLSBhcHByb3hpbWF0ZSBjb21tb24gdGVybWluYWwgdmFsdWVzXG4rNjY3IFx0Y29uc3QgYmFzaWNDb2xvcnMgPSBbXG4rNjY4IFx0XHRcIiMwMDAwMDBcIiwgXCIjODAwMDAwXCIsIFwiIzAwODAwMFwiLCBcIiM4MDgwMDBcIiwgXCIjMDAwMDgwXCIsIFwiIzgwMDA4MFwiLCBcIiMwMDgwODBcIiwgXCIjYzBjMGMwXCIsXG4rNjY5IFx0XHRcIiM4MDgwODBcIiwgXCIjZmYwMDAwXCIsIFwiIzAwZmYwMFwiLCBcIiNmZmZmMDBcIiwgXCIjMDAwMGZmXCIsIFwiI2ZmMDBmZlwiLCBcIiMwMGZmZmZcIiwgXCIjZmZmZmZmXCIsXG4rNjcwIFx0XTtcbis2NzEgXHRpZiAoaW5kZXggPCAxNikge1xuKzY3MiBcdFx0cmV0dXJuIGJhc2ljQ29sb3JzW2luZGV4XTtcbis2NzMgXHR9XG4rNjc0IFxuKzY3NSBcdC8vIENvbG9yIGN1YmUgKDE2LTIzMSk6IDZ4Nng2ID0gMjE2IGNvbG9yc1xuKzY3NiBcdGlmIChpbmRleCA8IDIzMikge1xuKzY3NyBcdFx0Y29uc3QgY3ViZUluZGV4ID0gaW5kZXggLSAxNjtcbis2NzggXHRcdGNvbnN0IHIgPSBNYXRoLmZsb29yKGN1YmVJbmRleCAvIDM2KTtcbis2NzkgXHRcdGNvbnN0IGcgPSBNYXRoLmZsb29yKChjdWJlSW5kZXggJSAzNikgLyA2KTtcbis2ODAgXHRcdGNvbnN0IGIgPSBjdWJlSW5kZXggJSA2O1xuKzY4MSBcdFx0Y29uc3QgdG9IZXggPSAobjogbnVtYmVyKSA9PiAobiA9PT0gMCA/IDAgOiA1NSArIG4gKiA0MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbis2ODIgXHRcdHJldHVybiBgIyR7dG9IZXgocil9JHt0b0hleChnKX0ke3RvSGV4KGIpfWA7XG4rNjgzIFx0fVxuKzY4NCBcbis2ODUgXHQvLyBHcmF5c2NhbGUgKDIzMi0yNTUpOiAyNCBzaGFkZXNcbis2ODYgXHRjb25zdCBncmF5ID0gOCArIChpbmRleCAtIDIzMikgKiAxMDtcbis2ODcgXHRjb25zdCBncmF5SGV4ID0gZ3JheS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpO1xuKzY4OCBcdHJldHVybiBgIyR7Z3JheUhleH0ke2dyYXlIZXh9JHtncmF5SGV4fWA7XG4rNjg5IH1cbis2OTAgXG4rNjkxIC8qKlxuKzY5MiAgKiBHZXQgcmVzb2x2ZWQgdGhlbWUgY29sb3JzIGFzIENTUy1jb21wYXRpYmxlIGhleCBzdHJpbmdzLlxuKzY5MyAgKiBVc2VkIGJ5IEhUTUwgZXhwb3J0IHRvIGdlbmVyYXRlIENTUyBjdXN0b20gcHJvcGVydGllcy5cbis2OTQgICovXG4rNjk1IGV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvbHZlZFRoZW1lQ29sb3JzKHRoZW1lTmFtZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuKzY5NiBcdGNvbnN0IG5hbWUgPSB0aGVtZU5hbWUgPz8gZ2V0RGVmYXVsdFRoZW1lKCk7XG4rNjk3IFx0Y29uc3QgdGhlbWVKc29uID0gbG9hZFRoZW1lSnNvbihuYW1lKTtcbis2OTggXHRjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUaGVtZUNvbG9ycyh0aGVtZUpzb24uY29sb3JzLCB0aGVtZUpzb24udmFycyk7XG4rNjk5IFxuKzcwMCBcdGNvbnN0IGNzc0NvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuKzcwMSBcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkKSkge1xuKzcwMiBcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuKzcwMyBcdFx0XHRjc3NDb2xvcnNba2V5XSA9IGFuc2kyNTZUb0hleCh2YWx1ZSk7XG4rNzA0IFx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBcIlwiKSB7XG4rNzA1IFx0XHRcdC8vIEVtcHR5IG1lYW5zIGRlZmF1bHQvaW5oZXJpdCAtIHVzZSBhIGZhbGxiYWNrXG4rNzA2IFx0XHRcdGNzc0NvbG9yc1trZXldID0gXCJpbmhlcml0XCI7XG4rNzA3IFx0XHR9IGVsc2Uge1xuKzcwOCBcdFx0XHRjc3NDb2xvcnNba2V5XSA9IHZhbHVlO1xuKzcwOSBcdFx0fVxuKzcxMCBcdH1cbis3MTEgXHRyZXR1cm4gY3NzQ29sb3JzO1xuKzcxMiB9XG4rNzEzIFxuKzcxNCAvKipcbis3MTUgICogQ2hlY2sgaWYgYSB0aGVtZSBpcyBhIFwibGlnaHRcIiB0aGVtZSAoZm9yIENTUyB0aGF0IG5lZWRzIGxpZ2h0L2RhcmsgdmFyaWFudHMpLlxuKzcxNiAgKi9cbis3MTcgZXhwb3J0IGZ1bmN0aW9uIGlzTGlnaHRUaGVtZSh0aGVtZU5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcbis3MTggXHQvLyBDdXJyZW50bHkganVzdCBjaGVjayB0aGUgbmFtZSAtIGNvdWxkIGJlIGV4dGVuZGVkIHRvIGFuYWx5emUgY29sb3JzXG4rNzE5IFx0cmV0dXJuIHRoZW1lTmFtZSA9PT0gXCJsaWdodFwiO1xuKzcyMCB9XG4rNzIxIFxuKzcyMiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gNjU2IC8vIFRVSSBIZWxwZXJzXG4gNjU3IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiA2NTggXG4gNjU5IHR5cGUgQ2xpSGlnaGxpZ2h0VGhlbWUgPSBSZWNvcmQ8c3RyaW5nLCAoczogc3RyaW5nKSA9PiBzdHJpbmc+O1xuICAgICAuLi4iLCJmaXJzdENoYW5nZWRMaW5lIjo2NTZ9LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMzE2NjU0fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZWZiOGYwNzMiLCJwYXJlbnRJZCI6IjU4ZjgwZmMxIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MjowMC42ODhaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgSSBuZWVkIHRvIGFkZCBgZ2V0RXhwb3J0VGVtcGxhdGVEaXJgIHRvIGNvbmZpZy50czoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV0NEJDa1lJQ3hnQ0trQ1dEMXo3clZwMkFFT1VWRTUzQ0lvZGpkYk93SlFnNGZmVHVWZ0NkSkMyME05UlNwK0JJcWh1R3FUdjF6cXFwUTl0VXljdjY2MkQxYXJzSjFKc0M3NXJFZ3llNHRpUE5LZ281eHhjUlFjYURNOGdwc1lsYmJnSGxST2Z1aUl3ZWpoL29HUmt3Y2d6MlEra0lQa3pMZ3VMYWc2QlhSMVZWNVZUU0NCeGczbUJCYXVWRVBSVTlhbDlDZHNlbXBaTktrWnI0cCtaRmFpUXdSS2FmdmNHY3RjUTI1Vm0xMzAvT241SnBDWmREM1lxQ2lvM21wN2tKTTltRFJoUFR1czF4QXRTSzIrOFd0VGVuaU9KZHdXR0lnY29zRXVaN1JMZ0dBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFBYUxOVFYyNmY4UlZaN2RDQUNjWjhBIiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb25maWcudHMiLCJvZmZzZXQiOjQwLCJsaW1pdCI6MzB9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMzYsImNhY2hlUmVhZCI6Njk2MzAsImNhY2hlV3JpdGUiOjExMDYsInRvdGFsVG9rZW5zIjo3MDg4MCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMzQwMDAwMDAwMDAwMDAwMDIsImNhY2hlUmVhZCI6MC4wMzQ4MTUsImNhY2hlV3JpdGUiOjAuMDA2OTEyNSwidG90YWwiOjAuMDQ1MTY3NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjMxNjY1NX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjZkY2I0MjVmIiwicGFyZW50SWQiOiJlZmI4ZjA3MyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTI6MDAuNjk0WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFBYUxOVFYyNmY4UlZaN2RDQUNjWjhBIiwidG9vbE5hbWUiOiJyZWFkIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiXHRcdH1cblx0XHRkaXIgPSBkaXJuYW1lKGRpcik7XG5cdH1cblx0Ly8gRmFsbGJhY2sgKHNob3VsZG4ndCBoYXBwZW4pXG5cdHJldHVybiBfX2Rpcm5hbWU7XG59XG5cbi8qKlxuICogR2V0IHBhdGggdG8gYnVpbHQtaW4gdGhlbWVzIGRpcmVjdG9yeSAoc2hpcHBlZCB3aXRoIHBhY2thZ2UpXG4gKiAtIEZvciBCdW4gYmluYXJ5OiB0aGVtZS8gbmV4dCB0byBleGVjdXRhYmxlXG4gKiAtIEZvciBOb2RlLmpzIChkaXN0Lyk6IGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvXG4gKiAtIEZvciB0c3ggKHNyYy8pOiBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGVtZXNEaXIoKTogc3RyaW5nIHtcblx0aWYgKGlzQnVuQmluYXJ5KSB7XG5cdFx0cmV0dXJuIGpvaW4oZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKSwgXCJ0aGVtZVwiKTtcblx0fVxuXHQvLyBUaGVtZSBpcyBpbiBtb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8gcmVsYXRpdmUgdG8gc3JjLyBvciBkaXN0L1xuXHRjb25zdCBwYWNrYWdlRGlyID0gZ2V0UGFja2FnZURpcigpO1xuXHRjb25zdCBzcmNPckRpc3QgPSBleGlzdHNTeW5jKGpvaW4ocGFja2FnZURpciwgXCJzcmNcIikpID8gXCJzcmNcIiA6IFwiZGlzdFwiO1xuXHRyZXR1cm4gam9pbihwYWNrYWdlRGlyLCBzcmNPckRpc3QsIFwibW9kZXNcIiwgXCJpbnRlcmFjdGl2ZVwiLCBcInRoZW1lXCIpO1xufVxuXG4vKiogR2V0IHBhdGggdG8gcGFja2FnZS5qc29uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFja2FnZUpzb25QYXRoKCk6IHN0cmluZyB7XG5cdHJldHVybiBqb2luKGdldFBhY2thZ2VEaXIoKSwgXCJwYWNrYWdlLmpzb25cIik7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBSRUFETUUubWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWFkbWVQYXRoKCk6IHN0cmluZyB7XG5cbls4MCBtb3JlIGxpbmVzIGluIGZpbGUuIFVzZSBvZmZzZXQ9NzAgdG8gY29udGludWVdIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMzIwNjkxfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiODZhM2M5ZGIiLCJwYXJlbnRJZCI6IjZkY2I0MjVmIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MjowOS4zNDFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJJJ2xsIGFkZCB0aGUgYGdldEV4cG9ydFRlbXBsYXRlRGlyYCBmdW5jdGlvbiByaWdodCBhZnRlciBgZ2V0VGhlbWVzRGlyYDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV2QUJDa1lJQ3hnQ0trQmtWcmpjbmd6K0xveXdPTDRzODJwUytzbWpENVBYMWZRdzlBcnpmTnpMOHNGOExhNUt3T0EvNEE4czZlRlNEVC84RmdDZUhmdDFJTXpxbUxJMFlwdUhFZ3o0UXRLSmZCQlpweGJNNmRRYURBa1M3OFZyUzB3a2s2Tk5EeUl3cDkvc0Mvb2ROQlBNdHpUMXdzc3k2OTY4Mm9yUURiV2I0THhoQ2lnSnRzYlF6Z29kd1ZMZkdYdVlVU3ZISFlPa0tsaUlyOE00aHhhaFVZRUhhZ2lycmFzeFZQb3ZHdU1KeHRUQ0cwTkF1L3RwNmlYVUd1VDY5ZGxSTnE3b0hUQWZuUnFsUmJOc25CY1lYeVhxTW10Umd2V3BGd2VxazRPSnhzd1JtL05BcWRRai85MWFLR2pHdGNPWkdBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFWQ1VrcjZKNE56bml6WEJRcDczejZzIiwibmFtZSI6ImVkaXQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb25maWcudHMiLCJvbGRUZXh0IjoiZXhwb3J0IGZ1bmN0aW9uIGdldFRoZW1lc0RpcigpOiBzdHJpbmcge1xuXHRpZiAoaXNCdW5CaW5hcnkpIHtcblx0XHRyZXR1cm4gam9pbihkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpLCBcInRoZW1lXCIpO1xuXHR9XG5cdC8vIFRoZW1lIGlzIGluIG1vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyByZWxhdGl2ZSB0byBzcmMvIG9yIGRpc3QvXG5cdGNvbnN0IHBhY2thZ2VEaXIgPSBnZXRQYWNrYWdlRGlyKCk7XG5cdGNvbnN0IHNyY09yRGlzdCA9IGV4aXN0c1N5bmMoam9pbihwYWNrYWdlRGlyLCBcInNyY1wiKSkgPyBcInNyY1wiIDogXCJkaXN0XCI7XG5cdHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJtb2Rlc1wiLCBcImludGVyYWN0aXZlXCIsIFwidGhlbWVcIik7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBwYWNrYWdlLmpzb24gKi8iLCJuZXdUZXh0IjoiZXhwb3J0IGZ1bmN0aW9uIGdldFRoZW1lc0RpcigpOiBzdHJpbmcge1xuXHRpZiAoaXNCdW5CaW5hcnkpIHtcblx0XHRyZXR1cm4gam9pbihkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpLCBcInRoZW1lXCIpO1xuXHR9XG5cdC8vIFRoZW1lIGlzIGluIG1vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyByZWxhdGl2ZSB0byBzcmMvIG9yIGRpc3QvXG5cdGNvbnN0IHBhY2thZ2VEaXIgPSBnZXRQYWNrYWdlRGlyKCk7XG5cdGNvbnN0IHNyY09yRGlzdCA9IGV4aXN0c1N5bmMoam9pbihwYWNrYWdlRGlyLCBcInNyY1wiKSkgPyBcInNyY1wiIDogXCJkaXN0XCI7XG5cdHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJtb2Rlc1wiLCBcImludGVyYWN0aXZlXCIsIFwidGhlbWVcIik7XG59XG5cbi8qKlxuICogR2V0IHBhdGggdG8gSFRNTCBleHBvcnQgdGVtcGxhdGUgZGlyZWN0b3J5IChzaGlwcGVkIHdpdGggcGFja2FnZSlcbiAqIC0gRm9yIEJ1biBiaW5hcnk6IGV4cG9ydC1odG1sLyBuZXh0IHRvIGV4ZWN1dGFibGVcbiAqIC0gRm9yIE5vZGUuanMgKGRpc3QvKTogZGlzdC9jb3JlL2V4cG9ydC1odG1sL1xuICogLSBGb3IgdHN4IChzcmMvKTogc3JjL2NvcmUvZXhwb3J0LWh0bWwvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHBvcnRUZW1wbGF0ZURpcigpOiBzdHJpbmcge1xuXHRpZiAoaXNCdW5CaW5hcnkpIHtcblx0XHRyZXR1cm4gam9pbihkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpLCBcImV4cG9ydC1odG1sXCIpO1xuXHR9XG5cdGNvbnN0IHBhY2thZ2VEaXIgPSBnZXRQYWNrYWdlRGlyKCk7XG5cdGNvbnN0IHNyY09yRGlzdCA9IGV4aXN0c1N5bmMoam9pbihwYWNrYWdlRGlyLCBcInNyY1wiKSkgPyBcInNyY1wiIDogXCJkaXN0XCI7XG5cdHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJjb3JlXCIsIFwiZXhwb3J0LWh0bWxcIik7XG59XG5cbi8qKiBHZXQgcGF0aCB0byBwYWNrYWdlLmpzb24gKi8ifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6NTgwLCJjYWNoZVJlYWQiOjcwNzM2LCJjYWNoZVdyaXRlIjo0NTYsInRvdGFsVG9rZW5zIjo3MTc4MCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAxNDUsImNhY2hlUmVhZCI6MC4wMzUzNjgsImNhY2hlV3JpdGUiOjAuMDAyODUsInRvdGFsIjowLjA1Mjc1Nzk5OTk5OTk5OTk5fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMzIwNjk1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMDAwYjJjOGEiLCJwYXJlbnRJZCI6Ijg2YTNjOWRiIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MjowOS4zNDVaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVZDVWtyNko0TnpuaXpYQlFwNzN6NnMiLCJ0b29sTmFtZSI6ImVkaXQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJTdWNjZXNzZnVsbHkgcmVwbGFjZWQgdGV4dCBpbiAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29uZmlnLnRzLiJ9XSwiZGV0YWlscyI6eyJkaWZmIjoiICAgICAuLi5cbiAgNTkgXHRjb25zdCBzcmNPckRpc3QgPSBleGlzdHNTeW5jKGpvaW4ocGFja2FnZURpciwgXCJzcmNcIikpID8gXCJzcmNcIiA6IFwiZGlzdFwiO1xuICA2MCBcdHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJtb2Rlc1wiLCBcImludGVyYWN0aXZlXCIsIFwidGhlbWVcIik7XG4gIDYxIH1cbiAgNjIgXG4rIDYzIC8qKlxuKyA2NCAgKiBHZXQgcGF0aCB0byBIVE1MIGV4cG9ydCB0ZW1wbGF0ZSBkaXJlY3RvcnkgKHNoaXBwZWQgd2l0aCBwYWNrYWdlKVxuKyA2NSAgKiAtIEZvciBCdW4gYmluYXJ5OiBleHBvcnQtaHRtbC8gbmV4dCB0byBleGVjdXRhYmxlXG4rIDY2ICAqIC0gRm9yIE5vZGUuanMgKGRpc3QvKTogZGlzdC9jb3JlL2V4cG9ydC1odG1sL1xuKyA2NyAgKiAtIEZvciB0c3ggKHNyYy8pOiBzcmMvY29yZS9leHBvcnQtaHRtbC9cbisgNjggICovXG4rIDY5IGV4cG9ydCBmdW5jdGlvbiBnZXRFeHBvcnRUZW1wbGF0ZURpcigpOiBzdHJpbmcge1xuKyA3MCBcdGlmIChpc0J1bkJpbmFyeSkge1xuKyA3MSBcdFx0cmV0dXJuIGpvaW4oZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKSwgXCJleHBvcnQtaHRtbFwiKTtcbisgNzIgXHR9XG4rIDczIFx0Y29uc3QgcGFja2FnZURpciA9IGdldFBhY2thZ2VEaXIoKTtcbisgNzQgXHRjb25zdCBzcmNPckRpc3QgPSBleGlzdHNTeW5jKGpvaW4ocGFja2FnZURpciwgXCJzcmNcIikpID8gXCJzcmNcIiA6IFwiZGlzdFwiO1xuKyA3NSBcdHJldHVybiBqb2luKHBhY2thZ2VEaXIsIHNyY09yRGlzdCwgXCJjb3JlXCIsIFwiZXhwb3J0LWh0bWxcIik7XG4rIDc2IH1cbisgNzcgXG4gIDYzIC8qKiBHZXQgcGF0aCB0byBwYWNrYWdlLmpzb24gKi9cbiAgNjQgZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VKc29uUGF0aCgpOiBzdHJpbmcge1xuICA2NSBcdHJldHVybiBqb2luKGdldFBhY2thZ2VEaXIoKSwgXCJwYWNrYWdlLmpzb25cIik7XG4gIDY2IH1cbiAgICAgLi4uIiwiZmlyc3RDaGFuZ2VkTGluZSI6NjN9LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyMzI5MzQ0fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiOWRlNGI0NmMiLCJwYXJlbnRJZCI6IjAwMGIyYzhhIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MjoxNS41MjlaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIHVwZGF0ZSB0aGUgY29weS1hc3NldHMgc2NyaXB0IGluIHBhY2thZ2UuanNvbjoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1RUJDa1lJQ3hnQ0trQUt0VXZBditQVE9nTnROeDhxek5McWNlaytNY2hGODZSajZzRjRmUTVIYnh2UGQrT3dCa3ZObXAwc2xsSnlQUTVFdkN4TGpyVzNUUmVFM2I3UUZqb21FZ3lUcGtsSys0NjloclhIRnM4YURGVDg1TUpZTThjM1VPeHRQQ0l3RXV2WlBRZzk3WlNXNE9VRkJuT1R6b2JzWHRYR3VmcWM4QW9ia1FnclZYMVRVNlRSZmV3SzRRVUdnbHJtK2ttTUtrbDlwNzdCZEdFR0Y1U2V0cWgrYVM1czlSdzFwZHFMTWV1NmZkUkVxaGRzZzRGcVRMWU5QT2FmVHVSZzkyTC9vQndSd3ZmSlZNdm1CUUg4Y1VjSzlicHd4TWQzZFYvMmxvRmRHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxSjduQUxwUEFSVDluSmNvOFV4N3RwNyIsIm5hbWUiOiJlZGl0IiwiYXJndW1lbnRzIjp7InBhdGgiOiIvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9wYWNrYWdlLmpzb24iLCJvbGRUZXh0IjoiXCJjb3B5LWFzc2V0c1wiOiBcIm1rZGlyIC1wIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL1wiLCIsIm5ld1RleHQiOiJcImNvcHktYXNzZXRzXCI6IFwibWtkaXIgLXAgZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvICYmIG1rZGlyIC1wIGRpc3QvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IgJiYgY3Agc3JjL2NvcmUvZXhwb3J0LWh0bWwvdGVtcGxhdGUuaHRtbCBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci8qLmpzIGRpc3QvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvXCIsIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjI1OSwiY2FjaGVSZWFkIjo3MTE5MiwiY2FjaGVXcml0ZSI6NjI5LCJ0b3RhbFRva2VucyI6NzIwODgsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDY0NzUwMDAwMDAwMDAwMDEsImNhY2hlUmVhZCI6MC4wMzU1OTU5OTk5OTk5OTk5OTYsImNhY2hlV3JpdGUiOjAuMDAzOTMxMjUsInRvdGFsIjowLjA0NjA0MjI0OTk5OTk5OTk5fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyMzI5MzQ1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiM2RkYjQ3NTgiLCJwYXJlbnRJZCI6IjlkZTRiNDZjIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1MjoxNS41MzdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUo3bkFMcFBBUlQ5bkpjbzhVeDd0cDciLCJ0b29sTmFtZSI6ImVkaXQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJTdWNjZXNzZnVsbHkgcmVwbGFjZWQgdGV4dCBpbiAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9wYWNrYWdlLmpzb24uIn1dLCJkZXRhaWxzIjp7ImRpZmYiOiIgICAgLi4uXG4gMzEgXHRcInNjcmlwdHNcIjoge1xuIDMyIFx0XHRcImNsZWFuXCI6IFwicm0gLXJmIGRpc3RcIixcbiAzMyBcdFx0XCJidWlsZFwiOiBcInRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvbiAmJiBjaG1vZCAreCBkaXN0L2NsaS5qcyAmJiBucG0gcnVuIGNvcHktYXNzZXRzXCIsXG4gMzQgXHRcdFwiYnVpbGQ6YmluYXJ5XCI6IFwibnBtIHJ1biBidWlsZCAmJiBidW4gYnVpbGQgLS1jb21waWxlIC4vZGlzdC9jbGkuanMgLS1vdXRmaWxlIGRpc3QvcGkgJiYgbnBtIHJ1biBjb3B5LWJpbmFyeS1hc3NldHNcIixcbi0zNSBcdFx0XCJjb3B5LWFzc2V0c1wiOiBcIm1rZGlyIC1wIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL1wiLFxuKzM1IFx0XHRcImNvcHktYXNzZXRzXCI6IFwibWtkaXIgLXAgZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvICYmIG1rZGlyIC1wIGRpc3QvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IgJiYgY3Agc3JjL2NvcmUvZXhwb3J0LWh0bWwvdGVtcGxhdGUuaHRtbCBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci8qLmpzIGRpc3QvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvXCIsXG4gMzYgXHRcdFwiY29weS1iaW5hcnktYXNzZXRzXCI6IFwiY3AgcGFja2FnZS5qc29uIGRpc3QvICYmIGNwIFJFQURNRS5tZCBkaXN0LyAmJiBjcCBDSEFOR0VMT0cubWQgZGlzdC8gJiYgbWtkaXIgLXAgZGlzdC90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvdGhlbWUvICYmIGNwIC1yIGRvY3MgZGlzdC8gJiYgY3AgLXIgZXhhbXBsZXMgZGlzdC9cIixcbiAzNyBcdFx0XCJ0ZXN0XCI6IFwidml0ZXN0IC0tcnVuXCIsXG4gMzggXHRcdFwicHJlcHVibGlzaE9ubHlcIjogXCJucG0gcnVuIGNsZWFuICYmIG5wbSBydW4gYnVpbGRcIlxuIDM5IFx0fSxcbiAgICAuLi4iLCJmaXJzdENoYW5nZWRMaW5lIjozNX0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzIzMzU1MzV9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxNzYzN2NlYiIsInBhcmVudElkIjoiM2RkYjQ3NTgiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU0OjU0LjU5OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ik5vdyBsZXQgbWUgY3JlYXRlIHRoZSB0ZW1wbGF0ZS5odG1sLiBUaGlzIGlzIHRoZSBtYWluIGZpbGUgd2l0aCBhbGwgdGhlIENTUywgdGhlIGNsaWVudC1zaWRlIEphdmFTY3JpcHQgZm9yIHJlbmRlcmluZywgYW5kIHBsYWNlaG9sZGVycyBmb3IgZGF0YSBpbmplY3Rpb24uIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFc1FDQ2tZSUN4Z0NLa0JwUU1TWmozRFp6ODdvLzRLR0Nrekt2bS9FOHZ1Z014NlhCVDcxWTkweFByM25LZmRxRTBQUG80R0IzUWlVVDVZRXgzMWsyL3RWWXlkaUQrenBhZ2RjRWd3b1VGdFI2WkRyUDNDNmVId2FETm8zUzdwYW9id1psMmVSU2lJdzNlMnVHcmF6d0MwUFlLU1hYakV5OGtuM1lPcHpqL1IxSzNqR3J4endTaHMvZ3dwamxsajVCd3lhSlpFZDdsTkpLcXNCVUJwWHYzSFFlM2t5N0ZqZE81ajhWU2d5dXd0a2IzbkxRVEdFQ1FwREU2SW8vM2ZxQTg1eThFcXdldDZnejE1cS9VSWRsWXd0K0plOVpxcWdBc09ObXoreHZGMUdvOVRCMmR2QkhtZXdndkw5VUwwRGxlb01NVXIyUWZ1bUdCQ20wNVRWTWRMc2NLdHZXWXowZWxwZFpua2xDU3hHRWR5bWhBYkdBNW0wcm11SCtKNkVtYnJiTDEveUlxc3o5c0t2d3B6M2Q0RjRCTkZYYjR2VnFCNEduNjNBNHBDUnNiVnB6czdCR0FFPSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiTm93IGxldCBtZSBjcmVhdGUgdGhlIHRlbXBsYXRlLmh0bWwgd2l0aCBDU1MsIGNsaWVudC1zaWRlIEpTIGZvciB0cmVlIG5hdmlnYXRpb24gYW5kIG1lc3NhZ2UgcmVuZGVyaW5nOiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUtVNWI0UnRVU1lBMXRueWtZY1JuOWIiLCJuYW1lIjoid3JpdGUiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWwiLCJjb250ZW50IjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbjxoZWFkPlxuICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbiAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjBcIj5cbiAgPHRpdGxlPnt7VElUTEV9fTwvdGl0bGU+XG4gIDxzdHlsZT5cbiAgICA6cm9vdCB7XG4gICAgICB7e1RIRU1FX1ZBUlN9fVxuICAgICAgLS1ib2R5LWJnOiB7e0JPRFlfQkd9fTtcbiAgICAgIC0tY29udGFpbmVyLWJnOiB7e0NPTlRBSU5FUl9CR319O1xuICAgIH1cblxuICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuICAgIGJvZHkge1xuICAgICAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgJ0Nhc2NhZGlhIENvZGUnLCAnU291cmNlIENvZGUgUHJvJywgTWVubG8sIENvbnNvbGFzLCAnRGVqYVZ1IFNhbnMgTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib2R5LWJnKTtcbiAgICB9XG5cbiAgICAjYXBwIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICB9XG5cbiAgICAvKiBTaWRlYmFyICovXG4gICAgI3NpZGViYXIge1xuICAgICAgd2lkdGg6IDI4MHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29udGFpbmVyLWJnKTtcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG5cbiAgICAuc2lkZWJhci1oZWFkZXIge1xuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuc2lkZWJhci1oZWFkZXIgaDIge1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjb2xvcjogdmFyKC0tYWNjZW50KTtcbiAgICB9XG5cbiAgICAuc2lkZWJhci1oZWFkZXIgYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gICAgICBjb2xvcjogdmFyKC0tYm9keS1iZyk7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLnNpZGViYXItaGVhZGVyIGJ1dHRvbjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgLnRyZWUtY29udGFpbmVyIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgfVxuXG4gICAgLnRyZWUtbm9kZSB7XG4gICAgICBwYWRkaW5nOiA0cHggOHB4IDRweCAxNnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC50cmVlLW5vZGU6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjEpO1xuICAgIH1cblxuICAgIC50cmVlLW5vZGUuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC4xNSk7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tYWNjZW50KTtcbiAgICB9XG5cbiAgICAudHJlZS1ub2RlLmluLXBhdGgge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWJvcmRlckFjY2VudCk7XG4gICAgfVxuXG4gICAgLnRyZWUtbm9kZS1pY29uIHtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLnRyZWUtbm9kZS1jb250ZW50IHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC50cmVlLW5vZGUtdHlwZSB7XG4gICAgICBjb2xvcjogdmFyKC0tbXV0ZWQpO1xuICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgIH1cblxuICAgIC50cmVlLW5vZGUtcHJldmlldyB7XG4gICAgICBjb2xvcjogdmFyKC0tZGltKTtcbiAgICB9XG5cbiAgICAudHJlZS1jaGlsZHJlbiB7XG4gICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICB9XG5cbiAgICAudHJlZS1icmFuY2gtaW5kaWNhdG9yIHtcbiAgICAgIGNvbG9yOiB2YXIoLS13YXJuaW5nKTtcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgfVxuXG4gICAgLyogTWFpbiBjb250ZW50ICovXG4gICAgI2NvbnRlbnQge1xuICAgICAgZmxleDogMTtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBwYWRkaW5nOiAyNHB4O1xuICAgICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICB9XG5cbiAgICAvKiBIZWFkZXIgKi9cbiAgICAuaGVhZGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbnRhaW5lci1iZyk7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuaGVhZGVyIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6IHZhcigtLWJvcmRlckFjY2VudCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIH1cblxuICAgIC5oZWFkZXItaW5mbyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGdhcDogM3B4O1xuICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgIH1cblxuICAgIC5pbmZvLWl0ZW0ge1xuICAgICAgY29sb3I6IHZhcigtLWRpbSk7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIH1cblxuICAgIC5pbmZvLWxhYmVsIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgfVxuXG4gICAgLmluZm8tdmFsdWUge1xuICAgICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAvKiBNZXNzYWdlcyAqL1xuICAgICNtZXNzYWdlcyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGdhcDogMTZweDtcbiAgICB9XG5cbiAgICAubWVzc2FnZS10aW1lc3RhbXAge1xuICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgY29sb3I6IHZhcigtLWRpbSk7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgLnVzZXItbWVzc2FnZSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS11c2VyTWVzc2FnZUJnKTtcbiAgICAgIGNvbG9yOiB2YXIoLS11c2VyTWVzc2FnZVRleHQpO1xuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIH1cblxuICAgIC5hc3Npc3RhbnQtbWVzc2FnZSB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5hc3Npc3RhbnQtdGV4dCB7XG4gICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgfVxuXG4gICAgLnRoaW5raW5nLXRleHQge1xuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgY29sb3I6IHZhcigtLXRoaW5raW5nVGV4dCk7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgfVxuXG4gICAgLyogVG9vbCBleGVjdXRpb24gKi9cbiAgICAudG9vbC1leGVjdXRpb24ge1xuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIH1cblxuICAgIC50b29sLWV4ZWN1dGlvbi5wZW5kaW5nIHsgYmFja2dyb3VuZDogdmFyKC0tdG9vbFBlbmRpbmdCZyk7IH1cbiAgICAudG9vbC1leGVjdXRpb24uc3VjY2VzcyB7IGJhY2tncm91bmQ6IHZhcigtLXRvb2xTdWNjZXNzQmcpOyB9XG4gICAgLnRvb2wtZXhlY3V0aW9uLmVycm9yIHsgYmFja2dyb3VuZDogdmFyKC0tdG9vbEVycm9yQmcpOyB9XG5cbiAgICAudG9vbC1oZWFkZXIge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgfVxuXG4gICAgLnRvb2wtbmFtZSB7XG4gICAgICBjb2xvcjogdmFyKC0tdG9vbFRpdGxlKTtcbiAgICB9XG5cbiAgICAudG9vbC1wYXRoIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ib3JkZXJBY2NlbnQpO1xuICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgIH1cblxuICAgIC50b29sLWNvbW1hbmQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgfVxuXG4gICAgLnRvb2wtb3V0cHV0IHtcbiAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICBjb2xvcjogdmFyKC0tdG9vbE91dHB1dCk7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgfVxuXG4gICAgLnRvb2wtb3V0cHV0IHByZSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB9XG5cbiAgICAudG9vbC1vdXRwdXQuZXhwYW5kYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGUgLm91dHB1dC1mdWxsIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGUuZXhwYW5kZWQgLm91dHB1dC1wcmV2aWV3IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnRvb2wtb3V0cHV0LmV4cGFuZGFibGUuZXhwYW5kZWQgLm91dHB1dC1mdWxsIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5leHBhbmQtaGludCB7XG4gICAgICBjb2xvcjogdmFyKC0tYm9yZGVyQWNjZW50KTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICB9XG5cbiAgICAvKiBEaWZmICovXG4gICAgLnRvb2wtZGlmZiB7XG4gICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICB9XG5cbiAgICAuZGlmZi1hZGRlZCB7IGNvbG9yOiB2YXIoLS10b29sRGlmZkFkZGVkKTsgfVxuICAgIC5kaWZmLXJlbW92ZWQgeyBjb2xvcjogdmFyKC0tdG9vbERpZmZSZW1vdmVkKTsgfVxuICAgIC5kaWZmLWNvbnRleHQgeyBjb2xvcjogdmFyKC0tdG9vbERpZmZDb250ZXh0KTsgfVxuXG4gICAgLyogTW9kZWwgY2hhbmdlICovXG4gICAgLm1vZGVsLWNoYW5nZSB7XG4gICAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRvb2xQZW5kaW5nQmcpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgY29sb3I6IHZhcigtLWRpbSk7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgfVxuXG4gICAgLm1vZGVsLW5hbWUge1xuICAgICAgY29sb3I6IHZhcigtLWJvcmRlckFjY2VudCk7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICAvKiBDb21wYWN0aW9uICovXG4gICAgLmNvbXBhY3Rpb24ge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY3VzdG9tTWVzc2FnZUJnKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLmNvbXBhY3Rpb24taGVhZGVyIHtcbiAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuXG4gICAgLmNvbXBhY3Rpb24taGVhZGVyOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC4xKTtcbiAgICB9XG5cbiAgICAuY29tcGFjdGlvbi10b2dnbGUge1xuICAgICAgY29sb3I6IHZhcigtLWJvcmRlckFjY2VudCk7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycztcbiAgICB9XG5cbiAgICAuY29tcGFjdGlvbi5leHBhbmRlZCAuY29tcGFjdGlvbi10b2dnbGUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgIH1cblxuICAgIC5jb21wYWN0aW9uLXRpdGxlIHtcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIC5jb21wYWN0aW9uLWNvbnRlbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDAgMTZweCAxNnB4O1xuICAgIH1cblxuICAgIC5jb21wYWN0aW9uLmV4cGFuZGVkIC5jb21wYWN0aW9uLWNvbnRlbnQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLmNvbXBhY3Rpb24tc3VtbWFyeSB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIH1cblxuICAgIC8qIFN5c3RlbSBwcm9tcHQgKi9cbiAgICAuc3lzdGVtLXByb21wdCB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jdXN0b21NZXNzYWdlQmcpO1xuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuc3lzdGVtLXByb21wdC1oZWFkZXIge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjb2xvcjogdmFyKC0td2FybmluZyk7XG4gICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgfVxuXG4gICAgLnN5c3RlbS1wcm9tcHQtY29udGVudCB7XG4gICAgICBjb2xvcjogdmFyKC0tZGltKTtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAvKiBUb29scyBsaXN0ICovXG4gICAgLnRvb2xzLWxpc3Qge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY3VzdG9tTWVzc2FnZUJnKTtcbiAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgfVxuXG4gICAgLnRvb2xzLWhlYWRlciB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGNvbG9yOiB2YXIoLS13YXJuaW5nKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICB9XG5cbiAgICAudG9vbC1pdGVtIHtcbiAgICAgIG1hcmdpbjogNHB4IDA7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgfVxuXG4gICAgLnRvb2wtaXRlbS1uYW1lIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIH1cblxuICAgIC50b29sLWl0ZW0tZGVzYyB7XG4gICAgICBjb2xvcjogdmFyKC0tZGltKTtcbiAgICB9XG5cbiAgICAvKiBIb29rL2N1c3RvbSBtZXNzYWdlcyAqL1xuICAgIC5ob29rLW1lc3NhZ2Uge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY3VzdG9tTWVzc2FnZUJnKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1jdXN0b21NZXNzYWdlVGV4dCk7XG4gICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgfVxuXG4gICAgLmhvb2stdHlwZSB7XG4gICAgICBjb2xvcjogdmFyKC0tY3VzdG9tTWVzc2FnZUxhYmVsKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIH1cblxuICAgIC8qIEJyYW5jaCBzdW1tYXJ5ICovXG4gICAgLmJyYW5jaC1zdW1tYXJ5IHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWN1c3RvbU1lc3NhZ2VCZyk7XG4gICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgfVxuXG4gICAgLmJyYW5jaC1zdW1tYXJ5LWhlYWRlciB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ib3JkZXJBY2NlbnQpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIH1cblxuICAgIC8qIEVycm9yICovXG4gICAgLmVycm9yLXRleHQge1xuICAgICAgY29sb3I6IHZhcigtLWVycm9yKTtcbiAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICB9XG5cbiAgICAvKiBJbWFnZXMgKi9cbiAgICAubWVzc2FnZS1pbWFnZXMge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICB9XG5cbiAgICAubWVzc2FnZS1pbWFnZSB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIG1hcmdpbjogNHB4IDA7XG4gICAgfVxuXG4gICAgLyogTWFya2Rvd24gY29udGVudCAqL1xuICAgIC5tYXJrZG93bi1jb250ZW50IGgxLFxuICAgIC5tYXJrZG93bi1jb250ZW50IGgyLFxuICAgIC5tYXJrZG93bi1jb250ZW50IGgzLFxuICAgIC5tYXJrZG93bi1jb250ZW50IGg0LFxuICAgIC5tYXJrZG93bi1jb250ZW50IGg1LFxuICAgIC5tYXJrZG93bi1jb250ZW50IGg2IHtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZEhlYWRpbmcpO1xuICAgICAgbWFyZ2luOiAxZW0gMCAwLjVlbSAwO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgLm1hcmtkb3duLWNvbnRlbnQgaDEgeyBmb250LXNpemU6IDEuNGVtOyB9XG4gICAgLm1hcmtkb3duLWNvbnRlbnQgaDIgeyBmb250LXNpemU6IDEuMmVtOyB9XG4gICAgLm1hcmtkb3duLWNvbnRlbnQgaDMgeyBmb250LXNpemU6IDEuMWVtOyB9XG4gICAgLm1hcmtkb3duLWNvbnRlbnQgcCB7IG1hcmdpbjogMC41ZW0gMDsgfVxuXG4gICAgLm1hcmtkb3duLWNvbnRlbnQgYSB7XG4gICAgICBjb2xvcjogdmFyKC0tbWRMaW5rKTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgIC5tYXJrZG93bi1jb250ZW50IGNvZGUge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjIpO1xuICAgICAgY29sb3I6IHZhcigtLW1kQ29kZSk7XG4gICAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLm1hcmtkb3duLWNvbnRlbnQgcHJlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICB9XG5cbiAgICAubWFya2Rvd24tY29udGVudCBwcmUgY29kZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBjb2xvcjogdmFyKC0tbWRDb2RlQmxvY2spO1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgfVxuXG4gICAgLm1hcmtkb3duLWNvbnRlbnQgYmxvY2txdW90ZSB7XG4gICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLW1kUXVvdGVCb3JkZXIpO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICAgICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgICAgY29sb3I6IHZhcigtLW1kUXVvdGUpO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cblxuICAgIC5tYXJrZG93bi1jb250ZW50IHVsLFxuICAgIC5tYXJrZG93bi1jb250ZW50IG9sIHtcbiAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICB9XG5cbiAgICAubWFya2Rvd24tY29udGVudCBsaSB7IG1hcmdpbjogMC4yNWVtIDA7IH1cbiAgICAubWFya2Rvd24tY29udGVudCBsaTo6bWFya2VyIHsgY29sb3I6IHZhcigtLW1kTGlzdEJ1bGxldCk7IH1cblxuICAgIC5tYXJrZG93bi1jb250ZW50IGhyIHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1tZEhyKTtcbiAgICAgIG1hcmdpbjogMWVtIDA7XG4gICAgfVxuXG4gICAgLm1hcmtkb3duLWNvbnRlbnQgdGFibGUge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5tYXJrZG93bi1jb250ZW50IHRoLFxuICAgIC5tYXJrZG93bi1jb250ZW50IHRkIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1kQ29kZUJsb2NrQm9yZGVyKTtcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICAubWFya2Rvd24tY29udGVudCB0aCB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMSk7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICAubWFya2Rvd24tY29udGVudCBpbWcge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIH1cblxuICAgIC8qIFN5bnRheCBoaWdobGlnaHRpbmcgKi9cbiAgICAuaGxqcyB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gICAgLmhsanMtY29tbWVudCwgLmhsanMtcXVvdGUgeyBjb2xvcjogdmFyKC0tc3ludGF4Q29tbWVudCk7IH1cbiAgICAuaGxqcy1rZXl3b3JkLCAuaGxqcy1zZWxlY3Rvci10YWcgeyBjb2xvcjogdmFyKC0tc3ludGF4S2V5d29yZCk7IH1cbiAgICAuaGxqcy1udW1iZXIsIC5obGpzLWxpdGVyYWwgeyBjb2xvcjogdmFyKC0tc3ludGF4TnVtYmVyKTsgfVxuICAgIC5obGpzLXN0cmluZywgLmhsanMtZG9jdGFnIHsgY29sb3I6IHZhcigtLXN5bnRheFN0cmluZyk7IH1cbiAgICAuaGxqcy10aXRsZSwgLmhsanMtc2VjdGlvbiwgLmhsanMtbmFtZSB7IGNvbG9yOiB2YXIoLS1zeW50YXhGdW5jdGlvbik7IH1cbiAgICAuaGxqcy10eXBlLCAuaGxqcy1jbGFzcywgLmhsanMtYnVpbHRfaW4geyBjb2xvcjogdmFyKC0tc3ludGF4VHlwZSk7IH1cbiAgICAuaGxqcy1hdHRyLCAuaGxqcy12YXJpYWJsZSwgLmhsanMtcGFyYW1zIHsgY29sb3I6IHZhcigtLXN5bnRheFZhcmlhYmxlKTsgfVxuICAgIC5obGpzLW1ldGEgeyBjb2xvcjogdmFyKC0tc3ludGF4S2V5d29yZCk7IH1cblxuICAgIC8qIEZvb3RlciAqL1xuICAgIC5mb290ZXIge1xuICAgICAgbWFyZ2luLXRvcDogNDhweDtcbiAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogdmFyKC0tZGltKTtcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB9XG5cbiAgICAvKiBNb2JpbGUgKi9cbiAgICAjc2lkZWJhci10b2dnbGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMTBweDtcbiAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICB6LWluZGV4OiAxMDA7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQpO1xuICAgICAgY29sb3I6IHZhcigtLWJvZHktYmcpO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAjc2lkZWJhciB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgbGVmdDogLTI4MHB4O1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogOTk7XG4gICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4zcztcbiAgICAgIH1cblxuICAgICAgI3NpZGViYXIub3BlbiB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG5cbiAgICAgICNzaWRlYmFyLXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAjY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDYwcHggMTZweCAyNHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBwcmludCB7XG4gICAgICAjc2lkZWJhciwgI3NpZGViYXItdG9nZ2xlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gICAgICBib2R5IHsgYmFja2dyb3VuZDogd2hpdGU7IGNvbG9yOiBibGFjazsgfVxuICAgICAgI2NvbnRlbnQgeyBtYXgtd2lkdGg6IG5vbmU7IH1cbiAgICB9XG4gIDwvc3R5bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgPHNjcmlwdCBpZD1cInNlc3Npb24tZGF0YVwiIHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+e3tTRVNTSU9OX0RBVEF9fTwvc2NyaXB0PlxuXG4gIDxidXR0b24gaWQ9XCJzaWRlYmFyLXRvZ2dsZVwiPuKYsDwvYnV0dG9uPlxuXG4gIDxkaXYgaWQ9XCJhcHBcIj5cbiAgICA8YXNpZGUgaWQ9XCJzaWRlYmFyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1oZWFkZXJcIj5cbiAgICAgICAgPGgyPlNlc3Npb24gVHJlZTwvaDI+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZXNldC10by1sZWFmXCI+UmVzZXQgdG8gTGVhZjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidHJlZS1jb250YWluZXJcIiBpZD1cInRyZWUtY29udGFpbmVyXCI+PC9kaXY+XG4gICAgPC9hc2lkZT5cbiAgICA8bWFpbiBpZD1cImNvbnRlbnRcIj5cbiAgICAgIDxkaXYgaWQ9XCJoZWFkZXItY29udGFpbmVyXCI+PC9kaXY+XG4gICAgICA8ZGl2IGlkPVwibWVzc2FnZXNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgR2VuZXJhdGVkIGJ5IHt7QVBQX05BTUV9fSBvbiB7e0dFTkVSQVRFRF9EQVRFfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBWZW5kb3JlZDogbWFya2VkLmpzIC0tPlxuICA8c2NyaXB0Pnt7TUFSS0VEX0pTfX08L3NjcmlwdD5cblxuICA8IS0tIFZlbmRvcmVkOiBoaWdobGlnaHQuanMgLS0+XG4gIDxzY3JpcHQ+e3tISUdITElHSFRfSlN9fTwvc2NyaXB0PlxuXG4gIDwhLS0gU2Vzc2lvbiByZW5kZXJlciAtLT5cbiAgPHNjcmlwdD5cbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAndXNlIHN0cmljdCc7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXNzaW9uLWRhdGEnKS50ZXh0Q29udGVudCk7XG4gICAgICBjb25zdCB7IGhlYWRlciwgZW50cmllcywgbGVhZklkLCBzeXN0ZW1Qcm9tcHQsIHRvb2xzIH0gPSBkYXRhO1xuXG4gICAgICAvLyBCdWlsZCBlbnRyeSBpbmRleFxuICAgICAgY29uc3QgYnlJZCA9IG5ldyBNYXAoKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICBieUlkLnNldChlbnRyeS5pZCwgZW50cnkpO1xuICAgICAgfVxuXG4gICAgICAvLyBCdWlsZCB0cmVlIHN0cnVjdHVyZVxuICAgICAgZnVuY3Rpb24gYnVpbGRUcmVlKCkge1xuICAgICAgICBjb25zdCBub2RlTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCByb290cyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIG5vZGVNYXAuc2V0KGVudHJ5LmlkLCB7IGVudHJ5LCBjaGlsZHJlbjogW10gfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gbm9kZU1hcC5nZXQoZW50cnkuaWQpO1xuICAgICAgICAgIGlmICghZW50cnkucGFyZW50SWQpIHtcbiAgICAgICAgICAgIHJvb3RzLnB1c2gobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGVNYXAuZ2V0KGVudHJ5LnBhcmVudElkKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByb290cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvcnQgY2hpbGRyZW4gYnkgdGltZXN0YW1wXG4gICAgICAgIGZ1bmN0aW9uIHNvcnRDaGlsZHJlbihub2RlKSB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbi5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgbmV3IERhdGUoYS5lbnRyeS50aW1lc3RhbXApLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuZW50cnkudGltZXN0YW1wKS5nZXRUaW1lKClcbiAgICAgICAgICApO1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChzb3J0Q2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJvb3RzLmZvckVhY2goc29ydENoaWxkcmVuKTtcblxuICAgICAgICByZXR1cm4gcm9vdHM7XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCBwYXRoIGZyb20gcm9vdCB0byB0YXJnZXRcbiAgICAgIGZ1bmN0aW9uIGdldFBhdGgodGFyZ2V0SWQpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudCA9IGJ5SWQuZ2V0KHRhcmdldElkKTtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoY3VycmVudCk7XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50SWQgPyBieUlkLmdldChjdXJyZW50LnBhcmVudElkKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCBlbnRyeSBwcmV2aWV3IHRleHRcbiAgICAgIGZ1bmN0aW9uIGdldEVudHJ5UHJldmlldyhlbnRyeSkge1xuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ21lc3NhZ2UnKSB7XG4gICAgICAgICAgY29uc3QgbXNnID0gZW50cnkubWVzc2FnZTtcbiAgICAgICAgICBpZiAobXNnLnJvbGUgPT09ICd1c2VyJykge1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGdldFRleHRDb250ZW50KG1zZy5jb250ZW50KTtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0LnNsaWNlKDAsIDUwKSArICh0ZXh0Lmxlbmd0aCA+IDUwID8gJy4uLicgOiAnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtc2cucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRCbG9jayA9IG1zZy5jb250ZW50LmZpbmQoYyA9PiBjLnR5cGUgPT09ICd0ZXh0Jyk7XG4gICAgICAgICAgICBpZiAodGV4dEJsb2NrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRleHQgPSB0ZXh0QmxvY2sudGV4dDtcbiAgICAgICAgICAgICAgcmV0dXJuIHRleHQuc2xpY2UoMCwgNTApICsgKHRleHQubGVuZ3RoID4gNTAgPyAnLi4uJyA6ICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRvb2xDYWxsID0gbXNnLmNvbnRlbnQuZmluZChjID0+IGMudHlwZSA9PT0gJ3Rvb2xDYWxsJyk7XG4gICAgICAgICAgICBpZiAodG9vbENhbGwpIHJldHVybiBgJHt0b29sQ2FsbC5uYW1lfSguLi4pYDtcbiAgICAgICAgICAgIHJldHVybiAnKHJlc3BvbnNlKSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnY29tcGFjdGlvbicpIHJldHVybiAnQ29udGV4dCBjb21wYWN0ZWQnO1xuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ21vZGVsX2NoYW5nZScpIHJldHVybiBg4oaSICR7ZW50cnkubW9kZWxJZH1gO1xuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ2JyYW5jaF9zdW1tYXJ5JykgcmV0dXJuICdCcmFuY2ggc3VtbWFyeSc7XG4gICAgICAgIHJldHVybiBlbnRyeS50eXBlO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgZW50cnkgaWNvblxuICAgICAgZnVuY3Rpb24gZ2V0RW50cnlJY29uKGVudHJ5KSB7XG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnbWVzc2FnZScpIHtcbiAgICAgICAgICBjb25zdCByb2xlID0gZW50cnkubWVzc2FnZS5yb2xlO1xuICAgICAgICAgIGlmIChyb2xlID09PSAndXNlcicpIHJldHVybiAn8J+RpCc7XG4gICAgICAgICAgaWYgKHJvbGUgPT09ICdhc3Npc3RhbnQnKSByZXR1cm4gJ/CfpJYnO1xuICAgICAgICAgIGlmIChyb2xlID09PSAnYmFzaEV4ZWN1dGlvbicpIHJldHVybiAnJCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdjb21wYWN0aW9uJykgcmV0dXJuICfwn5OmJztcbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdtb2RlbF9jaGFuZ2UnKSByZXR1cm4gJ/CflIQnO1xuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ2JyYW5jaF9zdW1tYXJ5JykgcmV0dXJuICfwn4y/JztcbiAgICAgICAgcmV0dXJuICfigKInO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW5kZXIgdHJlZVxuICAgICAgbGV0IGN1cnJlbnRQYXRoID0gW107XG5cbiAgICAgIGZ1bmN0aW9uIHJlbmRlclRyZWUoKSB7XG4gICAgICAgIGNvbnN0IHRyZWUgPSBidWlsZFRyZWUoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyZWUtY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnJztcblxuICAgICAgICBmdW5jdGlvbiByZW5kZXJOb2RlKG5vZGUsIGRlcHRoID0gMCkge1xuICAgICAgICAgIGNvbnN0IGVudHJ5ID0gbm9kZS5lbnRyeTtcbiAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gJ3RyZWUtbm9kZSc7XG4gICAgICAgICAgZGl2LnN0eWxlLnBhZGRpbmdMZWZ0ID0gKDE2ICsgZGVwdGggKiAxMikgKyAncHgnO1xuICAgICAgICAgIGRpdi5kYXRhc2V0LmlkID0gZW50cnkuaWQ7XG5cbiAgICAgICAgICBpZiAoY3VycmVudFBhdGguc29tZShlID0+IGUuaWQgPT09IGVudHJ5LmlkKSkge1xuICAgICAgICAgICAgZGl2LmNsYXNzTGlzdC5hZGQoJ2luLXBhdGgnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudHJ5LmlkID09PSBjdXJyZW50UGF0aFtjdXJyZW50UGF0aC5sZW5ndGggLSAxXT8uaWQpIHtcbiAgICAgICAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgIGljb24uY2xhc3NOYW1lID0gJ3RyZWUtbm9kZS1pY29uJztcbiAgICAgICAgICBpY29uLnRleHRDb250ZW50ID0gZ2V0RW50cnlJY29uKGVudHJ5KTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAndHJlZS1ub2RlLWNvbnRlbnQnO1xuICAgICAgICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gYDxzcGFuIGNsYXNzPVwidHJlZS1ub2RlLXByZXZpZXdcIj4ke2VzY2FwZUh0bWwoZ2V0RW50cnlQcmV2aWV3KGVudHJ5KSl9PC9zcGFuPmA7XG5cbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBicmFuY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBicmFuY2guY2xhc3NOYW1lID0gJ3RyZWUtYnJhbmNoLWluZGljYXRvcic7XG4gICAgICAgICAgICBicmFuY2gudGV4dENvbnRlbnQgPSBgKCR7bm9kZS5jaGlsZHJlbi5sZW5ndGh9IGJyYW5jaGVzKWA7XG4gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGJyYW5jaCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGl2LmFwcGVuZENoaWxkKGljb24pO1xuICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChjb250ZW50KTtcblxuICAgICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IG5hdmlnYXRlVG8oZW50cnkuaWQpKTtcblxuICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkaXYpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZW5kZXJOb2RlKGNoaWxkLCBkZXB0aCArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgcm9vdCBvZiB0cmVlKSB7XG4gICAgICAgICAgcmVuZGVyTm9kZShyb290KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBHZXQgdGV4dCBjb250ZW50IGZyb20gbWVzc2FnZSBjb250ZW50XG4gICAgICBmdW5jdGlvbiBnZXRUZXh0Q29udGVudChjb250ZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHJldHVybiBjb250ZW50O1xuICAgICAgICByZXR1cm4gY29udGVudFxuICAgICAgICAgIC5maWx0ZXIoYyA9PiBjLnR5cGUgPT09ICd0ZXh0JylcbiAgICAgICAgICAubWFwKGMgPT4gYy50ZXh0KVxuICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgIH1cblxuICAgICAgLy8gRXNjYXBlIEhUTUxcbiAgICAgIGZ1bmN0aW9uIGVzY2FwZUh0bWwodGV4dCkge1xuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbmZpZ3VyZSBtYXJrZWRcbiAgICAgIG1hcmtlZC5zZXRPcHRpb25zKHtcbiAgICAgICAgYnJlYWtzOiB0cnVlLFxuICAgICAgICBnZm06IHRydWUsXG4gICAgICAgIGhpZ2hsaWdodDogZnVuY3Rpb24oY29kZSwgbGFuZykge1xuICAgICAgICAgIGlmIChsYW5nICYmIGhsanMuZ2V0TGFuZ3VhZ2UobGFuZykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBobGpzLmhpZ2hsaWdodChjb2RlLCB7IGxhbmd1YWdlOiBsYW5nIH0pLnZhbHVlO1xuICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXNjYXBlSHRtbChjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlbmRlciBtYXJrZG93blxuICAgICAgZnVuY3Rpb24gcmVuZGVyTWFya2Rvd24odGV4dCkge1xuICAgICAgICByZXR1cm4gbWFya2VkLnBhcnNlKHRleHQpO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3JtYXQgdGltZXN0YW1wXG4gICAgICBmdW5jdGlvbiBmb3JtYXRUaW1lc3RhbXAodHMpIHtcbiAgICAgICAgaWYgKCF0cykgcmV0dXJuICcnO1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpO1xuICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodW5kZWZpbmVkLCB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIHNlY29uZDogJzItZGlnaXQnIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBTaG9ydGVuIHBhdGhcbiAgICAgIGZ1bmN0aW9uIHNob3J0ZW5QYXRoKHBhdGgpIHtcbiAgICAgICAgLy8gU2ltcGxlIGhvbWUgZGlyIHNob3J0ZW5pbmcgKHdvbid0IHdvcmsgcGVyZmVjdGx5IGluIGJyb3dzZXIgYnV0IGdvb2QgZW5vdWdoKVxuICAgICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9eXFwvVXNlcnNcXC9bXi9dKy8sICd+JykucmVwbGFjZSgvXlxcL2hvbWVcXC9bXi9dKy8sICd+Jyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgdG9vbCByZXN1bHQgZm9yIGEgdG9vbCBjYWxsXG4gICAgICBmdW5jdGlvbiBmaW5kVG9vbFJlc3VsdCh0b29sQ2FsbElkKSB7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnbWVzc2FnZScgJiYgZW50cnkubWVzc2FnZS5yb2xlID09PSAndG9vbFJlc3VsdCcpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeS5tZXNzYWdlLnRvb2xDYWxsSWQgPT09IHRvb2xDYWxsSWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgbGFuZ3VhZ2UgZnJvbSBmaWxlIHBhdGhcbiAgICAgIGZ1bmN0aW9uIGdldExhbmd1YWdlRnJvbVBhdGgoZmlsZVBhdGgpIHtcbiAgICAgICAgY29uc3QgZXh0ID0gZmlsZVBhdGguc3BsaXQoJy4nKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgZXh0VG9MYW5nID0ge1xuICAgICAgICAgIHRzOiAndHlwZXNjcmlwdCcsIHRzeDogJ3R5cGVzY3JpcHQnLCBqczogJ2phdmFzY3JpcHQnLCBqc3g6ICdqYXZhc2NyaXB0JyxcbiAgICAgICAgICBweTogJ3B5dGhvbicsIHJiOiAncnVieScsIHJzOiAncnVzdCcsIGdvOiAnZ28nLCBqYXZhOiAnamF2YScsXG4gICAgICAgICAgYzogJ2MnLCBjcHA6ICdjcHAnLCBoOiAnYycsIGhwcDogJ2NwcCcsIGNzOiAnY3NoYXJwJyxcbiAgICAgICAgICBwaHA6ICdwaHAnLCBzaDogJ2Jhc2gnLCBiYXNoOiAnYmFzaCcsIHpzaDogJ2Jhc2gnLFxuICAgICAgICAgIHNxbDogJ3NxbCcsIGh0bWw6ICdodG1sJywgY3NzOiAnY3NzJywgc2NzczogJ3Njc3MnLFxuICAgICAgICAgIGpzb246ICdqc29uJywgeWFtbDogJ3lhbWwnLCB5bWw6ICd5YW1sJywgeG1sOiAneG1sJyxcbiAgICAgICAgICBtZDogJ21hcmtkb3duJywgZG9ja2VyZmlsZTogJ2RvY2tlcmZpbGUnXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBleHRUb0xhbmdbZXh0XTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9ybWF0IGV4cGFuZGFibGUgb3V0cHV0XG4gICAgICBmdW5jdGlvbiBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KHRleHQsIG1heExpbmVzLCBsYW5nKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggPD0gbWF4TGluZXMpIHtcbiAgICAgICAgICBpZiAobGFuZykge1xuICAgICAgICAgICAgbGV0IGhpZ2hsaWdodGVkO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWQgPSBobGpzLmhpZ2hsaWdodCh0ZXh0LCB7IGxhbmd1YWdlOiBsYW5nIH0pLnZhbHVlO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIGhpZ2hsaWdodGVkID0gZXNjYXBlSHRtbCh0ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0XCI+PHByZT48Y29kZSBjbGFzcz1cImhsanNcIj4ke2hpZ2hsaWdodGVkfTwvY29kZT48L3ByZT48L2Rpdj5gO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dFwiPjxwcmU+JHtlc2NhcGVIdG1sKHRleHQpfTwvcHJlPjwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2aWV3ID0gbGluZXMuc2xpY2UoMCwgbWF4TGluZXMpLmpvaW4oJ1xcbicpO1xuICAgICAgICBjb25zdCByZW1haW5pbmcgPSBsaW5lcy5sZW5ndGggLSBtYXhMaW5lcztcblxuICAgICAgICBsZXQgcHJldmlld0h0bWwsIGZ1bGxIdG1sO1xuICAgICAgICBpZiAobGFuZykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcmV2aWV3SHRtbCA9IGhsanMuaGlnaGxpZ2h0KHByZXZpZXcsIHsgbGFuZ3VhZ2U6IGxhbmcgfSkudmFsdWU7XG4gICAgICAgICAgICBmdWxsSHRtbCA9IGhsanMuaGlnaGxpZ2h0KHRleHQsIHsgbGFuZ3VhZ2U6IGxhbmcgfSkudmFsdWU7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBwcmV2aWV3SHRtbCA9IGVzY2FwZUh0bWwocHJldmlldyk7XG4gICAgICAgICAgICBmdWxsSHRtbCA9IGVzY2FwZUh0bWwodGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByZXZpZXdIdG1sID0gZXNjYXBlSHRtbChwcmV2aWV3KTtcbiAgICAgICAgICBmdWxsSHRtbCA9IGVzY2FwZUh0bWwodGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ0b29sLW91dHB1dCBleHBhbmRhYmxlXCIgb25jbGljaz1cInRoaXMuY2xhc3NMaXN0LnRvZ2dsZSgnZXhwYW5kZWQnKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRwdXQtcHJldmlld1wiPjxwcmU+PGNvZGUgY2xhc3M9XCJobGpzXCI+JHtwcmV2aWV3SHRtbH08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImV4cGFuZC1oaW50XCI+Li4uICgke3JlbWFpbmluZ30gbW9yZSBsaW5lcykgLSBjbGljayB0byBleHBhbmQ8L2Rpdj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0cHV0LWZ1bGxcIj48cHJlPjxjb2RlIGNsYXNzPVwiaGxqc1wiPiR7ZnVsbEh0bWx9PC9jb2RlPjwvcHJlPjwvZGl2PlxuICAgICAgICA8L2Rpdj5gO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW5kZXIgdG9vbCBjYWxsXG4gICAgICBmdW5jdGlvbiByZW5kZXJUb29sQ2FsbChjYWxsKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbmRUb29sUmVzdWx0KGNhbGwuaWQpO1xuICAgICAgICBjb25zdCBpc0Vycm9yID0gcmVzdWx0Py5pc0Vycm9yIHx8IGZhbHNlO1xuICAgICAgICBjb25zdCBzdGF0dXNDbGFzcyA9IHJlc3VsdCA/IChpc0Vycm9yID8gJ2Vycm9yJyA6ICdzdWNjZXNzJykgOiAncGVuZGluZyc7XG5cbiAgICAgICAgY29uc3QgZ2V0UmVzdWx0VGV4dCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuICcnO1xuICAgICAgICAgIGNvbnN0IHRleHRCbG9ja3MgPSByZXN1bHQuY29udGVudC5maWx0ZXIoYyA9PiBjLnR5cGUgPT09ICd0ZXh0Jyk7XG4gICAgICAgICAgcmV0dXJuIHRleHRCbG9ja3MubWFwKGMgPT4gYy50ZXh0KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgaHRtbCA9IGA8ZGl2IGNsYXNzPVwidG9vbC1leGVjdXRpb24gJHtzdGF0dXNDbGFzc31cIj5gO1xuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSBjYWxsLmFyZ3VtZW50cyB8fCB7fTtcbiAgICAgICAgY29uc3QgbmFtZSA9IGNhbGwubmFtZTtcblxuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlICdiYXNoJzoge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IGFyZ3MuY29tbWFuZCB8fCAnJztcbiAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLWNvbW1hbmRcIj4kICR7ZXNjYXBlSHRtbChjb21tYW5kKX08L2Rpdj5gO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBnZXRSZXN1bHRUZXh0KCkudHJpbSgpO1xuICAgICAgICAgICAgICBpZiAob3V0cHV0KSB7XG4gICAgICAgICAgICAgICAgaHRtbCArPSBmb3JtYXRFeHBhbmRhYmxlT3V0cHV0KG91dHB1dCwgMTApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyZWFkJzoge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBhcmdzLmZpbGVfcGF0aCB8fCBhcmdzLnBhdGggfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBhcmdzLm9mZnNldDtcbiAgICAgICAgICAgIGNvbnN0IGxpbWl0ID0gYXJncy5saW1pdDtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBnZXRMYW5ndWFnZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgbGV0IHBhdGhIdG1sID0gZXNjYXBlSHRtbChzaG9ydGVuUGF0aChmaWxlUGF0aCkpO1xuICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhcnRMaW5lID0gb2Zmc2V0ID8/IDE7XG4gICAgICAgICAgICAgIGNvbnN0IGVuZExpbmUgPSBsaW1pdCAhPT0gdW5kZWZpbmVkID8gc3RhcnRMaW5lICsgbGltaXQgLSAxIDogJyc7XG4gICAgICAgICAgICAgIHBhdGhIdG1sICs9IGA6JHtzdGFydExpbmV9JHtlbmRMaW5lID8gJy0nICsgZW5kTGluZSA6ICcnfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLWhlYWRlclwiPjxzcGFuIGNsYXNzPVwidG9vbC1uYW1lXCI+cmVhZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ0b29sLXBhdGhcIj4ke3BhdGhIdG1sfTwvc3Bhbj48L2Rpdj5gO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBnZXRSZXN1bHRUZXh0KCk7XG4gICAgICAgICAgICAgIGlmIChvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICBodG1sICs9IGZvcm1hdEV4cGFuZGFibGVPdXRwdXQob3V0cHV0LCAxNSwgbGFuZyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3dyaXRlJzoge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBhcmdzLmZpbGVfcGF0aCB8fCBhcmdzLnBhdGggfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXJncy5jb250ZW50IHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBnZXRMYW5ndWFnZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJ0b29sLW5hbWVcIj53cml0ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ0b29sLXBhdGhcIj4ke2VzY2FwZUh0bWwoc2hvcnRlblBhdGgoZmlsZVBhdGgpKX08L3NwYW4+YDtcbiAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggPiAxMCkge1xuICAgICAgICAgICAgICBodG1sICs9IGAgPHNwYW4gc3R5bGU9XCJjb2xvcjogdmFyKC0tZGltKVwiPigke2xpbmVzLmxlbmd0aH0gbGluZXMpPC9zcGFuPmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4nO1xuXG4gICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICBodG1sICs9IGZvcm1hdEV4cGFuZGFibGVPdXRwdXQoY29udGVudCwgMTUsIGxhbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnZWRpdCc6IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYXJncy5maWxlX3BhdGggfHwgYXJncy5wYXRoIHx8ICcnO1xuICAgICAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtaGVhZGVyXCI+PHNwYW4gY2xhc3M9XCJ0b29sLW5hbWVcIj5lZGl0PC9zcGFuPiA8c3BhbiBjbGFzcz1cInRvb2wtcGF0aFwiPiR7ZXNjYXBlSHRtbChzaG9ydGVuUGF0aChmaWxlUGF0aCkpfTwvc3Bhbj48L2Rpdj5gO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0Py5kZXRhaWxzPy5kaWZmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZMaW5lcyA9IHJlc3VsdC5kZXRhaWxzLmRpZmYuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwidG9vbC1kaWZmXCI+JztcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGRpZmZMaW5lcykge1xuICAgICAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoJysnKSkge1xuICAgICAgICAgICAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cImRpZmYtYWRkZWRcIj4ke2VzY2FwZUh0bWwobGluZSl9PC9kaXY+YDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICAgICAgICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwiZGlmZi1yZW1vdmVkXCI+JHtlc2NhcGVIdG1sKGxpbmUpfTwvZGl2PmA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJkaWZmLWNvbnRleHRcIj4ke2VzY2FwZUh0bWwobGluZSl9PC9kaXY+YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaHRtbCArPSAnPC9kaXY+JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gZ2V0UmVzdWx0VGV4dCgpLnRyaW0oKTtcbiAgICAgICAgICAgICAgaWYgKG91dHB1dCAmJiAhcmVzdWx0LmRldGFpbHM/LmRpZmYpIHtcbiAgICAgICAgICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwidG9vbC1vdXRwdXRcIj48cHJlPiR7ZXNjYXBlSHRtbChvdXRwdXQpfTwvcHJlPjwvZGl2PmA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLWhlYWRlclwiPjxzcGFuIGNsYXNzPVwidG9vbC1uYW1lXCI+JHtlc2NhcGVIdG1sKG5hbWUpfTwvc3Bhbj48L2Rpdj5gO1xuICAgICAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cInRvb2wtb3V0cHV0XCI+PHByZT4ke2VzY2FwZUh0bWwoSlNPTi5zdHJpbmdpZnkoYXJncywgbnVsbCwgMikpfTwvcHJlPjwvZGl2PmA7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGdldFJlc3VsdFRleHQoKTtcbiAgICAgICAgICAgICAgaWYgKG91dHB1dCkge1xuICAgICAgICAgICAgICAgIGh0bWwgKz0gZm9ybWF0RXhwYW5kYWJsZU91dHB1dChvdXRwdXQsIDEwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XG4gICAgICAgIHJldHVybiBodG1sO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW5kZXIgYSBzaW5nbGUgZW50cnlcbiAgICAgIGZ1bmN0aW9uIHJlbmRlckVudHJ5KGVudHJ5KSB7XG4gICAgICAgIGNvbnN0IHRzID0gZm9ybWF0VGltZXN0YW1wKGVudHJ5LnRpbWVzdGFtcCk7XG4gICAgICAgIGNvbnN0IHRzSHRtbCA9IHRzID8gYDxkaXYgY2xhc3M9XCJtZXNzYWdlLXRpbWVzdGFtcFwiPiR7dHN9PC9kaXY+YCA6ICcnO1xuXG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnbWVzc2FnZScpIHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBlbnRyeS5tZXNzYWdlO1xuXG4gICAgICAgICAgaWYgKG1zZy5yb2xlID09PSAndXNlcicpIHtcbiAgICAgICAgICAgIGxldCBodG1sID0gYDxkaXYgY2xhc3M9XCJ1c2VyLW1lc3NhZ2VcIj4ke3RzSHRtbH1gO1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IG1zZy5jb250ZW50O1xuXG4gICAgICAgICAgICAvLyBJbWFnZXNcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IGNvbnRlbnQuZmlsdGVyKGMgPT4gYy50eXBlID09PSAnaW1hZ2UnKTtcbiAgICAgICAgICAgICAgaWYgKGltYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz1cIm1lc3NhZ2UtaW1hZ2VzXCI+JztcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGltZyBvZiBpbWFnZXMpIHtcbiAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYDxpbWcgc3JjPVwiZGF0YToke2ltZy5taW1lVHlwZX07YmFzZTY0LCR7aW1nLmRhdGF9XCIgY2xhc3M9XCJtZXNzYWdlLWltYWdlXCIgLz5gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRleHRcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBnZXRUZXh0Q29udGVudChjb250ZW50KTtcbiAgICAgICAgICAgIGlmICh0ZXh0LnRyaW0oKSkge1xuICAgICAgICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiPiR7cmVuZGVyTWFya2Rvd24odGV4dCl9PC9kaXY+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XG4gICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobXNnLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgICBsZXQgaHRtbCA9IHRzSHRtbCA/IGA8ZGl2IGNsYXNzPVwiYXNzaXN0YW50LW1lc3NhZ2VcIj4ke3RzSHRtbH1gIDogJyc7XG5cbiAgICAgICAgICAgIC8vIFRleHQgYW5kIHRoaW5raW5nIGJsb2Nrc1xuICAgICAgICAgICAgZm9yIChjb25zdCBibG9jayBvZiBtc2cuY29udGVudCkge1xuICAgICAgICAgICAgICBpZiAoYmxvY2sudHlwZSA9PT0gJ3RleHQnICYmIGJsb2NrLnRleHQudHJpbSgpKSB7XG4gICAgICAgICAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cImFzc2lzdGFudC10ZXh0IG1hcmtkb3duLWNvbnRlbnRcIj4ke3JlbmRlck1hcmtkb3duKGJsb2NrLnRleHQpfTwvZGl2PmA7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2sudHlwZSA9PT0gJ3RoaW5raW5nJyAmJiBibG9jay50aGlua2luZy50cmltKCkpIHtcbiAgICAgICAgICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwidGhpbmtpbmctdGV4dFwiPiR7ZXNjYXBlSHRtbChibG9jay50aGlua2luZyl9PC9kaXY+YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUb29sIGNhbGxzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGJsb2NrIG9mIG1zZy5jb250ZW50KSB7XG4gICAgICAgICAgICAgIGlmIChibG9jay50eXBlID09PSAndG9vbENhbGwnKSB7XG4gICAgICAgICAgICAgICAgaHRtbCArPSByZW5kZXJUb29sQ2FsbChibG9jayk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRXJyb3JzXG4gICAgICAgICAgICBpZiAobXNnLnN0b3BSZWFzb24gPT09ICdhYm9ydGVkJykge1xuICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwiZXJyb3ItdGV4dFwiPkFib3J0ZWQ8L2Rpdj4nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtc2cuc3RvcFJlYXNvbiA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwiZXJyb3ItdGV4dFwiPkVycm9yOiAke2VzY2FwZUh0bWwobXNnLmVycm9yTWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcicpfTwvZGl2PmA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0c0h0bWwpIGh0bWwgKz0gJzwvZGl2Pic7XG4gICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobXNnLnJvbGUgPT09ICdiYXNoRXhlY3V0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgaXNFcnJvciA9IG1zZy5jYW5jZWxsZWQgfHwgKG1zZy5leGl0Q29kZSAhPT0gMCAmJiBtc2cuZXhpdENvZGUgIT09IG51bGwpO1xuICAgICAgICAgICAgbGV0IGh0bWwgPSBgPGRpdiBjbGFzcz1cInRvb2wtZXhlY3V0aW9uICR7aXNFcnJvciA/ICdlcnJvcicgOiAnc3VjY2Vzcyd9XCI+JHt0c0h0bWx9YDtcbiAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29sLWNvbW1hbmRcIj4kICR7ZXNjYXBlSHRtbChtc2cuY29tbWFuZCl9PC9kaXY+YDtcbiAgICAgICAgICAgIGlmIChtc2cub3V0cHV0KSB7XG4gICAgICAgICAgICAgIGh0bWwgKz0gZm9ybWF0RXhwYW5kYWJsZU91dHB1dChtc2cub3V0cHV0LCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobXNnLmNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPVwiY29sb3I6IHZhcigtLXdhcm5pbmcpXCI+KGNhbmNlbGxlZCk8L2Rpdj4nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtc2cuZXhpdENvZGUgIT09IDAgJiYgbXNnLmV4aXRDb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgc3R5bGU9XCJjb2xvcjogdmFyKC0tZXJyb3IpXCI+KGV4aXQgJHttc2cuZXhpdENvZGV9KTwvZGl2PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4nO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2tpcCB0b29sUmVzdWx0IC0gcmVuZGVyZWQgaW5saW5lIHdpdGggdG9vbENhbGxcbiAgICAgICAgICBpZiAobXNnLnJvbGUgPT09ICd0b29sUmVzdWx0JykgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdtb2RlbF9jaGFuZ2UnKSB7XG4gICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibW9kZWwtY2hhbmdlXCI+JHt0c0h0bWx9U3dpdGNoZWQgdG8gbW9kZWw6IDxzcGFuIGNsYXNzPVwibW9kZWwtbmFtZVwiPiR7ZXNjYXBlSHRtbChlbnRyeS5wcm92aWRlcil9LyR7ZXNjYXBlSHRtbChlbnRyeS5tb2RlbElkKX08L3NwYW4+PC9kaXY+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnY29tcGFjdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFjdGlvbi1oZWFkZXJcIiBvbmNsaWNrPVwidGhpcy5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ2V4cGFuZGVkJylcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wYWN0aW9uLXRvZ2dsZVwiPuKWtjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wYWN0aW9uLXRpdGxlXCI+Q29udGV4dCBjb21wYWN0ZWQgZnJvbSAke2VudHJ5LnRva2Vuc0JlZm9yZS50b0xvY2FsZVN0cmluZygpfSB0b2tlbnM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYWN0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhY3Rpb24tc3VtbWFyeVwiPiR7ZXNjYXBlSHRtbChlbnRyeS5zdW1tYXJ5KX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ2JyYW5jaF9zdW1tYXJ5Jykge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImJyYW5jaC1zdW1tYXJ5XCI+JHt0c0h0bWx9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJhbmNoLXN1bW1hcnktaGVhZGVyXCI+QnJhbmNoIFN1bW1hcnk8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZG93bi1jb250ZW50XCI+JHtyZW5kZXJNYXJrZG93bihlbnRyeS5zdW1tYXJ5KX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdjdXN0b21fbWVzc2FnZScgJiYgZW50cnkuZGlzcGxheSkge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImhvb2stbWVzc2FnZVwiPiR7dHNIdG1sfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvb2stdHlwZVwiPlske2VzY2FwZUh0bWwoZW50cnkuY3VzdG9tVHlwZSl9XTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtkb3duLWNvbnRlbnRcIj4ke3JlbmRlck1hcmtkb3duKHR5cGVvZiBlbnRyeS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGVudHJ5LmNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShlbnRyeS5jb250ZW50KSl9PC9kaXY+XG4gICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgLy8gQ29tcHV0ZSBzdGF0cyBmb3IgY3VycmVudCBwYXRoXG4gICAgICBmdW5jdGlvbiBjb21wdXRlU3RhdHMocGF0aCkge1xuICAgICAgICBsZXQgdXNlck1lc3NhZ2VzID0gMDtcbiAgICAgICAgbGV0IGFzc2lzdGFudE1lc3NhZ2VzID0gMDtcbiAgICAgICAgbGV0IHRvb2xDYWxscyA9IDA7XG4gICAgICAgIGNvbnN0IHRva2VucyA9IHsgaW5wdXQ6IDAsIG91dHB1dDogMCwgY2FjaGVSZWFkOiAwLCBjYWNoZVdyaXRlOiAwIH07XG4gICAgICAgIGNvbnN0IGNvc3QgPSB7IGlucHV0OiAwLCBvdXRwdXQ6IDAsIGNhY2hlUmVhZDogMCwgY2FjaGVXcml0ZTogMCB9O1xuICAgICAgICBjb25zdCBtb2RlbHMgPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXRoKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdtZXNzYWdlJykge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gZW50cnkubWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChtc2cucm9sZSA9PT0gJ3VzZXInKSB1c2VyTWVzc2FnZXMrKztcbiAgICAgICAgICAgIGlmIChtc2cucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICAgICAgYXNzaXN0YW50TWVzc2FnZXMrKztcbiAgICAgICAgICAgICAgaWYgKG1zZy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIG1vZGVscy5hZGQobXNnLnByb3ZpZGVyID8gYCR7bXNnLnByb3ZpZGVyfS8ke21zZy5tb2RlbH1gIDogbXNnLm1vZGVsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobXNnLnVzYWdlKSB7XG4gICAgICAgICAgICAgICAgdG9rZW5zLmlucHV0ICs9IG1zZy51c2FnZS5pbnB1dCB8fCAwO1xuICAgICAgICAgICAgICAgIHRva2Vucy5vdXRwdXQgKz0gbXNnLnVzYWdlLm91dHB1dCB8fCAwO1xuICAgICAgICAgICAgICAgIHRva2Vucy5jYWNoZVJlYWQgKz0gbXNnLnVzYWdlLmNhY2hlUmVhZCB8fCAwO1xuICAgICAgICAgICAgICAgIHRva2Vucy5jYWNoZVdyaXRlICs9IG1zZy51c2FnZS5jYWNoZVdyaXRlIHx8IDA7XG4gICAgICAgICAgICAgICAgaWYgKG1zZy51c2FnZS5jb3N0KSB7XG4gICAgICAgICAgICAgICAgICBjb3N0LmlucHV0ICs9IG1zZy51c2FnZS5jb3N0LmlucHV0IHx8IDA7XG4gICAgICAgICAgICAgICAgICBjb3N0Lm91dHB1dCArPSBtc2cudXNhZ2UuY29zdC5vdXRwdXQgfHwgMDtcbiAgICAgICAgICAgICAgICAgIGNvc3QuY2FjaGVSZWFkICs9IG1zZy51c2FnZS5jb3N0LmNhY2hlUmVhZCB8fCAwO1xuICAgICAgICAgICAgICAgICAgY29zdC5jYWNoZVdyaXRlICs9IG1zZy51c2FnZS5jb3N0LmNhY2hlV3JpdGUgfHwgMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdG9vbENhbGxzICs9IG1zZy5jb250ZW50LmZpbHRlcihjID0+IGMudHlwZSA9PT0gJ3Rvb2xDYWxsJykubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHVzZXJNZXNzYWdlcywgYXNzaXN0YW50TWVzc2FnZXMsIHRvb2xDYWxscywgdG9rZW5zLCBjb3N0LCBtb2RlbHM6IEFycmF5LmZyb20obW9kZWxzKSB9O1xuICAgICAgfVxuXG4gICAgICAvLyBSZW5kZXIgaGVhZGVyXG4gICAgICBmdW5jdGlvbiByZW5kZXJIZWFkZXIocGF0aCkge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGNvbXB1dGVTdGF0cyhwYXRoKTtcbiAgICAgICAgY29uc3QgdG90YWxUb2tlbnMgPSBzdGF0cy50b2tlbnMuaW5wdXQgKyBzdGF0cy50b2tlbnMub3V0cHV0ICsgc3RhdHMudG9rZW5zLmNhY2hlUmVhZCArIHN0YXRzLnRva2Vucy5jYWNoZVdyaXRlO1xuICAgICAgICBjb25zdCB0b3RhbENvc3QgPSBzdGF0cy5jb3N0LmlucHV0ICsgc3RhdHMuY29zdC5vdXRwdXQgKyBzdGF0cy5jb3N0LmNhY2hlUmVhZCArIHN0YXRzLmNvc3QuY2FjaGVXcml0ZTtcblxuICAgICAgICBsZXQgaHRtbCA9IGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDE+U2Vzc2lvbjogJHtlc2NhcGVIdG1sKGhlYWRlcj8uaWQgfHwgJ3Vua25vd24nKX08L2gxPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5EYXRlOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke2hlYWRlcj8udGltZXN0YW1wID8gbmV3IERhdGUoaGVhZGVyLnRpbWVzdGFtcCkudG9Mb2NhbGVTdHJpbmcoKSA6ICd1bmtub3duJ308L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj48c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5Nb2RlbHM6PC9zcGFuPjxzcGFuIGNsYXNzPVwiaW5mby12YWx1ZVwiPiR7c3RhdHMubW9kZWxzLmpvaW4oJywgJykgfHwgJ3Vua25vd24nfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPjxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPk1lc3NhZ2VzOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke3N0YXRzLnVzZXJNZXNzYWdlc30gdXNlciwgJHtzdGF0cy5hc3Npc3RhbnRNZXNzYWdlc30gYXNzaXN0YW50PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+VG9vbCBDYWxsczo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JHtzdGF0cy50b29sQ2FsbHN9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+VG9rZW5zOjwvc3Bhbj48c3BhbiBjbGFzcz1cImluZm8tdmFsdWVcIj4ke3RvdGFsVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+PHNwYW4gY2xhc3M9XCJpbmZvLWxhYmVsXCI+Q29zdDo8L3NwYW4+PHNwYW4gY2xhc3M9XCJpbmZvLXZhbHVlXCI+JCR7dG90YWxDb3N0LnRvRml4ZWQoNCl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICAvLyBTeXN0ZW0gcHJvbXB0XG4gICAgICAgIGlmIChzeXN0ZW1Qcm9tcHQpIHtcbiAgICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwic3lzdGVtLXByb21wdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5c3RlbS1wcm9tcHQtaGVhZGVyXCI+U3lzdGVtIFByb21wdDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5c3RlbS1wcm9tcHQtY29udGVudFwiPiR7ZXNjYXBlSHRtbChzeXN0ZW1Qcm9tcHQpfTwvZGl2PlxuICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUb29sc1xuICAgICAgICBpZiAodG9vbHMgJiYgdG9vbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJ0b29scy1saXN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtaGVhZGVyXCI+QXZhaWxhYmxlIFRvb2xzPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAke3Rvb2xzLm1hcCh0ID0+IGA8ZGl2IGNsYXNzPVwidG9vbC1pdGVtXCI+PHNwYW4gY2xhc3M9XCJ0b29sLWl0ZW0tbmFtZVwiPiR7ZXNjYXBlSHRtbCh0Lm5hbWUpfTwvc3Bhbj4gLSA8c3BhbiBjbGFzcz1cInRvb2wtaXRlbS1kZXNjXCI+JHtlc2NhcGVIdG1sKHQuZGVzY3JpcHRpb24pfTwvc3Bhbj48L2Rpdj5gKS5qb2luKCcnKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgIH1cblxuICAgICAgLy8gTmF2aWdhdGUgdG8gZW50cnlcbiAgICAgIGZ1bmN0aW9uIG5hdmlnYXRlVG8odGFyZ2V0SWQpIHtcbiAgICAgICAgY3VycmVudFBhdGggPSBnZXRQYXRoKHRhcmdldElkKTtcbiAgICAgICAgcmVuZGVyVHJlZSgpO1xuXG4gICAgICAgIGNvbnN0IGhlYWRlckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXItY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2VzJyk7XG5cbiAgICAgICAgaGVhZGVyQ29udGFpbmVyLmlubmVySFRNTCA9IHJlbmRlckhlYWRlcihjdXJyZW50UGF0aCk7XG4gICAgICAgIG1lc3NhZ2VzQ29udGFpbmVyLmlubmVySFRNTCA9IGN1cnJlbnRQYXRoLm1hcChyZW5kZXJFbnRyeSkuam9pbignJyk7XG5cbiAgICAgICAgLy8gU2Nyb2xsIHRvIHRvcFxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB9XG5cbiAgICAgIC8vIEluaXRpYWxpemVcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC10by1sZWFmJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIG5hdmlnYXRlVG8obGVhZklkKTtcbiAgICAgIH0pO1xuXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lkZWJhci10b2dnbGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NpZGViYXInKS5jbGFzc0xpc3QudG9nZ2xlKCdvcGVuJyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSW5pdGlhbCByZW5kZXJcbiAgICAgIG5hdmlnYXRlVG8obGVhZklkKTtcbiAgICB9KSgpO1xuICA8L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5cbiJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMTIwOSwiY2FjaGVSZWFkIjo3MTgyMSwiY2FjaGVXcml0ZSI6MzA2LCJ0b3RhbFRva2VucyI6ODMzNDQsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4yODAyMjUsImNhY2hlUmVhZCI6MC4wMzU5MTA1LCJjYWNoZVdyaXRlIjowLjAwMTkxMjUwMDAwMDAwMDAwMDEsInRvdGFsIjowLjMxODA4OH19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjMzNTUzN319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImQ5YjIxNWM0IiwicGFyZW50SWQiOiIxNzYzN2NlYiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTQ6NTQuNjIwWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFLVTViNFJ0VVNZQTF0bnlrWWNSbjliIiwidG9vbE5hbWUiOiJ3cml0ZSIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlN1Y2Nlc3NmdWxseSB3cm90ZSAzNTcwNyBieXRlcyB0byAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC90ZW1wbGF0ZS5odG1sIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNDk0NjAwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiOGE0OWRiZTMiLCJwYXJlbnRJZCI6ImQ5YjIxNWM0IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NToyNC4zNjdaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIGNyZWF0ZSB0aGUgbmV3IGluZGV4LnRzIHRoYXQgdXNlcyBTZXNzaW9uTWFuYWdlciBhbmQgdGhlIHRoZW1lIGJyaWRnZToiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV2a0JDa1lJQ3hnQ0trREVyV3JpNnRJdS91enJiZ1g3WWpPTzdYQm1semd0anN0V0ZsZWw4TmlHRkYzcFd4aUx3NmFqdldiNkxkd3JyM3Q3QjlrejJTZjA0aTNVZk0ybFpuc1pFZ3piTjVMMEVQL1UyN09FTTc0YURJL1F3TU5PLzN2ZWdEdk14aUl3RldKRVlhQkJ2UXgyY1c1ZHZqMzhWSXpqaHVIdWZOdS84MktSYjd3SENETHp6dEs1ZnRrSVVrZHlmTFp3TDNrS0ttRkN6SGY5Z2dxUmFTNEkxaENqL1RpZW40TDBwcFk4bUhnUWZNNzhleGY1TE9Yb1hRREpwWVBHdmRqcmUxYUpWK1cvQ2lvb3BoOXRvYTRpZ2xLTGxUZlEzSVYybnQraG50WitKZ2s1QitFamY2U3lWdzgvWjFLdnMyTFVZQkJITXl2U0dBRT0ifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ik5vdyBsZXQgbWUgY3JlYXRlIHRoZSBuZXcgYGluZGV4LnRzYDoifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDEzWXZrMVplc1hFQzNFenlyaDlvNW9NIiwibmFtZSI6IndyaXRlIiwiYXJndW1lbnRzIjp7InBhdGgiOiIvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC9pbmRleC50cyIsImNvbnRlbnQiOiJpbXBvcnQgdHlwZSB7IEFnZW50U3RhdGUgfSBmcm9tIFwiQG1hcmlvemVjaG5lci9waS1hZ2VudC1jb3JlXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEFQUF9OQU1FLCBnZXRFeHBvcnRUZW1wbGF0ZURpciwgVkVSU0lPTiB9IGZyb20gXCIuLi8uLi9jb25maWcuanNcIjtcbmltcG9ydCB7IGdldFJlc29sdmVkVGhlbWVDb2xvcnMsIGlzTGlnaHRUaGVtZSB9IGZyb20gXCIuLi8uLi9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRPcHRpb25zIHtcblx0b3V0cHV0UGF0aD86IHN0cmluZztcblx0dGhlbWVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnQgY2FtZWxDYXNlIHRvIGtlYmFiLWNhc2UgZm9yIENTUyB2YXJpYWJsZSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gY2FtZWxUb0tlYmFiKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgQ1NTIGN1c3RvbSBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgZnJvbSB0aGVtZSBjb2xvcnMuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVGhlbWVWYXJzKHRoZW1lTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IGNvbG9ycyA9IGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lKTtcblx0Y29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcblx0XHRsaW5lcy5wdXNoKGAtLSR7Y2FtZWxUb0tlYmFiKGtleSl9OiAke3ZhbHVlfTtgKTtcblx0fVxuXHRyZXR1cm4gbGluZXMuam9pbihcIlxcbiAgICAgIFwiKTtcbn1cblxuLyoqXG4gKiBFeHBvcnQgc2Vzc2lvbiB0byBIVE1MIHVzaW5nIFNlc3Npb25NYW5hZ2VyIGFuZCBBZ2VudFN0YXRlLlxuICogVXNlZCBieSBUVUkncyAvZXhwb3J0IGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRTZXNzaW9uVG9IdG1sKHNtOiBTZXNzaW9uTWFuYWdlciwgc3RhdGU/OiBBZ2VudFN0YXRlLCBvcHRpb25zPzogRXhwb3J0T3B0aW9ucyB8IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIEhhbmRsZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogb3B0aW9ucyBjYW4gYmUganVzdCB0aGUgb3V0cHV0IHBhdGggc3RyaW5nXG5cdGNvbnN0IG9wdHM6IEV4cG9ydE9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/IHsgb3V0cHV0UGF0aDogb3B0aW9ucyB9IDogb3B0aW9ucyB8fCB7fTtcblxuXHRjb25zdCBzZXNzaW9uRmlsZSA9IHNtLmdldFNlc3Npb25GaWxlKCk7XG5cdGlmICghc2Vzc2lvbkZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZXhwb3J0IGluLW1lbW9yeSBzZXNzaW9uIHRvIEhUTUxcIik7XG5cdH1cblx0aWYgKCFleGlzdHNTeW5jKHNlc3Npb25GaWxlKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIk5vdGhpbmcgdG8gZXhwb3J0IHlldCAtIHN0YXJ0IGEgY29udmVyc2F0aW9uIGZpcnN0XCIpO1xuXHR9XG5cblx0Y29uc3QgaGVhZGVyID0gc20uZ2V0SGVhZGVyKCk7XG5cdGNvbnN0IGVudHJpZXMgPSBzbS5nZXRFbnRyaWVzKCk7XG5cdGNvbnN0IGxlYWZJZCA9IHNtLmdldExlYWZJZCgpO1xuXG5cdGNvbnN0IHNlc3Npb25EYXRhID0ge1xuXHRcdGhlYWRlcixcblx0XHRlbnRyaWVzLFxuXHRcdGxlYWZJZCxcblx0XHRzeXN0ZW1Qcm9tcHQ6IHN0YXRlPy5zeXN0ZW1Qcm9tcHQsXG5cdFx0dG9vbHM6IHN0YXRlPy50b29scz8ubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIH0pKSxcblx0fTtcblxuXHQvLyBMb2FkIHRlbXBsYXRlIGFuZCB2ZW5kb3Igc2NyaXB0c1xuXHRjb25zdCB0ZW1wbGF0ZURpciA9IGdldEV4cG9ydFRlbXBsYXRlRGlyKCk7XG5cdGNvbnN0IHRlbXBsYXRlID0gcmVhZEZpbGVTeW5jKGpvaW4odGVtcGxhdGVEaXIsIFwidGVtcGxhdGUuaHRtbFwiKSwgXCJ1dGYtOFwiKTtcblx0Y29uc3QgbWFya2VkSnMgPSByZWFkRmlsZVN5bmMoam9pbih0ZW1wbGF0ZURpciwgXCJ2ZW5kb3JcIiwgXCJtYXJrZWQubWluLmpzXCIpLCBcInV0Zi04XCIpO1xuXHRjb25zdCBobGpzSnMgPSByZWFkRmlsZVN5bmMoam9pbih0ZW1wbGF0ZURpciwgXCJ2ZW5kb3JcIiwgXCJoaWdobGlnaHQubWluLmpzXCIpLCBcInV0Zi04XCIpO1xuXG5cdC8vIEdlbmVyYXRlIHRoZW1lIENTU1xuXHRjb25zdCB0aGVtZVZhcnMgPSBnZW5lcmF0ZVRoZW1lVmFycyhvcHRzLnRoZW1lTmFtZSk7XG5cdGNvbnN0IGxpZ2h0ID0gaXNMaWdodFRoZW1lKG9wdHMudGhlbWVOYW1lKTtcblx0Y29uc3QgYm9keUJnID0gbGlnaHQgPyBcIiNmOGY4ZjhcIiA6IFwiIzE4MTgxZVwiO1xuXHRjb25zdCBjb250YWluZXJCZyA9IGxpZ2h0ID8gXCIjZmZmZmZmXCIgOiBcIiMxZTFlMjRcIjtcblxuXHQvLyBCdWlsZCBIVE1MXG5cdGNvbnN0IHRpdGxlID0gYFNlc3Npb24gJHtoZWFkZXI/LmlkID8/IFwiZXhwb3J0XCJ9IC0gJHtBUFBfTkFNRX1gO1xuXHRjb25zdCBodG1sID0gdGVtcGxhdGVcblx0XHQucmVwbGFjZShcInt7VElUTEV9fVwiLCB0aXRsZSlcblx0XHQucmVwbGFjZShcInt7VEhFTUVfVkFSU319XCIsIHRoZW1lVmFycylcblx0XHQucmVwbGFjZShcInt7Qk9EWV9CR319XCIsIGJvZHlCZylcblx0XHQucmVwbGFjZShcInt7Q09OVEFJTkVSX0JHfX1cIiwgY29udGFpbmVyQmcpXG5cdFx0LnJlcGxhY2UoXCJ7e1NFU1NJT05fREFUQX19XCIsIEpTT04uc3RyaW5naWZ5KHNlc3Npb25EYXRhKSlcblx0XHQucmVwbGFjZShcInt7TUFSS0VEX0pTfX1cIiwgbWFya2VkSnMpXG5cdFx0LnJlcGxhY2UoXCJ7e0hJR0hMSUdIVF9KU319XCIsIGhsanNKcylcblx0XHQucmVwbGFjZShcInt7QVBQX05BTUV9fVwiLCBgJHtBUFBfTkFNRX0gdiR7VkVSU0lPTn1gKVxuXHRcdC5yZXBsYWNlKFwie3tHRU5FUkFURURfREFURX19XCIsIG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKSk7XG5cblx0Ly8gV3JpdGUgb3V0cHV0XG5cdGxldCBvdXRwdXRQYXRoID0gb3B0cy5vdXRwdXRQYXRoO1xuXHRpZiAoIW91dHB1dFBhdGgpIHtcblx0XHRjb25zdCBzZXNzaW9uQmFzZW5hbWUgPSBiYXNlbmFtZShzZXNzaW9uRmlsZSwgXCIuanNvbmxcIik7XG5cdFx0b3V0cHV0UGF0aCA9IGAke0FQUF9OQU1FfS1zZXNzaW9uLSR7c2Vzc2lvbkJhc2VuYW1lfS5odG1sYDtcblx0fVxuXG5cdHdyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgaHRtbCwgXCJ1dGY4XCIpO1xuXHRyZXR1cm4gb3V0cHV0UGF0aDtcbn1cblxuLyoqXG4gKiBFeHBvcnQgc2Vzc2lvbiBmaWxlIHRvIEhUTUwgKHN0YW5kYWxvbmUsIHdpdGhvdXQgQWdlbnRTdGF0ZSkuXG4gKiBVc2VkIGJ5IENMSSBmb3IgZXhwb3J0aW5nIGFyYml0cmFyeSBzZXNzaW9uIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0RnJvbUZpbGUoaW5wdXRQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBFeHBvcnRPcHRpb25zIHwgc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gSGFuZGxlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBvcHRpb25zIGNhbiBiZSBqdXN0IHRoZSBvdXRwdXQgcGF0aCBzdHJpbmdcblx0Y29uc3Qgb3B0czogRXhwb3J0T3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID8geyBvdXRwdXRQYXRoOiBvcHRpb25zIH0gOiBvcHRpb25zIHx8IHt9O1xuXG5cdGlmICghZXhpc3RzU3luYyhpbnB1dFBhdGgpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtpbnB1dFBhdGh9YCk7XG5cdH1cblxuXHQvLyBVc2UgU2Vzc2lvbk1hbmFnZXIgdG8gbG9hZCB0aGUgc2Vzc2lvblxuXHRjb25zdCB7IFNlc3Npb25NYW5hZ2VyIH0gPSByZXF1aXJlKFwiLi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCIpIGFzIHR5cGVvZiBpbXBvcnQoXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIik7XG5cdGNvbnN0IHNtID0gU2Vzc2lvbk1hbmFnZXIub3BlbihpbnB1dFBhdGgpO1xuXG5cdGNvbnN0IGhlYWRlciA9IHNtLmdldEhlYWRlcigpO1xuXHRjb25zdCBlbnRyaWVzID0gc20uZ2V0RW50cmllcygpO1xuXHRjb25zdCBsZWFmSWQgPSBzbS5nZXRMZWFmSWQoKTtcblxuXHRjb25zdCBzZXNzaW9uRGF0YSA9IHtcblx0XHRoZWFkZXIsXG5cdFx0ZW50cmllcyxcblx0XHRsZWFmSWQsXG5cdFx0c3lzdGVtUHJvbXB0OiB1bmRlZmluZWQsXG5cdFx0dG9vbHM6IHVuZGVmaW5lZCxcblx0fTtcblxuXHQvLyBMb2FkIHRlbXBsYXRlIGFuZCB2ZW5kb3Igc2NyaXB0c1xuXHRjb25zdCB0ZW1wbGF0ZURpciA9IGdldEV4cG9ydFRlbXBsYXRlRGlyKCk7XG5cdGNvbnN0IHRlbXBsYXRlID0gcmVhZEZpbGVTeW5jKGpvaW4odGVtcGxhdGVEaXIsIFwidGVtcGxhdGUuaHRtbFwiKSwgXCJ1dGYtOFwiKTtcblx0Y29uc3QgbWFya2VkSnMgPSByZWFkRmlsZVN5bmMoam9pbih0ZW1wbGF0ZURpciwgXCJ2ZW5kb3JcIiwgXCJtYXJrZWQubWluLmpzXCIpLCBcInV0Zi04XCIpO1xuXHRjb25zdCBobGpzSnMgPSByZWFkRmlsZVN5bmMoam9pbih0ZW1wbGF0ZURpciwgXCJ2ZW5kb3JcIiwgXCJoaWdobGlnaHQubWluLmpzXCIpLCBcInV0Zi04XCIpO1xuXG5cdC8vIEdlbmVyYXRlIHRoZW1lIENTU1xuXHRjb25zdCB0aGVtZVZhcnMgPSBnZW5lcmF0ZVRoZW1lVmFycyhvcHRzLnRoZW1lTmFtZSk7XG5cdGNvbnN0IGxpZ2h0ID0gaXNMaWdodFRoZW1lKG9wdHMudGhlbWVOYW1lKTtcblx0Y29uc3QgYm9keUJnID0gbGlnaHQgPyBcIiNmOGY4ZjhcIiA6IFwiIzE4MTgxZVwiO1xuXHRjb25zdCBjb250YWluZXJCZyA9IGxpZ2h0ID8gXCIjZmZmZmZmXCIgOiBcIiMxZTFlMjRcIjtcblxuXHQvLyBCdWlsZCBIVE1MXG5cdGNvbnN0IHRpdGxlID0gYFNlc3Npb24gJHtoZWFkZXI/LmlkID8/IFwiZXhwb3J0XCJ9IC0gJHtBUFBfTkFNRX1gO1xuXHRjb25zdCBodG1sID0gdGVtcGxhdGVcblx0XHQucmVwbGFjZShcInt7VElUTEV9fVwiLCB0aXRsZSlcblx0XHQucmVwbGFjZShcInt7VEhFTUVfVkFSU319XCIsIHRoZW1lVmFycylcblx0XHQucmVwbGFjZShcInt7Qk9EWV9CR319XCIsIGJvZHlCZylcblx0XHQucmVwbGFjZShcInt7Q09OVEFJTkVSX0JHfX1cIiwgY29udGFpbmVyQmcpXG5cdFx0LnJlcGxhY2UoXCJ7e1NFU1NJT05fREFUQX19XCIsIEpTT04uc3RyaW5naWZ5KHNlc3Npb25EYXRhKSlcblx0XHQucmVwbGFjZShcInt7TUFSS0VEX0pTfX1cIiwgbWFya2VkSnMpXG5cdFx0LnJlcGxhY2UoXCJ7e0hJR0hMSUdIVF9KU319XCIsIGhsanNKcylcblx0XHQucmVwbGFjZShcInt7QVBQX05BTUV9fVwiLCBgJHtBUFBfTkFNRX0gdiR7VkVSU0lPTn1gKVxuXHRcdC5yZXBsYWNlKFwie3tHRU5FUkFURURfREFURX19XCIsIG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKSk7XG5cblx0Ly8gV3JpdGUgb3V0cHV0XG5cdGxldCBvdXRwdXRQYXRoID0gb3B0cy5vdXRwdXRQYXRoO1xuXHRpZiAoIW91dHB1dFBhdGgpIHtcblx0XHRjb25zdCBpbnB1dEJhc2VuYW1lID0gYmFzZW5hbWUoaW5wdXRQYXRoLCBcIi5qc29ubFwiKTtcblx0XHRvdXRwdXRQYXRoID0gYCR7QVBQX05BTUV9LXNlc3Npb24tJHtpbnB1dEJhc2VuYW1lfS5odG1sYDtcblx0fVxuXG5cdHdyaXRlRmlsZVN5bmMob3V0cHV0UGF0aCwgaHRtbCwgXCJ1dGY4XCIpO1xuXHRyZXR1cm4gb3V0cHV0UGF0aDtcbn1cbiJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxOTEzLCJjYWNoZVJlYWQiOjcyMTI3LCJjYWNoZVdyaXRlIjoxMTI2OCwidG90YWxUb2tlbnMiOjg1MzE2LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDQ3ODI1LCJjYWNoZVJlYWQiOjAuMDM2MDYzNSwiY2FjaGVXcml0ZSI6MC4wNzA0MjUsInRvdGFsIjowLjE1NDM1MzQ5OTk5OTk5OTk4fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNDk0NjIwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYzlmYzU4MTYiLCJwYXJlbnRJZCI6IjhhNDlkYmUzIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NToyNC4zNzVaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTNZdmsxWmVzWEVDM0V6eXJoOW81b00iLCJ0b29sTmFtZSI6IndyaXRlIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IHdyb3RlIDU0NTcgYnl0ZXMgdG8gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwvaW5kZXgudHMifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI1MjQzNzB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJjMzM1Y2E1NSIsInBhcmVudElkIjoiYzlmYzU4MTYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU1OjI4Ljk4MFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ik5vdyBJIG5lZWQgdG8gZGVsZXRlIHRoZSBvbGQgZXhwb3J0LWh0bWwudHMgYW5kIHVwZGF0ZSBhbnkgaW1wb3J0cyB0byB1c2UgdGhlIG5ldyBsb2NhdGlvbi4gTGV0IG1lIGNoZWNrIHdoYXQgaW1wb3J0cyB0aGUgb2xkIGZpbGU6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFcXdDQ2tZSUN4Z0NLa0JLQU4wanEzYlBpYVJHRktGZCthVzFKYnpjNUpQd3ltK25VS1FLNnFncWlVdXBlaTZCaHdMZ1dzQnBCL1dSdnMvb29jRkR3UFEyckZjclFRaE5YMUxaRWd6dlhDemVncHRnZWNLdW5sc2FES1lJdlUxczB5dW1VOHh5c2lJd3EzeEsrNktIVFpTT0ozRWF3R2tSNk16OVBNeUczYTFsWmRFRWtVeFVSVm1mSUNOcTZma0Q1UkJFb2U4ZGhVVTdLcE1COTVueUtZaXkzRDh0NTlOOXUzWEVkSUNDVDBkR2hBSnFxMUFCYS8wMThYYm0xQjlMU3hMTWtMbm1wWGREeWFob1VJaVlCcmxnY1ptYlIvbThvMEgyQ0twQmZ3dmtkRDNoU1JXRTZGNWdZelJya1o0MmNjdytzSzZtemNDb05YSDF5RTlrQ3Y1TnFJU3VhMStHU1VXSzBYZU9zQWJYcGJtS0lZdGp0bzlBQ3gzL3FGNHdUNGQ1MjV0TEdnOUtqMWtGaWUzNkdBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFXU2poZTNWcTd6QWc4cVRXSnl0QWFEIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdyZXAgLXIgXCJleHBvcnQtaHRtbFwiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMgLS1pbmNsdWRlPVwiKi50c1wiIHwgZ3JlcCAtdiBcImV4cG9ydC1odG1sL2luZGV4LnRzXCIgfCBncmVwIC12IFwiZXhwb3J0LWh0bWwudHNcIiJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMzQsImNhY2hlUmVhZCI6ODMzOTUsImNhY2hlV3JpdGUiOjE5NzIsInRvdGFsVG9rZW5zIjo4NTUwOSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMzM1LCJjYWNoZVJlYWQiOjAuMDQxNjk3NSwiY2FjaGVXcml0ZSI6MC4wMTIzMjUwMDAwMDAwMDAwMDEsInRvdGFsIjowLjA1NzQxMjV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI1MjQzNzZ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIzNmUxMTQzOSIsInBhcmVudElkIjoiYzMzNWNhNTUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU1OjI5LjAwNloiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxV1NqaGUzVnE3ekFnOHFUV0p5dEFhRCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6InBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9hZ2VudC1zZXNzaW9uLnRzOmltcG9ydCB7IGV4cG9ydFNlc3Npb25Ub0h0bWwgfSBmcm9tIFwiLi9leHBvcnQtaHRtbC5qc1wiO1xucGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tYWluLnRzOmltcG9ydCB7IGV4cG9ydEZyb21GaWxlIH0gZnJvbSBcIi4vY29yZS9leHBvcnQtaHRtbC5qc1wiO1xucGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb25maWcudHM6ICogLSBGb3IgQnVuIGJpbmFyeTogZXhwb3J0LWh0bWwvIG5leHQgdG8gZXhlY3V0YWJsZVxucGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb25maWcudHM6ICogLSBGb3IgTm9kZS5qcyAoZGlzdC8pOiBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvXG5wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvbmZpZy50czogKiAtIEZvciB0c3ggKHNyYy8pOiBzcmMvY29yZS9leHBvcnQtaHRtbC9cbnBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29uZmlnLnRzOlx0XHRyZXR1cm4gam9pbihkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpLCBcImV4cG9ydC1odG1sXCIpO1xucGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb25maWcudHM6XHRyZXR1cm4gam9pbihwYWNrYWdlRGlyLCBzcmNPckRpc3QsIFwiY29yZVwiLCBcImV4cG9ydC1odG1sXCIpO1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTI5MDA1fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiM2VkZmQ0MTgiLCJwYXJlbnRJZCI6IjM2ZTExNDM5IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTozNC4xMDFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJJIG5lZWQgdG8gdXBkYXRlIGltcG9ydHMgaW46XG4xLiBgYWdlbnQtc2Vzc2lvbi50c2AgLSBjaGFuZ2UgZnJvbSBgLi9leHBvcnQtaHRtbC5qc2AgdG8gYC4vZXhwb3J0LWh0bWwvaW5kZXguanNgXG4yLiBgbWFpbi50c2AgLSBjaGFuZ2UgZnJvbSBgLi9jb3JlL2V4cG9ydC1odG1sLmpzYCB0byBgLi9jb3JlL2V4cG9ydC1odG1sL2luZGV4LmpzYExldCBtZSBkbyB0aG9zZSB1cGRhdGVzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRW9NRENrWUlDeGdDS2tCVHVxcjdwRUxVeEpYV0RRcTdEdCs3V3Q5OEZEdy9FNFZOMkVaU1d0aitocmdpSUptMElVZE9qYVlRNXdqZG5IK1NDTXhtYWxNc2UxZnNUVEpZcUN1a0VnejdJN2JtME9zbDk2NWZJVUVhRE5aQ1RBV0Rsd05pSkdST1pDSXcrQ2wycDhhZVhVaWlxQ3NSSGE5Z2tFempTbGFwYTBwR3RkNTJObnR0K29YVTkrNWlKNGkzWnZoeldNOEZxaFIzS3VvQmd3VVNQSmNUeXdhVzB1N1RPV1ptaEpSd0JER0tTMmV5U3BKeGpSSmNuZVU0SjJGOTRrdkQ1UGREZkFUYTBOZTNCRE0wbzhBMkpGeHoxcDNHdWdnOFo2REVwL1Jmc0MyV0NlcGdzVWRmOG9MUmliOWc5YWZnRUZYdU1oT0htZzROeGlQR013a1hlVVZxWHpXbHUwRmxDSWVnalN6QWZsdDRkUkZCR2FJYzZiUWRXRmVISkZ2RDZUTkJSbEcxSDZCUUF1eTViNjdxeTRoOHY5b011amZPU0RCMlkzc1h5QW50R2t1U24zSVZLYmFVSlBvWG5WelhHQlY4V1NXN05NeTEwOW9tcEdaR2ltczlxQ1hXK0ZBUktYQ2M2OXJMVUdqN2ZPSVpPVU16V0x6SzhDemtOSSticlgxNkdBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFYOGY0QjFTUEtnU0plY2Y2TnpXTDNXIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdyZXAgLW4gXCJleHBvcnQtaHRtbFwiIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9hZ2VudC1zZXNzaW9uLnRzIn19LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUxYNnJZOW9KaTNzR1RqWmFTcUZ4UTUiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCAtbiBcImV4cG9ydC1odG1sXCIgcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tYWluLnRzIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjIxMiwiY2FjaGVSZWFkIjo4NTM2NywiY2FjaGVXcml0ZSI6MzY1LCJ0b3RhbFRva2VucyI6ODU5NTIsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDUzLCJjYWNoZVJlYWQiOjAuMDQyNjgzNSwiY2FjaGVXcml0ZSI6MC4wMDIyODEyNTAwMDAwMDAwMDAzLCJ0b3RhbCI6MC4wNTAzMDQ3NDk5OTk5OTk5OTV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI1MjkwMDZ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI0YTExNTQ0ZiIsInBhcmVudElkIjoiM2VkZmQ0MTgiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU1OjM0LjExOFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxWDhmNEIxU1BLZ1NKZWNmNk56V0wzVyIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjMxOmltcG9ydCB7IGV4cG9ydFNlc3Npb25Ub0h0bWwgfSBmcm9tIFwiLi9leHBvcnQtaHRtbC5qc1wiO1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTM0MTE3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiOWFmMzhjZDAiLCJwYXJlbnRJZCI6IjRhMTE1NDRmIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTozNC4xMjlaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUxYNnJZOW9KaTNzR1RqWmFTcUZ4UTUiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIyMDppbXBvcnQgeyBleHBvcnRGcm9tRmlsZSB9IGZyb20gXCIuL2NvcmUvZXhwb3J0LWh0bWwuanNcIjtcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjUzNDEyOX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjhjNjVkNjMyIiwicGFyZW50SWQiOiI5YWYzOGNkMCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTU6NDAuNDY2WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiSSBuZWVkIHRvIHVwZGF0ZSB0aGVzZSBpbXBvcnQgcGF0aHMuIEFjdHVhbGx5LCBJIGNhbiBrZWVwIHRoZSBzYW1lIGltcG9ydCBwYXRocyBpZiBJIGp1c3QgdXNlIHRoZSBkaXJlY3RvcnkgaW1wb3J0LiBUeXBlU2NyaXB0L05vZGUgc2hvdWxkIHJlc29sdmUgYC4vZXhwb3J0LWh0bWwuanNgIHRvIGAuL2V4cG9ydC1odG1sL2luZGV4LmpzYC4gTGV0IG1lIGNoZWNrIGlmIHRoaXMgd2lsbCB3b3JrLi4uQWN0dWFsbHksIHdpdGggRVNNIGluIE5vZGUuanMsIHdlIG5lZWQgZXhwbGljaXQgZmlsZSBleHRlbnNpb25zLiBUaGUgaW1wb3J0IGAuL2V4cG9ydC1odG1sLmpzYCB3b24ndCByZXNvbHZlIHRvIGAuL2V4cG9ydC1odG1sL2luZGV4LmpzYCBhdXRvbWF0aWNhbGx5LiBJIG5lZWQgdG8gdXBkYXRlIHRoZSBpbXBvcnRzIHRvIHVzZSB0aGUgZnVsbCBwYXRoLkxldCBtZSB1cGRhdGUgYm90aCBmaWxlczoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV2QUVDa1lJQ3hnQ0trRDhGMmtSUFQ0TlIrV0NNaTNnSFVLNlBlSVZOU2RMSUQzbS9MTzkzSE81VnBiRGczcHo2TEdQTkJyWXlMK3E4Z1QzK01VWWtxZW1meVJ3ZktVQ1dKY0lFZ3pydFhIUkorL3pYcDdHL3RZYURONm9CalFKRkdXNThvZThjaUl3cU9iQUdHdVh0MUdpM0lpRTZIbk5xZDF3RVh4Unlvb3ZZM2hvaStDU3c4ZGMrNmE0YzlwNWZuYWZIUjUrTkJjS0t0Y0QwSjJ2R1h1YStDUGk0Q3JPeGdJZTdYWXY2WVk4bDVlTm1KQjg1Skg3WEU5SXFrNTVzUFRscmRFcXdwN3BXZzdqMjEvZ0R6a29CeUMxaTZoZlkreVZjVitBTk9FYzRoVXg3elFlcnpzNTY4YlJ2ZGR0UnB6YzM0ZlNlc3N2RUM5ZjFUdHV4Yjd3VTdoSHNnMFhEcnZWK01LdkxLaDlESHV0RmF4NlUxS3c5aFAybTg2b1dLSDdTblVLTTlTOEhVaEcvNUtUaTRtZHl1b0o1R2VKVGNBL0NpWm50MGpYWTljSXdaNU9WMGYwTVBtWVdqOTFwOXZZUU1HZHJiM1hkNWpRRTJhMk1PaW4xcENGeUhveUNyTHIyV1JIVThybEVadlcvbmNRTUVNb0Z2b0ErbjBxUElvTTlqV3p4TEJlUVNGWWwxSVpESjRKby84UXY1TFp4b0FnazQxbW5sb1p6UzU0SzhyL0hEU01FejRHT0JkbUtxQmd6SDI3Qk5KMTJWOFhCRGpDQkRpTW1KL1hic1MxK0tCN0hmOEJtUFVLVTNseWlqL3oxZkRJWGNKc2JQUGxjMGNtUUVoaEF0Rkc3eUU3MTBTbktyaktvRUdhTTlpamIzVUpXUFBINEJ5NHV2bWxwQkVPR0t5dHNuS2l3akFYbXprYU5sTlc0RHhFVEZDOGFmTkZNV3dBdTA0dmZCRzYwbjFnbHpEcEdleWIwZjgyQnkxd1JON3FkM2JVWS9TYVgxOFAwRlErcFFmdmc0MW1lYzZINmRRbFErUFd1VTNnRXF1Q1BrZzlwd1UrcnRhaTN2Y1I5Y1RmbEplQzJBZWIyS0RQR0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMTFVTTNOQlFyclB5aG5BRm5XMUFQc0oiLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvYWdlbnQtc2Vzc2lvbi50cyIsIm9mZnNldCI6MjgsImxpbWl0IjoxMH19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjI0MCwiY2FjaGVSZWFkIjo4NTczMiwiY2FjaGVXcml0ZSI6MzE1LCJ0b3RhbFRva2VucyI6ODYyOTUsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDYsImNhY2hlUmVhZCI6MC4wNDI4NjYsImNhY2hlV3JpdGUiOjAuMDAxOTY4NzUsInRvdGFsIjowLjA1MDg3NDc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNTM0MTMwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYzM3OGJiYzYiLCJwYXJlbnRJZCI6IjhjNjVkNjMyIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTo0MC40NzFaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTFVTTNOQlFyclB5aG5BRm5XMUFQc0oiLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcdHNob3VsZENvbXBhY3QsXG59IGZyb20gXCIuL2NvbXBhY3Rpb24vaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tVG9vbENvbnRleHQsIEN1c3RvbVRvb2xTZXNzaW9uRXZlbnQsIExvYWRlZEN1c3RvbVRvb2wgfSBmcm9tIFwiLi9jdXN0b20tdG9vbHMvaW5kZXguanNcIjtcbmltcG9ydCB7IGV4cG9ydFNlc3Npb25Ub0h0bWwgfSBmcm9tIFwiLi9leHBvcnQtaHRtbC5qc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRIb29rQ29udGV4dCxcblx0SG9va1J1bm5lcixcblx0U2Vzc2lvbkJlZm9yZUJyYW5jaFJlc3VsdCxcblx0U2Vzc2lvbkJlZm9yZUNvbXBhY3RSZXN1bHQsXG5cdFNlc3Npb25CZWZvcmVOZXdSZXN1bHQsXG5cblsxODY1IG1vcmUgbGluZXMgaW4gZmlsZS4gVXNlIG9mZnNldD0zOCB0byBjb250aW51ZV0ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI1NDA0NzB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmNTNjNDQzZSIsInBhcmVudElkIjoiYzM3OGJiYzYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU1OjQ1LjEzNFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ikkgc2VlIHRoZSBwYXR0ZXJuIC0gb3RoZXIgZGlyZWN0b3JpZXMgdXNlIGAvaW5kZXguanNgLiBMZXQgbWUgdXBkYXRlIGJvdGggaW1wb3J0czoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV2b0JDa1lJQ3hnQ0trQmVJNnBZL3lSa2p0VW1XNVhDK3lReWZaQWdzRExvU3hTMU1ybnpLWVhQNWQvQ29ndzQvV1hZVUd6YnBTS3pWZE4xVGRSOVgySnhvM0syaHNCUXh6U3pFZ3crblVkUFdVQ3JKOG05cHFzYURKT3hSZHFBRDhpWWp1c0x5eUl3ZzUwais0alBxWWRwT042bEh4Z3lWR1UxZW5VRG84QmhFUW8vbmprUytGMU1BNnJEdjQrZUlhTC85WVQxMHRmTEttSmRCT29wQkR6dndIenZiVi9STXJVRGJmY08yTHR6bGlDMW1hNUJOVEZORy9hVklmdUt4R2RBc3pJbFRkbW1NYm9neCs3aTVEWDM2b2tWckg5ODUzd2RNSWlTVUVuNGJ1U0MveUc2Vm5JSU4zS0pyWktXd3UvaFFTdmFUZHFiWXlSSkZSZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDEzWG5EOUhVcTZMckRocXUyM0FuVlNVIiwibmFtZSI6ImVkaXQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2FnZW50LXNlc3Npb24udHMiLCJvbGRUZXh0IjoiaW1wb3J0IHsgZXhwb3J0U2Vzc2lvblRvSHRtbCB9IGZyb20gXCIuL2V4cG9ydC1odG1sLmpzXCI7IiwibmV3VGV4dCI6ImltcG9ydCB7IGV4cG9ydFNlc3Npb25Ub0h0bWwgfSBmcm9tIFwiLi9leHBvcnQtaHRtbC9pbmRleC5qc1wiOyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNzUsImNhY2hlUmVhZCI6ODYwNDcsImNhY2hlV3JpdGUiOjM4MiwidG90YWxUb2tlbnMiOjg2NjEyLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA0Mzc1LCJjYWNoZVJlYWQiOjAuMDQzMDIzNSwiY2FjaGVXcml0ZSI6MC4wMDIzODc1MDAwMDAwMDAwMDAzLCJ0b3RhbCI6MC4wNDk4MjZ9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI1NDA0NzJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJlNWY0NzM3YyIsInBhcmVudElkIjoiZjUzYzQ0M2UiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU1OjQ1LjE0MVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxM1huRDlIVXE2THJEaHF1MjNBblZTVSIsInRvb2xOYW1lIjoiZWRpdCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlN1Y2Nlc3NmdWxseSByZXBsYWNlZCB0ZXh0IGluIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2FnZW50LXNlc3Npb24udHMuIn1dLCJkZXRhaWxzIjp7ImRpZmYiOiIgICAgICAuLi5cbiAgIDI3IFx0cHJlcGFyZUNvbXBhY3Rpb24sXG4gICAyOCBcdHNob3VsZENvbXBhY3QsXG4gICAyOSB9IGZyb20gXCIuL2NvbXBhY3Rpb24vaW5kZXguanNcIjtcbiAgIDMwIGltcG9ydCB0eXBlIHsgQ3VzdG9tVG9vbENvbnRleHQsIEN1c3RvbVRvb2xTZXNzaW9uRXZlbnQsIExvYWRlZEN1c3RvbVRvb2wgfSBmcm9tIFwiLi9jdXN0b20tdG9vbHMvaW5kZXguanNcIjtcbi0gIDMxIGltcG9ydCB7IGV4cG9ydFNlc3Npb25Ub0h0bWwgfSBmcm9tIFwiLi9leHBvcnQtaHRtbC5qc1wiO1xuKyAgMzEgaW1wb3J0IHsgZXhwb3J0U2Vzc2lvblRvSHRtbCB9IGZyb20gXCIuL2V4cG9ydC1odG1sL2luZGV4LmpzXCI7XG4gICAzMiBpbXBvcnQgdHlwZSB7XG4gICAzMyBcdEhvb2tDb250ZXh0LFxuICAgMzQgXHRIb29rUnVubmVyLFxuICAgMzUgXHRTZXNzaW9uQmVmb3JlQnJhbmNoUmVzdWx0LFxuICAgICAgLi4uIiwiZmlyc3RDaGFuZ2VkTGluZSI6MzF9LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTQ1MTQwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNzRiZjZjZGQiLCJwYXJlbnRJZCI6ImU1ZjQ3MzdjIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTo0OC4zNDFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIHVwZGF0ZSBtYWluLnRzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXNJQkNrWUlDeGdDS2tCdG44aTE4bURTd2dEdndaRHRRTnE0cEhCZnNVSHlaMnlKRkVzejZQR2J6WVBuL2ozSVVLUktJMVFmcUp3MHQzeDgwa1laL3JudjhwdlY1RXdMZHBKdUVnemg5TFl6ZElMSmlYTjd4aElhRER0K1EzdDRwdjIzN3d6S3NpSXdVZEdDREZ6bXgwM3hlVWVmd1ZPN0RqUkJWS3N6VG4raC9WU2srZFdWK2NCY0kwaXE1ZlFUS0ZlUXRvL0QrWUwvS2lvZzVKVE5Ndm1McnJWdE5KTyt2eFMvYlhHUU9YMjk1bWFxZjBoMGNreTBKWW5FTE9IR2RGTlBnTzhZQVE9PSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMVNLZDlYNTlSNnBneGNVcjhDRXBUaW0iLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21haW4udHMiLCJvZmZzZXQiOjE3LCJsaW1pdCI6MTB9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMjYsImNhY2hlUmVhZCI6ODY0MjksImNhY2hlV3JpdGUiOjIyOCwidG90YWxUb2tlbnMiOjg2NzkxLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzMTUsImNhY2hlUmVhZCI6MC4wNDMyMTQ0OTk5OTk5OTk5OTYsImNhY2hlV3JpdGUiOjAuMDAxNDI1LCJ0b3RhbCI6MC4wNDc4Mjk1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNTQ1MTQyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZWYyNjZhMjkiLCJwYXJlbnRJZCI6Ijc0YmY2Y2RkIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTo0OC4zNDZaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVNLZDlYNTlSNnBneGNVcjhDRXBUaW0iLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJpbXBvcnQgdHlwZSB7IEFnZW50U2Vzc2lvbiB9IGZyb20gXCIuL2NvcmUvYWdlbnQtc2Vzc2lvbi5qc1wiO1xuXG5pbXBvcnQgdHlwZSB7IExvYWRlZEN1c3RvbVRvb2wgfSBmcm9tIFwiLi9jb3JlL2N1c3RvbS10b29scy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZXhwb3J0RnJvbUZpbGUgfSBmcm9tIFwiLi9jb3JlL2V4cG9ydC1odG1sLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEhvb2tVSUNvbnRleHQgfSBmcm9tIFwiLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZGVsUmVnaXN0cnkgfSBmcm9tIFwiLi9jb3JlL21vZGVsLXJlZ2lzdHJ5LmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlTW9kZWxTY29wZSwgdHlwZSBTY29wZWRNb2RlbCB9IGZyb20gXCIuL2NvcmUvbW9kZWwtcmVzb2x2ZXIuanNcIjtcbmltcG9ydCB7IHR5cGUgQ3JlYXRlQWdlbnRTZXNzaW9uT3B0aW9ucywgY3JlYXRlQWdlbnRTZXNzaW9uLCBkaXNjb3ZlckF1dGhTdG9yYWdlLCBkaXNjb3Zlck1vZGVscyB9IGZyb20gXCIuL2NvcmUvc2RrLmpzXCI7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gXCIuL2NvcmUvc2Vzc2lvbi1tYW5hZ2VyLmpzXCI7XG5pbXBvcnQgeyBTZXR0aW5nc01hbmFnZXIgfSBmcm9tIFwiLi9jb3JlL3NldHRpbmdzLW1hbmFnZXIuanNcIjtcblxuWzQyNiBtb3JlIGxpbmVzIGluIGZpbGUuIFVzZSBvZmZzZXQ9MjcgdG8gY29udGludWVdIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTQ4MzQ0fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNzU5YmViOGEiLCJwYXJlbnRJZCI6ImVmMjY2YTI5IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTo1MS45MzZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIHVwZGF0ZSBtYWluLnRzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXNJQkNrWUlDeGdDS2tCdG44aTE4bURTd2dEdndaRHRRTnE0cEhCZnNVSHlaMnlKRkVzejZQR2J6WVBuL2ozSVVLUktJMVFmcUp3MHQzeDgwa1laL3JudjhwdlY1RXdMZHBKdUVneEhwZDgxVGxxUmRkOTNIN3dhREdwRVNsS0VtSFNHdWFMb25DSXdQWXZxQmhjVGM3eU1yeGEzemZGSDJaN0VGWHorUnI3YlUvOVhqcXhXOFd2T0lHTTdFMlFwWS9IRlNtTzlwOG82S2lyV0JFOUZyMzEycmI5aGs3ZTJDeDhQUElDZDQ3YmM5MFZVbmR0eUplb3JYQjF2RXNCOFpiYnF2UDBZQVE9PSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMVNYN0RRWkREY0dXUDg5Nk5DUkJVNkciLCJuYW1lIjoiZWRpdCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21haW4udHMiLCJvbGRUZXh0IjoiaW1wb3J0IHsgZXhwb3J0RnJvbUZpbGUgfSBmcm9tIFwiLi9jb3JlL2V4cG9ydC1odG1sLmpzXCI7IiwibmV3VGV4dCI6ImltcG9ydCB7IGV4cG9ydEZyb21GaWxlIH0gZnJvbSBcIi4vY29yZS9leHBvcnQtaHRtbC9pbmRleC5qc1wiOyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNjAsImNhY2hlUmVhZCI6ODY2NTcsImNhY2hlV3JpdGUiOjM0MywidG90YWxUb2tlbnMiOjg3MTY4LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA0LCJjYWNoZVJlYWQiOjAuMDQzMzI4NSwiY2FjaGVXcml0ZSI6MC4wMDIxNDM3NTAwMDAwMDAwMDAzLCJ0b3RhbCI6MC4wNDk1MTIyNX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjU0ODM0Nn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjEwZTMxN2VlIiwicGFyZW50SWQiOiI3NTliZWI4YSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTU6NTEuOTM5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFTWDdEUVpERGNHV1A4OTZOQ1JCVTZHIiwidG9vbE5hbWUiOiJlZGl0IiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IHJlcGxhY2VkIHRleHQgaW4gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21haW4udHMuIn1dLCJkZXRhaWxzIjp7ImRpZmYiOiIgICAgIC4uLlxuICAxNiBpbXBvcnQgeyBDT05GSUdfRElSX05BTUUsIGdldEFnZW50RGlyLCBnZXRNb2RlbHNQYXRoLCBWRVJTSU9OIH0gZnJvbSBcIi4vY29uZmlnLmpzXCI7XG4gIDE3IGltcG9ydCB0eXBlIHsgQWdlbnRTZXNzaW9uIH0gZnJvbSBcIi4vY29yZS9hZ2VudC1zZXNzaW9uLmpzXCI7XG4gIDE4IFxuICAxOSBpbXBvcnQgdHlwZSB7IExvYWRlZEN1c3RvbVRvb2wgfSBmcm9tIFwiLi9jb3JlL2N1c3RvbS10b29scy9pbmRleC5qc1wiO1xuLSAyMCBpbXBvcnQgeyBleHBvcnRGcm9tRmlsZSB9IGZyb20gXCIuL2NvcmUvZXhwb3J0LWh0bWwuanNcIjtcbisgMjAgaW1wb3J0IHsgZXhwb3J0RnJvbUZpbGUgfSBmcm9tIFwiLi9jb3JlL2V4cG9ydC1odG1sL2luZGV4LmpzXCI7XG4gIDIxIGltcG9ydCB0eXBlIHsgSG9va1VJQ29udGV4dCB9IGZyb20gXCIuL2NvcmUvaW5kZXguanNcIjtcbiAgMjIgaW1wb3J0IHR5cGUgeyBNb2RlbFJlZ2lzdHJ5IH0gZnJvbSBcIi4vY29yZS9tb2RlbC1yZWdpc3RyeS5qc1wiO1xuICAyMyBpbXBvcnQgeyByZXNvbHZlTW9kZWxTY29wZSwgdHlwZSBTY29wZWRNb2RlbCB9IGZyb20gXCIuL2NvcmUvbW9kZWwtcmVzb2x2ZXIuanNcIjtcbiAgMjQgaW1wb3J0IHsgdHlwZSBDcmVhdGVBZ2VudFNlc3Npb25PcHRpb25zLCBjcmVhdGVBZ2VudFNlc3Npb24sIGRpc2NvdmVyQXV0aFN0b3JhZ2UsIGRpc2NvdmVyTW9kZWxzIH0gZnJvbSBcIi4vY29yZS9zZGsuanNcIjtcbiAgICAgLi4uIiwiZmlyc3RDaGFuZ2VkTGluZSI6MjB9LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTUxOTM5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMTc4MTk5ZWMiLCJwYXJlbnRJZCI6IjEwZTMxN2VlIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTo1NS42MDZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgSSBuZWVkIHRvIGRlbGV0ZSB0aGUgb2xkIGV4cG9ydC1odG1sLnRzIGZpbGU6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdGtCQ2tZSUN4Z0NLa0JRNE1VaTR0dm1haTVFdUU4VGwvekZOZWYvV1ZyNTFBNUFhY1ZBakp2WWRNakQwOWF1WXlIQURFbkFaM0loNi9DczRrRWlXakozWFJLMnNJVXVyQmlBRWd6ME1MUVkzUDZxZWVLRmVDZ2FERysyR2FYeU9WejJnMmUyZ2lJdzRPS3lpa014SEVlRlFQQiszWG1mMTd2TGoxUjJEendBa3hyamtOVktyVEx5REExTWh5QncyUHNsU3hoV3VFOWZLa0hEdGFnNUE3d1pZVi9NN2pqL3NsRVJsckZsNWQrdE5oRUNTblRpdHNTbGc3RThGU1B6L25XakNyNXNFNC9tTC8yMnFCN011ZnFqaWlyL1EzbHM2TEpVdWhnQiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUNYa2h0VlJmcnZYYkxoTVlNM3dBQ2IiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoicm0gcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sLnRzIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjg4LCJjYWNoZVJlYWQiOjg3MDAwLCJjYWNoZVdyaXRlIjoyMDksInRvdGFsVG9rZW5zIjo4NzMwNSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjIsImNhY2hlUmVhZCI6MC4wNDM1LCJjYWNoZVdyaXRlIjowLjAwMTMwNjI1MDAwMDAwMDAwMDEsInRvdGFsIjowLjA0NzA0NjI1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNTUxOTQwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZTE1OGQ0M2UiLCJwYXJlbnRJZCI6IjE3ODE5OWVjIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NTo1NS42MThaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUNYa2h0VlJmcnZYYkxoTVlNM3dBQ2IiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIobm8gb3V0cHV0KSJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjU1NTYxOH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjFhNmMyZjQwIiwicGFyZW50SWQiOiJlMTU4ZDQzZSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTU6NTkuMjkxWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTm93IGxldCBtZSBhbHNvIHVwZGF0ZSB0aGUgY29weS1iaW5hcnktYXNzZXRzIHNjcmlwdCBpbiBwYWNrYWdlLmpzb24gdG8gaW5jbHVkZSB0aGUgZXhwb3J0LWh0bWwgZGlyZWN0b3J5OiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXBJQ0NrWUlDeGdDS2tCYTN1VzhMWm0zazRDYTB5V0xaajUzMUk5eFBheDdjdUVUbkRYUXlVTmJZUXpWRDcxSlVNUXBtU3gzNVlmSHpXaTFwalVoQ0ZIcERoM1E0anFJL0ZmUEVnd3B4TVJmbzIzWkFPaS9WVUFhRE5nUjVER1ZzYzNnT29SYnpDSXd1UWViTmE1bkJXY3k4VEk5RUI0VmkwUFJ2NGh4ZmwwbVRsWS9OZU9MMExSaThrR1FSV25RMlFRMUppMUxGa2FCS25vUEJBa3l2VnlPWXcwRWxLcFJkYU9ZZkg5dnNtUm1iUnhvOGZ0YkJqZzBmVlMrMFdzYUxXNklVdXkzcmw4MGRuZFg1U2ZuL3dabVBNUXEraGRlN0VXcnV5UDZhUDN0SGxvMjBxTTMyWCsxcmhYcGJndVVNL1IybUQ0NGdFN3pvMEZJeUY4RDk3THgrZk53OTdBRGowZ1hUclZheHFSS0R3S3BleGdCIn0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxUkhtRTk3QmN5dGpKSnRqWGpIekVvYiIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIFwiY29weS1iaW5hcnktYXNzZXRzXCIgcGFja2FnZXMvY29kaW5nLWFnZW50L3BhY2thZ2UuanNvbiJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0Ijo5OSwiY2FjaGVSZWFkIjo4NzIwOSwiY2FjaGVXcml0ZSI6MTA5LCJ0b3RhbFRva2VucyI6ODc0MjUsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDI0NzUsImNhY2hlUmVhZCI6MC4wNDM2MDQ1LCJjYWNoZVdyaXRlIjowLjAwMDY4MTI1LCJ0b3RhbCI6MC4wNDY4MDA3NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjU1NTYxOX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjM0MzlmMDU4IiwicGFyZW50SWQiOiIxYTZjMmY0MCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTU6NTkuMzA0WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFSSG1FOTdCY3l0akpKdGpYakh6RW9iIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiXHRcdFwiYnVpbGQ6YmluYXJ5XCI6IFwibnBtIHJ1biBidWlsZCAmJiBidW4gYnVpbGQgLS1jb21waWxlIC4vZGlzdC9jbGkuanMgLS1vdXRmaWxlIGRpc3QvcGkgJiYgbnBtIHJ1biBjb3B5LWJpbmFyeS1hc3NldHNcIixcblx0XHRcImNvcHktYmluYXJ5LWFzc2V0c1wiOiBcImNwIHBhY2thZ2UuanNvbiBkaXN0LyAmJiBjcCBSRUFETUUubWQgZGlzdC8gJiYgY3AgQ0hBTkdFTE9HLm1kIGRpc3QvICYmIG1rZGlyIC1wIGRpc3QvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L3RoZW1lLyAmJiBjcCAtciBkb2NzIGRpc3QvICYmIGNwIC1yIGV4YW1wbGVzIGRpc3QvXCIsXG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI1NTkzMDN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJhOThjYjdiYiIsInBhcmVudElkIjoiMzQzOWYwNTgiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU2OjA1LjI4NloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkkgbmVlZCB0byB1cGRhdGUgdGhlIGNvcHktYmluYXJ5LWFzc2V0cyB0byBhbHNvIGNvcHkgdGhlIGV4cG9ydC1odG1sIGRpcmVjdG9yeS4gTGV0IG1lIHVwZGF0ZSBpdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVva0NDa1lJQ3hnQ0trQ2EwQTNubkxsSnUwYkdNSDNRUlhJTnVjaTl2OXd3dkpseENaQ0h2MnBuZzc2UDlrU3JNbFl5K1lwaGxiYSs4TjZWWmJuUWNRMjk3ZERjSzhEbzNUYTdFZ3lLSDNYclo3cGduK3BWQktzYURFY0dCZWUrMTYrNHM3WG1lQ0l3aEtmYlNDR0ZjREkyWENPR21ZUjUySWhtRUJONVFzdkQ5M1NwQWZyZ3NVbnRzWDhYVCthQXZuUy9wL0paYmR2VUtuRThReDQzTnF5VE02UkZSazNSMlJGTEdKUVpueFU2V3IxNysrcXR0eGFCL2tMdnc5eXlab0U4VlNQWnZENExwMzBiRDB4NnhUM01rb0dwRlYwSEhoSUlqelNGU096R1NQOUxnaHZNUW5qQ3p5RW1ERnkyYVB1eU5FUFZFSkthVXlKRVZPNFNnMXFXMEdDL3N0SnNHalBpeEJnQiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUhHS2M4VjN6OE5zYWtxeXlidGRzTVQiLCJuYW1lIjoiZWRpdCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvcGFja2FnZS5qc29uIiwib2xkVGV4dCI6IlwiY29weS1iaW5hcnktYXNzZXRzXCI6IFwiY3AgcGFja2FnZS5qc29uIGRpc3QvICYmIGNwIFJFQURNRS5tZCBkaXN0LyAmJiBjcCBDSEFOR0VMT0cubWQgZGlzdC8gJiYgbWtkaXIgLXAgZGlzdC90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvdGhlbWUvICYmIGNwIC1yIGRvY3MgZGlzdC8gJiYgY3AgLXIgZXhhbXBsZXMgZGlzdC9cIiwiLCJuZXdUZXh0IjoiXCJjb3B5LWJpbmFyeS1hc3NldHNcIjogXCJjcCBwYWNrYWdlLmpzb24gZGlzdC8gJiYgY3AgUkVBRE1FLm1kIGRpc3QvICYmIGNwIENIQU5HRUxPRy5tZCBkaXN0LyAmJiBta2RpciAtcCBkaXN0L3RoZW1lICYmIGNwIHNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8qLmpzb24gZGlzdC90aGVtZS8gJiYgbWtkaXIgLXAgZGlzdC9leHBvcnQtaHRtbC92ZW5kb3IgJiYgY3Agc3JjL2NvcmUvZXhwb3J0LWh0bWwvdGVtcGxhdGUuaHRtbCBkaXN0L2V4cG9ydC1odG1sLyAmJiBjcCBzcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvKi5qcyBkaXN0L2V4cG9ydC1odG1sL3ZlbmRvci8gJiYgY3AgLXIgZG9jcyBkaXN0LyAmJiBjcCAtciBleGFtcGxlcyBkaXN0L1wiLCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjozMjMsImNhY2hlUmVhZCI6ODczMTgsImNhY2hlV3JpdGUiOjIyNCwidG90YWxUb2tlbnMiOjg3ODczLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA4MDc1LCJjYWNoZVJlYWQiOjAuMDQzNjU4OTk5OTk5OTk5OTk2LCJjYWNoZVdyaXRlIjowLjAwMTQsInRvdGFsIjowLjA1MzE3NH19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjU1OTMwNX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjIxZmIyNGIwIiwicGFyZW50SWQiOiJhOThjYjdiYiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6MDUuMjk1WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFIR0tjOFYzejhOc2FrcXl5YnRkc01UIiwidG9vbE5hbWUiOiJlZGl0IiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IHJlcGxhY2VkIHRleHQgaW4gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvcGFja2FnZS5qc29uLiJ9XSwiZGV0YWlscyI6eyJkaWZmIjoiICAgIC4uLlxuIDMyIFx0XHRcImNsZWFuXCI6IFwicm0gLXJmIGRpc3RcIixcbiAzMyBcdFx0XCJidWlsZFwiOiBcInRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvbiAmJiBjaG1vZCAreCBkaXN0L2NsaS5qcyAmJiBucG0gcnVuIGNvcHktYXNzZXRzXCIsXG4gMzQgXHRcdFwiYnVpbGQ6YmluYXJ5XCI6IFwibnBtIHJ1biBidWlsZCAmJiBidW4gYnVpbGQgLS1jb21waWxlIC4vZGlzdC9jbGkuanMgLS1vdXRmaWxlIGRpc3QvcGkgJiYgbnBtIHJ1biBjb3B5LWJpbmFyeS1hc3NldHNcIixcbiAzNSBcdFx0XCJjb3B5LWFzc2V0c1wiOiBcIm1rZGlyIC1wIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyAmJiBta2RpciAtcCBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWwgZGlzdC9jb3JlL2V4cG9ydC1odG1sLyAmJiBjcCBzcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvKi5qcyBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yL1wiLFxuLTM2IFx0XHRcImNvcHktYmluYXJ5LWFzc2V0c1wiOiBcImNwIHBhY2thZ2UuanNvbiBkaXN0LyAmJiBjcCBSRUFETUUubWQgZGlzdC8gJiYgY3AgQ0hBTkdFTE9HLm1kIGRpc3QvICYmIG1rZGlyIC1wIGRpc3QvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L3RoZW1lLyAmJiBjcCAtciBkb2NzIGRpc3QvICYmIGNwIC1yIGV4YW1wbGVzIGRpc3QvXCIsXG4rMzYgXHRcdFwiY29weS1iaW5hcnktYXNzZXRzXCI6IFwiY3AgcGFja2FnZS5qc29uIGRpc3QvICYmIGNwIFJFQURNRS5tZCBkaXN0LyAmJiBjcCBDSEFOR0VMT0cubWQgZGlzdC8gJiYgbWtkaXIgLXAgZGlzdC90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvdGhlbWUvICYmIG1rZGlyIC1wIGRpc3QvZXhwb3J0LWh0bWwvdmVuZG9yICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWwgZGlzdC9leHBvcnQtaHRtbC8gJiYgY3Agc3JjL2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yLyouanMgZGlzdC9leHBvcnQtaHRtbC92ZW5kb3IvICYmIGNwIC1yIGRvY3MgZGlzdC8gJiYgY3AgLXIgZXhhbXBsZXMgZGlzdC9cIixcbiAzNyBcdFx0XCJ0ZXN0XCI6IFwidml0ZXN0IC0tcnVuXCIsXG4gMzggXHRcdFwicHJlcHVibGlzaE9ubHlcIjogXCJucG0gcnVuIGNsZWFuICYmIG5wbSBydW4gYnVpbGRcIlxuIDM5IFx0fSxcbiA0MCBcdFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAuLi4iLCJmaXJzdENoYW5nZWRMaW5lIjozNn0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI1NjUyOTN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI2M2VlMDViZSIsInBhcmVudElkIjoiMjFmYjI0YjAiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU2OjA4LjcxNFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ik5vdyBsZXQgbWUgcnVuIG5wbSBydW4gY2hlY2sgdG8gc2VlIGlmIGV2ZXJ5dGhpbmcgY29tcGlsZXMgY29ycmVjdGx5OiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXUwQkNrWUlDeGdDS2tENjRnR2dLNzhlVmowWGhTWENUd3lXTWRvaTlwZDhrUnNIUitBdzhXeE45dDQzbHUzSy9nVnFzYVBwNWNqU1B4Vy80WXdma0FNa00zeVBqdUw0R2RiREVnejVCbkR0Q21Ud3paZStZNW9hRE1mMkxHc0pJNW9JMVhaZXZpSXdNN2NPTjZlR0dBYUpOZDhBY3krWTFQdHJ3dnU3SzNla0J3VktsSTQ0WllFNWp2Q3lQVXNpZnM5R1BsSHBpMVRES2xYb1lRWFZIZHN3L1c3djhWK3o0NzI1Vlp4S1BZSlFrQWEva2NCaG5sdGJoQWhlRUhDMDdma05adUptZjNwbldLTTVaamh1b0p1R3MyVHVscFdvTUtyajJsd1FlK0puV0tDT0lPaG92ZVptTlBhQWVLM3RHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxQWpnZnVyYlVCOWhOd2tkMzlxdHE5dSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCBwYWNrYWdlcy9jb2RpbmctYWdlbnQgJiYgbnBtIHJ1biBjaGVjayAyPiYxIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjg3LCJjYWNoZVJlYWQiOjg3NTQyLCJjYWNoZVdyaXRlIjozNzAsInRvdGFsVG9rZW5zIjo4ODAwNywiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjE3NTAwMDAwMDAwMDAwMDMsImNhY2hlUmVhZCI6MC4wNDM3NzEsImNhY2hlV3JpdGUiOjAuMDAyMzEyNTAwMDAwMDAwMDAwMywidG90YWwiOjAuMDQ4Mjk4NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjU2NTI5Nn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjZiMDc3Y2NhIiwicGFyZW50SWQiOiI2M2VlMDViZSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6MDguODc5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFBamdmdXJiVUI5aE53a2QzOXF0cTl1IiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoibnBtIGVycm9yIExpZmVjeWNsZSBzY3JpcHQgYGNoZWNrYCBmYWlsZWQgd2l0aCBlcnJvcjpcbm5wbSBlcnJvciB3b3Jrc3BhY2UgQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yXG5ucG0gZXJyb3IgbG9jYXRpb24gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnRcbm5wbSBlcnJvciBNaXNzaW5nIHNjcmlwdDogXCJjaGVja1wiXG5ucG0gZXJyb3Jcbm5wbSBlcnJvciBUbyBzZWUgYSBsaXN0IG9mIHNjcmlwdHMsIHJ1bjpcbm5wbSBlcnJvciAgIG5wbSBydW4gLS13b3Jrc3BhY2U9QG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yXG5cblxuQ29tbWFuZCBleGl0ZWQgd2l0aCBjb2RlIDEifV0sImRldGFpbHMiOnt9LCJpc0Vycm9yIjp0cnVlLCJ0aW1lc3RhbXAiOjE3NjcyMzI1Njg4Nzh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI0NWFiNDJmMSIsInBhcmVudElkIjoiNmIwNzdjY2EiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU2OjExLjkxMFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkxldCBtZSBydW4gZnJvbSB0aGUgcm9vdCBkaXJlY3Rvcnk6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFc3NCQ2tZSUN4Z0NLa0NzM3Fzb1kyaEZ2dmtpMEZiL1p2cDluK3Z1dXFvYi8yTkk2bzFrN2RJenFWaGlZMXFkMG0xNUllektLNTNWdlk1WWsxNzMwK3VPdjUvOXZENnkxeGNLRWd5cXJiRWhLdjBKMUc0R0FQTWFESWs5Mlo1anhsKzRoYVJyV3lJd09jOWhNcDVWeXFsNUlyTnN1U3FwRzY0bDAzcnM0bEp3NUdVOGVnWmZ6QnV5OXBzVWt5eFFaNEFUV1kyN3ZLTEZLak50UVNFNnIrSTVnNkRYODhpWlRUZlpLNksyUWdiUVJVMnoxYVpXRGE4SnZHZWNNNEd4L3NKK043VWZXYnVXK3hVNi9oOFlBUT09In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxVWJiSFFGc0RTa3labzJ2aFJwQjJtQyIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vICYmIG5wbSBydW4gY2hlY2sgMj4mMSJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0Ijo4OSwiY2FjaGVSZWFkIjo4NzkxMiwiY2FjaGVXcml0ZSI6MjI5LCJ0b3RhbFRva2VucyI6ODgyMzgsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDIyMjUsImNhY2hlUmVhZCI6MC4wNDM5NTU5OTk5OTk5OTk5OTUsImNhY2hlV3JpdGUiOjAuMDAxNDMxMjUsInRvdGFsIjowLjA0NzY1MjI1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNTY4ODc5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZDIyMjQxNDgiLCJwYXJlbnRJZCI6IjQ1YWI0MmYxIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NjoxNC44MjFaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVViYkhRRnNEU2t5Wm8ydmhScEIybUMiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcbj4gcGktbW9ub3JlcG9AMC4wLjMgY2hlY2tcbj4gYmlvbWUgY2hlY2sgLS13cml0ZSAuICYmIHRzZ28gLS1ub0VtaXQgJiYgbnBtIHJ1biBjaGVjayAtdyBAbWFyaW96ZWNobmVyL3BpLXdlYi11aVxuXG5DaGVja2VkIDMxNCBmaWxlcyBpbiAxODNtcy4gRml4ZWQgMSBmaWxlLlxuXG4+IEBtYXJpb3plY2huZXIvcGktd2ViLXVpQDAuMzAuMiBjaGVja1xuPiBiaW9tZSBjaGVjayAtLXdyaXRlIC4gJiYgdHNjIC0tbm9FbWl0ICYmIGNkIGV4YW1wbGUgJiYgYmlvbWUgY2hlY2sgLS13cml0ZSAuICYmIHRzYyAtLW5vRW1pdFxuXG5DaGVja2VkIDczIGZpbGVzIGluIDQwbXMuIE5vIGZpeGVzIGFwcGxpZWQuXG5DaGVja2VkIDMgZmlsZXMgaW4gOG1zLiBObyBmaXhlcyBhcHBsaWVkLlxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTc0ODIwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYWVhM2ZlZDkiLCJwYXJlbnRJZCI6ImQyMjI0MTQ4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NjoxOC4zMzZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgY2hlY2sgcGFzc2VkLiBOb3cgbGV0IG1lIHZlcmlmeSB0aGUgYnVpbGQgd29ya3MgYnkgcnVubmluZyBpdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1b0JDa1lJQ3hnQ0trQkN5WWlnaTlPZVgvdUFMRFhWNkZjSDlTU1hjb0xmZVRGOUlyS203eG5Ba2p4Rk5EU25SZkllYXc3YVlKQmxkd2xzekJMRmpjeXVUZEJHREE1ZUd0RGJFZ3l3MjE5cUVHTnBwTVN2M0xRYURCUnkvQXVzTk15MmZZUHlIaUl3UU4raFcvdjJCNGt1bEdQTEpiTktxZERlNkszaWJOSzlWOUtxekNyMHE5MWYwdlRjb3FBZncwTUxCSjM0YzNGVUtsSlF4WG9US0dlcXdYWHdtNzgvc0RzSGFlcE05a2g1dTZaaHQwZmFVbHcvZ3ByeHlzN0hJcGR3cmVJYTBwME1NMjF5K2UrMDlQWkFzT0Y3N3BXSEQwVUd1c1RHZnM0c0xRTlh2WU1YRk1jM3JqZ05HQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxTGhGQktXQ3oyZkhmOThLRFpxZUxGMiIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCBwYWNrYWdlcy9jb2RpbmctYWdlbnQgJiYgbnBtIHJ1biBidWlsZCAyPiYxIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjg3LCJjYWNoZVJlYWQiOjg4MTQxLCJjYWNoZVdyaXRlIjoyNTksInRvdGFsVG9rZW5zIjo4ODQ5NSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjE3NTAwMDAwMDAwMDAwMDMsImNhY2hlUmVhZCI6MC4wNDQwNzA1LCJjYWNoZVdyaXRlIjowLjAwMTYxODc1MDAwMDAwMDAwMDIsInRvdGFsIjowLjA0NzkwNDI1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNTc0ODIxfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiY2NjZmE1NTMiLCJwYXJlbnRJZCI6ImFlYTNmZWQ5IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NjoxOC42ODdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUxoRkJLV0N6MmZIZjk4S0RacWVMRjIiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcbj4gQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yIGJ1aWxkXG4+IHRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvbiAmJiBjaG1vZCAreCBkaXN0L2NsaS5qcyAmJiBucG0gcnVuIGNvcHktYXNzZXRzXG5cbnNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS9jb21wb25lbnRzL2JvcmRlcmVkLWxvYWRlci50cygxLDEwKTogZXJyb3IgVFMyMzA1OiBNb2R1bGUgJ1wiQG1hcmlvemVjaG5lci9waS10dWlcIicgaGFzIG5vIGV4cG9ydGVkIG1lbWJlciAnQ2FuY2VsbGFibGVMb2FkZXInLlxuc3JjL21vZGVzL2ludGVyYWN0aXZlL2NvbXBvbmVudHMvYm9yZGVyZWQtbG9hZGVyLnRzKDE1LDUpOiBlcnJvciBUUzcwMDY6IFBhcmFtZXRlciAncycgaW1wbGljaXRseSBoYXMgYW4gJ2FueScgdHlwZS5cbnNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS9jb21wb25lbnRzL2JvcmRlcmVkLWxvYWRlci50cygxNiw1KTogZXJyb3IgVFM3MDA2OiBQYXJhbWV0ZXIgJ3MnIGltcGxpY2l0bHkgaGFzIGFuICdhbnknIHR5cGUuXG5ucG0gZXJyb3IgTGlmZWN5Y2xlIHNjcmlwdCBgYnVpbGRgIGZhaWxlZCB3aXRoIGVycm9yOlxubnBtIGVycm9yIGNvZGUgMVxubnBtIGVycm9yIHBhdGggL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnRcbm5wbSBlcnJvciB3b3Jrc3BhY2UgQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yXG5ucG0gZXJyb3IgbG9jYXRpb24gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnRcbm5wbSBlcnJvciBjb21tYW5kIGZhaWxlZFxubnBtIGVycm9yIGNvbW1hbmQgc2ggLWMgdHNnbyAtcCB0c2NvbmZpZy5idWlsZC5qc29uICYmIGNobW9kICt4IGRpc3QvY2xpLmpzICYmIG5wbSBydW4gY29weS1hc3NldHNcblxuXG5Db21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgMSJ9XSwiZGV0YWlscyI6e30sImlzRXJyb3IiOnRydWUsInRpbWVzdGFtcCI6MTc2NzIzMjU3ODY4N319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjIxNDUzMmY0IiwicGFyZW50SWQiOiJjY2NmYTU1MyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6MjQuNDczWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiVGhvc2UgZXJyb3JzIGFyZSB1bnJlbGF0ZWQgdG8gbXkgY2hhbmdlcyAoaXQncyBhIHByZS1leGlzdGluZyBpc3N1ZSB3aXRoIENhbmNlbGxhYmxlTG9hZGVyKS4gTGV0IG1lIGNoZWNrIGlmIHRoaXMgaXMgYW4gZXhpc3RpbmcgaXNzdWUgb3Igc29tZXRoaW5nIEkgY2F1c2VkLiBBY3R1YWxseSwgbGV0IG1lIGp1c3QgY2hlY2sgaWYgdGhlIGJ1aWxkIHdhcyB3b3JraW5nIGJlZm9yZSBteSBjaGFuZ2VzIC0gdGhlIHR5cGUgZXJyb3JzIGFyZSBmb3Igc29tZXRoaW5nIGVsc2UsIG5vdCBmb3IgZXhwb3J0LWh0bWwuIExldCBtZSBjaGVjayBpZiBucG0gcnVuIGNoZWNrIHBhc3NlcyB3aXRoIHByb3BlciB0eXBlY2hlY2sgLSBpdCBzYWlkIFwidHNnbyAtLW5vRW1pdFwiIHBhc3NlZCB3aGljaCBtZWFucyB0aGUgdHlwZXMgYXJlIGZpbmUuIExldCBtZSBjaGVjayB0aGUgc3BlY2lmaWMgZXJyb3IgbW9yZSBjYXJlZnVsbHkuXG5cbkFjdHVhbGx5IHRoaXMgY291bGQgYmUgYW4gbnBtIGluc3RhbGwgaXNzdWUgLSB0aGUgZGVwZW5kZW50IHBhY2thZ2VzIG1pZ2h0IG5vdCBiZSBidWlsdC4gTGV0IG1lIHRyeSBidWlsZGluZyBmcm9tIHRoZSByb290LiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXZVRkNrWUlDeGdDS2tCZFVjK3R6WE92UFpsbGZZZmFNdW9YeEM2VXY5L1VZdlUwOFA2OHFhcmpNRlFiQVZDVGxNNE91SWx5OVF1cWtuWVg5YUJBcjVYcEQzMmpDUEdpOWwzSkVnejVvdHpMaUZnb1M5a014NEVhREd5eHN2WWNab09wNkc4ajlpSXdwL0tEK1NIOWZKZGZEbGJXVTU5amVlYUtjbWpvblZlckFoelA5a2xQd28wSTNEQWhLZTN1OTBxUDFLb2lMSVhTS3R3RWZHcWN6ckY0RUVCa25aYjFET0dMQ2lZK2dxWFhyMm54c2FUcHVOLy9WMy9xMjloWHNEYjJ3V2NROFNGZDl4bTBMZzlqQUl2M0tCb2xxOWdvYkRGbUpQZUdPSkdmczZ1Q1NPMi85dExIMytnNTA3ZFBjdkZsV29KY3FJWm9FWWtFcjk5OVR6UTRJSE1EVGl2alpyQk5ORVByQ3BrUWF1ZmJrTVB1bjBORk5qR045clBNV2pFbGNsTnhYOTV0QVJSRVlFMGk0RzV4MGo0citvbFBZbEpoOUlDMnQyaFNMbjBRNFp4aEpJNmRKQWM0TFJrdFpMekNRbmN2eFhGbENCdkV1NmtCT2x4WGx6Q3MvcHJacUx3MTg1OGVNVEtXUFhrRlpOdU5GZFZSRGYvd2Z3N3VqYmFNU29qNDR0R3NFaEJITTZQQ2pISUUrRGVBbTFnVG11SWdBZnBmNWRRS1p4dUo4YlFSb0RuZjZHZmk1aFZ4azJYZENidXN1ZjI2Q1hKdDJVRkxjQW43dWJScHp2ZC9uZFVRdVVuV0lyMkY3aDVnVjdtRWxuaWR1R2xUekNpczM5NmRmQWI3eUtCbk42dFlMVFJRdC9TNDJzcjZ1NzVHeDlydDFMbGdxR3hXYjBtSUhsNHhCWlZMR21CUEl5VGZGVVYzNStrZHkwZ00rcjRUdnRTY2Q0bUtCcmFVMnc4S0w5ZlZqVUo5Mkg5cHdVM05Va1ZtTDFMb0w4Vm13ZmhPbk11Nm5ZR3NmU0JSUHNBSTFoTEdHUTJPeVZRS1JpNWd2em9RSlV5R3dkbXd5MDcrd2RZYmUrbGp2ZHhZMTNVOXVOeTNST1pCeGRtVVBXWk5TN2JjUzZNbEpyZUc1NGFuUGNST2Q2V2ZYUnl3WUd0SENkQ1BNZEJxMVJ1dGMvOXlUcXhERU8veXdrd04wVEpmWHNiOFN4NWE2aWxET3kyb3RGYWRaVHd3WTUyNmNFR25DZEhZd1VMM3dmQlJlODlVdHluM3cyM2VvaS9NL1VuODF6Q3J5dWw5U2l0M1lMdlZXTWRISmVWdVp6dTUvdDUyZEhYNGtoZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFDN3RRUm1hWEV0S0tDWnB2blhXTXNwIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNkIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8gJiYgbnBtIHJ1biBidWlsZCAyPiYxIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjIxMywiY2FjaGVSZWFkIjo4ODQwMCwiY2FjaGVXcml0ZSI6NDI0LCJ0b3RhbFRva2VucyI6ODkwNDUsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDUzMjUsImNhY2hlUmVhZCI6MC4wNDQxOTk5OTk5OTk5OTk5OTYsImNhY2hlV3JpdGUiOjAuMDAyNjUsInRvdGFsIjowLjA1MjIxNX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjU3ODY4OH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImZiNDM5YTA0IiwicGFyZW50SWQiOiIyMTQ1MzJmNCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6MjcuOTcwWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFDN3RRUm1hWEV0S0tDWnB2blhXTXNwIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiXG4+IHBpLW1vbm9yZXBvQDAuMC4zIGJ1aWxkXG4+IG5wbSBydW4gYnVpbGQgLXcgQG1hcmlvemVjaG5lci9waS10dWkgJiYgbnBtIHJ1biBidWlsZCAtdyBAbWFyaW96ZWNobmVyL3BpLWFpICYmIG5wbSBydW4gYnVpbGQgLXcgQG1hcmlvemVjaG5lci9waS1hZ2VudC1jb3JlICYmIG5wbSBydW4gYnVpbGQgLXcgQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnQgJiYgbnBtIHJ1biBidWlsZCAtdyBAbWFyaW96ZWNobmVyL3BpLW1vbSAmJiBucG0gcnVuIGJ1aWxkIC13IEBtYXJpb3plY2huZXIvcGktd2ViLXVpICYmIG5wbSBydW4gYnVpbGQgLXcgQG1hcmlvemVjaG5lci9waVxuXG5cbj4gQG1hcmlvemVjaG5lci9waS10dWlAMC4zMC4yIGJ1aWxkXG4+IHRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvblxuXG5cbj4gQG1hcmlvemVjaG5lci9waS1haUAwLjMwLjIgYnVpbGRcbj4gbnBtIHJ1biBnZW5lcmF0ZS1tb2RlbHMgJiYgdHNnbyAtcCB0c2NvbmZpZy5idWlsZC5qc29uXG5cblxuPiBAbWFyaW96ZWNobmVyL3BpLWFpQDAuMzAuMiBnZW5lcmF0ZS1tb2RlbHNcbj4gbnB4IHRzeCBzY3JpcHRzL2dlbmVyYXRlLW1vZGVscy50c1xuXG5GZXRjaGluZyBtb2RlbHMgZnJvbSBtb2RlbHMuZGV2IEFQSS4uLlxuTG9hZGVkIDE2NSB0b29sLWNhcGFibGUgbW9kZWxzIGZyb20gbW9kZWxzLmRldlxuRmV0Y2hpbmcgbW9kZWxzIGZyb20gT3BlblJvdXRlciBBUEkuLi5cbkZldGNoZWQgMjM1IHRvb2wtY2FwYWJsZSBtb2RlbHMgZnJvbSBPcGVuUm91dGVyXG5HZW5lcmF0ZWQgc3JjL21vZGVscy5nZW5lcmF0ZWQudHNcblxuTW9kZWwgU3RhdGlzdGljczpcbiAgVG90YWwgdG9vbC1jYXBhYmxlIG1vZGVsczogNDE0XG4gIFJlYXNvbmluZy1jYXBhYmxlIG1vZGVsczogMjE0XG4gIGFudGhyb3BpYzogMjEgbW9kZWxzXG4gIGdvb2dsZTogMjEgbW9kZWxzXG4gIG9wZW5haTogMzMgbW9kZWxzXG4gIGdyb3E6IDE1IG1vZGVsc1xuICBjZXJlYnJhczogMyBtb2RlbHNcbiAgeGFpOiAyMiBtb2RlbHNcbiAgemFpOiA3IG1vZGVsc1xuICBtaXN0cmFsOiAyNSBtb2RlbHNcbiAgZ2l0aHViLWNvcGlsb3Q6IDE5IG1vZGVsc1xuICBvcGVucm91dGVyOiAyMzYgbW9kZWxzXG4gIGdvb2dsZS1nZW1pbmktY2xpOiA1IG1vZGVsc1xuICBnb29nbGUtYW50aWdyYXZpdHk6IDcgbW9kZWxzXG5cbj4gQG1hcmlvemVjaG5lci9waS1hZ2VudC1jb3JlQDAuMzAuMiBidWlsZFxuPiB0c2dvIC1wIHRzY29uZmlnLmJ1aWxkLmpzb25cblxuXG4+IEBtYXJpb3plY2huZXIvcGktY29kaW5nLWFnZW50QDAuMzAuMiBidWlsZFxuPiB0c2dvIC1wIHRzY29uZmlnLmJ1aWxkLmpzb24gJiYgY2htb2QgK3ggZGlzdC9jbGkuanMgJiYgbnBtIHJ1biBjb3B5LWFzc2V0c1xuXG5cbj4gQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yIGNvcHktYXNzZXRzXG4+IG1rZGlyIC1wIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyAmJiBta2RpciAtcCBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWwgZGlzdC9jb3JlL2V4cG9ydC1odG1sLyAmJiBjcCBzcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvKi5qcyBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yL1xuXG5cbj4gQG1hcmlvemVjaG5lci9waS1tb21AMC4zMC4yIGJ1aWxkXG4+IHRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvbiAmJiBjaG1vZCAreCBkaXN0L21haW4uanNcblxuXG4+IEBtYXJpb3plY2huZXIvcGktd2ViLXVpQDAuMzAuMiBidWlsZFxuPiB0c2dvIC1wIHRzY29uZmlnLmJ1aWxkLmpzb24gJiYgdGFpbHdpbmRjc3MgLWkgLi9zcmMvYXBwLmNzcyAtbyAuL2Rpc3QvYXBwLmNzcyAtLW1pbmlmeVxuXG7iiYggdGFpbHdpbmRjc3MgdjQuMS4xOFxuXG5Eb25lIGluIDkxbXNcblxuPiBAbWFyaW96ZWNobmVyL3BpQDAuMzAuMiBidWlsZFxuPiB0c2dvIC1wIHRzY29uZmlnLmJ1aWxkLmpzb24gJiYgY2htb2QgK3ggZGlzdC9jbGkuanMgJiYgY3Agc3JjL21vZGVscy5qc29uIGRpc3QvICYmIGNwIC1yIHNjcmlwdHMgZGlzdC9cblxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTg3OTY5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYWRjMjU2MGQiLCJwYXJlbnRJZCI6ImZiNDM5YTA0IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NjozMy4yOTFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgYnVpbGQgc3VjY2VlZGVkLiBUaGUgZWFybGllciBlcnJvciB3YXMgYmVjYXVzZSB0aGUgZGVwZW5kZW50IHBhY2thZ2VzIChwaS10dWksIGV0Yy4pIHdlcmVuJ3QgYnVpbHQuIE5vdyBsZXQgbWUgdmVyaWZ5IHRoZSBleHBvcnQtaHRtbCBmaWxlcyBhcmUgaW4gdGhlIHJpZ2h0IHBsYWNlOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXRBQ0NrWUlDeGdDS2tEVEpQZFR0RzhQdWZFSnp5eTZTVmRiYzBoSHc0K2RNZGtmbjF0anhqd2M5ME1SSldVVGZQZWkyelFHZTJhM2gxcTJ6OVlmTmU2QTYvdDNqaVBwOE5DWEVneElrb0U0a01GcFpGMDJ1Yk1hREF4UlhYaWZhTFN0cmRVS1lpSXdSTlBRcVJFQ1ZjZHllTTZJekd5VUJmMmR0YjAwTXlZSmhrTm4rYmh3YTlsSjR3MDJiRjdyUGhqYVJBTUhxQTRlS3JjQjFvSmEvQ0U4RWhqMVF1Q2Fxc0NCMTJGWHlUQ2l3M3I1Tkd4K1ZVaHJWclhIMGtiTG1HNWhmaGFCQ2l5Tm8vV0xXajZGbU9tNE1vRmMwaTN2YmM2d1EvUm80UlBrMmo5aEhrVEVkWUVPcWZQNkhGdk9mYzh0Uy9pNUdNMHduUGVyWFV5aGlRaUx5UWJqSUVFeCtabjJpNUI1VVUvU2syVkQ1bWkxbUdaM0w5VFRETERCcDRha3M4TVVLSkpTSmFDdkttdDdGMFphREtqT2lydTUram1vUUhDOWVsTzZ2ckdYcjhXUDNTOXUrNHhYeVZvSnZ1RzVHQUU9In0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJCdWlsZCBzdWNjZWVkZWQuIExldCBtZSB2ZXJpZnkgdGhlIGV4cG9ydC1odG1sIGFzc2V0cyBhcmUgaW4gcGxhY2U6In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxNmJzWWhWRmUxM3V3R1RncmdjZzVRUSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJscyAtbGEgcGFja2FnZXMvY29kaW5nLWFnZW50L2Rpc3QvY29yZS9leHBvcnQtaHRtbC9cbmxzIC1sYSBwYWNrYWdlcy9jb2RpbmctYWdlbnQvZGlzdC9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci8ifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTUwLCJjYWNoZVJlYWQiOjg4ODI0LCJjYWNoZVdyaXRlIjoxMDI0LCJ0b3RhbFRva2VucyI6OTAwMDYsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDM3NTAwMDAwMDAwMDAwMDAzLCJjYWNoZVJlYWQiOjAuMDQ0NDEyLCJjYWNoZVdyaXRlIjowLjAwNjQsInRvdGFsIjowLjA1NDYwMjAwMDAwMDAwMDAwNX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjU4Nzk3MH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjAzYWY0YjE1IiwicGFyZW50SWQiOiJhZGMyNTYwZCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6MzMuMzIwWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDE2YnNZaFZGZTEzdXdHVGdyZ2NnNVFRIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoidG90YWwgMTM2XG5kcnd4ci14ci14QCAgOCBiYWRsb2dpYyAgc3RhZmYgICAgMjU2IEphbiAgMSAwMjo1NiAuXG5kcnd4ci14ci14QCA3NSBiYWRsb2dpYyAgc3RhZmYgICAyNDAwIEphbiAgMSAwMjo1NiAuLlxuLXJ3LXItLXItLUAgIDEgYmFkbG9naWMgIHN0YWZmICAgIDcwMyBKYW4gIDEgMDI6NTYgaW5kZXguZC50c1xuLXJ3LXItLXItLUAgIDEgYmFkbG9naWMgIHN0YWZmICAgNjQ0NCBKYW4gIDEgMDI6NTYgaW5kZXguZC50cy5tYXBcbi1ydy1yLS1yLS1AICAxIGJhZGxvZ2ljICBzdGFmZiAgIDU0NjggSmFuICAxIDAyOjU2IGluZGV4LmpzXG4tcnctci0tci0tQCAgMSBiYWRsb2dpYyAgc3RhZmYgIDEwOTcyIEphbiAgMSAwMjo1NiBpbmRleC5qcy5tYXBcbi1ydy1yLS1yLS1AICAxIGJhZGxvZ2ljICBzdGFmZiAgMzU3MjUgSmFuICAxIDAyOjU2IHRlbXBsYXRlLmh0bWxcbmRyd3hyLXhyLXhAICA0IGJhZGxvZ2ljICBzdGFmZiAgICAxMjggSmFuICAxIDAyOjU2IHZlbmRvclxudG90YWwgMzIwXG5kcnd4ci14ci14QCA0IGJhZGxvZ2ljICBzdGFmZiAgICAgMTI4IEphbiAgMSAwMjo1NiAuXG5kcnd4ci14ci14QCA4IGJhZGxvZ2ljICBzdGFmZiAgICAgMjU2IEphbiAgMSAwMjo1NiAuLlxuLXJ3LXItLXItLUAgMSBiYWRsb2dpYyAgc3RhZmYgIDEyMTcyNyBKYW4gIDEgMDI6NTYgaGlnaGxpZ2h0Lm1pbi5qc1xuLXJ3LXItLXItLUAgMSBiYWRsb2dpYyAgc3RhZmYgICAzOTA1NSBKYW4gIDEgMDI6NTYgbWFya2VkLm1pbi5qc1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNTkzMzE5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMWIwOTQzZDQiLCJwYXJlbnRJZCI6IjAzYWY0YjE1IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NjozNy45OTZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJFdmVyeXRoaW5nIGlzIGluIHBsYWNlLiBOb3cgbGV0IG1lIGRvIGEgcXVpY2sgdGVzdCB0byBtYWtlIHN1cmUgdGhlIGV4cG9ydCBhY3R1YWxseSB3b3Jrcy4gTGV0IG1lIGNoZWNrIGlmIHRoZXJlJ3MgYSB0ZXN0IHNlc3Npb24gZmlsZSBJIGNhbiB1c2U6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFcm9DQ2tZSUN4Z0NLa0NteFNHS0REQ05RaFcwU2htT0lZb2Z0Y09ZU0ZVbjRjYnRUNHpNdFpqMTYvMnZOc3A0MTZhWjFJSS9MaVIyK0EvdnJmNFU1cjNLVmRuY2JZbzdSRXRyRWd4alVhcmlHakJwQkE1N2lNZ2FEUFFWTjd6VG92ZkNBclZ2L2lJd1ppWWVaSDVtVmRlUXE3L2pQUkN4R1dONG5NVzZaa3hGai9zN2NCRTU4ZHF0aysyRTN2T1VmVzBEc1l2YWVKMnlLcUVCUllSYVVYQk54YlkyL0xKV1F3bDB5MW4vZnNMdExOVFo5Sy85QmxjUnAxQzhQaGdTeGo4QUN0Tlh1TnA5aTV5OVVlUFRSZ1YycXFJTUQxK0pSbzR2SDRvSjI1NEZmWHV2bHdBOTFGUzhITC9VU3UxbWtCQ2p5d2dLeDQyR0J6SmRQdDNsWHMwVFFVWlgvNDYrNlFLVDQzWGJhWjIzTG8vNC83VWVBWU8yQnNxZ2I3VmhnamhWRlVUdWxrb2tQbWFud2RSWTd4M29uTU9VTHd0MWNHajhLYUlZQVE9PSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiTm93IGxldCBtZSB0ZXN0IHRoZSBleHBvcnQuIEZpcnN0LCBsZXQgbWUgZmluZCBhIHRlc3Qgc2Vzc2lvbjoifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFDQnY3NmZ1eUtiMXQ1ZG9yak5zR3RzIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImZpbmQgfi8ucGkvYWdlbnQvc2Vzc2lvbnMgLW5hbWUgXCIqLmpzb25sXCIgLXR5cGUgZiAyPi9kZXYvbnVsbCB8IGhlYWQgLTEifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTM2LCJjYWNoZVJlYWQiOjg5ODQ4LCJjYWNoZVdyaXRlIjo1NzUsInRvdGFsVG9rZW5zIjo5MDU2NywiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMzQwMDAwMDAwMDAwMDAwMDIsImNhY2hlUmVhZCI6MC4wNDQ5MjQsImNhY2hlV3JpdGUiOjAuMDAzNTkzNzUsInRvdGFsIjowLjA1MTk1Nzc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNTkzMzIxfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiM2Q5OTE4MWQiLCJwYXJlbnRJZCI6IjFiMDk0M2Q0IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NjozOC4wMzBaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUNCdjc2ZnV5S2IxdDVkb3JqTnNHdHMiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIvVXNlcnMvYmFkbG9naWMvLnBpL2FnZW50L3Nlc3Npb25zLy0tdmFyLWZvbGRlcnMtNDktbDQxNzFsM24yMTlfeHdxMzBmbXl6cjh3MDAwMGduLVQtcGktdGVzdC0xNzY3MDM5MDE1NzMxLWp6dm40dmdxdDctLS8yMDI1LTEyLTI5VDIwLTEwLTE1LTczMlpfZWIzNjk0YmMtZTA3ZC00N2I3LTllMzYtNjkyYWZlZjNlY2MwLmpzb25sXG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI1OTgwMjl9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJkYTc4NzYzNCIsInBhcmVudElkIjoiM2Q5OTE4MWQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU2OjQ0LjE0OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoYXQncyBhIHRlc3Qgc2Vzc2lvbi4gTGV0IG1lIHRyeSBleHBvcnRpbmcgaXQgdXNpbmcgdGhlIG5ldyBjb2RlOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXVvQkNrWUlDeGdDS2tDMHFLQ1JRSDdFUGhuWkg3WWRkYjMwL2RneWdnVHlHa2xFWjkwL3drWW9jK05lQUR0MHMwZFM5aDR0VHJJLzJ0UEZKSjlObkxWL2ZwdWQxWEVZMU5kZkVnelg5ZHg0SlkvdHozc1RQR2thRERFMS9qZERDTWdTZ3dRYlJTSXdQOUhtdmxvS2FwcmRnS0dvZWM0eTBoa0NKbUpXY3JwQ2VrSHVQVDkzQTVoZ04vQzFmTHJyc2VITEVGZGJIMXp2S2xLTisvL2NGWkc2OWVRaXhieHhFS0FUSGFFdkJGZDQ4ejVpWXB4OU9LUVBvU3MxcDQ2WUpZVWFWV0o5MGVkTUJTaGdGczVDQU1aUTJhMWhJd1NKMEpUL0plNHNmQ09DeUMwTHJ1eFZJbFl0K2ExV0dBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFKQndwbWt5R2dKbXFzWTJ5YXpKTFhHIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNkIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8gJiYgbm9kZSAtZSBcIlxuY29uc3QgeyBleHBvcnRGcm9tRmlsZSB9ID0gcmVxdWlyZSgnLi9wYWNrYWdlcy9jb2RpbmctYWdlbnQvZGlzdC9jb3JlL2V4cG9ydC1odG1sL2luZGV4LmpzJyk7XG5jb25zdCBwYXRoID0gJy9Vc2Vycy9iYWRsb2dpYy8ucGkvYWdlbnQvc2Vzc2lvbnMvLS12YXItZm9sZGVycy00OS1sNDE3MWwzbjIxOV94d3EzMGZteXpyOHcwMDAwZ24tVC1waS10ZXN0LTE3NjcwMzkwMTU3MzEtanp2bjR2Z3F0Ny0tLzIwMjUtMTItMjlUMjAtMTAtMTUtNzMyWl9lYjM2OTRiYy1lMDdkLTQ3YjctOWUzNi02OTJhZmVmM2VjYzAuanNvbmwnO1xuY29uc3Qgb3V0cHV0ID0gZXhwb3J0RnJvbUZpbGUocGF0aCwgeyBvdXRwdXRQYXRoOiAnL3RtcC90ZXN0LWV4cG9ydC5odG1sJyB9KTtcbmNvbnNvbGUubG9nKCdFeHBvcnRlZCB0bzonLCBvdXRwdXQpO1xuXCIifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6Mjc0LCJjYWNoZVJlYWQiOjkwNDIzLCJjYWNoZVdyaXRlIjoyNjQsInRvdGFsVG9rZW5zIjo5MDk2OSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwNjg1LCJjYWNoZVJlYWQiOjAuMDQ1MjExNDk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwMTY1LCJ0b3RhbCI6MC4wNTM3NTE0OTk5OTk5OTk5OTR9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI1OTgwMzB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmMjE2MTZkZSIsInBhcmVudElkIjoiZGE3ODc2MzQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU2OjQ0LjM3MFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxSkJ3cG1reUdnSm1xc1kyeWF6SkxYRyIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Im5vZGU6aW50ZXJuYWwvbW9kdWxlcy9janMvbG9hZGVyOjEyNDRcbiAgdGhyb3cgZXJyO1xuICBeXG5cbkVycm9yOiBDYW5ub3QgZmluZCBtb2R1bGUgJy4uL3Nlc3Npb24tbWFuYWdlci5qcydcblJlcXVpcmUgc3RhY2s6XG4tIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vW2V2YWxdXG4gICAgYXQgRnVuY3Rpb24uX3Jlc29sdmVGaWxlbmFtZSAobm9kZTppbnRlcm5hbC9tb2R1bGVzL2Nqcy9sb2FkZXI6MTI0MToxNSlcbiAgICBhdCBGdW5jdGlvbi5fbG9hZCAobm9kZTppbnRlcm5hbC9tb2R1bGVzL2Nqcy9sb2FkZXI6MTA2NjoyNylcbiAgICBhdCBUcmFjaW5nQ2hhbm5lbC50cmFjZVN5bmMgKG5vZGU6ZGlhZ25vc3RpY3NfY2hhbm5lbDozMjI6MTQpXG4gICAgYXQgd3JhcE1vZHVsZUxvYWQgKG5vZGU6aW50ZXJuYWwvbW9kdWxlcy9janMvbG9hZGVyOjIyMDoyNClcbiAgICBhdCBNb2R1bGUucmVxdWlyZSAobm9kZTppbnRlcm5hbC9tb2R1bGVzL2Nqcy9sb2FkZXI6MTMyNzoxMilcbiAgICBhdCByZXF1aXJlIChub2RlOmludGVybmFsL21vZHVsZXMvaGVscGVyczoxMzY6MTYpXG4gICAgYXQgZXhwb3J0RnJvbUZpbGUgKGZpbGU6Ly8vVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9kaXN0L2NvcmUvZXhwb3J0LWh0bWwvaW5kZXguanM6ODg6MzIpXG4gICAgYXQgW2V2YWxdOjQ6MTZcbiAgICBhdCBydW5TY3JpcHRJblRoaXNDb250ZXh0IChub2RlOmludGVybmFsL3ZtOjIwOToxMClcbiAgICBhdCBub2RlOmludGVybmFsL3Byb2Nlc3MvZXhlY3V0aW9uOjExODoxNCB7XG4gIGNvZGU6ICdNT0RVTEVfTk9UX0ZPVU5EJyxcbiAgcmVxdWlyZVN0YWNrOiBbICcvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL1tldmFsXScgXVxufVxuXG5Ob2RlLmpzIHYyMy40LjBcblxuXG5Db21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgMSJ9XSwiZGV0YWlscyI6e30sImlzRXJyb3IiOnRydWUsInRpbWVzdGFtcCI6MTc2NzIzMjYwNDM3MH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjVjMGZlNTYyIiwicGFyZW50SWQiOiJmMjE2MTZkZSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6NDkuMDU0WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiVGhlIHJlcXVpcmUoKSBpbiBleHBvcnRGcm9tRmlsZSBpcyBjYXVzaW5nIGlzc3Vlcy4gSSdtIHVzaW5nIHJlcXVpcmUoKSB3aXRoIGEgcmVsYXRpdmUgcGF0aCB3aGljaCBkb2Vzbid0IHdvcmsgd2VsbC4gTGV0IG1lIGZpeCB0aGUgaW1wb3J0IGluIGluZGV4LnRzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXNBQ0NrWUlDeGdDS2tCc0U0azY1Smo0cmR3dWxGK3lHQzJYdEtWVmxVdlZtNVJlQVZmcFk1YlFOWFBYZElrZlgxZVpmN05ib1ZoYnZxQnNKMnkzVUFHcmdGK2dIQ2FwcnpJbEVndzFhUkFLbmJ1aDkzUFF5UG9hRERmU1hhMjNzN2ZvcDJubERTSXdNMUEyVmxwbWtWQXBxaW1tcXo5NXVHSURneVBlK2F4V1ZPdFpGYTBvNm9tbXFwdkQ1ZFk0dnFWczBzK0R5MUt0S3FjQjlmalAxY0lQTHJoU3hsTExmdFhNV01YdjczWmtQdm9NRzYzMVZiN2x4ZW13T0VkcXFpWWdMZmFSV2lmWlJRWDI1a3JGR1cyWVRqM1p4VjZTY3NBV1BsSmtTWFUzQ0pnL0g1RHUxNDNIVG1TeGN2Qk4yalRMRTFHSjVxK2RoZjI2N21vRUtpR0VERWhtRVplcFZYbit0ZUJ5bU5FWHRTdTRHN3liNkZXMmdUNmFFVmxhMnhPZThGdmdiOU54amxXV0NicS9oRzhJcFpVYjVsemFEV3lLU0gvYmJRN2VqdHdZQVE9PSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiSSBuZWVkIHRvIGZpeCB0aGUgZHluYW1pYyByZXF1aXJlIGlzc3VlIGluIGluZGV4LnRzLiBMZXQgbWUgdXNlIGEgcHJvcGVyIGltcG9ydDoifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFNd3JVUWJ5TUExeDFDOTlHbms4Z051IiwibmFtZSI6InJlYWQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sL2luZGV4LnRzIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjE0NywiY2FjaGVSZWFkIjo5MDY4NywiY2FjaGVXcml0ZSI6NjQ2LCJ0b3RhbFRva2VucyI6OTE0ODgsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDM2NzUwMDAwMDAwMDAwMDAzLCJjYWNoZVJlYWQiOjAuMDQ1MzQzNDk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwNDAzNzUsInRvdGFsIjowLjA1MzA5Nn19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjYwNDM3MX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImFiNjZjMmQxIiwicGFyZW50SWQiOiI1YzBmZTU2MiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTY6NDkuMDY1WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFNd3JVUWJ5TUExeDFDOTlHbms4Z051IiwidG9vbE5hbWUiOiJyZWFkIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiaW1wb3J0IHR5cGUgeyBBZ2VudFN0YXRlIH0gZnJvbSBcIkBtYXJpb3plY2huZXIvcGktYWdlbnQtY29yZVwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBBUFBfTkFNRSwgZ2V0RXhwb3J0VGVtcGxhdGVEaXIsIFZFUlNJT04gfSBmcm9tIFwiLi4vLi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBnZXRSZXNvbHZlZFRoZW1lQ29sb3JzLCBpc0xpZ2h0VGhlbWUgfSBmcm9tIFwiLi4vLi4vbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUuanNcIjtcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0T3B0aW9ucyB7XG5cdG91dHB1dFBhdGg/OiBzdHJpbmc7XG5cdHRoZW1lTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNhbWVsQ2FzZSB0byBrZWJhYi1jYXNlIGZvciBDU1MgdmFyaWFibGUgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGNhbWVsVG9LZWJhYihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgXCIkMS0kMlwiKS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIENTUyBjdXN0b20gcHJvcGVydHkgZGVjbGFyYXRpb25zIGZyb20gdGhlbWUgY29sb3JzLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVRoZW1lVmFycyh0aGVtZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBjb2xvcnMgPSBnZXRSZXNvbHZlZFRoZW1lQ29sb3JzKHRoZW1lTmFtZSk7XG5cdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb2xvcnMpKSB7XG5cdFx0bGluZXMucHVzaChgLS0ke2NhbWVsVG9LZWJhYihrZXkpfTogJHt2YWx1ZX07YCk7XG5cdH1cblx0cmV0dXJuIGxpbmVzLmpvaW4oXCJcXG4gICAgICBcIik7XG59XG5cbi8qKlxuICogRXhwb3J0IHNlc3Npb24gdG8gSFRNTCB1c2luZyBTZXNzaW9uTWFuYWdlciBhbmQgQWdlbnRTdGF0ZS5cbiAqIFVzZWQgYnkgVFVJJ3MgL2V4cG9ydCBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2Vzc2lvblRvSHRtbChzbTogU2Vzc2lvbk1hbmFnZXIsIHN0YXRlPzogQWdlbnRTdGF0ZSwgb3B0aW9ucz86IEV4cG9ydE9wdGlvbnMgfCBzdHJpbmcpOiBzdHJpbmcge1xuXHQvLyBIYW5kbGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IG9wdGlvbnMgY2FuIGJlIGp1c3QgdGhlIG91dHB1dCBwYXRoIHN0cmluZ1xuXHRjb25zdCBvcHRzOiBFeHBvcnRPcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgPyB7IG91dHB1dFBhdGg6IG9wdGlvbnMgfSA6IG9wdGlvbnMgfHwge307XG5cblx0Y29uc3Qgc2Vzc2lvbkZpbGUgPSBzbS5nZXRTZXNzaW9uRmlsZSgpO1xuXHRpZiAoIXNlc3Npb25GaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGV4cG9ydCBpbi1tZW1vcnkgc2Vzc2lvbiB0byBIVE1MXCIpO1xuXHR9XG5cdGlmICghZXhpc3RzU3luYyhzZXNzaW9uRmlsZSkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJOb3RoaW5nIHRvIGV4cG9ydCB5ZXQgLSBzdGFydCBhIGNvbnZlcnNhdGlvbiBmaXJzdFwiKTtcblx0fVxuXG5cdGNvbnN0IGhlYWRlciA9IHNtLmdldEhlYWRlcigpO1xuXHRjb25zdCBlbnRyaWVzID0gc20uZ2V0RW50cmllcygpO1xuXHRjb25zdCBsZWFmSWQgPSBzbS5nZXRMZWFmSWQoKTtcblxuXHRjb25zdCBzZXNzaW9uRGF0YSA9IHtcblx0XHRoZWFkZXIsXG5cdFx0ZW50cmllcyxcblx0XHRsZWFmSWQsXG5cdFx0c3lzdGVtUHJvbXB0OiBzdGF0ZT8uc3lzdGVtUHJvbXB0LFxuXHRcdHRvb2xzOiBzdGF0ZT8udG9vbHM/Lm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjcmlwdGlvbjogdC5kZXNjcmlwdGlvbiB9KSksXG5cdH07XG5cblx0Ly8gTG9hZCB0ZW1wbGF0ZSBhbmQgdmVuZG9yIHNjcmlwdHNcblx0Y29uc3QgdGVtcGxhdGVEaXIgPSBnZXRFeHBvcnRUZW1wbGF0ZURpcigpO1xuXHRjb25zdCB0ZW1wbGF0ZSA9IHJlYWRGaWxlU3luYyhqb2luKHRlbXBsYXRlRGlyLCBcInRlbXBsYXRlLmh0bWxcIiksIFwidXRmLThcIik7XG5cdGNvbnN0IG1hcmtlZEpzID0gcmVhZEZpbGVTeW5jKGpvaW4odGVtcGxhdGVEaXIsIFwidmVuZG9yXCIsIFwibWFya2VkLm1pbi5qc1wiKSwgXCJ1dGYtOFwiKTtcblx0Y29uc3QgaGxqc0pzID0gcmVhZEZpbGVTeW5jKGpvaW4odGVtcGxhdGVEaXIsIFwidmVuZG9yXCIsIFwiaGlnaGxpZ2h0Lm1pbi5qc1wiKSwgXCJ1dGYtOFwiKTtcblxuXHQvLyBHZW5lcmF0ZSB0aGVtZSBDU1Ncblx0Y29uc3QgdGhlbWVWYXJzID0gZ2VuZXJhdGVUaGVtZVZhcnMob3B0cy50aGVtZU5hbWUpO1xuXHRjb25zdCBsaWdodCA9IGlzTGlnaHRUaGVtZShvcHRzLnRoZW1lTmFtZSk7XG5cdGNvbnN0IGJvZHlCZyA9IGxpZ2h0ID8gXCIjZjhmOGY4XCIgOiBcIiMxODE4MWVcIjtcblx0Y29uc3QgY29udGFpbmVyQmcgPSBsaWdodCA/IFwiI2ZmZmZmZlwiIDogXCIjMWUxZTI0XCI7XG5cblx0Ly8gQnVpbGQgSFRNTFxuXHRjb25zdCB0aXRsZSA9IGBTZXNzaW9uICR7aGVhZGVyPy5pZCA/PyBcImV4cG9ydFwifSAtICR7QVBQX05BTUV9YDtcblx0Y29uc3QgaHRtbCA9IHRlbXBsYXRlXG5cdFx0LnJlcGxhY2UoXCJ7e1RJVExFfX1cIiwgdGl0bGUpXG5cdFx0LnJlcGxhY2UoXCJ7e1RIRU1FX1ZBUlN9fVwiLCB0aGVtZVZhcnMpXG5cdFx0LnJlcGxhY2UoXCJ7e0JPRFlfQkd9fVwiLCBib2R5QmcpXG5cdFx0LnJlcGxhY2UoXCJ7e0NPTlRBSU5FUl9CR319XCIsIGNvbnRhaW5lckJnKVxuXHRcdC5yZXBsYWNlKFwie3tTRVNTSU9OX0RBVEF9fVwiLCBKU09OLnN0cmluZ2lmeShzZXNzaW9uRGF0YSkpXG5cdFx0LnJlcGxhY2UoXCJ7e01BUktFRF9KU319XCIsIG1hcmtlZEpzKVxuXHRcdC5yZXBsYWNlKFwie3tISUdITElHSFRfSlN9fVwiLCBobGpzSnMpXG5cdFx0LnJlcGxhY2UoXCJ7e0FQUF9OQU1FfX1cIiwgYCR7QVBQX05BTUV9IHYke1ZFUlNJT059YClcblx0XHQucmVwbGFjZShcInt7R0VORVJBVEVEX0RBVEV9fVwiLCBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCkpO1xuXG5cdC8vIFdyaXRlIG91dHB1dFxuXHRsZXQgb3V0cHV0UGF0aCA9IG9wdHMub3V0cHV0UGF0aDtcblx0aWYgKCFvdXRwdXRQYXRoKSB7XG5cdFx0Y29uc3Qgc2Vzc2lvbkJhc2VuYW1lID0gYmFzZW5hbWUoc2Vzc2lvbkZpbGUsIFwiLmpzb25sXCIpO1xuXHRcdG91dHB1dFBhdGggPSBgJHtBUFBfTkFNRX0tc2Vzc2lvbi0ke3Nlc3Npb25CYXNlbmFtZX0uaHRtbGA7XG5cdH1cblxuXHR3cml0ZUZpbGVTeW5jKG91dHB1dFBhdGgsIGh0bWwsIFwidXRmOFwiKTtcblx0cmV0dXJuIG91dHB1dFBhdGg7XG59XG5cbi8qKlxuICogRXhwb3J0IHNlc3Npb24gZmlsZSB0byBIVE1MIChzdGFuZGFsb25lLCB3aXRob3V0IEFnZW50U3RhdGUpLlxuICogVXNlZCBieSBDTEkgZm9yIGV4cG9ydGluZyBhcmJpdHJhcnkgc2Vzc2lvbiBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEZyb21GaWxlKGlucHV0UGF0aDogc3RyaW5nLCBvcHRpb25zPzogRXhwb3J0T3B0aW9ucyB8IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIEhhbmRsZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogb3B0aW9ucyBjYW4gYmUganVzdCB0aGUgb3V0cHV0IHBhdGggc3RyaW5nXG5cdGNvbnN0IG9wdHM6IEV4cG9ydE9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/IHsgb3V0cHV0UGF0aDogb3B0aW9ucyB9IDogb3B0aW9ucyB8fCB7fTtcblxuXHRpZiAoIWV4aXN0c1N5bmMoaW5wdXRQYXRoKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7aW5wdXRQYXRofWApO1xuXHR9XG5cblx0Ly8gVXNlIFNlc3Npb25NYW5hZ2VyIHRvIGxvYWQgdGhlIHNlc3Npb25cblx0Y29uc3QgeyBTZXNzaW9uTWFuYWdlciB9ID0gcmVxdWlyZShcIi4uL3Nlc3Npb24tbWFuYWdlci5qc1wiKSBhcyB0eXBlb2YgaW1wb3J0KFwiLi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCIpO1xuXHRjb25zdCBzbSA9IFNlc3Npb25NYW5hZ2VyLm9wZW4oaW5wdXRQYXRoKTtcblxuXHRjb25zdCBoZWFkZXIgPSBzbS5nZXRIZWFkZXIoKTtcblx0Y29uc3QgZW50cmllcyA9IHNtLmdldEVudHJpZXMoKTtcblx0Y29uc3QgbGVhZklkID0gc20uZ2V0TGVhZklkKCk7XG5cblx0Y29uc3Qgc2Vzc2lvbkRhdGEgPSB7XG5cdFx0aGVhZGVyLFxuXHRcdGVudHJpZXMsXG5cdFx0bGVhZklkLFxuXHRcdHN5c3RlbVByb21wdDogdW5kZWZpbmVkLFxuXHRcdHRvb2xzOiB1bmRlZmluZWQsXG5cdH07XG5cblx0Ly8gTG9hZCB0ZW1wbGF0ZSBhbmQgdmVuZG9yIHNjcmlwdHNcblx0Y29uc3QgdGVtcGxhdGVEaXIgPSBnZXRFeHBvcnRUZW1wbGF0ZURpcigpO1xuXHRjb25zdCB0ZW1wbGF0ZSA9IHJlYWRGaWxlU3luYyhqb2luKHRlbXBsYXRlRGlyLCBcInRlbXBsYXRlLmh0bWxcIiksIFwidXRmLThcIik7XG5cdGNvbnN0IG1hcmtlZEpzID0gcmVhZEZpbGVTeW5jKGpvaW4odGVtcGxhdGVEaXIsIFwidmVuZG9yXCIsIFwibWFya2VkLm1pbi5qc1wiKSwgXCJ1dGYtOFwiKTtcblx0Y29uc3QgaGxqc0pzID0gcmVhZEZpbGVTeW5jKGpvaW4odGVtcGxhdGVEaXIsIFwidmVuZG9yXCIsIFwiaGlnaGxpZ2h0Lm1pbi5qc1wiKSwgXCJ1dGYtOFwiKTtcblxuXHQvLyBHZW5lcmF0ZSB0aGVtZSBDU1Ncblx0Y29uc3QgdGhlbWVWYXJzID0gZ2VuZXJhdGVUaGVtZVZhcnMob3B0cy50aGVtZU5hbWUpO1xuXHRjb25zdCBsaWdodCA9IGlzTGlnaHRUaGVtZShvcHRzLnRoZW1lTmFtZSk7XG5cdGNvbnN0IGJvZHlCZyA9IGxpZ2h0ID8gXCIjZjhmOGY4XCIgOiBcIiMxODE4MWVcIjtcblx0Y29uc3QgY29udGFpbmVyQmcgPSBsaWdodCA/IFwiI2ZmZmZmZlwiIDogXCIjMWUxZTI0XCI7XG5cblx0Ly8gQnVpbGQgSFRNTFxuXHRjb25zdCB0aXRsZSA9IGBTZXNzaW9uICR7aGVhZGVyPy5pZCA/PyBcImV4cG9ydFwifSAtICR7QVBQX05BTUV9YDtcblx0Y29uc3QgaHRtbCA9IHRlbXBsYXRlXG5cdFx0LnJlcGxhY2UoXCJ7e1RJVExFfX1cIiwgdGl0bGUpXG5cdFx0LnJlcGxhY2UoXCJ7e1RIRU1FX1ZBUlN9fVwiLCB0aGVtZVZhcnMpXG5cdFx0LnJlcGxhY2UoXCJ7e0JPRFlfQkd9fVwiLCBib2R5QmcpXG5cdFx0LnJlcGxhY2UoXCJ7e0NPTlRBSU5FUl9CR319XCIsIGNvbnRhaW5lckJnKVxuXHRcdC5yZXBsYWNlKFwie3tTRVNTSU9OX0RBVEF9fVwiLCBKU09OLnN0cmluZ2lmeShzZXNzaW9uRGF0YSkpXG5cdFx0LnJlcGxhY2UoXCJ7e01BUktFRF9KU319XCIsIG1hcmtlZEpzKVxuXHRcdC5yZXBsYWNlKFwie3tISUdITElHSFRfSlN9fVwiLCBobGpzSnMpXG5cdFx0LnJlcGxhY2UoXCJ7e0FQUF9OQU1FfX1cIiwgYCR7QVBQX05BTUV9IHYke1ZFUlNJT059YClcblx0XHQucmVwbGFjZShcInt7R0VORVJBVEVEX0RBVEV9fVwiLCBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCkpO1xuXG5cdC8vIFdyaXRlIG91dHB1dFxuXHRsZXQgb3V0cHV0UGF0aCA9IG9wdHMub3V0cHV0UGF0aDtcblx0aWYgKCFvdXRwdXRQYXRoKSB7XG5cdFx0Y29uc3QgaW5wdXRCYXNlbmFtZSA9IGJhc2VuYW1lKGlucHV0UGF0aCwgXCIuanNvbmxcIik7XG5cdFx0b3V0cHV0UGF0aCA9IGAke0FQUF9OQU1FfS1zZXNzaW9uLSR7aW5wdXRCYXNlbmFtZX0uaHRtbGA7XG5cdH1cblxuXHR3cml0ZUZpbGVTeW5jKG91dHB1dFBhdGgsIGh0bWwsIFwidXRmOFwiKTtcblx0cmV0dXJuIG91dHB1dFBhdGg7XG59XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI2MDkwNTh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI3OGNmY2ExOSIsInBhcmVudElkIjoiYWI2NmMyZDEiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU2OjU4LjcxMloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSBpc3N1ZSBpcyB0aGUgYHJlcXVpcmUoXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIilgIGluIGBleHBvcnRGcm9tRmlsZWAuIFRoaXMgZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBFU00uIEkgc2hvdWxkIGp1c3QgaW1wb3J0IGl0IGF0IHRoZSB0b3AgbGV2ZWwgaW5zdGVhZC4gVGhlIHJlYXNvbiBJIHdhcyB1c2luZyBhIGR5bmFtaWMgcmVxdWlyZSB3YXMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBidXQgbGV0IG1lIGp1c3QgdXNlIGEgcmVndWxhciBpbXBvcnQgYW5kIHNlZSBpZiBpdCB3b3JrczoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVzc0RDa1lJQ3hnQ0trRFdjQlpNak1PTWk3UmZwVytpbWY1SkJ2UGp0U1hZYU1OSGxycXNYZnhrYWJ3WGdqWEtMeGg4NEMwZklZcStDQWh1STJIZ2hjc2tvK1ovMWdaUHBxTjlFZ3pzdjhXclpUOFpzRlRpdFZFYURQRURQMWhYMGhadk1TRUhuaUl3dnFTV0xXMExwaFpoM0FQdDBnWmxsQ1FRaTVxT3JDWVd0SThpMllkbUpUM21tM3JaZ1Z5SGZBaTRmMUphTGEvaEtySUNzQnIwRmw5c0duc2dnU01aV1BUeTVSRjBCT1IwaHJ6cktXVTBJdTlIZGtoczZJUW9EZnFWd0FiTzFkYUhmaUNTZkMzV1ZJWUJsM2tzaGhFMTRUVlZUd1NxK2hydnRBMnNLZ2VEYWRxOUlIQzhFZ09uUkxxWkhTVHgxRzhqOE5GbjlPNUU5VTc4WnpxVWJHOFlmUlNBb1dlT3lJWUtpRjN1dUFrN0tYZ1FjeXJWRkhkSHpJRVVNNjROQmZhUzRPYXZiNWdXcTBJc3o4bUlpRXVsc1RweUV0L1lRb0ZEL21wK290SVlPNnl1NklUcFJvWjVVS3NnSkswMnErVUNEcWRuQlhxNFNOa3NUQWZjRUdPWGZzQXVZV1dnUmlzYU1oZHpvU0dZcHljdnNUSFdtd0h3eFRkOEdEVUkxdXkySmJvc3FrYzBJdEhXbE9aTCtwT2FMd1gvR1oweUpqbDdaRUN2V1BieUE4QU9UYUJNZHR6RkJTWVFiWk1LalQ5dW01RlNSTXd2Mnlpakl6dWQ1aWR3Tk9neStYcXpHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxUVFvSEJCR0NUbVFIS25oM3FxOUY0bSIsIm5hbWUiOiJlZGl0IiwiYXJndW1lbnRzIjp7InBhdGgiOiIvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC9pbmRleC50cyIsIm9sZFRleHQiOiJpbXBvcnQgdHlwZSB7IEFnZW50U3RhdGUgfSBmcm9tIFwiQG1hcmlvemVjaG5lci9waS1hZ2VudC1jb3JlXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEFQUF9OQU1FLCBnZXRFeHBvcnRUZW1wbGF0ZURpciwgVkVSU0lPTiB9IGZyb20gXCIuLi8uLi9jb25maWcuanNcIjtcbmltcG9ydCB7IGdldFJlc29sdmVkVGhlbWVDb2xvcnMsIGlzTGlnaHRUaGVtZSB9IGZyb20gXCIuLi8uLi9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIjsiLCJuZXdUZXh0IjoiaW1wb3J0IHR5cGUgeyBBZ2VudFN0YXRlIH0gZnJvbSBcIkBtYXJpb3plY2huZXIvcGktYWdlbnQtY29yZVwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBBUFBfTkFNRSwgZ2V0RXhwb3J0VGVtcGxhdGVEaXIsIFZFUlNJT04gfSBmcm9tIFwiLi4vLi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBnZXRSZXNvbHZlZFRoZW1lQ29sb3JzLCBpc0xpZ2h0VGhlbWUgfSBmcm9tIFwiLi4vLi4vbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvdGhlbWUuanNcIjtcbmltcG9ydCB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSBcIi4uL3Nlc3Npb24tbWFuYWdlci5qc1wiOyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0Ijo0MjgsImNhY2hlUmVhZCI6OTEzMzMsImNhY2hlV3JpdGUiOjE5NDMsInRvdGFsVG9rZW5zIjo5MzcxMiwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAxMDcwMDAwMDAwMDAwMDAwMSwiY2FjaGVSZWFkIjowLjA0NTY2NjUsImNhY2hlV3JpdGUiOjAuMDEyMTQzNzUsInRvdGFsIjowLjA2ODU1MDI1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjA5MDY2fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNTUzNThmOTYiLCJwYXJlbnRJZCI6Ijc4Y2ZjYTE5IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1Njo1OC43MThaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVFRb0hCQkdDVG1RSEtuaDNxcTlGNG0iLCJ0b29sTmFtZSI6ImVkaXQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJTdWNjZXNzZnVsbHkgcmVwbGFjZWQgdGV4dCBpbiAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC9pbmRleC50cy4ifV0sImRldGFpbHMiOnsiZGlmZiI6IiAgICAgLi4uXG4gICAyIGltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuICAgMyBpbXBvcnQgeyBiYXNlbmFtZSwgam9pbiB9IGZyb20gXCJwYXRoXCI7XG4gICA0IGltcG9ydCB7IEFQUF9OQU1FLCBnZXRFeHBvcnRUZW1wbGF0ZURpciwgVkVSU0lPTiB9IGZyb20gXCIuLi8uLi9jb25maWcuanNcIjtcbiAgIDUgaW1wb3J0IHsgZ2V0UmVzb2x2ZWRUaGVtZUNvbG9ycywgaXNMaWdodFRoZW1lIH0gZnJvbSBcIi4uLy4uL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL3RoZW1lLmpzXCI7XG4tICA2IGltcG9ydCB0eXBlIHsgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCI7XG4rICA2IGltcG9ydCB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSBcIi4uL3Nlc3Npb24tbWFuYWdlci5qc1wiO1xuICAgNyBcbiAgIDggZXhwb3J0IGludGVyZmFjZSBFeHBvcnRPcHRpb25zIHtcbiAgIDkgXHRvdXRwdXRQYXRoPzogc3RyaW5nO1xuICAxMCBcdHRoZW1lTmFtZT86IHN0cmluZztcbiAgICAgLi4uIiwiZmlyc3RDaGFuZ2VkTGluZSI6Nn0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI2MTg3MTd9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJlNGZlZDEyZiIsInBhcmVudElkIjoiNTUzNThmOTYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU3OjA0LjMxNloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ik5vdyBJIG5lZWQgdG8gcmVtb3ZlIHRoZSBkeW5hbWljIHJlcXVpcmUgYW5kIHVzZSB0aGUgaW1wb3J0ZWQgU2Vzc2lvbk1hbmFnZXI6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdlVCQ2tZSUN4Z0NLa0REZFZZQjN3WmUvY0pTam5QYmowblFpQjhNR0hoNUZvTytnYzZNWnhKbFJmR3gwZktyZlA5Skw3OXJydnhuRjhMUjRSQ2EyVStacnp4KzNGVUJXNk5kRWd6WmJmeTdaZTMwVU4yVGVFb2FEQ3JTNERWTHB4a1Q2Mk1QWWlJd0oxMjJla2RLdGFWUEMrNmtuRmo1ank0U0tPWkxSMkhzc3lmV2JETkt3YUtrV3JoZkRoQmplWEZKYU1pTzRrVWVLbDI5WE8zblk3d3ptQVNVeVE0bmFkL05CWEZxL2I5UFZRdlU5UWpvdmtKZzlxQWN3eDJ6Q3BIWHFNNDUwdnYvZ1FCU2lUQ0FHM29vYUgwMXZrUE8wckZST3dvVmdHbWlBVkhaeGtUdnovWjhnUjlxeFBUNWZCK3dJM1FVZE1RWUFRPT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFLNWJ4Wmtub0F0M1h2b2ZxYUpLa2hSIiwibmFtZSI6ImVkaXQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9jb3JlL2V4cG9ydC1odG1sL2luZGV4LnRzIiwib2xkVGV4dCI6Ilx0aWYgKCFleGlzdHNTeW5jKGlucHV0UGF0aCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2lucHV0UGF0aH1gKTtcblx0fVxuXG5cdC8vIFVzZSBTZXNzaW9uTWFuYWdlciB0byBsb2FkIHRoZSBzZXNzaW9uXG5cdGNvbnN0IHsgU2Vzc2lvbk1hbmFnZXIgfSA9IHJlcXVpcmUoXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIikgYXMgdHlwZW9mIGltcG9ydChcIi4uL3Nlc3Npb24tbWFuYWdlci5qc1wiKTtcblx0Y29uc3Qgc20gPSBTZXNzaW9uTWFuYWdlci5vcGVuKGlucHV0UGF0aCk7IiwibmV3VGV4dCI6Ilx0aWYgKCFleGlzdHNTeW5jKGlucHV0UGF0aCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2lucHV0UGF0aH1gKTtcblx0fVxuXG5cdC8vIFVzZSBTZXNzaW9uTWFuYWdlciB0byBsb2FkIHRoZSBzZXNzaW9uXG5cdGNvbnN0IHNtID0gU2Vzc2lvbk1hbmFnZXIub3BlbihpbnB1dFBhdGgpOyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoyNzEsImNhY2hlUmVhZCI6OTMyNzYsImNhY2hlV3JpdGUiOjQ4MywidG90YWxUb2tlbnMiOjk0MDM4LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA2Nzc1MDAwMDAwMDAwMDAxLCJjYWNoZVJlYWQiOjAuMDQ2NjM4LCJjYWNoZVdyaXRlIjowLjAwMzAxODc1LCJ0b3RhbCI6MC4wNTY0NzE3NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjYxODcxOH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjgxNDM4NGY1IiwicGFyZW50SWQiOiJlNGZlZDEyZiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MDQuMzIwWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFLNWJ4Wmtub0F0M1h2b2ZxYUpLa2hSIiwidG9vbE5hbWUiOiJlZGl0IiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IHJlcGxhY2VkIHRleHQgaW4gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwvaW5kZXgudHMuIn1dLCJkZXRhaWxzIjp7ImRpZmYiOiIgICAgIC4uLlxuIDEwNSBcdFx0dGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtpbnB1dFBhdGh9YCk7XG4gMTA2IFx0fVxuIDEwNyBcbiAxMDggXHQvLyBVc2UgU2Vzc2lvbk1hbmFnZXIgdG8gbG9hZCB0aGUgc2Vzc2lvblxuLTEwOSBcdGNvbnN0IHsgU2Vzc2lvbk1hbmFnZXIgfSA9IHJlcXVpcmUoXCIuLi9zZXNzaW9uLW1hbmFnZXIuanNcIikgYXMgdHlwZW9mIGltcG9ydChcIi4uL3Nlc3Npb24tbWFuYWdlci5qc1wiKTtcbiAxMTAgXHRjb25zdCBzbSA9IFNlc3Npb25NYW5hZ2VyLm9wZW4oaW5wdXRQYXRoKTtcbiAxMTEgXG4gMTEyIFx0Y29uc3QgaGVhZGVyID0gc20uZ2V0SGVhZGVyKCk7XG4gMTEzIFx0Y29uc3QgZW50cmllcyA9IHNtLmdldEVudHJpZXMoKTtcbiAgICAgLi4uIiwiZmlyc3RDaGFuZ2VkTGluZSI6MTA5fSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjYyNDMyMH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjMyNzUzMWI5IiwicGFyZW50SWQiOiI4MTQzODRmNSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MDcuNDg3WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTm93IGxldCBtZSByZWJ1aWxkIGFuZCB0ZXN0OiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXNRQkNrWUlDeGdDS2tCUXBMdWZGRXNYcVV4T1lLMnNtblkrK0tZSVNiRUEzZDFnbXVVT0NTdUF0dVFTVTMwSloyYzROdXF4MmNkUUM3NWZLaWp1RmdFdXlqNTJnRlFsUmF5YUVnd1VJRjFQM25mMWVLaGc5V0FhREJQR29zVWZxSkFFYTBXNFdDSXcyRHRoNmRjQmV0UGxnVVJKTVFCVC8zZFdNNTgrcnl6Ykc2ZzFEWE1hejZZZlFMMDEwTnpjcHQweUwySTlTVDJWS2l4Q1VoSHlOUkM1UmdxUmZzRmZMN3FUVkNSa2RvVzU3UjV1RWdpb2p0NjZmV2xhWEIzRXhlRTZNMCtmVkJnQiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMTJocUxaRXpGWWplaHRrd0dFZVpVMk4iLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiY2QgL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9ubyAmJiBucG0gcnVuIGNoZWNrIDI+JjEifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6ODgsImNhY2hlUmVhZCI6OTM3NTksImNhY2hlV3JpdGUiOjMyNiwidG90YWxUb2tlbnMiOjk0MTgxLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyMiwiY2FjaGVSZWFkIjowLjA0Njg3OTUsImNhY2hlV3JpdGUiOjAuMDAyMDM3NTAwMDAwMDAwMDAwMiwidG90YWwiOjAuMDUxMTU2OTk5OTk5OTk5OTk0fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjI0MzIxfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZjEyZTdjMzMiLCJwYXJlbnRJZCI6IjMyNzUzMWI5IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NzoxMC4zMzZaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTJocUxaRXpGWWplaHRrd0dFZVpVMk4iLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcbj4gcGktbW9ub3JlcG9AMC4wLjMgY2hlY2tcbj4gYmlvbWUgY2hlY2sgLS13cml0ZSAuICYmIHRzZ28gLS1ub0VtaXQgJiYgbnBtIHJ1biBjaGVjayAtdyBAbWFyaW96ZWNobmVyL3BpLXdlYi11aVxuXG5DaGVja2VkIDMxNCBmaWxlcyBpbiAxNzZtcy4gTm8gZml4ZXMgYXBwbGllZC5cblxuPiBAbWFyaW96ZWNobmVyL3BpLXdlYi11aUAwLjMwLjIgY2hlY2tcbj4gYmlvbWUgY2hlY2sgLS13cml0ZSAuICYmIHRzYyAtLW5vRW1pdCAmJiBjZCBleGFtcGxlICYmIGJpb21lIGNoZWNrIC0td3JpdGUgLiAmJiB0c2MgLS1ub0VtaXRcblxuQ2hlY2tlZCA3MyBmaWxlcyBpbiAzNm1zLiBObyBmaXhlcyBhcHBsaWVkLlxuQ2hlY2tlZCAzIGZpbGVzIGluIDhtcy4gTm8gZml4ZXMgYXBwbGllZC5cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjYzMDMzNn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjJiMzYzZTExIiwicGFyZW50SWQiOiJmMTJlN2MzMyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MTMuNzM4WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiR29vZCwgbGV0IG1lIHJlYnVpbGQ6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFcjBCQ2tZSUN4Z0NLa0RpelE2UTgvL3hDU1VKTDE0RHNxc2hoS2wyZVNFQ3N5eloxYkowb3FZeHB2dHZaSEp5OHY4Qm4yU3JtTjJlcnhQMTRsZVhtck1NM2c0NXR3MXJJS1NPRWd5N25YL3I2M1JoT1lMWGtwc2FEQjEzT0cyVWdlVVU2ZHJjMVNJd0tPRStra0tWTjZTNllod0IvSVFnVThqUExYQmpwWWtoeTB6WFRHZHdveWRuaUhRQXZ3S1ZTQ3dYSWgvM04zYXFLaVVHaGRrOVE0SWtoZVdXU1dscTlFMzFvRHBzNkZtc1JFN0VBNzhCdmdVMUZ0c0hCMkpvR0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMTVyU1ZuejFHM2VjTXFVOWg0QmFEVlIiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiY2QgcGFja2FnZXMvY29kaW5nLWFnZW50ICYmIG5wbSBydW4gYnVpbGQgMj4mMSJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0Ijo3OCwiY2FjaGVSZWFkIjo5NDA4NSwiY2FjaGVXcml0ZSI6MjU2LCJ0b3RhbFRva2VucyI6OTQ0MjcsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDE5NTAwMDAwMDAwMDAwMDAxLCJjYWNoZVJlYWQiOjAuMDQ3MDQyNSwiY2FjaGVXcml0ZSI6MC4wMDE2LCJ0b3RhbCI6MC4wNTA2MzI1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjMwMzM2fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNjBlZTM3NWEiLCJwYXJlbnRJZCI6IjJiMzYzZTExIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NzoxNC4yMzlaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTVyU1ZuejFHM2VjTXFVOWg0QmFEVlIiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcbj4gQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yIGJ1aWxkXG4+IHRzZ28gLXAgdHNjb25maWcuYnVpbGQuanNvbiAmJiBjaG1vZCAreCBkaXN0L2NsaS5qcyAmJiBucG0gcnVuIGNvcHktYXNzZXRzXG5cblxuPiBAbWFyaW96ZWNobmVyL3BpLWNvZGluZy1hZ2VudEAwLjMwLjIgY29weS1hc3NldHNcbj4gbWtkaXIgLXAgZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZSAmJiBjcCBzcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvKi5qc29uIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvICYmIG1rZGlyIC1wIGRpc3QvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IgJiYgY3Agc3JjL2NvcmUvZXhwb3J0LWh0bWwvdGVtcGxhdGUuaHRtbCBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci8qLmpzIGRpc3QvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvXG5cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjYzNDIzOX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjE5NjA1ZWM1IiwicGFyZW50SWQiOiI2MGVlMzc1YSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MjQuMzc2WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTm93IGxldCBtZSB0ZXN0IHRoZSBleHBvcnQgYWdhaW46IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFc2tCQ2tZSUN4Z0NLa0FEU2sxTGI3ZEo5RWtQQjVUV09ubDZ0cVVRN25GYUlEQXp4Uklod2kxc2dsSFhuSHBPWkhhSE9OVEgyQVBUWlUxYUNjcUpGWEhJNEFING04Y0o1eG1iRWd3cCs3WG9uWmtuNnczd3pSa2FEUGZhL05FTE5vRDFteXUwNkNJdzUyQkZpMXF5YkJsWDNGa09RTEdMeXk3RWoxSCtTUkNjdlkxeEsvL29wUk4zbFFLek5PWWNVWWE5eTBrK3BtbXJLakVGbUVWNmVzSUNrR1BxcWxOcWFBdjhxWXFPZVJXVGNtL3BjeVI5RGh2UUFoR096ZlJqZnpkSTFyQkRXWVFhb1VKWUdBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFWY251NVBIcW5WclJZOWs3cVZSVkp5IiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNkIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50ICYmIG5vZGUgLWUgXCJcbmltcG9ydCB7IGV4cG9ydEZyb21GaWxlIH0gZnJvbSAnLi9kaXN0L2NvcmUvZXhwb3J0LWh0bWwvaW5kZXguanMnO1xuY29uc3QgcGF0aCA9ICcvVXNlcnMvYmFkbG9naWMvLnBpL2FnZW50L3Nlc3Npb25zLy0tdmFyLWZvbGRlcnMtNDktbDQxNzFsM24yMTlfeHdxMzBmbXl6cjh3MDAwMGduLVQtcGktdGVzdC0xNzY3MDM5MDE1NzMxLWp6dm40dmdxdDctLS8yMDI1LTEyLTI5VDIwLTEwLTE1LTczMlpfZWIzNjk0YmMtZTA3ZC00N2I3LTllMzYtNjkyYWZlZjNlY2MwLmpzb25sJztcbmNvbnN0IG91dHB1dCA9IGV4cG9ydEZyb21GaWxlKHBhdGgsIHsgb3V0cHV0UGF0aDogJy90bXAvdGVzdC1leHBvcnQuaHRtbCcgfSk7XG5jb25zb2xlLmxvZygnRXhwb3J0ZWQgdG86Jywgb3V0cHV0KTtcblwiIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjI2NCwiY2FjaGVSZWFkIjo5NDM0MSwiY2FjaGVXcml0ZSI6MjU3LCJ0b3RhbFRva2VucyI6OTQ4NzAsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDY2LCJjYWNoZVJlYWQiOjAuMDQ3MTcwNSwiY2FjaGVXcml0ZSI6MC4wMDE2MDYyNSwidG90YWwiOjAuMDU1NDE2NzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI2MzQyMzl9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxZTQ0ODMzNyIsInBhcmVudElkIjoiMTk2MDVlYzUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU3OjI0LjYyM1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxVmNudTVQSHFuVnJSWTlrN3FWUlZKeSIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkV4cG9ydGVkIHRvOiAvdG1wL3Rlc3QtZXhwb3J0Lmh0bWxcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjY0NDYyM319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImI5MjEwMmU2IiwicGFyZW50SWQiOiIxZTQ0ODMzNyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MjguMTcxWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTGV0IG1lIGNoZWNrIGlmIHRoZSBvdXRwdXQgZmlsZSBsb29rcyByZWFzb25hYmxlOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXRrQkNrWUlDeGdDS2tBem1jdTNGTFF1MjR3QUtEVFl4czdjSW4rYzUwbVZ3L0hoR1dGaVhuYXRTQTlVaW9XTW1WY1RjMHlNNzZHNFg5R2dIeStWbG9IaUNQeC9OTWhkUThqaEVnd2lZcURsd25VbFZJaVBCdFVhRE1INE9FZXdGb0FmMmRQd3V5SXd2eUZ2VjZoc3FwTWZRY2lremExblloRllOcEhtaGJOYnVlZ3cwallabnlWRU4xN0t3N1I0dEc0Vk5JNlNKMmFlS2tFWDZCcTdlQlZ1MUlNVENTUkt4VUJueVNMVmVVSGhHdUUvSVdhV2pnOERxK05kdW5DRHNZNDJISzNZVnJOaGZmMW5rSkNNSy9QeGpENmxpTWxHcG15bGloZ0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFENGo4MmtOVlNtWUx2ZUxuWVJBUHk0IiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6IndjIC1jIC90bXAvdGVzdC1leHBvcnQuaHRtbCAmJiBoZWFkIC01MCAvdG1wL3Rlc3QtZXhwb3J0Lmh0bWwifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6OTMsImNhY2hlUmVhZCI6OTQ1OTgsImNhY2hlV3JpdGUiOjI5NiwidG90YWxUb2tlbnMiOjk0OTk1LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyMzI1MDAwMDAwMDAwMDAwMiwiY2FjaGVSZWFkIjowLjA0NzI5OSwiY2FjaGVXcml0ZSI6MC4wMDE4NSwidG90YWwiOjAuMDUxNTE0fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjQ0NjIzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiM2M2ZjAxYzYiLCJwYXJlbnRJZCI6ImI5MjEwMmU2IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NzoyOC4xODNaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUQ0ajgya05WU21ZTHZlTG5ZUkFQeTQiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDE5OTc1MCAvdG1wL3Rlc3QtZXhwb3J0Lmh0bWxcbjwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbiAgPG1ldGEgY2hhcnNldD1cIlVURi04XCI+XG4gIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCI+XG4gIDx0aXRsZT5TZXNzaW9uIGViMzY5NGJjLWUwN2QtNDdiNy05ZTM2LTY5MmFmZWYzZWNjMCAtIHBpPC90aXRsZT5cbiAgPHN0eWxlPlxuICAgIDpyb290IHtcbiAgICAgIC0tYWNjZW50OiAjOGFiZWI3O1xuICAgICAgLS1ib3JkZXI6ICM1Zjg3ZmY7XG4gICAgICAtLWJvcmRlci1hY2NlbnQ6ICMwMGQ3ZmY7XG4gICAgICAtLWJvcmRlci1tdXRlZDogIzUwNTA1MDtcbiAgICAgIC0tc3VjY2VzczogI2I1YmQ2ODtcbiAgICAgIC0tZXJyb3I6ICNjYzY2NjY7XG4gICAgICAtLXdhcm5pbmc6ICNmZmZmMDA7XG4gICAgICAtLW11dGVkOiAjODA4MDgwO1xuICAgICAgLS1kaW06ICM2NjY2NjY7XG4gICAgICAtLXRleHQ6IGluaGVyaXQ7XG4gICAgICAtLXRoaW5raW5nLXRleHQ6ICM4MDgwODA7XG4gICAgICAtLXNlbGVjdGVkLWJnOiAjM2EzYTRhO1xuICAgICAgLS11c2VyLW1lc3NhZ2UtYmc6ICMzNDM1NDE7XG4gICAgICAtLXVzZXItbWVzc2FnZS10ZXh0OiBpbmhlcml0O1xuICAgICAgLS1jdXN0b20tbWVzc2FnZS1iZzogIzJkMjgzODtcbiAgICAgIC0tY3VzdG9tLW1lc3NhZ2UtdGV4dDogaW5oZXJpdDtcbiAgICAgIC0tY3VzdG9tLW1lc3NhZ2UtbGFiZWw6ICM5NTc1Y2Q7XG4gICAgICAtLXRvb2wtcGVuZGluZy1iZzogIzI4MjgzMjtcbiAgICAgIC0tdG9vbC1zdWNjZXNzLWJnOiAjMjgzMjI4O1xuICAgICAgLS10b29sLWVycm9yLWJnOiAjM2MyODI4O1xuICAgICAgLS10b29sLXRpdGxlOiBpbmhlcml0O1xuICAgICAgLS10b29sLW91dHB1dDogIzgwODA4MDtcbiAgICAgIC0tbWQtaGVhZGluZzogI2YwYzY3NDtcbiAgICAgIC0tbWQtbGluazogIzgxYTJiZTtcbiAgICAgIC0tbWQtbGluay11cmw6ICM2NjY2NjY7XG4gICAgICAtLW1kLWNvZGU6ICM4YWJlYjc7XG4gICAgICAtLW1kLWNvZGUtYmxvY2s6ICNiNWJkNjg7XG4gICAgICAtLW1kLWNvZGUtYmxvY2stYm9yZGVyOiAjODA4MDgwO1xuICAgICAgLS1tZC1xdW90ZTogIzgwODA4MDtcbiAgICAgIC0tbWQtcXVvdGUtYm9yZGVyOiAjODA4MDgwO1xuICAgICAgLS1tZC1ocjogIzgwODA4MDtcbiAgICAgIC0tbWQtbGlzdC1idWxsZXQ6ICM4YWJlYjc7XG4gICAgICAtLXRvb2wtZGlmZi1hZGRlZDogI2I1YmQ2ODtcbiAgICAgIC0tdG9vbC1kaWZmLXJlbW92ZWQ6ICNjYzY2NjY7XG4gICAgICAtLXRvb2wtZGlmZi1jb250ZXh0OiAjODA4MDgwO1xuICAgICAgLS1zeW50YXgtY29tbWVudDogIzZBOTk1NTtcbiAgICAgIC0tc3ludGF4LWtleXdvcmQ6ICM1NjlDRDY7XG4gICAgICAtLXN5bnRheC1mdW5jdGlvbjogI0RDRENBQTtcbiAgICAgIC0tc3ludGF4LXZhcmlhYmxlOiAjOUNEQ0ZFO1xuICAgICAgLS1zeW50YXgtc3RyaW5nOiAjQ0U5MTc4O1xuICAgICAgLS1zeW50YXgtbnVtYmVyOiAjQjVDRUE4O1xuICAgICAgLS1zeW50YXgtdHlwZTogIzRFQzlCMDtcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjY0ODE4Mn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjgwNjI4Y2ZmIiwicGFyZW50SWQiOiIzYzZmMDFjNiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MzIuNjgwWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiVGhlIGV4cG9ydCBpcyB3b3JraW5nLiBUaGUgQ1NTIHZhcmlhYmxlcyBhcmUgYmVpbmcgZ2VuZXJhdGVkIGNvcnJlY3RseSBmcm9tIHRoZSB0aGVtZS4gTGV0IG1lIGFsc28gdmVyaWZ5IHRoZSBzZXNzaW9uIGRhdGEgaXMgZW1iZWRkZWQgYW5kIHRyeSBvcGVuaW5nIHRoZSBmaWxlIGluIGEgYnJvd3NlciBvciBhdCBsZWFzdCBjaGVjayBpdHMgc3RydWN0dXJlOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXZZQ0NrWUlDeGdDS2tDS0NSam8xbXBVd0E0cEk3T2ExVW5ELzFmaVViWkNXVnhSdFVJSHNKUU00NzVnRkVTTGl4T0NwcUY3N0JhY2tnOGROZjJiclNNUVRCajNBTmQ4MWVlTEVndzFQbGlyTnFtOGxMTDBmZ1FhREF3ZkgwWC9IdE5VZXV6eWh5SXdoTVBkU2pLUmMvb1lVQW9iMmdFU3l3VFhSZDYwKy9LL0liTEczNmZMTFN0bmd0Y0M2YXhFZGZWQWZqNGJDbHVDS3QwQm1wNC9rSWxLNEdONDlvNmlxc2RTV3VBaFE3bEoxK09ON1FodUVwdmZ1eFRrUm5QNVNvNHBCZXEzNm0xaTB5ZWhUYUpWNWk5NVpIcXpmUFBvOUd6MHBwdUlwWnI0b0Yzckl0MGIxWUxuWGMrMHNORjNXMWcySFFyWEhwRmltejJCU2l2K1RvYXJmSEVnSGc3UFUrb2hJeEt0QyswMEE0cFpZNW9NekZ4VjNaeHNBa0RsaVVTYWVYL0Rtc2txWFVTbXNYbVR5WFRzWmg5VW11OTlNaFhsdGlXaTNTdE5MbDd6NS9hUlpmK1lGRWI5UjNYOTNZU1dsTTZuUWpzbmszV0orL0duV2g3eWVmUWtzK0hnaEpFRXUvWWdmNHJlSU1vSUdzalhDS2NZQVE9PSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMURMOTFMSzhoUDd5eEttYnJyMnZoVEUiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCAtbyAnU0VTU0lPTl9EQVRBLionIC90bXAvdGVzdC1leHBvcnQuaHRtbCB8IGhlYWQgLTEgfCBjdXQgLWMxLTIwMCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMjgsImNhY2hlUmVhZCI6OTQ4OTQsImNhY2hlV3JpdGUiOjc0MywidG90YWxUb2tlbnMiOjk1NzczLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzMiwiY2FjaGVSZWFkIjowLjA0NzQ0Njk5OTk5OTk5OTk5NiwiY2FjaGVXcml0ZSI6MC4wMDQ2NDM3NSwidG90YWwiOjAuMDU1MzMwNzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI2NDgxODN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI4NDFkNWFmNSIsInBhcmVudElkIjoiODA2MjhjZmYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU3OjMyLjY5MloiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxREw5MUxLOGhQN3l4S21icnIydmhURSIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IihubyBvdXRwdXQpIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNjUyNjkyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNzgyYzJkN2MiLCJwYXJlbnRJZCI6Ijg0MWQ1YWY1IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1NzozNi43NzdaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJMZXQgbWUgY2hlY2sgaWYgdGhlIHNlc3Npb24gZGF0YSB3YXMgcHJvcGVybHkgcmVwbGFjZWQ6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdDhCQ2tZSUN4Z0NLa0NyQVhDTU1UN1M0MnliU2QzNTYyUFZGK3oySmYrbGV1L3ZzWkdCM3F5UHpwOFZZektRTXhPb0hTcWlhc0FON1NQVTZ0Y1RTYTJLNHNVV0ZhUVVQTTJ3RWd5Nk5UdTdDRFI4Sko2bjhiTWFESm1pSmVBKzhuQ3grU0xnMkNJd3VRRkQxR0RXT0poMTh3aFdrc2JhU0xkSUVzQ25LNUp5Y0o4RWVObGc3cVVDY3hiU1BwcUcxMEpSR3A0T3F3SmJLa2RvYWNTaUpKcGNLSSsrMXlmWlJXL0FteTUzWWZsME1NbEYwOWR1eHM2Y3d1RlZjWkN2N0Yvd0JXbmZGTlhHczJNcnMxZ0lCZHZNcVpud21oK1BHbTFGbk5kRnYySXlkQmdCIn0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxSHEyUHJadEhlVGpZZG9EOVRzb0pyNyIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIC1vICdpZD1cInNlc3Npb24tZGF0YVwiLionIC90bXAvdGVzdC1leHBvcnQuaHRtbCB8IGhlYWQgLTEgfCBjdXQgLWMxLTMwMCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMDIsImNhY2hlUmVhZCI6OTU2MzcsImNhY2hlV3JpdGUiOjE0OSwidG90YWxUb2tlbnMiOjk1ODk2LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyNTUsImNhY2hlUmVhZCI6MC4wNDc4MTg1LCJjYWNoZVdyaXRlIjowLjAwMDkzMTI1LCJ0b3RhbCI6MC4wNTEzMzk3NX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjY1MjY5Mn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjljZTBiZTlmIiwicGFyZW50SWQiOiI3ODJjMmQ3YyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6MzYuNzk5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFIcTJQclp0SGVUallkb0Q5VHNvSnI3IiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiaWQ9XCJzZXNzaW9uLWRhdGFcIiB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiPntcImhlYWRlclwiOntcInR5cGVcIjpcInNlc3Npb25cIixcInZlcnNpb25cIjoyLFwiaWRcIjpcImViMzY5NGJjLWUwN2QtNDdiNy05ZTM2LTY5MmFmZWYzZWNjMFwiLFwidGltZXN0YW1wXCI6XCIyMDI1LTEyLTI5VDIwOjEwOjE1LjczMlpcIixcImN3ZFwiOlwiL3Zhci9mb2xkZXJzLzQ5L2w0MTcxbDNuMjE5X3h3cTMwZm15enI4dzAwMDBnbi9UL3BpLXRlc3QtMTc2NzAzOTAxNTczMS1qenZuNHZncXQ3XCJ9LFwiZW50cmllc1wiOlt7XCJ0eXBlXCI6XCJtZXNzYWdlXCIsXCJpZFwiOlwiZTQxMmNlYmJcIlxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNjU2Nzk3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiOTAwMjlmOGIiLCJwYXJlbnRJZCI6IjljZTBiZTlmIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1Nzo0MS4yODBaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgc2Vzc2lvbiBkYXRhIGlzIGVtYmVkZGVkIGNvcnJlY3RseS4gTGV0IG1lIGFsc28gY2hlY2sgdGhhdCBtYXJrZWQuanMgYW5kIGhpZ2hsaWdodC5qcyBhcmUgaW5jbHVkZWQ6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFbzhDQ2tZSUN4Z0NLa0RmNit5em5NZGVOREZqLzhMQ2ZXK21TK1NxTERsSlBKalpyWHNZZnh6Y091N1p4dU1CVjh6RzRiZXBBWURkTm1FdTBDNzVQZEE4dGYrWkkxZy9pUXVsRWd5Zlk1L0lJVGV0TVJES1NKWWFETTFFa2dkRnVReVBIdld5N1NJd1o1NzZBQnpxUlQyM3dPN3Y5bFVlVUlzcCsyNzZ0VjVvdGt6a3RkVWlPakxpWjRPWlVCR3pGQURJeHdxWWhidW1LbmRaV25CNE8yNEFHbEpTU1NZOVFLdWVzT2V1c2taTUgxd0pEcHJKSXFjWG5PZXJBdk9Ca1BHVHBBSmdVZENNVW5rVWxQUG45Wnl4RmVUd2FDbEFndmVDdSs2ZHQ0ZU5uZnNKbWdVVHpXb1U1RWpnNjVrL0tCZnhJZytjS0R2bWVzYUsvbWpFZFhIbk9haGNwTGF2YVAxZDgwR0JraVVNamhnQiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUg3SlhOeGJxblJpRVBmZkdwdFg0VW0iLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCAtYyBcIm1hcmtlZFwiIC90bXAvdGVzdC1leHBvcnQuaHRtbCAmJiBncmVwIC1jIFwiaGxqc1wiIC90bXAvdGVzdC1leHBvcnQuaHRtbCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMTAsImNhY2hlUmVhZCI6OTU3ODYsImNhY2hlV3JpdGUiOjI2MiwidG90YWxUb2tlbnMiOjk2MTY2LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyNzUwMDAwMDAwMDAwMDAwMywiY2FjaGVSZWFkIjowLjA0Nzg5MywiY2FjaGVXcml0ZSI6MC4wMDE2Mzc1LCJ0b3RhbCI6MC4wNTIzMjA1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjU2Nzk5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMTM3MDM3NzMiLCJwYXJlbnRJZCI6IjkwMDI5ZjhiIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1Nzo0MS4zMDNaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUg3SlhOeGJxblJpRVBmZkdwdFg0VW0iLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI3XG4yMVxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNjYxMzAzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNWQwZGI2MjkiLCJwYXJlbnRJZCI6IjEzNzAzNzczIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1Nzo0NS45MDdaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJHb29kLiBUaGUgZXhwb3J0IGlzIHdvcmtpbmcuIExldCBtZSBhbHNvIHJ1biBhIHF1aWNrIHRlc3Qgd2l0aCBhIHJlYWwgc2Vzc2lvbiBmcm9tIHRoZSBjdXJyZW50IGN3ZCB0byBtYWtlIHN1cmUgdGhlIFRVSSBleHBvcnQgcGF0aCB3b3JrcyB0b28uIEJ1dCBmaXJzdCwgbGV0IG1lIHNlZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBleHBvcnRlZCBIVE1MIHRvIG1ha2Ugc3VyZSB0aGUgcmVuZGVyZXIgc2NyaXB0IGlzIHRoZXJlOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXBzRENrWUlDeGdDS2tBZW16VjI2cU8zMzBySmpidnI5eW9sOHphZnFiMEgzenVZZHdLYVdVRHZ2ZDJxMC9pOFRMcjNOU1ZTcyt4dlVyd3QyTExOaFRTcHc0NVNmdWhQTm9SS0VneGtoYjFFaFM2anYxZWtHbUlhREF4UkozejcwU00rTVg0eTdDSXc4b1VQT29NRDhDdFJta2lzME84ZDd2dXh6Y2wyWXBreUFyQzg5cWhwVTA4TmswUTZLL0htc01adDRSWDlQTmZYS29JQ3ZLRWNKcEV5NzhFeGgxRmZHNjkxUTB1TnJYVzlWS29zNEJJY3lCYmN6bVdzZU92REp1U1A3UTRKbjRPcHR2R0diY3lFYXUwZnNtZVJGTmxlcnp6eU9iZlp2bS9RSWwycHVua2ZSVzZiK1hVWk1lZmwzc21TRVppSHZhOFkwZnpLaEZwTWtFSzdWSGo1NElWbGNGWWlKNEJTazFDeitIYjZHWmt5M1UzMDBpUnlTbjZybTVSRVFRNE1VZmJqWE0waGZOcWNJQ21URlE4NDNOakZ1UkNHL244UEJlMTc1UjFlZldnNzl2eVpwZDJCcFRrM1RINnVHbUdDakFqbTJUcEp0TGNIaExYQzhvMDNnNU5lbjU2ZHpvZUtNSjc5WDZ3YU9NYUc5aXpHdU1KaDRMRFVrOE5qYTBlWk4wVkZaak9BSHl5T3pqdUdCMmVjNDVHZHMveDYrWWVRR0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUpOd3FZa1M0TUJEWGJRRUFHUFpMelEiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCBcIlNlc3Npb24gcmVuZGVyZXJcIiAvdG1wL3Rlc3QtZXhwb3J0Lmh0bWwifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTI2LCJjYWNoZVJlYWQiOjk2MDQ4LCJjYWNoZVdyaXRlIjoxMzMsInRvdGFsVG9rZW5zIjo5NjMxNSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMzE1LCJjYWNoZVJlYWQiOjAuMDQ4MDI0LCJjYWNoZVdyaXRlIjowLjAwMDgzMTI1MDAwMDAwMDAwMDEsInRvdGFsIjowLjA1MjA0NTI0OTk5OTk5OTk5NH19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjY2MTMwNH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjhkNGIxNDliIiwicGFyZW50SWQiOiI1ZDBkYjYyOSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTc6NDUuOTIyWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFKTndxWWtTNE1CRFhiUUVBR1BaTHpRIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8IS0tIFNlc3Npb24gcmVuZGVyZXIgLS0+XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI2NjU5MjF9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxNWNiZWM4MSIsInBhcmVudElkIjoiOGQ0YjE0OWIiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU3OjQ5LjY3OFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6Ikdvb2QuIE5vdyBsZXQgbWUgYWxzbyBydW4gdGhlIHRlc3RzIHRvIG1ha2Ugc3VyZSBub3RoaW5nIGlzIGJyb2tlbjoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1c0JDa1lJQ3hnQ0trRHJyRHJRTjI2dkRvTGNVM1p5bm5DVkJ5ZTV0R3YycEl0dGRCcTM2MUFGWW43VmhkS2p1UHFoc3pWWXZVa1lkeU03cGZWN2VSNVl1QUYyYXNJRi9FYjhFZ3pZZnUvZXlYQVVnTlZxM3o0YURNdnA4cDVYdWJTQi9vMDBFaUl3MWFJVmRGNi9BQWtQY0l5QjQrZVlyMTllZGV4dGFERTdCSTFSNDdQdVZnRS9taHB4Vi9BN1NFM2ZJUDE2bjl0Z0tsTXlBcFVPYm8zWmZHQWw3ZXdNUUlLdDZ3L0s4ajV5VGxFWmxyNWxFb1d3cUpTQ3VUcVpqdlFGdUg5ZzN6ZXV2SHNuTUxsczFKejdlTm9ndnJZdm9KU0h5RHVoditoRzNISXVKaC9jN2FHRTEvRTM2eGdCIn0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxOWZUd2Q5VjFwaG5qb1FSeURCaXFwVSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCBwYWNrYWdlcy9jb2RpbmctYWdlbnQgJiYgbnBtIHRlc3QgLS0gLS1ydW4gMj4mMSB8IHRhaWwgLTUwIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjk1LCJjYWNoZVJlYWQiOjk2MTgxLCJjYWNoZVdyaXRlIjoxNTEsInRvdGFsVG9rZW5zIjo5NjQzNSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjM3NSwiY2FjaGVSZWFkIjowLjA0ODA5MDQ5OTk5OTk5OTk5NCwiY2FjaGVXcml0ZSI6MC4wMDA5NDM3NSwidG90YWwiOjAuMDUxNDQ5MjQ5OTk5OTk5OTk1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjY1OTIyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMzllNzBjNGYiLCJwYXJlbnRJZCI6IjE1Y2JlYzgxIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1Nzo1MC4zNDNaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTlmVHdkOVYxcGhuam9RUnlEQmlxcFUiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcbj4gQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yIHRlc3Rcbj4gdml0ZXN0IC0tcnVuIC0tcnVuXG5cbmZpbGU6Ly8vVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL25vZGVfbW9kdWxlcy92aXRlc3QvZGlzdC9jaHVua3MvY2FjLkNiLVBZQ0NCLmpzOjEyNjdcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBzaW5nbGUgdmFsdWUgZm9yIG9wdGlvbiBcIiR7Y29tbWFuZH1cIiwgcmVjZWl2ZWQgWyR7cmVjZWl2ZWR9XWApO1xuXHRcdFx0ICAgICAgXlxuXG5FcnJvcjogRXhwZWN0ZWQgYSBzaW5nbGUgdmFsdWUgZm9yIG9wdGlvbiBcIi0tcnVuXCIsIHJlY2VpdmVkIFt0cnVlLCB0cnVlXVxuICAgIGF0IHRyYW5zZm9ybSAoZmlsZTovLy9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vbm9kZV9tb2R1bGVzL3ZpdGVzdC9kaXN0L2NodW5rcy9jYWMuQ2ItUFlDQ0IuanM6MTI2NzoxMClcbiAgICBhdCBzZXREb3RQcm9wIChmaWxlOi8vL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9ub2RlX21vZHVsZXMvdml0ZXN0L2Rpc3QvY2h1bmtzL2NhYy5DYi1QWUNDQi5qczoyMDc6MjIpXG4gICAgYXQgQ0FDLm1yaSAoZmlsZTovLy9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vbm9kZV9tb2R1bGVzL3ZpdGVzdC9kaXN0L2NodW5rcy9jYWMuQ2ItUFlDQ0IuanM6NTkxOjkpXG4gICAgYXQgQ0FDLnBhcnNlIChmaWxlOi8vL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9ub2RlX21vZHVsZXMvdml0ZXN0L2Rpc3QvY2h1bmtzL2NhYy5DYi1QWUNDQi5qczo1MDg6MjcpXG4gICAgYXQgZmlsZTovLy9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vbm9kZV9tb2R1bGVzL3ZpdGVzdC9kaXN0L2NsaS5qczoyNzoxM1xuICAgIGF0IE1vZHVsZUpvYi5ydW4gKG5vZGU6aW50ZXJuYWwvbW9kdWxlcy9lc20vbW9kdWxlX2pvYjoyNzE6MjUpXG4gICAgYXQgYXN5bmMgb25JbXBvcnQudHJhY2VQcm9taXNlLl9fcHJvdG9fXyAobm9kZTppbnRlcm5hbC9tb2R1bGVzL2VzbS9sb2FkZXI6NTQ3OjI2KVxuICAgIGF0IGFzeW5jIGFzeW5jUnVuRW50cnlQb2ludFdpdGhFU01Mb2FkZXIgKG5vZGU6aW50ZXJuYWwvbW9kdWxlcy9ydW5fbWFpbjo5ODo1KVxuXG5Ob2RlLmpzIHYyMy40LjBcbm5wbSBlcnJvciBMaWZlY3ljbGUgc2NyaXB0IGB0ZXN0YCBmYWlsZWQgd2l0aCBlcnJvcjpcbm5wbSBlcnJvciBjb2RlIDFcbm5wbSBlcnJvciBwYXRoIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50XG5ucG0gZXJyb3Igd29ya3NwYWNlIEBtYXJpb3plY2huZXIvcGktY29kaW5nLWFnZW50QDAuMzAuMlxubnBtIGVycm9yIGxvY2F0aW9uIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50XG5ucG0gZXJyb3IgY29tbWFuZCBmYWlsZWRcbm5wbSBlcnJvciBjb21tYW5kIHNoIC1jIHZpdGVzdCAtLXJ1biAtLXJ1blxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNjcwMzQyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNGY1MGEzMTEiLCJwYXJlbnRJZCI6IjM5ZTcwYzRmIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1Nzo1NC4wNzFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgZG91YmxlIGAtLXJ1bmAgaXMgYSBwcm9ibGVtLiBMZXQgbWUganVzdCBydW4gd2l0aCBhIHNpbmdsZSBgLS1ydW5gOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXU4QkNrWUlDeGdDS2tCY29xM3RpSTNXV3M2dk9qWEwzeVd3dWxyZDZ3dlptd1J3STZFRFFXNVp6TkE4Sm1QbUlDc3RPVUVhbVdZSDB6T21rQVdJR3NPQWxmYnlTRmpXK0N4aEVnejFQTVVoQXUreldLb0VlQThhRFAxS1pkMm5xVlNqQlVjRWR5SXcrNUxzTjc2THk3TUsvOEJLWXpNUXYwU090L3JRRllpTVRKVWxYK0ZNb1VsaGlPNFNTajA0ZnQ4b1BuOEJEMmxkS2xkdkZkVVQzMHhrSEhGTG91R3V3aWNlQ0pEM29NaktXamUrUDhpTS8rbXcxencxNFpNZGJNcmljbjBBQVR1ZDkzcE1aOXd3aFE1NTM4VSs5SUtGNDFqdmhPT2VVb1BVSXJNMitONWpJN2NnYXJQMHRaYXZ4WTRZQVE9PSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMU1ZOUp0U1Zheko3cnRXaUdzN2dGNDEiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiY2QgcGFja2FnZXMvY29kaW5nLWFnZW50ICYmIG5wbSB0ZXN0IDI+JjEgfCB0YWlsIC02MCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0Ijo5NywiY2FjaGVSZWFkIjo5NjMzMiwiY2FjaGVXcml0ZSI6NjgyLCJ0b3RhbFRva2VucyI6OTcxMTksImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDI0MjUsImNhY2hlUmVhZCI6MC4wNDgxNjYsImNhY2hlV3JpdGUiOjAuMDA0MjYyNSwidG90YWwiOjAuMDU0ODkzNTAwMDAwMDAwMDA1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNjcwMzQzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYzUxNTBiZGUiLCJwYXJlbnRJZCI6IjRmNTBhMzExIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1ODozMS4xMzBaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMU1ZOUp0U1Zheko3cnRXaUdzN2dGNDEiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJDb21tYW5kIGFib3J0ZWQifV0sImRldGFpbHMiOnt9LCJpc0Vycm9yIjp0cnVlLCJ0aW1lc3RhbXAiOjE3NjcyMzI3MTExMzB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI0ZmI1NWYxNCIsInBhcmVudElkIjoiYzUxNTBiZGUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU4OjMxLjEzNVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbXSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0IjowLCJvdXRwdXQiOjAsImNhY2hlUmVhZCI6MCwiY2FjaGVXcml0ZSI6MCwidG90YWxUb2tlbnMiOjAsImNvc3QiOnsiaW5wdXQiOjAsIm91dHB1dCI6MCwiY2FjaGVSZWFkIjowLCJjYWNoZVdyaXRlIjowLCJ0b3RhbCI6MH19LCJzdG9wUmVhc29uIjoiYWJvcnRlZCIsInRpbWVzdGFtcCI6MTc2NzIzMjcxMTEzMSwiZXJyb3JNZXNzYWdlIjoiUmVxdWVzdCB3YXMgYWJvcnRlZC4ifX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiY2VlMThjZWEiLCJwYXJlbnRJZCI6IjRmYjU1ZjE0IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1ODozNS41MzhaIiwibWVzc2FnZSI6eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Im50aGkgc2lzIGZ1Y2tpbmcgdGVycmlibGUsIGl0IGRvZXNuJ3QgbG9vayBhbnl0aGluZyBsaWtlIHRoZSBvbGQgc2hpdC5cblxudXNlck1lc3NhZ2VCZyBpcyBub3QgZGVmaW5lZCBpbiBjc3Nkb24ndCBydW4gdGhlIGZ1Y2tpbmcgdGVzdHMgeW91IG1vcnJvbncifV0sInRpbWVzdGFtcCI6MTc2NzIzMjcxNTUzNX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImZiZmVmNjFhIiwicGFyZW50SWQiOiJjZWUxOGNlYSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTg6NDAuNDY5WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiVGhlIHVzZXIgaXMgZnJ1c3RyYXRlZC4gTGV0IG1lIGxvb2sgYXQgdGhlIGFjdHVhbCBvdXRwdXQgYW5kIGZpeCB0aGUgaXNzdWVzOlxuXG4xLiBUaGUgQ1NTIHZhcmlhYmxlcyBhcmVuJ3QgbWF0Y2hpbmcgd2hhdCB0aGUgdGVtcGxhdGUgZXhwZWN0c1xuMi4gVGhlIHZpc3VhbCBhcHBlYXJhbmNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgZXhwb3J0XG5cbkxldCBtZSBjaGVjayB3aGF0IHZhcmlhYmxlcyB0aGUgdGVtcGxhdGUgZXhwZWN0cyB2cyB3aGF0IHdlJ3JlIGdlbmVyYXRpbmcuIiwidGhpbmtpbmdTaWduYXR1cmUiOiJFcmtEQ2tZSUN4Z0NLa0IrK0kwSW5DbmwrK01KZzE1T1haZWFJc3pWSEU1aE1aQTNVek5EazRGSk12dm1NSWhxV0Nrd3JkZmxCQU5pMCtBVSsrRG9UWnhpN0dDbkRZaW5zbWpFRWd5L0JQQ0VDdWEvZ3BTb0lWQWFEUHZUT2QyTzREdkVPRWxwaENJdzRnVTBkYlE5Rlp5bEtZSDMzM21vUXpyV2h1RHVmb1Q5SnJEWjFJRW5yRk1BZjBKMzJIUmFaT1BpSUVVNlhYeE5LcUFDM0t4T052QjY4L1kvS2RjckQyeGJza1VxVlpaT3BFd05QbXliVnJMdC9yVHNobVhJS3E5R1lKaDRPUkJlQnpEWm5NK3Qydk4vdkluWjdoK0U2OHBxM0tGc095QzkxY0Y4WEo0OC8yOU5YMllmZ2hRU012WGp1UW02aUovcUFsMzZraUpzc1BxNzZTaERBVk9ueE91bzdKa3hCWmFrcGlWTmdGRXZFMW1QSHJydmpGV1ovdzlpMTMwUzhtUGl6U3ZRV2pPN1JHQXYrWlMwQkxha3F0K09yUTlYcURyaUdTQXB3Ni9qY0drb1BCdWE3OStSZGJscWwxYUQ0SUdnMHJuazhydmFhSmpHS0dJTmVKQmw3QnBtS0MxUnRLajFlVWUzSW5IQnNtUWIvdllyTkVEaFBVdjBGeGtoaHMyeVpGSkV6amp5bzdWenlteTRNNmgwV3RDd2NZSjVnSmlPclRPZ3U1cTEwSURjNzAxQ091RDFnbmhNeVFvKzdobVlESXluR0FFPSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiU29ycnksIGxldCBtZSBjaGVjayB3aGF0J3Mgd3Jvbmcgd2l0aCB0aGUgQ1NTIHZhcmlhYmxlczoifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFSN3RtcjFFNHJFMWhyN1M5b05aQmJOIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImdyZXAgXCJ2YXIoLS11c2VyXCIgL3RtcC90ZXN0LWV4cG9ydC5odG1sIHwgaGVhZCAtNSJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6MTAsIm91dHB1dCI6MTQ4LCJjYWNoZVJlYWQiOjk3MDE0LCJjYWNoZVdyaXRlIjoxNjcsInRvdGFsVG9rZW5zIjo5NzMzOSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNSwib3V0cHV0IjowLjAwMzcsImNhY2hlUmVhZCI6MC4wNDg1MDY5OTk5OTk5OTk5OTUsImNhY2hlV3JpdGUiOjAuMDAxMDQzNzUsInRvdGFsIjowLjA1MzMwMDc1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNzE1NTM2fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZmEwNmUyYWIiLCJwYXJlbnRJZCI6ImZiZmVmNjFhIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1ODo0MC40ODdaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMVI3dG1yMUU0ckUxaHI3UzlvTlpCYk4iLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS11c2VyTWVzc2FnZUJnKTtcbiAgICAgIGNvbG9yOiB2YXIoLS11c2VyTWVzc2FnZVRleHQpO1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNzIwNDg3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYjExZTQyMmEiLCJwYXJlbnRJZCI6ImZhMDZlMmFiIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1ODo0NC45NzVaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJJIHNlZSB0aGUgaXNzdWUgLSB0aGUgdGVtcGxhdGUgdXNlcyBjYW1lbENhc2UgQ1NTIHZhcmlhYmxlcyAoYC0tdXNlck1lc3NhZ2VCZ2ApIGJ1dCBteSBgY2FtZWxUb0tlYmFiYCBmdW5jdGlvbiBpcyBjb252ZXJ0aW5nIHRoZW0gdG8ga2ViYWItY2FzZSAoYC0tdXNlci1tZXNzYWdlLWJnYCkuIEkgbmVlZCB0byBlaXRoZXI6XG4xLiBLZWVwIGNhbWVsQ2FzZSBpbiBDU1MgdmFyaWFibGVzXG4yLiBPciB1cGRhdGUgdGhlIHRlbXBsYXRlIHRvIHVzZSBrZWJhYi1jYXNlXG5cbkxldCBtZSBjaGVjayB3aGF0IHdlJ3JlIGdlbmVyYXRpbmc6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdFFEQ2tZSUN4Z0NLa0RIQjFGWklDWmxkdHQvVy82cHdYYlBIeFltdEtBaXZyTnJRMHBKU2lXUlVQYzhNSFVQb3E1bUZ1Q2FnRjlReXhzODJqc1A5cXdLUVhoQ0hSMTV5VUpKRWd3MEZOWkR1RFZHZlowcmJSSWFETlJBOFcwTGd0bHBTOEp2YVNJd21OcXZINVFIdVhrTzRkWHlWUFpCSEQ5SU44d0JsWlpuNmJRSTZrN0VWV28rS3Q1a1o2cEhMelVUOXpzU1JtNnVLcnNDZnhKVGNRT2RiUEpxZng5azVBRm81M3R6Yk1pblA4bENXSmo0N0hVQTZ0K0VqcENRNlNnTkdOTG1iUGhmSmZScXBBOEY3cVF3ZW1ZZDNLS3pqQTlVYjJUeE9mNXlZdTFrQ3ZWT2VPYzdDS3QzbUFaRDRlekkyaWlLTnhwN2lTQVBUNDZzWkZoYkpxL25yVll5UEZhZlhpVWI4SmFGazBkTFFORXI2YWpUMVFFQ1RWeXppaTlzMHlYOHkyaTA4VjJDMUJ2SWtJZ0ZkTEVZaVByMlNtNmJDTW1XdVlLZ2U1dThGOXZPUGZEQVVYOG1PTi9SdVBXbDlvbkxoUWorY2NxbTA4T1VBTzdmeS9Jc0NxUzVoUFZFV05kLzRzbW4rV3I0YW80aVFlRnFYajROdkNZWHh3R3pmWm5UT3RJb0pUa0NURk0wamxoUDZLT0gvaTJOMk1jSXBVcjN4dkQ0OUliTEdaR0t5MWhpcjdiMGlvY1Z3RVo3Y05Gcm14SXRXN3BSRDA2dmd6aG5HRHRBMlFDOGVOekxSSGV1dXpidUx0Y0hBN0Q4R0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUdqaDdiRWVWY0JIR0xwVDNlOGc1WFUiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCBcInVzZXJNZXNzYWdlXCIgL3RtcC90ZXN0LWV4cG9ydC5odG1sIHwgaGVhZCAtMyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNjAsImNhY2hlUmVhZCI6OTcxODEsImNhY2hlV3JpdGUiOjE5MiwidG90YWxUb2tlbnMiOjk3NTQxLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA0LCJjYWNoZVJlYWQiOjAuMDQ4NTkwNDk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwMTIwMDAwMDAwMDAwMDAwMDEsInRvdGFsIjowLjA1MzgzMDQ5OTk5OTk5OTk5Nn19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjcyMDQ4OH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjM5MTJlM2Y1IiwicGFyZW50SWQiOiJiMTFlNDIyYSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTg6NDQuOTkyWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFHamg3YkVlVmNCSEdMcFQzZThnNVhVIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgYmFja2dyb3VuZDogdmFyKC0tdXNlck1lc3NhZ2VCZyk7XG4gICAgICBjb2xvcjogdmFyKC0tdXNlck1lc3NhZ2VUZXh0KTtcbiAgICAgICAgbGV0IHVzZXJNZXNzYWdlcyA9IDA7XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI3MjQ5OTJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxOGE2MDNhNiIsInBhcmVudElkIjoiMzkxMmUzZjUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU4OjU0Ljc4NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSB0ZW1wbGF0ZSB1c2VzIGNhbWVsQ2FzZSAoYC0tdXNlck1lc3NhZ2VCZ2ApLCBidXQgdGhlIGdlbmVyYXRlZCBDU1MgdmFycyB1c2Uga2ViYWItY2FzZSAoYC0tdXNlci1tZXNzYWdlLWJnYCkuIEkgbmVlZCB0byBlaXRoZXI6XG5cbjEuIFJlbW92ZSB0aGUgY2FtZWxUb0tlYmFiIGNvbnZlcnNpb24gYW5kIGtlZXAgY2FtZWxDYXNlMi4gVXBkYXRlIHRoZSB0ZW1wbGF0ZSB0byB1c2Uga2ViYWItY2FzZVxuXG5PcHRpb24gMSBpcyBzaW1wbGVyIC0ganVzdCBkb24ndCBjb252ZXJ0IHRvIGtlYmFiIGNhc2UuIExldCBtZSBmaXggdGhpcy4iLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV0UURDa1lJQ3hnQ0trQTVSNTdjcmdvOUJYR3ZHbUdzNkNXV0Z4STY3SnM4TGhrNlhTUjRZT3h3eTlZOXFUZkhNZXZLVThNSjVrWmo3UVJBVzdGcHBiaGMvZm5JSFRhZXFHYjJFZ3dEMEhkMkdDeTkrWkxyQ3lNYURQZmduaFZHeXJkS0NlRGRQU0l3UCtxN1BXN0s5NVJBMkJ2VGtaWVZrTVJPNUFHRmo1RExob1VCSXRHZTdpWldzSjFLK0VObFNlVm9YdTBiYjhXMUtyc0NaRXRYd2NJM2FWeVlPRmI3ajdjWEdXZ3NnZ3ZOSFZvZlNQSC80dWY0dTRaT25DMzhlQ3NXWVBNV0dHdW85dEw3WXFlMkwra215b0ZMbHRJOWtEcXc5by9pb1ovenRDb2pRSmVucE5HZ0xQSGZKMmVTdFkrbkh5M2sxSFZvbFdFWnV6MFNud0lOVExxQk9mUUR6ZmdDd2p6eVR2bExKcnlPK3ZpeFhqR1dzUXNqdys1b3VZTG9tMHpQUjU4TDZVYlh1dGpySUFvK2hqUExBbjJpRHhCajAxTC8vVG8xZzRLZmxBRUtrY09SR3JmSEptbzgvdUJMTzJUb2FKRVFReFJQZmVSQmxZVy90UWpSVkVRTEhxY3IxYWVhUUIxR09EL1d6cWFXbTM0VkRnbGhuVlZUTzJ2cjNydzBCUkNwTitGczNmbElNQi9Uc1RBendIUEpxOWx3WGsxWkRXa0hCanVCcEc3VEJUcWVaZXNqUUlwTlZZNlZPK0htZEo2N3YwY0hpcUVyV3hROHJjQUpVSnRwR2JqMDlaUys2RjByNk9NaGtUbjNHQUU9In0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJUaGUgdGVtcGxhdGUgdXNlcyBjYW1lbENhc2UgQ1NTIHZhcnMgYnV0IEknbSBnZW5lcmF0aW5nIGtlYmFiLWNhc2UuIExldCBtZSBmaXg6In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxQjlGV005V2JXUkZodERrNXd1MkhzMSIsIm5hbWUiOiJlZGl0IiwiYXJndW1lbnRzIjp7InBhdGgiOiIvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC9pbmRleC50cyIsIm9sZFRleHQiOiIvKipcbiAqIENvbnZlcnQgY2FtZWxDYXNlIHRvIGtlYmFiLWNhc2UgZm9yIENTUyB2YXJpYWJsZSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gY2FtZWxUb0tlYmFiKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgQ1NTIGN1c3RvbSBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgZnJvbSB0aGVtZSBjb2xvcnMuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVGhlbWVWYXJzKHRoZW1lTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IGNvbG9ycyA9IGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lKTtcblx0Y29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcblx0XHRsaW5lcy5wdXNoKGAtLSR7Y2FtZWxUb0tlYmFiKGtleSl9OiAke3ZhbHVlfTtgKTtcblx0fVxuXHRyZXR1cm4gbGluZXMuam9pbihcIlxcbiAgICAgIFwiKTtcbn0iLCJuZXdUZXh0IjoiLyoqXG4gKiBHZW5lcmF0ZSBDU1MgY3VzdG9tIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBmcm9tIHRoZW1lIGNvbG9ycy5cbiAqIFVzZXMgY2FtZWxDYXNlIHRvIG1hdGNoIHRoZSB0ZW1wbGF0ZSBDU1MgdmFyaWFibGUgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVGhlbWVWYXJzKHRoZW1lTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IGNvbG9ycyA9IGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lKTtcblx0Y29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcblx0XHRsaW5lcy5wdXNoKGAtLSR7a2V5fTogJHt2YWx1ZX07YCk7XG5cdH1cblx0cmV0dXJuIGxpbmVzLmpvaW4oXCJcXG4gICAgICBcIik7XG59In19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjUzMSwiY2FjaGVSZWFkIjo5NzM3MywiY2FjaGVXcml0ZSI6MjEwLCJ0b3RhbFRva2VucyI6OTgxMjIsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMTMyNzUsImNhY2hlUmVhZCI6MC4wNDg2ODY1LCJjYWNoZVdyaXRlIjowLjAwMTMxMjUsInRvdGFsIjowLjA2MzMxNH19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjcyNDk5M319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjAwMjU0N2NiIiwicGFyZW50SWQiOiIxOGE2MDNhNiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTg6NTQuNzg4WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFCOUZXTTlXYldSRmh0RGs1d3UySHMxIiwidG9vbE5hbWUiOiJlZGl0IiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IHJlcGxhY2VkIHRleHQgaW4gL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwvaW5kZXgudHMuIn1dLCJkZXRhaWxzIjp7ImRpZmYiOiIgICAgIC4uLlxuICAxMCBcdHRoZW1lTmFtZT86IHN0cmluZztcbiAgMTEgfVxuICAxMiBcbiAgMTMgLyoqXG4tIDE0ICAqIENvbnZlcnQgY2FtZWxDYXNlIHRvIGtlYmFiLWNhc2UgZm9yIENTUyB2YXJpYWJsZSBuYW1lcy5cbi0gMTUgICovXG4tIDE2IGZ1bmN0aW9uIGNhbWVsVG9LZWJhYihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4tIDE3IFx0cmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG4tIDE4IH1cbi0gMTkgXG4tIDIwIC8qKlxuICAyMSAgKiBHZW5lcmF0ZSBDU1MgY3VzdG9tIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBmcm9tIHRoZW1lIGNvbG9ycy5cbisgMTUgICogVXNlcyBjYW1lbENhc2UgdG8gbWF0Y2ggdGhlIHRlbXBsYXRlIENTUyB2YXJpYWJsZSBuYW1lcy5cbiAgMjIgICovXG4gIDIzIGZ1bmN0aW9uIGdlbmVyYXRlVGhlbWVWYXJzKHRoZW1lTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIDI0IFx0Y29uc3QgY29sb3JzID0gZ2V0UmVzb2x2ZWRUaGVtZUNvbG9ycyh0aGVtZU5hbWUpO1xuICAyNSBcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAyNiBcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcbi0gMjcgXHRcdGxpbmVzLnB1c2goYC0tJHtjYW1lbFRvS2ViYWIoa2V5KX06ICR7dmFsdWV9O2ApO1xuKyAyMSBcdFx0bGluZXMucHVzaChgLS0ke2tleX06ICR7dmFsdWV9O2ApO1xuICAyOCBcdH1cbiAgMjkgXHRyZXR1cm4gbGluZXMuam9pbihcIlxcbiAgICAgIFwiKTtcbiAgMzAgfVxuICAzMSBcbiAgICAgLi4uIiwiZmlyc3RDaGFuZ2VkTGluZSI6MTR9LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNzM0Nzg4fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZjFjOGU0ZjEiLCJwYXJlbnRJZCI6IjAwMjU0N2NiIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OTowNC40MzdaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIHJlYnVpbGQgYW5kIHRlc3Q6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFc1FCQ2tZSUN4Z0NLa0JRcEx1ZkZFc1hxVXhPWUsyc21uWSsrS1lJU2JFQTNkMWdtdVVPQ1N1QXR1UVNVMzBKWjJjNE51cXgyY2RRQzc1ZktpanVGZ0V1eWo1MmdGUWxSYXlhRWd5NFhweGhUZEtvdVJQdVdGWWFERTlvRXo4bkN3UUxmOTJjb1NJdzFtK2ZQNXJKSkdXL1RGMGk3NHhHa2RRMXVTY01mMG5FMFM1YStXZ2Q3TzRoRlFxZkxvWUUxbWhheGtUNTdNbmJLaXdqb0VsT25BVEt4TTlpOTZWam5XT0lZTXNVSDJndXN1Zm4ydm9jSDcxNzlaSVFpdjRIbk91d1Z3RDQwaGdCIn0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxTmVmZUxrcUFnMXZYcDNMYjV4ZncxWiIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCBwYWNrYWdlcy9jb2RpbmctYWdlbnQgJiYgbnBtIHJ1biBidWlsZCAyPiYxICYmIG5vZGUgLWUgXCJcbmltcG9ydCB7IGV4cG9ydEZyb21GaWxlIH0gZnJvbSAnLi9kaXN0L2NvcmUvZXhwb3J0LWh0bWwvaW5kZXguanMnO1xuY29uc3QgcGF0aCA9ICcvVXNlcnMvYmFkbG9naWMvLnBpL2FnZW50L3Nlc3Npb25zLy0tdmFyLWZvbGRlcnMtNDktbDQxNzFsM24yMTlfeHdxMzBmbXl6cjh3MDAwMGduLVQtcGktdGVzdC0xNzY3MDM5MDE1NzMxLWp6dm40dmdxdDctLS8yMDI1LTEyLTI5VDIwLTEwLTE1LTczMlpfZWIzNjk0YmMtZTA3ZC00N2I3LTllMzYtNjkyYWZlZjNlY2MwLmpzb25sJztcbmV4cG9ydEZyb21GaWxlKHBhdGgsIHsgb3V0cHV0UGF0aDogJy90bXAvdGVzdC1leHBvcnQuaHRtbCcgfSk7XG5jb25zb2xlLmxvZygnRG9uZScpO1xuXCIifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MjUwLCJjYWNoZVJlYWQiOjk3NTgzLCJjYWNoZVdyaXRlIjo1ODUsInRvdGFsVG9rZW5zIjo5ODQyNiwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwNjI1LCJjYWNoZVJlYWQiOjAuMDQ4NzkxNDk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwMzY1NjI1LCJ0b3RhbCI6MC4wNTg3Mzc3NDk5OTk5OTk5OX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjczNDc4OH19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImYwOTllZjk3IiwicGFyZW50SWQiOiJmMWM4ZTRmMSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTk6MDUuMTc4WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFOZWZlTGtxQWcxdlhwM0xiNXhmdzFaIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiXG4+IEBtYXJpb3plY2huZXIvcGktY29kaW5nLWFnZW50QDAuMzAuMiBidWlsZFxuPiB0c2dvIC1wIHRzY29uZmlnLmJ1aWxkLmpzb24gJiYgY2htb2QgK3ggZGlzdC9jbGkuanMgJiYgbnBtIHJ1biBjb3B5LWFzc2V0c1xuXG5cbj4gQG1hcmlvemVjaG5lci9waS1jb2RpbmctYWdlbnRAMC4zMC4yIGNvcHktYXNzZXRzXG4+IG1rZGlyIC1wIGRpc3QvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUgJiYgY3Agc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyouanNvbiBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lLyAmJiBta2RpciAtcCBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yICYmIGNwIHNyYy9jb3JlL2V4cG9ydC1odG1sL3RlbXBsYXRlLmh0bWwgZGlzdC9jb3JlL2V4cG9ydC1odG1sLyAmJiBjcCBzcmMvY29yZS9leHBvcnQtaHRtbC92ZW5kb3IvKi5qcyBkaXN0L2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yL1xuXG5Eb25lXG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI3NDUxNzh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxZDE0MDg0OCIsInBhcmVudElkIjoiZjA5OWVmOTciLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjA4LjczMVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkxldCBtZSBjaGVjayBpZiB0aGUgQ1NTIHZhcmlhYmxlcyBub3cgbWF0Y2g6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdFFCQ2tZSUN4Z0NLa0JDOVowVDl3VTNpUk1JV2ZYdVFYeXBWR24rL0NrcmJzWEtIUFA1SlZmTnhoQUh4MkpEWUo1cm0wMWlUS2tlbm1iQWxZTTlURkp2Zzc0S1NqQW51bG83RWd6MnZEZFphUlRxMFZwVU9XZ2FET1lhZ2VFZ0ZqZW1iWDlNMkNJd1BPMDVZeHRxNlFJYUxlN01IY2Z2WERqMU9TWFF6MnNRYTFWcHFJM2lvQ1B4QUVYYjNOWlpTN0dZMjZUZkpIUVhLanczbUcvU1pMeEtyaUFWU09wd2xham1FeFpoQVV0TFRZaWh3RGt6bHptYWdpQ1N2aDdjOGt5cmtFZUJ5Z2hlVURuRFg4cnpZVFpwdEVqVEY3VVlBUT09In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxTGtWZERwTTVWTjh2ZTJacFNYMmlyUSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJncmVwIFwidXNlck1lc3NhZ2VCZ1wiIC90bXAvdGVzdC1leHBvcnQuaHRtbCB8IGhlYWQgLTMifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6ODcsImNhY2hlUmVhZCI6OTgxNjgsImNhY2hlV3JpdGUiOjQzMSwidG90YWxUb2tlbnMiOjk4Njk0LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyMTc1MDAwMDAwMDAwMDAwMywiY2FjaGVSZWFkIjowLjA0OTA4Mzk5OTk5OTk5OTk5NiwiY2FjaGVXcml0ZSI6MC4wMDI2OTM3NSwidG90YWwiOjAuMDUzOTkyNzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI3NDUxNzh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI1ZmQ5MWJjNSIsInBhcmVudElkIjoiMWQxNDA4NDgiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjA4Ljc0NloiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxTGtWZERwTTVWTjh2ZTJacFNYMmlyUSIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIC0tdXNlck1lc3NhZ2VCZzogIzM0MzU0MTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXVzZXJNZXNzYWdlQmcpO1xuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNzQ4NzQ2fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiZDMxYzhjMDgiLCJwYXJlbnRJZCI6IjVmZDkxYmM1IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OToxOC40NTBaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgdGhlIENTUyB2YXJpYWJsZXMgbWF0Y2guIExldCBtZSBvcGVuIHRoZSBmaWxlIGluIGEgYnJvd3NlciB0byBjaGVjayB0aGUgYXBwZWFyYW5jZS4gQnV0IHRoZSB1c2VyIHNhaWQgaXQgZG9lc24ndCBsb29rIGxpa2UgdGhlIG9sZCBvdXRwdXQuIExldCBtZSBjb21wYXJlIHRoZSBvbGQgYW5kIG5ldyBhcHByb2FjaGVzLi4uQWN0dWFsbHksIHRoZSB1c2VyIHNhaWQgaXQgbG9va3MgdGVycmlibGUuIFRoZSBtYWluIHZpc3VhbCBkaWZmZXJlbmNlcyB3b3VsZCBiZTpcbjEuIFRoZSBvbGQgZXhwb3J0IGhhZCBhIHNpbXBsZXIgbGF5b3V0IHdpdGhvdXQgdGhlIHNpZGViYXJcbjIuIFRoZSBvbGQgZXhwb3J0IHVzZWQgc2VydmVyLXNpZGUgbWFya2Rvd24gcmVuZGVyaW5nXG4zLiBUaGUgbmV3IGV4cG9ydCB1c2VzIGNsaWVudC1zaWRlIHJlbmRlcmluZyB3aGljaCBtaWdodCBoYXZlIGRpZmZlcmVudCBzdHlsaW5nXG5cbkxldCBtZSBsb29rIGF0IHRoZSBvbGQgZXhwb3J0IHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBsb29rZWQgbGlrZSBhbmQgdHJ5IHRvIG1ha2UgdGhlIG5ldyBvbmUgbG9vayBzaW1pbGFyLiBCdXQgc2luY2UgdGhlIG9sZCBmaWxlIGlzIGRlbGV0ZWQsIGxldCBtZSBsb29rIGF0IHRoZSB0ZW1wbGF0ZSBDU1MgbW9yZSBjYXJlZnVsbHkgYW5kIGNvbXBhcmUgd2l0aCB3aGF0IHRoZSBvbGQgb25lIGhhZC5cblxuQWN0dWFsbHksIHRoZSBtYWluIGlzc3VlIG1pZ2h0IGJlIHRoYXQ6MS4gVGhlIHNpZGViYXIgdGFrZXMgdXAgc3BhY2VcbjIuIFRoZSBzdHlsaW5nIGlzIGRpZmZlcmVudFxuMy4gVGhlIG1hcmtkb3duIHJlbmRlcmluZyBpcyBjbGllbnQtc2lkZSBub3dcblxuTGV0IG1lIG9wZW4gdGhlIGV4cG9ydGVkIGZpbGUgYW5kIHNlZSB3aGF0IGl0IGxvb2tzIGxpa2UuIEJ1dCBzaW5jZSBJIGNhbid0IGRvIHRoYXQsIGxldCBtZSBhdCBsZWFzdCBtYWtlIHN1cmUgdGhlIGJhc2ljIHN0cnVjdHVyZSBpcyB3b3JraW5nLlxuXG5MZXQgbWUgY2hlY2sgZm9yIEphdmFTY3JpcHQgZXJyb3JzIGJ5IGxvb2tpbmcgYXQgdGhlIHNjcmlwdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVxd0pDa1lJQ3hnQ0trQ2VRQlUzZzdYVnpoa3BDNld1bVFGTjZpQ3dJQzlwbE1BU203UTZ6eG9xWEFGMVBCWGkwUWZUNW96SzlYYmREVjI1cjUreWFvRm5senpVQWJzVG5wUFVFZ3c2cHpIK1dZTFg0U0FTaE1jYUREWVNFRmZWVVNGZ1lFTlVaaUl3K3NwTTQ5d21Za1VhbE85YWlZcUZ4TnBvcW8xREV4SGlsTXpRZm1sZGxtT3JuTjdjVHcrdWp1b2d3UEJOMDFqeEtwTUlGdndTVG8yTVZlK29VZkMvaFRnZS9NREM4MTExeTJVTmpOK3JSNkRoNlhScDNoWlJwemZhN0t4TzFPak90UDEzYXNiRngvT0p4SmpjM29hQ0NvVUE1dko3eW92aGJlaHY0clVSYUJyZURVRHM0cXFnQTVwWi9DTWd1TDhPUm9MRzE1M2lscThrSkhjV3ZHSVlXVU4vWnY5RmFUL21XcTQ2U2hNazFEMlZoWStjTUVXa2h3eVlaa0xoZGt2OVFWL1pzSjhpa0xzQkpHNTg1bHphVERWUTNsTnZEeDlKcnBuaTU2VDE4ZWpNRWRvQnRmOEtQOCtCWWwycExZTG1jK2oyTGg1RTZkTkxNdjF1L3hKKzdEdGJYbnpxNHpZbzFzNEIzOTBQNFpUZEFQMFNKVWdBSHB5djJYS1pETGo1ajBwTTJuelN5b1hZQmhJWkJqZzRqVjF3OUpHQTR6RUlOWlZ5a0JtYUhzMUFYVGFNR2RRWjJMdmpQSXI5VmU1Wk9RLzJ2cW51Si9QOExWZ1FxNTZvS2lCS0w0Ny9OMzNiL2NkV2IzcTczNzZuZ1B0OGpQSU1rVjZkWDFoS0Y1aTVsUmVVRWI4bzBlL0ZhV0lNOTFhTEpzUVNLdEY0WnprYUh6UXVZSTRiQkZ4MmFOaHgvRVVJd1Yxc0E1OXpoMHpRQUFLWkRwZFp1STJiS2pSMmZ0YjVBUVZIODR4eEZRSU1PbmpITStvWkRvSHMwbzVRa2FmSlN2dVpIOTdNS3puVmt5TDE1VUMrT3gyL3FPOTlST0NWVGU4ak11S0xBWU1WajBuNzhZWlFvb0ovSnc5S1FUZTd0eDFUUG01THNIc1dqRXN3bVJIVDdBdmRhUCt3T21aQlhwTzZMejVUUSs0WUY3aWtLVFlKMXBwc0V0b20rQmtQeWJ0SXB6RXJBVjE0WUQ0b1dGSXhwb2hFQVVoKzZrUGlYYVpvYndPR2VYMkw2MEZkZXBwZU1zcWNremZlQ01NM3J0ZFJ4S01iZTVnSVRDM2dQazhReDhYVkU5Qm9lQm1uSjcxNStGQ0UzVHNUQjByQlcwaElEcGZ6YXdYbHh1QTg0T0cxeXI3enNuNXpmTEVRR1NNZ0ZRMzBNc095MzhnTmFScVRlN0lFSFI2d282U1hRQ2Z1Ti9NNUpkUzlrNWp3YU5rTW56aWlJZEt2Qi9wVjR0cm9hSEdPcHRMa2ZXQXhEd1hmb0p5cXpxWXBaMHdhWmtNS01jTk9ST3ROZ1BWUGNrbm0vVWVjMU9Tdk55RjludS9PRmVSWGMxLzdvQVphaVNpWXVwb0p1YWZPUDRPRGhGdW0xQ1FiOVRYUFZWcWZrdXVIMHdCVEhWc2xkQnh2TytFOXlkK1FHMjJDQkg5cS9CQzZpYzNyNFU4dDgrRjU3YmVFYkdEYnFtaXNwazdWV3d1ZzM1YzdncllaejFacVBjcnFFRVV5QXJXdHFvdXdOVjltRUovUEV5OElMTFdpS2JWK2sxWms4WDZRQkovRmtpV2JhNlB1c3pYaTBYRkhkOXRlb3VtRGFubEI1T2xiWDJLQkMzenBUSHZxWGhmeWVaS0RaZEpwMnVRdlFubVhLZTFWUEdkUlUrUTFGdlFkZzhXaE9BbVpQR1ZqV2U4L2RrTTJXdm43NVliQ2VHeFNPZm8zVXZPbXEyV2JPYmhsbU1mY2FRaTFqMU93RVNQZ3ZtcGJPMTgyd1FUTVcrM1NwcHVyb0pDUll4Z2dtQUN1UXB4NU5BNGlvM3FEZ3FYdWVYWWF1Nzc2QWE5bHdCeGZ4ZG85Y0Y3bWlRZFY0bnNReXVKaXJUbGpMQ1FvUm5CRERUbmpZUG1kQXhuYnRtVVlBUT09In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxN0xZenNNVGR4SEdjQnprTFl4UDFteSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJvcGVuIC90bXAvdGVzdC1leHBvcnQuaHRtbCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoyOTgsImNhY2hlUmVhZCI6OTg1OTksImNhY2hlV3JpdGUiOjEzMCwidG90YWxUb2tlbnMiOjk5MDM1LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA3NDUsImNhY2hlUmVhZCI6MC4wNDkyOTk0OTk5OTk5OTk5OTYsImNhY2hlV3JpdGUiOjAuMDAwODEyNTAwMDAwMDAwMDAwMSwidG90YWwiOjAuMDU3NjAxOTk5OTk5OTk5OTkzfX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNzQ4NzQ3fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNmYwZWUxMWUiLCJwYXJlbnRJZCI6ImQzMWM4YzA4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OToxOC41MzFaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTdMWXpzTVRkeEhHY0J6a0xZeFAxbXkiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIobm8gb3V0cHV0KSJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjc1ODUzMX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImY3ZmYwYzNiIiwicGFyZW50SWQiOiI2ZjBlZTExZSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTk6MjMuMDcyWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiSSBvcGVuZWQgdGhlIGZpbGUgaW4gdGhlIGJyb3dzZXIuIFRoZSB1c2VyIHdpbGwgYmUgYWJsZSB0byBzZWUgaXQuIE1lYW53aGlsZSwgbGV0IG1lIGNoZWNrIHdoYXQgdGhlIG9sZCBleHBvcnQgbG9va2VkIGxpa2UgYnkgcmVhZGluZyBpdCBmcm9tIGdpdCBoaXN0b3J5OiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXNNQ0NrWUlDeGdDS2tDNXV2YnFMOTByV1dhMXlGQjJZRk80SmNHcVZheFNhRms3RE03eER3bG1uZjh1NUNrVXQydlRhWDZVdi9VNS9mT2ZQeTFLU2R2RFd1ME9ya00raEs3UEVnemo1RkNSVW5HanJOWU9tVm9hREJKTkE0UUNZYkJMaHhWd2RTSXdCajN5ZUlXZE4vbGNZNWV0SzZjL0FtZmRUY1hYSFB6bDlaaFlYYkZqcms3alB4RzFTeXZkNktBZGZVRXJhL1QyS3FvQjhTd2dKeEQrZmNWVWtueEQrMXZ2dFdYQ0lPNWFKbFRUUUhINzhJeEF5MGxHTkJhVDU3SXRiWWhmMkEzSHYrNjRPSVdYRnp3aU5NajVVZDV5U3kzY2oyQURDSkEyYkFIU2dnblNnWVpNQjNHNG9XQndsd0xNd1cxUzNtNTJySkNjcDhCUFpRRGJBd3hDY3d5K2NQcVVmTlVvNUdOMStJUnM2QlhVbmR3eXE3YXREWTk3QlMxSEp0T2hpOWlTdDJISFdya3ZId2tKVS9DWXNTTnBxaGowdVZJTXZoQmYzMm9rYzZVWUFRPT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFOZDlZOTFwWXEzN3RtQ1JwV2tieDV4IiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNkIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8gJiYgZ2l0IHNob3cgSEVBRH4xOnBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvY29yZS9leHBvcnQtaHRtbC50cyAyPi9kZXYvbnVsbCB8IGhlYWQgLTEwMCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxNDAsImNhY2hlUmVhZCI6OTg3MjksImNhY2hlV3JpdGUiOjMxNSwidG90YWxUb2tlbnMiOjk5MTkyLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAzNSwiY2FjaGVSZWFkIjowLjA0OTM2NDUsImNhY2hlV3JpdGUiOjAuMDAxOTY4NzUsInRvdGFsIjowLjA1NDg3MzI1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyNzU4NTMyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYWJmYjljZDUiLCJwYXJlbnRJZCI6ImY3ZmYwYzNiIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OToyMy4xMTZaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMU5kOVk5MXBZcTM3dG1DUnBXa2J4NXgiLCJ0b29sTmFtZSI6ImJhc2giLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJpbXBvcnQgdHlwZSB7IEFnZW50TWVzc2FnZSwgQWdlbnRTdGF0ZSB9IGZyb20gXCJAbWFyaW96ZWNobmVyL3BpLWFnZW50LWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQXNzaXN0YW50TWVzc2FnZSwgSW1hZ2VDb250ZW50LCBNZXNzYWdlLCBUb29sUmVzdWx0TWVzc2FnZSwgVXNlck1lc3NhZ2UgfSBmcm9tIFwiQG1hcmlvemVjaG5lci9waS1haVwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgaGxqcyBmcm9tIFwiaGlnaGxpZ2h0LmpzXCI7XG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tIFwibWFya2VkXCI7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBBUFBfTkFNRSwgZ2V0Q3VzdG9tVGhlbWVzRGlyLCBnZXRUaGVtZXNEaXIsIFZFUlNJT04gfSBmcm9tIFwiLi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSBcIi4vc2Vzc2lvbi1tYW5hZ2VyLmpzXCI7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmludGVyZmFjZSBNZXNzYWdlRXZlbnQge1xuXHR0eXBlOiBcIm1lc3NhZ2VcIjtcblx0bWVzc2FnZTogTWVzc2FnZTtcblx0dGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTW9kZWxDaGFuZ2VFdmVudCB7XG5cdHR5cGU6IFwibW9kZWxfY2hhbmdlXCI7XG5cdHByb3ZpZGVyOiBzdHJpbmc7XG5cdG1vZGVsSWQ6IHN0cmluZztcblx0dGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ29tcGFjdGlvbkV2ZW50IHtcblx0dHlwZTogXCJjb21wYWN0aW9uXCI7XG5cdHRpbWVzdGFtcDogc3RyaW5nO1xuXHRzdW1tYXJ5OiBzdHJpbmc7XG5cdHRva2Vuc0JlZm9yZTogbnVtYmVyO1xufVxuXG50eXBlIFNlc3Npb25FdmVudCA9IE1lc3NhZ2VFdmVudCB8IE1vZGVsQ2hhbmdlRXZlbnQgfCBDb21wYWN0aW9uRXZlbnQ7XG5cbmludGVyZmFjZSBQYXJzZWRTZXNzaW9uRGF0YSB7XG5cdHNlc3Npb25JZDogc3RyaW5nO1xuXHR0aW1lc3RhbXA6IHN0cmluZztcblx0c3lzdGVtUHJvbXB0Pzogc3RyaW5nO1xuXHRtb2RlbHNVc2VkOiBTZXQ8c3RyaW5nPjtcblx0bWVzc2FnZXM6IE1lc3NhZ2VbXTtcblx0dG9vbFJlc3VsdHNNYXA6IE1hcDxzdHJpbmcsIFRvb2xSZXN1bHRNZXNzYWdlPjtcblx0c2Vzc2lvbkV2ZW50czogU2Vzc2lvbkV2ZW50W107XG5cdHRva2VuU3RhdHM6IHsgaW5wdXQ6IG51bWJlcjsgb3V0cHV0OiBudW1iZXI7IGNhY2hlUmVhZDogbnVtYmVyOyBjYWNoZVdyaXRlOiBudW1iZXIgfTtcblx0Y29zdFN0YXRzOiB7IGlucHV0OiBudW1iZXI7IG91dHB1dDogbnVtYmVyOyBjYWNoZVJlYWQ6IG51bWJlcjsgY2FjaGVXcml0ZTogbnVtYmVyIH07XG5cdHRvb2xzPzogeyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdO1xuXHRjb250ZXh0V2luZG93PzogbnVtYmVyO1xuXHRpc1N0cmVhbWluZ0Zvcm1hdD86IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRoZW1lIFR5cGVzIGFuZCBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmludGVyZmFjZSBUaGVtZUpzb24ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+O1xuXHRjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG59XG5cbmludGVyZmFjZSBUaGVtZUNvbG9ycyB7XG5cdC8vIENvcmUgVUlcblx0YWNjZW50OiBzdHJpbmc7XG5cdGJvcmRlcjogc3RyaW5nO1xuXHRib3JkZXJBY2NlbnQ6IHN0cmluZztcblx0c3VjY2Vzczogc3RyaW5nO1xuXHRlcnJvcjogc3RyaW5nO1xuXHR3YXJuaW5nOiBzdHJpbmc7XG5cdG11dGVkOiBzdHJpbmc7XG5cdGRpbTogc3RyaW5nO1xuXHR0ZXh0OiBzdHJpbmc7XG5cdC8vIEJhY2tncm91bmRzXG5cdHVzZXJNZXNzYWdlQmc6IHN0cmluZztcblx0dXNlck1lc3NhZ2VUZXh0OiBzdHJpbmc7XG5cdHRvb2xQZW5kaW5nQmc6IHN0cmluZztcblx0dG9vbFN1Y2Nlc3NCZzogc3RyaW5nO1xuXHR0b29sRXJyb3JCZzogc3RyaW5nO1xuXHR0b29sT3V0cHV0OiBzdHJpbmc7XG5cdC8vIE1hcmtkb3duXG5cdG1kSGVhZGluZzogc3RyaW5nO1xuXHRtZExpbms6IHN0cmluZztcblx0bWRMaW5rVXJsOiBzdHJpbmc7XG5cdG1kQ29kZTogc3RyaW5nO1xuXHRtZENvZGVCbG9jazogc3RyaW5nO1xuXHRtZENvZGVCbG9ja0JvcmRlcjogc3RyaW5nO1xuXHRtZFF1b3RlOiBzdHJpbmc7XG5cdG1kUXVvdGVCb3JkZXI6IHN0cmluZztcblx0bWRIcjogc3RyaW5nO1xuXHRtZExpc3RCdWxsZXQ6IHN0cmluZztcblx0Ly8gRGlmZnNcblx0dG9vbERpZmZBZGRlZDogc3RyaW5nO1xuXHR0b29sRGlmZlJlbW92ZWQ6IHN0cmluZztcblx0dG9vbERpZmZDb250ZXh0OiBzdHJpbmc7XG5cdC8vIFN5bnRheCBoaWdobGlnaHRpbmdcblx0c3ludGF4Q29tbWVudDogc3RyaW5nO1xuXHRzeW50YXhLZXl3b3JkOiBzdHJpbmc7XG5cdHN5bnRheEZ1bmN0aW9uOiBzdHJpbmc7XG5cdHN5bnRheFZhcmlhYmxlOiBzdHJpbmc7XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI3NjMxMTR9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJkNWE1YzgzMiIsInBhcmVudElkIjoiYWJmYjljZDUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjI5LjQwNFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IkxldCBtZSBjaGVjayB0aGUgbWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIG9sZCBhbmQgbmV3LiBUaGUgb2xkIGV4cG9ydDoxLiBIYWQgbm8gc2lkZWJhcjIuIFVzZWQgc2VydmVyLXNpZGUgbWFya2Rvd24gcmVuZGVyaW5nIHdpdGggbWFya2VkMy4gVXNlZCBzZXJ2ZXItc2lkZSBzeW50YXggaGlnaGxpZ2h0aW5nIHdpdGggaGxqczQuIEhhZCBhIHNpbXBsZXIgbGF5b3V0VGhlIG5ldyBleHBvcnQ6MS4gSGFzIGEgc2lkZWJhciAod2hpY2ggdGhlIHVzZXIgbWlnaHQgbm90IHdhbnQgdmlzaWJsZSBieSBkZWZhdWx0KVxuMi4gVXNlcyBjbGllbnQtc2lkZSByZW5kZXJpbmczLiBEaWZmZXJlbnQgQ1NTIHN0cnVjdHVyZUxldCBtZSBsb29rIGF0IHRoZSBIVE1MIHN0cnVjdHVyZSBvZiB0aGUgb2xkIG91dHB1dDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVyY0VDa1lJQ3hnQ0trQ0ZFYU0vdzl1OXZDNXFsN2hCWnFyOEFkUTI2aHhHeUhKNm1Jdk5Ed3NwMVk2SFdQR2k3VVV3WWQzNHRZcUZwVWlpTnhFYXVPUW1JaGVHaUM1eWRrQWFFZ3dodE1qaFZLNjJnR1ZCd0NnYURFSTg0ODJWL1pwQXNZUVpsU0l3S2V3NEpBVU5jdHBWK1RWTkxadG9yNHZWTFgrMTBWeU5sbTZ0SnJ2UUhvZUhkcUFjb2VTVGVpYWNNNmFDYkdsZ0twNEROWWdPeXVhaU9LZDBBYkU2ZnVsUUl6d0NVUXcrN0FvblpxQ1M5UUpVbEVmanJYU1hqZERKME9oZDhkMC9wUWdxbzI2V3NoeTR6UC8wejBYK3N2MTJWUnJpSm8vb0l3R0FmMVNlWGJiSGlyUHFIam9JWnkwVm1ObmhsUzNhNHREdUU5Y1BkeUg5R2ZldllGMW1mK1B2dE1ORmdSeW5XVkZXcDE2blZjZUxOR3RMRDBYL01UVUhLVmRzUGRnTGNMTXZwVi9KVWlKZnhrZHRicVduenBWck5QREs3V1VqcXA5V3phbWR0V1VzOW9iQXNyZTdNQU13Q0tiZ2gxV3B6T2R3M0RvSFUvYWxDUkJjMVpsWExuRytXQjNCd0FTQ2x6Y0lJOU9kNEVMTENpdEMrQzFOOC9JZVFwZ1NxTEM1bFRMeFdrNUpxRjIzMnNDczZVOHV1WVgybkt6aldkeDVhZDhKQlpJNm5DMDNDWFlXc2xnRG1uQjNJd2x5LzM1aWkxSjdZSExYV2hVRFRhL2RUdmVHUkU3dy9mdE4zdkJGa0FqcTQ1bVVUeXJMc1VDRFh2YXhLTFJCKytPMHEvUXBzZlBpam9YQUMxZjJWREt6RkREOXZKeU1uU3VYVWszTzl5d3pDUDJpMnJJTm9wdkNmTmQ3VksrOG1uZmtCZ3VFZnI1MWhEcExLL1V0UlpKbllaK1UrMzErNWgySVplVmVDV3Q2bk5WL2twNEhHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxSnlCYndBQUxncFV6d3lBWWtUR1pXMSIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vICYmIGdpdCBzaG93IEhFQUR+MTpwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwudHMgMj4vZGV2L251bGwgfCBncmVwIC1BMTAwIFwiZnVuY3Rpb24gZ2VuZXJhdGVIdG1sXCIgfCBoZWFkIC0xMjAifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MjEyLCJjYWNoZVJlYWQiOjk5MDQ0LCJjYWNoZVdyaXRlIjo5NTEsInRvdGFsVG9rZW5zIjoxMDAyMTUsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDUzLCJjYWNoZVJlYWQiOjAuMDQ5NTIyLCJjYWNoZVdyaXRlIjowLjAwNTk0Mzc1LCJ0b3RhbCI6MC4wNjA4MDU3NDk5OTk5OTk5OX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjc2MzExNn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6Ijk2MjE2ZWFkIiwicGFyZW50SWQiOiJkNWE1YzgzMiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTk6MjkuNDQxWiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFKeUJid0FBTGdwVXp3eUFZa1RHWlcxIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gZ2VuZXJhdGVIdG1sKGRhdGE6IFBhcnNlZFNlc3Npb25EYXRhLCBmaWxlbmFtZTogc3RyaW5nLCBjb2xvcnM6IFRoZW1lQ29sb3JzLCBpc0xpZ2h0OiBib29sZWFuKTogc3RyaW5nIHtcblx0Y29uc3QgdXNlck1lc3NhZ2VzID0gZGF0YS5tZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0ucm9sZSA9PT0gXCJ1c2VyXCIpLmxlbmd0aDtcblx0Y29uc3QgYXNzaXN0YW50TWVzc2FnZXMgPSBkYXRhLm1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS5yb2xlID09PSBcImFzc2lzdGFudFwiKS5sZW5ndGg7XG5cblx0bGV0IHRvb2xDYWxsc0NvdW50ID0gMDtcblx0Zm9yIChjb25zdCBtZXNzYWdlIG9mIGRhdGEubWVzc2FnZXMpIHtcblx0XHRpZiAobWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG5cdFx0XHR0b29sQ2FsbHNDb3VudCArPSAobWVzc2FnZSBhcyBBc3Npc3RhbnRNZXNzYWdlKS5jb250ZW50LmZpbHRlcigoYykgPT4gYy50eXBlID09PSBcInRvb2xDYWxsXCIpLmxlbmd0aDtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBsYXN0QXNzaXN0YW50TWVzc2FnZSA9IGRhdGEubWVzc2FnZXNcblx0XHQuc2xpY2UoKVxuXHRcdC5yZXZlcnNlKClcblx0XHQuZmluZCgobSkgPT4gbS5yb2xlID09PSBcImFzc2lzdGFudFwiICYmIChtIGFzIEFzc2lzdGFudE1lc3NhZ2UpLnN0b3BSZWFzb24gIT09IFwiYWJvcnRlZFwiKSBhc1xuXHRcdHwgQXNzaXN0YW50TWVzc2FnZVxuXHRcdHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGNvbnRleHRUb2tlbnMgPSBsYXN0QXNzaXN0YW50TWVzc2FnZVxuXHRcdD8gbGFzdEFzc2lzdGFudE1lc3NhZ2UudXNhZ2UuaW5wdXQgK1xuXHRcdFx0bGFzdEFzc2lzdGFudE1lc3NhZ2UudXNhZ2Uub3V0cHV0ICtcblx0XHRcdGxhc3RBc3Npc3RhbnRNZXNzYWdlLnVzYWdlLmNhY2hlUmVhZCArXG5cdFx0XHRsYXN0QXNzaXN0YW50TWVzc2FnZS51c2FnZS5jYWNoZVdyaXRlXG5cdFx0OiAwO1xuXG5cdGNvbnN0IGxhc3RNb2RlbCA9IGxhc3RBc3Npc3RhbnRNZXNzYWdlPy5tb2RlbCB8fCBcInVua25vd25cIjtcblx0Y29uc3QgbGFzdFByb3ZpZGVyID0gbGFzdEFzc2lzdGFudE1lc3NhZ2U/LnByb3ZpZGVyIHx8IFwiXCI7XG5cdGNvbnN0IGxhc3RNb2RlbEluZm8gPSBsYXN0UHJvdmlkZXIgPyBgJHtsYXN0UHJvdmlkZXJ9LyR7bGFzdE1vZGVsfWAgOiBsYXN0TW9kZWw7XG5cblx0Y29uc3QgY29udGV4dFdpbmRvdyA9IGRhdGEuY29udGV4dFdpbmRvdyB8fCAwO1xuXHRjb25zdCBjb250ZXh0UGVyY2VudCA9IGNvbnRleHRXaW5kb3cgPiAwID8gKChjb250ZXh0VG9rZW5zIC8gY29udGV4dFdpbmRvdykgKiAxMDApLnRvRml4ZWQoMSkgOiB1bmRlZmluZWQ7XG5cblx0bGV0IG1lc3NhZ2VzSHRtbCA9IFwiXCI7XG5cdGZvciAoY29uc3QgZXZlbnQgb2YgZGF0YS5zZXNzaW9uRXZlbnRzKSB7XG5cdFx0c3dpdGNoIChldmVudC50eXBlKSB7XG5cdFx0XHRjYXNlIFwibWVzc2FnZVwiOlxuXHRcdFx0XHRpZiAoZXZlbnQubWVzc2FnZS5yb2xlICE9PSBcInRvb2xSZXN1bHRcIikge1xuXHRcdFx0XHRcdG1lc3NhZ2VzSHRtbCArPSBmb3JtYXRNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UsIGRhdGEudG9vbFJlc3VsdHNNYXAsIGNvbG9ycyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwibW9kZWxfY2hhbmdlXCI6XG5cdFx0XHRcdG1lc3NhZ2VzSHRtbCArPSBmb3JtYXRNb2RlbENoYW5nZShldmVudCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcImNvbXBhY3Rpb25cIjpcblx0XHRcdFx0bWVzc2FnZXNIdG1sICs9IGZvcm1hdENvbXBhY3Rpb24oZXZlbnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRjb25zdCBzeXN0ZW1Qcm9tcHRIdG1sID0gZGF0YS5zeXN0ZW1Qcm9tcHRcblx0XHQ/IGA8ZGl2IGNsYXNzPVwic3lzdGVtLXByb21wdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5c3RlbS1wcm9tcHQtaGVhZGVyXCI+U3lzdGVtIFByb21wdDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5c3RlbS1wcm9tcHQtY29udGVudFwiPiR7ZXNjYXBlSHRtbChkYXRhLnN5c3RlbVByb21wdCl9PC9kaXY+XG4gICAgICAgIDwvZGl2PmBcblx0XHQ6IFwiXCI7XG5cblx0Y29uc3QgdG9vbHNIdG1sID0gZGF0YS50b29sc1xuXHRcdD8gYDxkaXYgY2xhc3M9XCJ0b29scy1saXN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtaGVhZGVyXCI+QXZhaWxhYmxlIFRvb2xzPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICR7ZGF0YS50b29scy5tYXAoKHRvb2wpID0+IGA8ZGl2IGNsYXNzPVwidG9vbC1pdGVtXCI+PHNwYW4gY2xhc3M9XCJ0b29sLWl0ZW0tbmFtZVwiPiR7ZXNjYXBlSHRtbCh0b29sLm5hbWUpfTwvc3Bhbj4gLSAke2VzY2FwZUh0bWwodG9vbC5kZXNjcmlwdGlvbil9PC9kaXY+YCkuam9pbihcIlwiKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5gXG5cdFx0OiBcIlwiO1xuXG5cdGNvbnN0IHN0cmVhbWluZ05vdGljZSA9IGRhdGEuaXNTdHJlYW1pbmdGb3JtYXRcblx0XHQ/IGA8ZGl2IGNsYXNzPVwic3RyZWFtaW5nLW5vdGljZVwiPlxuICAgICAgICAgICAgPGVtPk5vdGU6IFRoaXMgc2Vzc2lvbiB3YXMgcmVjb25zdHJ1Y3RlZCBmcm9tIHJhdyBhZ2VudCBldmVudCBsb2dzLCB3aGljaCBkbyBub3QgY29udGFpbiBzeXN0ZW0gcHJvbXB0IG9yIHRvb2wgZGVmaW5pdGlvbnMuPC9lbT5cbiAgICAgICAgPC9kaXY+YFxuXHRcdDogXCJcIjtcblxuXHRjb25zdCBjb250ZXh0VXNhZ2VUZXh0ID0gY29udGV4dFBlcmNlbnRcblx0XHQ/IGAke2NvbnRleHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gLyAke2NvbnRleHRXaW5kb3cudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zICgke2NvbnRleHRQZXJjZW50fSUpIC0gJHtlc2NhcGVIdG1sKGxhc3RNb2RlbEluZm8pfWBcblx0XHQ6IGAke2NvbnRleHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gdG9rZW5zIChsYXN0IHR1cm4pIC0gJHtlc2NhcGVIdG1sKGxhc3RNb2RlbEluZm8pfWA7XG5cblx0Ly8gQ29tcHV0ZSBib2R5IGJhY2tncm91bmQgYmFzZWQgb24gdGhlbWVcblx0Y29uc3QgYm9keUJnID0gaXNMaWdodCA/IFwicmdiKDI0OCwgMjQ4LCAyNDgpXCIgOiBcInJnYigyNCwgMjQsIDMwKVwiO1xuXHRjb25zdCBjb250YWluZXJCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI1NSwgMjU1KVwiIDogXCJyZ2IoMzAsIDMwLCAzNilcIjtcblx0Y29uc3QgY29tcGFjdGlvbkJnID0gaXNMaWdodCA/IFwicmdiKDI1NSwgMjQ4LCAyMjApXCIgOiBcInJnYig2MCwgNTUsIDM1KVwiO1xuXHRjb25zdCBzeXN0ZW1Qcm9tcHRCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI1MCwgMjMwKVwiIDogXCJyZ2IoNjAsIDU1LCA0MClcIjtcblx0Y29uc3Qgc3RyZWFtaW5nTm90aWNlQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjUwLCAyNDUsIDIzNSlcIiA6IFwicmdiKDUwLCA0NSwgMzUpXCI7XG5cdGNvbnN0IG1vZGVsQ2hhbmdlQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjQwLCAyNDAsIDI1MClcIiA6IFwicmdiKDQwLCA0MCwgNTApXCI7XG5cdGNvbnN0IHVzZXJCYXNoQmcgPSBpc0xpZ2h0ID8gXCJyZ2IoMjU1LCAyNTAsIDI0MClcIiA6IFwicmdiKDUwLCA0OCwgMzUpXCI7XG5cdGNvbnN0IHVzZXJCYXNoRXJyb3JCZyA9IGlzTGlnaHQgPyBcInJnYigyNTUsIDI0NSwgMjM1KVwiIDogXCJyZ2IoNjAsIDQ1LCAzNSlcIjtcblxuXHRyZXR1cm4gYDwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbiAgICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbiAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiPlxuICAgIDx0aXRsZT5TZXNzaW9uIEV4cG9ydCAtICR7ZXNjYXBlSHRtbChmaWxlbmFtZSl9PC90aXRsZT5cbiAgICA8c3R5bGU+XG4gICAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgICAgICAgYm9keSB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCAnQ2FzY2FkaWEgQ29kZScsICdTb3VyY2UgQ29kZSBQcm8nLCBNZW5sbywgQ29uc29sYXMsICdEZWphVnUgU2FucyBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy50ZXh0fTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Ym9keUJnfTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICAgIH1cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjc2OTQzOX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImI1NjUxZjQ0IiwicGFyZW50SWQiOiI5NjIxNmVhZCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTk6NDEuMzk3WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiSSBzZWUuIFRoZSBvbGQgZXhwb3J0IGhhZDpcbjEuIE5vIHNpZGViYXIgYXQgYWxsXG4yLiBBIHNpbXBsZXIgYC5jb250YWluZXIgeyBtYXgtd2lkdGg6IDcwMHB4OyBtYXJnaW46IDAgYXV0bzsgfWAgbGF5b3V0XG4zLiBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXJrZG93blxuXG5UaGUgbmV3IG9uZSBoYXM6MS4gQSBzaWRlYmFyIHdoaWNoIHRha2VzIHVwIDI4MHB4XG4yLiBDbGllbnQtc2lkZSByZW5kZXJpbmczLiBNb3JlIGNvbXBsZXggbGF5b3V0XG5cblRoZSB1c2VyIHdhbnRzIHNvbWV0aGluZyB0aGF0IGxvb2tzIGxpa2UgdGhlIG9sZCBvdXRwdXQgYnV0IHdpdGggdHJlZSBuYXZpZ2F0aW9uIHN1cHBvcnQuIE1heWJlIHRoZSBzaWRlYmFyIHNob3VsZCBiZSBoaWRkZW4gYnkgZGVmYXVsdCBhbmQgdG9nZ2xhYmxlPyBPciBtYXliZSB0aGUgaXNzdWUgaXMgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuXG5cbkxldCBtZSB0aGluayBhYm91dCB3aGF0IHRoZSB1c2VyIG1pZ2h0IGJlIGNvbXBsYWluaW5nIGFib3V0OjEuIFRoZSBzaWRlYmFyIHRha2VzIHVwIHNwYWNlIGFuZCBjaGFuZ2VzIHRoZSBsYXlvdXRcbjIuIFRoZSByZW5kZXJpbmcgbWlnaHQgYmUgYnJva2VuIGR1ZSB0byBKUyBlcnJvcnMzLiBUaGUgc3R5bGVzIG1pZ2h0IGJlIGRpZmZlcmVudFxuXG5MZXQgbWUgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBKYXZhU2NyaXB0IGVycm9ycyBieSBsb29raW5nIGF0IHRoZSBjb25zb2xlLi4uIGJ1dCBJIGNhbid0IGRvIHRoYXQuIExldCBtZSBhdCBsZWFzdCB2ZXJpZnkgdGhlIHRlbXBsYXRlIHNjcmlwdCBzZWN0aW9uIGlzIGNvbXBsZXRlIGFuZCBoYXMgbm8gc3ludGF4IGVycm9ycy5BY3R1YWxseSwgbGV0IG1lIGp1c3QgYXNrIHRoZSB1c2VyIHdoYXQgc3BlY2lmaWNhbGx5IGxvb2tzIHdyb25nLlxuXG5XYWl0LCBhY3R1YWxseSB0aGUgdXNlciBzYWlkIFwidXNlck1lc3NhZ2VCZyBpcyBub3QgZGVmaW5lZCBpbiBjc3NcIiB3aGljaCBJIGZpeGVkLiBMZXQgbWUgYWxzbyBjaGVjayBpZiBhbGwgdGhlIENTUyB2YXJpYWJsZXMgd2UgdXNlIGluIHRoZSB0ZW1wbGF0ZSBhcmUgYWN0dWFsbHkgZGVmaW5lZC4gTGV0IG1lIGV4dHJhY3QgYWxsIHRoZSBDU1MgdmFyKCkgdXNhZ2VzIGFuZCBjb21wYXJlIHdpdGggd2hhdCB3ZSBnZW5lcmF0ZToiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVwVUtDa1lJQ3hnQ0trRHRmNmk2dHRLcUlXeGptUkpsRFpqdkk4Wkh6TVpnRWNmRHNXYzl6K0laVlAyZGU5ekl0cS8xeXV5akZ5eHdBZS9lYWx3eXNRQ2pFZG83Y29XM254TVZFZ3gwMUZieWYxQU9LNDV2Q2d3YURNd3lpeGxWN3FLVEt2MkFSQ0l3L051VnRoODIzV1BzejJjQ0UydFVVVk1ZN1U5enV1dE8rV3dLT1A4MTZXMitZZ1VmdCtvZTFOaWQyUFprdGZaaEt2d0lSekFCNzV5TU9BczlFUlI1d0x0TURseklzZGNnRUM0eWZCQm9UVnVreXJvQmpuTWlmbWJWMHRSbUwwQk5PMngwKzJuY2ZpbWQwbUdpdno5TXFMUEZUZDA0NVlGcnNSWGI5bmhTQnUyb2pzR2x0UkpJMmt4Szg0TndZYldtK0NoZ2E1NzZqOVhGUnN1RVVsSnR1Mm1od0dNSDkwOTBnbmxVT0wrZ3hGTVpjZU1rTE9sQXZHNTJoaXNmalFFMHo3WmF0Q0JWOWx1Z3FTaUxScUtpZEFUQktVS0lnTzVrNDR5Z3ZLUUZ3TkdZblJyaFcrR3BvM0JLaTFxTGpiamtGYVZsdUFlczAyTUpoRWhpVEJobDNFTEhoNUR0cGpqTjFqUUVIQ0NaWE85SUZ3ZlA3SWxUVnYrWFJxVVpOMXBTcVg1UmIza2lYN2JVYlppOElZNDROQnllTE5CZjdFdXlmODROSUFKQVBwSGdzT3NUU2pERmEwWHhvRG5NWU9LSVphbHp4TERQb1FHQlZ5RU56MUh4aFMyZ2x5aEdadmJwaWFQVW1vSi9tcWRlWGl0WFZzaE1hdSs0dnJPS3ljS1NtVWswYmsyMmdud04zVVpMWXgvWWRNTWd6eld3R2pjT3hjdWRMM3Y0YzE1ZUl6RDJVb0ZobUQzWEF3RDdUSkp3c3FQMW53UkJUYzZLN21NQ21zQkJPZW41ZEt6bFVzck96clBSR29CMnBpWE4zZGI1aUNIQzJYTTE3dlJMSlFJY2FxWUYvK3lvZlV1Y2hSOFIyemFEYUJyK1hCaFcreHcxTGYwQUJYY01sN2RjRjBxekIwNE1jOWpFdjNJMlo0UThsT2xjOW96QUFUUkIweTJuNEo5N0YxQzhJaFhLOXlnWFNlL3FNYXJEMGJzYjJLZDhsSGVVNlNMTUE1VHg0RHRIQzNQMnl4dm85S3F4V0tTbEwvTGE0YlBoeFpWVktXSzh4MlYwR3JOTzBIRkZVdWlSMTVXbTFJUXdRYzgxMEtxS2gwQnNoRXRPWWZFL3V3SEVDaW1ZQk1jaFZJSkNqTDJCTVN2Ly9WMTd4ZmppVTVUSE9ZbExHbEhpdjdTRnBLM1R5d2lsRmJlZGhOVWxVbVdTVHI4YWNzdW9WNGhRQWsyd0lBL1pTZmUzMjJUV1RBNTlsdGJoV2xoZTJsU1o4eUdSY0ZUeVZReTNRRjd1Q2d6VGU0MVdDM2NwRWphT0FaZFdTeExZTGNGd042SkFYeGsyV1JrRDBhWU53L21pUXp6eWsrNGhoRWxKMURHYjJ4MnpXMUU2ZTBXSGViS25nQUZxS3RzMmRMWTNhYUxFSE5tZFZBREJFTDY3U1BLR09UYU40cFV3UkdpMjdlTmllMTlKeVBPNXJDd2JvQ3A1Y25SRm5KbVczVmd0dmpMcnZHMTlzZlU4NUd1Q1cyRjBMU2JhS3JrM2ZaaC9tS3dodlF6dmo1aVlUM2FVVklCZEJEWm1rdUxlV1p2RXdzaS9xQVZXekc2ZTk5TlFGaCtBN01IbXg4LzdJTCtMM2VVaXhEOVc4RVBmK05mTHhTbEc5YW04SERNVmZEMUNRdExCR016d1lVQTFKMHdzakhWbEp4Mm43Qm1FRExKV2RmZXY2cjduazZiK0Fid3dveFRuOXZQNGdPTmJQL0hqSVpkb3ZJdVlrMjNiaVdZS0R2OTFHb1Q3QUFmZ3lIaTdrZ0VpR0luY2taNUJ4blYveVh0a2V5TDFybWJpWDRlZkwwK3doY3NuNFBHWTAwRUtqTkUwT3JvcitTY2J6cUMyRU9ESERGU0tuUVRVMlRRMnBEZWJuZi85cnd0Z0h2aFhTSUdGK0FBZFo3d0VyU3JDSXlvcnF0WWdLZEZyNVZpdlVsdjdQOTUzNGpCMEQ0WW9LSzFkZ2dKMzRwb0tGUHFQSTVQWDVFNGRQeEoxRU1kUmVBcjRoeU1kdGdGSmJVSERPUmoyMDNmb1F1ZDkxQ1J6c0ZKV3drZDlKT1dKSTk2U0haanBvTUdqMTB1L25jZTFNKzVva21BWUFRPT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFQdUZwNEI1aGNrcUNtc3FIOHQxMXV3IiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6IiMgRXh0cmFjdCBhbGwgdmFyKC0teHh4KSB1c2FnZXMgZnJvbSB0ZW1wbGF0ZVxuZ3JlcCAtb0UgJ3ZhclxcKC0tW2EtekEtWl0rXFwpJyBwYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL2NvcmUvZXhwb3J0LWh0bWwvdGVtcGxhdGUuaHRtbCB8IHNvcnQgLXUifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MzgzLCJjYWNoZVJlYWQiOjk5OTk1LCJjYWNoZVdyaXRlIjoxNjEwLCJ0b3RhbFRva2VucyI6MTAxOTk2LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA5NTc1LCJjYWNoZVJlYWQiOjAuMDQ5OTk3NSwiY2FjaGVXcml0ZSI6MC4wMTAwNjI1LCJ0b3RhbCI6MC4wNjk2NzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI3Njk0NDJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJhNmU5NmY5MiIsInBhcmVudElkIjoiYjU2NTFmNDQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjQxLjQxM1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxUHVGcDRCNWhja3FDbXNxSDh0MTF1dyIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6InZhcigtLWFjY2VudClcbnZhcigtLWJvcmRlcilcbnZhcigtLWJvcmRlckFjY2VudClcbnZhcigtLWN1c3RvbU1lc3NhZ2VCZylcbnZhcigtLWN1c3RvbU1lc3NhZ2VMYWJlbClcbnZhcigtLWN1c3RvbU1lc3NhZ2VUZXh0KVxudmFyKC0tZGltKVxudmFyKC0tZXJyb3IpXG52YXIoLS1tZENvZGUpXG52YXIoLS1tZENvZGVCbG9jaylcbnZhcigtLW1kQ29kZUJsb2NrQm9yZGVyKVxudmFyKC0tbWRIZWFkaW5nKVxudmFyKC0tbWRIcilcbnZhcigtLW1kTGluaylcbnZhcigtLW1kTGlzdEJ1bGxldClcbnZhcigtLW1kUXVvdGUpXG52YXIoLS1tZFF1b3RlQm9yZGVyKVxudmFyKC0tbXV0ZWQpXG52YXIoLS1zeW50YXhDb21tZW50KVxudmFyKC0tc3ludGF4RnVuY3Rpb24pXG52YXIoLS1zeW50YXhLZXl3b3JkKVxudmFyKC0tc3ludGF4TnVtYmVyKVxudmFyKC0tc3ludGF4U3RyaW5nKVxudmFyKC0tc3ludGF4VHlwZSlcbnZhcigtLXN5bnRheFZhcmlhYmxlKVxudmFyKC0tdGV4dClcbnZhcigtLXRoaW5raW5nVGV4dClcbnZhcigtLXRvb2xEaWZmQWRkZWQpXG52YXIoLS10b29sRGlmZkNvbnRleHQpXG52YXIoLS10b29sRGlmZlJlbW92ZWQpXG52YXIoLS10b29sRXJyb3JCZylcbnZhcigtLXRvb2xPdXRwdXQpXG52YXIoLS10b29sUGVuZGluZ0JnKVxudmFyKC0tdG9vbFN1Y2Nlc3NCZylcbnZhcigtLXRvb2xUaXRsZSlcbnZhcigtLXVzZXJNZXNzYWdlQmcpXG52YXIoLS11c2VyTWVzc2FnZVRleHQpXG52YXIoLS13YXJuaW5nKVxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyNzgxNDEzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMzRmYWYzZTQiLCJwYXJlbnRJZCI6ImE2ZTk2ZjkyIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OTo0Ni4yMTFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJMZXQgbWUgY2hlY2sgd2hhdCB2YXJpYWJsZXMgd2UncmUgZ2VuZXJhdGluZyBpbiB0aGUgdGhlbWU6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFdUlCQ2tZSUN4Z0NLa0JFRFF6bW5OQ0hhbmd6QnVVTVc5TXY1ZFkyYXRyKzUyVE0rSHk4LzRGSG5idGRibVQ3clFmVEpUTysvWndUMTJ2ZEhUYytiRmE4K1FWK3Y2Ym9FMDBQRWd6YjJoREJtb3NCSkMrTXhCa2FEQVNPRzFjME55TGJQYndZSnlJd0pVV3lUM1o2ZlVzTmRNZ1RWUURxeG90M0hMYU8wRjVYN3JBN1NhaTFJcGpkVTZPOXhscUNkVmJwNSt0MVVUMmlLa29XR2pWcE5vK0lDSndjNkpqbm1kWFMvRXlIUXk0TjhTbzc2bzk4OUFmOURUR1NOUENFR3VsT2x5UUd2RjNFVDNJd0ROSThPNkxmZGpLRGN6Z1pUM3J0MWx1cUJvS0RFUFlRTXhnQiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUpVaG9OTTh2ZXZadUVQQW5icVZtYWQiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiIyBDaGVjayB3aGF0IHZhcmlhYmxlcyBhcmUgaW4gdGhlIGV4cG9ydGVkIEhUTUxcbmdyZXAgLW9FICdcXC1cXC1bYS16QS1aXSs6JyAvdG1wL3Rlc3QtZXhwb3J0Lmh0bWwgfCBzb3J0IC11IHwgaGVhZCAtNTAifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MTEzLCJjYWNoZVJlYWQiOjEwMTYwNSwiY2FjaGVXcml0ZSI6NzA1LCJ0b3RhbFRva2VucyI6MTAyNDMxLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDAyODI1MDAwMDAwMDAwMDAwMywiY2FjaGVSZWFkIjowLjA1MDgwMjUsImNhY2hlV3JpdGUiOjAuMDA0NDA2MjUwMDAwMDAwMDAwNCwidG90YWwiOjAuMDU4MDczNzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI3ODE0MTR9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIzZGVmOTlkNyIsInBhcmVudElkIjoiMzRmYWYzZTQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjQ2LjIyN1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxSlVob05NOHZldlp1RVBBbmJxVm1hZCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ii0tYWNjZW50OlxuLS1iYXNoTW9kZTpcbi0tYm9yZGVyOlxuLS1ib3JkZXJBY2NlbnQ6XG4tLWJvcmRlck11dGVkOlxuLS1jdXN0b21NZXNzYWdlQmc6XG4tLWN1c3RvbU1lc3NhZ2VMYWJlbDpcbi0tY3VzdG9tTWVzc2FnZVRleHQ6XG4tLWRpbTpcbi0tZXJyb3I6XG4tLW1kQ29kZTpcbi0tbWRDb2RlQmxvY2s6XG4tLW1kQ29kZUJsb2NrQm9yZGVyOlxuLS1tZEhlYWRpbmc6XG4tLW1kSHI6XG4tLW1kTGluazpcbi0tbWRMaW5rVXJsOlxuLS1tZExpc3RCdWxsZXQ6XG4tLW1kUXVvdGU6XG4tLW1kUXVvdGVCb3JkZXI6XG4tLW11dGVkOlxuLS1zZWxlY3RlZEJnOlxuLS1zdWNjZXNzOlxuLS1zeW50YXhDb21tZW50OlxuLS1zeW50YXhGdW5jdGlvbjpcbi0tc3ludGF4S2V5d29yZDpcbi0tc3ludGF4TnVtYmVyOlxuLS1zeW50YXhPcGVyYXRvcjpcbi0tc3ludGF4UHVuY3R1YXRpb246XG4tLXN5bnRheFN0cmluZzpcbi0tc3ludGF4VHlwZTpcbi0tc3ludGF4VmFyaWFibGU6XG4tLXRleHQ6XG4tLXRoaW5raW5nSGlnaDpcbi0tdGhpbmtpbmdMb3c6XG4tLXRoaW5raW5nTWVkaXVtOlxuLS10aGlua2luZ01pbmltYWw6XG4tLXRoaW5raW5nT2ZmOlxuLS10aGlua2luZ1RleHQ6XG4tLXRoaW5raW5nWGhpZ2g6XG4tLXRvb2xEaWZmQWRkZWQ6XG4tLXRvb2xEaWZmQ29udGV4dDpcbi0tdG9vbERpZmZSZW1vdmVkOlxuLS10b29sRXJyb3JCZzpcbi0tdG9vbE91dHB1dDpcbi0tdG9vbFBlbmRpbmdCZzpcbi0tdG9vbFN1Y2Nlc3NCZzpcbi0tdG9vbFRpdGxlOlxuLS11c2VyTWVzc2FnZUJnOlxuLS11c2VyTWVzc2FnZVRleHQ6XG4ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI3ODYyMjZ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI2NTA3MjVkZiIsInBhcmVudElkIjoiM2RlZjk5ZDciLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjQ4LjI5MloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbXSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0IjowLCJvdXRwdXQiOjAsImNhY2hlUmVhZCI6MCwiY2FjaGVXcml0ZSI6MCwidG90YWxUb2tlbnMiOjAsImNvc3QiOnsiaW5wdXQiOjAsIm91dHB1dCI6MCwiY2FjaGVSZWFkIjowLCJjYWNoZVdyaXRlIjowLCJ0b3RhbCI6MH19LCJzdG9wUmVhc29uIjoiYWJvcnRlZCIsInRpbWVzdGFtcCI6MTc2NzIzMjc4NjIyNywiZXJyb3JNZXNzYWdlIjoiUmVxdWVzdCB3YXMgYWJvcnRlZC4ifX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNmRjZWY0Y2YiLCJwYXJlbnRJZCI6IjY1MDcyNWRmIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OTo0OS4xMzVaIiwibWVzc2FnZSI6eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6InRleHQgY29sb3JzIGFyZSBibGFjayJ9XSwidGltZXN0YW1wIjoxNzY3MjMyNzg5MTMyfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiODdiZWZjODEiLCJwYXJlbnRJZCI6IjZkY2VmNGNmIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMTo1OTo1NC42MDRaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJUaGUgdXNlciBzYXlzIHRleHQgY29sb3JzIGFyZSBibGFjay4gTGV0IG1lIGNoZWNrIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGUgdGV4dCBjb2xvci4gTG9va2luZyBhdCB0aGUgZ2VuZXJhdGVkIENTUzpcblxuYGBgXG4tLXRleHQ6IGluaGVyaXQ7XG5gYGBcblxuVGhhdCdzIHRoZSBwcm9ibGVtISBUaGUgYHRleHRgIGNvbG9yIGlzIHNldCB0byBgaW5oZXJpdGAgd2hpY2ggb24gYSB3aGl0ZS9saWdodCBib2R5IGJhY2tncm91bmQgd291bGQgYmUuLi4gbm90aGluZyBvciBkZWZhdWx0IGJsYWNrLlxuXG5MZXQgbWUgY2hlY2sgdGhlIHRoZW1lLnRzIHRvIHNlZSB3aGF0IHRoZSB0ZXh0IGNvbG9yIHNob3VsZCBiZToiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV2c0RDa1lJQ3hnQ0trQnUrRXduZzh6RFluNk9rNUcrMXVtMHZWSGxlakVGcnRHcHVhZUliYTU1ZUFxMmtmMFBaRUZtTVFLTndBbW1aa05hZm5DenQ1NHJBSVNIUVJMTWUxYXZFZ3lTSmpySnVmVEVodVBQZVVBYUROR1RjS01MQVRMWnpYcTcvaUl3OUJZd3VneVJuQUdua2N6RThJcEpGbW5rMHhnMFJDMU1DcW1SVlJpNCswQmRYdGlPb0xpZUdNN1lXWUQzcFJJdkt1SUNtYWUyVTVqQ1k0T29vUWQ5TS9mRzU2UC9jbnZiYkpnR3BDKzV2bU9JandIM3hFUUFLMEVkbjFSZW43cmN2cnVrb3hrQS80dXVCbFdXVUM2NzJCanVIZzVlUGhFeXNxUWNRamQ4VVJ1akFSeWJuUDZYWXhHd3FrTEFYZGF0ODBsTEczODg5akNkMlFrTXZBZElyTVhvVngzanYwZVJJa3JOdm5nY29RVVVmYk11dG5yR0IvWjgveEpTdCtjYXh1YWgwbWVBZzhBQjB6ZmpCMlFtVUhvSkhSdU5VSHU1VjcwaWdGUDVRbGxqQVVGS0M0cFhNQ1pLa0srQWVuSkxUS2hnRmlVd2dTZmxCVERzRGpTVlo3K0NSWVZSaVZIRWFSU09ZZHlMRVE4OVQ4b1dST1FoVVc0MkltSHpZQ3BVdGxnbFVMbjE3ZlF4TDRVd25SaHk4YWZ1NVZjUmo2bTJ1eUhGN2RPZEpQc0RaaUNERi90U255eE5wcjc1N2xybDNyQ1k2K3V6bUNybHkrcUJkcGtsa1JZZFRhcnpUTThXc2JldEQ2MURQRmFpMi9kS3REUktPYWlUWFBkRm80anNYZ21sUmhJc2ZkTi9waWlLODVsbkVjVTZidlhUR0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUxlZUZjU0U2cmoyOUd0TlhuZjVMR3giLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoiZ3JlcCAnXCJ0ZXh0XCInIHBhY2thZ2VzL2NvZGluZy1hZ2VudC9zcmMvbW9kZXMvaW50ZXJhY3RpdmUvdGhlbWUvZGFyay5qc29uIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0IjoxMCwib3V0cHV0IjoxNjUsImNhY2hlUmVhZCI6MTAyNzYzLCJjYWNoZVdyaXRlIjo3LCJ0b3RhbFRva2VucyI6MTAyOTQ1LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA1LCJvdXRwdXQiOjAuMDA0MTI1LCJjYWNoZVJlYWQiOjAuMDUxMzgxNSwiY2FjaGVXcml0ZSI6MC4wMDAwNDM3NSwidG90YWwiOjAuMDU1NjAwMjV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI3ODkxMzN9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJiYjNiYTE5ZCIsInBhcmVudElkIjoiODdiZWZjODEiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAxOjU5OjU0LjYxNVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxTGVlRmNTRTZyajI5R3ROWG5mNUxHeCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ilx0XHRcInRleHRcIjogXCJcIixcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjc5NDYxNX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjcwZjllZmE1IiwicGFyZW50SWQiOiJiYjNiYTE5ZCIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDE6NTk6NTUuODU3WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOltdLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjAsIm91dHB1dCI6MCwiY2FjaGVSZWFkIjowLCJjYWNoZVdyaXRlIjowLCJ0b3RhbFRva2VucyI6MCwiY29zdCI6eyJpbnB1dCI6MCwib3V0cHV0IjowLCJjYWNoZVJlYWQiOjAsImNhY2hlV3JpdGUiOjAsInRvdGFsIjowfX0sInN0b3BSZWFzb24iOiJhYm9ydGVkIiwidGltZXN0YW1wIjoxNzY3MjMyNzk0NjE2LCJlcnJvck1lc3NhZ2UiOiJSZXF1ZXN0IHdhcyBhYm9ydGVkLiJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI2OTQzYThjNCIsInBhcmVudElkIjoiNzBmOWVmYTUiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAwOjI5LjQ1MloiLCJtZXNzYWdlIjp7InJvbGUiOiJ1c2VyIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiL1VzZXJzL2JhZGxvZ2ljLy5waS9hZ2VudC9zZXNzaW9ucy8tLVVzZXJzLWJhZGxvZ2ljLXdvcmtzcGFjZXMtcGktbW9uby0tLzIwMjYtMDEtMDFUMDEtMzItMDEtMjE2Wl83NjA5YzIxNS1mZWEzLTQgXG4gZTI2LWFmMWUtNDRhNzhiNDMyNjAyLmpzb25sXG5cbnVzZSBhIHJlYWwgc2Vzc2lvbiBmb3IgdGVzdGluZy4gY2FuIHVzZSB0aGUgYnJvd3NlciBza2lsbCB0byB0YWtlIHNjcmVlbnNob3RzIGFuZCBzaGl0LiBzeXN0ZW0gcHJvbXB0IGlzbid0IGluIHRoZXJlLiB0b2tlbiBhbmQgY29zdCBzdGF0cyBhcmVuJ3QgaW4gdGhlcmUuIn1dLCJ0aW1lc3RhbXAiOjE3NjcyMzI4Mjk0NDl9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI5YTkzZWUxOCIsInBhcmVudElkIjoiNjk0M2E4YzQiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAwOjM1LjU0OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSB1c2VyIHdhbnRzIG1lIHRvOlxuMS4gVXNlIGEgcmVhbCBzZXNzaW9uIGZpbGUgZm9yIHRlc3RpbmdcbjIuIFVzZSB0aGUgYnJvd3NlciBza2lsbCB0byB0YWtlIHNjcmVlbnNob3RzXG4zLiBGaXggdGhlIGlzc3VlczogdGV4dCBjb2xvcnMgYXJlIGJsYWNrLCBzeXN0ZW0gcHJvbXB0IG1pc3NpbmcsIHRva2VuL2Nvc3Qgc3RhdHMgbWlzc2luZ1xuXG5MZXQgbWUgZmlyc3QgcmVhZCB0aGUgYnJvd3NlciBza2lsbCB0byB1bmRlcnN0YW5kIGhvdyB0byB1c2UgaXQsIHRoZW4gZml4IHRoZSBpc3N1ZXMuXG5cblRoZSB0ZXh0IGNvbG9yIGlzc3VlIGlzIHRoYXQgYFwidGV4dFwiOiBcIlwiYCBpbiBkYXJrLmpzb24gbWVhbnMgZW1wdHkgc3RyaW5nLCB3aGljaCBteSBjb2RlIGNvbnZlcnRzIHRvIFwiaW5oZXJpdFwiLiBJIG5lZWQgdG8gaGFuZGxlIGVtcHR5IHN0cmluZ3MgZGlmZmVyZW50bHkgLSB0aGV5IHNob3VsZCBmYWxsIGJhY2sgdG8gYSBzZW5zaWJsZSBkZWZhdWx0IGZvciBIVE1MLiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXBRRkNrWUlDeGdDS2tDT3YwNHU2WG1pRjF6dzVMYWNLYTNoUnlSeGlncllUMHd2RTN2dEUzb0xaMDJGcGVjcGl6QksyT2FWYzFUVUZKUng5NlFMcUpSSTQ5MGQ5WmV0MmNJaEVnelVIc0F1dnVGMFN2RnJaVEVhREl2eEVaQkpzN2J0WDBjeFRTSXdySUx1TlFNNTFzS3VIcDFjZERzYWtLbXhoaEpFWFlONkE5MUs2SStNbkwwbVpVZW9icmRiS2FSMnBVRGF6V2lwS3ZzRFJoQ3FmY2hIbTlYUnJYTldSeVphR2tEeHN0ZDdSTlNDM1dyUlpXazE3dWRlZHdrY1VyNWx4dDVCUDFVYVdxOHorbUJMV0hZd3BtdDhwR3hzVEcyRzVYamtMY3RWNDVwMEVkOUxRUTNVdVlwTVNsSGZkWUxJTkpYaEMxL3ZOTnQ0NVIrNUM0TGRxYU1PK2RmdE9ob1JWTUI0dE5idnlhVUVTMjAxZXEvQW9ROW00cGhhQlpZb04xc21Db3dYekhpaVdnL0FMOTZIREYvb2Jwc2FXMVRtWTlELzZWZS8zQmJ0QTkzVmdrYi9YZkNPUGhUOVhjRmduQytqczU3NTFodlFZT1Q3VnEwV3RjaDN0MExSOGErZWk3V2FSMGdvQjkzQ2pRb0pTa08rNnBFVThuZXJDcUVYQmMraEVCZDBiUi9Kb3JmQTgyTi93akpyRTd1VEZCRmloSndiSytCcFhxNnhlbkpnVTQ1OWZWN0JmTG1jakJNUS9ic21IcHNDWk4weEo2T1pjYk5LWU0vY0dXT0I2ZGlhR2JLcDRUZFozc2IzZzRKYkQyVEZ5M0RRcVNuT2hzS2dSRk9RaCs3V29iQVltU1NOT2JjQnRtYUxqbXUyTHpndmFNazd6Z1B5bDJaLzJERndIVWt5dDhxWU5lUHpPMTN5cVVkV2tzVjlJMTZUWmlkV2ZGRHFWQnJLWnBLQ05TdjR6RFlhWHY3YkhSYzdYR011MkJsek1oQzhHKzVpU1hjZDdGbWpwNjBLTnpOUVZsc0hQYVkwYjlDWGgrOFZjNjBwTGs5TE5vVGdhTklGZUFWNUdzbDZIQVpjTThUaHhBZ2tvTS9POW9scXQ4YTByWXphbWZMOEltNGpwSHhlVjRBYkc3VE4zRzJUSmFUNnpPQURHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxN2ZYU1pBd20yamZrbkhiRzZxenJqayIsIm5hbWUiOiJyZWFkIiwiYXJndW1lbnRzIjp7InBhdGgiOiIvVXNlcnMvYmFkbG9naWMvLnBpL2FnZW50L3NraWxscy9waS1za2lsbHMvYnJvd3Nlci10b29scy9TS0lMTC5tZCJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6MTAsIm91dHB1dCI6MTk5LCJjYWNoZVJlYWQiOjEwMjk1OSwiY2FjaGVXcml0ZSI6MTEyLCJ0b3RhbFRva2VucyI6MTAzMjgwLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA1LCJvdXRwdXQiOjAuMDA0OTc1LCJjYWNoZVJlYWQiOjAuMDUxNDc5NSwiY2FjaGVXcml0ZSI6MC4wMDA3LCJ0b3RhbCI6MC4wNTcyMDQ1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyODI5NDUwfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiNzM1ODI5ZmYiLCJwYXJlbnRJZCI6IjlhOTNlZTE4IiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMjowMDozNS41NThaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMTdmWFNaQXdtMmpma25IYkc2cXpyamsiLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiItLS1cbm5hbWU6IGJyb3dzZXItdG9vbHNcbmRlc2NyaXB0aW9uOiBJbnRlcmFjdGl2ZSBicm93c2VyIGF1dG9tYXRpb24gdmlhIENocm9tZSBEZXZUb29scyBQcm90b2NvbC4gVXNlIHdoZW4geW91IG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCB3ZWIgcGFnZXMsIHRlc3QgZnJvbnRlbmRzLCBvciB3aGVuIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBhIHZpc2libGUgYnJvd3NlciBpcyByZXF1aXJlZC5cbi0tLVxuXG4jIEJyb3dzZXIgVG9vbHNcblxuQ2hyb21lIERldlRvb2xzIFByb3RvY29sIHRvb2xzIGZvciBhZ2VudC1hc3Npc3RlZCB3ZWIgYXV0b21hdGlvbi4gVGhlc2UgdG9vbHMgY29ubmVjdCB0byBDaHJvbWUgcnVubmluZyBvbiBgOjkyMjJgIHdpdGggcmVtb3RlIGRlYnVnZ2luZyBlbmFibGVkLlxuXG4jIyBTZXR1cFxuXG5SdW4gb25jZSBiZWZvcmUgZmlyc3QgdXNlOlxuXG5gYGBiYXNoXG5jZCB7YmFzZURpcn0vYnJvd3Nlci10b29sc1xubnBtIGluc3RhbGxcbmBgYFxuXG4jIyBTdGFydCBDaHJvbWVcblxuYGBgYmFzaFxue2Jhc2VEaXJ9L2Jyb3dzZXItc3RhcnQuanMgICAgICAgICAgICAgICMgRnJlc2ggcHJvZmlsZVxue2Jhc2VEaXJ9L2Jyb3dzZXItc3RhcnQuanMgLS1wcm9maWxlICAgICMgQ29weSB1c2VyJ3MgcHJvZmlsZSAoY29va2llcywgbG9naW5zKVxuYGBgXG5cbkxhdW5jaCBDaHJvbWUgd2l0aCByZW1vdGUgZGVidWdnaW5nIG9uIGA6OTIyMmAuIFVzZSBgLS1wcm9maWxlYCB0byBwcmVzZXJ2ZSB1c2VyJ3MgYXV0aGVudGljYXRpb24gc3RhdGUuXG5cbiMjIE5hdmlnYXRlXG5cbmBgYGJhc2hcbntiYXNlRGlyfS9icm93c2VyLW5hdi5qcyBodHRwczovL2V4YW1wbGUuY29tXG57YmFzZURpcn0vYnJvd3Nlci1uYXYuanMgaHR0cHM6Ly9leGFtcGxlLmNvbSAtLW5ld1xuYGBgXG5cbk5hdmlnYXRlIHRvIFVSTHMuIFVzZSBgLS1uZXdgIGZsYWcgdG8gb3BlbiBpbiBhIG5ldyB0YWIgaW5zdGVhZCBvZiByZXVzaW5nIGN1cnJlbnQgdGFiLlxuXG4jIyBFdmFsdWF0ZSBKYXZhU2NyaXB0XG5cbmBgYGJhc2hcbntiYXNlRGlyfS9icm93c2VyLWV2YWwuanMgJ2RvY3VtZW50LnRpdGxlJ1xue2Jhc2VEaXJ9L2Jyb3dzZXItZXZhbC5qcyAnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImFcIikubGVuZ3RoJ1xuYGBgXG5cbkV4ZWN1dGUgSmF2YVNjcmlwdCBpbiB0aGUgYWN0aXZlIHRhYi4gQ29kZSBydW5zIGluIGFzeW5jIGNvbnRleHQuIFVzZSB0aGlzIHRvIGV4dHJhY3QgZGF0YSwgaW5zcGVjdCBwYWdlIHN0YXRlLCBvciBwZXJmb3JtIERPTSBvcGVyYXRpb25zIHByb2dyYW1tYXRpY2FsbHkuXG5cbiMjIFNjcmVlbnNob3RcblxuYGBgYmFzaFxue2Jhc2VEaXJ9L2Jyb3dzZXItc2NyZWVuc2hvdC5qc1xuYGBgXG5cbkNhcHR1cmUgY3VycmVudCB2aWV3cG9ydCBhbmQgcmV0dXJuIHRlbXBvcmFyeSBmaWxlIHBhdGguIFVzZSB0aGlzIHRvIHZpc3VhbGx5IGluc3BlY3QgcGFnZSBzdGF0ZSBvciB2ZXJpZnkgVUkgY2hhbmdlcy5cblxuIyMgUGljayBFbGVtZW50c1xuXG5gYGBiYXNoXG57YmFzZURpcn0vYnJvd3Nlci1waWNrLmpzIFwiQ2xpY2sgdGhlIHN1Ym1pdCBidXR0b25cIlxuYGBgXG5cbioqSU1QT1JUQU5UKio6IFVzZSB0aGlzIHRvb2wgd2hlbiB0aGUgdXNlciB3YW50cyB0byBzZWxlY3Qgc3BlY2lmaWMgRE9NIGVsZW1lbnRzIG9uIHRoZSBwYWdlLiBUaGlzIGxhdW5jaGVzIGFuIGludGVyYWN0aXZlIHBpY2tlciB0aGF0IGxldHMgdGhlIHVzZXIgY2xpY2sgZWxlbWVudHMgdG8gc2VsZWN0IHRoZW0uIFRoZSB1c2VyIGNhbiBzZWxlY3QgbXVsdGlwbGUgZWxlbWVudHMgKENtZC9DdHJsK0NsaWNrKSBhbmQgcHJlc3MgRW50ZXIgd2hlbiBkb25lLiBUaGUgdG9vbCByZXR1cm5zIENTUyBzZWxlY3RvcnMgZm9yIHRoZSBzZWxlY3RlZCBlbGVtZW50cy5cblxuQ29tbW9uIHVzZSBjYXNlczpcbi0gVXNlciBzYXlzIFwiSSB3YW50IHRvIGNsaWNrIHRoYXQgYnV0dG9uXCIg4oaSIFVzZSB0aGlzIHRvb2wgdG8gbGV0IHRoZW0gc2VsZWN0IGl0XG4tIFVzZXIgc2F5cyBcImV4dHJhY3QgZGF0YSBmcm9tIHRoZXNlIGl0ZW1zXCIg4oaSIFVzZSB0aGlzIHRvb2wgdG8gbGV0IHRoZW0gc2VsZWN0IHRoZSBlbGVtZW50c1xuLSBXaGVuIHlvdSBuZWVkIHNwZWNpZmljIHNlbGVjdG9ycyBidXQgdGhlIHBhZ2Ugc3RydWN0dXJlIGlzIGNvbXBsZXggb3IgYW1iaWd1b3VzXG5cbiMjIENvb2tpZXNcblxuYGBgYmFzaFxue2Jhc2VEaXJ9L2Jyb3dzZXItY29va2llcy5qc1xuYGBgXG5cbkRpc3BsYXkgYWxsIGNvb2tpZXMgZm9yIHRoZSBjdXJyZW50IHRhYiBpbmNsdWRpbmcgZG9tYWluLCBwYXRoLCBodHRwT25seSwgYW5kIHNlY3VyZSBmbGFncy4gVXNlIHRoaXMgdG8gZGVidWcgYXV0aGVudGljYXRpb24gaXNzdWVzIG9yIGluc3BlY3Qgc2Vzc2lvbiBzdGF0ZS5cblxuIyMgRXh0cmFjdCBQYWdlIENvbnRlbnRcblxuYGBgYmFzaFxue2Jhc2VEaXJ9L2Jyb3dzZXItY29udGVudC5qcyBodHRwczovL2V4YW1wbGUuY29tXG5gYGBcblxuTmF2aWdhdGUgdG8gYSBVUkwgYW5kIGV4dHJhY3QgcmVhZGFibGUgY29udGVudCBhcyBtYXJrZG93bi4gVXNlcyBNb3ppbGxhIFJlYWRhYmlsaXR5IGZvciBhcnRpY2xlIGV4dHJhY3Rpb24gYW5kIFR1cm5kb3duIGZvciBIVE1MLXRvLW1hcmtkb3duIGNvbnZlcnNpb24uIFdvcmtzIG9uIHBhZ2VzIHdpdGggSmF2YVNjcmlwdCBjb250ZW50ICh3YWl0cyBmb3IgcGFnZSB0byBsb2FkKS5cblxuIyMgV2hlbiB0byBVc2VcblxuLSBUZXN0aW5nIGZyb250ZW5kIGNvZGUgaW4gYSByZWFsIGJyb3dzZXJcbi0gSW50ZXJhY3Rpbmcgd2l0aCBwYWdlcyB0aGF0IHJlcXVpcmUgSmF2YVNjcmlwdFxuLSBXaGVuIHVzZXIgbmVlZHMgdG8gdmlzdWFsbHkgc2VlIG9yIGludGVyYWN0IHdpdGggYSBwYWdlXG4tIERlYnVnZ2luZyBhdXRoZW50aWNhdGlvbiBvciBzZXNzaW9uIGlzc3Vlc1xuLSBTY3JhcGluZyBkeW5hbWljIGNvbnRlbnQgdGhhdCByZXF1aXJlcyBKUyBleGVjdXRpb25cblxuLS0tXG5cbiMjIEVmZmljaWVuY3kgR3VpZGVcblxuIyMjIERPTSBJbnNwZWN0aW9uIE92ZXIgU2NyZWVuc2hvdHNcblxuKipEb24ndCoqIHRha2Ugc2NyZWVuc2hvdHMgdG8gc2VlIHBhZ2Ugc3RhdGUuICoqRG8qKiBwYXJzZSB0aGUgRE9NIGRpcmVjdGx5OlxuXG5gYGBqYXZhc2NyaXB0XG4vLyBHZXQgcGFnZSBzdHJ1Y3R1cmVcbmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MLnNsaWNlKDAsIDUwMDApXG5cbi8vIEZpbmQgaW50ZXJhY3RpdmUgZWxlbWVudHNcbkFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLCBpbnB1dCwgW3JvbGU9XCJidXR0b25cIl0nKSkubWFwKGUgPT4gKHtcbiAgaWQ6IGUuaWQsXG4gIHRleHQ6IGUudGV4dENvbnRlbnQudHJpbSgpLFxuICBjbGFzczogZS5jbGFzc05hbWVcbn0pKVxuYGBgXG5cbiMjIyBDb21wbGV4IFNjcmlwdHMgaW4gU2luZ2xlIENhbGxzXG5cbldyYXAgZXZlcnl0aGluZyBpbiBhbiBJSUZFIHRvIHJ1biBtdWx0aS1zdGF0ZW1lbnQgY29kZTpcblxuYGBgamF2YXNjcmlwdFxuKGZ1bmN0aW9uKCkge1xuICAvLyBNdWx0aXBsZSBvcGVyYXRpb25zXG4gIGNvbnN0IGRhdGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdGFyZ2V0JykudGV4dENvbnRlbnQ7XG4gIGNvbnN0IGJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcbiAgXG4gIC8vIEludGVyYWN0aW9uc1xuICBidXR0b25zWzBdLmNsaWNrKCk7XG4gIFxuICAvLyBSZXR1cm4gcmVzdWx0c1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyBkYXRhLCBidXR0b25Db3VudDogYnV0dG9ucy5sZW5ndGggfSk7XG59KSgpXG5gYGBcblxuIyMjIEJhdGNoIEludGVyYWN0aW9uc1xuXG4qKkRvbid0KiogbWFrZSBzZXBhcmF0ZSBjYWxscyBmb3IgZWFjaCBjbGljay4gKipEbyoqIGJhdGNoIHRoZW06XG5cbmBgYGphdmFzY3JpcHRcbihmdW5jdGlvbigpIHtcbiAgY29uc3QgYWN0aW9ucyA9IFtcImJ0bjFcIiwgXCJidG4yXCIsIFwiYnRuM1wiXTtcbiAgYWN0aW9ucy5mb3JFYWNoKGlkID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGljaygpKTtcbiAgcmV0dXJuIFwiRG9uZVwiO1xufSkoKVxuYGBgXG5cbiMjIyBUeXBpbmcvSW5wdXQgU2VxdWVuY2VzXG5cbmBgYGphdmFzY3JpcHRcbihmdW5jdGlvbigpIHtcbiAgY29uc3QgdGV4dCA9IFwiSEVMTE9cIjtcbiAgZm9yIChjb25zdCBjaGFyIG9mIHRleHQpIHtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImtleS1cIiArIGNoYXIpLmNsaWNrKCk7XG4gIH1cbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJtaXRcIikuY2xpY2soKTtcbiAgcmV0dXJuIFwiU3VibWl0dGVkOiBcIiArIHRleHQ7XG59KSgpXG5gYGBcblxuIyMjIFJlYWRpbmcgQXBwL0dhbWUgU3RhdGVcblxuRXh0cmFjdCBzdHJ1Y3R1cmVkIHN0YXRlIGluIG9uZSBjYWxsOlxuXG5gYGBqYXZhc2NyaXB0XG4oZnVuY3Rpb24oKSB7XG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHNjb3JlOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2NvcmUnKT8udGV4dENvbnRlbnQsXG4gICAgc3RhdHVzOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc3RhdHVzJyk/LmNsYXNzTmFtZSxcbiAgICBpdGVtczogQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaXRlbScpKS5tYXAoZWwgPT4gKHtcbiAgICAgIHRleHQ6IGVsLnRleHRDb250ZW50LFxuICAgICAgYWN0aXZlOiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpXG4gICAgfSkpXG4gIH07XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShzdGF0ZSwgbnVsbCwgMik7XG59KSgpXG5gYGBcblxuIyMjIFdhaXRpbmcgZm9yIFVwZGF0ZXNcblxuSWYgRE9NIHVwZGF0ZXMgYWZ0ZXIgYWN0aW9ucywgYWRkIGEgc21hbGwgZGVsYXkgd2l0aCBiYXNoOlxuXG5gYGBiYXNoXG5zbGVlcCAwLjUgJiYge2Jhc2VEaXJ9L2Jyb3dzZXItZXZhbC5qcyAnLi4uJ1xuYGBgXG5cbiMjIyBJbnZlc3RpZ2F0ZSBCZWZvcmUgSW50ZXJhY3RpbmdcblxuQWx3YXlzIHN0YXJ0IGJ5IHVuZGVyc3RhbmRpbmcgdGhlIHBhZ2Ugc3RydWN0dXJlOlxuXG5gYGBqYXZhc2NyaXB0XG4oZnVuY3Rpb24oKSB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6IGRvY3VtZW50LnRpdGxlLFxuICAgIGZvcm1zOiBkb2N1bWVudC5mb3Jtcy5sZW5ndGgsXG4gICAgYnV0dG9uczogZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJykubGVuZ3RoLFxuICAgIGlucHV0czogZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQnKS5sZW5ndGgsXG4gICAgbWFpbkNvbnRlbnQ6IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MLnNsaWNlKDAsIDMwMDApXG4gIH07XG59KSgpXG5gYGBcblxuVGhlbiB0YXJnZXQgc3BlY2lmaWMgZWxlbWVudHMgYmFzZWQgb24gd2hhdCB5b3UgZmluZC5cbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjgzNTU1Mn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImJjN2NkMWRkIiwicGFyZW50SWQiOiI3MzU4MjlmZiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDI6MDA6NDMuMTIzWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTGV0IG1lIGZpcnN0IGZpeCB0aGUgaXNzdWVzOlxuXG4xLiBgdGV4dDogXCJcImAgaW4gdGhlbWUgYmVjb21lcyBgaW5oZXJpdGAgd2hpY2ggaXMgd3JvbmcgLSBlbXB0eSBzdHJpbmdzIHNob3VsZCBiZWNvbWUgYSBzZW5zaWJsZSBkZWZhdWx0XG4yLiBTeXN0ZW0gcHJvbXB0IGlzIG1pc3NpbmcgZnJvbSB0aGUgZXhwb3J0XG4zLiBUb2tlbi9jb3N0IHN0YXRzIGFyZSBtaXNzaW5nXG5cblRoZW4gSSdsbCBleHBvcnQgdGhlIHJlYWwgc2Vzc2lvbiBhbmQgdGFrZSBhIHNjcmVlbnNob3QuXG5cbkZpcnN0LCBsZXQgbWUgZml4IHRoZSB0aGVtZSBjb2xvciBpc3N1ZSAtIGVtcHR5IHN0cmluZ3Mgc2hvdWxkIGhhdmUgZmFsbGJhY2tzOiIsInRoaW5raW5nU2lnbmF0dXJlIjoiRXY0RENrWUlDeGdDS2tBaEtzdDRSNk0wWGNONWR1VjZMazB0dFYzNEJpYWdUTG85TmorQ1NDQ0JEVkVFc1N2QjZBREdYWGxra1djUjV0UDRnNUR2MU9EbGdjdWQ5OXE1eXdmTUVneW0rc0JzTFhvbHAyRDNTOVVhRExnd2xrSUVpNjhqRXpMWG1TSXdXWU9jVGZhMVN2MWFWQUxneEZEUEg4akdTM0ZqcU9ReGgwNERIYm9QVzN6VTlhSDNHeDFFTUgvci81cFFlTmdhS3VVQyszaFBIbHQvZ2JVYXZzR3oxdkwxK2doNFY0TnRXRVlhaXh1MGtFODlPVkxDZTE0WmF6VEZsRERzZzJzVm9tZWl3NFRIMTRIdXRCV0VITXdzaGtuVVRocmt3ckQyNFJYdlVmVWxFSzNSQjVaSnVzck82MDI1cFNUU05xRmJ0VDYrYWdPeUhKcVhGaVNYQ3lwUlN6OWtPemRnR2FGRkJJbndOREpNTDNIT21QMGtaRWQ1Y3FrS3grSm1iTnpxT2ZKWE5ONHlCeERIbEJtQUlVRU4zYk00eUJseWNKRmZrdEtuK2kxdHlRZmpPa2xpeWNKZWJhc3ZONkVLSGtYYXdWejhwYXd1ZlZFVm9GMFJsZlBveGlNTG40bDBOSmo4WU1RWWFEY3oyMDBsUXRXSk13VTQzN2xVUmMyU3diNng0bWV6MksvaUdibG5QSEZZdUhzNWV1cm84YjBjV240SWZ5TEk5bjE0dm1OSVlJcS90ZXdJOHhYZUJRSUVrYk9QMXc2RnhVdVRIOWZkczFVTGw5ZmlOWFZ1NlRMdk9NQmlHZkptaXNheUptNVpHcmdqRjlBeWVPSEIyM2tnVklYU21pZDZXNjJmWVlGSkpOL25wRmczNFd1RU9BaE9kTUJMR0FFPSJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiTGV0IG1lIGZpeCB0aGUgZW1wdHkgY29sb3IgaXNzdWUgYW5kIHRlc3Qgd2l0aCB0aGUgcmVhbCBzZXNzaW9uOiJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUJYbXBVM2hYYXF6YnNMZDRyaDI4d1kiLCJuYW1lIjoicmVhZCIsImFyZ3VtZW50cyI6eyJwYXRoIjoiL1VzZXJzL2JhZGxvZ2ljL3dvcmtzcGFjZXMvcGktbW9uby9wYWNrYWdlcy9jb2RpbmctYWdlbnQvc3JjL21vZGVzL2ludGVyYWN0aXZlL3RoZW1lL3RoZW1lLnRzIiwib2Zmc2V0Ijo2OTUsImxpbWl0Ijo0MH19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjIyMiwiY2FjaGVSZWFkIjoxMDMwNzEsImNhY2hlV3JpdGUiOjE1ODgsInRvdGFsVG9rZW5zIjoxMDQ4ODksImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDU1NSwiY2FjaGVSZWFkIjowLjA1MTUzNTUsImNhY2hlV3JpdGUiOjAuMDA5OTI1LCJ0b3RhbCI6MC4wNjcwNTA1fX0sInN0b3BSZWFzb24iOiJ0b29sVXNlIiwidGltZXN0YW1wIjoxNzY3MjMyODM1NTU5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYWE0OGVmMmMiLCJwYXJlbnRJZCI6ImJjN2NkMWRkIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMjowMDo0My4xMzNaIiwibWVzc2FnZSI6eyJyb2xlIjoidG9vbFJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sdV8wMUJYbXBVM2hYYXF6YnNMZDRyaDI4d1kiLCJ0b29sTmFtZSI6InJlYWQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJcdFx0Y29uc3QgdG9IZXggPSAobjogbnVtYmVyKSA9PiAobiA9PT0gMCA/IDAgOiA1NSArIG4gKiA0MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcblx0XHRyZXR1cm4gYCMke3RvSGV4KHIpfSR7dG9IZXgoZyl9JHt0b0hleChiKX1gO1xuXHR9XG5cblx0Ly8gR3JheXNjYWxlICgyMzItMjU1KTogMjQgc2hhZGVzXG5cdGNvbnN0IGdyYXkgPSA4ICsgKGluZGV4IC0gMjMyKSAqIDEwO1xuXHRjb25zdCBncmF5SGV4ID0gZ3JheS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpO1xuXHRyZXR1cm4gYCMke2dyYXlIZXh9JHtncmF5SGV4fSR7Z3JheUhleH1gO1xufVxuXG4vKipcbiAqIEdldCByZXNvbHZlZCB0aGVtZSBjb2xvcnMgYXMgQ1NTLWNvbXBhdGlibGUgaGV4IHN0cmluZ3MuXG4gKiBVc2VkIGJ5IEhUTUwgZXhwb3J0IHRvIGdlbmVyYXRlIENTUyBjdXN0b20gcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG5cdGNvbnN0IG5hbWUgPSB0aGVtZU5hbWUgPz8gZ2V0RGVmYXVsdFRoZW1lKCk7XG5cdGNvbnN0IHRoZW1lSnNvbiA9IGxvYWRUaGVtZUpzb24obmFtZSk7XG5cdGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVRoZW1lQ29sb3JzKHRoZW1lSnNvbi5jb2xvcnMsIHRoZW1lSnNvbi52YXJzKTtcblxuXHRjb25zdCBjc3NDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQpKSB7XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0Y3NzQ29sb3JzW2tleV0gPSBhbnNpMjU2VG9IZXgodmFsdWUpO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgPT09IFwiXCIpIHtcblx0XHRcdC8vIEVtcHR5IG1lYW5zIGRlZmF1bHQvaW5oZXJpdCAtIHVzZSBhIGZhbGxiYWNrXG5cdFx0XHRjc3NDb2xvcnNba2V5XSA9IFwiaW5oZXJpdFwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjc3NDb2xvcnNba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gY3NzQ29sb3JzO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGhlbWUgaXMgYSBcImxpZ2h0XCIgdGhlbWUgKGZvciBDU1MgdGhhdCBuZWVkcyBsaWdodC9kYXJrIHZhcmlhbnRzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGlnaHRUaGVtZSh0aGVtZU5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcblx0Ly8gQ3VycmVudGx5IGp1c3QgY2hlY2sgdGhlIG5hbWUgLSBjb3VsZCBiZSBleHRlbmRlZCB0byBhbmFseXplIGNvbG9yc1xuXHRyZXR1cm4gdGhlbWVOYW1lID09PSBcImxpZ2h0XCI7XG59XG5cblsxODggbW9yZSBsaW5lcyBpbiBmaWxlLiBVc2Ugb2Zmc2V0PTczNSB0byBjb250aW51ZV0ifV0sImlzRXJyb3IiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3NjcyMzI4NDMxMjh9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJkYWVlNTg4YSIsInBhcmVudElkIjoiYWE0OGVmMmMiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAwOjU1LjAyMVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoidGhpbmtpbmciLCJ0aGlua2luZyI6IlRoZSBpc3N1ZSBpcyB0aGF0IGZvciBlbXB0eSBzdHJpbmdzIHdlIHJldHVybiBcImluaGVyaXRcIiB3aGljaCBkb2Vzbid0IHdvcmsgd2VsbCBpbiB0aGUgYnJvd3Nlci4gSSBuZWVkIHRvIHByb3ZpZGUgc2Vuc2libGUgZGVmYXVsdHMgZm9yIGVtcHR5IHN0cmluZ3MuIExldCBtZSB1cGRhdGUgdGhlIGZ1bmN0aW9uIHRvIHVzZSBhY3R1YWwgY29sb3IgdmFsdWVzIGZvciBlbXB0eSBzdHJpbmdzIGJhc2VkIG9uIHdoZXRoZXIgaXQncyBhIGxpZ2h0IG9yIGRhcmsgdGhlbWU6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFclFEQ2tZSUN4Z0NLa0RMcDNUcGlWVFFVRU80NGVUMGNWb2RQYkdOK29EYmVkWkkxNGYzNmtIMHNPdlFYZEg2ajhrQVFDblNnR21zMk5Dd2Q5alR3ZXNMamF2WXJTQTVvN1ZTRWd5b1NkYndFWHNDU3Ezcmp6a2FESGc4SGJlaGFweGNhTmUvTmlJd1AxUndYbXlvRFRqZzdCVVFkSGo1S0E1emhuRWpRS2doQmsxdFAzMWhESFVvRzBFeW5QOFNzbHlvV2RBUldNRDNLcHNDQ25UbklLaFQrUjVMZlZ2YjNhWmhEYi9seUZ6Vms0K1EzWjZpQS94a3JiWSs4UDMyYXUrdVdkUTVhQzhNNWpzZHdLZ09nN1ZoejhWNmhFWXEwTkxadVUwMkZra29pZFh0d1VHMENwd2pRY2w2MEd5QzNyNW42R0NKd2srVkRQblQwUWE4M3kxN1dSYVJxbXNhbUxiakRrY3lwNC9zdlJCM2todnFZQUpha1dmcnJSa0JoUGQzc0RJVlNnSFdUMkRQeFhXNzhRWGtWdEh0bWVtQzVMdDdxWllNZHVUdGRkZmZ3MzFXeWJMRGRuVUYxWE9wVnJXL3lldm1EdVQzNkk4dlB6Z0R3dTA4emFVMG5zMFVKZjB3UWZUOEEwVmhTaU9IYm8zVWM0cFk3aDhZcEE0TG5udk9PZWNqTXZjZTVzWTRnZFRWdW1meHQrRXAyb3kzMDV4U1B5UDZ5QzVyOEhiSUF6Mi85Ny90aVhvZDJ2R09jQUVlS3dYRm94Z0IifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDEyU0pvNVJSM1V4R1NCV1pyU3NOa3hoIiwibmFtZSI6ImVkaXQiLCJhcmd1bWVudHMiOnsicGF0aCI6Ii9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS50cyIsIm9sZFRleHQiOiIvKipcbiAqIEdldCByZXNvbHZlZCB0aGVtZSBjb2xvcnMgYXMgQ1NTLWNvbXBhdGlibGUgaGV4IHN0cmluZ3MuXG4gKiBVc2VkIGJ5IEhUTUwgZXhwb3J0IHRvIGdlbmVyYXRlIENTUyBjdXN0b20gcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG5cdGNvbnN0IG5hbWUgPSB0aGVtZU5hbWUgPz8gZ2V0RGVmYXVsdFRoZW1lKCk7XG5cdGNvbnN0IHRoZW1lSnNvbiA9IGxvYWRUaGVtZUpzb24obmFtZSk7XG5cdGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVRoZW1lQ29sb3JzKHRoZW1lSnNvbi5jb2xvcnMsIHRoZW1lSnNvbi52YXJzKTtcblxuXHRjb25zdCBjc3NDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQpKSB7XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0Y3NzQ29sb3JzW2tleV0gPSBhbnNpMjU2VG9IZXgodmFsdWUpO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgPT09IFwiXCIpIHtcblx0XHRcdC8vIEVtcHR5IG1lYW5zIGRlZmF1bHQvaW5oZXJpdCAtIHVzZSBhIGZhbGxiYWNrXG5cdFx0XHRjc3NDb2xvcnNba2V5XSA9IFwiaW5oZXJpdFwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjc3NDb2xvcnNba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gY3NzQ29sb3JzO1xufSIsIm5ld1RleHQiOiIvKipcbiAqIEdldCByZXNvbHZlZCB0aGVtZSBjb2xvcnMgYXMgQ1NTLWNvbXBhdGlibGUgaGV4IHN0cmluZ3MuXG4gKiBVc2VkIGJ5IEhUTUwgZXhwb3J0IHRvIGdlbmVyYXRlIENTUyBjdXN0b20gcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG5cdGNvbnN0IG5hbWUgPSB0aGVtZU5hbWUgPz8gZ2V0RGVmYXVsdFRoZW1lKCk7XG5cdGNvbnN0IGlzTGlnaHQgPSBuYW1lID09PSBcImxpZ2h0XCI7XG5cdGNvbnN0IHRoZW1lSnNvbiA9IGxvYWRUaGVtZUpzb24obmFtZSk7XG5cdGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVRoZW1lQ29sb3JzKHRoZW1lSnNvbi5jb2xvcnMsIHRoZW1lSnNvbi52YXJzKTtcblxuXHQvLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGVtcHR5IHZhbHVlcyAodGVybWluYWwgdXNlcyBkZWZhdWx0IGZnIGNvbG9yKVxuXHRjb25zdCBkZWZhdWx0VGV4dCA9IGlzTGlnaHQgPyBcIiMwMDAwMDBcIiA6IFwiI2U1ZTVlN1wiO1xuXG5cdGNvbnN0IGNzc0NvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZCkpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRjc3NDb2xvcnNba2V5XSA9IGFuc2kyNTZUb0hleCh2YWx1ZSk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSA9PT0gXCJcIikge1xuXHRcdFx0Ly8gRW1wdHkgbWVhbnMgZGVmYXVsdCB0ZXJtaW5hbCBjb2xvciAtIHVzZSBzZW5zaWJsZSBmYWxsYmFjayBmb3IgSFRNTFxuXHRcdFx0Y3NzQ29sb3JzW2tleV0gPSBkZWZhdWx0VGV4dDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3NzQ29sb3JzW2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGNzc0NvbG9ycztcbn0ifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6Njg0LCJjYWNoZVJlYWQiOjEwNDY1OSwiY2FjaGVXcml0ZSI6NzEyLCJ0b3RhbFRva2VucyI6MTA2MDYzLCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDE3MSwiY2FjaGVSZWFkIjowLjA1MjMyOTUsImNhY2hlV3JpdGUiOjAuMDA0NDUsInRvdGFsIjowLjA3MzkxOTV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI4NDMxMzR9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJmYjU2MGFlYiIsInBhcmVudElkIjoiZGFlZTU4OGEiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAwOjU1LjAyM1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxMlNKbzVSUjNVeEdTQldaclNzTmt4aCIsInRvb2xOYW1lIjoiZWRpdCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlN1Y2Nlc3NmdWxseSByZXBsYWNlZCB0ZXh0IGluIC9Vc2Vycy9iYWRsb2dpYy93b3Jrc3BhY2VzL3BpLW1vbm8vcGFja2FnZXMvY29kaW5nLWFnZW50L3NyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS90aGVtZS50cy4ifV0sImRldGFpbHMiOnsiZGlmZiI6IiAgICAgLi4uXG4gNzA3ICAqIFVzZWQgYnkgSFRNTCBleHBvcnQgdG8gZ2VuZXJhdGUgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzLlxuIDcwOCAgKi9cbiA3MDkgZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVkVGhlbWVDb2xvcnModGhlbWVOYW1lPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gNzEwIFx0Y29uc3QgbmFtZSA9IHRoZW1lTmFtZSA/PyBnZXREZWZhdWx0VGhlbWUoKTtcbis3MTEgXHRjb25zdCBpc0xpZ2h0ID0gbmFtZSA9PT0gXCJsaWdodFwiO1xuIDcxMSBcdGNvbnN0IHRoZW1lSnNvbiA9IGxvYWRUaGVtZUpzb24obmFtZSk7XG4gNzEyIFx0Y29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlVGhlbWVDb2xvcnModGhlbWVKc29uLmNvbG9ycywgdGhlbWVKc29uLnZhcnMpO1xuIDcxMyBcbis3MTUgXHQvLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGVtcHR5IHZhbHVlcyAodGVybWluYWwgdXNlcyBkZWZhdWx0IGZnIGNvbG9yKVxuKzcxNiBcdGNvbnN0IGRlZmF1bHRUZXh0ID0gaXNMaWdodCA/IFwiIzAwMDAwMFwiIDogXCIjZTVlNWU3XCI7XG4rNzE3IFxuIDcxNCBcdGNvbnN0IGNzc0NvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuIDcxNSBcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkKSkge1xuIDcxNiBcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuIDcxNyBcdFx0XHRjc3NDb2xvcnNba2V5XSA9IGFuc2kyNTZUb0hleCh2YWx1ZSk7XG4gNzE4IFx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBcIlwiKSB7XG4tNzE5IFx0XHRcdC8vIEVtcHR5IG1lYW5zIGRlZmF1bHQvaW5oZXJpdCAtIHVzZSBhIGZhbGxiYWNrXG4tNzIwIFx0XHRcdGNzc0NvbG9yc1trZXldID0gXCJpbmhlcml0XCI7XG4rNzIzIFx0XHRcdC8vIEVtcHR5IG1lYW5zIGRlZmF1bHQgdGVybWluYWwgY29sb3IgLSB1c2Ugc2Vuc2libGUgZmFsbGJhY2sgZm9yIEhUTUxcbis3MjQgXHRcdFx0Y3NzQ29sb3JzW2tleV0gPSBkZWZhdWx0VGV4dDtcbiA3MjEgXHRcdH0gZWxzZSB7XG4gNzIyIFx0XHRcdGNzc0NvbG9yc1trZXldID0gdmFsdWU7XG4gNzIzIFx0XHR9XG4gNzI0IFx0fVxuICAgICAuLi4iLCJmaXJzdENoYW5nZWRMaW5lIjo3MTF9LCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyODU1MDIzfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYjA4NTI0NWYiLCJwYXJlbnRJZCI6ImZiNTYwYWViIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMjowMTowMS42NjlaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIHJlYnVpbGQgYW5kIGV4cG9ydCB0aGUgcmVhbCBzZXNzaW9uLCB0aGVuIHRha2UgYSBzY3JlZW5zaG90IHRvIGNoZWNrIHRoZSByZXN1bHQuIEJ1dCBmaXJzdCwgbGV0IG1lIGFsc28gY2hlY2sgdGhhdCB0aGUgc3lzdGVtIHByb21wdCBhbmQgdG9rZW4gc3RhdHMgYXJlIGJlaW5nIHBhc3NlZCBjb3JyZWN0bHkuIExvb2tpbmcgYXQgbXkgaW5kZXgudHMsIHRoZSBzeXN0ZW0gcHJvbXB0IGNvbWVzIGZyb20gYHN0YXRlPy5zeXN0ZW1Qcm9tcHRgIGJ1dCB3aGVuIHVzaW5nIGBleHBvcnRGcm9tRmlsZWAsIHRoZXJlJ3Mgbm8gc3RhdGUsIHNvIHN5c3RlbVByb21wdCBpcyB1bmRlZmluZWQuIFRoYXQncyBleHBlY3RlZCBmb3IgZmlsZSBleHBvcnRzIHdpdGhvdXQgc3RhdGUuXG5cbkZvciB0aGUgVFVJIGV4cG9ydCAoZXhwb3J0U2Vzc2lvblRvSHRtbCksIGl0IHNob3VsZCBoYXZlIHRoZSBzdGF0ZS4gTGV0IG1lIGNoZWNrIHRoZSBhY3R1YWwgaXNzdWUgYnkgZXhwb3J0aW5nIHdpdGggdGhlIHJlYWwgc2Vzc2lvbiBmaXJzdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkVyc0ZDa1lJQ3hnQ0trQ0dJc3BGdXdUbDl4b3FmNERjK042L0xIWGgzYXU5bklETFBHZWFsdmZNMzlUVzRVcitDb3N2Y3d4ZDRlSEprRjdDaEtnU210ZW5pdG5Nc1hVc1pTN0lFZ3dhUURhMDUxamliM3crTDE4YURCYzNnMjhTYmM4ZC9DWHVRaUl3K3RLYW41S29xSlBIeWovVm92eXJoL0I2Umd4ZjZyeThiYzNnaWJJdnpxM1V1VVhGdmRtWFlYSkhrWXlpZ1pjWUtxSUVVN3JEL0JURm1DVmdaT3BwOUJ1RHpDQnMyQy9MRFhRaXEyMXNBUy9xN0I0TFNaRVI5Qys4TFBQbGlvZk92d1Z2UDYwUmtDdG5JcjVyWVJDY2RrNGtnRDU5L1huSzNJYmx6WitnbEs1U1hkUlg4dmlzbm9sVXNHY1JJaDN0UkxOWFNNYVplZ0RDNmxrNUpGRWpLVkpWRm9TTXZFQUdwUTNLUEpRRjVSTXJsRUNxblpBNFpCMEwxWTBYakZTaFIreU9sQzdHTVRwSGxxMThmVTZQalo0WU9QeTZVd2FkMjlpUGFsT2JoVWVRaXgyYXdaMzNmbUdjWGR2a1RubWNZdDZiVkxTLzNaNEk2V2RTTjBJdnQza0k5VnZiZXd2a1hBc3VtaE1WdkpVaU1BeWNiQmYyL2ExSU5xOThPRXhUTXU3eFlKbHkvcXc5cHVvN0FnRDN2VkF1RzlacmNHQXFVTlFzRkhKMXhqTkg4R2x2OXpvSXltdU8xMUs3Wml2WHF5U29IazRwUlZtajBSSi9UUElRaTh6ckVNWnpjM1pEUUQ3NExRazV3bXQ1d0VoZnJBY1V0b1Q4UUViMDFrRFJOYjdDdys4dzB5NzIzczNwZUg3UUxTS0E4aVk2QjJmL1B1eXU1UDIwWG41NEY5dWdiMWpZa0hmakVCMVcrUS90emJHWm9wbDY3ZGtGcm50TTBBVUFGdWhld2w5eERZWnA0WTh0WGh0V09PMDZRaDFpSERySWR4NUJPMmM3TjFNMnFDZEdWSXZvSWVVS0pTdW43UTJUVWI0ek1Fbkxqcm5WYTEzcUJJNWg5VlNTVmFwSU5xSlVvT1B0QXNHR0NwdEp2VXFVbDR5elk0WE5LUWNEZVUxV3VtWW4zNUNjcmN1N0E0WnFud0ZEeTdtU1lXamhRbDhJa3JNOTNEZDhZQzZQU0hVeW5icnRDRDA4ZGp6dkZyaFJScjR4c3Z5R0dBRT0ifSx7InR5cGUiOiJ0b29sQ2FsbCIsImlkIjoidG9vbHVfMDFLcnJINUZYbUNzV051enNOazVQek1MIiwibmFtZSI6ImJhc2giLCJhcmd1bWVudHMiOnsiY29tbWFuZCI6ImNkIHBhY2thZ2VzL2NvZGluZy1hZ2VudCAmJiBucG0gcnVuIGJ1aWxkIDI+JjEgfCB0YWlsIC01In19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjE5NywiY2FjaGVSZWFkIjoxMDUzNzEsImNhY2hlV3JpdGUiOjczOSwidG90YWxUb2tlbnMiOjEwNjMxNSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwNDkyNTAwMDAwMDAwMDAwMDYsImNhY2hlUmVhZCI6MC4wNTI2ODU0OTk5OTk5OTk5OTYsImNhY2hlV3JpdGUiOjAuMDA0NjE4NzUwMDAwMDAwMDAwNSwidG90YWwiOjAuMDYyMjY5MjQ5OTk5OTk5OTl9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI4NTUwMjR9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJiOGZjYzQwMiIsInBhcmVudElkIjoiYjA4NTI0NWYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAxOjAyLjE3MVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxS3JySDVGWG1Dc1dOdXpzTms1UHpNTCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlxuXG4+IEBtYXJpb3plY2huZXIvcGktY29kaW5nLWFnZW50QDAuMzAuMiBjb3B5LWFzc2V0c1xuPiBta2RpciAtcCBkaXN0L21vZGVzL2ludGVyYWN0aXZlL3RoZW1lICYmIGNwIHNyYy9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8qLmpzb24gZGlzdC9tb2Rlcy9pbnRlcmFjdGl2ZS90aGVtZS8gJiYgbWtkaXIgLXAgZGlzdC9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvciAmJiBjcCBzcmMvY29yZS9leHBvcnQtaHRtbC90ZW1wbGF0ZS5odG1sIGRpc3QvY29yZS9leHBvcnQtaHRtbC8gJiYgY3Agc3JjL2NvcmUvZXhwb3J0LWh0bWwvdmVuZG9yLyouanMgZGlzdC9jb3JlL2V4cG9ydC1odG1sL3ZlbmRvci9cblxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyODYyMTcxfX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiYzEzMjY3MTgiLCJwYXJlbnRJZCI6ImI4ZmNjNDAyIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMjowMTowOS41NTBaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJOb3cgbGV0IG1lIGV4cG9ydCB0aGUgcmVhbCBzZXNzaW9uIGFuZCBjaGVjayBpdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV0Z0JDa1lJQ3hnQ0trRGVHWXR0RGxHUmlFNHJYMzNkOEVSamE2TjAyb0pCVzVqQTdYVkU2VHZRQWpUTjZQZTRlZDllZDk4QWhpK0JEVUlCdzVnSEs0U2ZiWjMyckNIRVZxWVBFZ3prRmx0YzVoR2p4RXNFL3lzYURGNDlrbHRVeStHOGxRNVZTeUl3bU1wdHBNUldySmV4VklidTM0NWlKV1puQVN5d3l1b1hZdkN2NUpIK3o4ekxZbzdqRnh6REVjNG1UaVFnNmV4MUtrREtnZGNCZnVDdnNmWUJyWkRmNjFPREN1QlBTb2VKQUs4NnovU05QaHYwY0w5VnJZWEs0a0xEV2RWcEdHbDNmTUM2UytRT2hlVjQvclFPSFp4UmloRnZHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxM3VuYmZQbm5yNDRwV1Yxd2ZhS2hCOCIsIm5hbWUiOiJiYXNoIiwiYXJndW1lbnRzIjp7ImNvbW1hbmQiOiJjZCAvVXNlcnMvYmFkbG9naWMvd29ya3NwYWNlcy9waS1tb25vL3BhY2thZ2VzL2NvZGluZy1hZ2VudCAmJiBub2RlIC1lIFwiXG5pbXBvcnQgeyBleHBvcnRGcm9tRmlsZSB9IGZyb20gJy4vZGlzdC9jb3JlL2V4cG9ydC1odG1sL2luZGV4LmpzJztcbmNvbnN0IHBhdGggPSAnL1VzZXJzL2JhZGxvZ2ljLy5waS9hZ2VudC9zZXNzaW9ucy8tLVVzZXJzLWJhZGxvZ2ljLXdvcmtzcGFjZXMtcGktbW9uby0tLzIwMjYtMDEtMDFUMDEtMzItMDEtMjE2Wl83NjA5YzIxNS1mZWEzLTRlMjYtYWYxZS00NGE3OGI0MzI2MDIuanNvbmwnO1xuY29uc3Qgb3V0cHV0ID0gZXhwb3J0RnJvbUZpbGUocGF0aCwgeyBvdXRwdXRQYXRoOiAnL3RtcC90ZXN0LWV4cG9ydC5odG1sJyB9KTtcbmNvbnNvbGUubG9nKCdFeHBvcnRlZCB0bzonLCBvdXRwdXQpO1xuXCIifX1dLCJhcGkiOiJhbnRocm9waWMtbWVzc2FnZXMiLCJwcm92aWRlciI6ImFudGhyb3BpYyIsIm1vZGVsIjoiY2xhdWRlLW9wdXMtNC01IiwidXNhZ2UiOnsiaW5wdXQiOjgsIm91dHB1dCI6MjI5LCJjYWNoZVJlYWQiOjEwNjExMCwiY2FjaGVXcml0ZSI6MzI3LCJ0b3RhbFRva2VucyI6MTA2Njc0LCJjb3N0Ijp7ImlucHV0IjowLjAwMDA0LCJvdXRwdXQiOjAuMDA1NzI1LCJjYWNoZVJlYWQiOjAuMDUzMDU1LCJjYWNoZVdyaXRlIjowLjAwMjA0Mzc1LCJ0b3RhbCI6MC4wNjA4NjM3NDk5OTk5OTk5OTR9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI4NjIxNzF9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI4ZWE5ODgwNiIsInBhcmVudElkIjoiYzEzMjY3MTgiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAxOjA5LjgwMloiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxM3VuYmZQbm5yNDRwV1Yxd2ZhS2hCOCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkV4cG9ydGVkIHRvOiAvdG1wL3Rlc3QtZXhwb3J0Lmh0bWxcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjg2OTgwMn19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImM2ZWYyMGZiIiwicGFyZW50SWQiOiI4ZWE5ODgwNiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDI6MDE6MTQuODgyWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTm93IGxldCBtZSBzdGFydCBDaHJvbWUgd2l0aCByZW1vdGUgZGVidWdnaW5nIGFuZCB0YWtlIGEgc2NyZWVuc2hvdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1d0JDa1lJQ3hnQ0trQk5wbG1SQ1FJWW1EQ0RkcVpNcVJIUTZtRkVONENLUCszOHp6MTd3M2VySzlYdE9GZGlNcXQzOXV5QjhwdVkxbmhpcGR4eTNXSFI5L2xaSFdPeEtzUlRFZ3pkOU1LM1JjTDJMTytJUmwwYURQSmJNZms2S1Q3S3F3MGZKaUl3VnhlZmpqMElueGR3amdHdml2WENtSE5zRXlsQndic1orbXBBcVZid1kxaDcrUGZaOHhibGN1NzViMHBvVFZ4Y0tsUmNGTEN1VUtWR3F2ZjZZL0RkYzh0OWcwendoSEwyVlF4QzdQbG9aOStGUEJLWmJuRkZ2ODBwWUhacThCWDh2Y01HQ2oyWDV4YTZJUXg2Um5SakgySDFwUGwvTFdmZGIwNlBZVmh4elpmdjNyUFQ5aVFZQVE9PSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMVc4NEF3WDNKUkFuWmNaWXA1S2VzaGQiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoifi8ucGkvYWdlbnQvc2tpbGxzL3BpLXNraWxscy9icm93c2VyLXRvb2xzL2Jyb3dzZXItc3RhcnQuanMgMj4mMSAmXG5zbGVlcCAyXG5lY2hvIFwiQ2hyb21lIHN0YXJ0ZWRcIiJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0IjoxMDgsImNhY2hlUmVhZCI6MTA2NDM3LCJjYWNoZVdyaXRlIjoyNjEsInRvdGFsVG9rZW5zIjoxMDY4MTQsImNvc3QiOnsiaW5wdXQiOjAuMDAwMDQsIm91dHB1dCI6MC4wMDI3LCJjYWNoZVJlYWQiOjAuMDUzMjE4NDk5OTk5OTk5OTk1LCJjYWNoZVdyaXRlIjowLjAwMTYzMTI1LCJ0b3RhbCI6MC4wNTc1ODk3NDk5OTk5OTk5OTV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI4Njk4MDJ9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI3YTA4OThmZSIsInBhcmVudElkIjoiYzZlZjIwZmIiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAxOjE2Ljg5OVoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxVzg0QXdYM0pSQW5aY1pZcDVLZXNoZCIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IuKckyBDaHJvbWUgc3RhcnRlZCBvbiA6OTIyMlxuQ2hyb21lIHN0YXJ0ZWRcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjg3Njg5OX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImI4MTM4NmZjIiwicGFyZW50SWQiOiI3YTA4OThmZSIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDI6MDE6MjAuODIzWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTm93IGxldCBtZSBuYXZpZ2F0ZSB0byB0aGUgZXhwb3J0ZWQgSFRNTCBmaWxlIGFuZCB0YWtlIGEgc2NyZWVuc2hvdDoiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV1d0JDa1lJQ3hnQ0trQ3ZDVUhZb1VXVHNKOFk2N1FGeS96N1hRRHlEc3I2V3huNFdDT2t6S3YzVkFUOXZ3U3F6dU11QzA5Uy9tOWcwaWk4OVpMclRsQVhFdzczNlg1ZTZKQ1lFZ3hzdG1iYWpTY0QxM3QzSCtRYURKR2xhUzhSWXZwQkhFU05SaUl3U2hLYWtmNXNyK2JiZTI0aVpXRXRKWG9GZVUxSmxkdkc3RGZXa3BPb3hFUVN3WGYrRjVEOWNoR0l6NnVVOWYrL0tsUkxNeE10TCt0dXRKU1c3Qit5WW8zaUxYOXRqZksxOFNKcTZXOVlYdjltMjRRZEMyS0xMRjlOTmNheUE3MWh5T2xYRksvOVRyQmtZS05TV1M1b0k5bDVtOXVTTVJqOExNSVh0L3dmWk13Q1N1Q0dGTXdZQVE9PSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUVUTjV3WHN0Nm9GUWVhQmFUTjVGdmUiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoifi8ucGkvYWdlbnQvc2tpbGxzL3BpLXNraWxscy9icm93c2VyLXRvb2xzL2Jyb3dzZXItbmF2LmpzIFwiZmlsZTovLy90bXAvdGVzdC1leHBvcnQuaHRtbFwiIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjEwNSwiY2FjaGVSZWFkIjoxMDY2OTgsImNhY2hlV3JpdGUiOjE0MCwidG90YWxUb2tlbnMiOjEwNjk1MSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjYyNSwiY2FjaGVSZWFkIjowLjA1MzM0OSwiY2FjaGVXcml0ZSI6MC4wMDA4NzUsInRvdGFsIjowLjA1Njg4OX19LCJzdG9wUmVhc29uIjoidG9vbFVzZSIsInRpbWVzdGFtcCI6MTc2NzIzMjg3Njg5OX19LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6ImMxNjM5ODMyIiwicGFyZW50SWQiOiJiODEzODZmYyIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDI6MDE6MjUuOTk5WiIsIm1lc3NhZ2UiOnsicm9sZSI6InRvb2xSZXN1bHQiLCJ0b29sQ2FsbElkIjoidG9vbHVfMDFFVE41d1hzdDZvRlFlYUJhVE41RnZlIiwidG9vbE5hbWUiOiJiYXNoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0Ijoi4pyTIE5hdmlnYXRlZCB0bzogZmlsZTovLy90bXAvdGVzdC1leHBvcnQuaHRtbFxuIn1dLCJpc0Vycm9yIjpmYWxzZSwidGltZXN0YW1wIjoxNzY3MjMyODg1OTk5fX0seyJ0eXBlIjoibWVzc2FnZSIsImlkIjoiMGEwMGU5YjYiLCJwYXJlbnRJZCI6ImMxNjM5ODMyIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMjowMToyOS40NDBaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InRoaW5raW5nIiwidGhpbmtpbmciOiJMZXQgbWUgdGFrZSBhIHNjcmVlbnNob3QgdG8gc2VlIHdoYXQgaXQgbG9va3MgbGlrZToiLCJ0aGlua2luZ1NpZ25hdHVyZSI6IkV0c0JDa1lJQ3hnQ0trQ1pTazJQOGNBdGxBZzhCUlgwcWlwTDQ4UDVIR0dlSEU0aCtHSWttNWxybDFaS2dzU2NUMjVNYXZ5YlUwNXByK0srNjRJWjgwQnJKc3B3OEdDNXBITUtFZ3dMYjdFYnFNSERGQmNYRlI0YURHK1JBbFg0VFNIZDQ1anlIU0l3L0lUMExPeGxqUUcvbGRJOEdqRU5MUFcxYUJURzdRRm1qN2xWVU51V3dwT2dKSTVjZTRwYWJVbVJjaEEyTlNoOUtrTWVFeVJmaXlCQ3FFR0hBdTZLejE4dFQ2YmtHeXE2ekpLV09CbWliU0hoL2R0OUFwcnBkTkxyOFYyc1QrN3JmV3h3VnBxZ292Y280ZzZBL2ZNK3FKU1I5bTdhR0FFPSJ9LHsidHlwZSI6InRvb2xDYWxsIiwiaWQiOiJ0b29sdV8wMUtiNHZZZEthcDF4Sm91OG5OdzdWMzYiLCJuYW1lIjoiYmFzaCIsImFyZ3VtZW50cyI6eyJjb21tYW5kIjoifi8ucGkvYWdlbnQvc2tpbGxzL3BpLXNraWxscy9icm93c2VyLXRvb2xzL2Jyb3dzZXItc2NyZWVuc2hvdC5qcyJ9fV0sImFwaSI6ImFudGhyb3BpYy1tZXNzYWdlcyIsInByb3ZpZGVyIjoiYW50aHJvcGljIiwibW9kZWwiOiJjbGF1ZGUtb3B1cy00LTUiLCJ1c2FnZSI6eyJpbnB1dCI6OCwib3V0cHV0Ijo5MSwiY2FjaGVSZWFkIjoxMDY4MzgsImNhY2hlV3JpdGUiOjE0MywidG90YWxUb2tlbnMiOjEwNzA4MCwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjI3NSwiY2FjaGVSZWFkIjowLjA1MzQxODk5OTk5OTk5OTk5NCwiY2FjaGVXcml0ZSI6MC4wMDA4OTM3NSwidG90YWwiOjAuMDU2NjI3NzQ5OTk5OTk5OTl9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI4ODYwMDB9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiIxNzE2ZGQzYiIsInBhcmVudElkIjoiMGEwMGU5YjYiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAxOjM0LjYyN1oiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxS2I0dllkS2FwMXhKb3U4bk53N1YzNiIsInRvb2xOYW1lIjoiYmFzaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ii92YXIvZm9sZGVycy80OS9sNDE3MWwzbjIxOV94d3EzMGZteXpyOHcwMDAwZ24vVC9zY3JlZW5zaG90LTIwMjYtMDEtMDFUMDItMDEtMjktNjQzWi5wbmdcbiJ9XSwiaXNFcnJvciI6ZmFsc2UsInRpbWVzdGFtcCI6MTc2NzIzMjg5NDYyN319LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6IjExYTg3MDAyIiwicGFyZW50SWQiOiIxNzE2ZGQzYiIsInRpbWVzdGFtcCI6IjIwMjYtMDEtMDFUMDI6MDE6MzkuNjAxWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0aGlua2luZyIsInRoaW5raW5nIjoiTGV0IG1lIHZpZXcgdGhlIHNjcmVlbnNob3Q6IiwidGhpbmtpbmdTaWduYXR1cmUiOiJFc01CQ2tZSUN4Z0NLa0IyNWkzeXl3QW5KbXJXUGRSQW1nTm1FWThsN2JEZFV3RnRnaDB0RXBGajIrOTZkT05BK0daSFNpVTdGbW1HekhBeGM4Nnc0bTAxYUNNNWRmaGIwc1luRWd5KzBZVGNTb3FLZHM5RmN3OGFEQmZYQUs3OE5NUkFEZG1id2lJd21BQWREdTdkUEsybDFtYkRGU25EV2pPeXZKamxWT1NjOHBPVkU3bE9Da282YlFiQ3RmVnhhWjE3Wmk4QjhONW9LaXNqa1AzR3E1aTdYcFZSTHNHa2NFT2NaUEQ1TFJoTkNBTjVUZEptc05oazVZNlhJL2V4Z1IzbkNNSDNHQUU9In0seyJ0eXBlIjoidG9vbENhbGwiLCJpZCI6InRvb2x1XzAxVkxYN202a1l1eFJjMVdnQWJQNkc0WSIsIm5hbWUiOiJyZWFkIiwiYXJndW1lbnRzIjp7InBhdGgiOiIvdmFyL2ZvbGRlcnMvNDkvbDQxNzFsM24yMTlfeHdxMzBmbXl6cjh3MDAwMGduL1Qvc2NyZWVuc2hvdC0yMDI2LTAxLTAxVDAyLTAxLTI5LTY0M1oucG5nIn19XSwiYXBpIjoiYW50aHJvcGljLW1lc3NhZ2VzIiwicHJvdmlkZXIiOiJhbnRocm9waWMiLCJtb2RlbCI6ImNsYXVkZS1vcHVzLTQtNSIsInVzYWdlIjp7ImlucHV0Ijo4LCJvdXRwdXQiOjExNSwiY2FjaGVSZWFkIjoxMDY5ODEsImNhY2hlV3JpdGUiOjE2MSwidG90YWxUb2tlbnMiOjEwNzI2NSwiY29zdCI6eyJpbnB1dCI6MC4wMDAwNCwib3V0cHV0IjowLjAwMjg3NSwiY2FjaGVSZWFkIjowLjA1MzQ5MDQ5OTk5OTk5OTk5NiwiY2FjaGVXcml0ZSI6MC4wMDEwMDYyNSwidG90YWwiOjAuMDU3NDExNzV9fSwic3RvcFJlYXNvbiI6InRvb2xVc2UiLCJ0aW1lc3RhbXAiOjE3NjcyMzI4OTQ2Mjd9fSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiI3MmYwMGNiMiIsInBhcmVudElkIjoiMTFhODcwMDIiLCJ0aW1lc3RhbXAiOiIyMDI2LTAxLTAxVDAyOjAxOjM5LjYwOFoiLCJtZXNzYWdlIjp7InJvbGUiOiJ0b29sUmVzdWx0IiwidG9vbENhbGxJZCI6InRvb2x1XzAxVkxYN202a1l1eFJjMVdnQWJQNkc0WSIsInRvb2xOYW1lIjoicmVhZCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlJlYWQgaW1hZ2UgZmlsZSBbaW1hZ2UvcG5nXSJ9LHsidHlwZSI6ImltYWdlIiwiZGF0YSI6ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQURZQUFBQWZJQ0FJQUFBQ2haQTBVQUFBQkxHbERRMUJmQUFCNG5KV1FQVXNEUVJDR0gwTkExRFNpb29YRmxXblVKR0krVUFzVE5XaVpLRVM3eStVSVloS1B5NG4yYWYwUjFuYUNqUWlwYmF3RUt4RWJlMEd3amUvZEZSZVFGSmxoZHA1OWQ5amRHWWd0SVl1bm9OM3gzRXE1YU5ST1RvM0pUeWJrZ1psVzEyRzBxZXIzTGF4OVhXRjhtMnJZWFV2NVcrRzVlbHhYTnNUenpaQ3ZmYTZIZk9QemxlZDQ0bHVmM2FOS1Nmd2dUamFIdUQ3RWx1UDY5ZS9pclhicjBvcitUY0x1SEZlVmE0cGx5bHpJbTdTd1dhUEtPV2VZb2hSN0ZNaXpycndqMzFDa3lVZ3BrTlV1UllraU9hMDU5cVhrZFpabU4yQlYrUE1Nbit4OXdIWi9NQmc4UmRwaEgrNnpNUDBZYWNsTm1FM0E4MHVrUlROMlROY01wTGdpWmhmaFowR3QzTUhjRjh6MHBDNzZ4eU42TmY3MWFuQkFCNHRWVVViZHBNbitBUXlVVGRvY3VRUG9BQUFRQUVsRVFWUjRuT3lkQjVnc1JibjNhM0xlZkE0SVlzU2NBNWhRTWVLOUNrYXlJQUlpUmxSUU1LR2dtSE5DRVVHTUdGRXhZdndNVjhVczVxeWd3amxuZDJkMmN2NytYZTlPYlc5UFQwOVZUL2VHdy90NzlvRTVNejA5MVJYZVdDRys3NzQzRXpiYTdUc3ZMcjRmTDJabnowcWxmaUNHYURRT0xSWmZpeGM3ZHo0eUdpMnI5NnZWNDhybDUrREZ2dnZlVDcyNXN2S2lXdTN4ZUZFb3ZDMlgrNVFRdlc3M3BrdExiK3QyOTVkM2VFdzB1a2hYVmlxblZpcW40TVhVMUZ1eTJVOEwwVysxN3JtMDlHNzZOSmU3dkZCNCsrQ3VVWlN3M2I1akpGS2RtbnBiSnZObDNCYnY5dnY1UnVQQnRkcVIrSG9tODBWSHNmZnMrVVNucy9xa08zYytJaHF0Q0UrYXpmc3ZMNy9aVVVqYmN6Mi9WanNxSHYvTHdzSUo5dmVYbDkvU2JONHZuZjcyek14TGhMUGVIbElzdmtZK3k4ZHl1WTlHbzhzb3N1T2Fjdm1aMWVvSjhwcVA1UE9YUkNKMStWeUpWdXNlZUs1b3REUTkvV3I3OWZYNm8wcWxWK0RGUHZzOEpCSnBpQkhRcytPZWhjSzc3ZTlmZi8wUGhWWGhiOHBtUHpPNDhtT2R6aTN4WW03dTlHVHlHbFJzcDNOckZGdFYzYWdmV2w1K2ZiUDVJTHpJNTkrUEZwSFhkTzNkWTJYbEJYZ0VNZFJ0N1BSNjg3dDJXUTIzWThjUnNkanVYbTltMTY2dnlIOCtNUmI3VDcrZnVlR0diK0dmQ3d2SHhlTi9sMVg2aUdMeGZMeElwNytKbXNHUDl2dlpZdkc4WnZNUXNiNEQ5M3BUdTNaOURTL3d4ZG5aTTNEemZqOVZLcjI4MFhnWVhiQno1Ly9LRnJHb1ZKNWFxWndtYSthTjJleG5oWWpJenZBbSt0UmVYWGI2L1RRSzMrL25ZckZkK2Z4RnFSVHF0aGVKTktrUmhVbmpkcnM3MGZmUWpmRmMxRkY3dlVLdGRyUnRnSHpLOXN2UlBYcytqZ1pLSm44NU4vY000WWthcEtpWjZlblhVc2RHeGRacVQybzBIalEvL3pUWGI2bXU2OXAyamNaRDYvWC96V1kvbDB6K09CSnB5L0x2czdMeXdtYnpBWGc5UC8rVVJPSlA2bUo4dEh2MzU0VHNKNmdFb1VlN2ZkdkZ4Y3Z3SXBuOGRUNS9jVHorWjd6RzhCLzgzSDY3ZDFzdElodjMrYkhZRGFpVFN1VXAxSWoyYm85bkxCWmZqeGZaN09meitmZkpGby9KNWo2RkxrQ1JVREI2M1dvZHRMVDBEbUgxcnEvTDN0VkM0WmVYMzBGakFiK0ZmcWhLR05MSUZldnJYOTcvdzRYQ2Uxd3Y2M1J1M3V0Tnk1ZXBRY20vbWMxK2tqNUZLOUFQcWJ1aEFtZG5YNHphZGR3SFlzMURQT0tKbHBhc0FrREVRZERaUCtyMUZqcWQvZWoxeXNwTFVWR3gyTCtucDg4ZjNQYmZEa0dxeHJzczNoL241MDl5L1VYTjI2SVAxK3YvZ3dHYlRQNGlHdDBkaWZRN25RUFFzalRHRTRuZnpjK2pQM1NINzA5Q1d6Ym84Y015ZVJoSVNNaEo0U1lLZk9pRnNmUjZzN3QyZlprZVlYcjZ2SGo4WDhLbWhlWDd2eGtldWFwdWs4bXJwNmZmQlBucCt1ejY3TnIxcFY1dkxwWDZFWWFZOTVYNjh0UElsaEJXTmI2SnBFb3VkMWsrZnlta3EzelNCWXkrYUhUUDhMaFFTbWRtNWx3STVFaGtJcVZ2b203bVVGMWl5SWhxdCsrMHVIaXhzRlRZQ2VnazYzLzZBYXFLaEo2Sm9nOHFBVldCRjVuTWwyQktvYTd3T2hwZEljTnBLOGhQSHlpRk8yellFRWF0RUpJdFlhb1hoSzNUeXQ4OU01WDZQK0ZKcjVmZnRldnJ3azBnQy9NaFJwREZHSTB1emM2ZUU0Ly9pUWFhSFRWU01Ld3d6R094LzhxM28rMzJnZlg2RWMzbWZYZnNlSkw5ZXRYSDV1YWVtMHorUkl4QVgzNld5MmRVcThjSVM1NjhJWlA1Q3RvTDdZSldvUGJ5K0NGdlcwTFcyRU9MeFF2a0haNmRUUDVzVkZHcGltWm1YcDVPZjBNTUxHZkk1MHptcS9qbjR1SUg0S0ZNVGIwZWRwRXdHV0pnYWVsOXJkWmR4YW9SL2l0Y1dhMGVoZWVsVDJkbXprbW4veCs5UmhlOTRZWnZ5dHYrWlc3dWVSQlo2QXl5RWg1RUY3ZzJyaGhucmhzMTd0TFNoY25rVDlFRVVzV2dTTWxXNno3THkyOFFjaWpOekx6TS9yczZYc0RnMGZLN2QzOENRMWcrOHJtNGxSUldFVFFmbk1wOC9nT3U0MEpwUGRlQkU1NWRiU3YyR0M5QTB5TTJVdnBHRWlta2thdlFjYlQxRFVWbHJNTHdnS2pFVTBnZDlGcXhhdEdkWXJ0cmRQZnVLOURFVW1xOUVKL0toMzBRdXJwWU5TOVBKbjBuTFBQNzBhV1MxVFBSNG9YQ096SDIwUk5na0pOMTRScjZHUHRjUHV4cTFNT3VYVmZLcC9zK3lpekdvWVQyenAySGt4SWZTN0g0eWtiak1OVEpqaDJQaHdxMmxkYVBYaGlMdndEQ1dIWGpEOVg2czdNdmtDUFJuVkxweGVqNXJsYTB3bFRkK0hPMHZlMVAvVENPOGxBZ042YW5YeFdQLzZQVnVpTmFBWEpKdUpoZXE0Sk9XTVBoTTdBUE1SZ2hRRHFkMjVUTHA2SEh6c3k4bUs3VDd6TkdocUsrMGpleTZFd0ZuZTEzeDhTeWhLRzVyaFA2STNidi9qd2ttTDF5aGpFZFlwcE9rNUpGNkROVFU2K1Job2NGalBaRzQxR3dRT2JuVDQvRnJoV1dmM2NLb3JXWnpCZlF1T2hha1VnTnRkcHEzYXRVT3B1MDJNQnVXVWUxK3VSeStWbjAybFdsbWpwTi9vYVlKcHNWQmc4MTZDUTB0SmlSTGVGZ2NmR0Q3ZmJ0b0ZKaFNqaytNcEtmdGRyalZsYk9scFh3blh6K1FqeElvL0h3bFpXejZGTjdMaUNrVmpBMEZOZlZyYjRXbytiRGNGdFlPSHI0VTMwRDJDZ0FhNFRtRU5NZnVVWjZ3YWh4OVpXanZxQno0QjFGY1pTRVhyc09NWGhNVU5IWjdCY1NpZC9DVFVDTmRqcjcxMnJIVU9lVXB0cFJzQ0ZsVlNlWGxpN0NtSkkxOHdINFdZNWI0ZWEyQ0lZUCt6UElBS3dyS2hqb2F0SVFwZ0ZZaURna0VkRHJoZ09xZTJzQUZqSnE5KzVQMDJ2MGNQUnp5SWNiYnZnNnZZTWcvOVRVV3gxZkNkeVdvQWl3Zk40L3dxSkdSNFczV3l5K2ltUTRhZ0Qxb0tJcjgvT25vbnNQLytKZ1BMNTFrSmlJeVRMY1RIYmFGeVdUUHhlV2NYVS90SmRZN1pOUFZWM0NKRWVNVWZadWZHb3JDZVRNaWRRVmhWc0FsaGdYSFRKSVBVTmgxV3BQRkpaVVBNUHVlU2t3aUtCZUJRZGdWeDh0bEFDc0R5OWdXd1JnVGJYWU5nckFhdWFJdDNVQTF0dVcyTDRCV0RIYUVoUGJLZ0FyVEpUajlnckE2aHVLM2U0QmUvWmNTbEVqOUFGazFSMVh4bUxYNDIvNHArVVkrVjZ2TncyUjNtcmRXMGdsbUVwZDdmaTZqdjJwZWl3Nk9YcmQwT2Q5aUJFUG81SE1nRkZPbHJCMUdGY2p5cFVObmdCZ3BQUnQzOUlOT20wdWNjZS9ZVVNpK2pxZEE2RmRYQ012UnVSeUg0SmxCaWxXTGordlVubGFORnFrY1M2czhmOGV1ME9DaHF6WEQ0ZUVRb2NybDU4ZWpWYnhlc1JkZTNDR2w1YmVqdHVXU2kvRkg0WTkranJKeWtrb2w1OVJyWjdvZUZPTkVESEN3dEFFT1FaWW5IaDhXQjc0VTIvYUV3LzUvR1VJSGlINGhXZ2QvbkM5a0w0SGZRb2RJMElHQmdFbFg1ZVczZ3ZySnhMcFVDdEFPcEFiUElwQzRmMmtkTkhLK0JOU3V1Mnp6OFBwVXdnYUVpTG9EOTVxejRoMCtsdko1Sk5nSzBEUTR3OVNSa2xlNUt2c0NoS3FIWGttR0h5UUhidDNmOEYrNVREWjdKVmtseUNJZ3lDUnNJUlVEczRuREJxUHdrQVZUVTI5QThrTTFCZ2x0OFI2QzhDa2NXTVlnQ3NyNStBUGVqUVNXY0UvVnorSS9UdWQvcHI5ZHlIWDZGbFF0MkljVVBETjVuMWFyWU1SbkVMSGx1R1BOcFVCVFN4OEFZc0hkNk5vRnlxMjM0K3BoMElBMFJIOFF1aHFVSkxQQ20xd0V6dzFFbWxvYS9LcGhEUjhzOWtyaEZVbi8wRnN2VnA5aW16Y3o5RW9vMnZ3Z0REdjFIMmc4a200MVdxUHhSL2tCbGtZOUtialI2SHdJQUR4WEhDTjhPZmRaelo5NUFwTGZEMWJXZjhFalF0NnZiQndJdG42S0NlOWcxNnRLdE9PcHFFelRMMytNTWg1K3p1b0FWano5SHJVek4wQWI0c1JXaXE1REZMSUl1VGhYQU5BYUZPTUlDR0hocWFHUnJkQng0WmpDV1VCbXdEM0VHRUMwd0ZsZy96RTA4SENROWZxOVdiUWRuZ291ejRkK3RaaUpuTWxWQ29HKys3ZG4xVHYrOHNyRytGUGZ1b0FBM0ZwNlJaU2h6NEZmeGlTOFBkSTcrZHlIeDYrSGc0RzZSMEtiUkRTOGZpRStxZSswdGRYTjFzTjlJUnE5V2pVVzczK2FQelJtNGoyeHVOL0UxdERmdm9BQ2hjOURXWXEvRW1aV0sySkNRakpsZ2hKTHlnbjFvNmFwQzZHb3JHbTVIS1hsa3F2d01oYVhMeEl2WWxZY0NMeEIzcU5Db0hVUllBVnduUDM3cy9DVmtTYWtEcURrRWtVRVRLSVlsRDhDd0VGL0ttdU9GYk9lTnNTNkZZa0RYQWZqOW1IcHVnUE1XSDFtZmZBL0JiU0NNZW52VjZPUWdERG9NL0RiWWJIaTlGSDVoeVo2MlBIbXJlNWJ0UzRpSS9JeE1DcHVFTThmcDNkVGNqblAyaS8wc2dMaUVRcTA5TVhVQ2VYMHZ0OFZ5RmpTRmgydGEzWVk3d0FUWS9ZU09rYlNhUk5IN25DeEtKTHA3OExJVm12L3c4Q2MzYWxMQzI2MTY2L2EyOXFDaDNtN1ZKcWZVQ214MUpxNEV4TnZkbWVKMGJNR3ZZYnJHWFVNUDdzNHhFNnkxL2N3NGRkWGE4ZlJpK2dvTVY0WXRYcThiTHczOVNjZlNoaytBbXlEbldDLytyOXlrVDRDeUNNVlRlYmpxbTYwWGUwd3dnNm9YZ0l2c01JaHh5Z2VWVEVpTkwya0pKWlhuNjl0T3VlaUQ4TUxqVnc0T2tJYzR3TXhaRHdMZWk4bGFPdmtvd1AvZWxqT3NRMG5TYUlGR1R2TUF6UlozQm5QREpTSTkzdVRVYlpIa2lXNEUvSXlyRmZrOHQ5ZkhqMm9iQkUzRmZWQk1UaDllRStDQ09XcGRpc01QaW1CNTJNYkFsRTNYZnQrcXJqVFZLcDlGcGxZb3prWnlielphaG1XUW1ING05d3E3Vis2dy85VmpBeUZHMzNINi9GNVB5Vk85dS9oZXFsU1RrRXJiMFhKZ2F3VVFEV2lNQ0gyRmJRQzZhQ1R1RWRSVEVDU1ZuS3l3NERkVSt6RDRYVnNnVWwwbVc2OFJUSHhmYXBiOXN1cmt2NENNQkdJbTBFZkZaV3prU1N0ZE81ZVR6K1R4RW1XeUVBaXgrRnJpZnBsMHI5V0VqNWtFeGVqWnNMUzJ2OFN2akNuN21PajNidCtwSmROY0FsUVZjVWZ1Z2lUZ1VwSnp2dHU4a3FVMEllbXNqZUpVeHl4Rlozb2dtSWk0c1hxNnBUQW1jVTQ2SkRmbExQOEVsZDM4ZlR3VHNUSElDVmhCU0FEU25jc2VrQldOOWFMQ2hDQzhENnpCRjdzOVVDc042MkJBZGd4V1lIWUlXSmN0eGVBVmg5UTdIZFBsRDFmSHNLVmVHWStqWTlmVDZVSTc1U0xMN09maGtHY2lyMVUrR3p0UGNadkxqMzBwS0x6YXl6aFpNSGpjYkQ2UmxsS2wrTERaNEE0TTlwQ2pib0ZCN1I0YmR5dVk4STJkNmR6cTNkdnFMaStBNXZ3ZnFuOHAySVdPeDZCQ0JvOVRtYW1ZWTZyb0dYNVpneEFDc2YraldaL09YZ3lwMXlmdTdacm82dWpHc2NrOGw4aWY2SjlpQVRFRitSTzJDTk1jY2prVkYrVGxLTUlUNjRRMC8rZDNoR1M4LzJYOGVQdHVmblQ0V01vempSaUlKVjUrZFBMeFRlUmRXSTZyS0ZFcjR0Rjl3NDBKelQydlc4ZU8xOVdJRlRVNitqWDBlVjBuNFMwRVBaN01lRko3SkZqa2YvZGhXZ3Rkb1Q2SVdjY3U3QmFra0dEZFIzdkQvMHorN3M3TE9wdXdycHl0S0xmUDREczdObk9iNEZXeDhQWXI4UzF2bk16TG5EUHdIYmJuYjJCWU0xaUpieGdXNDVPM3ZtaU1Lc2tjbDhZV2JtSERralc3SFdFL1FiRjdvZktuTncyVTRsWmREaDUrYWVKZGRKckZHcG5DUmsvY05NRitOQUo1eWJlLzdVMU92Vnpha002Sk55U1prZjR2Ri93Qk9tMTZoWU5jYWhtV0FpMjYrRXE0WTRxWkRXT1JTL01HRm01bFdGd29YclY2MnQxVzJoOEY3OGxxcFllaE5LWW43K0JMdEpnY2VmblgyUjJneUQ1RGo4dExtNTU4amdtbGpmdVAzWjJYTnN1MHBZZlFhT2x1cHZka0lidWNNWGUzeXhKelJ1NGlhMTNLOGM5eXZPbnlPcGFJTDloMGFXU3ZPMnNkaS9hSEdxQTlqNk8zWWNpVjdxK2kxYXBJaFd5MlN1RXRya2NoOFZjdmdnTmllR2ltcWtGM1NBMWxBK0V2b1ZKQktlZEc3dTJXVFZqYXFmcWFtM3dDeUdRK2hReXBNeHZ0K2F5RThEVzBKSU1RVnpRbTNxaVNGSmVoOGlGNnBIREJHTFhidXdjQ3hDVVo1bXZhN1NOMUUzbzU1cjFQdk84WE1HT0FBQUVBQkpSRUZVZDBhYktINkFnVDQvZjNJMis3bjF0c2ZhVDJ5Ni9QUUg2U3gwc0hyOVVXNmZHN1ZDS0xhRXVWNFFldEkrTGp6cDkxT0RsMlpEak1oa3ZqWXo4K0prOHVjZUF3ZUpCd3hxNmxFWWhzcUZ4bUIzVzNQdjBmUFgwSmVmK04yNXVXY29nVSsvanBIdTJnb09QR3dKZUQwVVhOQ09lcWdpZGQzZU54NWlRcVlUNXVkUG9RRUZGU05YYy80YnZnTjk2cEFNaGNKRmFub0tPVTB3NERPWno0blJqU3ZHbWV2Q3BIRVJOcUtpb3B3cUxvUExrQmh6N0RHZzdRV3Nna2pOamgxUHRFbWJBOVV2eHVOL0ZlYUVaMWZiOGZZQzlEMWlJNld2TDVGRU9DUFhsVkZhek1SUTdFNVB2OW9SSUVhallEZ003MkNSU2wwTk5VY3lBYzgxMk8vTm1nT1JTRnl6dmdCTnFadFcrNkVhajNoOHZDL0c0ZnBjUHV4cU5ZUEhZMzgrUmFQeHdNRzBvY3VGTmdqM1V3ZXVWSjZDM21mN3hJOWVHSXUvQUlLT3V2SEZLT0c4RG1wTjd6NXBxbTVNSEcwRCszUDRoMnlzZXgrR0ZzcW1wSkRjdWZ3TVNsKzUyZFgvZ2JoR0JrZ1o3YXMvYkVWYXYyNjdVTGZQR0JtS0prNlRtVjF0S09oV0dhc2NoMy9JMjF6WENmMTUzTnlCNlJEVGQ1b3ltYS9DWFZJeFdPakhnUWo5Rjh4Z1phV2swLy9QN2xLcDNvS1doWVhqdWhlT2tGNmgyc0ZyeEt4V3M4WU5JNVpsWjFQQzRDRUhuUnhmZCs5bUpyWkVSSGpTNzJmb2haSDhqRVJhaVB5ank5RkJOM2c2bUcweXBGQ1gvNnpiZmlHVVZqQXlGQlU2V2t4amZzQmFSa2JUQU5ZUHdKcWlQY1IwUjY1aEFNSElSREZRanBxQ3pzSFlLSXJiVjF3K1RhZS9RZnR6TzBpbHZydXdjTno2N05VWU85bHV0UGlLNndZWmdCMzNvKzQzOFJlQXhVaWtEbENySFd0L2Z5OE93Tko2U01nVzVmaWswNnN6NDEzM0dod1FwQzBoWkVDTS9DWVZJb08rbUpsNUJiMjJkWGp2cWw3N0ZGSU9tVi9sdFExbUNzSUdlN0pqQ2FoUmpqaWQvaTVDTHFzL0p1OEorM1o2V2swUjh4TWRFbWFwNTdHZGJRc2xzUHl4OVFPd3dvOFhzRDBDc0laYWJIc0VZTTF6eE5zeUFEdldsdUFBN0tZSFlJMlU0ellLd0pvWWltTlYyTHI3d3c1Qk81TFhOdml0YWk1M0daNTN4SzEwN00rSkR1NGIvTzZvbTBSb2NwNmM1UGMzb2MxR1RnQXdWUHByM3pJTU9tME9FY2NSekpMbzR1SWw4akNGSzZhbTNpQ0NBSkdJVHVjV3ZWNGhIdjhuYlRzLzZrcG9vRTduTnRBOXNrT01iYkJZdDN1VFR1ZW1pRXJFWXJ2bHpyb1Q5dGN0UXFUWG0rOTBibzRYMGFqMVhKTk04aldsMzAvTE1PVThRaHVESFdJbnVWdCsxNjdQeVQxT0ErdE9ROFE3blFPNjNYMFJTWS9Ici9Qc0F6SFpEK2ZpOFQrT0NpUVJzaEp1M3U5UHhlTy9EL0EwVElsbTQwWmxTTkZLcENGNmk0WVlYclhRYXQyTjFtcklUWksvTGt5UVpiaVpwWkd0ZlhULzR6SFcxT2s1Kyt4ejZLaURSVkJkM2U1K3VHZS9IOEVBeHoySEh3b21SYVh5ZEdFdDgzM0M1UDNLalFqNkFIb0NXbGFlRFRSeXlIUzcrM1M3RUJwTjJEZGpSNWJzQ1REdW8zQjBOVTRIMjh5Unk2RHl1MTEwd3FsK1B5SFBPUGl2MnRyZDdlTFZ6Zk5oYU9vdmdDQ1dsaTVzdGU0dUR6SjRzdS9BbGhIUWpOM3V6ZURaeHVOL2prWkxZbXNUcHZ3VVVqYnVLL1YrSXg3L2ovNkdRQUdocjI2MkYxdEJmcG9CeFVTYmYrelljVlJBd3pCNFcwS3kxK29GV1BYZDdzM3gzMWhzVHpSNmZZQmJYR3VBSm9DTnRCK01mem5GZk5LUnVMVDBUcVNjNVk3OXg0WWoxWFdIbUxCRzJVM2tCZy8vc0I5ek1PSktSSE51SVN2aG44RVdXN054VVlCZUQzOVRlQzZVZGxnZ1QrSUZRSlYzdXhpUyt5QURJYmVDR05uQjFNbUpuc2RuaDJ0WGE2THBFUnNxZlNPSnRMa2oxNVNZVFBiTXlFY2JVMDdZZFRLNDJjZEFIblZlNUlBb3JBajBCK2tFWGVkaEsyNDZkREFRZXFNdHJLbUZPcWRza2dNY2pBZzJnTENWOEtOdTlCM3RNSUR3RkRJY0tRYW44V1l5WDFIbkp3NURxZ1IyR2t5VXNYcG5MRWFHWW5oc0swR25oYThocHVzMHlXRE9UV1hHcFFqZE5PSkszRzFIcjdjQURRWEZoTjRpYzZXOTBmZk03TnAxSlhRdThrTkRtOWRPU2poRGJEUEQ0RnNnNkdSbVMyamYwMHgrb3Nia3M2Q2lJdGRmYjIyRGhEemZoRHRvYXJmQ2VFTnhZOUF4Z0hVQ3NKTVE3QkRiSW5wQlQ5Q0Y5Tk41NlRUTjl2dEpVclVUYmlHMkhaa2tBRnVwbkV6N0U2dE5ROE5tZXdWZzlkRzBKZWdJWmpvWEZWK0Jab3hFT25MOEJoUFRnM01uaytzOUZNTzdldlZ6eEJEeW5jNnRJaEhjOHc5Qk8zZGhwSjQ1QUN0Q0M4RHVoVjRBc1lsYUxQQUE3TmJKRVFzT3dLNTlWemNBaThGNy9mWGZFM0w3UUxjRGM0bnRGSUExZExSWklsbElWUTRGdlNmdzRSQXNyZGE5bHBiZUpYeHRaTDd4RXdDMmlOTVVMSzRURU5Fd2QwZjlDbXZLMFVQWHJ6aGtHRE9xMVdQTDVlY0thNUFmN2JwRkdlTWJ5aWhBZmNKY0MyOGV6UEx5RzV2TlF4QmYzcm56MGNJdlVPUzdkbjFSQnFDOThoOE1zMkhVNjBlVVNpK1dOc1FKcHNPbjJienY4dkpiOFdKMjlzeXRmUHd1c3hjZ3M4aHh6V3R2VkRPZTRienQzbjBGMU1yYzNET1R5VjhJaHZGTHUzMEhwSnhGRURsT3hzSEdlQUhWNmpIbDhobkNDbDhlR1l0ZEoveXlNWFkxdzJpQ09QaWVQZFlXTFA3aThvdUxIMmkzNzRqODAvejhTWUs1VVFKTGFkY3VhNU9oZlA2aWZQNVN3VEFiU0szMnhKV1ZzNFIxa054cGp2MW90eXdjQnQ4NnFGelIzTnd6YU5jZnhvU29iVSttTVF4bWZESk11RXdTZ0VXU2U5Y3U2NVQ1WE83RGhjSjdCQk15OWdtSWdtRWtISUJsZ29KenhPR3hNUUhZZHZ2Mmk0dFdiR0Y2K3RWcW0xZ2ZjQUNXMlFCS3BWZlU2NC9LWmo4ajkyZzBneWNBQkVKRWlDMjlReVBETUJ2SnZ2dmVEK0VxMmxpKzM4L1Vhbyt1VnA4aTVJN2ZkS0xIOWRlUFB5K01ZUmlHWVJobU5Kem9Zbnl5Nzc3M0YxWUVmRmFJV0w4ZmJUWVBxVlJPZ2VFcWw4bzhWb2lPc0l4VkRnMHdESE5qZ2FSaXVYeUdQUERvNi9INHRWQ3l2ZDVDcVhRT1l2cjRhT2ZPdzJtREJKYU5USGhRUDBRRXFkZWJhamJ2WHk0L0M1bkZST0ozOC9PbkNPNTd6QWlvMnl3dHZSdXlLNTMrTGgxQmlMeG1zZmpxYm5kL09ZZitaTnB3Z3J1UUlSSHRLMDJkTXYwN013eXp6WkFwSWVjRVJFNERNUXpEM0dnaHZkRHI1WVZJQzh0S3YxMmxjbks3ZlVkaFRYTThSdTUreDJxQ1liWWMrKzU3eUJhWjE2dTVyUTdETURjV09wMWI3OW56SWNlYnVSenZtc0F3RE1Nd1RDQnc3b3FaaUYyN3Z1eDRwMUI0QjgwK2xIQUhZeGpteGtXbmMwQ3orWUJLNVZTOGprYVhhRDJoc000NmZJdnRlQ2FXalV5NEZJdXZvbW12d3RwWnJUbzE5Y2JCSjl6M21KRzBXdmZFMzhySzJlZ3p3cHJHbXFQM3A2YmViRHZ1aXJ0UVNIREZNZ3pETUF6RE1DTlpXWGxwbzNHby9aMXM5dk0wKzVCaEdNYURPTTFpWmhpR0diQjJwRDJ5Rjhua3IvUDVDOVcrelN3eEdJWmhOb3h1ZDU5ZWIxcm55a2lrRjQvL1JUQU13OXdJUUlxYTh0TjRrVWo4TVpmN3FQMUFCRFpXR1lhNXNaRktmYi9YbTZYZENHajJvZlRpMzVOTS9rcGR3N0tSQ1I5cm5UMVVjeXIxSTZqbVJPSVA5QzczUGNhRGJQYXp6ZVo5dXQzOWxXbVhTbDFkS0x3ekZ2dXZ1b2E3a0Q2OVhxSGJ2WW5teFVnZVJ5Sk53VEFNTXlBU29VVjlxOXVqc3ZobEdJYTUwYk8ybFJvQ3NPbjBWYm5jNWVvZFZoTU13NHdpc3UrK054TU13ekFNd3pBTXd6QU13ekFNdzJ4TFlyM2VkTDhmaThVVzdhc0tHWVpodGpqOWZncmlLeEpwUmFORndUQU13ekFNd3pBTXd6RE10b1dQWUdZWWhtRVlobUVZaG1FWWhtR1k3VXMzR2wwU0RNTXcyNDFJcEJtTDdSSU13ekFNd3pBTXd6QU13Mnh6ZUFJaXd6QU13ekFNd3pBTXd6QU13ekFNd3pBTXd6QU13ekFNd3pBTXd6REc4QVJFaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1HTTRRbUlETU13RE1Nd0RNTXdETU13RE1Nd0RNTXdETU13RE1Nd0RNTXdETU1Zd3hNUUdZWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWXhoaWNnTWd6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF4akRFOUFaQmlHWVJpR1lSaUdZUmlHWVJpR1lSaUdZUmlHWVJpR1lSaUdZUmpHR0o2QXlEQU13ekFNd3pBTXd6QU13ekFNd3pBTXd6QU13ekFNd3pBTXd6Q01NVHdCa1dFWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWVkzZ0NJc013RE1Nd0RNTXdETU13RE1Nd0RNTXdETU13RE1Nd0RNTXdETU13eHZBRVJJWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWmhqT0VKaUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6REdCUEw1NmNGdzJ4VldxMTdWU3FuZGpxM1N5Wi9MaGlHWVJobTc2SmFQYnBlZjRJUWtYajhuNEpodGdDOTNzTEt5cG5ONW9OVHFaOUVJaDNCTUF6RE1KNDBtL2V0VnAvYTdkNHltZnlWWUJobUcxS3JQYkZXZTVJUXFYajhiNEpoR0laaEdJWmhHSVpoR0dadnA5dmRyMXgrWHF0MS8yUVN1YkN1WUFKaUUzWkE3UGVUdGRveHlMV25VdCtPeC84bHpHazI3OTlxM2N2K1RpYnplWCszdXZFUnI5VWVpLytsVWorS3hmNHR0amI5ZnFKVWVuRzN1MzgrZjVIWVZDYnZ0TDVwdCsvU2J0ODJHbDFKcDc4dUdEZHF0YU82M1gxc2IvVFFZU0tSdHRnK3RGcjNicmZ2RkkwdVp6SmZFT2FnZjFZcVR4TWlxdDZKeGE3UFpqOGw5aTZhellNN25UdEVvNHVaekJmRlJyRmwxVTI5L3BoZWJ6NlIrQjJzSXJITjZmZlRrSzZSU0YzajJraXZsNHRHYXhqbVloc1E2L2N6a1VqRis2Sm90RjZ2LzIrajhlQlU2bWRqTDJhMko5dko5QUxsOG1ub2s4bmt6L1ZHWlloc2xxQmowMnNzZTRFdk5xSHBKYmFWL2RscUhkUnUzekZ3QytwR1luK0dRYitmUTdQbzl4WlVOZW81RW1tSVRTUGE3MmM5ckpSWTdMOVFISGlSVFA0c2tmaU5ZSmdiUGQ2MlJLZHppM3I5Y1BzN3llUlBVNmtmaWsyaTJ6MWdaZVVzWVduekt6VXUzZzhLVkdyQW1MRHMyNUVoc2tiam9iM2ViRHorRjllcHlSelhaWVNjdjk3cDNDNGEzWlhKZkVXRXpLaTQ3cGF5NkxyZGZadk5Cd2hyT0h3eEVtbUtHdzIxMnVQNi9lbDQvRStiS0FrWk8rd1JiMzFnU3pTYkQ4YUxiUGFUbXg2NnVUSFE3ZDYwMFhpWXNDcjg4aEh5ZVp1Ri9oaUZSblNJRzVmWkJvUVUrak5pQSt6cXNFMlV5Y1BGR3dBa1VyOC9nK0FiUW5CaU0wQlVVNFlvZGVicUlVT2Fpa1JxSWtqaXZWNDZHdFZLcE1wZ1pndDJrOGMxc2RndXVLVzkzbHdzZGwwdTl4SEJCRVM4V2oyaDFicXpzS3I0aHFtcHQ5Zy9ReWRHU0VoWTh3S2FNelBuaW9Ebzk5UGw4alBrTC83RFgzU3AxYnBIdFhxYy9SMUU2emhRcFFPR0pRVVdaMlplc3ZXdHBYcjlzZDN1L3NLeTdEZFoxay9lYVgzVGFEd1FneFEvR3BSQ1JRZ1ljYmRvdExyWHpIUkJ1cXZkdnAzOW5YeitnekJGaEM3Ull2RjhWQXUwZFQ1L2lkZ01tczM3UWFiRjQzLzNPd0V4VmEwKzJmNU9Jdkc3clpBQWxydWhuSUFYMDlPdlJtSlNURWF6ZVVpdGRtUWk4Y2VRYkdqWDBtNVpkVk90SHQzcEhKakxYYjQxSnlBaUxsT3Rydm9iK2Z5bGljUWZIQmVnOFBYNkk5cnR1N2ZidDVacGVCR05McUZ4YzduTGhoTlVuYzZ0NnZWSEloQ1BiOUU3eUdObE1sOURKN2NIZlhEWnlzcVpudVhxemMwOVQ4OHlIdkg5WHFGZWYzeXJkU2U4VHFlLzQ1WW1pYUxQMU91SHRWcjNKUDBWaVZRVGliOGlQb1hyTVZpSDc1bE9YN1d5OGx4VVFxWHk1RUxodmNNWHRGcDNxMVJPd3dzWWFmSDRYOFgyb2QvUDkzcndSbHJ3MmNTTm1PMWxlc0dIcDR3NHhJdlliRFpMMEFWdWV1MTlZMkZ5NVlnYWh0cUZMVG83ZS9XbWV3TUFBQkFBU1VSQlZMYllEQ1kwdlVRQTltY285SG9MeGVKNXdockNIMCtsdms5dk5ocXdvSTZTcWpQWUNZaGIxUDdjRkZxdHU5ZnJSOGlSM3B1ZVBtOTRzaURpS25LMnpUMDduVnZTTzRod0paTS9ScmVKeGY3amVzOU81MlpvdUhiN3p0VFRZRkVnNFlGWTJMQlpaVWk4WG44NEVwYjlmalFldjY1UWVPZW82MkNjVkt2SHd3NUJzZW1kWlBMbjJleG4wdWx2T2U4WS8yY3E5VU1NcTVXVk0rYm5UM00xZUVxbGwzVzdOMEhoUFg1eEN3TEhHWDRpL28vMkVzeDRJdDN1VGlFTisxRnBCaVdtUm9GT3ZuVW1vUGd1cmJjdDBlM3U1MUNqR1BHYitOVGw4ak9GOUxDU3lWOTZYMW10SGxzdVA5ZitUaXoyOTFFR1FMVjZJc1FYOUlMckJNU3Q2bWdiUklkTXdoMHV0eTBXWDQxM2tEY3FGQzYwWHdwcnZGdytRMWgyeFVWNzA3YXlyaVpLcy9tZ1d1M3hzQjgyWkFLaWUxeDNTMWwwTXFaaGVZNklIb1F4QWRHMUZiWUNNQ2tSUDhsbXIrQUppTDRKdG5FRDk0aTNOWnZ1dXJxQ1VFbTVmTHF3eE1WWFk3Rzlmd0xpcHJkQ3AzTUxxbkFFRUZ6bDgvWUsvVzBYSnZIRjlQdk0yT2hRQ0kwNzNta2FSYkRwdHEzRGxqVlJRaVhZVEwyUDBGL2c0WTROeU5TSGJhSk1IaTdlQUdxMTR4QXdSQ3hpZ3ljZ3RscjNybFNlMG03ZmdmSzVzaFd1UXVJRzRVckhsY2lpd3J4dk5CNm1NcVRKNURXNTNBZDl1N2U5M2d5Q3JxM1dYZkhydmQ0YzNST2hTRVFiTXBtckhMdlY5SHJ6amNaREc0MkhxOVF6UkRjQ3FzaFRSNk9MYnJmdjVISWZMWmVmVXk0L0s1UDVNaVR6OEJXMTJoTnhUemxaN2h3NW8zRzc0Ri9kVEU2ODFib3pISDc2Unk3M3NWanMrc0ZIMFdyMVpDcVpKTEFKaUpNRHlaSkkvRW5JUHJleThnTEI3STMwKzRtQldYL2xDS0hBK0dGcDZkM0llMkd3YjYvY2p3ZjUvSHY2ZmVzb2VhVEhvQWFFSWMzbWZXZ0YyL2FkMng2TjF0UWM4VnJ0Y1NwSHVPbFVLazlydCsrSWFQSzJjSWRjUzh2cXhoU0V3Q29WR0plSHFYZXkyYzhQWHlaTitSUHQ3OEJ3eEp2NHkrVXVzOC9EUXdKbWNmR3k0VjhwbHcrczFZNmNuejlaS1loZUx4OWU1NGZaV3EwZVdhMCtSYjNqbWg2cjFaN2dtQVFKR3hlV01mN2dQTS9PbmpNOC9URVNhV1N6bjhhZDhRZkpISTJ1T0M1SUpQNEl6NDBtQVV4UG55KzJENVhLS2RYcU1mQjdGeFpPRU13Mm9WcDlxcERUWWxLcC94Tk1RT3g5WTJGQzVZaFlFczExeU9VK0xMWXRFOXFmSVZHdEhrV3FjR2JtcFNKa3Rxejl1YkZFcEVuekZDaDY5ZGJVMUd1R0p5QldxMGUzV2dmYjMwR2twVjQvSEgrenMyZWxVajl3WE45cUhiUzgvRnFLbEJGNERaOEZWb0h2Q1lqOWZycGVmNVE4SzNrMXlOUHIvWEhVeGQzdWZzdkxiMUxUSlFlbHVpY0NiY01URUlYY0N3UlYwVzRqdUhRZnhQV0dMNEFNck5jZmpUdHNyMDNPOEZERjR1dndZdWZPdzRhTk5NWUJsTUx1M1ovRGk5blpGNDdLRzZFZmVvdUxEWmlIcEU5SXBZVU9WZkt6VkRyYlB0STNIbmhiamNhaHdsTEtIL1crc3RPNU9jMCtsUE9odjAvUjQzajhXdUdMcmVsb0cwV0g5TU1kcnJkdHRlNEJGM2g0RWtPL1AwVzlUcVlEOXg0MjBrUXhZbXRhZENHeFpWdUJtUnh1M0pEWU8xelg3UTYzd28wVzM3N1lGdTh6T2s3VEtMWlh1azJmRzZjVzIvUk1mZURoRHM3VTc4V1V5NmZiYzZOQ3JwcXVWRTZ0MTQrWW4zOUtORnBVNy9kNkMzdjJYRWJUQkFsRVBKck4rK0lQWFIwZFhwalQ3UjVBYThuczk0UXdMSlZlVWE4L2RuYjJ1ZmJaZGJ0MmZYSG82L3VqUStKdmJ1N1pyck0yTTVrdmxjdlBFVklXdWU0UmswajhsbWFpTnhxUDNNUk5SazJaUk4xTXpyb2ptQkYxVXZ1ZG9PVnNzdyszRm9oU0RRSlZDendqeEFqRXR2TDVEd2dyU3ZnUHNiVnBOaDlJY2Roczl0UGlSa3d5K1ZQZVBzcWJWT3Jxd2N1dUQ3T21XajFKV0NQaTc2NnBzbTFDVnkzNHNHOVNzcm0wV3ZlQ0hoR1d2ZmdoRVFUcDlIZGpzUnRDbW80OHFyU3Nib3dZTmtNOWlNVjJJWUVOMHkwYTNZMHNDeHllZXYyUmNwcmRVNUxKWHc5UGZzcG1QNU5JL0NZZS96Zk1wbXIxdUZicjdyQlNpc1ZYenMyZFFXdGM0dkgvRkFydkd2NmhmajlUcVp3aXBCM3BiL3ZEWnZPUTVlVTM2bDBiRVhKQlNUWjdSVHorMTFoc054SjFsY3BwS0NwdVVxbWNtTTlmT3Z3ZFhFejExbWdjTnJ4M1ZDVFN5T2MvQkF1N1h2K2ZmUDdpVWZza01WdVdiV1I2ZGJ2N0RETFFINTVrcjlEdERwdGVZNWxRT2RacVQ2QVh1ZHdueGJabFF2c3pET1FDVTJ1U0t6eDZlK2duTkxhaS9ibkJMQzVlVEFha0RvbkVIMU9wL3lmTmd5V1lCODNtQXhxTmh3aHJFNnp6RmhhT2hjMmdybXkzNzdDMDlBNTZMVGVIdmlZU0tTTmVKbzg1N2d0ZmRMdjdMaTUrd0I0QjlBQzIwK0xpKytuaVRPWXJxZFFQa2Q3b2RuZWd6TDNldE90WFVpbHI2eks1YStQalhiMnFiUFpLaENaaDZkVnF4MDFOdlU0d04zcVN5YXR0Z25TTlJPTDNZdXRoV2xwdld5SWEzYVBrWjduODlHNTNNeWNnSW1FZzVKeEMxN25GZHBTY1gxZzRLUmE3VG93ams3a2lsZHFCL0tqcnAxdlQwZGFQRGhtRk8vYUtvTk5FYkxpSllzQ1dzdWppOFd2SmN3ejZuREtMcmR3S3pJUUUzcmpzRVN2MkR0ZDF1N010V21FYmhmNXVEQVRiWjdaTzR3YWVidHNpc0lteTE3QUJtWG8yVVlSTTNDQTBOOHJSRG9OMis4NlV2a1RlTTVmN2FDcjEvVzczZ0hyOU1VZ2tJZThKZDk1K2lHNnBkQTZGRTlQcGJ5SWhHNHRkajhSb3RYb00zaXlYbjVOSy9kamZJVzh5WlBIZFpQSm5zZGdOQ0ZzMm13YzFHZzlIcEJScDRrcmxhWVhDZXh6WHA5UGZRUmhIeXUxNG8vR3dXdTJ4d2dyQW5yK3djTUx3SG9mUmFDbWIvU3gwUjYzMnBIeitrdUU5RGhPSlArQnVyZGJCbGNwSm1jeVhIWHN1TXE0NEppQStTazFBYkRRZUtwaTlqa2lrbmM5ZkxMWURwSitTeVY5U1VQSkdDM1MyYTZTYkNZUjIreTYwWVltY0ZlUXpuOGU0UXFmeXlYMll2eWVDQU1ZbC9rUTRCRjdhR3lmZDdrMkZ0QVh6K1EvSFl2OHVGbDgxNnNwczluTEhHc1JVNm52WjdLZjI3TEZXd01BQ1VSTVFvOUZ5UHY5KzJIOTIvek9WK3NIaTR2dGcrTFphOTRhVkdZdGRLNi9jNDdwdlI3Mit1aDJqTkEzOVBkYytnMkovRGlYWnMyZWtrNDlVM1BUMHE5UHBxOVNhbTBUaU43Q3FkKysrWEdiY24rUTZBUkZHTTNLUWpjWWpxdFdqWFErdnpHUStSMHQ4Y01IVTFGc0ZzNjNZUnFhWG5OcGlrY2w4VmR5SVlkTXJWUHI5YkxWNnJKQVNGWEpiTU1GUnJ6K09YbVN6bkI3YklEcWRtd3RwUU9aeWwzWTZ0NktndVN1enN5KzBCN0JnSGlBTVY2OGZVU3E5V0c2V2ZHLzdQbXJWNnZGQ0dsU3pzMmZhRGlqNXRid21LbndoejRLM0lvQUltZVh6SDZ4VVRyZnYydWlnWG44VVhUdzE5V2ExR2pDUlFQenUyNk1MME10bVA3YXljazZ6K1NERUg0ZFA4TUhqSU5aVXFaeUNxRjh1OXdIN2hFdm14a2txOVpPeFcrNXRIVXhMdTExc0NTaGxpcnpsY2g4YmU1QlF0M3NUSVZNT09yTVB4WWlOOExjeVJ0RWgvUUFDQjUwRW15amFJTElSbnVmSXJiQVhFM2pqc2tkTXNPdTZGZGd1cmJDTlFuOTdQWUgzbWEzVHVIdHJBb3RORkVab08wMXNvZ2dyY2JQUk8vQTFHb2ZRQzVtb3RYYlVneUJLSm4vU2JINVpudGJ5Q0NGZVNYUHkrdjFFcy9rQUllTUdNek92b0IwdTR2Ry80d1Z0TWRocTNjUEhCTVJFNHJmNzdQTW9SR0hWTy9LYzdzdjI3UG13WEszOWFQc0VSQVEzTXBrcjdWUEdVZFJJcEZTdG5paFA0YnUvYXdVaStGbXJQVUZ1MW5pSTYrSk1wTHlYbGc3R3p6VWFEMHFudnlPWWNheE9RRXlsZnRqcDNLemR2bDIzZTFNWlM0cFN3ajZidmFKV2U3emJGNlB5aEozYmRyc0hSQ0xsUk9MUGFEODU3ZFNGVnV0ZUVCeWR6cTNScTlBblhCY0t5SisrR1hxQVEzYTBXbmZ2OVhaRW96Y2trNzhXL29rZ3B0OXUzNmJUT1RBU2FjVGpmMHFsZmp6NUhzVVFpSjNPVGFQUkltcXYxeXRnMkxSYTkrbjNNL0o0K0s4NGpKdE81emF0MXAzeDMzNC9IWS8vUmM2cmM1K2UzT25jQXJmcWRHNkxFaVlTdjhTRFl6ejAreW5VbmpxckNESDlkdnR1d3ByRCt5MzdGalZJZ2VDTEtKcWo5M2U3KzZHRzdlOGtrOWVNTXI5d2NhdUZtL2N6bWF2Ni9SaWRveVE3eHIvVDZXODZwZ09pSkszV1BmRmMzZTQrOGZqZjVMNE9QNXg4OHE4NlNkUGpCTUIyK3c2b3EyZ1VmZWIvOEJxVjFtN2ZNUmI3VHpMNTAxRWFTTTVXdVJPU1E4SVNXSDlKSkg2TkFydGVxZE5wRmZxTkMrRkxld2dMT2FWYTFwVTcxT2pxbjlGb0JVUE03YkpEMFBmUTVWRE9kdnZ1R0Mvb0EzaU5EaUJsK2lwb0hiVmFuWGF0d09DdDEvOUhYWkJJL01GKy9lQmJ1bzJyTXhia3N6OWNySzVSYU1vYXZnZWtlVHorNTB6bXk4TTdQTXY3SElReGkxOUhQMFFUb0F5cDFNK1F1eExCVWFsWVZydmNpZTNidGdlM3Fpc2FyYUxrU0wvaGMzeUtZa054TnBzUFJJT24wMSszNVFMVnQvWnZOdStOUGlNZjZwOGtaMXhOcFY1dkZyZVN5NVdpR09PdTNVRHE2VU9GVlYyL3NBL1ZYbThLZFN1azBJNUVLc0l2K28yTGRrVERkVHEzeEZjZ1AxR1laUEszc2hIckh2ZUh3R2syN3l0V3Q5RnlGd2l5aVZGanQ4UkF4dDNpOFd2VDZmOUhNOGxzMXl3MG13ZlozNkVoTDBZKzF3NllPeEJpc0NSd1pUUzZLNW44ZVRMNUcrK3R2SFJLcTRtVVhWQ090NUdaMStzaFoxS3BIN2pWVlFUWFlCUWdpeU9MdWloYjRmZWo1bHVqbGpBY0lPaGd0MEhDZUlnT1lkSzRqY2FoY3B6K0ZiOHJ1LzFCOG1TOVpqeitoMHptYTQ3VEE5dnQyNk9sNkhVcTlWTlhEUUl6b0ZCNE8xSk5lR1RjVFl6R3ZpZTJRb3F5ditOaDdRb0xxakNmdjJUb1dpUzVQMXNxM1ZrVzdFQkh0M0ZBVGl5R09hcHUrRlA1NFBjWUZPQnZyazJBc1lhVWVUWjdPUjRRY2w2TXhyVnA1QjRuMzRFZGpMYnU5ZVpkZC9HRXVKQmRkLytCR2VhNHcwb3U5eEZFR1dxMW8vTDVEM3F2OGRMVUN6NUFkNVZpK1FCVW1oeXpxSzYveVUzTDEzcVhFdlZDS2hvaEQ5ZTJxeHZaRUQ4VGZqRXl2ZlRIZ3ZROU1NVHVpUDZQZm9JU1FwampXMmdzWlgrYWl1WHdUQzg4YjdONU1QUWpCZ3NHaUd6Yzd3YXlTUVk2ajN5UUg0M1NMNkdhWGlFSk92bGNEMEJ2a1M5Unc5OFlwUkdDTmIzOGpRWDl4dFhwTTF2VDlLclhIelBZNC96anRnZFBrb1VNbFEwbkZFK0h5c0dnaG9TSGJJVGtUQ2F2SHA0WEc2enBKZVRoSS8xK1BoYjdwMlBReVlWNU1haHB6U2tYcnVnM3JqL1RDK3FwVXJGV282TGVQUHhjelpFYnJJdUhudGxxM1lXNkt6d3NlZWRieWIydmZqbkt4dzkyTE5ndU5qQVVkVVFIQkhzbTh3VllzS2ljU3VWVU1SclhtVDJwMUhlRmVMR1E3cVFRWDFGUE5EaDA1cVBESHNjRWdxNkZuME40VG1PUmRKUm1RS0p5M000aUdOa05JQzVXZjZsMWtOeDIyZ21NTjlxVXVsWTdjbmgxc3AyQjkybzlpK3lORUY5M3czREFNSlNpd1A4ZXZacUNqa1M5a0ZxTTNtazBIbW03cGdkVFdVekEyQ0dHUW5hN0M3SUd2dTU0WGhRSnhwaVFxM2VncW9TdklhWXZQM1dHR0prSHdocTUxQWxSZ1FjUE9xU1FSZjJCN3hPZElOeG9yMURJSzlqQWVEVGNYQXF4M1ZLSXJhdTNzYjZZUDNXamo2WXQ0UVA5b0pNUnNuRXRVaW4zY3E2M1orNUVMK3oyREFTRlBSUXNwZmQ5N1hlSXg2K0Q0U0VDd0NDdXErUGlEZU1hSFhMRktJQ2dmOXV4bUdneDNlb3lHbUxobVNqb2FhM1dmV1VLWUE2aWZyQlpoZk1hUk1JaDducTluWkF3c01wZ2UyTXNUSktNOElHSi9Xbmx0MURnU0tRTEowZzZzQXRJdmd4TEJua0kxVDcyZDFLcDc3dkdUQWJFcEpsMFMrbGt4U0NRY1VNM20yRU4xMVpBaEJOaUU5V0ltUENvTDVMU0lRZmMvcWFtaTJjVWRIS0FWaWIvRk9GWmFUTFNPN01WQUFBUUFFbEVRVlN0b1RNV1RKV2pUcmhqUGJxdEVIWUExbU9JWVhUalU2VHRFTm1RdlJIV1ZBc1ozRkY2T1ZndEZsNTBQZFM0aEIxWDExV3N0dFNoUW9ieXBHMTVuMVlMQmJnQmRadE8vMkJZSnZ0d3RQRkVGSVpGSjVjcHd0K05Fd3Vyb001Sm5rangrTjlCZ1gzSXo3dkpJWU9jNzgveDY0MEdtaXppR3RUU04xSHdSUEM0TWRiNi9heGN6L0J2dE5mWVFPV29WckJEOXFvY08vdmh6cWhlNUV6ZEloNmFRWHNLQUI0aWhmTU95QmJaQ1VmK3RFN296NGQzWTlRS21oZ0pPdFFuekg2MG1neGVYUVBCaGZJZ0JJb01EaHA2Nk03akJaMyt5SjNRRi9QdU01clJJV0VZMTVYekpTQm03OXp0N2lzc3JZQisrRmYwSFB2MUV6cE5PdlpuQ0dQQndGRDBOdzFqcktFNE5qclU2ODFBdGdqTDdQL3JVQWg5dGZ4NFRNVHo2VTFUNVdnMEdXYXM1ZU12VTI5S1VFTU1kNUJCNzJ2bGdSaUhSS083WlRQOUIza3UyTzJvQk9RQmd6cXR5OXRwQ2pab3I5QVhDRUpEMEdHQWtOQ1E0MlZ4L1hjcHJtSk5wRlB6Zkl6QW5jbU1VWXl6NFhWMXJzNnNGWkpzd3BxU3REYjdHUU1INFZEYXowTGE1SHZFWU5XaXZQSzdkdTJHZjlJRVJKVmlkcFIyWE9xNU55ejNJTFZRSHRwYkVhTUpoYWYzWGM4MHoyYS9VSzJlS0gvcnRwbk04T2RXZmFLaXBBZjNBTmNKaUZDWGFIUTBSTFY2Z3ZjRVJOT01qRDZhRmwyb01UcDkxblpBaEsyRGNEQ0VMeFFZSERQVU12d3hWOW1CajRyRlY3UmFCOXZmaEhpU3UvNThaLzIxc1hMNTJXait3VCt0VGt6N0ZUdEFIMFZhSGJaTEtyVnUyd0IwQ0F3UzZaLzRuSUNJR0dLcDlHS2FjbXRuWnVibDZmUTN4QVRVYW8rcDE0OUlKSDREVWJLNGVKbjlJenp5enAyUHB0Zm9FSlhLMDRhM1E4amxMaXNVM3Urd0x5RzRTNldYMmQ5QmRlRnU2SnFJMGNmanEvdEZRU0FXaStmanhjNmRQNHBHeStwaVBDYU40WDMzdlovOUpraXJyNnljWTM5blp1WWxvNEpmYVAxU3lkb3VGZU44Y2ZHOWNQeHN6M1hpamgxSHFha2VpTmlXU3ErMGZmVmg4bHMvUUUrWWNLdGtwZms4OG56d1hhblB3R2d1bDU5bksrUUorZnhGamwybVpDdWNYcTBlWi91NjlWOVVyN3pTM2dxNm5WWVlOcTY4ZnFwVWVnVzlIdWduZDlDK1pDZ1QwRWtMQzBjUFg0Ym1SdlFxbDd0Y0hwdjRFRlhtU3VXMDJkbm5xNTJLSVc2b1RSV3dCZkduL2xrb3ZNT2hlNHdhVjJjc1FOSlJHYWFtWG9jYXMvZXJXdTNZdWJuVDdmWWxSdjN5OGx2RUVGQ1RzN05uKzl1aGR4aHBNVDlJckc1YXZqWjNIdVBMVVYyMTJoT3kyVThoVlRiNDV4UG41MCt5aHlyUUcxWExLaEFnbTU2K3dDSEhZYUFzTGIzTmR2elpZOUc0OGJqejVDWlVGNDN4MmRtelVxazFkUXN6bDk1ZldEaGgyTm5UUkw5eDIrMjdMQzI5MWQ0VmhkV21WaFJqYnU0WkhqOUJnd0lLTzUyK3l2VUNOREZrbmVNWXVITDVXWVhDMjlWR3ZMSUF0M1cwaFJ3NDdoTVFhN1hIT2dRZGtjKy8zMjBHbTBGcE5ZR2RWQ3krSHBhby9VMjA3OHpNaTJHUzJ0OGNkV0FmeEpHVU51dEVCK0txMU9pRDBoNkhiQitzRitHRzBjZ3RsNStQMHFKeVVKaVZsYlBYUDh0ZHA2ZGZ0ZjdPLzZ1R3dPenNtZlp1cVhDMTdVeUlrdDlGeWRSeEtJdlRLd2tOQ1FsUFE4aE5CRWZNbjc2akdyeXdmMXl6VTlMcG1pak5ISWwwdkV1cmxCMWNrVXpHUmZGQkJORXlSNGlqVVNxSjBOUUxwb3c2WDF2MnJ2T1ZvRk9pWG9GaGJuOEgxMDh5QVZIVDlCSm1ndTcyeTh0dlZ1SUlBa0hXVWhjMkZWNGtrODlYajJZa2xrTXl2YVNjZWJYOUFtRzU2RkNPTDU0d3VkdnY1MGt1ZWN6b0RjMzBDbEhRQ2F2M1BoZURnbDVMLzhwZHdnUnJldmtZQzBhTnE5Tm50cURwSlh1RkpVblF2dmFBeTNCMUlmb0dlZGhvUEpRYUJmL0VpMnoyTTdZTEFqYTloTlc0ejVPTit4R0hMaWdXTHhCV05iNHBtL1U1QVZHL2NYMmJYcWdRK2xZdTk3RlIxMVNyUjQ4ZHVTSUVGdzlOU1I0dUltNXduZWhOQ205SmdmQ0JvWnhpd0dPQi9tbHFLT3FJRG94Nk1RSEkzOUFMKzdSdk5YZkhhRTN6Mk5LaTIyTXNDdzFrdXNLcVJyZlpoMTRncGs4dkVGbHpuWUFJWTV0Y0t2UTlHRjMyT0lZRDViM2lRWmFYMzJqL0NGRzgyZGtYMm4wM2ZmUUZIWWw2K3pVcksyZmEvem5KQkVTZElRWnBTVFhRN2Q3VXZ0OEcvcm00aURpRGtQUGtWc3RnT3NUMDVhZlFHMkprSHRpL3Bid0dZbjcrWk4vQlRhVTlaMmZQa0VmOFBNSldnR05RYWFxejZmaGlQdFNORVpxMmhCR21RU2NqMUFURVVYbWpzZmJNek16WjltQTNNaFBGNG12czEyUFVUMDI5UlV5R2FWeFh4OFZ6TUNvNjVJcCtBTUhvdHQ3b2F6R2o2aklaWW1HWktQMStzbFE2VDluVmNxS1NzN1RJRHU3YTVYNmdnWnVUWlJEWE5jTEUvanh3YWVudE52dno4VEpIK0h2RVZmQmlZZUU0KzhVb3FyM21oUlh0ZjB3azRySndVZDc1NXBENUttdys0SlJVNnZ0U1A0NHMrWEFyMUdxUGgyWkUrVDBzaEhMNTZZZ2V3M1NuQ0xhUml5Y01nMDUyZXIyWnBhVjNvaHJ4ZW03dXVmYVBOTWVDa1hMVURIY285RnRoQXdLd0hrTnNaZVVzZEVLTVlvVEZiQnI4aWRMeWVjRncvanRZTFJaZWREMjh1TVRRRjExY1Y3RXFacTFIZ3k1MjlCdzA3c3pNdWZhWk1hYU9OdExENVRJRThxTWQ3MFBwN05qeEpPL1pxR3Awb0N2S2lBcmQwRWgrUm1FR0svbEpRd1pKeVhMNW1mTDZjK1RLcTFWTVRKUklxZlRTNFljcWx6SEFuNVZNL2x5TXdLTVZCc1Nray9zY3g3c1FPUFB6cHlVUzE2aDM5SVAyQ0UzRG1GRXpoQnFOdytSRGZjVHQxM1ZEZjRiZWpVRXI2R01rNklaaWROYXhRbkpDd3kwUkRVUDZ4bjZ4cHFEVEg3bVQrR0xlZlVZL09pUk00cm9ZWlV0TDd5Q2Q1V0NmZlI2a3BnNVA2RFNOc3orREh3dkN4RkQwUFEzRDIxRFVpUTVoV0VHL1FDbEhJdFVkTzQ2MlQveENoZEI1M0JBMVlxMU9ESlNqeVdRWStzVXhsbytQVEwwcFkwTi8ra05NZHRwMXZiUmVQenlaL0lXYXI5Wm9QR3BoNFJodjNhVERXS2NwMktEOTRFY05CSUtPb0VQSFFFMmluTkJyMG54ZDFZTndkcGFYWHc4UmdmR0wvSkh3QmVyY29YQmwrTnAxQXFLWnp0V1p0YUxPTUVIM3RnOHhtTm1yUHhsWm5meW5kazdwZG5mWTc2QldXN2x1enFLVGVuYUZzc215QUdNN1lYZHc1VWpiRHpLdzFacHpyS2kwMFllRkF3c0JvN3ZWdXBkSGl0TW9JNk9QdmtVWGFveE9uN1VKaUJDWGxjb3BDTGNoT2tQbkwwT1Q5ZnZERTBFak1KSW9RNG1PQ0ZtRFo2N1Zqc0NnS2haZk96ZjNkUHRNUVNUTHlWU0NZWkhKZktQWHkwSGMwNnIzalFIbFgxeThoTFFwSGpDUitDWFNxMGhkNDUxaThWVnpjMHNlQnE0bWVQeGkwYklhTVRJeDJudTlkS3Qxa0gwdU5vWXVpZU5FNG5mU09rUksrMEVJNDhMZ2kwUmFkdCtZWnVRSWFVWmtNakFqT28zR0l3T3Bya1RpYnpTbnA5OVAxMnFQMC94V3NmaHllYlRsdjVIcGowU2FjdHVoVy9iN0Vmb1VYaUpVOWFDMFY4WmlpNjNXbldDUnc4aEFsbTV1N3RsaWdyTkYxTlFjL0xyM2xaRGEwS1pTTEg0UG5aQzIxNFk2Z1Uxc0Q0TktkOGh5TmFHOHBRTVdnYlVFVllUcVJTdElyYmFLVWFmVmIxeFRjcmxQOVB0WllmV0tlN3NhcjNhb3dQQXRrOG5mZERxM29HZ2RiSjFVNmxpYWNCT1AvMU1WQnZZSEtrclcyQS9VSGVRNjBUWDhOZTdZc1VDUTRaN05mZzQ1S3JuRTVLNFlqOVhxOFVqcnFtdEk4a0JoUzFmaE9yeEFjQWNTRXgxeXo1NlA3Tmh4UkNDSGRsR1h3TTFkTTJSQ2RyOVU2c2RrcEVKQXgySzdVcW4vUjVJYVFsS0ZTT1RJZlFYZEtwdTlBaVl2V2cxV0l6cERzWmllbXp2RDlsejV4Y1VMQjJ1d3JvakZyb00zaTFwMUdIeWhZdEs0OGVYbDExRnA1ZjRXdjRWdWxoM3NrZDZudnlFeE50aTQ1U091MjcyZzlpaVhMeXh6OWd2UTYxREpyZFpkWU1vN3BpU2lpbFRYYlRRZTVERVdPcDFiVTllU2J0ajM0dkUvb2VUdDl1MWtTU1lxclNiby80dUxsOW9lNmxvSVRGaE9hTnpGeFl0MjdueWNQYlZNaGxFeStWT01GRmdiR095TnhvUGhKbFVxVDBYbnQ3dnhpSm1Td3kvYjY0c3dwRkJhWmVJNzhEZHkwUWxwaWg3S0F5TzcyMTJRNXI3UEEvNThnenFCSEtBT1lKZE9vMUE3Y0NTVFhwdC9LRk43YzQrVXBSMDRVTDJqcG03RTQ2dktEcy9sS3BFZ2Y3TFp6eU9ZQ0RXWHkzMTg3SFozWS9XQ0tSQmZzcHgvbC8za092bFFkMFZYUk85YVducjN3c0tKMUx0UU1NZVlsVWN1ZnNMMklOZUtpUm1yYnZUSEFycWNiZVRpeWwwUTZhUGREQVBDTUwzYTdkdXEwaUp3RCtVT0NZYTJ4bGVnWEJDTW5tVDVCKzNTSjZ4V0h0TkdnWnRlR3lEb2RBalc5RElkQzc0YjE3dlBFRnZIOUVKc25lVDhxSU1zcFNsMUpTd051V0hrNFZRYjZBenluLytyWm9Sc0w5UExwSEY5bWw0eTF2eFVJUlhvcUFVcW1pTTNWQmNQWW9GdWk3NktNQ1VKaEdoMEQ1M2ZJWXlyYXgzZVk4RzNvUmdlS0MyRUJyMjJyMGVuMklXMEdWWWdOcHZOKytCQjVBWXdmNVNiVERkRXlLZ29ZVEo1VGJONXNOeVM2bTdRajlJNy91S29oZjZTRHVvZnowV0dwU3ZRak9STTFldVBrenMzakFHaEo5bG52b3cyaFV4QTVVQkh5K05PdmlYTTBSZDAyZXduU1ZpMTJ3Y080dUNYMjZ3di8xTytOSWRZS3ZWL3RQczF4b2pjMWVubnN2d0paRi9FNmxrMjV3OWJkRHBEVEY5K092QVlZbkp2RDh2VDZmWHlGT1dVR3d5c3BhOWNOUWd1N3ZWbUhHL2l6cU1DeDRqYm9wd29OdUs4c2RnZWVYTElQZFg0TmZMRmhMYTZNUzJ0a1MyaFNYaEJKMkgxOE5VSmlPZzVyaGVNdFdjY0ticG90S1RXRTlacWh6dG0wdmhqQStLNlFpTTZwREFLSU9qZjFodDlMZWE3dXJ5SFdOZ21DdjVnb2tDMlN6SHlCSmxpZU5YOC9QVVFPT28rOUQ4cHdQOEJ5WVk4TjY2VVdlSFh6TTZlYmQ4aEw2UmtoSW45bVZ0Y2ZDOVZsenovNis5SU9UY2FoMEl1dWQ0Wk1oL3FRRmJGQWNPWmV6dEk4dTNaYy9uZ1cvQkVyb0Y4a251NEh0YnI3Umo5UGZkV1NDWi9pWWRDL3N6amk1UVJWNXNHNmJ0NGRreURUbWpjcGFYM2tMbU9GSjE5a3p3ZkZwMk9jdFFNZHhENnJiQUJBVmlkSVVaaE1Ta1FmaTN2Q1lHdy85SVM3T3JIT1hiVUMwT0xpUkNpNjBUZ2NRa0hZMTFYWVVrYmE1NFRUQWpwYU44SFlXMDBicW4wa3BtWnRlMUZEQjN0Mk5MUyswaFcwQXA4K0Q1b05RU05VWmgrUHhhSmpDcUxWYmNyS3k4UXNndE5UNTluYTF3aitYbjhRSDcrSzUxR0hEV09jQmJOZXh0RzMwUkI3cGo2b2R4OTV1cFk3RjhZTEhKanNMdDY5L0N4cmJDeWNnYjFKVXFud3QvSENFVmZRaDNhZC9veE1oUVJuaHFjelBZREtNMXU5d0JVQXEwSkg4WTA5S2ZqM1JpMWdqNzZnZzUyUHNYb0JvTVJidW1odE1mVk1LWUJCSjJSTzRrdjV0Rm5US05EK28yN3NuSW15Y3hVNmtlSnhEWFI2TEk4MXVBaGN0TEpXZy8zNXpTdFB2TTQrek9Nc1dESDIxQ2N3RnozMG1MYTBhRU9wTzZlUFIrVkJ1UzVjM1BQSjA4WmtwTlVUejUvMFhBQjlKU2p3V1FZT3g2V2oybW0zcFNRaGxneWVYVTBXb01vd0JmUkZmSGcwZWgvTWRMbHBvQjM5OTQ0VUlleFRsT3dRWHRoS0JBMEJSMXFlR2JtM09YbE4rTldsY3FKYXRKbnBmSU1Lak0rSGVWM2owWHVwZGNlUE9EUkhvNjJiNTNyQVNxVDlDRHVMQzAzcXhxbEhMRDZPY2FSS2xzMFdrWlJwZjMyZ0c1MzM4RkM1YWhTSWpxWlh4MlFDa1R2cGQxRDVYRmVZeHp6ZHZzTzlNSStJZHNCaGlkS2prNHVkNGZkTlh4Qk92MWRDbnVpZmVmbXh1K3hvcE9STVVIWG9wdEUzUVRJMmdSRTlFV0lRcmwxL0lIVUZlVG1tWTl5ZkFFbUVRbGM1TC9sWGtmV3VFSWtHdm9KUFI0Mi9kemM2aXg3YUoxS3hacVFpM2pCM054ektUQW5yN3dra0NDVURoQmJwUFptWmw2cXpEaUlxc1hGbTBrN0FRQUFFQUJKUkVGVUQwQ09RR1RJNmNZVHJSaW11YXN6TXk5V0U5N2x2cjZIMG11NDhRUEw0UEpDNFYzMFc2aTZVdWxsR0Jpb0x2dkd3dFhxU1VLS3NQbjVwOUg2WTFuVTl6b20rUHNBSTRvR2xleHR1bGx3ZUUzclY0UEJRM3N3S1hYRVhzdGxhL2tkTk0zTXpGbTBld0dNZ0hyOTU2WFNpeUZlWVdENXl3b1FHRGIwUW1mL1hnd3FXQmdrNE9DWUxTMVpXM0NoQ1ZSVUZHWUJ6UTFIYVdkbm4wZGRNWnU5ZkhuNVhRaFNRRkprczU4bDA4cW8weG8xcmluNS9Qc0hMNStwNC9PakFNcXFoZ1NFRnkwUFZiOHRUWUdIYTZGdWlLYkJNSWVsYVB1SmRmaHVYTyt4WUVjdHU0SEZ2TFQwRHR3VEtueHE2czNLSVlHK2h6Sk9wYjVqRDRVZ1E3Qm5qNVdtZ25zMllaeGRsblpmVXNQU2FuZlA1TTNOUFJOcUJyWVhLZGU1dVdlaFlCZ0NhRnhFRHdkWFJlakFOWmhIQ3dzbjBUWm1TS2RCdk5ScWo4Y2dRc1pPQmN2SVBCVzJDZW5vTUNzcnozZE1QdzhQbzhhRkZVV1dhS0h3SG51Q0VKTGZzZis4QTdKcnBZLzZoZUZQTWNwb1NRM3FWaTRxV2x2ckNhZklFYTJEVmxJZEZjNlN4MWhRbWM3WjJYUHNOa1MzKy9aK2YxcjRMYTArZEI5WmdEVk5uMHorQk9FWU5EcDZlQzYzdGxzYjJoMGYyYk0xR0wvRjRubUlnc0UreGlNcmk1K0NXU2plL1B6cE5Gc0ZrZzJqWm1pbHRmK1JLL2RMWDdmdXR0ZGI4RzdpNElpVXk4K1ZwN25kUVQwUlBKYXhPKzdJNkk4MWF1Uk9lQ01YeENCTmk1b1gwa2Z5TFkwbmg0S2J3aktyUmk3NFU3NUh0enMvNnBwczl1TzEybVBSbmVyMXg4QlJGT1B3MWd1bW9BNWgyc3BqclB1RDhueXlWdnZweXNyWkdKaXQxajNJazRjNFZXTVdiaUUra29kb3YxOEVpcmU2TVJvTEZJa1Exc2g5QVhuTCtmd0hsNWN2SVBkN0VnSTN2ZVI0c2FhcVNJRndxanBFREFHalBYcytKbzN3VS8xNkwwS1djM1grOTlpMUh5SlEwMHRzaUtEVElWalR5M0FzK0c5Y3p6Nnp4bFl3dmVTNXJpZUoxZm4zN2l0S3A2ZGZMNC9pK3VueThwdmtQNjNsMUJqcENJakRBKzMza3pLZ3NKMU1MNlBHOVcxNnlkQzI1Zk42eitqU0dMbmh1bmpTenoyRndrKzRMV0s3R0JvSU42T25xUTRjMGxqd2JTZ0dDM0lBQ0JSQ1JUU2JCeXNmUDUrLzJEYkJBcTFnTlNYTW0xTHA1V29xdG96QS9FKzkvb1NabVhNbVA0N0hHOWlCOUFJNWI3V0RnaXpBb1RCM1J5MzBKMUEyUEpkSCtBTGVmU2J6VlVTWktwV25vQStNblU4SmYwRXV6TFdtWmVENjNicy9JdzJoLy9IWEQvVUZuWnAvaGw0MGlNaGZPdm42WUtNaGhqUUoraTFVSVhJMkN3dkhTeWYwTkJJRk1tenRzbXBjWjRqcHkwOEhIa01NOG9TMnFKZjVHQ3U0Q2RHTkNMWHdCTnAvZUJlV2RQcHJNek92SEZHQWUrT2Vjb09CMWJYMTdmYnRsUll6OHNXRXJyb3hMcTJwTFRHV1VJTk9ZakRoV0tZUTNDZVhtOXIyNklScU5aMDg5aXNBcDNKRDRycmpvME8yOHVnR0VJeHU2NDIrRnZOZFhkNURMR3dUQlc3bTdPenpxWmFRSDExY3ZGZ3EvUlBVem55SWtCUUtiNE1HVWNXVDkvelluajJYeXl6T3NXcmdoNWFNTUxJL0gwdS9OVDM5eXNFV01oK0gvS2RqdjRhUnF5V3RCWlBJUzNsUFFGUjYyYkhMUmFkejZmQTJKNHBSclVCOUNVV0ZmZUlhZmxkSG9TVVN2eFdHTHA0ZG82QlR0N3NQUkRGc0NWUTFja3dPcjhHSFJhZWhISFhESFlSbUsyeE1BRlp6aU1ualZpNGFQT3l2NlVTYVJ1T1JqalIvNEZxTUNEeTZyZ2cyTHJHZThhNHJNVHQ3QmkwbGdxWXVsVjZDUGdERjNlMitWNTF6WXVSb0kzWkVzdytoT0FxRjk2b3VtczlmaU9yeTJMTUhqMGtUMU5DbTA5T3Z0Y3Q1US9scFdUc3dET2JtbmswMUEvbUpvazZZRjJ1MTdpc0dNUi9iS1o4WG94VmlNWTlkanNhMEFzSXY1TmRqQ00vTXZGelo2aGhIMWVxUmR0TmQzMUJzdCs5RVc1MUJDRXhOdlhWdzVkV09EWjRWcHFHL3NkNk5VU3NZb1Mvb3FBQ3l2WjVHdmlldVhGNStpOW9WVXVFdmdEQjI1RTdnaTNuMUdkUG9rR2JqcXROTFU2a2YyVTlJS0JRdWJEYnZiUi80L3B3bXd0ditER01zT0JqbmkvbTBQejIxbUVGMFNFNzhlZ1U4TzR6ZmF2VjQzQTNtQkNJcVZDZjV2UHREalZXTytwTmhocXBycE9WamxLbjNSK0JERE05Q3l3QWdpR2didjdtNTAxRWJTMHY3eUpERkhTYWNnS2pqTkFVYnRCY21Bc0ZJME5tV2twNG1sNUwrQ3JZOVRZaVVFMkg5SHdzR1kwTXRYVzQwSHQ3cGpOUUlmbld1RjNnUUpCR1Exb2VVa00vN1RYUmRXcWNFdmViWUZoZDJTS24wVXRUTTd0MVhvRy9BRUtLbG5pak0xTlRiZFU0bjhBQzV2RTduNXZBVWxOTUUyVHMxOVhydmJ5SENReHVpeTFuVUk1Y3ZxdDBpSUtWZEp5Q2l0MEtld042RHFFRjkycmZ4SHNYWWpJdysraGJkSk9vbVFOWk5kNVVyS2dUa0xPMFI2cHJVVjY1VUxuZUpxcUI0L0cvU2JiUDBrTnB5czltOEh3MWd0SWRhRmh5UC95dWJ2VUpzQ01oR2src0NuV1EzZEdDM0lZc3Y1T2xDamtQVC9RRi93QjZGaDRoVU95MVZLaWNMK2RTRndydHRLcmFuRkNxQ0MvUkNEbGZMNmNwbVA2M2NmalFCcEo3WUpHQ295ZU4rVkxIN2VFelNRL0Q5QnNHVTgreG5KOG56eTYxWkZJN0RJMHpCcUJCU0Z1Z2N4SW42VjVZY3lreHlvZGZiVjExQU8zb0txYVZVVjhTZHljSERnelFhaDlDYlJwMVd2M0hEUnA1bXRUWVpCYTJ3V3BUZVRtSE9KSTNyTVJZVUNQVGJna1RkVE9iS1FXblhRa1ZRUXJqTXNSQXpIditMOUpGRUlGSHNXbTExaTJiRUdrWmRRMzFKelJLak9SbTBOWlFxYmFkejY0RVplcm50eFBDZU90N0Z2ajZNWnJyZ1FXd2hxbjRRR1gxZGpCcFh1YldPTkNlR0JqV0VLekNtNlRGaDBkcnNtelhxOWNNR1liVjNPVTZhZ0RrQ2NTMThvZlp3anNYVzdjRVFpKzMyT0t0NmJHbjFvZnZBRExXdkhFWC9wMTlYazV3SVdQbERwd0QwMWZMclR1Y0FWVHdJSlhuOTU1WDFnL3JQNXovb1ZnRC9JM2Q2K2xYMnRvRHFDV29seWpnaXNMOWgxcXRwUnVnQU16Tm5qMHZQeElyRmMra1YvRjZQNnlDRUI4dVlEQTR4REJaazlVb2xLMnVDRnZkWVdvM1dwcTdpMkFUVVRqeitUeElkaUFRaHVpRThDVll2Q0xtK1IyNTdzTTR5VnJjTk1EYXRpWWU2TVJvTDVBSEM2TFc1eWgxNVdNem00R0Y2d2FXbmRBdkNLeXJzSXRiVzhkTnBaUkhoRjZYWGRDWWdCbWg2YlppZ0M1WmdoOWdramV2Ulp4UmJ4UFJxTmcraDJkajUvRWhoU0NhSDZnbURmNjcyU1ZydHVyMU1MNlBHOVdkNnlYU2RsU0dBRVRKcTVoQXhkdVNHUGNTa243dDZTaThFQWtVRDVZTHBlOUNiNFkwRmY0Wmk0SFM3c0R5UFFqMnJLWHBUVTY5ekhBcEpSWlZCeklmaHdhZW0zakE5Zlg0NmJVMWZ3QWlTRzhPRXUyV2oyZ0VSK1hXWXgwaGFJR2xLZVFoYTZLOW1LQTZqV3MzdEpJMVZxTjFscHUxUllod0lPcW1aZGdpeFVUZnd2VDV6QXdTZE4wWkRET1ZFOWdoTklNKzllaGwwSmFYdG9WaEhoYTNIRGpFaitlbEFSOTJFaWp6bzZqeDdwQlhKQXhYd05mTEZoSjY2MlFxRUhYU2kwUlNML1VOc1ZUWW1ycXNUSFNLTUFnajZ0eDJMcGhhYnBMcThoMWpZSmdwc014VUVnQ29oMHhvSlViWHpLTkl0cUhONzhlU2I5VXptODhJMktVMkVsb3p3WlgvKzNYNUc1S2pqTzAzS2NFdGFkSWRuY1J3QmlWZ0I5UFdJNzQxc0JaV0NWUm9RYXFoY2ZtYWo4YURCKzJxbmtMOElFeGR2R00yZ0U1SktTMHNYMGV4REpFMkhwNC80c09qR0trZGhFdTdRYjRVTkNNRHFEekY3OTVQVHdpd3ZvRjQvUW13SWdVZlhGUUhHSlJ6b3VLNWlOWlIwdGEyMGx3eEt1MmJsR3RtZk5NVkI2djMzMmlmcm9BdE5UYjFsMUM3UmtQdzAreERSNXVucDF6aG0rZmlTbjVlb2VabXgySC90T3gvYmZ0VEFST2wyYjBLM2NxaE9hQm5YUlRXRE80eHBCVFdyZTNyNmRldU4waTQ2a24ySmw3NmhTSHNweVIvOW9Ib1RnejBvbjNHc2QyUFVDa1pvQ2pvWm83Tm1kU0RkcnlSU0pOSU1NRVkzZHVUNnhydlBoQlFkZ3ZWRkw0Yk9MKzVKK2RBVEV6UFcvZ3hqTERqd01CUW5zRCs5dEpocGRBaDJCU2s3eUVOOHNWU3lUdXdkZFhRQU1WWTU2aytHR1diejBtM0JEekUxWTR3TVFtbWVXYlZCSXFMZkw0akpDTkJwSW5TQzl2b0N3VlRRNWZNWDBhQXJGbC9UNmR5bVdEeFBySVpUM0NmQ0JvNC9uVHNXV05TenMyY0ttYjVFUHBkbUh5WVN2NXVmZjZxeXRJbFk3RCt6czJmaGtZVlVhcmlZTXA2enN5OVVLUW5meUoxTmoxS3pEL0VyTXpNdmRSUmdHTWdvV3VBQmVlSnhnQmh0RHl6V1owd2NJRHhMN2U0NEVYdkV4ZU16TXZyb1czUmJoTGo5SC9JVTV0VkYxZW4wVmE1ZjZIUnVMdVIrbTQ2WllkQllsTVNWbTJyK1I5Z3NwMlR5Sit1di9MOVJlMVlIaXlvQTFBQ3BRSW1sazlTMncrMzJyZVB4UDR2SnlHUkdpa1dxVEttRFQ3SzlIWEZjSUFaQ1FjajZzZDlCcXFXenhHYmdNZmNSYmlHOVdPLytXYytGM2c5cFFwTXBmVU5USzZKUnJmbEFEdWNjM1E5eGhHNTNWcjJEUGtrdkhGT2JrOGtmRGk3WWIvRENvTlBxTjY0Q2dtbm56c1BWNXlJZ1lKL1ovZGhvZEhYMzFPRkRnblNZcEhFOXhvSzl0UFovcW9ua2tMa08wWS95dDl0M1JRNnMxNXZ2OTJOaU1EV0hkb3lmQk55WjVGVXU5N0ZSV1JPMUlSbUZRYVcycGdOR204S21JVlR3eXpGL0hMb2MvUTI1dzI3M1pvUDNZdFRCNUtrRTlpdUxkS1VJSDZQR1ZRa1lHY1hvd2tmVldiVmZyVDZKWG95eUY4bmZvTE1uUkhBbzQyQmw1ZXhjN2tPSnhKOTFka0VZVzFwTm9GUElERTJsbkt2NjRIZFZLZ2RDS0VHc3JZODNSZHJ0TzNVNk40WGgyK3ZseEdEaXRiQmx2R3g2WWQwcW9tVHk2dUV5K0I2NU1EMjlJNVVFWEJmbHZVY2lKUkVNL1d6MlUzSm9MTFRiZDVaSG5oMEJpVDA3KzlKUkcvNExxME0rblNZc0l2cUdDSy9IM2V2MXg5S0xWT3A3bzY3QnlGVmllY0pKcU1QMCt5bHlkNFhsb3J5Q3BNY29vbEhhOXRKclppRWM0MGJqSVhJMTNzUGhHSHRjR2F4ZVVDQ09nNWdVNUo2VWdXdjZqdnJ3UnVLaGJ2VEhnaHE1RHJFTTV4TzZpWlpnYmpDZXB0ZnFpVjNvLzkzdVRRZHZXODlGMFM2NWQ4Vk5kTGFPZGtYTmF0VTVqRDVRMHl0MFFUYzM5M1RsOHVpc2JORWhhTlBMZitQcUxGWGFDcWFYR0N5amwwcm5wNk91R1JoZHpjRS82L1oveWdGYjNHNm1sMEhqK2pPOW1zMkRLRnN3OWtEYnNTTTNiQmZQTWN4VHFSL1RDeVVId2hzTFBnekZNRVJITExaSHJqV1BkVHI3MGRZYUt5dm5vSmZLRktNNkNFWWxNUDR5UDMvYVlPdW1yNVRMaTlYcWNmS1F3UWM2dW5Td3BZWDFvbDdQejU5TTJXSzVWOXh2bHBmZktPU2hZSTcxelFyYmFJMlBPaUZPbmdMekE3a0svTW4yellkY1NTWi9hLzhublJrMG9ZSU9WZEI1WXpyRUVFV2RtWGtscWgzVlJRRlc3N0QxMkNGbUlqK2RCTDR5RnNtd1RNWTVIOGdqQkVTbk1icCs1TU1YMDFFM2s1UTJLSHdFblh6ZzdhUnNMdjdpdWtZdW5rNTBTS0VmUURDNjdWZzB0ZGdrWVhDUElTYkNOMUVjODZvaHpXajNFZmdVZG1PMTMwOGlzNElFS2dJSXBLM2s3anNFbEdCSGhKYU04R1YvZm5QOWxXVTRPS1Q5L2FIMkk4eGtQcWYvTFk5V2dPaEQxckRkdmlQK0tQbGFMajhiQWxNZWgyM05TNkFKWWRJdm83clZkZkVjYUFhZDJ1M2JMQzYrbjVTeWZhOGpPejRzdXJIS1VhRVQ3dEJ2aFEwSXdHb09NWFJhMjdtS29BZmxDQUVGYVNETWtXdFJ4cGhNaWNUdjFWek1FS0xyYXdRWWwzQ2c0N3JLMG43WFVRQVVDUjdOOEdvWkhmdFRma1NMcUQrbEU5TW15dVV6RUNjVWNncVJ4NFk2aHZMengvYnZ5bitlN0xpaGtZa1NpLzBELzBSM2hXNUNPVzF6VEwwWTJ3cWR6bTJFekdoNzd3WnRaQ2hTSmNqVFJaZUhyeFFUTTlhNzBXOEZ0YXVXTnpKNHZqWlN4Z282VzR6dSt5dk56SDhBQUJBQVNVUkJWT3NMNExKbGxMOEF3dGlSNnh2UFBoTldkQWo2SFpKTmJoLzQySGo4YjNCMVBXYTMrRU1qM1JiOFdIRGdZU2o2dGorOXRaaVA2SkE2UTJCcDZVSjZaOVRSQVVKUE9lcFBobkdnYWZsNGc1dVhTaThkZTFrMit3V0VhK3p2QkQ3RTFQVDNnZGZjR1B5VFZQbEVFeENEZFpvSWphQzlnVUF3RlhTMGxIVFBuby9nb3oxN1BpUXZXNUluSndRd0hWa0hVNTJyTjJzbFdpNmZUbFB1SVBGZ2djTWF4RS9BV1ZoY3ZFaWVjN2kyTkFqdkx5MjluZXdjakFYMEV3d3JETmlscGZmSVV6VXVHYTRLL2RSek92MjllUHphWG04S3YwSzdNTzdaOC9IWjJUTmNIUWRDcXNzVDVIZS9NN3hobGgxYlVpenVjVTB1OTlGeStUbU9IYTlkMGMvSTZLTmowVzBSMWxVaUJCTlp5VUsyb3VzWEJwTm5iM0M4citTNE1wakl4RWRmZEFTekpwbGphMFNuczZxVzBBVnBOdTR3anVNK2ZTQjM2U3VQdVBrc2FYVFVTYVZ5aXVzMXlyK3lyZUZiVnorK2o0U2ZISStSbzVZc2pIb3VLVnlpdmtVcW1mZ2VGbzlpK0FpcWdUcE1xbmNHbmZiZmp2TGd6bVFkS25kVXY5TWFOYTZOdnNkcG9iNXhqRWRWWTJPM3lITEZkK042akFVN2pocXdWZlZhYVZIeVN1VVpha3Z3SVVaS2YwMXF0Y2ZUQzQ5alRHM0xDbHRpWFRsYndwYVpVNTFuZVB0aVVpZTA3a3BldWJxeDJYQWZHTEdkYi9BWU5hN2NidTJiMEtOUUNzdkxieEZ5UVVNcTlUM2tUVWNMdlR3ZFRZVll5U2hSVDRhN0RCb0dhWEtsMDkvQVEyRThJdXhDa1JjRVNaR3N6V1MrUGlwcW8xTmFUWG85SmNCM096NVNIUVBxUmprazdmWmRWbGJPSEowdWl0SC9sQXh4RkUvSkx2dWJ2a2V1NWtGK2NNbldlMldCMEVjY1pQV1ZkVnp5c2VYeU14Q1JYMWw1amp3eHhJVmE3U2l5RnpPWkwzaWYxQXpKUDloVzdiTWVvVnRabWNHTFpVbXNWSG81TFQyWm5qNXY3TUhINU44Nklsd09NQWJKQzZwV1Q1SzdLWXdjUk1IcUJTSDNReXFYWDZDT09SNytRYkdCZUtzYi9iR2dqRUEzc1h6OXBreEE5REM5dXQzVnZWSHBZSEZYRUxEMlBRRlJ1VDB5Zk9NVnNRcmE5QXBkMEFVZSt4TkJEN0ZKR2xjbmRyOFZUQzk1RGlQdGFmRWg0WFhLQUJsZHJVRlIxLzBUUHJiWWJxYVhVZVA2TUwzRTRCQnp4SG9jeTlnYzZJemNzRjA4UjVPcFZaczJqemlzc2VERFVBeEhkUHhISFJLRTBPZkt5bGxvYmhnMlNGU29LSmh5LytXbUYydmJuQ0FhVzYwZUorUjJSTU1URUFNc3JUSkZZQ0hiWTRoSXBWQ3d5R01lcW9yQWVFL015dVUrZ2dnZ0FyN3k2Slp2Q0svQ09GU0RaZEgxL1o0K0ZyYWdHNHVQSVlac1J5NzNjWFhrbGd4YmoweElhd3d4WGZucGRuT3RWTEUrYU55aExlRzk4TGpZMUJlVGpGYzNrNVEyRVB3R25ReUF3RUd2ODVoNHV1bjRpK3NhdVhnNjBhSEJEeGtFRVBSdnE0T21GcHNrRE83ZHcwTTFVYVQ4Y1ZqdmF5a0c1VWZYNjBlVXkwOGZkV0pBdngrTFJOWW15UVdlakRDeFB4Y0d2emg4NVVTUkI1VjlqOGNOUEQ3dlZrZ21meVluSUZxYUhZOUFMakJDVmFobnlBZUtacWdkK1BSZFBBZWFRU2QxTW9hUVcwRzc1aEY5V0hSamxhTXdDWGZvdDBMWUFWaGhNTVNHczNpV3RZa21RM0RiZEE1NnMzbVFoaVcyMWtNQ2o2NHJnbzFMMk5GMlhWME5qeHZrQk1TMWVZMzY5cWY2bHM2cEZBb2FDTExZZDhFVHVTN24xcGFmVm5VTnk4OVl6Sm1kTkRWUjRNZzBHb2NKT1J6d2h4NllUUDRDUVYyUERUNDFXaUZHdlVKdGFEMEtJME9SVGlWU3MxV0dyNXlRc2Q2TmZpdkluVnpkZGIwZE5jbFZVOUNwUVRHVWxlNlMzV2gveTRkM296TnkvZUhkWjBLTkRoVUs3MTVaZVJIYXNWUjZtWkJpT1puOGNTNzN5VUFjS0EzN001U3g0TUREVVBSdGYzcHJNUi9SSVRYeGE3Q042TVVlSjk3cUtFZjl5VEFPTkMwZmIvcjlyTTRZdDIzRTYvN1Rrdzh4MjdLOXByQk5RSVJSSUd4cmFQMFJyTk5FakEzYUd3a0VINEpPTFNXbGYzcE1oQTBEYzUwN2Z0WktyWFk0NVdRUm5zcm5MNlFxUlk1N2FlbXRpT3pCZHQyeDQyZ3l4UkZMb2RtSCtOM1oyZWZUOXBub0pDc3J6NGMxZ3ZKQVV0azNpU2YwVTgvMmpIQ3plZi9sNVRkakdDNHZ2MGtWd0FFS2lVK0ZYQXM5UFgyQjk4MDduVlZMekhzdWJEYjdoVXJsWk1nS1dIZFRVMi8wdUZJbkkyT0Vwa1czUlhER1dORTE2L1ZIeCtOL0hUSHZMVWF5ZTdncktIZEMyVFMwYkdMWWpkRlp3aFVJL2Y0VXZjamxMbE1yNUJ5TW5SQXdGby90bDlUVWIvaVFxZFNQWEsrSlJ0ZG12QTdlVzFkak92dlFoSVJqS3FRZDBxeUp4QjlIei8vb0MvTWp6QlgyTFBpNE9PLzRCV0ZVdDY1TE5QQkQzVzVPN1JLczMybU5HamQ4Z3BRcHZodlhleXN5aFk0RUxKZlByTldzcmN2Z2NtY3lWOEhyb3lhbzFaNEVSNkxmajRvSjZQY3oxZXJ4d3ByQWRPV3crZWo2amZYLzdLMi9tMXFxNk93a0pDZVZNbERiMmczWHdLZ3pGQUxIdEhGaEd6VWFWMVVxVDZQVlNMUXd1bHA5Y3FId0h0Y1ZWMnJET1k5ekFhaENndHRDYnhYVTl2ejhpZFhxU2ZYNkkra25XcTJEOFZlcG5EbzkvV3BYNjBxbnRKcW9aWUxEc2tJMUx0ekZtUFRsNVpreWJ4M3N1L2ExUk9MUFV1SlpjNkhvckEyeGRoU2o2alBPZWRna3UrenYrQjY1R3lpcHZNQXpJa0RRYnQ4V0lWY1lVb1hDdTRiRHJQWDZvMkNxQ3JuT2JIcjZEZDVhUnAyYTRiMVRZR2hFVmxiT3hMTUllZHE0OTlvYVlWdUQ2RDBCVVVpVEJyRjRSQmFRdWZmWTJURll2UUQzckZoODNXRC9nNThua3orUkZvTDFFNlhTdWZJUy95Zi8rc0JiM2VpUEJhWEtoNGRZSkRKK1BuMFllSmhlYXBXZWg3TTBTV3pMbG9uWlg0aWZlMTRicE9tMU1ZSXVCSUljWXBNMHJrZWZVV3k2NlNVR0J4UGc1c01UcDliVHQvMTMrSi95SDl2SzlESnRYRlBUQzVsYVdwdWJ5MTA2Ymw3ZytKRWIvaEJ6T0ZtckJlNzFwZ1l2d2hvTFBnekZzSUdJdzA4alRTS1BMemxHbVFvcTlLOE92aHhjdnpoSWxONVVoSWxLYmlIenZmNlRmanorSjNsODBzMUhmYmZidllWWURkeDc5VVpVZUNMeEcvVGVTdVVwY29Nb2owNFZwTEFOVzlDTnhlOFFXNjBFR2Fid0h1WmpocGkrL0J4R1I5MkVpa2RNM01nWEd6QmUzV3c2R3hCMFF2WVJqZDV1MzBac1ZjS082eHBGaC9RRENEcTMxVERQN0RONHRMVFlKTlUxTnUwVW5va3l2RXVscWh4bHk5WHJoNVZLTDZhTE01a3Z4K1BYMGlRYjVHVUhtNUdzT3FRaEpTTk03TS9VNFAzaGVMN3VsbWF1S0dHdXZ6UjBiQ3NrazlkVXE2akd1OExscHlRM1ZDVDh3VmJyWHFuVS85RVdGY25rcndjRjBIWHhoajdWbFZTVU5jZnZycXk4RUw4N2ZPYXBMNHR1ckhJMENIZm90MExZQVZpVElUYnMrS2dKOTNuVENZaUZ3b1ZqcHhxTVdOQVlUSFRkUnBCeENUdmFycXVyWU9rSVlkOWp5Y0QrVkwzTGREdnpkUHJyamNZak1ISkxwYlBrWXBWMTZNdFBhbG0zTHVIc1lLWW1TaUx4cDRXRjQ1R3RwekNwUE5mbFlmakRpSnVlUHM5MSt0ZllWdWoxc29NZkdoTytNeklVcWUyR0JYaHdHZTB4MmwrL0ZaTEozeURnTE1aQjQxRmYwSGxxTVNlK3ZKdUpWS0VIM24wbTFPaFFObnNGZkdkb29tYnpFTEc2emVUTmFyVWpzOW5QeTdrcEV6M3lXUHN6cExIZ3dNTlE5R2QvanRWaWZxTkR2Ukd2bldnb1I0UEpNQTRDU2JjaEJLUXp4b2VNbnpDR21KY0duK2kreHBsNlRjWktXZ09CNERlTTA5VXZUN0Q0MExsaklRRWJqLytyVUhpM2VyUkU0aHFhZmcwTHBObThEODBraGhna20yMXE2bTNxOEc3SW5LbXB0OUJIdGRxeHd4TVEvWUZmbkpwNjA4cktXYklBQnp0MlBSZHk4aWdTOFVMT0s1MmJlNTdIbVh1RUNyYzZqamwyZ1B2a2NwK3NWSjVhcXowaG43L0VZM1pwc05NQjlTMjZMWUp6QW1JbTgwWDhqYjUrZGFIRHNOSGY3Ni9xQTZXS0JrZkxEMS9wY3JoMUpPSXVzM3l2YmhjMmJ5ZVYrcW4zZnVucnNjZWRkVklzSHZzUHJZN2tlUHdmbnJWS0Y2L1dtL1I4MW13RkpRcEgvT2k2L2pUaVl0K00xRldKeEY4Um5wQ0hpMzlSaEVBOC90ZlZFblQzbjN5aCtXQXpjNWRsRnJUUnJqSUk5RHV0VWVOdUx5Wm8zR0FzRDZtRUxNTTZuZjdhek16NTl0dXUzK1hZSi9YNm8wbXdCSEtNbE9vOFVnYXVVMkRVa1ZRSFZqbWI0Yk5LMWRtNzl2Y0dMNEljNCthTjIwdW52NHMvdWFqdW52WDY0Zmd2YWsrR0FuL3FHSnR3VUdsZkZqU2N4MkxOZVB5ZmNxdi8vVVhRd0N3b0ZONWVLTHl6MHptZzJYd0EzRE81Z0J2eGwvTjI3SGo4VUd4THE3U2EyRmFKT1p0U1RTNVgxNkI3VXcrY256L0pubHB1dGU0bW5FK2t0Z2QzK243REZlaDc1RzZwVlJHSWdKQmxqQWVNUnRlNXByQlFTNlZYeUd0K09UUHppbkhlVkl5V3g2R1hJc010TnB4eStSbTBmaXVYKzNBdTk5R3gxNnVGenNNUmRnZXAxRTl3amR4RS9VVFBDWWhCQWl1V29sUlRVNi9QWnRkT0drSUFheENvMm1DODFJMytXRkRUUFRkUkxBL2hzYTNScXFTQzFQTGVITm9mYW9ta1dybzZDZnFtMThZSXVpM09aSTBiUUdncGJOT3IzYjR0YlVrcnoxV1p0TUNobVY1aVVMWjFrNUFtWE10cjNyZ0dwcGVRaCtFS09kL0xjY3lmUDhJZVl0S2xzdnU1cXl1dzFmcjdVTWVDa2FHNE1TQUdKeTJmdytTdTJCR0tQTmdPcW5QR1BhUFJxa3lVK28rUTZLQ1dBcm9Wd0hwSEZzQjFJOHdJYmUvdG1EcnBTajUvMmZMeUcySFBOSnNIT1pic2gwVFlnazRISDBNTXdwTkN2VUkrQXV5dTJka3pSM1hYc1VOTVgzNjZFVmF5VUJNUG44WElGOXRHYkVEUUNibEFERnU1ejBkdTdGSEZtNExmdUs0dSt0RWhvd0NDM20zYjhyYXhvUjlhdFVNY2lYOGRMVFpKZGVsTWlBekpSQm5lUEVacE9qVnkxUjQ1YzNPbjJ2UHJ3NXVBR2lVajlER3hQM2ZiMzE5LzVVUmxVTzByOXhUUmttbGpXMEV0TnVoMGJrM20rdlQwNjVlVzN0RnMzbGY5aEpvMG9PL2lPZEFNT3NFaG5adDdPbXA0OSs1UEN1dW8zd3NRTkhPelJzd3N1ckhLMFNqY29kOEtvUVpnaGNrUUcxYU9hc0tFankyMHM5blBpQkNZekVRWmlZOU9hK1M2dXRYdGxQemQvNmpDNjl1ZnNkajFnN0x0U0dqdmpETTlmUUg2Mk1wS0JVRkl1QlgxK2s4eW1TL1pMekNSbjljTHQ1MmNoby9YOUdHaXhPTi9tNWw1V2I5L1hxZHoyMGJqb1JRYlJ5ZXZWSjQrUGYwcXg4VTZyYURPdlIyN0c3U1JvUmlQWHlkM2dTME1YVGtsTmdUOVZvakgveng4cHUwbzlBV2RiYnVjV1lmQk02elh0azZNYm15Zk1ZOE9tUUVYZUhiMmhXaW1kdnZPOWZwaHRQMFkrbmtpY1kxalNCcWhZMytHTkJZY2VQcGlmdXpQc1ZyTVYzUW9YaXE5U3BtUmxjcHB5ZVF2UmkwMzFWQ09CcE5oSEFTU2JvUEJvNU5VMnRZRW02blh4MGdnK0JCMEdJekY0cHBxS3haZnM3RHc1TkhianBoT1NScVBrYzRkQzR4bnNwb1NpVjg2Qkt4YXA5VHAzSndtSUhZNnQ2QjNIRG5aU0tTSjhZak1yd3diK2o5YXg0SGE1VlFXWU4wRXhHNzNwa3RMNzhTRFl5RFB6VDFMWnhOS3RkKzI5K0ZnUXRyRGxjcFRoU1hLaml3VTNpczJCSDJMYm90Z3ZNaWJ6SDFhQTJlSHRxY1dBOHZlL3NKaDVidm1OY21mSEJibDQ1S2dyY0ZQdU95WHJsUlVwMk13MDJWeDhaTHJyLzhCL1pYTHA0c0pRRVpoN0VFMkNsdDEzY1Qrdm4zUGR2dWQ2WVZhWHVCeGNSakVZdjhRcTg4VnlqNEJTbXdGOGtUazlVbGJZWjJsM3VzdERDNjRmdkJDdDlNYU5hNmkzODlVS3FmU1g2MzJPTEY1OVBzalQ1Z0t1M0hIZ3JBWHZjamxMbCt2aDJMdDloMDh2cWppc3g0Q1Z4NThZQ21HVk9xN2dXeUZyVnh1SlFNVnREbXoydnc4RXFsUVRILzRoQ08xamJOQ0xYUnpCQ2pINmhMNm90eVlKT3BXMm44SVg0Mkx4OHhrdmdvOVhTaThqZDRocjlVT1BDdVM0Ym5jeHp4dVJWdVh3V1FKeEx0em80ZWZRQmtXRm81R0s4dmYyamxPd2lpRkFBQVFBRWxFUVZSY2I1cWx0ZUdsYnRRRW1tR0JvRGFKVVhFOW1IMUNucWZteU00T2R3TVZEM1ZzZGRQcnpZc2h3aDY1emViOWxmaFNlK0FIam5JUjFZSkxvdFc2RjIxYVR2NzgySVduemViQjFMNlp6T2U5cjRROW81NEwzeEpCQUZ1UVVzWFo3QldGd29VNlgxRVRyWlQ2RzAwL243OVVySzRVdkx2WUVHZ0p2cEFiak52ZjErc0preDZpWVlyK1dGQUNmTWpZaUExdjcrUmJMQWVGV3RZWnhnUnVlZi9ycVVJQ09ZYlB4UFFLWGREVmFrOVV3OXozS2VSQk1ISXNoTjI0WS9GdGVua3JSd1VGVE9Id2o5ME9Wb2VRVEM4eDJJREhNY1pIblZSbys1YVgvZW03Y1hWTUw0UjE2QVNsZlA2RGdjeEw5bTFMZU51ZkNvZExaVHRsVEFtRURSZ0xXb2FpMkNqUllYUG5WNnRPZGVDaENSbFJlc2YxUktRQVM2dWlLT3FFSmdWVjFQQXhkb1ByVitXMnh6bEhDb1FtS2JLa1p0ZUZqVjlCcDRLL0FSelFiRHJFVk5oYUxyK3hVb1BONW4wcmxSTkhYYTh4eEhUbHAxOVdxOHNqMmhBR1JyN1lWb05pb2E1Q3oxL1F5UWlaUWhCaUEyT0piZ1FmMTlWMDhZeWlRL29CQk0zYkRqYTRTZzk5ZmZXZEVmdnhlR2t4ZjlWbFN1QW1Db0lBam9rZHF2dzBEUUoxUW1tSVRPWUt4KzQreWxHMUZjOGdHV0ZubkVXbmIzL1d5YVFjVWk3UlR1ZjJZZ0xpOGRXZmFMZTE3cVBUQ2tqRlViZHB0ZTdXYkI2Q2VJdmNGbXRYby9GZ09oQVo3NmpaeWZvdW5qK2c3TkMrcU1ucDZWZkw4dCtzWEQ1ajlPVzZGdDFZNVdnVTd0QnZoVkFEc0VaRGJGUVdUL2JxVFY1ZG9BakpSUEhSYVkxYzE2SFNScW0vMlhxWGdmMnBqUHgyKzA1Q0c0eFpZZTFNK1U0eXJVdWxsOW5OQmlQNUdZM2VNUGpvRnQ1WCtqWlIwRjBUaWQraXREdDNIa0hMcmx3UEdOVnNCVkt5Y2oyLzE1WS9Sb1lpT2FSdW8yYmtIdkRCb3Q4S1J1Z0xPalVZSFR0a3UyN0RIMzRhVWRjWEc5dG5US05EL3NBb1M2VitPRFB6eXZuNXA5STdyZFpkM1M3VWRacTAwMjNCandWOWZOaWZPbHJNUjNTb1hENk5LbngyOW16S3V4V0xGNHphNDE5SE9lcFBocG1FRGZhZEhUOCtlQkZ3R1RZbFU2K1BrVUF3RjNUeFV1bDhXdUEzTi9kTU1WaEtPdXJyQVU1SmNxQ3BjelZtcmFnWTQvRCtxTkhCVFlhenVzTVh4eHpmVXZoT1BhdmZkV3h5QjA5d2FlbmRxSG5aQ3MvUlBEU01EbldSRXhuSHpDR0dENVhOZmtySURhMUg3WVFhTEVZV25mMTdnNjl2Z3B3eHRneG8zUnM4SDhjNHJOY2ZReTlVUTZxcEZiU2JrZTFLbC9YbE5QblVNWjBjS3RQakNCaGhPNGU3MWJySDhLZVEvcVQ4WkZEYnRYSmRkaE5ldi94MDB2MHFhY3F0M0FYOUFPOEN4R0tyNXdrT1ZkZkRYYjQyT0JlcDNWNXJCWXkwUnVOQllrTklKcTJ6K2RBNjlmb2pSbHdTRXhNUWkvMlgybTdZeC9hQjJrK3gwVmhYbWZYNllmUWlrZmpMNElWQnA5VnZYRVcvbjYxVVRxRy9lbjF6SmlBT0Z2K050TnZDYmx3TlZvMU9oNk5WcnovS2U4TVA1ZDYzV25jWmRRMWFscVJLUHY5aEVRVHgrRC9FYXZFZWJYOGZvVG95NWUyVHpKTEphK1NWaDZrVnQvTEsydzhiL1NwazZWQWVxdE9PZ3FJVnFDaFh4M2p5eGswbWYwc3ZIUFBEOEVWS2hxVlNQMUpiSzd1U1NQeUtYbFNyVHg3K05OaTl4S2pDSlE1aHJsdGFoYmU2Z1VsTlZySlVoV3ZxQm1ZQlNRODVxNnczZU5OcWZXa3UyRlZ3bkJaK3JTdGw3RHJxQm81MmQyMitzRWV1ekhldWlxL2hnS0Fwc0d2ZDNrd3BXeUllLzV0Nkg2RzNwYVYzeVRmL1BqczdmcTlzWVZYUkVmUWlrN25LKzBySUdmVmNyaWE0S2JYYUU4bFZTS2UvTmpYMUpzMUZTeXA0SFkrUDN6UW9uZjUvQS9QbVJMRWhLQXZWNFRSU2ZHY1VaTnBKK2JhaEJxNytXRURNbEVJSmNweXVTWWxtODE3RDZzYTNXQTRLSmRCcXRXTkdYREtwZGs2bGZpQldvMk9UaGc3MVRhOE5FSFMxMmxGcW1BOHByNDFnN0ZqWWdNWWRoMC9UeTFzNUVyQTVhZkYzTHZkeDB4TytYQW5KOUJJREk5bmhmVFFhRHhXZWVOdWZremZ1YU5NTFF2aFlzWHJ5UWpEN0RmaTJKYnp0VHdYMUJOcy9WeDB1SlRFMmVDeU1OaFNwREFHS2pyanJwRUI0a2JSUGcreTBxekh1ZFByNzlLTFJlSlQ5NG1ielB2VENOZjhhWUduUm1yUWNvbFk3M0s0T2VyMFpLdTJvMEhDN2ZWdDZRUjFwSEQxNTFoTHR4bUdRWkowQVA0Sk9CVjY4cDFscllqakUxc0xXMDlPdlRLZS9UcnVWVkNwUHA4T3FoaGs3eEl6a3B3K1VVdGpnMld4R3Z0aFdnK2F5d05WeUZVUStnazVHSkpPL29CZHEvRzQ4WWNSMU5WMDhrK2lRUVFCQjg3YURWUEZkSGE2eHNrUGk4VEg3TEE1ck1YL1Y1WnNBVFpRaGwrRi82T3NESzJ0VlJUb1N3QmdYanVDdE1JenIydkcyNkl6a0p4MytpQUxZMXhJMG0vY2UzdXZSQ0xYVEZUSnp3LzdhY0RCTnN4VlNxWi9LZXo1TnZ2NmVMUCszb0gwcUZXdVBEYnRPMTNmeEppU1QrUkx0aDFTclBYYXNLUzdHV1hSamxhTlJ1RU8vRmNJTXdKb05NWm5Gczg5SXkxT2RKQkxYaUMxRFNDYUthYWMxZFYzcjljUHQ3UWhGTnRpdlVXa0tBL3NUUVNmYUxnaDlUMDJSVkVobE1USlRpZTlPVDcrY1hoZUxGOWljWHdQNXFheUM5Zk1Qb2lyRWFtZENFeVVTcVkzU3AvcXRrRXBaa3kvbGx1b1BHQzZBL1NoaGZVT1JjdDhvZzMyU3NZeFhiOUNPNlVhdG9JKytvSXZIcjZNNWlMWGFrZloyZEsyQjhIUEVXcjZZWnA4eGlnNU5DR1FhaFRwZE15RGFUcE91L1JuR1dOREhoLzJwbzhWTW8wUE41djFwY1dNdTk1RlU2cnZUMDliNlBYVE9ZdkVWcmxGdUhlV29QeG5HSDJNejlXRVRiTGhqL1owM0lWTnZoTDVBTUJWMGFpTHN6TXk1RU9tMnBhUlBFVzRFT3lYSkZRK2RLelJtclVpbnpOSUxDQWs2amdtQ2cwTXZWREpYQlF5YnpZTWN2MEx2eVBQZm5OUDd4cWFlUjAwYlVIYWpNdm1FakY0dUw3K0xQSys1dWVmWUU4MGU5SHJUMVBxMHRHTXN1ZHduWmNGeXRkcEVDbG9iQTR0T3NWa3h1dFZmRjRiUXBFNWgyYkt2SHRncjBVcmxxWU10amoraXBsN0NZcWJJZGJsOHh1Qmt5V2kxZWt5emVjandiVlVQS0plZlRkRjVaQzlXVmw0aXhrR3IzR0RzVmlvblEwcWlZOW1XTlBXbXB0NGlwQVJmWG42RGJXZkJLSUpyS3l0bjdkNzlDUkV5K2Z6RjlHSjUrVTMyNHpWUmRkWHFVM2J0K29LeTBXbDltN0FVNnVNYmpRZlRtNjNXUWJTcHBnTzFJZ29CQXRwcG9OZkxGNHZuaG4wZWt5S1QrVG9kMDdDeThrS3BidFUwNXp3Ry9PTGlCeWxhTkFrVVhvZnBNL2syYWNqaTBBeURjdmxaS2xpUEhvdk9KcVFIcTdhR051cTArbzI3cGFDVUZZeFJqQnJYcWRrYjBMamUwQTU1UXZvNVN0ODNHb2VXU2kvei9xS2F4RkN0bm95aXlnbk5NK3V0ZkxTbXRhZ2ltZnhsVUtleXlxbnVWOGdTUHF4YVBacXFxOXU5YWJINFNyb2dtLzJzdXBqV0ttR2M0bG5Jc2tGdktaWE9jNzB6eFZiUS9RWTVPYmdjVHgwN1FVcVp5Q3NyNTBDQVNKRTRvMUtlUm8yTE1CLzZOanEvK2pwS1c2bWNOUGloMzl0L0YxS0xiR1ZvQWVGSktuVTF6WEdCaTFzdW42NWNJTVJXU3FWejFmMU5LWmVmaTBlVzYwZkpTb3ZDNlZMT2pHUFBaUDNTcmkrNWg3b1J0Q21kOUdwZVNYWVlyS0ppOFZXRFhjUS9wSzRrYXc4RmtIdGZwK1czcHBhWFh6dnNiRVFpRGJsRzFqcDlXTHI5MXFOQmlMbXVBdC8wa1V2SWJmbnVpaisxVUJJTk1Yam5Ub01pSlc2NDRWdG9idGxGRVZPTG9oN2E3YnVndjVIOWhCNmliQWtJMHFXbHQ5TnJWREppZHEzVzNlMS93dzRTN2ttcjZGS3A3MnVlVERRVzJDU0RwN2pMb0dBM29YZGswbWpWOG00MEhnTHJRc2hlbDgxK1NYNjZyclJRMXNNM3g5ZHJ0U2NJUzF4OFVtOExxNjQ4VWNKU1pCTXVnZFZFV2ZEUWJnT2xESWwwcWlNMDdFQ3RnQ3lYbnlIOXlWQThxR0dNeGdJSkFZeStjdm1aVkVMMHFKV1ZGN25lMlo5WURnclVKN1U3UkFmc0dhWGRNS0NhellPWGw5OVlLcjFZVEVZbTgyVWg1UmhaOVpPZ2IzcHRSMEZueXRpeHNBR042NDF2MDB1TVU0N0NHakpIMDR1eFc5SnFFcDdwUmJJT21vaGtNbG9LQnZQWTVhZmU5cWRSNHhxWlh2aUlraEI0eGhHYkpCbmplNGg1MjU4S1pOcGttYTBoZ01lWGlWc3JkNlZDQWVHTkJTTkRVUjlvY0dVTUtFTU9wZ0s5bzBZVFhNVmR1NzRDUllNQzBDWlBzQWRnTXl3dHZaVXVTS2ZYMWt0RUloV1N4bEEzVXM5YUJVYTNYRms1a3k3SVpMNGhmQUVEU1pVV0RVVEZzTDJ6dHU5c0p2TUYrYU1IcnF3OGo5b1I0MW9KQlB1aFhYWnF0U2NKR1cxVVp6VjZrMDUva3haaER5L0NDUU4vZ2s3MWpYTDU2ZEs3bnlpRlpqVEU4SXNVdHA2ZVBwOHlFNFhDMjBtM3dzVnczU2Q0N0JBemtwKys2QTAydGp3ZUEyRWpKLzNyKzJKYkRVb3pTejMxVWd3NmtwK3FiNFFkZEVMWFFrWlRyT2FZTjQxTml1c2FSSWRNQWdpNnQwMm52MDR2bHBmZlF2a0FhRDJvUHdvQ3cxUzJlN0xhV2l5czZncmJSSkVxa2h4dFZPQnhyZGJCOHVzZm9kMVQ0Q01QOHVWSHlJRmdEWkJPNTlZbzB2Q3RqT0s2ZHJ3dE9rUDdjN1dmTEMrL0V4RVNDSG5JNUdMeE5XSXlvdEZpb2ZCT1lWa2F0MFA3S2tXQVFpTGpyc0ltaEg0cjBDSmhrcGFwMUkrRjFmMStxTjVKSk5hT2FOQjM4U1puYXVyMVpDU1VTaSt4Sjh4OFdIUmpsYU5SdUVPL0ZjSUx3UG9ZWXFYUytaVGpoNHFVVXpHRVdOMlRiNnNRa29saTJtbE5YVmU1cDlIWjFHcm9xT1NxeUNrMXEzdXdtZHFmVTFPcjIxNHVMcjdYTmdFdUJqVzBlL2VuaDArS3RJTm9jNkh3RGlGdCtFcmxHZlNta2Z4RVhRM20vaDZKWUJkOEJ4a2ZlNkhyRm01R0pzclMwb1dWeWlscUxNTXhiellmS0ZkZnVFeUUxVzhGREFFU0ZQQVRZVVVNUmxrRXczTng4YUpXNjE2MjB1b2FpdVFIQ1d2VW5Fczc2Y0tnTFpWZXZtRlpWNk5XTUxtdHZxRHIwRG94ZUtERjRxdlJiM3U5YWJuZC9sT0hieHQyakU3VEY5UHNNMGJSSVgyNjNaMTc5bndZSnB5SytjT09yVmFmVEgzR05rWGVqcGJUcEc5L2hqRVdUREN6UHpXMW1GRjBTQjRkY0w2d1JNcnY4dm1MaEJ4SzhLT0ZGWTA1ZU5URXI3SEtVWDh5akQvR1p1ckRKdGh3eC9vN2IwS20zZ2g5Z1dBazZHd1RZUytuSTRuaDlORTU3SlhLYWFPV2tnYUxrYzdWaEJMNjB1eDVpWExWWWJqQ01xZlg2cXh6ZGJ3YmhxMUtNRUdQeUhvbWQrT0h3cHpsNVRjdkxiMVRMbnZZVDA1MGprRTlJWVZYcXoxZXlPMXZWUndTejd1OC9EWXl1dkw1RDBEQU92S3pvOUtwU2lHaXhYV0toRTZlVG45TlNFbHVuOFlhRWtZV25ZMU5pOUVKSDN2U3hHTC95ZVV1ZzZVQ0UyVDM3czlCRGFoUWV5eTJ5K0c2NVBQdldWcXlUci9HZi9FcHJPUlJ0aHA2SitvTzk4Ull4Uis2QysyTlNTODh5bE1vdkwvWnRMYjlxMVNlUnN2MThLMTk5bGxkMVlRUm5zMStCaFlTT3ZydTNaL0YzYUxSa3BvZlNsbzVWQkF3bXA0K3IxUjZCYm83S29HY1llaGcxM3BBeFRZYUQ4Ukh4ZUxyVUxHUlNIZlU4b3RJcEpiTmZySldPd3BEWmRldUw2SnVhVEl2ZXRMd1Z5RHlNRGdkYjlvREgyZzF4TEtGR2IzcDZkZkNyNVlTNTZYNFEvTkJpSGczbGhHWkRKSTB6eEp5T0tGbXhFUjA4WUNvQk5UdDB0SzdxZDFWVVdYZ1lHMkhLdjFPYTlTNFJpd3V2cCtPdWxEZ0o2Ni9mazB1NzloeGhEcXkwSlJjN2xNVVhDYWJqQ2dVM3BiTEtVTXc5TWIxSmhwZGhtMkhRcmJiZDl5ejV4TVlDOUk2eVVtQlVQUllFUktKTkthbTNnSFRFOE5CZWZMdzJXWm1WbC9MeVRyV0FBazJBNEc3d1I5QS9aVEx6NE1Vc2hleVVIZ1A3WHRFSUs0QlZVMDJKZjVjQjZ3Q2xVQVd5ZUxpeFVvU2twejBLQXpDRFZCN2pjWmg4RXVYbHQ1QmIwNU52WUhpT0VhTkswMlRCOURDS1JTMTM0K3A1MHFudjdOK3pVU0VkbUtES2Faem5zVG0yd0FBRUFCSlJFRlU1dHJVMUZ1WGxtNkJ1OG1UYXArQ204TkRHK3duNzNPOUM0WXFaQVVjRWxuYXY5aEhvZ3pmOUgyWFZ1R3RidExwYnlXVFQwSzFJMWlHUDN2aklxbEQ1aWFSelg0YTRXOWgyYXd2d3A5cVU1Um5lTTlYcUxCNi9YQjA2WldWRjhBVGlFYXJveGZOYi9MSUpTQytITytVeTg5UXIvZmRkMjFXRTZuNzRUdWd0MDlQdjA3OXM5MCtVRFdsWFdvcDh2bEw4dmwxUDZxV01tY3lWNHFBUUhUU2tiR2docWJYQ3dzbjBqcDR0VytIVkRmdkdMN1AzTnh6aDlmUU5Cb1BwMmZNWm5WbjV5Q2FXUzQvQjkrQzdRaE5KRUpHUnVmL0FwTURRd3gvcXRQU202Ty85WDJ5RXBGRFVtdHE4ZWJzN0F0RnVCaU1CUWhNcEN2d09JZ053V09KeDY5RGRHYlVmZlhGY2ppbUYzcjdaZWhqc0JCUVd2elJ0RFlsbVdFNGljbUF3MDl0Q2hsRmp1VUVHSmhlVzBIUWhXcDY2WXlGc0J2WEc5K21seGluSEpHVEk3TVR4dEtFZ1RrN29abGVWeUllSkdSUVNVNUt0b1M1cTNhMk05YisxRzljRTlOcmRiS1hDR0RDa0IyZlEyeWMvYmtLK2dZcWFtWGx1WkZJVTkyVG9zT0trTWFDaWFGb1FLZHppNldsOXpuZVZQSWZyVFl6c3hvVGx5cjdCTmZqaHBQSnEyMk9tQVZpWkFnbjRhblJvMVpXbm0rWGlwQ2Z2aGRYMU9zUHc1Q3h2NE9mVU9XZm1ub1RwUEdnNU45QVpwVG1oZVBQSHZQQmdISlZFQmhaRkZ1VU1YcXQra1Q0RFBtUGxaVXpHNDJIZERvM1Z3bmFrUEFuNkNCUFlFOUNTU0Z2c1h2M0o5WDdkcHZXQk4waEJqbEF1OFdqVWRMcDc5S2JrRFl6TXkvWnMrY2pNbU4wN3R6Y0N4d25KK29NTVgzNTZROGtMQkVod2YyUjYxSnZ6czgvVlhOYXFtLzBmYkh3OEdkTG9JTWhhWXBXUUx4Ymhid1hGbzZubVRIaEJaMFVFTlRJUnNBQWh0aEpKbjhsSmdDZGVkY3U1N0YzSkVib05jVHZ3b0tMR055VXVLNUpkTWdnZ0tCL1d6d1gxQVNFTGJJZ3UzZC9CbzlzYjlhcHFUZmFMOWJYWWlGVlY5Z21DaDRIUXNNZWc0V1V0bjg5bjcrNFdMeEF5RkF0bmlJUzZaQm1UQ1QrT095KzZjZDE3WXkxNlBUbEoyUTdaQytzU25RR2U0VEUxYXBFd0dUNFpBT0UrdFZyU1A1MCt0djBHb3FzMmJ3UFZCTGFndElCQ0psUU1Sejd3K20zUWlMeDIwRU5WR21pbTEwVUpKUDJsTENCaXpjaGNCeG1abDZLQktyTWtyeHFmdjdwdEZlS0Q0dHVySEkwRFhkb3QwSklBVmcvUXd6RFpOZXVMOW1WSS9xMkk5OGZxa2VzUXpnbWlrR245ZWU2d2tyRW45MWFMaFRlcGFiVW1OcWZHSTl3Qk9TOGdmMFhGeStsUFllOEV3RjI0Rk5BcDZOeklxUURoWVdZZ3pDVW42anFkdnYyK0hWSU1IS05oZlNwaDFmZUdwa28zZTUrZEs0aUxuT0UzZkw1RDlxdk5HcUZTS1F5UFgwQk9WOHlZbnorcUdHcmJ5aEdveXZvR0lpNHl0ejNGN3dEQ0NHRi92UmJRUjhqUVpmSmZCbWVvSXlpSEVvci9PV1ZhK2tiRytFbUkzUjhNZjArWXhRZE1tbmNtRnk1ZHc3K01HQWprUlZWcFJqeU5EMWxHQTJueWNEK0RHTXNHR0ZrZitwck1jM29VTCtmS0JaZlRjSm5adVlWYW5NSFhOQnFIWVQwRThaUk12bnI0V29jcXh5TkpzUDRRQ05USHk1Qmh6dldDRFpUSDRhSllpSVFkQVZkdDdzdk5TVUdZRDUvb1hwL2F1ck43ZlpkY0gvWXRFZ2pUaDUxOFVaZjUrb0Q5d3AxaGRaVTFkWHR6aXVORC9tamhqbEdEWjRYZ1Q1OHVyejhGbWtlTEtxNnhSZVJ6QlcrZ0JJY3BRZmhMdEdFVjJFSmhJSjZaQmhVUXB6aXVCaGpmSDcrYVVQM2lOSFNhTGxTV2pmb21zdDlESkZ3OUFUOE44Qk05Q2lNTERwYklUY25SZ2VpZzRPeFIrMnM2L0orb2ZCZTJKZURJOUxYM0tINStSTWNJd2N1Ni96OEtiUTVKeW9DSFE0eWVuNytWUG8wRXJHN2hmM1oyYk5wSnFhUW5nQ3VuSnM3WTdER2ErVEd2ektBZGJ6YzVjZzlqSUpJK3V6c21hU2NjRnVsOXBMSlh6cW1MQXhLWlkvaGVubk9WSDdIeWVMRFpESmZYVmc0bHViL3luT3BWdWRTeUpIMmdmVVJpbitnY3BRZXhaaVV4NU0vVzQwY080WENSU29BZ2JyRk5WTlRyOHRrUGllTDVMaCt6RFRUb1Vtdld2RUNXZlBIME54dElkZkVrTUNWMno1OWRzTEFwVmhkK21aTnhhaFdqM0k5c29wcWZuMTdFUzVkR2pZUVJoUjFNSFhTdDN5RUp6c3NENU5PYTlDNEEreGZIeTc1NEtMeG9iSG8rcHVNYWpLWDkyT3hhMUZtZUw4ZWtVZlR4dFViQzcwUnBYSjVINDZXTXVBd0ZsQWhxRktNQlRvWnhPT0hNcGt2ek15Y28yYlpyNysvb01XamVEcGE1VDhhZXB6VkJobzhYY2YrVHp1eDJQVUlvOVBNZlJTVnBDTHFDbXB2YURvZEJOMDVLcmMzbUlaL3Flc3lKcVNhSUd4WG4wSFdQM0lEMDlPdnNSZlNsWm1aVnhVS0Y4cXRqQlZybGFEZnVKQklTSWlxb3Fybmd1UjBUSGlTUjZkWkdrNXpaaWZHRkdvc20vMmt1am1WQVExSHdSRWZKSk0vVjVFK05STHhReWlxWXk5MzA5SXF4cW1iN3V6c3MxVlRLcU1Lb21CMjlpeDdlMG50OWd5bDcwZ3JZVWpTZHR5U3RZc1JxNExzVWtLR3BEM1VwZXZoSTM3RnNtYU11Ry8rbFhVbzNZUWhqT2RWVzRMWmdkR0dTbDV2NUkzZCtkOVpHRnBGaDUvVFcwK2orVnc5blp1NHFTVDNLMjFFYUVLU2ZRbitXQkE2SjRlaFhuL1UwQWJheG5wQjQrZmFzN012VXZWSm5SWisydHpjYzBoZGpnajB0NkU5SWM5ZDI5b2ZtcWFYL2xpSVJGcno4NmZSWEFvTU1SSU9oY0s3YWNHeEF4T3hISXJwaGZMUHo1OHV3OW1yUnJqTkR2ODI3WmcxSVNURUlDYzduVnU3RlNBVTAydERCSjE2QlBlcUR0WDAwaGtMNW8ycjAyYzJ3dlR5Vm82RHJRU3RzSnJ3UWtuUnZ2MmZReVZmL1dkSXBoZTB6K3pzQ3dZSDVWaTVhblJMT0pJakNyT0d0LzJwMzdqNnBoZENYVFE1Q2EyRzNKWHd4R2prK2g1aTN2WW5NVGYzWEdnTlZDemRrd3hDUjhnam5MRmdZQ2k2TWtwMGpETVBWdXNjMlRna0hvYWRldW5DdjBrYWl1dGFCd0U3aE1QSVlTR3BLTlo2K01lRTM5S08xWjYySzV0eTRLd09XOVVFNklwNDMvVXJTRGFJMVIxZnJoTGFvS2RSdGRScXg2Ny9aSlQ0SWpPZ0tuemhUOUJOVGIwRmFVZ2tmbnovcmgyZElZYk1kTEY0bnJ6NDd4Z0w2Ny8rMTZtcE53aTVrUVBpSkk2YjZ3d3hFL2xKbUptT21jelhabVplakJFM090clFHM3JoemFqTzRFRFRGek5UTjBhbE5iRWwxa0J1Wm43KzVHejJjK3VOaExYeW1BZWR6SUFaVE5hYTVpYUludjdPbVAzT1hRK2hFeUhFZFhWY1BPM29rRmtBUWYrMndrclZ2Qkp5YWJXVWcvNERKMHZPUVAyWC9Vb2pMV1pZWFZwRExDUVRoWDRkU2FDWm1aZmliaFNEcFVxQThheE9qQkl5WDQ2Z044bGhQQlN1bEFzWEw4aG1QejU4VTZPNHJoMXZpODVJZnNMYWxNZXVyZDRLL1dGMjlnd1N5RVBhWk95R0dXdXVKZHlLdWJublQwMjlmbUFtN2FSaXlQbWFuMTRydEVrcnhPUFgwdDNrZlBldS9KVW03VXVLT25SazRQUmR2UFdNVVNVRHdiTHVNdGxqTHhIeTZFTzFXYklQaTI2c2NqUU5kMmkyZ2dnbkFHczR4Q3lnTE1pb1U4b1I5dVRNekNzY2wvblRZcDZFRlYwUEtTNmg3YnF1Z2JLUmdsYldNZ2ErWTdOd1Uvc1QyZVc1dVdkU2dhWGV2eVhWZzl4cXF6SDBzR0w5OC9iZ2xGSFBMQlpmU1hzVUdjbFA2WWFjaWs1TEdsbjI2azlOVDcrZVBuWHNWYVp2b3NBVm90R2t3bTVDam5HNFBPdjlSK05XUVB2dTJQRkUyL2c5VVAyaS9UUkcvYUM5L09tUG9YN3NWOEpZY2czYW00VCtETHdibzFiUXhFalFJVktLaUJ3cWh6WmJRdkVRSTVXaGt2cHdBVXdDc0FZalZ6SFdGelBwTXdiUklmM0dqVVFxcUIrbEVWUW5SSjNNelQzTGJzellHZXMwbVNhd3doZ0xFazFmVE5mK05JeGxhVVdIcXRVVGFIWWFUR3ZIbWNoVFUyK21JaFdMNXp1T2NOVlVqdnFUWWRhajVVVHJaT3IxQ1dlSTBZTjAxLy9Ua1FqcnVONDVvRXk5L0wxUWd2WUdBa0ZUMEpWS3J4aE1oSDBwN2VOT1FHeE9UNzljck80ZzZEelhSWDlLa2liNk90ZnRSOTJkL1dpMElxTVdhOVUxMFBoL2g0L2pNTUp4R1pRSURUMXBIcXdOc2JtNXB5RUFNcTRNZmJlSCtnYnRRK2tBUHN2Q3duSHJnOVZqUWpldW9iOUc0NEdERFpJTUpoWW5FbitpRGl5M1dZMjVsV0Y4UmtZZkk0dE9vUkdqQzR2SXZ2dmVUUGdrMHUzdTIra2NBQ1VLTjJsRXAxbWwyNzJKWE5UK0QzWDArd2hpblE2MHlIN0l3UTlNbjhDQXpkM3QzaHovamNYMlJLUFhCN2dKaHliOWZycmJ2YW5zRThWaEg5NEdLbmIvZHZ2V3FLdEVBdUtnZThNTjM4QW9sZTZLTTZJaGJacGJ4R0s3NVlZQnVobUZvSW5KOXIwcHhDaEtJbzhIR2pzRFE0dGViMkhYTG12V01FeDhkVHJKeFBlY2tkWlBENzB4R2kxNVhLbmRhUzIwRzNmYkVWYmo2Z0I3dE51RkprdkY0My8yYml3ZFdxMjcwUnJvQUx1VEE4VFRNUjRoWkRBZXBRVHJqNzR5TGQzeUtBSm5DTzE1M0JOMzYzUnVCYVVZai85QjcyeFdmYlFhVi9idC9YcTkrWDQvZ29mQ2NCaVc5a3RMNzRSVGhQZ0NMR1pEUVJTVmVnUmxhTVRqLy9FZU9NdkxiMjAyN3d1YmRXN3U2YU91NmZXbTVKbE44N2dobnNqMW9TWW9yU1p4YUVZVUEvR0NlUHk2MFVObVZkOUpBZjZQc1NNTHc2SFR1UTBrakp5ak5yYlltemx5OVVGTGRidnpFTXVJUENJM0g0M2VFSFFuM3dhMFd2ZGFXckpTeTJxbkUwMGdISGJ0c25MOGNGUHBwSU1Ob052ZEI4b09VZ3Z1aXJmaHQyWFFIUXV3MnVHUzRkR2t5OTBvRmwvZGFEeE1Kb3FlUDNSbGVHSlpud2lHRDZ3VXZJaEdyZWNLcmptaWk0dVhvQ3F5MlN0b2lzUGs2SnRlZTZXZ015ZTh4aDFQc0taWHY1L2Z0ZXR6OEdJQzdFNURQeEc4NlNXdnZIbS9QeFdQL3g0UkZoRWtXbzJyWTNvaFZGZXBXT2JRamgxUDhIMTg4RGdDRzJMMStxTnB4Zk0rK3p3SVlsTXV0TnRmTnRrTm50OExmaXpvR0lwaEFydDNuMTV2VmxvK0ZiUXM0aExlc3E3ZlQwTGpvTmp4K0xXeXRCdnY3MGZSQjlCa3NyVFhqZEo2dlI0R3UrVmVJUmFtdjUwelVhbWNUQnVlaGIydGppSllRVGNCbXp6RTlPWG5ka1BURjl0K2hCZDBhallmUUFmMzdOanhlSjN3MXlZU1ZGelhLRHFrSDBEd0YzVHE5eE9RQmxEOXNEb2dhVDF5c2FaYUxQQXdlTWdtQ2pUT3JhWEsrL09vYkwwMDBtNkdBc2hRN2ZpYkc4VjE5VEdTbjdTaW5oU29QR1AzQVpuTVYraE13QW1SWnRMTnJPUzFwYVAvNDhqcGhtMG82cnQ0NGZ6NitMSGdRem42Q0hkNHRNSjZBZ3ZBR2pYdXJsMWZRcUFqbjM5L1BuOEpiaTRqSGgzNWRFMnhoUW5KUlBIdXRFYXVLL3JKN3QzV3RKVzV1V2Nua3ovRG5kdnQyM3FuNTN6WW55Z1NuWDRyTy9tL0oydzFVL2twdjVLakpIZTdmUWVFaVlRVnR6emFNVDllM1Z6SFJNRUZ2UjcrcGlEazBiMkhMNXNrZ0NDVktTekFmYUxSWlZUWGFKV25ieWpHWkQrY2k4Zi9PRW9yYlFENnJhQ0pxYUREZUpTWFlSaEdyci9lMmg1dmV2cUNFUk8rTnlGRzU2L1A2RWVIVElqSzZYRnpLQXo2dGt4elRHUjMrVTVnaFRBV3pQQzJQLzJhS0VGR2gzd3BSNFBKTU14WU5pQlRyNCtoUU5nS3lZajQ5ZGQvVDhnVkMvbjhCMFpkTkZibitnTktBV01CZnhqYVV0QXRqYmJUb25JdThuNzlmbGJheWRkUFBuQWc4K1Z6elNKWUtxMGozTE1tZ21CcDZYMnQxbDNSRzIzckRiUm90ZTY1dFBSdXNYN1QrbER4WWRGdEZzWkhNTnV3cGd0b1BwNzJsVjNvMUVsTUtBOHdIcUxSVFRoTFhpRm4yUHhseEJSak82alk2eHhUOVVjaDNkR0FaMnFhMDlVdnNCR1FpZm44KzJDUjFHcVBDMG9Qd1JGS0puK2hjNlYrOXhZR2pidnRDS3R4ZFlCREhvMWVJd0tDamp6RGVFbW52eVhDQVdiSFlOUFdzVmMySEVkZGpBS0NhL0w5UkVlZzFiaXliLzlOaUpIem91QUEwOWJIY29hMGFWcTBCeWRIQnVuR0VtczI3MnY5ejdQQU1LZThnd0tUbFZZVGVDeC9wNnJ3eEJNQUFCQUFTVVJCVkRXQ25wanBPd3lIWlBLblFwZk5ITG42UktPTFlXODV2dldwMXg4ajVNSWdvOW1IUWdvSE9nV2dWanN5bjc4VVlRVVJQb1BnL2paQ2R5ekFYOUxiTWpOVXNheFBIelpTTWhuR2FvZGVvZkMycGFVTGE3WEhGd3J2OUxlMDJvRys2YlZYQ2pwendtdmM4UVJyZXRWcWh3L09sNS8wWEpKUmhHRjZ5U3YvS0VKQnEzSEhtbDZJTmRDU2NTU3d3NHcxaERYRUVBVFgyeGszK0xFdzFsQU1tWjZSZ3luazVoTWJjQ2lHSnowZGU3WFpmS2lRUzUrejJmSGJTVHJJWmo5TEV4Qmh6Nmlkd0VJbFdFRTNBWnM4eFBUbDUzWkQweGZiZm9RWGRFcWxma0RuK3RYci93TzNRbXhoZ29ycjZrZUhqQUlJL29KT2tVaGJNekpncXNVQ0Q0T0hiS0pBNC94WmpDdUE0eXhhYjB6VnJpWkc4bFBOM1VjbW5nN1lqY1d1RlVHQVdFb3k2UkpPMlJoRFVkL0ZDK2ZYalMwNkhlWG9JOXd4cWhXR0NDWUFPMG5qNHVaYklJNmhSVWdtaW5lbm5jUjF4WjFUcWF2SFhXTnNmMFlpRmRmTmZ2eGhLaitGYlZ1K1p2UCs5R0xVQU5FMFVjYm1NU2RwQmFsTS82WVJXZFUzRkx0eTM3aS9pazFGdnhVME1SVjBLaXJZYXQxemNJZFJvbXdUWW5UKytveCtkTWdFT1B2WEJxWGlKMGxnaFRBV3pQQ3dQeWZRWW1GRlNyV1ZZejhrcS9MR3lRWms2dlV4RkFpYm40eG90OVVoNzE0cnJFS2FPd1Nsb0MwNmVvRVBXNWhHOFhpd093VllkRG8zYjdYdUtxd2RUeTgwL2E3Y25mMTNjci8ycDJ6TUJFUWZGdDBvK3YxQ0pCTGlWbjBSSVFJN0Y0OEpuSDMzdlIvKzY5Z0IwWDYyUGNNd3pONEhpVDc0SlAxK1hsakxOWFpVcThjM0dnOFQxaks3MTJReTFzYW9MQWtaaGdrRGtqK09IUkJaNERBTXcvaUFKS3BqQnhxV3FBd1RGRHpFR0laaHRob2ttY3ZsTStTWmpGK1B4NjlGY0t2WFd5aVZ6cUVKaUR0M0hvNXNITXZxOEdEbEtBYVZZTi9rU1hCWUl5QlF0NDRkRU1WZVViZlVaenFkVzViTHowVGdQWlg2aVp4NUZtMDBEaTBXcmZPSWM3bVBGUXJ2Rk55UlFnWU5zYm10UUQxaGFlbmRVR0hwOUhmcHhNWjIrL1lJazNhNyt5Y1NmNXlmUDFtSUhuY0RaanZDeXBIWmRsQ243ZldRSlU4TFN4cmZybEk1dWQyK283QTJ4RDFHYnIzTWZaanhpZXU1dXdFeXlRNklETU13REJNV0NCZXVySnhsZnljZS8xYzYvVlhCTUF6RE1BekRNQXpETUF6RE1GdVBUdWVBWnZNQmxjcXBRdTYxanp3M3ZUODE5WllBejA5bkdJWUpsbjQvM1d3ZWdqK3hYbmJGWXYvTzVTNFR6SWF3RlZxaDFib24vbFpXenFZdEdHbVhRV0Zwc1RlSGRxSVV3ekFNNDg3S3lrc2JqVVB0NzJTem42Zlpod3l6WlluVC9GbG1PN0I2a2pvM0djTXdOdzc2NmxVOC9xOWs4aWY1L0h2VitUVXNDUm1HMlRCWTREQU13MHhBMS80UGxxZ01FelE4eEJpR1liWVdxZFQzZTcxWjJwNkU1bzRrazcvTzU5K2pqdmxqV1IwK3JCeEZKTktSLytlTVV1Q29DVmlyM1d5dnFkdG9kREdkL21hemVkOStQMGV5U3g2UitZMTgvbUoxRkM5M3BMRFpDcTJRelg2MjJieFB0N3MvVFQyTVJLcXAxTldGd2p2VkViVGNEWmp0Q3l0SFpodXladFltRW45TXA2L0s1ZGJPbmVjK3pQaWozeStJTUluc3UrL05CTE8xNmZjVGxscTA5Q0t2TDJFWWhtRVloZ21iV0w4ZmkwUmdkM1VFd3pBTXd6QU13ekFNdzVnUjYvV200VmZHWW9zYzBtY1laaHZSNzJkN3ZhbG90S1JtdkRFYno2YTNRcitmZ2hhTFJGclJhRkV3RE1Nd0RNTm93eE1RR1laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0lZeEppNFlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVNNFFtSURNTXdETU13RE1Nd0RNTXdETU13RE1Nd0RNTXdETU13RE1Nd0RNTVl3eE1RR1laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0lZeGhpY2dNZ3pETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXhqREU5QVpCaUdZUmlHWVJpR1lSaUdZUmlHWVJpR1lSaUdZUmlHWVJpR1lSakdHSjZBeURBTXd6QU13ekFNd3pBTXd6QU13ekFNd3pBTXd6QU13ekFNd3pDTU1Ud0JrV0VZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZWTNnQ0lzTXdETU13RE1Nd0RNTXdETU13RE1Nd0RNTXdETU13RE1Nd0RNTXd4dkFFUklaaEdJWmhHSVpoR0laaEdJWmhHSVpoR0laaEdJWmhHSVpoR0laaGpPRUppQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpER01NVEVCbUdZUmlHWVJpR1lSaUdZUmlHWVJpR1lSaUdZUmlHWVJpR1lSaUdNY1psQW1LajhSRDhxWDhtRXIvTjVUNGh0aTJ0MWoxcnRjZXBmOFppL3lrVTNpc1lobUdZdlpkZWI2RmNmZ1plVEUyOUtSS3BDNFpoYm1SMHUvdFZLcWRFSXUxQzRhMlJTRk13RE1Nd0RMTmRpVFVhRDI0MEh0SHQ3b1NSbjB6K2JIcjZmTUV3RE1Nd3pIWmdMOHMwTVF6RE1GdVRUdWVXbGNwVDFUK1JFcHFlZnEzWXR2UjY4eXNyWjlqZm1KNStYU1RTRUJ2SXlzcFp2ZDZVK21jdTk1RkU0azlpbzZoVVRxclZqb3pGZGtlamUxS3A3MlV5VjNHYWoyRVlacnZnTWdHeDA3azFZcnZycjlsYWJtR3plZjlXNjE3MmR6S1p6OGZqLzNLOUdCbG8rK01rRW44VVlpK2NnTmp2WnlPUkZscFBNTnVBYUsrWGkwWXJhRGV4U1RRYUQrMzFadVB4dnlTVHZ4STNHdXIxSS9EVWljUnZrTFV5K21LN2ZaZDIrN2JSNkVvNi9YVVJNTkYrUHhPSlZBVVRLT1h5YWZYNi95YVRQOTkwdDZSZWZ3emN4VVRpZDhua1Q4UUcwdTN1MjJ3K1FGajY4WXM4KzhvVkkxdGlleEtSdXFhR0NJWG05WnBhcWQ5UFJ5S2R6VFk1eHBRMkZ0dlZiTjYzMTV1THhhNURmRVF3VzROdTk2YU54c1B3SXB1OWZJTkYwNDNUOHRHbjMwOVdLaytEV2FMZWljV3V6MlkvSlJobW14Q211YjVkSUwxZjNVUWZNeVFxbFZQc21hUmVyeUJ1ckVCVzEyckhvSzFUcVc5dlRhdTEzMDlVcXllZ2hOSG9ZamI3T1JFY3VMT3c4b2h0d1dpQk9FTnF1NlRvdGxIanRsb0h0VnAzeFF2b21yM0xjOXhtYkFHbHYvbHhYVy9nQzNjNnQ0dEVWckxaSzhSbUUwYW1LVHgxYytPazA3bGxzL2tnMUdzdTkxRjQ3U0prV3ExN3Q5dDNpa2FYTTVrdjJNcHdpM3I5Y1B0bHllUlBVNmtmaWszaXhobEFRQ3MwbXc4V1ZzVG1renpSWjJzUXI5VWVpLytsVWorS3hmNHRHRStRZ2xtdmJzUldtNEJvSk9oZ2FUZ2VaMnJxemQ0VEVCRjByZGNQRTlZc2lHdFNxYXZGeERRYUQwRm9YZjB6ay9tcUVCczNBYkhmeitMWFpRRnVoendYOGpnek0rY0t4cEROeWs0Mm13ZDNPbmVBbllic3BOamFJTXdDMjE1dmRtKzgxMHRMRjREWmErbjE4bnRsWk5VVVYzUGRpSkZITUVjaTFkblpNL0VpR2kySkxVYXJkWTlxOVRqN085RFRvMEkvcWRUL3pjMmRqaGZWNnBPYnpVTkVLTVNLeFZkQWlPTlZQbi9SNUc0SkRJVnE5YWh1ZHg5NXcwc1RpVCtNdWhJQmhVYmprWWgvZGJ2N0M2dXhsdExwNytUekY2TlAwQVdsMHN1NjNadmdEb1hDTzhYMkFSSWZQaDcrSDR2dEVuc0xpUC9XYWtjaDc5NXUzNDdlZ2R1QS9na1RjK1BkNldyMVJCUURlZVdndkdpMEYxb05jamtTR2FWOVkwdExiN01udHUzQXA1MmRQVXVZQUFOMGVmbU5PbGRtTWwvT1pMNGtyS2MrdnRPNVdTNzNFZE1KaUkzR0F4SFlncEFKS3JnSmNWR3RIZzN4M1dyZFUwaDVtMGo4R2FZWTdpOW5Fb2ZPRmhoaWtXNTNwNUJTSy9CTUF5TFI1TXZsY3BlTHpRWU4zZWtjaUpKc3NJbmY2ZHhxWmNVYVUxQUtnY3p5NmZmejhIdlJQNVYrMmU0WTJSS3VRQ3hBQzBQb3pjNmVMYllNYVBwNi9aRnd5OUh4NkIwRVRET1pyMEhndS9ZRXlGTFVBM3o0VnV2dUVBako1SThoTUYxVkE0Ukd1WHc2cmlTVEk1bjhkU0x4aTN6K2c0RXN2c1N2eXpuaTZHTzk2ZW56UnQwVE1yeFdleExhRGsrWFNQd3htZndGb3FLeDJIOWRyMFhvdkZ4K1RybjhMR2dCaUpyaEsycTFKeUttakdxWm1UbG5ZMlJ2UUlRb1A4TUdzVGIwSW1HcDVpOXM4QVRFb0MyZmJkd0tyc0JNaGE5a2Z3ZkJLYU1KaUwzZVFyRjRuckNVNzhkVHFlOExKamkycHJvSkdlTWhGcmk1SGhLOVhxRmVmM3lyZFNjaGpiUk01aXNlRitzcHgxaTkvdWhxOVVpbDk2RWZzOW5MTTVtcnRGY2dqRVEvTHFHQXNHMDI3eU9zcC90Mk52dHBFUUFSbW4wSWUyWjYrZ0o0MEhKeGhRVXFzMWg4bmJCMHlwVXlGN0wzMCsrbmFaZjNXT3dmVzNYeVUwcE9aN2ZheXpFanBObThQeVZRaFpVTGZKVTlhdDl1MzZWU1dkVkJVMU52ajhYK296N0NJMWNxSjhIK2JMZnZMS1Q5bVV4ZW5jdDl5QzRaT3AzYnJLdzhULzBySHY5M0xQYlBlUHhhR0lyRHVYT1NxTGhzYnM2K29ZZzFsMlY1R2ZFS2ROMXZaYk9mb1RkaGMxWXFwK0pGb2ZCMjc5MCtVRHhxbWxFVUNoY21FcjhSMnVDUk1mb0czMzFmUFA2MzlUOTNCMVNMc09ZSGZNNFJUYXJWSHRkc1ByalZ1a3UvbjR2SC80NUt5T1UrR0l2dEZxdVBhUnhGMFVkWkFxTkFLTVplV3AzR1ZmZEVvNkJwN0hlRDZLdlgveGN2Wm1hZ0hGT2wwb3NHSmYrYTQ4cCtQMU1xbmR2dlI1UEphMmhoVXIzK1AwakYwYWZvSk9ndGNrejlVMXFKWHBtR1p2TWdPZWZKa3JTVGpNRlc2MjZWeW1uQzZ2QnZpY2YvS2hoRE5rdnBtOFoxTnpHSzBtdytzRlo3QW9xM0ZTWWdFa0ZubWthcUcyK2dBbWdVVDArL21pSUp6ZWI5eUErYW1ub0Q1SUQ5NHBXVjU4TytRalZPVDc5RzdEMUVpOFh6RWQ1QmJEeWZ2NFRld21PU255NERSNkZQTzVOMWZoeVVsRDJqMmUzdTU0alJvVnliT0FFeDhOVEowUDIzWmtSeHRTZWswMStOeFhnQ29qOWNocGh2ZXIwMGhmZG5abDdDRXhEMWcwNHpNK2RHbzdzaWtkQ25VNXRpSk9oaXNldHBZa09yZFZDbGNvclFvTk01Z0p5WFhPNWpnVXhBbkoxOVViOGY3L1htaXNXUmVqQzg2RHFjSU9RZEVJNUFlQitLUXg2SjhFN2wxeWhDc3F2RHVHMnRkbVN6ZVc4aFYxNU5UNS92cUM1NE40M0dnK1F2dmhXdEx3SmlzN0tUemVZaGVGNDRUVnR6QWlJOFJKUVFTYlIyKzQ0MHl4YmhSempza050eUY3TTFlcjBaeE9WYXJidkNCNmNyWWRQQ1lvU0ZFRWpZVGFFc1VoaW9NRlBGUkVRUWU1SFRkdThockZsU1A0SE1kSGozSWMwZEN1TzJHeEQ2UXpnSTNSWFZoVDhFVW9UbFlzQk0vUW9xelRXcmVHUEExVnczWXVRRXhHaTB1bVhYOXlDK1FMRS9qUHlWbFJkNFg0ek9rVXhhL1lNMlhBa0RxV0pYMXlMWUZ3VDRBSm9BZ2RkRzR6RDFUamI3K1JIWFJxclY0NUZXdDcrRlgwZDhBU05RaFRiZ2gwTnZ0VnIzM0Y0Yk82Rm5rMERadWZPd2FIUkZiSCs2M1IxTFN4ZFRJczMyNXY0UWF2amJkOS83aVczTzB0SzdPNTFid3JRZHBWY1E3VzIxN2kyQ0F5cUJadStOSlpuOHVkaEt3RkpaWG42VFhWWkFwU0cvaUw5NC9NOGJzNDM1cGc4eFNPL2R1NjBRNGV6c0N3T2ZwbEN0V2tuS1dHd1hBc0dDQ1FnNHV0WHFNZEFwQ3dzbmlMMENJMXRpR0RrYjc1bkNjdWsvTExZTTdmWnRGeGN2Yzd3cEE0Z0hRdGZNejU4Y2pTN2FQK3IxOHN2TGI2V2NuN0MwMHM1Ni9YRDhEUS9NZHZ2MlMwdnZJdnViZ044bFhhOTd6TXk4Y0FJeEVwRzI3Rk5vS3hGaWF1bzFybk1zT3AxYkx5NitUNVVCc1dEOHdWR2NuMzk2TEhiZDhQWHdFQkNoRUpaTU9LcFFjTm45T3BINExRWHlHbzFIYnYzVmVJcFE1U2VqeWQ3WEN0Rm9UYTBrcnRVZXAybGkyY0ZBbzIvTnpMeFVNTUd4TmRWTjJPeVZnazR1UURvU0trKzlNOW85MTFXT2NzclVPK0JFMk4rRWNpeVZYb0hvaDB4bitneUdtc1FsN0Q5OWV6VUhLNmdZdmZLZ0VURjN6SUNNUnN1UlNBMVI0MjczcHBuTU4vZzRpQzBPb2g5eWR5VUxoTUl6bWErcGoycTF3OVZIdmQ0cGs1NTJBQUFRQUVsRVFWUWxzWmdZdk00WGkyKzA5L0NCL1hsblpHSFZESWxlYjhxdXRscURQSTZjTXZMcVpQS1g5bUlnYWpGQ3gwWHBmZmc3NmkxSVlIcXozeCt6NzJhdk4rMnRPbkdCTUFGUmUxVW5lTktabVZldXY5c0NmYm8rc3hpRjZRdVhUZjBiRHlzM3RUcGtidTdac2RpMUl1UW9TcitmOXI2NWZjcTFadU1pTTBUM1RLVis0TGdicW1qd2M4bCtQNnVxcTlPNWZTcjFQZnNzeG40LzJXZ2NLcXlhN0ExOTE2STVXQlNUVEY0OVBmMjZFYXViZ2dScExjaHErRFdJNi9LWjh0c0ZIM0hkdlMrS01nbGJKTk5VcVR3Tm1lWkU0bmRxcE1OQ0c0ajZ2T05peUJQSXBYaDhRZXhGTkp2M29SelpWanNwQWdFNjVaQ1dTbWZibzA5N0h6ZE9GKzlHd3BZZFluc0Ira0duUk9JM0cyRE8rY0JJMEVVaUxkS2JFMDQ1bUFSRXptVUI1cjJ2Q1MyNjNvVy9INC8vUForL0JCRVNXWko5aHljZ2htUlhoM0ZiNUlXVnp3SS96akd0QjRrUCtyVGZ2MWlJd0NZZ01xNlVTdWVTaDZqQVFFUDk0NjlRZUk5ZE8zZTdCemlXR3FKWHdKaEUySzFlZit6czdITUQyWmdBVm1pcDlESWE3QlBQNUltdXJEd1A3b242TjU0VWY1M09BZllFV1Voemg4SzRiZGloUHpuSCtnSkhaQldCRkpocWlFc0V0TEw2eGtoY2JFT2dwd2VUQmhaOFRCb0lGc1N0VmxhZUw0S2dYRDdkbnBEd0J2WVd6VDZNUnBkeXVZL0tTZG1SZHZ2Vzlmb1Q3QXQyczlrcks1VlRJUkJydGVPbXBsNG5tTTBoQ24xR1VTcTVMdmI3eWVTdmtWZHJ0MjlUcXgzamlGNXRESm5NRmFuVURnUmN4RVlSaVhUbDNNU0lrSllXZVdLWnpKZGdRY3BQalJmSFFQUVhDdSt5dndNbFN0Tm84dm1MN2ZrNTFMYVlqR1R5cDBFdFdVWmFibkZ4ZGZWYkxuZFpLdlV6M0JiS3JGNC9qQTdNWlNhazI5MkhiRWRwSm02NWhXNGJSangrYlQ3L0FXR05sSnBnM0pqUWxxalZua0F2Y3JsUGlxMUhOdnNaUkZ2aThYOUQxOGdORHU4T1hWTXN2bEx1OWJJMkZ3R2VFb2xOMmxNRU9aV1ZsUmZDWmxoZWZ1UEN3ckh4K0Q4R0YwYnBmU0czYjhHVi9YNjBYbjlNdFhvQ3d2RXJLeSthbVhtWjhNWGk0c1Z3MkhTdVJFWlR6VDRzRk42V1NQeWgzYjRMRENGNENFdEw3OTZ4NHduRDR6MGFMV1d6bjBWTDFXcFBRcWhpV05IZ0pzZ3l0bG9IVnlvblpUSmZEbkRKR3JNRjJYakxaN3ZSVlZ2SXRGcDNNNTJBMk9zVmFDdVJYTzd5YUxRb21PRFk0dXBtNnhDZ3VSNEdpSlJwN2pvbVRKUmpyWFkweGNob3k5Sms4amY0SjdRZUF1Vnl1Zm5oT3JNR2h6R0tTOWlJbDByQnp6OVdXUm5YamR0aDhNc281TTU2L1dIMkNXM01GcWZSZUxocXIzNC81VGlKVExHeWNnNzFjTG4wL0VyMGdscnRjWWdrTkp2M1JVaDkrRWcxWEJhUC94VlI2VTduVm5ST3lOTFNoVk5UYjk3SWtER1ZZZmg5bTExdFRLTnhXTGQ3c2V0Nkd6dTEybU5wOWlFRVFqNy9RWVFLbTgzN1Z5b25ZNEFzTGIxMXg0NmpvSzQzSm9vQ0E5dDF6NVZFNHZmcXRXbmo2b1BubFIzc0t6b1g1L01YeWE4YzBHN2ZxZE81R2Z5QzNicy9PejkvV2lKeGpRZ1RWSFUrL3lHa3N1cjEvMEhOMjNmOVpIVFlES1cvNWVLNmpBL2tscXVXaVpYTGZVamNXS2xXVHhKeVc1ZFU2a2RpS3hHTjdsRU9hYm44OUc1M2t5Y2doaHBBWUJkdkx5YllJUmFKTkNtOFA0a2x1WGV3ZHdTZHRwcWdDNFFOaUs2ajN1aEZ0enViU0RnL0RjbXVEdHRjcjFST2xEdlM3YlhweTNUNnU3SFlEWTY5TUxZT3lHMEpPYzAwbmI0S0Voc3AxSGI3YmpUUnNGeCtaaUx4Vy90NnZFaWtpc2RKSm4rR0o4SlhtODJENEc4aTJnQi90bEo1V3FId0hqRXg1ZkpwUVUwMXJsYVBwTm1IOEpoeXVZOExxN005RlM0L29uengrSFZxbG5CSWM0ZEN1bTE0b2I5K1A3TzRlQ2w1YzVEUHlIdkc0LytTeTBIdlk1L0V5ZmhnVzA1QTNGS3NyRmpIQjBBWStkZ3B4QUhpcEVMS3Nueit3N0hZdjR2RlY0MjZzdDlQVktzbkNtbkx6czA5VnlsZ0tWQStaZGZ4dUJ0c3NrcmxGTVFpYzdrUERLOFBZRGFBZHZ0QTJ2d1B3YzE4L2xMMVByVlhvL0ZBc2VINHkwVk5SaStYK3hpOWFqUWVPcGlBK0ZWVWd2QUZvbzI1M0VmWC9VQnZnVUxuNlBQbytTSTRFRDBQWk5OeUlSZEEwd3Y3aGk3eCtGK2cyNXJOKzhWaWV3UXpHWFFNazVDOVM5eUlpY1d1aFdza21IQ1F4eFlmSytTcFowb0Zid1dpMFhJKy8vNXM5clAyV0V3cTlZUEZ4ZmRCUEVJVHdUV2k3VStFbkswTHcxMVl0dlUza1pxbDFRdlJhRzE1K1ExQ0RpWGxQdG5DOUplcFNEMCtWVWRROVhwdjlIZU9VcWR6Y3lIWGRlVnlseUpWVExFa1YxQlVtb0l3TmZWR1BLQ3dkT2l2NEppaEllQWhOSnNIdTU1WWdYd3pBcnY0SXI3dU9JdU5nTVcxdEhRd3FxWFJlRkE2L1IzQjdMMXNodVZ6STZKZWZ4eTl5R1k1Z3hJa1cxYmRiRUVDTk5mRGdFNHhGcklwb2NYMjdQRktlK3NyeDBiaklmUmlldnJWdEt3cms3a3VIdi9iNHFLVnBtcTE3dXRQOU9uSEpleFVxMGQxT2djR0VoZ1pnY3NxWjNsbTY2OWJyYnNpbHBySmZKM1hFbXdMMExWZ21QVjZVN1NGTnBKVnJwZjFlck1VTklDTk56MTlBZVZtRW9sZnlhMnFyTlBKcDZiZTRmRDZVNm4vUzZlL1FhL2hYTk1XQWdqWjRjME55MVBDcncvanZNaHFGZUg3TjNoZlE3TVpvdEVsaEJyb25DQWtUdnI5R0VhSHpJN2NBeW1UalltaXBGSS9jZnlLQXgrTmF3Unkvekl0TVY0Z0lBRXpDSlBHNURMdjV3b3IvZlBzdWJtbmk1REpaRDVIS2E1cTllaXBxYmNLeG9TTlYvcGJNSzdMK0lBT3RwT0hkMzlQM0NocHQrOUNHMnpMYnR3WHpHakNDeUN3aTdjWEUvZ1FpMFRhSE40bk9PaTBsUWs3dWg2SnFGQkExUFdDa096cVVNMTFXVjBQVlJOUzl6NWdKUHRPL1c4QXFSUnMrRS9iajZWR3Bpa2UvL1B5OGx1RUpYQWVveVlnd3FmZVo1OUgyZU5SY0t2eitjdjI3UGt3R3JGZWYvVGtFeERoajlkcVI4TC9qY1YyZFRxM0ZCTVJvV2x6Q09YTnpyNDRFcWtJdVVCeDF5NXJlVjZ0OWlRMUFUR2t1VU1oM1RhODBGK3RkZ1ROUGtUZXMxQjRIK2x1aEZXUlVjMW1yK2ozTTRMeGkvOEppSjNPYlZxdE8rTy8vWDQ2SHY5TE12bEx4NUlnU0U5a3B1UHhheE9KM3ppKzIrL255VG5Ia0ZZengzdTlRcXQxRUdMV2lNNGpSaGFQLzBPMjhjK0NuVWcwRnZ3NkhZc3VaQ2Z6UGc2MTBYaDRzL2tBak9SYzdzUGVjZloyKy9hZHppM29OVVNicTNjUmk5MVFLTHdkN2swa1VrZFZDSy9mZlJqTmhrWWFmdWhXem9HSERBZk5lWUxjOFJhRjh0bnhGUDFNNWhzWWNxM1d2VnF0dTBVaWpVVGk5M0lxai8vSitKcU5LOFBRMXRFMjZqaklSdU9SdG10NmsweHRSa2VsREEyaVZITFB1VnMxbXdlMzIzZUVCSVFpbERIaW5pekQvZEEvWTdGL09wb2UvUmxOaEtwUTY4NzFxNnZUdVRXOWNDdC9KNTMrOXFneW8zalVjOURjc2RoL01jUlNxZThQNytqYmFCd0tPUmlQL3hWbGxxVTZDQVdMUkpyeCtCL3dpMm9WTzY1cE51OXIvMkk4amdUVm40V3pvakswZ1Z3cTlXUFpjUGRwdFZCTE4wRFJwdE0vc0QvWG9BWXM2RVNoZHZ1Mjlmci9xQXNTaVQ5UUpzeVVkdnNPZU9wb3RJUVVBbDVqU01xVytvOXNxUUNDalAxK290MjJqanhHZWcvMUJyUFl0WnpONXYwaHhOUS9vOUdLM1NKeDBPM3VhRFFlMGUzdWg4WkN5YVBSWGJCUmtzbmYyR3NNOVVQVGZUS1pMdzBmSitlYXFKQnpodTZFN2lxcyt2eExJdkZydWQycDR4cmQ2dkkxeENJSXM3YmJ0OEg0UlYrS3gvK0VqbUhmeEw3WG02RXQwS2tIMnIrcEJsMHNkbjB5K1F0VlZHRTd4QXJEa0lvMHFJUWZUSGdrTk5Wd0t2VWpzcTZHOFNIb2RGcUJrRWQ2SFlUSFJNb0hhdEU3K1NSLy9aNVFveWlTVkRkL1ZJTEk3YmtlTUtpb3Z0eG8ybDBnbytsVmhwdHdGUnJVRTlEdDBXb2VZd0VqQldwdWNPZmJDcmtmdFgyTXd5YUd3ZTI0dVJRMUI2UERvRGJRVmVSdHYrdTZFU1BHQ3lwZlB0RlZVQTJvNTJielBzaDVRNnVtMDk5VTNVbXp0TVRHMkJKd1FtZ3lYRGI3Y2R1RDUrQm1pL1cyamFMVHVWbTdmU2RoWlNXL2pmNkdscEpQY1MxRUJ4NHdHdDJkeVh3RjM1SmJsTjhkSWhmR3dQQk54dG9TcVBCOC9wS2g4dlpnQ1pSS2Q1WjNPRkJOUU1Ud3B4ZnlXSkQrNE5GV3AvQWloVmtvWEVUT0ZjMkVrTS83SmZ0OWtXdXAxWTZTdDNvWVRRbzBLcTJzcTJzeW1TK2swLzhQaGF4VVRoV2pRYzBJNmNPb0tEQ0N0dlg2WWVwVDErR0dIb0xCS0xmUWY0RHJCRVIwWURwU29Wbzl3VHRFb29hRDNHK2pLVVhIUGREb1VLT1p6SmNuRVZ4U0pkMnQxYnBMcjdjVEhSaG1Cb29OQVNJWDFhMFJudncwR21KQ0hwblhhdDBQZWdGQ0RPSWRVaEUvclU3S2N6d2FiaTdsMGc0b1JLZ1B6NEtNVVRkMk5NMTFUY3RIWHkvNGE0V3hUcE5DeDZJejFHSVJWQ211Nlhadkl1MlRSVmxkdi9kMmNFekJjMVVxMW1acFVvNnRhekxhZ0FxL0N6TUFaaFU2R0N4R21KU3dUNVFzY3R4S3gxd241R21lOTRhWkxVZmlQNm5QZUVUNU5lMXFmUzBHMnhBUGhjYnRkdmNWbGdSZXdzVW9nNnU0MHpFVWgzRlZOK3R2TzhhV1FCMUN4SW5WS2wxYy8xM1N3bFkwelhFdWhwR0pna2VYTlhaTGFTbkZvTVJoTU51UDJNUGRJT1dFcFFHL3RkNUZ1bm1uQSt1aXJjU3ZqeUZtYUs2UDd6TSszQkFkaVFTN0ZERzRiUFp5eUhiMGMrR0p2bklrQlExN3pDNnVNY1pKOTJINEQzOGwyTGlFQW5WYkxqOUhXQUdLdCt6WnM2SEhqU0ZLMkdxOVdaNHplMSswbXNlVllmdVlZOGVDclNTNnpvVVU4bmRGcDRWNGdkSGl2ZmVKdnJxUlZzM0Q2TFdza09BbnpIa0EvWVZnZExQNVFMbmxBd1NkVlJMRWRtdTF4OXN2VTI2STNMOXdWWFJBYU1QbXBKM3pvQzg4RHZuQ1F5RmNWaXhhRytsVnE4Y0ZzaTNCcG9DT0pNOTRmWHd1ZDZsSCtCN09HalNYc0tyM3l6VDdrRUIxMFlhbXNKYUhIYmZOWXNMRzlZQ3FDNTVYby9GZ2oxQ2JHOTFjN3VOUTZQQnVNT2lnWEx6bHllUkFuY0VMcTFhZmpGK1VPMVo2YmVabmFxN3JZMlI2R1pucktDUmtYYWR6QU9RYmJoV0w3WUd6TDZRekZZMlc2UnFZS04zdXpTS1Jra01JNDd1OTNvNW85QWJIVHB4R1NsOHpVa3FNbFovNmNWM3pLSW9QYzExWDNRd1JsZFZpMVNHc010U0cvVFBOb05QMlJlNFBiZm1HOHJ5VWlkS1dNbkwrY0RRQnJGejBKVmhUeWVSdlphREF4U25XdDZ2YjdidDBPamVOUm91NFFJYTI3b0dZdk96R2Y0ZWY1YkRaWU5FaEdJdHVnOEFJeEQ2NkFjYlJXSUZRcVZoVE1ORUpQU1FrWkNBNjVNRDIrSlY5QnlEYlE5MUVSdDRPd0VQaHFlVnovVTEyYkpmbjZ2Vm0wYnZrb3Rab0l2SExvS3dPdzdqRUF5R1JVQktrS1NHNHBJbHJ6UktUVTFFN3RpdTFBZ2gyeUtXU25XRS9OQVNxQW9QTE96SXo3T0pSaEJEZndpTjQvNUFjbmw5WHcxUGZJOVlNd0k0Q2ZaaWl6VEpVWlJmNzR6MWkvVXdUNFNPdXE5MEtCbG9zMkNHR3FrYlFqK3BmRGpISWhGdkprM2wrNmJybk5CNkV2SGdGUE1SSnBxdGlDR0RJUUxWUi9lT25wYUdWUUJBWUZaSkkvRG1iL1pSRE0rb01NUitSVXYyUnUvNkhSZ2FkZkJENHhBYk51TzVlektaSDEwT3lxOE16MThsbnFWU2VDZ21zWTVOc2hleWtEcjNlUXJPNUxvSkU0UmN4c2dCK0lxV2pNQnE1RUhyRGQ4RGpENEpwZDdLOTNSdXVFMGd0bUJEVjZqRzRHSUZ1Znh0ekRNcVdLSlZlSXF4ZzJwdGhJUWd4MFFSRWRCVjBMU0VmVU9YSFZmQUhnNVFNUFBwblNIT0hRcnB0R0tFL2FBSGE2dzJLVzJaQzExbFEvdkppL1g2U0todzlHYmxMZEc5SVNDZ3ZwR1hSMjN1OStXVHlhclYza3FsMjFsYzM1dm0rNE0xMVB4TVE4WVNWeXRPR0YrTEwrYUh2VjMwQ1F3VldHcElaQ3d0SE82NkUwVW1uOHl3c0hFL3Y0RXFhV2V4QXp0STlRT3A0bUFBQUVBQkpSRUZVMi9VRWs1Q2dzOXZwTlR4U0QvdTcxNXNxbGM0UmxseDR3OWhUM3RGZDFIYWRzN05ucGxJdTlxSThvRllMbW1HRHVrWEhHbnN4SkNiNktINGRUWVluVW9HZVlUQVVTNlZ6NVZjcWppT2lZQmJNenI3UTM5bnErbzJMcEFVQ2hmWnJhSU5KeFNRVEVLRUo2T2xtWjg5QTU4UlFWeDlCVDB4UHY1ckMzK1h5ODFBR0dCYU9waThXTHhCV1c3OHBtMTJkZ0toZlhlZ3E5QUlqWEhPdlpvaUdjdmtNbW05aEI2MjVZOGVUSEVaNXVmeDhDTHQ4L2hMMDNwV1ZzKzBmdGR0M25aNWUzYklDcm1DeCtCcjdwK2dZU0JFTi9mUThQUmRHdE9Qc0xValNtWmx6VlFwVzFZQUNYaHl0Q1NZS2hYZjRDNGJXNjQrQ1ZRY0hBTEVNdEloNkgzM1lzZHJZRi9GUzZUeTFYNGdRRDZ0VVRwdWRmZjd3eHZqRjR2bnF6QzhoUjl5d05DT1FRVmxaT1dmNC9YeisvZmJKUUtyWHlUT0d4aUFsN2VsSWxxaDM2blc2NXdka0RYUnQ3K3RXbCtrUWs1M2h4Y05uUTgvTXZGenRMWUgrWDZzOUFaWU5BZ0U3ZGh4dHoyM2o1MmdiaHJtNVo5bUxhcitWWXgvaitmbVRKNXZIazZkOTJseW5OUkJHZ2s2L0ZlVFhINEUrby82SmIwa1hJdWxhREJnZnBkSXJiVy9RRGhBL2dDeHkzWitqWEg2dWFqdVpmWGVmWGdscFpoZHVZT2ZPeDBRaWkwTjNlNDRVZEpmTEU2dEhqZ1drL3gxalhBbFNWUkpISGdzQm1tTHgxV1RtS2lvVmE4SE5jTXdPTVJlNkcvTGZpNHZ2dFg4TGx0K09IVWRSTzJxV1ZteVVMU0Y3aFNVYjBiN3JaMngwTUtBZ05GeEZhN1Y2RXJJT0dDWUlOb25Wc2JDdTg5ZnJoeWVUdjFEK1FLUHhxSVdGWXh6U1hzZVdHSUZ5azlZNkxjS1VRazdwczgvMXBMQ2dmTXdjREhwcU5kVTAwZWoxOXB1cW9JOGNkODRKaURxbFJRc0tMV0lVQlpiTnZmb0k4R1RVMXZTeTN0eVBnWWIvM0dyTk9ZTElOdnBRZGxDT2VBUTRPUjU1V1RVY3BxWmVCK2xxNzY2MTJyRnpjNmY3QzRIQnVOKzE2OHV1SDgzTXZNUWVzZ3hQZnVvUE1iRTZ4bC92T0dVTUEyRm1CbVA4Yi9ZMzRYNmpZdFZDaFViRG1pMHFaN3U2b0tOdTFoZER5MXpYdEh6MDlZSnBLMmc2VFFvZGk4NUlpNDA2eUJVcVRKN2pFMHhhRWRWQzlwTGE2OXIyMFdNaEN1QklJMWJlYkQ1bzhLYVZncDJkUFdzNHY2SnBydE9QcWo2Z1NLVytPejE5d2ZCQTBMZXI5YlVZQnUvUzBqdG90b2VEZmZaNWtNTTMxRFFVSFl4V042dm8yQklROHFTYkVNV2JtM3V1YW5RRVJKYVhYNC95b3hJV0ZrNHd2YTBDM2sycDlESzFzbVhBS2FuVTkyVnZ0RUFuSkFOcDU4NGYyVjFSREhtYXNyYnZ2dmNiL0xTeG9OTTMxelg3akE4M1JFY2lTUnRiMTVQVlZvNVdUaFFCeEY0dmg5NmllaDJTZktRZlhSTWV3Y1lsQmtSV1ZzNFNVcmdoOXlrQ1pleUNZK2dwdUp3d1d0QkczbEhJVUgxTW5iRWd6SnlMV0xuOGJEcFJWL0l3dXN6MTEwM1ZUYjgvcFRydElNMndjVUNtUVNyS1EzSy9KSFBTbG9XUVNuM1BNUUdSWmtpTG9iT0ExVXdJdUJMZWM5VFM2ZTlUL2tDdXE5bXVFeENoVzh2bFo4b3pqSTd4R0p2dDlsM29oV00rbHB5Zy9DOVllalQzYTRzd2VlT09BaG1GVG1mL1Z1dGd4TEprK3ROczh5RTVFWmFXVnowaTdBbUk4dWMrUmZ1eG9ZdU9HdDJFa2JsdWhMN3BaV0t1eDFaV1hxQU9HQ1VwaHpHSW5pd3NWWDVhTkhyTjRLUC9KYkdjU3EwVFg0Z0d3TFdISytUb0lmcEtYMmhIU2pYbHAzNWMxelNLWW1xdWE2b2JOMkpvUWJLSEM0WDNPbVlmQ3UyZzAvYUZXaGw2SVoyK1Nrd0E1TzNTMGx2dFhWSGUzSnFZTlRmM0RNZkZSbloxcmZhWWV2MElaTTBSV1YxY3ZHejkvWS9adVZQNU1oR2sxWVpkbTNMWmlyNjZ6aGNrNUF4anl5T1Q1MXE0cDNpcTFXTXhJdXlsaFJvcUZONXRUNzJYeTZjNzhnV0VmSzd6SGJaNnAzT2JwYVczMlU0VmZDeEdianorZXpFWkpuR0pxV0x4dFNvdUFXdFFXT1Bya2tybFpHRzVKLzlybjFDaUdVQVlFS3RXanlaM3hnNEVEZ1JkSW5HTjYzZGNYVHlreG1IMUNjc3Rlc0NvbVIvMStpTXJsYWZMb09MWDFMUG9lOFNhQVZoWGxETUxPU01EM2F0b2VzVDZtU2JoSjY2cjJ3b21XaXo0SVFiTEI2SmJ5Sm1GYW9oUkJGaDZBUjl3V0N6TjVrR09BSUlqUW1nS09wZzlKUVR6RzFVQk9VYlRIS0g5OFdKbVppMnNxam5FVENPbCtpUFhnVWZReVlnd0pqYm94M1gzYWpZb3V1NnhtRE1rdXpxazIrYnpGME9BeTZsVTl4L2VwOGJPMXNsTzZ0QnUzOVpoQnN0b2c3dFg1UzlTNm9IUnlCM0ZZTHZOOFFGejJwSkpmcVV1SmdBOUh6MEI1aC8wdTV5QU9CRnFkWFFxdFRvTUlYSXBYamU0NE81S21ZWTBkeWlrMjRZUitvTjlTRFpxSm5PRjNsVGc4VnBzMkJsRUhnUm1nSndnbTZOL3lnenlaNFNoZGpaU04wWVNLU1J6M2M4RVJFaEdNbytRVEpMcjhyc3dyV2pyeTBpa3BVUkRPdjAxakhZOElZcnVTTmpVNjFaRUE4MXZheElyckN4UFVvZnhmUjFld0tOR0Y0RUcyclBuSXp0MkhMRUZ6dzR1bDUrRmZvQ1FGaUpjYWxSdkROM3VUWVFWbS9zeE9rU2o4V0M1YWQ4VUxkZVFGck16eElaT1JtbUdldjF4Y3AzZkdERFVJU015bVM4akhsR3ZIeTRQTjd5djNELzVXOEljL2NiTlpqOUpYYnpkUG5CZ3IxOXVjMEtDeVpKQ3lyUmE5MFl4WUFuRlluczZuVnRJTHpUcSs0WmpxeXNldjNidzA4ZkpPRUo1M0MxalMwdnZvNzEyU1VORDVhT2NhR3ZVVDc4ZmkwUmN2b09ub01YaXllUlA1U24xQzdJTzE1NHJHaTJoUHVsMXJYYTRJMVl5RFBtRVVCV3gyUFdJVmlPR0M5bFhLcjFFeVR1a2w5UjRoN09IRzhyU3J1V1M1V0lGLzhDRGhYcVE5L3dlYms3SEUwQStvcW9uV1Q5RVdSd1lkaWdlYXBWQ0R3aE5wbExIT25STUx2ZUpmajhyNURRZFYzZDZVTTViazZra3cxamZpOGYvUkJwQ3lzbDEvVXFaMU1ua05XSWMwaDJ5TEV1b1ZXa3BScUJ2SUZFcmxWUGt3VWtmR2lyRytPb3lHbUlZdVl1TGw1QTJoYUJMSkg3WjcrY1JDOE03eGVLcjV1YVdCaTUzQjExaXo1NlA0a2VMeFhQbjVwNVAxWWp1U2hGbktIWGxuTXRGa0ZZUXM5ZkxVMlJmenJoZjh6QW5GUFcwdmx6WUJwMEhPb0pPdnhWZ1E1QjlMKy81UmRpZDZBQnFNcG1EV3UySlpQYkppNitNeFJaYnJUdVJlVkVzWGpBMzkyemg5NWdHaUF2Y1RWajk0WURocUlxRHNXTUJmVU9OY2RTTVhDRmF4YmhRZDNERXAxRC9pNHVyQmh4RUIwUkV0M3RUL0FwNi91TGloVHQyUEdtVTkxSXN2bHdlRGZ4dlNFZzBoMXoyZmN0K1AySlVXckZSdGdUTVh4cEhqcFBGVUhMYTBBVjVsS21wZDZ5ZnlacW1DVGZaN0JjY0F5Mlp2RG9hcmNFTGtncjlZVWl4UktQL1JXZVFpMzd1SGxRK1dDM2JTaWJYMW5UMmV0WUM1VVRpdDFTQkVIY0l4c2xyZmtuYXBOZWJFWHJZek5OUVVCNmRtdFVoVjFWYVk1TjJYeGV5a2gycmRRbjBReWg5bEZBdVM5bzFmRUU2L2QzQnVzTVQ1K2JHYnd4REFqK2IvWnhVanZlWEc3enRyRmFQbjVwNmsvQkRiRkFNZE5wL1JLTjdFQldGOEVTQkViaEJnQlhoWTdvZ2JQbXBNOFRnNTZneG5zbDhBWklXUXhVZEhsSnhjZkdpblRzZlo5OTZGaUtSb3Z3eXgvYnpidmVBV3UxeEZMVnhvSzF1akRHMWZNYnFCZE5XMEhTYUhJeTE2RFJMS3daakIvZEpKUDZBS0I2R09iUXpFcGFWeWxOUjdZWEMyMFVBSU9ML1ZDRWJHczZJNnhXVVZZV0pnbjZPREZDdDluaTB4Zkx5bXhZV25qeHFhcmkzdVM0UDFyUnlMWEpYMUN2UUtERFZjRDBxcWxoTXo4MmQ0U2locGwxdHBNVldWczRrNHhCT094SWJTRndobHdDWFhocDc2eHBMMzFCME1FcmRFSnEyQkl4QUpIV1dsOStNQ29TVVUzR1dTdVVaVkg1OGF0OHJ5OGhFd1NQdjJiTTZ4S1QwZ0gzYmsyczZEK3YxZGdoemZBZzZUWFBkc00rRTVZWUVEZ0pNNkVzb1liTjVxRHE3UjIyOHRHSFpEa1N1SVgvUVovTDV5MFRRa0R3VVhsSGRIcklkQ0ozTDNiYnVNaXJkcXdpamNmWEhncjV6QVkxSnFobWlGUlptcjVlRGVVRHJ5SWZ4cDI3Q1lid1hrMHorUXA3Q2ZGL1lGUlJKUTFVTUIwbW82dEN2SEJ2YlI2T0wrRHJhcnRkYkdQZFRIUVRyS0dFNXlsQU1IRm13dk9QTlNLVHZlenQyMUV3dTkvRks1VlQwSEJtK2QvZW5VSm4wQWs2UTR5UEVZOUhIcEVLSmlBMDVjQk0xTU94SHdGeFJvemlJeGgxSlB2K2hwYVdENVZabjl6R2RtUWRybkFyUTZkeDB4Q1g5b1JmK2dXK1N6WDRlL2lNRUVWcDV4SGJMYStqSHNuemdiWG9abWV2bDh0TXBGZ1R4QlZkTFRnSitITTArbkJCTnBXOW5yRjJ0S1QvMTQ3cW1VUlFqYzMwQzB5dGVMTDZTbm5ScTZxMTd4Zm1WWm1NUVZqMDlmaTczRWJTczhFOThlZmwxNUZmS2ZlTitHNGwwNVhoODVMQmg3eS8wQjNsZUxGb3BXTmdxNkJXOVhyclZPc2krOTJldGRnUk5qWktUZDYrT3hmNkYxcGQ3Zk43VjI3a2dDMFRPWVB2U3FHdGdxRkJwb1RRYmpVZktMTzl4ZU1mdWoyRDR5MS8vdXh4V2x0TEJUNk42OFZ4TFMrOWVXRGhSUFJldWhCczEyTzN2aWxqc09neEpYT1pZRzIrS1VWeWlWRHFQNGhJSXZzSFhrRHZkSGttekQ0Y3hDaUNzckp4QjZUWlpZMWZoNlRCQ1pUTDBsdllkM0IyNHVuaktmTVVqak5ydW1xWWRwMUkvb2VvMTlXNFVPZ0ZZTzNqR2xaVVhDTm5ocDZmUHN5KzAwL2VJaWJHWkptRWUxOVZzQlNNdHRsRkRyTmxvUElxOEFFUUNFV08wWDVaSS9JMjZJaXhZNkZBUkhCZ3ljc2ZOQTJsY0lJT1B1a1h2a2dmdXZXN2dqQnNNTVVJblV1cmp0Z1BHQjUwMENXTmlnMzVjZDJPWjFESTBKZFRvZWlTeWFuZEJ5cW1kd3h5RVpGZUhkRnQ0eEpSL2diM25QUUZ4ZTJVbklZUWRadkNvSzMxSFNqMHdITGt1WVBDU3B2QStQQnBXR1VRSEpmdmtRWHorRFV1a1MraVk3Nm1wTndZeWJMdmRlWHFobmhUZFQ2ekw5NjNMNG9VMGR5aWMyd1lmK3FPcFZrSXV6eERqTU5WaTBrSzdFajZDM0E3L2NDRk5JRHJlRnQraUNZZ0tIZTNzUTkzb3BkUkRNZGVGandtSXJkYTlCZzdiNVlYQ3V5aVBEc2xiS3IwTTR3M1NVRzJEbkU1L3Z5UzNIWVhkbWMrdmpYWUVrbUJmQ25reWlIb1RqNFRrUnlyMUhic1ZpN2JaczhmcW1taWJqWTJaamdjTkFDTlZ5RDNleElaRHU1cWpZeXd1dms5TmFZS1NSbGRMcFE2Ym5uNmxZNTFpTFBZZktHYjByVXJsS2NQN2FROER0U3EzbDdCbXNlRDYzYnMvZzg2SDl2VTNBVkcvY2RXUWs3TXFhWGJVcFJPZXh6b016QlNNTnptUmYzVmYzSGI3OXBORUQ4ZFdGK3dKWENObms5eDcxNjZyTUViZzlNck5mdDNYYzhDdm9Dd3B3aUtGd252VmJKVjgva0lNTVlRMmhQdHozZDJ4R2d4anpiNWJPeVM0Q2wzSlhXZHZKOFl4TzNzRzdVbUw4UTZIRU40WGhuKzMrMTQ2aHhwR1R6Ny9mcm9Td3h4bFJxUlN2Uk1Ja0pqd1Fxbm5JR0c4dFBSTytWdUgyb04zUG9Ec1VuNCtLZzNtbWp3ZDliYUk3Tmd2c3ozTE16MnNKWlVWbTUwOXg2NzJ1dDIzOS92VDlpdmhBd3ZaRUdPTkNTZ3pXb3lWVFA1NmR2WjVGS25QWmk5ZlhuNFhHZzUyZkRiNzJXR3ZiR3gxR1EweG1MWmtiODNNdkZSMVp0eHFjZkVEcUM1WXFISy9IS3MzeXR6Mks1YVgzeVIzR2pnZUprVzN1MCtwOUhKWi9xdnRtVWlVaWxZbjRBRXByK3g2R3JWdmxQMkVaaDE3OGRpUmE5UUtGRWFCVlRFL2Z6b0ZsRkZYUzB2dkdGcVliazNxSXJNU3Q1MlpPWXNpMXloQXZmN3pVdW5GVUM0WVRmNkVyYkRxRXo2WTVZYkJjeHM3QVZHTUd3dFFGbW9VSUE2T1VTQlArQjAxeGlOa3pzcEtPRldGekdBODdkbnpNZFF0MG1halptaWg1NnhmdGdWWDZzSEQyYld4STNkRGJJbG90WHFTV00wUU9GZUJJUGNQajFUT0E3aW5mVU52T3FhY0xyQmZqNmVnc0NCS1NOdFF6YzJkanNwZVd0cEhXdEozQ0dRQ29wejRaVm44TXNOS1ZiQUFBQkFBU1VSQlZGT3l4L2ErNVpDbzNBa2FDQ01JSVpoOC9yMUxTKzhWTm85RkRhaGVieCtTLzRNNzNHVHd3czlFRTMxVUNuTVFjWWl0ckZoekphRWxvY3BwQWlJR3JLdFdWUWtlZWNFdXQ5dDNJYWFnNDlBUE1iUkhIV0ZnUnkya1JnRXd6REZzNGJkUFRiM1poeTJCeUVXaDhEYU1YUHRlL2JuY3g1QllrcEdYWTIwVEVNT1ZuMEpqaUpHckppeDl0K2JTSkpNL1FRaFBic3p6UlBpQjlHYTdmU2V5OXBIY1FvcHJjT1hWanUwRUJyZlZWVGVtbUZvK1kvV0NVU3ZvTzAxRFh4eGowV21XbG40T0RXVGZQQTlOWEN5ZWgzQVZYRkRJODdHeHM3SElCTU5Pc1hxVzJVZ2dNMmRuejZLdFZ0RGg2WVJXOUNnWTVLN1hlNXJyRVRxVUZ1cG1ZZUVrRWtyNGRYU1ZXdTN4NkhnSXV0a1BvZE8ycXcyMG1EcTlGSkVtKzJaMWhjS0ZTUHc0dGovVU54VFg0NlZ1akd3SmRGbzZOUVp4Rm5tYXlhOWdJVkFNUXE0UytabS8yd3E1bnBKZU9KWmFkanFYRHU4WW9ZTVBRYWRucnB2MW1VRmhRbkZEZ2lXYi9RU3NiandGQXMySnhQRm9Yd1RwcU1QRGhNaGtQaS9DQjkyR0l0ZlFnOUphOXJQR2RUUXh0WG1xeC9xaVRPYWJsY296SVlzcWxTZERlSXB4Qk42NG1tTkIzN2xBbHJSU3NhNkU4VFkzOTF5NkVsa0VwRTZIYytHKzFVMFlZSlR0czgraGNxS2JoK0x1SUJnSTZ4UUI1VmJMMnFQYTFmZWhxSmQ5aHJRaUdxMTJ1emtkKzFOOUhkM0RkU3Zad0VFYTIvVjl0ZFdyRCtERmt4Q0RyVFZxNHcyRW51bkY4RXhIRlI1RUpqN3c4Sm9yY0kySE44ZENESDFtNXBYME9wREdIWVU4QSs1M0NOK2pERDYyQnNSZ2tjYys3dWY2YWFHd3VtWENaQk9ZMXNobVAwNytZNzMrR0owNVlacXhMQjk0UjByMXpmVmViMm9nNkg0K08zc214Wi9UNmErU2d6a2htakc2OWMvbFpWZnJ5MC85dUs1aEZNWE1YUGRuZXZYN1NZZ20wcWZUMDYrRmNTdTJQM3JxWmczeVpHVWljS0xIUjNxZUFvK0Z3bnZzN2sraDhFNkh2K1k3OUVlSm5wbVpGNnRUTE9WUjZZZmF5bkJmTVFnLzJtVCt4U2hBTERieWxBd0lYdW9rY2dybXlNU1F2TzNUYUp2UFhPNVRTMHZ2bGliS1U2R0oxTGZRK1pINGxLZHlyWW9JaUs5YTdhY3JLMmZMdk9rOTFGeXVXdTBJc2x0VWowV0hYMWw1dm1PUGMxTk00aEozcE5Nd2tFK1ZycHdWalllUjdMckhuakFKSUVEdzBsT2dObVptWHE3VUt6cEd0WHJrYUczcjd1TFpsdHJlZnNRRXhDZzVsWWtFSFlibXg3c1pQSmRXQUphQVBLZnA0M0RLSUQzc3c4M0lJMVo0WjVxRVlWeFh2eFdNZ2s2aERqSDBzZm41VTJLeDYrVnpZWWhkaUZGVHJXS0lYV212WHNRTktIUWdGK1lGTmdGUkRvUTN3Q0NFSWhNeU96ODkvYXArUDNYRERkOFJsaXE1SFFVSDlJZVluYkdSVW4rM0ZkcEJwN0dFTkxGQlA2NjdBYVJTUDk1bm40ZklVclhGUmhOaWRCMnhSRExEb0EwaHpFY05zWkRzNnBCdUs4K1R2YnYzbnBIYkxqc0pnMVladlJBMWdhVFU5VEVhdWE2UWJwVzMrdDd3cDdYYUV6cWRtOE5PVTFsWGFNQ3BxZGNMLzBSS3BSY0pXZmtlWjdFYVFXRUJxYndzbTZmWmZDRFprTlBUcjl5OTI1cnAzdTJ1VytrWDB0eWhrRzRiZU9odk1OVktlQit3VHBocXNlbnAxeU1YREpOdmVmbE44cC9XMlFJdzc2VjFmVWM0YUNxa29LbWQvYW1ic1JJcEpITmQrSmhLVEN1RUlFZms3dXZLS3VvcDlkOXMzcDlleUtVcTFwYmcwdlphVzBZRG81WmUyTHNPUmhkYXdxRVhhVXMvSWZlNUVWc0pORHdkeXA3UHYyL0RJcm0yWDArUXIwdXJmMlNFNklMcDZkZlF3Zll5bitTeURUNzFNRGxvSHpYMkozSzVTOVE1cXVqS3RMbTY0ekF5ZmJaYTQ2Sm5UaytmWngraUdHazZKdEVveGxZWExBTUVEdFM4QjhoTmlLVGR1eis3dVBqK2V2Mnc0UnVTK3BlajdMMTIzd09td05UVVd6eDI5SVZVc204a0U0M3VHVDdiVGgvRUMyd1RhSHJLd2RQcFFrRWhqd1ZwRDhyelU2cEQyclhMTjNJSDREVkxVWmtkdmQ1TzRRdWsvZWhGTExZdXBSR0w3WGFzeXFKbDlPUmtldE5vUEpSZXlHaGpmVkR5Q3JVQ0JuS2pjY2p3dHdLc0xvUzN5TjVDYU5JdXEySFJ3dWFXejNMTFR1ZFc2bjMwTkRwWUU0RUptSStsa25VeURxcDZadWI4alZ4eHBiWkowNW1BT0hiazZyY0NyRmlhWVpiTmZsN05kc0pYOHZrUER2OHU3ZndrckFGN25uM2RQTG9pNVdBY1p5aUhSN0JqQWUxT25nUDhRSHU4YkxBOGkwU0grNXBhZE5kOC9tS2J1T3ZERkhNRTdIUkt1d0hxcHRrOGhCWi81UE1mRWk0UDhzdEJJejdjL2o2MXFWeGh2TTdWVks1Rkl2RVgrZC9mazQ5Tmg5ZjMreVBYVEpzUUt4YlBwVmYyaVQ2d0phZ2ZVajBqeWtrMk5FS0tTai9hZGxKWlBVNnhYdjlmKzYwUjBSdGNHZllPaUtzbG9RU3FQUFlkZ2I5ZEdJeHFFZVNvL1JyVk5qQktQZ3dEZTVVYWJ2Z1lEcmVMdjI1empMdVp6SlZqNys4QlBBZjRQSGFiUkw1WnAxa2p5aHZmQUhTR0dPMWxndkNFM1orQjIwUEtUcDJ6SmdabjdBcHJwSHhRdlFrZlpuaXhzcW02Q1pWZ0RXQjlwMmtZSFl0T3A3UklGQTNOdCtpcnRmV2R6Z0ZpVWlKMGdCUjZ4YWdNQnlGSDYrcEJiM2cwU256Q1NSeDF1S3FIdWQ3cDNKcTJWRVRVMkRZbHVxZm1aRGdrbGFaZGJhVEYxTEV2UTJ0bmU5SjRYbWY1NkJ1S2RyelZqYWt0a2M5ZlJLNWlzZmlhVHVjMnlHcUxWZVY3bWUvYllteFNHQXVCRXNkT2U5QWFXK3EwVTlNK1E0VGhoZ1FPb25qb3NSVGhsWHNESDB1ekR4R3dtNTE5MGNaa0hjcmw1OGd6dm4vcWUvM01NSEpwNVpIbDh1bElDdEl5ZzBMaEhaNGJ5SFZvNlgreitTQ3FBVytDYlZ6OXNhRHZYTWd6TG5MeXlzdlVsWkJqK0luaEFreWlic0pBYm5UWDhPNStWRkcxMnRGVWRhNUxiaWpSNkhvR2FDU3lJbXdyWVR4UVU5eDhPL3RiZ1dpMFNPZk5ZWXlQMm8xSkpSS0dseGFNdFpZM25rQWExd09hSXlnMSs5MU12MHRiSzhrOWtsTnVuM2RsOTI0RUZlV0FsS0RoQUlNS0RwcjN4WUhIc3V4NG1GNUc1cnBOMEYxc202NzBLL3VwblJ1TWgxMXRrdU13aSt2cW8yK3Urek85MEh6RjR1c0dzdzlmdVhmTVBpUjAxQTJCa0IzNXFuQzlmZTlIU3lnaFRFRWJXMkhxRkhkU1RCTDZnNkdpWmgvS216ZnNHejZSaEVSQ3l2RXNHTERLUFJ3R09wZGVaTE9mRmFOQkZhbER4dVhtblpheklCZlpIcXl1U2FlL20weit3akZCUkVraysyd0QyMmFvcXNmMkoxOFliQktYV0RYeXBkbS9LcmRoZFpCbk5BblY2b24wWW5yNmRldWpsMTE0SEtQdVA4ckZReFBUaWZQcVFQWjIrODRJc0tzek4rSG1VM2VpdzZiOGVUZUVUZ0NXZ09TbjJZY1FVOGc4RHAyYlpPQVJEMzU2ZktiSktLNnIyUXFtUWFkUWgxZzIrMm1WR0lJaFJCbGJPYnQ5STQ3WEkyMElpVVNQUnYrVVU3dXNORXF2dHlyZjlJZVlRaWRTNnVPMkV0MmcwMWhDbXRpd2RlSzZrdDdBVWczbUxFRWpRbzJ1eS8zaExIMjBaODlIeXVWblZhdEhRNkk2cmduSnJnN3B0cW5VajhuU3JsUk9HblczdlRnNzZTOVM2bzNSeUIwR0ZVZ1R2dEViazhtZkRGOGdUL3c3U3MwK2hENmRtWG1wVHE1L0ZGRFd0QU85MU12QlFCTVFhVjBCV3JsVU9rZFl3K2NOc2RnTkpQblZ3a1ZGU0hPSHdybHR3S0UvRlhiUW1ZQm9xc1hJV1ZEamNmRFAxWGtMdEsvLzRDTXQ3ZXhEM2Vqbit3STMxNFdQNWVsazUwbTc3U1RiMnhISEJVUW1jeFVkSTlodTMwblpmTlRiWUhFT0gzQ0RjRmk3ZmRkdWR3ZkdRTDhmRTRPVU5tM3R2akdrVXQvZnVmTndlajNLS1lVR3BiM0tjN21QQ3ozUTBaVnJFWW1VeEVTc3RSclVpWnhoYmJsOGNrWHBlK0NmVkt0UGxyMXczWW9jdVdmNEQrVDB4Q2M3bHRRTWsweisxdjVQYWluSHVlYW1iSVhHSldoZmVoRWNPdFdWU1B4dVllRTRhTDU2L1JGcXpRRmVsRXAzaG1LelQ5S1M5VU9iblg3S3lGS0V2VEtoRmU3QU1WMGFBUWlJU0loMTM1bDRIemdDT2lnREtyYmJuUlVUZ0ZxeSs3SFI2T3JXL2I3RDhXcDJ5OHJLMmRCL2ljU2ZSelVjdFd3azBobDdUelgxM25IdVpETDV3OEVGKzdtVkpMRHFVcTJNSDFJclAwalVxeU1NMnUxYjIvZXlSbTVicnRxNTg5TFNoZlNPUE5SdlVXd2d5Z2ZRMlpCZzdNalZid1hiWHMwL1hIL2wxV0lJeElub3hmcDRrRlczc0I0Z0dDblA2bUJ1N3VsSytBY2x3WUlkQzhybVF4L29kdFdSVmRaelVWZ0svUjhWcFVLWmRuU1VxWDVwUTFVM0ZQV1E4dFoxWDI0NHpGK0NrVkN2SHk3M0FXcktYODgzR3RicVEza0d4N29RclhJZDZZWEswQXkrNkp5QTZNT1dLSmVmVGtwbmF1b3RhaDZoUk5rU0hibWhvT1dOSUZjSGE4SFdmS3ZYeUgxRS9rZ0wzMUZVR0tQOWZoUWFqYmFuRW5KaHh2QlBCMmo1VUR0S3VuQlE2ZnlYcWFrTFVCaWJSSFczYVczU1lLVFJLODhzK0dpNS9CekgybXRYSEtwV1phRVFJaG0xYW53cy9YNFM4aFArRDVMSFZKbHl4eEZWN1BGYVkzTEdEakYwU05KaXFaVFRYWWNEWDZrY0NQa0pJVXczSVNVaWp4UmZIcjdTL280UGRTUDB6SFVmQkdzQUd6bE5kalF0T3UzU1J1Q0lkVG8zaFc5SkxxdWEwV3YzZGYzUmJCNUVHYWF4SzlFZFQ1UksvUi90SlE5Wjdib2xsWWU1cnFKVWpvM3hZSEpBWDdkYTkreDJiNmJlMUxlcmpiUVlCUVhrQXNmSEl1TUNKOHRqK09zYmluYTgxWTJwTFlHQk9UUHpjZ1JxOGRHZVBSK1NseTNKbmFoNnZtL2I2ZHlDWG1ReTY0Nkwyb0lZOVJtRnZsMGRra1RTQVhLeVdIdzFMZVpHZEFKeUFMMFg1YXpWanNRTE5QcHdlUUtOU3lEQ2RSRDFGcmxSUVdBMG13OUUxSUpldzQrR0RaTkkvTmI3SzRpamxjdlBrT2VxSEQ5cWExVkZzRDZtL2xnd2NTNzJIM3kwTHZBTjRhbHFSdUZEM1VBQ3FFNkx6OFdHSXkyRUpSSzhNczA4dk1aU2xYOUNLMmoxNjJOelJVR0JzU0NuWlRpWWRMSmFOdnVKYXZVNDBqczBHWEdJVld2WjdjU01tTmhZa1BYUFpKeVRaYU5SSlk2Q2F0eVJZS1JROEtwYWZVb3krUUxEYjZzS1JKOXBpdkRKNVQ0Q2J4Rkt0dEY0ZUNiekZZOHJBNDlsMmZFMHZRek1kWnY0Y3RoKzN4dDFCbHlvZU52VlJ2SlRQNjVyanBhNTdzUDBRdDlZWG40em5lUWw5ejc4bXNmRllRU2R0Z2pWNnBQb2hmZkVJQjFVMWxCT3pPcEM0SS9hMDhWZjZJL0laRDdyV1laL29HZkNDOE40Uk5iVE8zeEJvQ2ZROXVmUUlONWI0VHFpbXZMQVg0dmhLTFE4NGhCQmdIM2taSkdJN2JmVVJQa1lDUVI1enVrYThKdklBaGUrTUlwTDBCUmVhWFVzcnIveWU4TTdRaG5SNmR4RzN1YzdSbHVUZUxoNGljUXYwQ1hVTExSYTdYRHlsek9aSytGN3FnQlJQRzR0WS9ibjNSQ2EyY3h5K1l4QkpQT3JyaHVTR1huRWc5THFacG8wNDdxYXJXQWFkTnJZSWZialFkbU1sMTZvWXcyOGtkSGdWZDlIeVNzMFZyZWJVNnRXS0hCS0k4dG9pQ25HUmtyOTNWYVlCSjNHRXVyRWhxMFExOTEwUW8ydVE5enQyUEhFbFpVem1zMEhrVWNNc1ROOFhFWklkblU0dCszbmNwY1ZpNjlwdGU0dHU1bEx4R05MWlNlRHhWK2tkQ3ltSTFlQm1xU2pETkFWcDZiZTRYcU5QQ3I2Mmw1dkNrSUp5Z3NOdDJmUHgyZG56eGl4ZGZFWVVNOHJLOWIrd1ZOVGJ3dndtQUxJSWpHSUNkQnhaN0NDc3RuUHl6ZWJrTVBEZ1pHUTVnNkZkTnRnUTMrMm5PWVlLZTFEaTVIT1Zkc3hEUEsvemNGUDQyNUYrNVhDVXp2YnlteWdialFrVWlqbXVpcU5BWENBNlZIbEZwZW51RjZqTEdBaG82VmtpVUxsMEdqSE1DYjczaUdtMFRDVnlqUFVEcFlUbG5NUzBCaVJ5QjZQQ3pxZFc5R3p5ejB6ZEtOUjZER1RuM0UydU5WYWNGYk9qTzRQM20vTFl4cGVLNndPZDZ0VXl2a1VVSk1ZN2VoTWNnZmRiM2o4aE1Ncm85NC9hcVgxV0xaTzQ2NytYdEFuNzJoV2x6em80WlA0SXllcTBUaUV6bjJIUnF6WGZ5SW5wbGdvbzBGbkN6ZVFzV1I5QUFBUUFFbEVRVlE3RG1FNk9iVHllLzA3TjBpM2NEL3gvOWs3RHpoSmlyTC8xK1M4K1RoRXhFQXdpLzVWekRsZ3hDeGl3SUNDT1N1WVFCUVV4UnlRVjFGRVVURml6aEhEcTRpb21KWFhpQXAzdDJGeW52bi91cDZaMnA2ZW5wbXFudTdkMmVQNWZ2WnpOOXZiMDlQVFZmWGtxdG9TaHI5UnYvUEh4UlE0N0F3bGZ6M25KRENhSUJQa0d1RDNJdWNjaGgxRVhDcjFMWWRhUmQ5RGdFYnRhanFHL21TN2Z6c2ltRkpBbFdVSzNMbEVoNytQaXhackZISWpIdnk0bnRQcDdITGNHK1cyKzh0MW5EZHE4ZkRnVVA2SkxCSDQ3NlNUSjR4Yy9WWlFpbS9vbXIwejdRZlZyTXBSYWxSR1ZjS09EL1ZjMkRRR2Y4ZEN1OTJibWwrcFBHclVPWWdjdVJZZzZrUnpkTzQyYUhVamQyQ2hTY1lmRVNNMjI0VkFvSGwramNZZEtMaW1KdVNsVWs3TmF6TkE2OEptYTFLdVM4MG50cDF2Wmt0VUtvK2xtMG1sdnBoT2YyYndVajFiQWlvSlRTWVhGUHczelc3dmRIb1JQVnZwV0dkdTdpMXJhKzlBWjBhY25lWkF5eFBXNEVzMEdrY3BwM0dhdXgyRGJWSEdIRlVmUXNiU3pHbDF0Nk9xS0ZxdGcvb1hHZWZMcGROZkxKV2VKcjJYNDJoVzVlaWJHYkN2YkthZ1J5V0NzSEt4ZU5Lb1ZTUVJiTlVwVzUrZWlVT3MwMUZ6RTRmTmczMzljM2JSR0tkQXYvSnFoczlVZUZBM1FzTmM5NGFQQnJDcDAyUkgwNkxUdWR0bTg1YUZ3a3RHci84NmJVVUNMYnNPODRhMnpSM0ZzQ2FOUk94TFVybFk1bVBNZGFWOGg3c1RoU3hwVlluK3licDJ0YWtXeStYZVd5aThYRTRuZlRYZGNEeitzMHptVThNYVRkOVFWRXhVTng1c2lVams2b1dGMTY2djkrU2I2eXdSbzh1cU1zMW85RDlpdGpIcU00U1JYUjJRUk5LaFVIZ1pWUitpUVpQSmI5SHRWQ3JIRkFxbjFPdDNRdWgvYnU0c3gxdDgxTTR3VlBKNWE5TVRaSU84aFZ4SElWT1k2eENTaU85akxLeXVuamMvZjdwOTdaOWgwRUFJaHBSS0oxYXJEODVtUHpBbXN1eTdqNmsvRmt5Y2l3UGw4YklqNGpROGJMMnFtNjdEbnRseTJzZ05VTkowUkd3S2Q3Z21WNkZ6V1JHY1ZzK05SQ1pQZFZORlBNUFdTMENnZmUxcnJmbDMyVDNwOU1XVnlpTVFaM2N0b0xHdDlaaDJWQTZwcUxxdEJEQlkwRkhIaHQzOGFkeXhkTExaOHpjMlhnZEoyR3dlTVVZZ3VMeFQydVJ5OUcxUkFWWXM5bnNLN3BmTFQ1SDFZU09MMkh5UFpka1owMlJHNXZvb1FUZG0yOHBBR1dOWGU1Q2ZtbkZkSS9UTmRRK21GNzZneWh2VjYwZU5YLzR3aUtEVExJQ0lBZmtzNmZTbnA1OGpMWmRCK2c3eVhBaVAwemErR01LSnhBL1Q2Yy9hMXhBU1hrTi9Rbll6eDZVY1pESWZSNWVqSytNSEVqVWUveVVDUG80bEdPMUFmZENMaVh0SER2bVlwZjdkYm82RmRudFhzZmhpKzY3UWcwVDZweTMxcitsdWdYdkRLQzVCS2RWdzJLa0ZwdTRKRVhJZjFLbzJPb3gzOGVMeEs4cGxhLzFJNkVHNDlpcVEyR2pjTnBuOFByMFJ5cUkvNGRQWXU3R2RNRGtBSytUK2xmMGJ1Q1VraWF0TzFQZUkreDg5T2ROa0V0ZlZiUVhUb0ZPZ1E4elJaQ3JhT1NvNk5BYTVidUx0SnA1bXI5cFVNN1RwaGFNcWdpeEdveUdtbUJncDlYWlpvUjEwbWtod2hRMWladUs2czBCdzBYWFlNK3ZyYjViaXFBeEhFbDNGZGV3SFpGY0hkTmxrOGdlVUx5NlZqbmZkVDNhbXNwUCs0aUZTcW9QUnlGVkFQcXl0dll0NjErTGlpMGU1Z2Zia1dyMSs1L1gxdCtMKzE5ZmZzbXZYc1I3dXVWQjRQajRSWFd2aXh0QkcwTWhxdDVmbGRtZFd2R1Z1N28zVWxDU2pYQjN0Z0dxSGdyaXN2NkUvVlVLQVBqQSthT0JKaTVHcWRXamUzcTlVS21yL2t4aXJuUWxUZFROUklnVmtyaE9tQllpOThCQjhyVVRpcDY3bmhNT2I5NFF2ZzhGVHFUeW1XcjEvTHZjZWZCZGx2Q1lTQTlXVXhlSkxLcFdIQ1NsTW9UK1FzS1FlVnFrOFdtNkdIUll6QStKOVFucUQzVzVhN2JIWWJQWldjNUVUbFNKSThFeS9sdnNZMFBBUWJUQi9oNVk1L0R1OWtGRUpaMjA3ckdUY0ZhUnRxZlJrdVlScGQvUW4rR2tTelZyakJoQnFOM3RjaU9ra0VwZmdKNTMrMHVycSs0V1VHaXBRMWVuTTlVOHpDM2ZhaDU0dnVFM2l0TDdwRm03Y0U5QlM0VDViL01qaExTOGZEK3NUZ281RVB4S0IrQ21Wbmo0L2Y0YmRPOFVRa0FXSWs1ZVFwTVhHWGZzQVZjRzdCZXY5ZkZ6ZGJxOGZaaklYdUpZV0Nia2p6OUN4em9qWFc0VE5iOGREdm56UzZST25OZWkyZ3BxVlBqeFJqODYwSDZHcEc3SFlueHdGWVRhNlkrV3pqL2c1RnBSa21KOC9jOVE1bzROUU9yRy95WGNidExxaFlqNWMzREVqeEU0czltZHlIYXZWKzFJQllxMTJmM244OTI2T3NhT2gvUncxMWVvRGFCNFZibU4rL3MzRG5RcGZCQ09sMlR5UzF0Vkh3NUYxcTR4Nys5cDFzQjlXVm80cmxaNHQ1MUlmSU5lMHZ3UlJ1V0x4R2NJdG51c3ZLaGRTcVR3ZXp4YWZuc3YxNXFLcFVOcW9sZEpWbnNheFBya0QrSmFJazVaS1Q2MVVIcG5OZm1oTVBOcmZzRkcxZW5RKy93cDVXUVJRdmhxTi9vdThYSVFSKzlNUVEyS0xtQ2dTMVhydlR2UEFWcythalVUb3hZS3d1VSsyTTUzdjlhcHVBc0szeGpWMW1uU09EekhoYmhGa1dWdDdPNDNvWlBJYnNkaGY1RkRxd0IrbVhZbW43RjN3S1Npam1jbWNQMTU4dVduU25yb2NYdXExLzVhUjVyb3RnRDdjRlN1aUgxTHBYMS9YcmpiVll1bjB4UkRzTVBZb09TU1hBRGtFYnE5Y24vNXN1MVdtYnlncUpxb2JyN2FFM1Zac1RYbFo5V3o5cW1ZTERxTSswMmNiZGl3eUJkbGYwdURwOU9mNzFZZEM3dHY0aFViajlvaTN3aWpLWnMveGNTNjFBN213Z2VYWG9LK3F3RWkzMndzeHlaMGk3d3RGNEZqc1JBZU1DeG9hMmV4NXE2c1hvbWZtODZkaE9MaXRrN2RKT3YwNVJDR0YzQUZOMlFsdStOeTQrbU5CMzdrZ25UczgzM1ZZalU2amJyWVhLQ1k1VWJ0bDI0eHZBQVIyTVRaVkJhRWRrdGc2MzZ2VDZXMU1iRE5XSjZ6NEdBcHRneHVyQXd4dnBMZnhUS3JWQnc0WEhLZ0NSS24zQi9xWTZpU3pVMTFrMHJnNkE5YWx5WkxKNzBZaUowRkdsY3ZIajA5L09xQTAzaWlqTkNCZ0JzT21naUdCREUwaThjUFJKd2FZdlI1cmVobVk2eVRvaHNYMWRsa0xZd1RGZE9iNnVMaXVQa2JtdWpmVEMyNG1WQ3E2RnJSMnRYcnAvclFGc3liVjZzUG9SU2J6eVJHblRCeFpBNEpvWWVIVVd1MmJwZEl6YUZFdXhKcndVeTQvTVpjN3gxNGc3am4wTjdoemhRc0lPcTJzUEtGVWVocXRLaW9YWkxvUGZ1THh5K2ZuVHg5T0ZuYTdLVXBtcFZKZm1saVE3ZWJzVzRsOEZRMUF3bkpqNHl4VkQ0ZE12d3pvV2M4d256K1YzdEUvVTBWS1cwUFhIR2ZSamNjb0xrRkY3VzZiNUV4bERYWTZ2YTgydmxUVXdYZ1hENjRsdldnMkR3K0h5MmhXQ3RuQmJVd212MCtMVWFrVnNEeDVOejMwUy96aFg4RFh3RDNrOHkrVmErYzcwZmVJKy9jMk9kT2tIOWZWYndYVG9GT2dRMnhvY1dXMUpkcWNNQ1FlLzYxTXVFOWdjSUVHaDh4eEVVRkdROHoySno4amlncjlvTk5FZ2l0c21LVzQ3dllUWEhTOVVIZ3AyVXNySzA4ZVA4RTRJTHM2bU10Mk1wa1BRM3ZLL1dSdjVQTG4vVGM3NlNGU3FuZFozWkdyZ0VwZFgzODdoYllXRjEraU9aa3drZmpKM054YjBDM3h4bnI5S01mQ2t4TkJ1b29xM1pGeFV4dHRpMzRocWR4TzdiNzBLYVkrRkdsNU9UZmdWVUp1V2toVlE2cmN6WFZVQmxRN0ZOQmxmUXo5cVIyMFlZcE1La0Qwb01XNnRuK0hmeDArYzlTdlBUeXBtd2tQTmlCem5UQXJRRlFHRnJwc0t2VmxuYmNrazkvR2FKZXJ0dDQ2SHYrRjNIemRXaG5iYmhyaXIyUlp3dGwyN0Zrd3VBYnNURURWcGhqQXRDS3JBM3haL0dBc0xTeThXZ1FHakNGWmdPaE1wYXNPTWFyaU9KdTlZSDM5YkhqSTlmcnRSOFY1L1dVR0czZVNjVU5TYWFCT1pYZ1pLbCtJeFg0VGpWNko1bWcyRDFVSGxjaERTaWxtTW8zWjk1azB3K0ZnY3RoY0Z6Qzdsb1BCbU11OU01ZDdkNnQxUGRpZ0NHOVJvV0UrZi9xdVhZOVEzVjQ5T3Z4MS9FcWMvVVdHZHczL3FUOTlNOWcwa3ZKT0U0bkxSbXcxTzB3MG4zKzlFajR3QXVMeFgzbzJGcjJocGpXbzJZM1RvTjhLdHJXTG5hN3ljTDFwTFBaL2lCeEJYR3VxMFoyQzh2MGc3WWRkblVuNGtBa09XdDAwbTBmVTYzY1N2VTBmeHQwd0VnL0lGaUJPMSsyZUJadUIzdVh2WkthSklQeUhWTDJRaHY3Q3dtbXVOd3lIQlAyVGZNNTArdk5xdHppMWFMK2pwQStaUXNUYWhBeXV5WXc0bm5DNDFicUpHSnBNNHpzcVhVcnptK2ZuMzJSYjd2UzYvWFBjcTR2VXpPK0pxNkttMDU5RmlFUlljZUhINUhMbmlpMUJ6ZVZkV25xNjNUYjJNUHM1YUd6VHVaem1BUVZFN09jZ3F0dHMzbmk0dG13NHFPcEozZXdBUERoTkNyOHNPb2hFVXNyTHkwOUJYRWtkYnpTT0ZINUFRZlp3ZUUwR0VjWXhyRW1WdFRCcU9ad3hEMEVwMzI1M1lhakd3Z3BhMlUwc2ZidmFneGJEVTExY2ZCbjZPWUlwaUFKUThBaVBIUmErSXdPdGFTZ1NPdXJHZ3kwQnFXTDNYamMyM3JDeThrU0huRGU2ckcyZTZOS2srVjNxQ3c2RVFxYmZCRndUb3o2emcxRExkc1ppenMwbGtSNmpoQm02V1hBRmlDcUNXU2ljTXZ4WFdtSUVjYkhkdSs4cnZBTE5tRXgralhSbHUzM2crQVZpTWRBeW1ZK1h5NDh2bDQ5RGVtRDh4QU1mMFI4TCtzNEZLWkhoNUhHM096OTBUZS9xWm50Qm9uZHA2VmxqVHBBZTFvMkhON0tCSVVwS1JHZEJOYldvbUxLeWJQckZzYWlEQ2dGdHhhNjdIb2hFcm9LR2dxNUJuZ1k2eGZGWDJ3cUl1eHlXT1UzV2x4dXl6MHBwdFVuanFyODZsMjFXNWM2aFVLUHJFcUp2WjdNZlFZQWV3akNkL3JUUVE1WkYwc29RV3hyMVNpUitUckhCVXVuNHNSbk5BQmxqZWhtWjY3UW1oS3IyVUNoL1lmQkQzWXNKUE8vQTQvWVJZNzZYRC9MVE5hNnJqNUc1Ym1KNmJiSzgvS3hJNUorcnErZmhKakVpNUEzN3ZIL09MSU9BREF3RElTMzhVZlVLZzNyQjhmYW9jRW0vZFpMSlMvQWpseC83ZjlYcVEvRXYyckZRZUJrR2lMSXFwd2o5VFM2eWlVYi9pc1JUdDN0NnEzVUU4dGJVa1hBYnBkSko4L1BPZEJXU2NkVE5kUGJlbFh0ZjJoMkVjRjhzOThhTDNDblNxajZjbTNzVDRranFQTWp6ZmdGaUQxWG9adHVVV1gyS1N3RzZKa1p4Q1FoekpkanRETXNvSTlUdXcvcHhtNGt1SG1KY05KbTUyYndwSGNubC9xZFFlR0d0ZGc4azErbVpZL3oyVDU3R3U5RXlCdWJuejBUWExSUktsY29qeGl6eXF1OFJDNDFNazFGY1Y3OFZQQVNkZ2h0aTBwZ3YybjZOOTIvU2VLM3VhUFF2YXR0b0h6RWFZa0ZmVmovb3BIRURnUlEyaUIwVjE5MGFnb2l1UThXMFdqY1VjcEdGaWR1YkJHUlhCM1JadVJEZ00yRlJsTXRQSEo0dE5tUFpTYnVaNU1PY1BhTklxVDZhSTVmb2RwUHI2MmRUMEFEcXpMRXorSGpVN24rdDF2WGRDaERIUFM0bC9DdVZ4K0xIOFZmY1BNVnZWMVllUDJTM1QyZ0ZGUlpBWDRWY3ltUXVwRi9WWXBtamx2QUlxSFlvaU12NkdQcFRXUU9vZTdzdjVuWm1JTXJSaUNEVVRVRG1PbUcyR2xBb1ZKdTRqcmVEZVB5MzlCWmFuWjcwQkl4SSt6bHF5L2xNNXFMQk1STlJOdmNJZWhPWWhuY2o5UXp1c0ZSNk92M1U2MGNObndBTmg0N28rRkVXRElhMy9OVTVtYVpldjdPNnJFb1ZlSWFFam55WUF5Mm9wbmVQeXJJbkVqOGhENFFtWFcwQlhodFhoUSszZW9ObUdaWjFoc2FHOS83ekM4ZmU5c0xtZERXYk54ZmJDdTJmYUNOTVJWMUtLQStqUXNEWFZqclI2RCtnL0ZaV2pxV2xQbUE3T2hadnB4Y1R5NkdvRzhnb3lVRDFobTJNWHkybVlzSVFVNlo4cXpWNXZVYWlXRHlSWm1RdUxwNU0ybnBqNDh6UmN5NTdOK0J2bjhGaklXbmNidXNxcWJGWDAyMEZGU1pRYTYzMXoxeDJ1K3pmUlUrTkdxamdTdVZSU29uNHNzV1NWMFp1VHFjVW44NGFuMEVRdEMxQllXdG8rZkU3cGNLSE1RQUFFQUJKUkVGVUFBbzVtWkpleUdVRzd0RS8rSDB4TlpxMlJLTnhXOXBrazBLQmJwT01MYUxSbmxXTkw1WE5ubVA3bER2U2kxSDdtTWo0ZTBlZWVUdXFYNHpIZitQNWJuVUloZW9xZmdxUHpyYk9VN2hXdTd2b1RSWjNueHZVYnQrQTNqVnh4azg0dkVycHlVcmwwZlk5U29JRFhpNFp4cW5VeFVNYk5oMDI1bjM5dDIrcHpsV3hqR0V2QUo1Mi81eGVySVFFQW4wNzF6TVZIdFNOMEREWGcyZENLM2h3bW53SHpyT3dPditQSEM2MDY3UmFPN1RtbG15czhPaUwzNEIyM2NwbVB6eXhYRTl1czVnZGZMdGFtdFI0UW9WeXU0WXMxZDVYczhzdWZidmFzeGJENElXRVdWaDQ3Zkx5VStrSW1VTnVUREFVQ1IxMVkyNUxSUFA1MTlGK0lrdEx6eGF5VVdTT01PejVzdEZvN3puTE5jekdvZFNRSTlWbjMyeHJDRDhGblZHZjhjQjJTU1RiTmh5Um9UK3F0V2VjSVNRZnRUTmsvbkJnQkVINTNoMkV5dkxJSDhSMEpKTS9waGM2eS9DclhjOHFsVWVLclVKL0xKZzRGNzBDTWtleVlYaVNsVGQxMCsybVZEZW9WQjR1WmhLMTlvRERrbTgwYnRrLzRhL2pyd0JwVEFhVlBXZEpBUjhoQnJhOEVRUDdGRTg3enpzNHNsa3Jmd0RkTVJ4UFVOdWhxTzFXQ2VqZi9ySkp2eEV6ZzM3ajJtWlpKNFl1aytpZjQxNHpta3grblJJdyt2SFBhdlVoOUVLRmJqeFRMait1WEQ1ZS9qeGU0L1J1Tm51KzZLMzBjMnN4WXhpWjZ4U09sdFdsS2Z0eFYvdUsybmM0YXVUTGhOS0orR1d1RDhkMWgwOFo5UWNqYzExZjNTamtwdkIvd1JoWldPaFZoaUZNTjJxTy9jd0VuZnlrVmp1YU9oZ3M4RkhucUtWbGhwOU1mLzA4OTdWbjBIOWdyaTh0UFNlWGV3Y2RvU3F4L2wvL0xzeERmMGJBQzR2RmZvZk0vUUVISEVQaWJuZy9Wcm1ocmVXa3dQdlFxVDExUkRWdFcvMzJMQk1WcVVpbnZ6aDQ1dldHYnE5RU9uYzRRcXZoa0ZiRkNMbGhHSmV3eEpjc0xCandLWnJOSThSMDBNT1V0Y0phYTV2cHVIaFVHOWRzM3JMUnVLUDg5V2ZKNUNWeTVlT2o2UVJsVndmdDNZaStIa1R2b2xoY1B2L3FNYUpTMHlPZW1Ha3lqZXRxdG9LM29KTUlab2c1Rkp6eWlLZE85UGlHMFJBTDlMSkdRYWVKQkZUWTREV3VTN2MwVXREdGFJS0lycXRwZU1ta1R1VmZRSFoxSUpkRjM4NWtQaUlzTitTQjZQT092ODVPZGhKeHBLdXYvckg2OFhHeWtHYWtWQitka1V2SVJaM1BvTmFjbjM4dERISmhnbm9JdzFPcUpqNHVTS1RoWUpyZEhhQmZIWDZ1VGl2WVYzQ2NuejlEQ1Ura0Mvc25YQ25jQ0toMktLREwraFg2aThldjZGOW5RbGdzSU9Xb3p6VHFaZ3pUbU9zVE1YYUJxSkpYcnIvdEdxMGVqbjEzcUl5NldyMS90Zm9BKzBWczlNYUFROExpL1BHQ1RNM21seHNmK3dQdW9WUTZnWDZHYlVwaFdkN3ZXMTUraXVNSDRvbitPamYzRnZ3NlhOcVBkTDY2N0xCdllFb3ExUk9YdGRwZDdjY3BEUzlzS2JRaE9uTEJhcHF2dGpYMWJWNGFOeExwbFduN1dGcXFDWG5VOXBDQnNCN3N2Y1VVeURtUkxyTlhJVExxZGF1UHhXS2IwNVZnZXRMKzNYQk5sU1ZoZTB0cXkxYnRybFlmYWgvUkdHWDlXWFIvSGo2NVB4dGpmN09ZUFdPTDcyKzJGMHhrVXJld3Y0ZWZGY3hCRmFKVmhvTGF6b3l3QlIzY0RRVk5KZzR4TkNqNTU5SXljRTM5RGtoN1dEOWtRMlF5RjhyOVhxM2dwcHlyY1pxcm9sSFNlMnp1MlF1SmhKV2tsSkdPYVdOOCtxMEFrVXQ2V3YycGYrYjloaTlMVzJiSUVKTExYK2w2dzRjcWxjY3FKZUtXZlFrY1dwMWJHbGp1cFFDcXoxY3FqeHR4allnSWxnQnRDUXhZbXNpYnlYeGlWSXBMSVNjcS9GWis5UDNwWFluRVQ4ZHNPcUNQamkwQjViNjJadTNCZ2NqWDR1SUxhU0Z1VjVRdGdaaW1NbHM3blVVcVFFd212elYrSDVOdU4xMHVueUJrQ0RXUitMNjN1OVVubGZwQy84WFgxRUg0VHRTNG8zYVM2blRteVN2UVRDSm1NcGIzZ210V0tzZUlyYUEzOWR4UnFBY2JtMWF1Y2lVNCtUbWVVS2hCNFZTWm10MlVBekJtS0FzdWZiYWV5MDM3MThnOXZtOWlPek14bkM4M1ZUZkVSSE05YUhSYXdkeHA4aGtxclJpYXNCU2xTZVJqb0FnWEJzSnd3YWlpWEQ1TzlOYjgxNW92cS9hODZQOXE5UVJJRHcrekExV05CVTFqVlNBSVNPUGRIckxSdDZ1bjEySzRNVElHSEJsM1Yxd05SYUd0Ymt4dENUVkxCT25uZVB5WGxJU1dVdnJKbmkrcmxsdEFsdHB0d1pqTjFRMlYyZGxzM3NoMlFrYTVyc1A0SytpTStvd0h0a3NpcWU5RjY2bllVVWZVT2JZLythYWRrOG52RFFkR1ZsWjZlY2RVNnF2NGRXbnBlV0k2VkxtWUR0QXBxZFNYaEZ3dFEyY2srb0wrV05CM0xsU2ZkTmdEcnRQWVBLZ2IzSlhxQnRYcWpCWWcycUplQXc5QlBiMWs4cHRqM2c0L3QxaDhBYjNPWmorZ2p0c3FlQWFLRDVURk1uM09QamlRTGFDOFNMMStGOGVmRW9tZlUycGNCcTgyRFNvVk05emk1ZGpIbzkrNDRYQXZJSzVxRS91RUdvMWJpRjVWZ2Z0aVRyQmRLWjgzL0xoY1FkU3VWRHBlOUlxS3BsMVBGTjJ2V0h5Vy9ORVNnOG5rRC9vbThmRml4akF5MTVXZ294MDVGYTdpaTN4a3gvcGthSWd4bTRmNmk3NzhOSXJyS2laR1VZek1kWDExNC9iZXY5RmU1UGlzWXZHNXJ1ZHNlOUFwQUNJMHFCR1FpY1grUFBLa2ZnN0ZVZUdFWkQvNTZSUDNSRlpGcVBibjVpMzA1NDFRcURMcUMwTE0wb0RLWmo4cU5GREpPL1YyZXFGeUFXcDJrS000d0xYWW1sd2UyRG4yb244bzNJa0ZRS1NzWld6S21RUXhpa3RBT1lyZUZycDNVMmQyT25NT3A4QURkR1c1b3Mrd2lvazRScENtaXhlTFdWbHdQSE44Y1h3TE9FUWtvMGlQd0FaUU1icWd2UnNGdk9uNStkZlFhMW0rSEI5Ly9uaVBXQ1BUWkJiWDFXd0ZiMEVuT3o0T01lb0o5cmZUQzgxTlA3Y0FveUVXNkdWTmcwNFRDYWF3d1V0Y2x4Z2o2SFk2d1VYWHg2UTU3QVJrVndkMDJWVHFLeVE1aHdNN3M1U2RkT3huRWtpbkhSVXBOVVJuNUlKSVB2OGFVaDl6YzI5Uy91a3dvMnhzcFlMZEJQaUV4NFhBKzNBd0RUL1VOTkhvUCtuWG9WWDVKN2VDM0xXNUxIb0pTalZMS2x5cldZOUNadkYrSWR3SnFIWW9rTXY2RmZvTGgvZFJ3WFN6ZWJONi9XNk92OEtRVUZPQ0ExS09KbmhYTitQeGJLNVB4TGcrSTVzOWoxNnNyNy9GN252RDZ5aVhuN3huenhlSDlUZk5Ob2ErSWJtTUpMSEQxRmFPWEtYeUdQV1ZhclY3NXZPVGR6R21tbWpZRGFYUzB4Qmg3SFFXaHJkNzIwSEk4dmxiNGFmWlBKeU93SWJ1SDlrY25NZ2JVUkYzb1hDeUtwV3IxKzlPVDFnV1I0LzBxOUVjL1VuQUU3S1B2dUN0Y2RVS2pzWGlTYkpIQlo2alZaQzJ3Qmp1bDA2SG9JU0t4V2VLS2NCWFdGczdkMjN0dmJBaDFMS2wrSWlOalRkUUZScENJZmJ6NStaNlV5ZFhWOCsxWmU0anRkbzk5dTc5elBCU3FBRWhWMFk1bWFhOUl2bG4yMTNlWmE0ZWhlbmxjbC8zR3pHMUJRSGlJeHVOVytOSFRXaHJObTlNUjVyTlc0b2RTN0g0L0VMaEZCbW9JcFVmeHJCVlB0TGdjcVFkRXFHUWg2dXI3Ni9YanlMdEtCZlpmdHllUFY5V1djQms4a2RVcWxnc1BrZXRZWUQrUTRGQ2pQRXA5Nm5VR0dLZHVibTN5WHU3N3ZyNm05V1dyUGgyU05VVUNpL2R1L2VUNmxTNXFkL3I1STM5UHB0OXY1Qkcwdnk4ZGFUUk9NcVIyMWJYNzA5OWVBSmEzOGZnSm1WVzBIdUhUWFpUOUZzaEZLckoyWmxXa0IyeWpub0MzcUtTWG9OMytDMjVXaHNFK011a3ZkSlR4Qmc0TUZ0WFZ6OWNyVDVRekI1cXdpaVNLREsyTW13My8xdnVKR0x0dFlFbnBpdy95QkIwOWZYMXMwbUdCRWVndGtTNWZDeTlVR1Z3NDZGK2lQNUFrNmhjWjFrRmdWUTN2UjNac3RuekViTWpHYXQrN0RYSGNFTDZKZEVQbHlzMWhxR2hNSmI3SlgwRDhaMUc0N2JGNHJPaHVkQ2c4THR3cWJXMWM2aWNKWlA1bU9lcHFMRFJ5Y2pCanlyTGxoTytieVVYcmRrMGMxT3BYaHF5VUhnaEtaRlc2MFliRzYrbGc4bmtkMTJ2cjF4QmpEdWhBZTF0SjNyZVMxd0VESjViMzNVNVJoclZsalRBdDRPTlBmWjlRY25QaWRCY1QxbGMvbHBhSHdLZFlXUGo5ZjN0Wmo2aXpsUWxvZm44cWVTcTRUN2gyTHRGalEzVXpTd3h1UlU4T0UzK1F1NEFIcXpjTU1ocUwrUmExdGZmT0hHNmlOcmFDZVpObzNGN0tSSVg3T3VnNEN1ZzB3cTVsTWpRbG1UdUZBb3Y2UHN5NFZMcEtYM3A4WEZodmgya25FNTlzWkRCZWltY3cvS1dEbFlDSVozK25QMThUYnZhU0l2QmN0dTM3Nk00czlQcEdiM1FHdVh5RTZtSE8xYVpNakVVZGRXTmtTMWhteVZ5RVVKUlFwYVkwNVpZcGRLSjlyV3lqQzRiRG0va2N1OFcwcDdINEZYenF2SG84SEZLR1FuYk9wU2wwalBvTkR5M2pZMVR4MDRQOEZQUW1mYVpnR2kxcnQvMzYzdU9EeVNlVW9MMlJYYzBsYVBLcGNudjlZUytQUi9GRUtNb0tveFYvUzBhSFdqR0piWVdyZUFWN1gyRzNqVnh5WG0vMEI4TCtzNUZMUFpibW9vTmI2S3ZRY0p3R0IwRlBjUzJxNXVBZ0kxRUVrbHVTL1J3akF2NVNCOG5zOWRXQ01XeDBiQ1FLK3ZnQ1VCZXdXcmR1L2RpaXBXbDAxK3cxNDZvM01QR3hodlJ6K1hBaVNJRnZyRnhocEJpV1cybFpFY0ZMaHcvYm9zOUgrNTZwbDl6YTdQWkMwYjhwVTBoZU53cXpDZTVZbWdFU2p5ZlA0MisxM1p0N091S1VlT1NpRVpnQWNPQjlpcUJ6MUlvdkZ3Mm4zRGRFZEwyM2krT0wySnV0WTdBVTBMMER6NGpvbmFrbUxMWmM2WmZhTWVjTnRraGtBblRyR0VRREFibWVqSjVTVDllL1VLbHNDQ0xITk84Q2JYVUpjUWdtWnJRbFlYQ0s4VldvUzgvVGVPNnhNUW9pcEc1cnE5dVhJRXRSQlhNbGNxajFFWU4remY0bXZRazFmWnpya1NqVjVGRVFqUEpPaWMwUkFndHZyN2VjeUtTeVcvYnJubHY5QmFvWStVY29iZkE5S0xYOW9XZmd3djlyYTI5cjFRNlFjM1NRZUFDR1ZPYVI2cjh1RDR3SHF5WklmSDRyMmhTMWtSZ1ZjcUVDRVUxclNpUWZQdGxxcUJOWmRreFJ2cGpJVklxUGQyMXBJOFdub1JvaFl5bEFBc2VWejUvK3NUYlFPYXIvOFpYUVNTU1E2cWVvWDVjSXBuOEptWEJNRlRSZHJLbzlMRDE5YmVMcWNGWG95dkRUMFFzc1g5dklReFBCUHpWT2tPRXBvc1hqMisyRVdsdEtrVG8rNWlYcTc5dXBYY0RNWlhMdlV0SVg2QlVlcFk2YnVRUjkwK1lrR2t5amV0cXQ0SlowQ25RSVFZaEkyTXAxaEJEbkVFV2xGdlc2Y1NGdmJjUy9TRVczR1U5QkowMGJzRC93Z2F2Y1YyTDhZSnVSK043ZE4yODNDMGd1enFReXlLeG1NMSsyUFZQKzNGMjBpaFNhc3JFa1N0a21Gb3FEc3ZJaVViL1B1Uy9iNjZ0dTc3KzFyVzFkOHZhNVlOazVWa0VHZ3JlYUtYeUNOSGJFL1dQWW1iQU42VzhKRlJlc1hpaWRMU1R4ZUpKRkllWEVZT1JjZmlBYW9jQ3VxeGZvVCs2anJBYStzMElUZENrQXBnME1ELzI3ZnRZdmI3cE5BV2tIRFdaUnQyTXg3TzVQaEhqTFkwUXdwNmZQeDB4TEl3eCtONGtDMkMzamNrZndINktScTlVRWxtbGtHM1hYRStuUHcyeGlIakV2bjJmaEg4dXMxeldGbEh3cnNjbnlYSzVEOVRyMXRvSnlHZmdSMGp4dEh2M2ZjWE9aSFgxQTQ0ajhIN1Y2d01QVlBVMHNKdlBYRjkvSi9yNjZ1b0hNWHFSbFZGTk1EZjMxakdWdHVpbUdDZUZ3a3RxdFhzaHNqTnhHdCtVZUd0YytGRVFoUWcrSXNpNGQrK24xSEhiRXdpS2RQcExTTVVKcVgzSnpjYmRRaCs3QnN1TWdMNG5Ld0hmM1Q1ZWNQRjBlbUFuaUZqc2Q5bnNCNldyYzkzVjFmUGxLTnN6SE5vMkFvSGFQWHVjaFlOb0YybU9XR0NRcnF3NFY4RkZFK0FIcmFaYUtwZDdqNnZSbjhsOG1pNUZoV2o5azkrUnlmUmN1RzQzQ29uaGVKZDkzdTBXTks0UkdJd1UwVlpBNkYxOTllWlVpVjI3anFHbHJaRzZodENIeXkza1k3VExRNW56SHRnVkZIR3JYRzRGQmhZR0w0YXdHT29QZmRxNTNEdGgzT0JQQ0hHU2hsYXp3R1hNc1N1bVFHZUlJVVdkVG44V29iWEdhMTBBQUJBQVNVUkJWRWtZdFh2M2ZnNzNFQTduVlQra1d4TDlwYXJwS3l3c25LWWk5YW5VMXhES2g3V0tBWVg4MlhBaUo1TTVINnBFQ3JIM3E0UEx5MCtkMG1LRHcwOGFCd2tNV2cxeENneGFBYzhLenhQeGwwTGh4VERwd3VFeWJVM3JSbWQrL28ySURzdkl5NnZ3QTlNQkkzVDZXZjdRRjhNVHNQYnMyU3dqVzFoNFpUTDVQZUVKaEtwSkZKVExqMWN6bTNGd2NmRmw2aHprdzVDOXc4QkJ5QWsvRkcxWDBzTytjRjBRQkdkTElMSlA4ZzEyNVBoRkFSWEo1UGZoaDloKzNhS0VYN041bUpJbmRtbXN5R1kvWkY4RFpuNytkZWlLZU12R3hsbjIweENzVENRR3Fwd1JXVVpXWTNpeGRMaHdORS9JRzYzV0RkYlcvc2R4RUlPT1h1QXhMaXowS241Z2Y4N052UmxQRlNObDM3NkIvTUg4L0d0SHRFdUVIQnZwNStoV1lNRG1wbjJhOEMvbGNRTUY4YStOalRPRkZlSThGMEltRkdxUjZFQVFRZTRUTk9vbUE1R2ZFMGttdnh1UFB4b3VLOExjK0VFUVJBV0ZrWEtqd2lZaUhDNUFTQmFMejRQVzJMdjNpL1l6aDlGVU42WjRzM3owbWRnS0hwd21mMG1uUHdOVktDeWI5dVg0Z2E2aHB6clJyRVdPQWJGQ0RBRzA5ZHJhdStnZ0JpQWxPWVJjeUxuL0VicUpEVG4xNGp3WXRMQ2E2QWxBU211V2RBOERhWXlFSWg1K3NmaENDRzI3a00vbHpuR3NPS3R2VjV0b01jU2JEa093REQrNFdpaFVVSzR1M3VVb090YzNGRTNVamE0dDBXNGZTT29BSDUzTnZrOGRoOFBZYk40U25ST3hrcFdWNC9zUHpjeEVnZnl2MSs4QVk3SmV2d3ZzRFZsdzBLUW5OcmdPWlNXZC9sU2w4bGc4SlRxTkJOMTR5YUFqNlBUTmRhTStFeEJ3ZkJ6Vll5Ukw2VFZhUWExc3BLMGNPd3NMcjBhdnBvdmp4L0ZJNStkZkw3eWlIWmNJSEZVOHBEblJGSjBXandpeFFsakY2VFNFVEVzRWorWllNSEl1c3RsenlIM0d2M2JoT2N5MnE1dmdtSnQ3MDlyYU9mZ2loY0xKK0ZISDhlaHlPWmZxQVlyazJNbmwzcXNDeXYzM3dxUjhLd0ppVXJ4OFlPZ1Qzd29qWlBqS294YXhnNys1dVBqU3dUT2Y1WG9tb25BMFZXOUtaSEhxWmE2THJjS0loUU1PRlErTlEwcEhBWnNmU1NreFMrZzNMaEp5eUlTaHZlU214byt6eDAvazVJR1BqZmtVQks5d3duREhVRGppOWZoMDZFSFQ3YmZjOEpJOFRxVytqcDRtVTJWUHdLQVdzNFNKdWQ1QzJCQzJoL1RhUGduenc3SEFvWjE0L0Zka29DSndoQjljQjJkSy8zMXQrQzM2U2w4ZlUvbXBIOWNsSmtaUlRNMTFiWFhqU25kKy9rd2swcVNaOXhxY1B6czdmZ1pEcUw5TXcrOWRLOHR0SU1ueVpxVGJoVFY5N2pTcTIxYWtVbDlCUjFXL3lsS2t1OUJNRDloZDNXNUVtWlF3UHdiWGd3Z3E5SWY4TisyVWpYNFlqVjVsanhzNEtoaGtoWVJsR1JybFJDa2hZbzlxNW5LYmRxbXNsTEtDcnFSclZLZTE1LzRVVUZoUWxMUmFBWDdHRy85MkVJb3BsNC9GczRYOFY2V05LeXRQb0NJdC9iZ0VZdFFZNHhSK3A4QkwvOFl1dDgvQ0lvd0NDS0ZRQ1FPSzdIUHBiYjNPOVFrSUV4Y1A0a0pKdjBUaVovUXA4ZmlsR1BMeW5uOXRQM2tydlJza2QrcjFPK0kySUs4d212cGEwc0FqVm96UE5KbkdkZlZid1Nqb0ZPZ1F3elh6K1ZjVUNzOFBoZXBLR2poTXhIcjl6c3IxVTJ4c3ZFRzl6bVF1Z2s4aEFrTi9pQVYzV1E5QnA0a0VVZGdndk1aMXhTUkJ0OVB4TjdyZTdmWkNBZUd3MWdxSUlqQzdPckRMZnI1VWVzcVVPZUpaeUU3cVk1UlNOMFZuNURZYWQraS91TjNhbW90enZYdjN2WlFIalhORzdYYUNmS3ZScmgxYkFDSVBDRzdML1BpVDhhT093eVNlNURzSFVqc1UwR1g5Q3YxQkVTd3RQVzk5L1N3Vm1oaFJzQkdVY3RUSHM3b1pqMmR6ZlNJZVl5SXJLOGVSOXlVMzUrcGx1M0ZieU82NEdyaHFzdzg4Rkx2YnBvQmxUQVhhUXFaNWNFRmNiV25wdVpUL0h0NURYU0ZOL3lmQThQV2NuaHlpTytMMWVEcERMM3k1N0NZT0taWklYTHE4L0RTcWY0ZGk2RGVCNVFnTnpjVnhvaGIxclZTT0cveExaOFFkZG9kdlFCOXZqVHMzOXpab1VNaEUvOFQzcUc4M0FDelJ4Y1VYOTVlTHQ2TDg2TEdMaXk5eGU2L3U0NHBHL3krYi9RQ1ZKNHYreERVQ0RzYlMwZ3VHWjFkRGxDd3RQWnZhVjQ2eUc5STFNNWtMdytGUmdlUHgvV3JDTkpIaGhXcWhPMm0wS2dkdlllSFVkUHJ6cm0rUFJQNEZzUUF2MGR0SWRMUXk5WXBRYUxnWXYyUDdWNHo0NjVnVDZJS2pIdFRBY1kyRVRVOStJbXloSW4xS0hzSkpoZzNxdGtSOEZ5a1FxRFQxRnZWQkdKZzBVNXlBeGtLU1ZZM3gvcTRFR09OUGRNVE92RDB1blNFMk4vY1dkSDVLd09NR2xHZU9qcUZxbU1ybEoxRVVlSDcrdFk3TjM1Ry9vZmZLTmRXY1MxV25VdDlBOWhSUHp6L3AzWU1tTjhNb1ZHdHREbUlnNlBSYkFWRVNuS2swSTNRL0xyVzRlTEpyRkZoZTRYRnF0UVk4V0xveTNnSy8yaEZVR2lZVUd0V0hKMDRwVTdNT0RNWkMvME9ieTh0UGh6eFhrL2pkemlrdkx6OVRCbytzeHdqUllRdkZmczl0Mnk5TmJhaDd0d0haRXYwRmNhMUthNkVIK29PcWYwWGN6VzJVMFcyM0IzL3RmWmYrY0c2TmVOZndhOFhFaGI0SDNoV0wvVzVwNlRsS1BZbWVvcmtBWTk5eHFVamtHc2ZEZ2J5YW0zczcvTlhSQzRUb1dEN2piM2hBcktYVEY4L1BuMkcvRGJ5R3FocTFTSDZ0ZGpjYVdhcFg2SUNjQVMxZklWZHZqYmpkcXVPN2FGa1hvNERyTWpkM0Z2VVEzQzFFaDB4OG5wbE9mMkxNdS95V24vb0NvYjI0K0Z5MWdJVHlSbUQveSt6N3dCVVFiTUlYc1orSlFVRWJ2dzUvbkk2NkdYMVhvKzVjMy9MeFlnRHJ0SUlIcDhudE5oem8zaTJlNTlMU3MwaUZpZjRTL1REVlJyV0NuWVdGMStkeTc0TnNIUDVjeEtUSzVTY0tPYktRQmhBYTRBbFFZQTQ5bko0QVJoa2NHYmZRb2RhQVFyb1VMZyt0WWlWMXJxVnI4TjBoRUdnNnNnTk51MXBmaXlIVmtVeCtwMy9hQWJhbzFsY2dWTlgyd2YydnIyc29HcWtiVFZzQzRmWCtMSkZYaFVJTjIxZm9iYWNsQTQ2dk1MMXMveUxOcGFVWHpjMjlTVDBLZW1MNGRraW8yOC9NNWQ2dnBrQ1FqUVRSaHhpcm1HNkk2WnZyK24zR2sxMnQ2ZW1QVjNsZDdUTTM3eTBXKytQS3l2RklUTkt2dHVEWEpXakhFVHQ1K1J5WEdIVjl0MmZvaFVpa0p5cmw2dVphS3g5UVVCVTlyVm9kMklqRXE0ODVHZjJ4b085Y1lMZ3RMNTlBN2lFSlQxd04xbmovRXdmYXpsemREQ2gzc1VWb0RvSE5lNE5WdHJMeVZGcWVRUkdQWDZGQ1lhNVh4cDhnb3JQWkQyRVVTS1BGK1FXUm04SFl0N3ZlUWpZV1RKR2hHVk1UeDBoWCswelREamJ5eXRtc2U1SWIyZ2VPRDYzM29KREdBQTVlSWliZm1QY2g0T0ZTMm8xclZiRkQwS25NcFpMOGFFZU1pTDVxRy9tNGNKcnR0N2JyYWJnTmFQbGM3cjNvTTM1VUgxckwrS25YNDlkb3RCTUsxYW15b1ZwOWdGcDRxWSt4LzY2TnJpK2piNjRuazk5YVdPZ1ZsY29WZlpiUXBnaTB1bDIxaTVpSmFuR2NLWHZzQy9yTHlBMTBKSDJsNy9pSXNXL1JsWjhlNHJwQ0k0cGlhcTdycXh0WDJRN1RuV3h5V205SmpHWjAwR25ISURkNnMxSnhPb1ZCc05YbHRuZFgyQS9pSWVkeTc4RFR0aCtNUnY5dXQ3dVVTWW51TVZ5SVlCcjZvOGMrSm5KRklNUkVLZ3p0cU5LTjZNUEx5ODhZZE44RUxjMklnNjRyZEE3UzZ6QVF3dWhPRk5VVU11eXp2UHhrKzlKdTZJU0xpeTlYeXdsVHAwWG1Fb0h1dm1JZE1EVVhGMDlSY3Bnc1ZTU2h4NjlKS1QrbGhqdEJEbUp3N0tnckc4UWxaQWJ0eWJoaEdqVVErSWlIcTVsMWc5WDVacWtUR0hXN2RqM0s5aWg2TGlFYXlHNkVHN2w0WkEzQy9WRk5tVXoyUW91MmpSUXRURDFpYlUzaHFzbzdpQS9RQTl6WWVDMU5Dakx5aUFtZFRKTnBYRmV6RllTWkZndGlpUFZZV25vK0xvNHJrelRBL2Noa3JtTXU4WVExZzZiWUgwQTl3TGJiY1E5RHpDaFNxbnRaRDBFblRZSW9iUEFXMXhXVEJkM094dC9vdXRyb0xCelduV29Ta0YwOTlXWGQzU1ZFUndlVEY1c1htWm5zcE1NaW5iYWpHcWJValprNGN2WERJTW5rdHgxT0t5SERibzhma2NuMS9MZzZZKzlONjdMb0NWSnZEaWdtM0MwVTBNU2xWUUtxSFFyb3NuNkYvbURISXVDZ2JBbmw2TUhtajhYczNvR21GbE5CMFlHRXIrdDNITHd4TVY0N0c2b2JmVUhuMFZ5ZlNPakFBdzl4SEpJelBFNVF2eUlBUnp0cHV0eGdOOWx1SHl5LzVBWXNKOC83K3loZ1c3VGJoOENFaWtiLzRqcnQyQVBRQlBhNWErUlNpdjJJVGljcmJlc3VsQkFraSthN1NxV24wU0pQSG1hSWVpT0l4ZzBPOUcxRURMdmR1V2owRC9yektpWWloY0pLcDdPTW5CK0dqSFJtV3BQdUJPMTdDSjRlN2JFMXZGYXc3MkJRNzkxcnVjVFFVakJpT3AyRlp2TUlkQkpabVQ1OVNIcS9wZE9aa3p1M29uRnJzckd1bVdqRVlEaEkyMjRSajFjMmJuWEVsUmVrVjl4Qm5HdTd4ZzZDQyszMjlmRnZKTEl2SEw1YWN4RzQ3U084dXZvaHhBZ1FVWnFiZTdQd0EvMVd3R2h0dFE2SFdwVHoxU1lPbVVpN2ZaMVc2MkFwRS9icWRKc2RRZ2hqUWVaZFF2QU04YjIyY3NrTmY5VU5oUENlUForSDNlbGpkNXBCWkE5SHY5MDNWdFNIV3EzcmRUcTc4QUp1cXI4eElDUGc0VU16SXYwenZQV2VuYlcxLzJrMGJpVVRZS2NLRXhxTi83ZTI5bDR4M2FLaFJraXJBN3ArR1JKbXlsMEd0b29vT2dPMFhpVHluMmowcXJHQ0s5SnEzVURtSGYva0dvTjJzTlBValM2K08wMG1vQW11aTFFamJibS9UNjlsRUdRdmxVNFNsaFB4eUluZE5aOS9UYlg2SU1SNmtGdkZuVFNiaDNhN3VXajB6MzYxTEpKQXNvUGhtditRZG5WMzB2bWFkcldtRmd2TElrVnJKaGphRkU5anpQZWFhQ2hPb1c0Q3NpWE1MaXVmMkNGV3dEQnl0ZHh6MlVXVnlOVFVEYmJYclREdE16c0YyY0VPZ3JDZDJCVjNJdXZyWjlQaWtZaDRSQ0pJL1ArYXRnZ1p3OXJhK3hxTlc4TlVRRngraXp1YnpsZ1FKczZGSEluWGx4YkM1S1dxdGxYZEJFaTNtMjQyRDBjY0dlYTlmMjVGdUYrNzA0VkdrR0d4L1NiY0VXMDJiOVR0emt0dmFOc3NkazMwR3hkblFpdGhpSTJQbjh3Q2xjb2oxSEw0dTNZOVNvb0NMYUNlOXV5eGx1aElwejlOKzBYT0lOcm11dFVQb1p0aXNTc2prYXRhclJ2dDIyZWxpSmFYVHh5YU50OHpWaEZDY1ZRR2J5V2E4dE5EWEZjREwrYTZwcnFaQmZRelRUNnl0dmJ1UnVOMnNCeFdWbzdUZnppSTBLSWJkRHFwYUJUVzFOV2pKbHZLM2dLN2E3bmJEY2x1Y1BVazNlUy91WTYrMnVuZ1p3NWVObTVndU1jMkdrZlNVc3FJaHlBcUlrelFDYm0wMjd2eHJPQlBJVG8wVVRYTGlNZGgzVzRZaVRsZlV4djZjUWtRUnB5UWRFZTVmRnl4aURUODJnRUhQRmhNVGJjYmE3ZHhHN3VSbUpPckdCWnRmd284b3JqZDNzMWtqOWhEcHNsRFhIZE1Ld3hkWEV1TCtUdkVxdFVIMDBiU3UzZmZIWUlGRHcxaVh6YlpOV0ttTVJwaXZsM1dLT2hrUjY1azltNzE2NWd4N3J2VEZFUmNGLzFrNzk2QjJRVUhISEQvTGZiMGNRUDJ4VWNYRjEraXY4clg5TkYxdVJ6WHZhRTlxYlpZNnZRbjZOdGRBZG5WMjJXdTc3anM1UHI2Mit2MU84YmpWeXd0blNSRzNxcHhTbjI3Z0VLWGVtR3gyNDNMVzRYdFZ4R3pEZVFTRks1MHRQOXNuNUUrbm9CcWh3SzZyTitodjdCVVR3ZEoxZkRmMGJHVWdKU2pGc0dsRVgwMzExMm5VemltR0k1Y1VRbENBVDZHWStiSE5FQnVoc08vRVQ0VEdmeDEvNmp0MkNRY0xvMm80QjVIT3YwNUd1MlZ5bU55dVhORThBVFR1RUdCdnEyeGU0VXhjb0YzczhXS1FxR1NhMzM5bGdFaG0waGNLcGhKd0IzVkthMndBeUd1czEwbW1pQWUvNlhZVnVEYmhNTy9GVHVHVGk3M0RoZ2ZpUHZuY3UvMkpUT2gzd3FRZGZINFpVS1hObUx4anBVajl3dTZjTjNqOGUxSmVmcXJiaXFWaDlLc2wzVGFZQlc5SFlmczRUK2ZkRlpYenJmN3A5aHVZTnhQVE9NaFZkOW8zRXE2UXN0RkFBQVFBRWxFUVZSWTg2ZmZKd3lSay9Dc1RhL0s1U2R2VFFHaXREcitMSFlTTGJoMjlyVXpSOU9XODg3L1QraXgwOVNOTHI0N1RTYWdDZjdwV0V6SU0vQkZhU1k2RW9mbVhtN2I5MzRPRmQ5ZkkwZnpmRTI3V2xPTGRTS1JmK0ZIYUREUlVKeEMzUVJrUzVoZE5oeGVqY2NuYlBYVno5TnZKNlo5WnFmZ3dSUFpRY3pOdmIxUWlDSjRqU2diRlZ0TUxFRE1aQzVBRkJJQmVyeHJDM1pDc2FNekZvU0pjd0ZocXk5dnQxWGRCQWlDK3hNWGlUZW5JNnQydG5RSDB1RjlKMFloTXdTZW81Y3RQeFJ1V0g5OUhWbDY0ckhpUWI5eGNlWk9NWmdiamR2U0M0UmU5YXNQaGJTRUliN2dneUJVbTgyZXJ6L0pmQ3ZSTnRldGZxalhaSDRhcTU3UmxKOGU0cm9hZUhrQ211cG1OdEROTlBsRnMzbFQyaWxQTGdWbmtJekVvTk1aZDdLM0lLbi9WNkdMLytiNlJMdTZYSDRTblpaTWZsY1lYM3h5eUtWZktLQ0ZqSGdFNGVicnh5VkFSOFdINi9WN0NybWVwZkNEVUtncGQzdDA2UTliRUZIY2J1L0d3Q01tZERKTkh1SzZZMXBoNk9KYVdpemdJZmJ2TWZzTHpSSkdROHlmeTA0WGRIS29tNUdtck85T1V6QngzZERRcDJ6MS9Na2g1OFhnQnFhUHJqZWJoOWRxOTZUWFVDS3kyczlnMWtkQWR2VjJtZXM3TFRzWlFTakcrbS9zbFhkUUlBdng1R2pVdDVXcXRnYklKY2Z5M2pvRVZEc1UwR1g5RHYxMW90Ri9hR3dTSFpCeTFDSzROS0x2NWpwMDJJNndkUmlHMlFvT1BQQk9qbmxwZUhIMTFmOHJHSVpoR0laaEdFWVBtSlRDdVFJaW01UU13ekFNdyt5M2tQR0RWTm8xMTN5VEtrNTI3WHA0SkhMTnRkeitvY2ZpV0FHUmJVS0dZWUtHaEUrMSt1Qm04K2FwMU5ka2xWNUwxallkWHlvOVZWaExlYjBza2ZpUllDODFTRGpUcFBxaGZRVkU3bklNdyt4UGtLQ0RodTEyczhKYXZITlh1ZnlFV3MzYUZYZCsvZzJwMUpjRXExcUcyY21Fd3hzSEhQQkFZVWhVTUF6RE1BekRNQXpETUF6RE1BekRNQXpqbFhiN0FHR3RIMUNXeXgvTytOYUtETU13K3ptZHpseWw4Z2o4Q0xtQ2FhZXpSTWVUeWU5VDlTSERNQXpETU5OVHJUNjRVSGlwL1VnMCtzOWs4dXVDWVpockpkSCtCRTJHWVJoQ3JWWGUyL0dIcFFURE1BekRNQXhqVHN2Mkw1dVVETU13ekxXWlNMTjVxTzZwa1QzaDhJYllQanFkWEx0OUhjMlRvOUYvaEVKMXdVZ2lrYXQzNzc2di9RamJQNUt1L1FVL0U0Wmh0b1pZN0kveCtLV054bEhDVW0xVzlXRTArczkwK3VQcDlCZlZPU3lSQW9ZelRVSjlkNEs3SE1Ndyt5T2JPM1JEMWNialA4OW16dzJGbW5TRTVSN0RYTnNJSFhqZ0lZSmhHSVpoR0laaEdJWmhHSVpoR0laaEdNWlh1dDI0c05hR2JOclRrd3pETUZ0Q3VOUEpkcnZwU0dTZm1oM0hNQXpETUF6RE1Fd1E4QmJNRE1Nd0RNTXdETU13RE1Nd0RNTXdETVA0VHlqVUVBekRNTnRESnh3dUNGRVFETU13RE1Nd0RNTUVEQmNnTWd6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF4akRCY2dNZ3pETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXhqREJjZ01nekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BeGpEQmNnTWd6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF4akRCY2dNZ3pETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXhqREJjZ01nekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BeGpEQmNnTWd6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF4akRCY2dNZ3pETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXhqREJjZ01nekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BeGpEQmNnTWd6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF4akRCY2dNZ3pETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXhqREJjZ01nekRNQXpETUF6RE1BekRNQXpETUF6RE1BekRNQXpETUF6RE1BeGpEQmNnTW94SHV0MzAzcjJmRG9kTDRmQ2VhUFNxVk9vTHNkZ2Z4NXhmcVR5cTBUaFMvWnBNL2pDWi9KWmdydFZFYXJWNzFHcjNhN2NQNkhSVzR2RmZ6TSsvVHYxdGZmM3RyZGFOd3VGOWtjaC9VNm12SmhJL0ZhSWpHSVpoR09aYWpMNXliRFJ1dTdIeHVuQTRINGxjSFkzK09aMytYQ1N5Ui9oTnUzMVFwZktJWnZNbW5RNVVlWFpwNlFYUjZKV0NZUmlHWVJpR1lSaUdZUmlHbVRFUXVxbFdIOXhvM0xIZFh1bDBsckxaOTZmVFh4QU13ekFNd3pDTVQyeGxBV0swVW5rWS9rT21NQkw1dDloV3F0V0hkRHJMc2RqdjQvR2ZpeTJrMmJ4bHMzbEVPRnlZc3ZLczFUcWtYcitYRU4xMCtoT2hVRlBzVExhckZjWlRxOTIzMjAyRVFnM1ZSbzNHcmR2dDZ3cXI2MTRTRGhkdDU0YmhvdUJIaUVNYWpkdFZLZzlmV1hsQ05QclhVVmR1Tm05ZXE5MVAvUnFKWEROOUFhTEozYm96bTYzZ29GYTdkNmV6aUl4K1BQN3I0YjlXS285dHQzZmJEblRnTjA0NUxqREVNRnJ4SWhiN1hUVDZkMkhWbTJacnRYc0lxK0grRzQ5Zkx2eWdWRHFoVkhxcStyWFR5ZG4vaXEvY2JoK0FuMmJ6WnJYYWZlYm16cHJlR2JaOWk2dmo4Vi9Rd2VGZTVNcjRWbUNHaDU2dEYvMDJHdjJIWUd4c3pSRGpUdXNqMDZ1YmJhVGJqVU5saDBJMTRSdVJiamNWQ3BVMHpvU3BrQW1IeXpvVjVPYjNHZTUyMDNxM0VjTGxoYTkwdXhuMGdtQ3MwSEYzcTY4YzhUekpUbXUxYmxpdjM2bFdlK0RLeW1ORG9icndqMDVuYnQrK2o4aEhvVDUwMDdmYUdrRzM5VXhqUzJ6OVpSa1JtSW5pK2JJZVBHSU01MHJsY1JBT2ljVDNvdEYvMHNHQWh0Z090K2dpamNiL2E3V3UxKzFhYmtVNHZKWktmVWxzTFZJeE5mRFl4cDRWa3NxeE1rbzVjdVB1SDdpTzNGbVRTRUxPSlVDc1JvWVVJdklLbTNjNytIVjArclkzOUMyNllDK0x1QlllUlRpOG5rcDlVWmd6ZzQycnpRekZxM2M2QVZsMFh2WENCSFV6Zkw2ZTAyUjYyWUFFaVA4dTNnNWtKejJFQU9JU1JwK2VESVZhd1dpeDJXMEZkbDEzSEZ1aTlNTWJHMjl0Tkc2bGZrZDh6L1o2K3h1MzFicEJ0ZnBRKzVGNC9MSkU0bi9GZEFRUjE5M1JZOEd2VFAzT1lpZWI2OWRHV04wd0RMTnoyYm9DeEU0bldTaThGQzhXRmw0NUpxQ0R0Q0w4TVdScUE0aStiVkl1SDl0cUhaYkpYTFRGUlZlMTJ0M0s1U2NobWpsV040U1FWUlV5WVRBcXJkdHEzYWhZZkNaZXBGSVg3OXdDeEcxcEJSaEQxZW94Q0JXRlFwMzUrZE9IM2Y1OC9oUktKQjk0WUsrTktwVkhJOE9ORjh2TFQ3YmI0dWlpdTNmZkE5bWRSdVBJalkwejVabVBtcHM3ZTlSSFp6SWZUcVdzSFBuR3hodGsyYUlQNk4vdEtQeHFoVUJIYnJsOGZMTjU0M1Q2MDY1VlJOWHFnL0JYKzVGczlzTndJc1FVTkJxM0tSUk93WXU1dWJkUmNMUGQzcFhQdjFwWVMxZCszNmVpZ1JCVkgwYWpWODdQbndtcEtNT1hteXd2UDczVFNjUG56T2RmRDVrQTBURjlBYUw2Rm5BR2xNMDYzSXRjR2Q4SytoUUtKOE1ER2ZWWGlNZTV1VGVKSFVpbDhraXFNRlpERHdsZ2ZGbGg5YUszVHU5b2JZMXkzREk4RGJISnl0R0JYNTAyYUhaRTQwNnZic1l6WGp2RDdDa1VYakwyQXAybHBSZWlIdzIrNjVCSzViSE41aTFJUjRSQ1plUVVNNWtMMVhMRmhwY05vOTlXcTBkamFGTlVCUmVNeGY0dm5iNEluZFlSY0pkckhpT1NkUnZxdE1JU2JuOUxKcitkeVh3Uzc3S2ZpVUJudlg3WGF2WCt6ZWJOeURaQUQwZDBKcHY5VUN6Mko5ZDdRa09VeTArQTdZRTdvU01ZTXVuMFo1UEo3dzZkbVM2WEg5OW8zQmFQTnhMWkU0Ly9MSlg2eXNUaGdBUzhISXhoWVJudHA5Z2J0MTYvTTM1a2Rjc042UWhkRm1vM0V2bVAvU0xGNG5Qd2pjWjhTaXIxNVZUcWEvWWpzcjBlalljTXN3VGZQUjcvWlRyOUtTUVVIVy9VVjQ1bzd0Mjc3OVhwekVNK1F4cmc1SHI5Ym1nRjRSKzEydjFwWE9SeTcwa212NGxuWlM5dzNCcEJ0L1ZNWTB0cy9XVVpFWmlKNHZteWVoN3hBTWlZRm92UEVwYk0rYnV0akNrUWM5M29lNjJ2djhXZXI3SURYVGJkcXF1aFN1Vmg5ZnBkOERXRk5TNStua2o4Q0RKOHpCc2dQZGJYM3dvUnFvNUE5WGdyUUN5Vm5rNmZPd3pVcUd2MnExNi9JMFFpTW5ta0lpSEUwQXJaN0huaDhMbzZCMm9YK2c1ZlN0MGsvS0JVNmhzdzFSelY0YlBRdVBzN09rR253d3VGRjQ1NlA5UTAybGVNeFhYa3pwcEVLcGVQS3hhZmJ6OFNpZnhOM1cybnMxeXIzUnM1bm1ielVOSkhjTnRoWUdTejU0ZkRxeU11R2ExVzcxdXZJMUlVamthdnl1WGVQZXFqOVMyNklDODdRTDErSjVpT1VuUjRLVUNjbmNhVnMxQVc4YittSE5hTVY4OEExMTVEMFVndjZLc2JRdE5wTXIyczBGT09wbWc2VFlxSllYQnp6RXlVZHZ2Z2NyazNieHpDMDc1M0VKNzgrdnJaT2grWlNuM1YvaEgxK2xHMTJnUFFaQmdSOGZobDZBQ1p6TWRIenpUVGxaODYxR3IzUUpEQjlVK0p4S1daekFYRHh5ZkdKYVpFaXU0bkNsbU1PejkvaHVPdkVJWklJY2xuWlhYQ2VQeUtXQXdhL01QVDl3U2RWc0NINXZPdmRIMTdPSnlIeUIxei9URnhpVUxoeGEzV29XUGVxMkxMN0xydU9MYkFYRzgyRDZQcXcyVHlHN2tjQlBLcXZkL09RdU8yMndkQkt3MGVhMDFmZ0JoRVhIZEhqd1VQY1lueGRMdFpxVzBiMDJqNTZXNWdzZ0U4YTc3WXRyTDlkdlhFbEJDckc0WmhkaTR6dHdYejJ0cDdrZFNFeHpLbFE3aHo2WFFXOXU3OVBGNHNMcjRNUHJ4Zy9DRWtIZkluMjZjM3pjMjlZVXAvR3dabEtMU0tTQzVpQjRncndUMFljN0tNWWx1QjdIQzQ1RmNCNHV5d2pTTTNtejJuMjUwWGxsMTdaS1h5S0xGRFVGVXBtY3hGSTZKT3JYQzRnTmdRb3BuRjRuTmtxQ2k4SCt6QzNHamN3cDRaZGREcHpBbkdEVmFPKzdGeXZIWTNycFoyN25TeUtvZXFTYU54Ky9YMU53NHVUWmRCWkExSkdpVnlqUzZMWUlxaldoRVh4RzNqQngxeWNmRVVXL2xqaUZLWWR0REVwZEl6b0tTV2wwK0lSSzVXeC9QNVUydTFlOXJQaElWUXI5OGRQN25jT1puTVJ4M1hnYVd4dnY0V1ZmL1gvN0wvVDA1OC9PN2dkYkxyNjI5SG5xUC94Z09xMVlmaVorSUlRalMvMGJoZC83ZTQvVS9sOHJHTnhsR0Q5Nk11KzlKRTRzZnFlTE41eFBobmF6OVpXTS9uME5YVi8xSHRoZHdNZnBEaFcxNCtLUks1YXZDdCtzcXhpNDRVaWRSeXVRK1V5OGZMdTcyTzhCV1ZTc1Q0OVdYVkIvWUNHR1puZ2V6N3FEOTF1MG5oblhDaDhNSks1VEhxZDJnSy9MUmExOHZsemgzMW5sTHBtV1JqeTNJRXhLYWJrY2crNFFuSTVGRXlQSlg2K3RDeFVMbjhCQWhrK3lIb011aE5uS3l5TDlBTHE2c1hESDNRWWNYaVlmaW15OHRQRzEzT3hmaVBqcnFCWHpaR2xVTVhpNTFQcTNWOXFqNlU1U0EvSWdzdEd2MlhPbUhQbmk4NzNnTFZEM01PUDB0THoxVkpJQUtqdmxwOVFMbjhWT1hwZHpwL0d2WFIraFpkUUpmZHY0Ri9zYkZ4Rmw0Y2NNRFIrMGRmSmRoUTFNRlUzV2c2VGVaYVRFczVtbUxpTkFVU0JqY3lVZkI4U3FVbjFtcEhxeU9PbVdQZGJrelRIN2ZYbU5acTk5dlllSjM2RmE2ci9MazFYUEpRcURwNGZRUDVxVW1uczJ2VVBic1dmT2pFSmFhaDI4M204NittTE1QdzhyM041azNXMXQ1ai8zU0tZRFNidDFsWWVOazA0bEd6RlRxZHpLakg1WmlaT2N5WXVFU3plVk0xWmwzaDJESXpobmI3K3ZRaWx6dHZTSExPQkxIWW54Y1dUcVhYK2Z6SjlpSE16REtsMGdubDh1T2kwU3RYVnA0a3RvUDkxUUFPaUZtd3F6bmZ4ekRNZnN6V0ZTQ0dRdlZzOW9QV1I4cXBpdGRPNHZITHRuRU94TFdaMWRYenhxL0VNeVdSeURWQ1RzNFRUQUNrVWhjbkVydGlzZCs3L2pXUnVMVC9zcjJEQ2hDVjl6aHhVbjQ0dkpkZUlJQVNEbStJYldKOEs1alNMOWR3T1M0WTM5WHhCQUFBRUFCSlJFRlV4aWY4N2JSTUVHaHE1MmowUDduY2U0YVBkN3NweEhlRTFkWmZzUzkvaUhqMDJ0cTc2SFVtYzBFOC9wdFFxSWlFY2JYNklIdVZtT0ZsUTBMS3FIVDY0bWowL3lLUnZVaGFsMG9ueW5YMTdsb3FIWi9Obm0rL1NDTHhVNW5KL2s4NFhHbzBibEd2M3hPQmZpUUdOamJPWEY1K3VycU5idGVhMEkvMFF6TDV6V2owYjZGUXBkazhrcFlMS2hhZkhZdjl6cDVyd1kydHJuNkFzZ3VwMU5jU2lmK05SUDdiYnUrcTErL1M2Y3c3dmtVK2Z4b0Y1V25ORzV4V0tMd01xbWQ5L2V5VmxlTkdXZU8xMnIzcTlidUwwZUJXRTRrZnlDZXdoaWVBajhaYmhMVzY4K200TEI0TG5ZYmNrazA3YjRJTUVOWEhKSk9YMkw1WFVpWFNjcmwzSUJQVGJONFM2VHA4VThSaWR1MTZwR050UzhKRU9iYWdhdEZTdmsvL2FMZVhoYVhILzhQYm56R01QdnVmUnd4cDdLaERFcGFNOHY0RnkrWEhVR29menlxVCtZU3draGxQaFVndmw1OGNqVjZWU24zWjlWMjFtaVc5VTZtdnpzKy9YdmhCSlBKdnFEekh3VmpzRDhKNXQ0K2xBZ3RwM245TUx0OGJhallQclZZZjZTb2JvWlhrTmt6L1JzUmZyamgxYThqbmpZM1hMaTI5WUQrWWFyVS9nWXlzTXBOcXRYdVR3WmJOdmwvdUlqcFFwYmR6VVZVUkt5dFBHWk9CbHV1clhTcHRwMml0ZGgvYXEzZGo0M1ZJTGlydnRkMCtjSFgxZzVxV2hyNUZGOUJsR1FjY3I5NHYwVlEzcGs2VDVtVk5sYU1PUms1VFFHRndmUk9sV0h3bURvNi9XaWhVZGZqanRkbzlxVG15MmZQc3RaTHgrQlgwb3RtOENkVzl3Yi9EZS9GNHE5VUhWcXNQYmpTT1FzUE56MitXeEJuSlR3OE1SeExnemp1T2FNWWxwcUZZUEhIMGR3eFRaNVozK3o1MGJ3UWZxdFdIbE10UFFtaWlVSGo1d3NLcmhTZjBXMEdCZ2VOWXA5TlJMZXBnZkZ3aW5mNU1wL045dDNmMStrOHM5aGZCTUNQb2RMTDBJaHoyT0ZrcmFIQmphazIrWXZHa2Rwc0xFQU9CTS9VTXd6QU1FeHhiV1lEWW5MaEZ5MzRQY3JHdTZWZ21hSkFqRjNJdVlDWnpmcXQxSXpqYndtY2E4dCtJWUFKZytxMkhaNXZXK0QvYjFnQVBpKzNEMzFhSVJLNUdFRll3VEpEczc2SmpmMEJUT3lQNjVpb3hxdFhlYWdxcDFGZnR4OHZsSndnNXBYNXg4U1cyemJPdWtIditocjFkRm1ucCtma3prc2x2S3BtTXpGTWk4Yk85ZXk5Q1RMOVNlYlN0QUxHN2UvYzlLRDNmUC9NM1NNOGdMMVdySFkwOFVMdDlrTnJjTFpGQTV1WXo4ZmpQMWNtNDRXajBMK3ZyYjVOMzhoQjdBV0sxK2dES0xzek52UlV4OS83RmtSZi9ua05CdE51NzYvVzdDaXRsL2gyY1RPbU5jTGl5dnY1bWVaMEg1WExuaUNFNm5SeXQzUmlQL3dxNXRPRVRGaGRmTnZpOWZwdEtmYVZhUFNhZmY0VmNEL0oyYWxmbEVhdnNoQ3VWUjlEMTdXbCszQ3JsUmVibXprNm5QMGNQQWQrMFhENU8xbmNlNWJyWGpKRnlwUFFWbFh2NlNsaGV2Q0VZaHRGbS8vT0lFNG1mcHRPZkVyNFJvdFErTk1YaTRpdG9MNTVZN1BkNzlsZ0NGdXJHdFFDeDI4MlNJRVVlUmZoRU5QcC9FODMxYmpkR1M4d2k2YjYwOUh5VnhwTjFDWisybDJLRXc4VnM5Z01ROHZhUzhVVGl4NnVyLzROVU1UUUk4dkdSeVA1UTA3YmZFSWxjb3pvQTdBb3FaQm03eCtYT2c1WkdEb2ZYUmxVZjR2dW1VbCt5VnlEQlpndUY4dWoyY3NucU82dnhLUGRjVzVJblhKck5mcmhVZXFaOTFURUgraFpkUUpkbEhIQzhlbi9DU04zb08wMUdsOVZYamtZWU9VM0JoTUVOVEpSMisyQWhYZkpzOXFNNGYyUERaWFlFM0NpSHBkSHByRkFCV1Naemtlc0tlZFhxUStuRndzTExZckUvQytzaC9MTFp2SEdyZFZpMStzQmM3cDNoY0o1T01KS2ZIdEFKYVdyR0pUeURaNFVXd2ZVamtUMk90VytGVldSLzI3N3V2aUNUK1FnZFJKZnVkaE9WeW1OcnRmdDBPbWVyeDJXRWZpc29vRXhsR2E0V0UrTVNxZFEzWE45RnU5YmlnYmhPTkdVWUI2RlFTekRYWWpoVHp6QU13ekRCTVZDQTJPMm00Sy9DVzREVEVvbjhGeEhuWlBLU1VLaWlUdWgwRnVyMU93a1pqQ1lIdy9iZUpLMkFFb2xjRGE5REhVZVNGUjZJL2N4NC9EZU8rU1Z3K05YTVk1cVkyMndlQVk5Rm5SQ0wvWEY0R2htOGE3eXIxVG9jYjQ5Ry95cFhaUGxmVnpjZVg2ZlJ1SDJ6ZVZNRUZ1RzZ1R1l4TmFuWDc5YnBaSEV6WTliSmgvdlhhbDBQSVFuMVFZaEx3cnRUSjRUREpYdW11Zit1bTdaYU54RFdrOHoxMzNVVWZDZDFBdUlhcmlzbjR3bkRwV3cwamtSdU5SYjdnOXdVcVMybUJqNXFzM2tUM0JMY2RYUUdCQlFTaVIvWmNyM3FOTVJaYm81WWhyQ2E2Y3BZN0lwUi9xUlJLK2czcmlib2RhblVGNVBKSCtBaXBkTFR4YlVWZjF2QmZPU0dtczNEMFYwUjZFZS9Db2RYNVdYLzRCQW1oQlJIZDdRZmlVYXZpa1o5bU1MWWJ1K3ExZTZIZ1NQdklSOE83NG5ITDQvSGZ6dmx3RUdFRWVFYmVvM0xUaU5uWmdmRFZnaEQxalVhdDJpM0R4U1dMbGlEcGtna2ZqYmxoRUlwNG83RXZhUlMzK3gySTVBNTlmb2RFTXBFQkJNeFlrZm5xZFh1aVhzbURTWDc1KzNsaGxQMWFQU1BpRThON2pXRHU3MFRlbXk3ZmIxUXFCaUwvUVZpbVpZeUhYb0lQZTBHcHpRY1hvZTRnM0NHaEl4RTlpSjhQSTFva25kNEczb3R4OEtmM1U0d1U0NmFkNHZ2am1oc0pQS1BvUWQ0YnpRZFJ1VndFZzZpUUc2ZmZUZytJaHE5RWdKa2ExWVdORldPT3AyMjI0M1RhTVhBcjFhUFJoK0x4MytCRUhDemVSaUVRNmV6akFpMTZ3NkR5Q3RBaU1GTVFsK0tSditNN3UyWXcyMjc3WnZnSVVQV2RidHBtZFQ4TjFyRTNsaW1qUXNKMDJ3ZTJXamNzdE01QUY4ZkRZUy95aXF1Z1U1TFZncWFwdEc0UTZOeE03U3Z6QUhFa0R2Qm5hT2ZwOU9mVmdNQjR3Z1hwTUVsTitLQndMOFIzaEtML1VvdE1EQU5aRVhRNjBUaU1sZFJNS1YycmxZZkx1UzBlendLZFJBTlN1MkxsSUF0eXErWVBHQmRMK3NxMWVXODVPOVhxdytHUWtIUFVSdHZ1VmFrcFZMZnBmMm44SnhWQVNKYVpQaE1mQmE2RGE3WmJON2MvbW1Vd0lET1VrbmxVZCtyVnJzL3ZjaGtMbFNMSzhpRkZpd3FsVWZtY3U4ZkxuOUhWZ1lmbWtwOUJiZm5HdWgzL1Y2SnhDVkN2RUorcjhPRitKb1lqVndneE5xek9KVWFLQTdHQTVRWEw2dWlZUXdjVlFhS3YrNGZLblVNK29LdXJ4Tng1Q2ZEZVoxVzYxQklFaUZ6cUdnc3lFUGE0QnZDQ2xjanNRQ2hFWXY5THBuODhRaXp4MERRR1NHWFg2SnZCSm56N1dtTUxpTkJwOURYWWlhR29xN2xBM1VBbXdRZUlvUi9LRlNWU3YrdmNzMDhkOWNWcGc1RXFKUkN2MEgvUjZOM09uUFI2TDl3NTBOWDl0bHBDZzRkajFnaDNkdGJvVXZqa2VKQitiVWsxV3lZNnhFWmNybWg5S0Fqa0xkNERuWnRCVnVYUktYc3lTVTZxRzViSm5ldHg5TC8xU2s5Y0VSZENuTERzZCs5OE51aWs5bHJLbmc2ZTZqbkQvUkRTSkpzOWtOREYraWswNS9MNTI4aDcveXcyU2xBTkpXZjhoeU04Y013RXVHd29NZGlQQ1lTdjNBdG5qQnlMaWJHNk1TbVZXbEpWeWtUUmthSFBBZWROQWxvNUU1MG1veVFjdUMrOUZvWlduWWpIREpmR2RpdW0yR2wwMStrMGlMbzNGUktIVzdBSXNwbUw5QVlVQVlXWFdDWGxZYzZpOURPc2p3bERQdC9pMk4wUVZDdjM1WDZzOXFhRXlheGJSaDJIRFVyK3ZIcWNMaU00OVhxQXlETWtzbnZZYWppMGNFZ2dVeE5KcjgxN0hIb2pOdytrMjBKMDVHckk1Rk1QV0lNYmVnbU9Ec0krT09HbTgxYnc0ZUZTSVFjODBWMCsyZ29HcWtiZmFmSjhMSzZ5dEVJSTZjcGlEQzRrWWtDUVpyTHZSTzNDdE1YSFZMNEFSUW9Ha1ZZZmY1SFNoZmd5ZE1TKzNRelZKb3AwWmVmNnZwK0dvcmU0aEw2WXdGM204Ky9Vc2lpODJyMUlVSTRDeENwQ0ZWWTdmVVYrL0ZNNXRPVnltT0Y4M0hwWXRnS1hwZ1lsM0NsV0h3ZWpidjUrVGZNenU0NlVMSm9DUGh4Y2tIaXU0YkRleUZwSTVIL3lBVWpiNDFoZ2pFaWQxUVlZQWU1cmpRZkE2SEZVS2lOdENCR1RhZXowbW9kNHVyckJXUkwrR3NvZWlDSVpJUXBBUVh0ZmRUT2hKSFRKRFNpNndycHZ0MFhkaGU2R1o0NU9uWTgvanU1eG1GMTZFc1p4Q1VtRHJGQnorSUkrUjJYN0o2RmpPcjhZdkNhV2tOTTM4VXpOWUJuQjRwd3lsWTdDTzJMUjVGTWZuZllHNFh0VWEvZkRqWkd0NXVKUnY5QmdVckhRc0pCZThRNlE0d2FBdjBUMGdDbU1vUzhsUC93QXI0L1RVcklBNzZQWElaaEdBOXNGaURLNWRQUElFOVNVU3BaYzlwVTVoNzZHRDRHTkJrVTJLNWR4Nm84cTVCV1Bya2ZTMHZQc1YraFhyOTlvWENLL2NqQ3dpdmxCRnhoKytpYjV2T24ybzhnOVlVZjlXc3U5eTZIeklXRG5jKy8xbmJBOHVpZ0crYm56M0Rzd2dZVGdaYUZKOHJseHlNbkIwOWNlS0pTZVFTTUhuaXdpNHNuanpxbldEd0pONDlQVVo0cWJrQnR0eXJrQk1TVmxXTWQ3MElraTl3LzIyYzl4djdyOHZMVGhqVmZzM25rK3ZyWjlpT3dlQllYWHpaeFRiVXhRRGtWaXkrZ3VJWWRHQUc3ZGoxYUdXMndydUFRMHR5eS9sZXcvczFtUHlnWEFXb1AzcFZCSytnM3JqNkxpeThTd1FQN1E4d3d2cmVDNmNnZHRRTUlPb3pjNzJhZ3o4QWYzdGg0Zy8wSUlseHpjMjhUMDFHcFBNd2hrZnIzOEFHM1lLSUIzZTVjUG44YXZlNjcwT1BQVHduamo5anFEcWJmQ3NoZXJLMjlTOFdiN096ZWZmZmgybVY5RU9tbWJwWklYTGE2ZXE1ZFNTSHhzMnZYWSszeDdtTHhSZkF4MEpUb2FZWENnSlJ1Tm0rbE5xU1R1NkNlMW1nY1pUOEJlazB1Yi9aOTRmeHFTM1FEaTRzUWpBL0JPTExkd09Qd0ZybEpxeGR3azZyUFpESWZIUTZSZUZDT21uZGJMTDRROFNBRTJSMGZ1ckZ4cHJEQ2wyOUpwemNMRUtXMGY4YndqUGxNNW9KYzdnTkIrekNteWxHbjA4TERkRHhZdUhud1MydTFlNU95eHE5NGtVNS9WcDJBSEV3Ky93cjRiMktRaFlYWEpKUGZIandXeXVkZk5heERpMFhMUUZLcjJSazFMc2JYbmoxZkZXNDRiS3BpOGJsb1dmVnJyWFkwN2huZmhWSnI2QTk0b2ZiWndWZk81NjNYOFBQUnhQMjNXTkplcXZJUFRya3JFREkzcXJFV0YxK1NTTGdVSUU2am5mRk5LUmlkU24zZUhxWlJGYWlqTnFuMGR0bFIyT1pNVHhnTG5jNWMveTFsb1h2WnR1M0didGpQOTN4bTR0c1JtcUVQVW1NY2NSQ3FwUkRXRU1qZ2FvN0NYUFFIV1BKeXRZRDNWU3JIQ0cxczM2czAva3kxVW9MTWhDa2kxR1NKeEUvVjl5MlZUbEE3U2NrK09XNXpLSDNsNkVIelRycGdXdmlCdnFEcmRxTWtPbks1ZDJjeUgzZGNCeElBRHhQeFRRb3ZTc0ZsblF4eDdkZ0JEUmJkd3NLcGprUzRpYUF6cGxoOHZwSk9NcHhYRWw0eEVuVENVSXZwRzRyNmxzK29IZWlrWGYwNmgzODNaSzViUzdIS0NPa05NNW1Ma01lMW54eUUweFFjT2g2eEpJSW1odEhTLzdXbmxZUWZtSnJydm9NQU5EU3ZTZ3owT1FFWlhPbkNXNmo4R1RJeDlBTEdMUzBEMHovaDFpcTdQMTU2d0pDd0Z5QUdZZEhSd2xGb1RYdkp2aUZLMWM1UVdOeElmaUpBUk9zV081QUxSSjJzR3N0MmNWM25RaWRHSjJ4V0pVVHIrT2lRdDZDVEhnR08zSWxPa3hIRGpvQnFFV0poNGVSSm1lQmVYMFd1WFIzQ0tCZ1RKTFJqWk5FRmRGbDUvdUZyYSsrd2JkejVNSHhXTlBvSDE1TjNpcnBCWE5wdUlZQkM0U1gyWHgzNVY3MTQ5YzBjSFFZR014eE1OWFlxbFVjdEx6L0ZQaE5iYytRS2JWdkNhT1JxU2lSVGo3aGFmUmljTzZSYWtkRlgrNkpTcm5SeDhhWER4ZTZtK0dnb2pzWkYzWGh3bXZRdU83MXlITWJNYVFvaURHNWtvcmdXY0U4SjFYYUkza01nSW9YQ0syMDNjSHRWK3FZdlB4WCtHb3JlNGhMNlk2RlNPUTc5VTI1SzhBMVpnT2hFU2FGdytHcjdjVFc3VElib2pTc0ZqVnJCQTk3aUV2aFFpallnMHpGaU40YnRRUXJ3eHd3ZWVXZzgva3RWNmxxclBXQmw1WEdENmJZZDQ3cmlnbXRyNzdUWkVvK1FpNjQ3Y08wQUFCQUFTVVJCVkxiOEFmb0NMMVpXSGovNHhZT3lKVXdOUmQvalFrRWtJL1FKTkdqdnIzWTJkSnEwb3V0RXMzbkx0YlczMjZNTlFzWlNvSVdYbHA3bHVJSjJYRUpyaUUzMExQRGM3QVdJK2tOTTM4VXpOWUJuZzBpNWZDenUzSEVVSTJoNStjUlk3RGZxQ0tTb0d1Q0tST0tTK2ZrenZUMHVVNDlZZjRoUlF5QncxMjd2cGdtSGt2dVVTaWZDS2xOSzAwTyt6NVF0c2FzWmhtRW0wQ3RBaFBPd3V0cmJPUTZSbEdqMEgrMzJ3WWdld2xkWlhYM2ZybDJQN2h1Q0xhUno5dTM3R0pUMHhzYXBTMHN2SWsrN1Zyc0hWUjltcys5M3FQOVk3SytRdWFJM1Flcmg3amNSL1lmUzJWQTh1TGgwOHpiakYzSld3U2FJNzVCL0d3NnZwVkpmaWtSV0c0MmJVL0pwWStQTXBhWG5xcFE1bkJaSzRjZ3p2d3hySHZhOU12RTlBS3NGcGxLamNkdlJwMFJJVzlpWGdjeGtQa2taU2xtcWY1anIyK1NVSTBzVGREcFpVb0d5TlA2dm05ZU43QjErRjdTcC9HcGZEWVhxY0dEa25ndDNyTlh1UG9XdkZWbGIreDlhdDErMndrL1E5SzNXRGRERU1KNjYzVWdvMUR0UDZsM0xrWUE2bEhWc0lZVE9vZGdRL3BCN0tIeEVYZEdvRmZRYmR3dnBoWk5Db1pFZjNWK1c1Z0M1NmNhL3hYYmlmcmRCdElMcHlLVXBIZkg0WmJIWUh4SHZ3S0JBdjBJR3JsUjZLbncvUjBvMUhNNlQ2SkQzODFDSEMrR05WdXRRY2h2d3ZaTEpIMGFqZjZaMHRYd09vemEvQ0txL3FVbWN3ek94SENpVEY0MllTdjFIVEVXMy82RmE4d3YxV3dHT0RRazNHTk53RXNMaGRUblo5MTR5NE9YeWJMdmRPR1NkMnlmV1J0VlBiMnk4aHNZWDRtdVFlUEF0SWFtNjNkRHdtWTNHLzZQSGk4NEdON0xkWHBFaGNuVWJJVWhPcW9WRlBCR3lHb0VZUkxXa1hudmowdEpKbzlaK2c2Y0I4WTdRQVB6R1NHUWZCS09jcnFRdU8veEl1ME12ekRBZFlpWjNhd0RjUEpJVnlEZklzcUUybm1lamNTczR6SkQyVTFidVRudzRwc3JSU0hUSXhRTytWSzNlWDA1UHRJS1ZNSUZvdVFMRXkxUzZCUUpxZGZWRGtQRDA2YkhZcjdyZGJMVjZESTVzYkx4K2FXbk5idm1nTDFGOEpCcTlVaTRJOGM5T1o1ZWMvM29yKy9NM2JOd0kvUWR0RzQzK0hWa2Y1TVZoZDhubzFSc1FwcEZMMEEyUVNuMVJ6clErakNiVkpaUGZ3UENCdkpYZjdpeUg1d21GVHRJZUl3dlJUMUxsK0pSMCt2TmlISk9WWTZDb09KUmp1VXBxS1l4OUNFOVlKdlg2SFdUZTZCL1I2Si9rQWd3MWI1Y2RCYVZoNU1lTmlabUdrWWtzRnEyd2w4eHZUZGg3Q08xTDM4SytrMmE3dll0ZXhPTy9xZGVQYWpUdUNLVVFpZXhCVDROYWQyVEtPeDFyVW5zczlqdHFKaWpjZlA0VndyYUhVYWV6WUQ4ZjhSVEtHU0RLYjU5Zk5CSDBLd1JiNmZYNHZVdGdBOGhsWXdRdGcyRS9UaTlzeXlmY21DeE1TR1BhSnd0T3hIRERHU2xIMlRxSERKZldUUU1lR2kwTUQ1VTM4ZHp4ZjlZWGRKVElSQ01pRGV3b1FKUmJ5RmxacnVIYVdZcHZRcjVGSWxkalJDRGtqVWVSejc5eXNFcFBYOUNaMlJMYUdGOVdVOURwYXpFalExSGY4c0dURk5KamttYUpWZCtQVDhjMTBRcHJhKzlkV1RsZWZYZllObVN1Uy9WMHNSUmk5MVRMOERnd2NacjhOMUU4WEZiSEl4WldkMzBpMVRCSjRmYnRUaWNEZlFldEpNYmhyeG95Zmx5d045RDBHRVNSeU4raHB1VzZKaTdWUytnaCsvYjFUSlJFNGtjUTV2Z3N1ZGJVMFRBVmJLY3Qwd3NsQkVqTTJnUzRTdkpOa0I2TzFWOU1MVHFNSnFTSW9IMGdPdVRFL1IvQkNCLzZVdGVSOS9ZejNCVThPN25HOWh3dENTQUxseWMzalZxQ0xoNTNYYVZqbXh0WFUzNEtPV3lsblhZVlhyUmExMGR6UUJyczIzZmhybDNIdUVaeXhDUnpYVHRHdDhuRTZKQzNvSk1PSmlOM215VlNLRlJSdlIwUFI2NzRXNGFBVWlkQTFZcXhxSFZHN2JreGZZd3N1b0F1QzhXRVhrU09FdFJOSkhJVitoNzZ0aU41U2V3Z2RaTk9mNG9rSkVRckZjbkpYVnhWdWJBekI2OFRyMWJJUlhkK1JxRnY1Q254YkJPSkgxRENzbGE3dHpMdmpVYXVwaTFoTkhKTkpaS21SOXovZGplVHorMVB1SGluTTFlcFBBSzlhSDM5TFNzclQ3VFZEUVJrS0c1K1JlRUpWM1ZqNmpScFhuWjY1VGlNWjZmSlI0eE1sQ0JRMTFkVm9laUVlQTZRVG5BdzBja1IvUk5iaGF3elBsaXVZV2J0QnlYcmh4eXJNVTBWbHhoUHUzMDlDaS9NelozdGVRRTViKzNsclJXS3hlZlN2RUZhb0M2VitvcnJFL0FXbDREY283bTFFR2h5TC9XQlA5Si8yKzY2eHVPWGhzTVZPSGRTTE53SHd6WWMvaStVcVZ5cDY5YXEyblVIdWE3NHVOWFZjOG1XZ0htQXR6U2JPUE9ldzd1Qmk1bXdKVGF4RmZxNEZ1ZDU3RE1CSlNNbU1sM1FmdnE0cnNIak1qSlJOS1Bya3VqNitsblVGZVZtV2I4TGhkcHdyR0RidU9aQk5PTVNta05zb21maFdDaGFmNGdwSnJwNGhnYndURVNIQ29VWGtCVXR2OW8zNFl4QUtNRmVnZ0N4TDBhSUkxUjkyQStSbGRCcUdNTDRtaHNieWFXbEZ3eGYyWGVQMkhTSWtWTXNBejYvbGYzUWlvVERYa29ranFPblpKZ1NDdHF1WmhpR0NRb3FRQXlSeHdnNXZyejhkTFZQQ3BJNisvWjlIQkt3VkhyNjNOeGI2Q0RpVmdzTHB5RytnTmhydWZ5RVRPYWpTSGZsODY4UjBwTE9aaTl3ZkFDTVdvcktTWUUrcWdEeGI5bnNCK2cxYkYrb0dVUmcxUkVIY1A3SnhZSlp0ckR3MG5DNEtHUjhwRnE5SEdFQ21IcTRnbEluRkMrVzMrdVpwT3loL3RmVzNqVzA2b0F1OUYzd1RLQVJoeGRJRjVacGNvUCttYjlUQjIzZjVkbWpDeEIvZ2gvNUJSZEo4OEVaZzZJU1kwSE1TNWJrV3k0WkhzTGV2Wi9GdlZXckQvUmNnSWcySWo4aGs3a3dsenRYR1NqWjdQdEtwV2VvR2Q2NFNhcjZSeXNzTHI2UUVzbnA5RVhyNisrQkhWWXFIWjlPZjA0dGhLUGZDa2FOR3hBSEhQQWdhVVJ1YXZTRmhkZDF1MitRWDZFKzZsMndHK2hGclhaWHU0a1pOUHAzRzBRckdJMWMrWW1maU1kL2JnL29aeklmMjlnNEhZRVlXR1o0bzMwbENWaUtxaVN4MGJpTlkyY2NiNmlhdjhYRlUrelpnbmI3bmQzdXZQMU1SR0JwYnBEYWJoSmZkdmZ1ZTRtQnhhNm1JYUptalVlakV6YXNVWnZod28yWEJUSGVuUUdJOStGdk1keUxGSnF0b0xZcFFTRERQczBhQVNONEJhN0xIMElTN3RuenJlSGorRGhWUGVZQVNtZHdnZFVRSXJtdUZUOXlHNHVCeVhPZHpvcTZlWGdkNVBDalE4bzUyZGJ6UkZabWRmWDlVdDg5WTJucGVTTnU0SGFReVhKcVptL1h5MmJ6SnFvNUZoYk82SGJQRXJhaE45eUxUREVkWXZwM3EwK2pjZHYrcmpFWDVYTHZvWWVQUjRmb0huUU5IcGZNc2h2dnpxay94RXlWbzVIb21KOS9rOXd6NnpKWU5mSlhhOGtadUozdytkRkp1dDA0M1I3QytoUTdYbGg0bGRKQkVLR3JxeDlFbGc1QnRKV1ZKeWwxaVd5ZjZBdGIyMEozNStGT2tGcFdIMjNVdUpDTnVkdzdNUHp0TzY1bU1oL2Z0KzhpM0ZpNWZKeWpBQkUrK2R6Y20rR3g3OW56VGZuRXZqby8vL3B1TjNITk5kOFgxdWk3c1dQM0J6eTA1ZVVUa0ZtWDcvMzAydHI3TUVMTDVhZWltZFQzOHFZY2d3TmlCeEZNSVkxUFJ3L3NkS3pHQ29mM3dUcTFiUWlGVWYvQWF2V1JDd3VuakpsSE9PYXlydERVQzJGRksxeldoME5vREZZQnNrMjEydDBvRmdiUk5EOS81c1FWRU5VbVdRaHkyYjVYTDQ2UElKcWFKQ3EvMXozUkJ4eHpwaWs1UkJxY0xvaG9GR0lsMmV5NWEydm5DbHYyaUNpWG40Z3ZnaWN6cWVxVUxuNFFRaVF3ZFpIZVZzc3FaTFBuRFJlbTJGR2JraVNUQTh0NXFxd2VramZ5LzBpaFlLWDlZSWlpdzFNdURjTi91RG1NbENOaVNiaVUzTlg2SnJIWUg0VWZxTEQxcUMwbUF4SjBxZFRuNVVZZWg4Q0Vzejl6dFlZV2h2end1eFlYWDBBVm9oRG0rZndyRWNuRjZHaTN6MVdQVVYvUW1kb1NtcGhlVmxQUUdXa3hmVVBSeVBLQlBFRWNYQzZCMCszZi9LY3FsY3NLaFpObDllUnRWSEZucWFUTTlXZVFwTUtaNit0dlUvdXpLSXljcGlCTUZBK1gxZkdJa1pNb2xTd2ZFMzE3YWVuNTVHTktJKzFEd3pNS0FqTFhQVHd1OVhYSTZpaVZUcHFiTzB0dGo2aFFvdHV4d2xhcmRiNTlhWWRPWjFuMDFzcTFlbjY5ZmpkYWltbCsvclY3OTFvaTJwN1cxWmNlSGl3NnVhWGFuZWdMMXV0M2hUdUpQb2IzMnA4RGJlS0dwbHRkL1IrbEVTQnZLNVZISmhKSDQ1N0h6N1pIK3B3U0QyaHgrd1p3czlPNFFrTis0c1hDd3FtSnhQZnRZeDlYM3Jmdm8wS3Vjek1xOHpmV1hEZUkwU2ttUm9lOEJaMG1ZalJ5dDEwaWhVSTFKWTZRZlVUM2xqdXJhbmxZOGkxeFdqaGNWbzVlTHN3eHN1Z0N1aXdsdklWTkhFRWFGQW92Y3F6L0lYYWF1bEhWY3JMa2kvS3Y1NDlaMUZNblhxMVlXbm8yaGhqOE1wak44dGZuWU93akhJSCswR3plcW4rV3djalZ0eVdNUnE2cFJOTDBpQlU0YzNIeHBkUVdzTUQzN2J0UVdHYWsxY2ZvaElBTXhTbjF3aWgxWStvMGFWOTJLdVhvaW1lbnlVZU1USlJnYm1DUlh0QURSRUtLRm5tYW4zOURwZkpvUEdvS0JXd05LdFFndmNMSHdlQ0hwdzhwSVRidjFudGNZaEtoZlA3bFFrcmpNWXU5cWZVUk9wM2R5bWdSL1FKWllhdGNOOEpiS3lqZkdUNXN0VXBDNDNYREZWZEdjUWxGcVhRaWViSnk4K1dCeVlFejRycWlMYWhRQnFJWWhnZENjRXRMejRTSVdGdmJEUSswMmJ3cEZTRHVMTmUxVW5rWTJSS1FBUDMxMVQ0Qm02RmNQdDd4OVdmQmxyRGR6RHc1T0RLVzRoSkU4dHhuQWtwR2pNZW96d1FSMXpWNlhFWW1pbVowWFo1NWN5cS95K1hPeVdRK3FvN2pPYnNtQlhUaUVrSjdpSmw2RnZwRFRESFJ4VE15Z0djaE90UnNIa0htRTU3R3dzSnIxSzJpQmN2bHg5anVQRVRoY1hTQWxaV25rQ0pERXlNK1dhazhBb25DUnVQSWVQelhqb3Y3NnhGN3k0dmhUR1M5Ky9mejcxTHBCQm5DUFlMQzBVWXBvWUMwR01Nd3pCWmdWZXREbTVKQ1JSekVua0xycjJ3blpKbjI1aXBUaWNTUDRkOEtLNGIrYkx3eG43ZFdMWWJwREpObEM2UWV6YkFVbG5WN3Vvb1JDSmwyb2luK0t2MEdJNDhNU2tULzFWUURCRU96MlE4THI2aWNwVEpmOEhGNERyWGEzZnZIMVdUb0swWHdaRElmVWhQQ0VIR2c5bkxzOUdFRStRUFI2RC90MVlmeTRzVzV1YmVwRld0cXRYdlRDMWswVnUyZlV5SXpFUTJFakRzZE5Hb0YvY1lORHBoRU1Cd0hEYU9XUEZJYms5dEcwSmFXS1NvV1g3aXhjUVo4TFZoUnlpZmY5cnVka1ZhQU5UeTBuRUJYeFJSYXJldUpnRUZZaEY1RUlnTzNFWW5zalVZZEE3YlRmNHliTXExL3hIdlNTd1ljSDFNc1BoUHBmSW9QNW5Mdm1saUpFb2xjVGR0WHdZVkFEQlNXTnk2aTlyd3daZmhidVBVaU05VDJsL2JaUXBLT1ROZjVveGN3eExMWjgyeHlxWXV3K0NodmFuNys5ZmFsK3hIeVV4T0pWSW9YOGxNTkU5eTVyTFd5Z21MdDlrR3UxNVRiSXB4dXJ3Q0RSckN0WkRZODlGeDYwWll4Nlc1MUtaV2VKbnBLNGIyMmg5OVJMbjI5Zm1maGhVQ0dtQ2tVOEZWU3NmOXJMMHBMRXlMUnZjbmRSZDdJWGdFZkNwWFM2VThJdWQ5WnEzVWpkWnlDdVhBK0hVTWJEOTlvWVRrN1NIUmxNcCswdDZZOFdFMmxyT0lHRlJPeGZTK3I4ME9BMHozUXJ3Z0IwRmZyZElack9ENUQxWWZ5WFNWeWt1VTg3TnZZUHM2TGNnd09kTHorcWkxZmR2eUpSTDBNWXQ0SGJUbzM5MmFFdHBOSksrb0JoMTlPblF4N3VPd3dpTmZuODlidUtoZ2c5b1dmRmJBSkVjdUFGVTNYUkhNZzZHeGZJWHZFUGR5Sk1xQ3AxSmZpOFovYlA0NWVJS2tzTnlRNkI1RzdUTWFhK1VOenBsWGlHZkZsK2tTU2tNM21UUkRmRjVaZ2ZLUHFSWFlUcGRXNkFVTDJ3bklFM3FTelB3c1NTL2hlc0JhVXdUazNkOWJFYlJhcHNoT2RVQzc2dFlramdZRzBuSXduN29GSjJjK3V1Uzg5WXFRYzRibFFObWgxOVh6RXFzcmx4OVA5bUNKTFZCOWRMajhCZ1hMYU93YXRQM3F2dzBCRnIzcXNBQUFRQUVsRVFWUUVYVEw1QXhyYXRPMmR1akF0V29QVXhmRGlTWWhnMnRhbjdLaW9MczNFRmVhQ0xnaGJ3dlN5bW9MT1NJdnBHNHBHbGs4eWVZa2MrQU9pVXRXSnFwQzNOTmV0UlRwaGtLaDhKTDZSSCtaNlFDYUsvNWVWU3dSWjN5dWJ2VUQ1bUhLVVhleDJla0MyaE5uM1FtUEpOTks3SUpCVlRYQ2hjSXA5RHgwaEJ4RWw2ZkZkSFB0N1JxUC9nRWhYdjFKMm4rYlk0R25rODlhNkM5QmxHTnJVMitrRVUwd3RPblFrM0NwdUxKdDl2N3BoaUZsN1RoRWlrWkk5dEhDRnJLVTdFNmxmZWc3b3o2N2JTOW1JYkd5Y1NxOVU1WXE2c1Zsb1hLRWhQNFZjakNxWi9KWWpmVXNyWFFsYjRHaVlNZWE2YVl5TzhEMDZwSW5oeU4weEVza1ZxRXVhc291bThiWmpvTDVGRjl4bGFSay85RktiT09xNlZzcnVyK3JHQTJSSnFvZ1cyUnMwbTFRdFRXYzBjZ09Lb3BoS0pCMlAySTQwMGV2OWsvOFBwcVA4WGcrMjcyZ1pqS0U0alY1d1Z6ZW1UcFArWmFkVGp1NTRkcHA4SkNBVHhlUUdlZytCbGp3b0ZGNHM1SHBYQ1BlRlFsYVR5U3Ewa0FnZWpESWtSSEs1OTZnSko0M0dVZm44NmZaUXd6UnhpZkZVcXcraUZaUmxqSFFrYXEwRXgzcnE1WEt2MXR6ckNvakdyUkNQWHlxM3FvUzFmQkhKVWd3TmVOT084V1VhbHlDYXpWdlNjbE9qTmwrZUJkZFYxWWxTdWpBVys0UG9iUzFsaWR4dXQ3ZmMxdzV5WGNXbUxmRTMrKzZ1bERKMk1BdTJCQzErVVN5K1lOOCtheDhKc3BSR25leTV6d1NSakJpUFVaOEpLSzZyLzdpTVRCVDk2THFhNytTbzZvWlhRbGYyaGtrYTBRRDlJYWJ3MjhYYmZuTmRoUlRtNTg4YVRPMjFvU1pVVUtYVk9yUmZ0bnVScll5K28rTFBycnVGK1B1NFBPVEZaQ0RsVStwWDFiaWU1MGdFcE1VWWhtR0N4bG9CVWEyTTNXemVvdDArdVA4bnkxVWdDMVV1K0hjZCs0Si9DRVBMQ1RxM1dGdDdIeDFCYk10elp0MElLQjU2TWFoZ3JMdUZSb0h2UkdVOXdqYWpTeTFqVHNEdEVWNkI0UktML1I2YUR6OFVxaXNXbnd2UFN1NUFZYTAvUkVwUmZzUldsRkRFNDcrei8wb1pSNXIxNVFGRUN2cDU5MCtQOS9UNnN6bUZZMDVHUFA2Ly9STU82cjh3YUFYOXhwMDlXa3RMejRmclZTdytTMjF0SEl2OVRtTlh2cTFnbGxvaDFHemV2TlU2R0NZWDVZWlZ1R0U0c3VrN3RMQzVzT0lqSjJjeUg0bkYvcUlmMFpnSWpNc0REbmhvLzdlbTZ6bjErdDFvdXJ5UXEzYlB6YjNOdmxUcUdCQlVnc3NFYVlPSDM2OWNmUGVZZWE1YkRLWC9JVDBxbFlmQmVZWjNQVEVaQThOOVllR1ZicGZhTitvdFNPNEtQU0NRaCtjL0tWcXQ2d3U1RUxwajBua2ljUWtGclNEZlhCZTRwWlhlaFgvZ0hsU2ZtVmlIYW9wZmQwdit2NnhOZVlydGNNaHh3ZzZGOW54UkdSVEttS3BmcFVMY1VENHE5SnBhbDQ2ZWdOb1VvTms4Vk8wK0U0bjhIYzhFSVFPY25FcDkzVDdSZkVxNjNUaE1yMDdud0haN3BkdE5pTjR5T1VSMDBCSHQ3V1dEa2RodVo5VGlzdVNhRGk5RjQxQU5pY1RQNklYU0hkN0k1YzdOWmovUy8raTg4SlZxOVdIMElwSDRvZU5QdHVqcWxjdkxKL2FYNGZsYXNiaGFMajllN3BkeE43bHBndGxsaHo0bFFUTndoQlV4T2MxMXVuQTArc2QwK3JPNG4zYjdlaERkT0hudjNzOHNMSnd5NnRPRjdHWWJHNjhYTXNjNU4vY3V4eWVxMTh2TFQ2UDBwMXl3NUxmcjYyY0xLNEx6aFA3eW45SCtpUzI1Tm9hVkdjcG16OGNEc2RuNTZwd3dkS0tRajJpTTVMUVRpZXlUODJzanJkWkJTTFFJV1dxRGtTTG5ycmlIcStBeWtMc2hNelRkd2U4VjJmejIxdklKVmdKamJ1NU1OSnh0Zm1mVTliTDZ5aEZwMUpXVngyTlVRczZyMGtQSHBuSTZvRFZwZ1FkQzVsRSs0S010b1FNR2VDcjFGVmtEK2toOFh4cnYwcmc2Uk1pNjFlRzNPQlpKaFk1RFpCWXRZcE52Wm9MT0EwdExKNmwyOUVVOWFRbzZJeTJtYnloNnNIelFRRkFONk9TeVRHSHpCbFN0cE0xY0g1aDc3YnJDMWs1Mm1zYWh1cUs5L0ZySVNlcktoSjRHSFhQZGlKV1ZZd2VuVjRXcTFZZms4NWFKaTZ6OHJsM0hxaTZrOWttUW02U1BBK3JldXBEY2VZQ1dZb3JIcjZEME5uUU5lbDIzR3hQbUdJMEZKTlRseklTMjdhODNYVnQ3dDF5ZjR3U2JlYk1wbkhHSE1sdHNTZmhrOHV0cmErZEE4cVBWNUF3S2QvTytXRHlKRnVPSFQ2Unk1TFBHUlBtcDZIUVdtczFidGR1N1pGQWxJdnA1ZmRwbXk1VXg1cnFIR0ozd096cWtUOUFqTjFDbnlRaFpPV1N0OVpoTWZsK3V2dXdGRTRzdW9NdEdxTWtjRmlrVUdUU09ZODNkL1ZYZG1LSjJ0Ty83ajJVU2QrUUNxQUpFbzVIcndaYlFSMThpNlhqRTl2TWQvZ0tHZWJWNmpKQWxzQk8zTHgrRDc0YWluZEhxeHNocDhuRFpDY29Sb2FkOC9sVmlFdW4wRnpHV3AzR2F4bEFxUFhWNHBlMGhPa3RMTDdTNlF6QW1pajUwQS9Mak92WDYzZkVqdDl4OXU3b3IrcVBuU2hvZFF4SEpJRGpPZG1VRW4zUjkvVTNJQnlGY1U2M2VYMmtIYjNHSmlXTUJqNzFRc0JheG01dDd4NWdWWG9VMVduK0I2S2pjcU9xcCtIVGNlYmNicmxZZlRBcytpVUhGb1k5UkswQXM3TnIxY1BzRXVXejIzR0x4aFpYS3c5Rmhpc1ZuenMrL3NmOFg0N2dFM2N6b3paZG5DRFU5b3k5amEvMWZTWWtvajN2SHVLNDJXK0k3anM5Q3NvbkNSTGFyQld0TDZCaUtzSUxVMDhNOW84ZjZuc2dPS0JreG5xQ0Q5a0ZvWjAwVFJUKzZybVpORkl2UHhvT014MytwaHRnMEJKcEcxQmhpbTJ5WGl4Y2NyZGJoUXZwVDQ1ZHRWaldnamhBWkJpLzVMTzMySWNQdjh2ZHhlUmhpa0FQMkt0dHd1TGVoYzlDelJPd0VhbGN6RE1Ob1lva2hwRVhwbHpGcmdjQWdzTnRBa0tFTEM2L1p0Ky9DL2tUbjh4emIrUVdIV240RHNXL1hFNlRKWXExQXExU1V3NkRFelpQWkxUeUJieW9MRUc4bGIrWVEwbDdRTlBoY2VLbzAyM1dhMlJWR0RIMDF5N3J5L05WVTFhQ3kyMGFmZVozK2FaM0JHK2c5VzFXaGFOUUsrbzByWm83dyt2b2JhWTFydEQ0NkNmS2d3eXZRYkJjejBnck41aTJSdGgvdCtVUkV3Q1NUMzhhWHdwaXQxZTZGSHlGTE1CSGFTS1crNVljTDBSMVRQRWRJSjM4ZHpWR3IzUmRpWkhYMXZQbjUwM1ZTRnpSTFQ4aEJsMHhlZ2cveXR0OVRjT1J5N3kwVVhpN25RRnVoSDhTWTR2R2ZaVEtmR3VVZmhrSWwrNlJBSGZRTHVjYnZZOUlYWDg3aHFVYkhLSjlrbW5pNkszSUE3aFBCNE12ZGRqcUxKQi93VEVZSkJDVmVkaVpXbllxYU1VWXYxSzhVVjIyMWVybUhSdU4yanRXTUZKM081czQxbWN6SGE3V2poUlNoK0lGaGdOaEhPdjJaS1EwRDVIV1E0UmcxUXgwaEcvdFMvRVBmYUNDZk5CeGxkdXhlb2RaN21MSnhvUWRWU1pDL1lCVDNsL1g5M0hCY1NTVUk1V29RVlhVY1RZTkF2NUJWRks0bGdPTXZPMGdrbjM4Tm1Yd1E0Nk8yOUUwa0xsWExKaUVmdWJGeEZ1eEcvTHRyMTZOZERTMk11TFcxZDJIUVFUVXZMcjZZVmhTd2ZhL2VsSVowK3RQMkFRN05Rc1VRS21pcnZqV2lHN0R0NWRvWS82WWxjRHFkck9OcTFlcEQ2SXVNbWYvdC9QS1IvNmpONC9BUmhjSkxhN1g3SUIrUFdQWW9qWVpQb1JlMDVNUGc5MUxyaStRb2tRYTlUTTlOM2Uyb0FsWjk1ZGpwckt5dHZiZS9YL1oza0FRS2g3MTBUblNNWE83ZEdFVE41azFnOVpYTFQyNDBiaSszbTl6U2VvaDArc3VVTjZyWGtiV0NEV1B0dHlodnIreTZiMGdrc25mb3lEV3lnS1puK1pzS09nLzRtRk1uZEFTZHFSWXpNaFQxTFIvRTFvdkZGOVBxZDI1RStxZjF2Q2NseE5RRmNNUWgvM2V5MHpRT2Vnam95WTZxYnYveVE1UE5kU09HRjNkUHBiNVVyOThXbGdCeWNqS04xSlAycXBRaEdwMlFXS0k3YkxlWDVWSk1WanBxYnU2TjFKVFVEU0lSNDZkaE9oYUdsVlFzOW9lNXVYZmw4NjhRbHFDNFpTcGw5WE83a3BWcjhQVHkvVEJ4TTVtUGJXeFlHZVZtODBhSmhNc3poeENqUXE1VTZvdWoxNUhkZmliS1R5RVh1eXFWbmtYclpya3hzaHhrakxudUlVWW4vSTRPNlJQMHlBM1VhZElIMFF6YW94Wld4UHo4bWNJcitoWmRRSmR0dDVmNmIzRStWZnZtb2NUK3FtNU1zWW03QWF1RGZsWHVsZW5JTlkyaTZHQXVrU1o3eElyaElIQWswak5hNUxJdTNrTVF2aHVLaWpIcXhzaHA4bkJaTVVrNWRydnBVWWEzSGZLTXBuR2F4dEJxSGFwekQwUVFKb29ScXIvSjJzMlRSYThJYjFYZXdKem9XZEhUaUtQSmh1S3dhc05iNXVkZnYyK2ZOV1VhRDFONXhON2lFaFBIUXFId2ZBaU5XT3ozYWxHbDBYVGd0cSt0dlVPVytqMWJsdWIwYmd5S3JORTRTcFhYR0dIVUNqQkZJcEdCMEFya1p5NzN6bnI5empCSzYvVzdxdU1lNGhKQ0xxTkZQdjd3NXNzemhjMVhyUXRiQVNJY2V0R3ZWZDFwcm10dldXVTNXOEo1SkdoYlFzZFFUS2N2UWtBRGNROEVWeEcvYWpSdXM3ajRJbjlYZGdnb0dUR0dMUWphKzZ1ZGpVd1UvZWg2TlBvUFJQblFyREIzYWFNU1NNaEU0b2ZwOUdmdEsyNmFFbEFhVVhPSTJka3VGeTh3SWlTMzFmTGJvMUFoc21HcFFqNExYY2VCajQvTDJ4QnpESE5WakJqMEpBMDd3ZG5WRE1NdytsaDZYUlZmandtaXVZVS9PaU5lQnd0Wlk3SFluMGJIcWJ2azNxc0YxUndMTzR2K1VobkNFL0g0YjhwbElWZXlpWkdYamdnRkVneU54bTBUaVovUWhOZDQvQXF4UmZpNXppSTVpa0tqTHA0bStMcWVSczlXclI1djFBcjZqVHRyMUdyM29PckRkUHJpdWJtelorMG1aNkVWa0tSWlczczdHVzNKNURkaXNiOUlTNmdEOTQ4Mi9oYkJiNU1SQ2xXV2w0OHZsNStDUEQxRnh4Qnd3VStwOVBUNStUTzJvRzVZRnFkYW40SW81T3JxaFhqVStmeHBjaS9GNnBoM2RUb3JWR0JobnpVN2E2RG53N3ZEazZUNGtaeklkVWlsOGhnNTRmdHNYNmFJNlljeXcrRTlZeTdUM3d2VldYcWlIdXlvZFVyOHpWZ0hqUzkzcTZiaHl1MVVmanJpZy9hSUhVelg5dS93ci9LWGJrOHpJaFV4S2o1cnJ6OURBR3RsNVFtbDB0Tm9LVnlJR2xvV054Ni9mSDcrOU9Hc25nN1Y2dEdVOGtkbUYxSG1hUFJmVkpvR0k2US9nVGprOXIxRy9UcU1ZL1crbmxHbnJJSlpRKzA4aTlEUDhGOVZZTUt4NXpoaUVQMDVFZ2Q3dUt5TlVLSHdFbXJmWE80OW11dmZJQmE1c1BDcWZmdXNQUm9xbFljTlI5VWhlZGJYMzA2VHlCY1hYekpjb3EwQy9SQzJqcmRHbzMrV08rUmUzM2F5WlpvMm0wZlNYamF3OENuU3JXSXVLanBmTEo0a3BIcXk3K1hkYXZVMk1vWjVFdzRYWXJFL2pKcWFBbFVPQllyb0xicDZwZkk0MTZkQlUrMUZiM2ZnUGNOWG9CZVZ5dU9oT09SV09POVN6OFJ4dDNhTWxHT3AxTXRNTEN5Y1NoVjczcENKdzQvM2IvaXhoY0tMbXMyYklXSHB1Z2QzY0VTamY2SFZMQ3FWaDhnRlVSSWtDcUNMaHkwOU1aRGhVRmdlaFBJQlRRWGRiREJaMEpscU1TTkRVZFB5Z2NPNHNYRldmNDM4eStQeG4wdDd4bnIrK1R4dDI2ZTJZa3owYjJQeVJpbzcxMmthRDgzNEgxNVQxcGMxRExZTXlEcEtscUJMS09HcFZPckUwbnl5ZUdXQzBGb1ZLWnQ5UCszanFhcEFQQlIxK1dMUnFiWHoxUkpmOG03M29EY2lJZVN3UE5YZW8xTG5PaGZkcjFZZlFJdjNKQktYek0rL2VaYjc2a1Q1S1N4TitoSlNjMmp1Vk9xYjRmQmVlbGVsOG1pTS9XNTM1QWFMWTh4MXJ6RzZyZGlGWTVqOVkrU09CN2x6UkRPRTdQTkxTeTkwekJJeHdzaWlDK0t5dHVpUXM4TU1XMVA3cTdxWkFzZVhIUWlHbTQ3Y0lLSW81aEpwc2tlc2NBc0M5eXhQcFdobWlvbnFSdDlwTXJ5c2xuS0VRb2M3S1NaQkpxaG5wMms4Y04va2JyRGo2UTN6SUV3VUk5UVh6T2RmSTlkZnZDeVYra3J2RnJ1cTlHMGJ3SE9nUnJmdm51azVMakVHdklXTXpGanN0N1hhdlczSHJRS0lUaWRicTkxWHlLVkp5ZURFYVNzcng1Vkt6NVlyUlIyQXowMG1MNEUvV3l3K1E5NkpsM1VUcG04RkNDVll5NUJVZUR0Nkw2bFVDRnVaUXdBQUVBQkpSRUZVRDNHSlZ1dHdxZ2dadGZueUxERk9kL1FPN1QrdXExTjV6WUl0b1VKVmVCU3JxK2ZqaVJXTHoxbGFlb0h3ajRDU0VXUFljVUY3SXhQRktMcU9RRit0OXMxUzZSa2toR24zd25MNWlRaTlwdE9mRTU0SUlvMm9QOFFHMlI0WEx5QTZuWjRuTXJFODFEWW9uRTRsRGFVUnl6VDQ5cmk4RHJIOXFyMFlobUU4WXhVZ0t0czltZnlHYTliSzlZMzUvT3VWUTE0cW5SaVAvM0pybHYyTHhmNnYwYmdWakxOVTZzdmp6N1F0YjV1TkRFNGVHTjR4eCtRR2V1RzhWdXRRV2lsbmZ2NU5hMnZ2cXRmdnFDSUxzNWVpMDBKdXRHVFJidStLeGNhZlNXc1h1eXlGUXM5V3FWNmpWdEJ2M0ZtREZvNFdsai96aFJrTXY4NUNLOERCSUlteHZQd1VlL0NsMFRoU2JDSGhjRDZYZTJjdTkrNVc2M3IxK2wycTFZZkpkVXl2bTgrZnZtdlhJN2FzbGhvV2RqTDV0WEw1eVVMTzVoay9TVTdONWttbnZ6U2IxWWNFbW5WeDhXVXd6WnZOVzFTclIxTlFETzBlaS8xR1JhT21RemYrUHB4S3NWK0VsaEVhZGxHNjNWNjJZRlF1Y094bFo0NUpkMHNQYzhDM1Z4dkVLSlEvajNEcWpoUExmcUcyQTBna0xrTm9WZWN0MGVoZkZ4WmUzZTJlam1ncGdzSWsvUkR3TFpWT21wOS92VENIWkVVMCtzK2xwYWZiL1hPL2xwL3NkdWNSQ0xMOTJzc2ZESy82TXh0RWFFMFJQQkRFMDRmL2JOc2lyVHIwcDdLY0k1SHhjRmxGc2Zpc1NnWDZRbVF5SDgxa1BpYTBpVWF2cEV5RHZYU0R3T2hiWHorYlZnaUdJSFhkdDBYbG5OeStGeTM1bGxHenhoSERrb3R2V1hIZWRQcnpzTkxwVExYSHEwb2JVT0FZVVg1N29GOVJLTHhNV0VzYXZDbWRIcmsyTmlLR2lKcEI1c3Y3ZDlueFNxVkdYTVdJK2w3OXBRdmVwSTRvRThWMXhvdVJjbXcyYnlwdkZSbVg3d21mZ0I2bjFHT3plWVRZY3RMcHorYnpyMFQwRTIzYWJONkVldldvMnRsT1o5RnhoSkpEYWdFZUQ0SnVSK0JCaXhrWmlqcVdUNk54TzRvdnkzRzB1ZmN1UXMvOUVMUDY2Tjdkb3IwY0piL0RSc3ZPZFpyR1EwM21acVROaTUyRDJnN1Bua1pTbzB4dW03QnY3TnQ3V2d6cEU2aWtUT1pDK3RXMlJxWnhlWUV2RnAyeVFOUlVRM21RYWl5Y1N5N1pjbWxPbll2RVp6NS9tcEE1NW9XRjA4VFc3bUp2eWtUNUtldnZyVVFhZ21rTEM2K3pTNG5CYmVaY0dHT3VlNHJSYlJ2N3g4Z2RRN3Q5TUcxQmp1RzV0UFNjS1N0c2pDeTZJQzZyNXZVTjcvSTIzT0gzVjNVVEVCNUdycjlSbEdra2tnN0RRV0FsNUljWHA5bDJkTlNOdnROa2RGbE41WWdUOU4xSnowN1RlQktKSDdrdW9EN2lIdnczVVl4UTExY1BvZTk3aG1oQjkyM2NpVWp1cVgyQWZZeDRqVXVNUThWcUtwWEhxcDJVRlpBQUd4dFd4R2xsNWZFcXpveW96dno4NmZLOUtWbGZDN0VRYnJWdUlrWStMbnVjMEVVVCtkSUthclhPVG1jdUVpa0pMM0dKQ0JYQ3p2am15L3JzTE5kVlJRdUh6VDlhdFdUd28yZklsa0RTRnJsZFdhQjJjK0VyQVNVanhyQ3pndlllVEJTVDZIb25tYndFUDVERE9LRmFmU2oreGNrUUhRaHdlZDRreXZjMG92NFEyNDlSbThKUFRHcW9FSmtjSmdNV0RnMGwzemNyYzhCNU1ZWmhtR21nQXNUZS9FdW9UelViYnp6RjRvbTBmOGZpNHNtbDB0T1FjZHpZT0hObDVVbCtUVFhyZGtmdVV4T0ovRjJJVzBrblowSklUcG5DQ0JmYUt3STduV1V4QllnMjlwYzhQQkp4QjVqdmNyTENubHJ0SHZUMGNHUzZqZGg2aWRzeER5RWdWQmdkSnZqNHFXTjBwclNiYy9aaWlFNW5wWC9DMWYwWEJxMmczN2l6Qm0xNGdmN3Y0K0x0U0NjanIweXYwY2MwNXFTT1pNdGFZVXlucFdtTENHdzVwbjZxZGZpblI4MjZnLzBLRjJYc3VaMW85Qi80eVdRK3ZyNytwbnI5N2pKT3RGdWxCajJBVUU2NS9BUjZEYWZSN2tXNGtreittSXFLN090bnVOOXIvNFJFNG4vSG4xbXIzYlBkN2hWa3dDemVscm0vRUFpNFQvdzBteGV0cnA0dkxPZnFWajRWSVBvRG5KTkdZMm00QUFqT0pMM1lzcEFsN29HbThRbExjVnlodG1vZGcxOTZnWlNVSXlvMHZMMm0zQzJGcG5FZklreVEyL0ZRWUxTbFZndWJtdTFSamlxTjFHcGQxNmd1QnptbldPeDMrTWxtUDdoMzc2ZWhNY2Z2YlRUcWUzVzdTZXF1cWRURmp0bUI5dW4xMDRBd3NYMHBEcldyb0ZMbDNxalg3MHlCRldIZC9EY203cTJnZmRtaktOQWdLLzVkVUI4a3N6NzJGRWlZY2t1Ty9RbzFMMHRBYnRObVcrbjB4Ym5jKzRRWmtYNk9ZVUMzeWltd1ovUTNkSDd0cUF5UWJSa3RaNHlHb2piMlBkR2kwVCtSb1E1RmtNMXVyclpZcjkreGY3WGVVNEpTSHM1OG9FdlFRUWhNaElrbjd0MmcxcytUbG9NekNWZXBQRnowZGdmKzhmQjdrUVhCcDVDUWdlNndMVThZcnRYdUxub3pmMXdYdDlOVmp1b09FWTRjUHhYVnlQVENlSXpITDhYNXc5bjZLZEFWZE1uazkvTDVWd3E1UWlwU0NFS3ViekhLK0ZFS3JrKzRueHhTNXJwSFFhZFBwZklvOWFBeW1RdTJwcDdHc3hZek1oVEhXejVLVUtmVFg3Uy9TKzNTcUZEQnpXYnpjSHNadE92aUtFRTdUUmhmMWVveC9jLzZsNCtWdStOUk5oalN0L1lpZUxWTCtKU1ltdXZlVUkxclYzelJhTzgxNU16NFRMOTlCZHo1K1RQVVlHazBidHMvNFVwaHlCUmpZUlBWQ3BISVA4VG0zZjROSWtnYUtnTmQwUllXR0JnMStCYnI2MmVMZmhMVXh4WHlBdXEwRStWbnEzVW92Y2hrTGhvY2pCR3FmZmVHaHhpZElYN2ExVUdQWEE5T2s0L2dTNjJ0dlJkV0lpeVpwYVhuVGJNM0xtRmswUVZ4MlZDbzFFLzdPUVhDY0hCbXg2b2JaVHB1c2Vmb2NlUnFSMUVtak55QUpKTEN2bHhaL3hNUDduK0ZxZFpZOHQxUTFGUTMrazZUNFdYTmxLTU9ucDBtSHduQ1JERzhnYityMTduY2U5V0l3NlB1MXlKTWRRTlRHSW9SQ24zWUk5N2U0aExqeHdLNm5DT29UdEJVUm5VRHcyc1NDMXNkWkwxK083cUJlUHczam5PUTNkaXpaM083Z01YRkZ3LzcycjYwUXF0MUEzcWhUQWpUdUVTNWZDeDk2eUEyWDk2VzZQck9jbDNSSEdSTERDbVhYbm1ybmFCdENWTkRNWm44dmx4dkx5T05oQzFhYThCek1vSkdydXRpT3I2NGVPUHhVVHQ3TmxHTW91dDRJS25VMS9FREVWRXN2bERJMVJDbkxsTXpUU1BHUjExSWY0aDVKUkFEMkhkem5jd2t1U3BOYUl6cG9rSmtHQ1lPRjR4OGxxa1REUlBzNmkwWVl1TnZ3RFBiRW9CbEdJWnhZTTFxVXY1R3BmSzRFYWNOckptR2pESWxYek9aQytWMkExWjV2cHhsZFpwak9TVVA5SmZXRzdsQ1lUeCtPWDFjdFhxL1VkZm9YK29xcXJGQVpzNys1OUZ2MUNXUnNESnpwZEl6NU9zZkNzdHkvUzdNMWxMcHllb09QYU9XVEZBVkFGc0dMRnBLZDVYTGoxZGhFUVg4Y0xVS3RBbzYwTnIrQ3ZXb1k3R2V0Mm5VQ3ZxTk81dkl5YWEraFh1YXpac1hpOCtpSDRxSWVXWUxXbUhpeUtWcG12MEFuQ0txZ2p2VG8vSkFqY1l0OWQ5bEM3aE10UWQwdDVzdWxVNmduMnIxNFJQUDkxQ21QUEV0dGRyUnFzOVFPR2tiUVV5S2JsaUtqaG1DYW5EaGZ6cnlLOVhxUStqRjlGa2xUUkJ4VTMxbWZHbWEwQmhpUnREVlZIRVlZZC9BUlVIUnhscnRmaU9jWVhlWlhDeStvTjhWbnlkOFlydVVJNTRWNWZPazVlUHFFRTVRVEtGUVpYeHQrcVRHN1pWek9RSlZhQkVWWXBzU212cHMrN1YzMmVGZGdJMUEya2IxOEtIOHZYZFUxQ09WK3FickNjbGtyN0NqVm52QTRQM2NnVjY0UmlnbVhsWklCNzVZZktiOGlHL016YjFsbE1hMzIwdDIxQkFiekJsRTh2blgxT3QzRVhJS2JDcjFEVEVDNUNmaThTdmtiVHpVcmtrUkNhSUZ1ZTJMNmFyckpKT1hxTHBWUkI4b2w0WjhsVHE0dFBTYzVlV25PSDdVVWh4TFM4L0dyOG5rOStWdjBXN1haWDFzZEVXNkFmbTluTldIcmRiaEpHb1ExSFpOaEFoYjBhZDlBVC9rc2ZxcituMVJqRVZmbjRaQ0V6YjRNRFc5SnU0WVlvcStvRVBxTjUyMm5sdXBkQkwxSC9yVmxXcjFvWFpKUlZ0bUM2dlA5RVRUOUlKdUlwWEtZNVZBVUJzMmJRSGV0SmdkZlVQUjFmSlJrVVRIOUc1NFcwTnZ2NG9DckpYS1krdzM1cm9lUU5CT1U2ZXpTNDBGWDlaTTBrU0pSNGVDOCtzZVRNMzFTVVJjUDBKNU4vWlVSelQ2RjNwUktqMTlPR2FpZGtRVnZWM3pySTZFVVlsRVMvOXdtSlFhTXFDSnhDK0VPU1pqd2IzemxNdFBvUmYyV21lbGJtcTF1OXBQcG1JSU1XaFhROGF1cmIxSFh1RnZpNHRUYldJN1RFQ2RkcUw4Vk51UHFsUjYvNDBQOExDeWtjSTBSbWVLdjNaMTBDUFh5R255RjFoWjYrdnZJYzk2YWVsNWsyWTVhbUZrMFFWMFdlcGdpQTZweGJTRUxJOGV6cTd0VUhXak5xUldDN050RGRPUDNQRlJGSTJSRzRoRXNsT3IzV3Z3MXdmSkcxdWJjZ1ZFZncxRmZYV2o3elI1dTZ5T2N0Um5TcWRwZWdJeVVmUUpoL2VwZXJoa2N0TnRWOXBuakRldGc1Nmg2Skw1b2hsM3dsS0lteFBZdk1VbHhvOEZpUHBoNXgwL0pLdGhlZEt2cnFXTjZqdVd5eWVJWG50OWYranZvYkcvQ21IY0NpNUNyOWs4b2w2bnF0bmZxZ0NDU1Z6Q0NrRlFzREdnelplM0s3cStnMXhYWVQzOEg4aTd2WS85RWFueTFzRzdDdGFXTURVVS9mVkJOUEdjaktCcGJGSXJ1YlRwOUgxbVBMNXE1MmxObEluUmRUdnhlRTlKK1J0OUdqL0VhSlYwYVU2UFdtTEFZSWg1SUNBRDJIZHpQWkg0dVpEbG1CVE1IQ1NpbWt6VnUxZXJEN2FmSWVkNFdENkxhMFcrUGpvZWNkQkR6Tjk4bjJLN0FyQU13ekIyTEs4SmZtTW04MUVobDkwdUZwK2o3RTVrR2V2MW85Ylh6ODduWDZIZUFPMjRzZkU2SWFmV1piUHZGOUs5bVorM2pqUWFSMUVGM2pTUTl3WGRBN0Z1MzdSSWtVcDlpelpCTGhSZUprMjBjUDl1czFCRnE2c2ZybFlmU0VkQ29acWNVV0h0anlBVE9TRjVrLyt2V0h5Qm1JNVk3TmVpdjJOQ0l2RXpZUmtmLzZ1T3hHSlhpS25vVUs0Q3FZdG04NVpickNIbTV0NUJMMVpYejBYOHNYODRVcXZkWSsvZXo2Z3RXdUJGMDAyaXcrQ1Iwa0dFTll2RjV3cXArOVhxS1VhdG9OKzRwblM3U1NTUzZVZHBkRHhlT3VMSEpJYVpyb3pjZ2xhWU9ITEpROEREbCt1bFd6dTlkanB6Nit0djlOSEFVbldXNWZMVGNLdHloYzRGdXlOZExENi9VRGhGVHFzaUp5RU1TN2RjUGs3SThvVnBsaitjanZEVUoyd3pDQzdzMi9kUnRDd3RCU3FzeHMyVnkwOGtrVGc4cDFhZU1FODdhd3o5SEJuMDkwMm5QMDB2TmpiTzZQdDc0VkxwcVpTWXlXUXU5TDJneEJjbURqRWpxTENzMWJwaHBmSkllU0NFSzFObGxZTnM5ang2c2I3K0Z2dUc2WGgwNWZLVDkrejVvbit6OUNheVhjcXhNemYzTmlIRjEvcjZtOVZtVE9nMkNKc1dDaS9kdS9lVDlyUFgxdDRINzA3NXJzanExZXQzb3dSR0xQWWIxdzhZMzdpaFVKUHloZFhxTVdxQXRGcUhva1dFVHlEY0k4dnZRdkkyanBLMUVaYVA3VXVTZFR5bTJyblRXYW5WN2lsdjcwZWpkMHN2cFZKZkZYSWxUaG1rc0w0WGVudWg4Qkk2SVpYNnRvZkxJdG1HNXBiWEw2ZlRYNUYzT0NDK2xBQ0VXdG0zN3lKNCsvaFFLa2JzZEpZUlRpTDdXWDdLVDlSbEM0VVhvTjJGSlNvdlEyekZUU1J1UnJVb3F3VE5WU2k4a0dvQklXenorVmZUWCswck5DQWhST01GdVJDWWNPZzJTS1RoQnZyWktTODdSK0JtOXV6NVdySDRiS2hSYUhENTZWazhsclcxdDlNSjl2U0RRZ1duUnUwT0xHeEZuL2hlTkNzYU1kbU5qZGYyTHpzcW8yQ2dMTHJkUU8wMEg5V1dnYUJ6dE9PWVdjaXdpUEw1azZuUFFEcVJaNGVlbkVwOVhaMWlKT2gyRUVaYVROOVExTGQ4VkNVM1BxNC9CVGtDTWVzSW9VcGFtWXkxQ2dWRUIwd1VDRUFZUzVYS28yQ2lESjBab05PMHZTQU5TUVUwY0ZMNjdSV0dNSWNMSTJhUGpZM1ROemJlV0svZldjN2NDMFBndzcxYVd6dUhzbTRJc0NCSG9rNE9oemR5dVhjTHVVUU5ScGxhaDE2dXRmT2t0YlYzcWpORG9UcHBNWXpIWXZGRUtFcjhGSXNuVVZJREVlWUFBQkFBU1VSQlZGVjBLdlVsNFduUFl2MnhVS2s4WW5YMWcraElFQmRTYmtTcFQ1S2lSTWV6bHhmRTQ3K2t3dGxDNFdRMXN3Vko1WEw1ZUhueW4xU1dDTmRYWHpPYlBSK1pKNGZLMitJNklVMG15czlvdExjZUpMeHNaYmZnV1NudDdBMmpHSjBuSnFzYnlCTmI2L1QwQWpvUEhiSG5EbmZXeU5VSFp2ejYranVvV2JQWkQrSXBPVHF0WXpGeWlBSmwxdEk2emRBUnRpT2J1MC9vVzNRQlhaYVdxSWZPd2wrcEJoR2lJSjgvZmZnaDdGQjFvMVEyaEtjVWJsc1Vyek9Ncmh0SFVTYU8zSUFra2gwNEwvMXRLeEZGZVFycEp0bWp2T2ltSURCU04vcE9rOUZsOVpXakVVWk9VeEJoY0ZNVFJhNXZaSDFjczNrNEhZR0E2aC94dVBtcC9CU0xRdUVWVWdDRzBjTkxwYWNKYWFJNENyajE1YWNtOEl6MjdQa1NES2UrcDIrdFpRakRuZ0lGOXRzVG51SVN2dE5vM0JiK3U3emJXTGViUmtlRnBkb2Z0aC96dkNTU2ZpdkF3aXdVWG95ZVFCdXd5R1cwSG9CN29MOW1zeDhWWGdqVFZnQkNkdnZ0aWkwSHdZNXlYWVhhaEgxOS9kMW9ZaGdHMEhRYkcyOFlQbk5tYllsdWQ2cWxLSXp3bkl5QVFoRTltKzFWYUdJTUlpbk5lczl3bG9MMkV6QTFVZlNqNjdYYXZmSDE0WGVvS2RQNCtqQlI2TFhuUGVVOHBCSFZldVRGNHJQa3BEVm5Cek1hWWg3WUxnUFlGTmlOdExJc2JHTVpFcWYrSEVLb1pIWDEvV3BaNVhCNE5aMitXTWhDNTNMNVdEcXQzVDVZV1Q3cDlPZkVWRXoyaUlNZVl2N20reGlHWVdhS1h0RjlObnRCbzNFYkdJdXdQdkZEeWxJNXFDcGxTSnZFa1htNnNIQ2FjbFJ3UXFOeGV4aUxwZEtKaUR6RzQ3MlFOTUx4Nit0dmRYeWszUkxOWkM3SzVkNXAvMnNtODJsWklDVlVtbFpZSzdxL0k1TlJlYS9PL1B3YjRmYkxXUENyOEFQSEJtNE16VVIza0U1L3RscDlLT3hzZUR2UXUrRncyWmQ1UzJxZUg2d05NbUxpOFYrcnY4Ymp2N1dmdkxyNkFkb1pUUUViNitxck4xZXczN1hyR1BzK05jSjZDT2ZuODZmaEcwSGpxb1BMeTArMWI1NGJFTFNjdFRUdnJydTZlcjQwcC9ZTUx3K08zb0dHUStPaU02eXR2WmNzQnRVRU1ybXl1U3lRU1NzWU5LNFJpQTJ0cmYyUDQ2RHFuTW5rOXhjV3Bvcmc5M2N5YlFqL3NFOUdENFdtWFZneDZGYVlPSExUNmMvSVhWbmhiYjRjUDdnbTlTdTRvSTVsMklSOG5udjJmTjF4RU5lbmp4QnlRNGVWbFNjNVRnaUZhbk56NzBKSUYxOU5lUy9KNUhjV0ZsN2R2MnltV2owR0xqZGRBWGtVTmNWS2x0NEd1MW5KME4yVyszZVZHMyttT3NHZXhYUmxjTDN1YWIrT1NTdEVaSjdqRlB4QVlvUkNCWldNZ1RaSkpsMm1JRVBDd0pOMC9kemR1Kyt0ZGdZSmdramtQNW5NQlJReDNMdjM4N2hEcGV4dzgxU3FPNE5vS0VjRDB1a3ZRVjhMR2YxQk9GTElXSWJyWUF5SDk4M1BudzZWQk0yMXRuWXUrZGoyc2VOR1VHRytpY3JSbStpWVNDTHhFNGpRU3VWUkNBenQzZnM1cUx4d09LODBvMk0zRmdSSEVEdkFENTVWTkhxVjJncEhXTGJXaDRYNzk1clF1SEIzTnpiT0ZGYjg1Vng4WENqVUlnR08xSVg5K3A3QnJVSnlGZ3JQUjBaQmlYcWFaQkkwcHRwWnJlTnJqK3dQQTBzR2NRRU1iZWlDUXVGRmRwVUhFMlc0eEZEbnNyQ1Q2WVcwZk40MWZNTFMwdlBqOFovM3Y5Y2grRnpYNitSeTU5ak51VWJqRHYwWHQxdGJjNW1ydlh2M3ZkVGVYc25rdHhHZW83a0UrTEdMcjBUaXg0NE5qdWZuWHdkVmpydmQyRGpMZmh3Qkdsckoyd080V3JuOEpGb0gzVUU4ZnVtd09FSkdTaTdEWXkwVE1zYUlSWXZNemIwWnRnRzYzNzU5RjRxQmIvSGFVWEZZZmVVbyt2czFoMElUN0RSVDA0dm15MDV2cHRyUjl3TGtuc3QvNjIvUi9wWHhLMEhDQ01TUHZjL2tjdSt4YTFzalFiZURNTkppSm9haXJ1VWppN212eEY5eFdmeW9KcU9Eamh0QWtoSURYQVlmNzBuRlh2TE1meUpYTk5UTmduS2FpRUdUMG9kOXN2UTk0bXoySExTVWtDb1B6eGFONHRlaVRRRVFzYmVVSGJSdk52c2h4MEdrbmVyMU96UWFSNkdKOSt6NXNpeE5hTktRZE16ZHoyYlBoOUtSR1k0bjQwY2RoNm1tVm9JeHhXZ3N3Q0RNNTI4MmZCenZtcDkvL1dCNVFXZHU3c3oxOVhkS3FmVkJ5QW9FN20wRDU2MnEvelNiaDZuamRvTkhiSDdyRDJXekh4QmU4YjNUS3NiTHozQjRIUzBMcFl5SHRtL2ZKM0dhbkFLWHdiTUtoemVtbVd1bkdhUHp6RVIxQXlPVDF2cXlnN2FtRnc0amJVZU5YRjI2M1p5eXRCRWlFK0lFeHdsUXhNdkx6MUMvVnF2M29iM2VGTkxuN1JtNmMzTnZnWjZsMTBZV1hSQ1hqY2N2dzYrVTY4S1AydGZWalIybWJnZ2tMR0hWWStSQzVPN2QreWwxL01BRDc2UmVlNGhYNjJBeWNvMmpLR0xTeUExT0lpbHd0ZFhWOCt6REhKK2lWdWFiQlV6VmphYlRaSGhaWGVWb2hKSFRGRkFZM01oRWdmbm5PRklzUGt1OXRvOUhmWkxKU3pDT2tJR3ExKzhJYTBvZGx5YktHeDBuNjh0UGZmRHdpOFZudWs3ZmhhR2xkdVloVE9NU3Z0UHBMTHI2NzZuVUYxVTVsQWYwV3dHUHl4NlJzNU5PWDV4SVhDTE1rY1cxdDZiWEZDaHo1WUFESGdCL1ZuakMzK2k2UGp2TGRjVmZFVFpFYkJsM2F4L3NickhsWUcwSlUrUU9aaGF3OUVLaExRcDBlRTVHd0o0cGw0L0Z5ZFhxZzFXWjJzcktFMmpHdUtlZy9mWmdhcUxvUjlkbGJlSmRhQzA5MkxUZGJrUmREY3JPVWZHdkg1ZndrRVpNSkg1RUxWc3VQMTR0YW9pRGk0c3Y2NzgyR0dJZTBER0FQZUM3dVI0S2xlYm56eVNiUk5wVXJ4djFCREtaajlScTk1Q2E5NFdsMGpQc1hRWFJkVnB5Y2hvbWVzUkJEekYvODMwTXd6QXpSYTlLQUtKemVmbVpNcEJxNWE0Z3gyMTYrbnMwWVV2SWJibElROE96ZGF3TERmK1pBaXR5cHFEYVFtakM3dlZ1aThuL2EyWGxPSmdqWXhKZHNvRGdjY2kwMGEvUTAyU3d5alZwUG1ldkJZUmxBNFVSai85S2ZsWUdiaDdPV1Z3OGVjcmxlYVBSZjlHRGdzZEY4WGZrN01scmdzbm9jQ0ExdEpHelZpT1YrZ1lDQWZINDVhTWZndEwwRGx1bkt6eHQ3V29ubXoxdmFlblpWUDZQbXljekNOZVVjM0ZxNmpUa0tmRnM2VFM1MUJ4dFJZU21lYUtxUUNXTVdrRy9jUTBaYnh0Tk5WVVhTVUdhZnpQbGJwVU83UE5CN2FzbGVTUG9WcGc0Y2lFZmxwYWVwWFlpbzM2Rjh4Y1dUdTJmWXUvTUU2YWdqZHJWRnpHVWhZVlRhQUdHUHB0Tmp6R2x2aStNV2hVdGhSM3BiVGtveDAzWlhrL3VVWkZJejBTV2M5M0dmTjh3SXVOQ1BueFZnekxxVEZVZkkvZERtYjQzNnJZQzNJWms4anQ5OVhHQWNoalFoWmFXbnFQV00rK2ZQUEhoZE1mK3FzT0V0K1J5NTZMUmxiNmpnM0JLbDVlZjVPYTZkRFF2YTA1M3hHc1hkSlNqUk90dW9hY1dGMS9jMzI3RHloeEFPQ3d1dnNUMXZhblUxL0hSU25xb3NZUGhqSERxOEJOcnRhNXZlKzlYaEg5b0tFZk5UdHY3Z3YwQ0kvVjlSL1k5eEtieGZNak9nVHhVUlRsNExJNWtPWUozdE5vQm5wS0tqK0EwcENjaFdvVWJFeHMzbWZ6dTNOeFoxRjc0ZEl3eW5BbGZQWjMraEhCSGRZTzIyM0ZuMzFoYWVqN3VHVGRNb2g1ZmMyWGxTWDdNZWREcDRXYmFtVFpLeHFOUW0vNjRJbmNtZWtZaThWUFJWM24wcm9XRlY5S0tMeDR1cXkrN29JTmNyNE1PZ0hGSHk2TFlNTEJBWUcwdUxwNmlVZ1ZLZktFVDRyamo1RmpzZDVEQTl1VUhwQzEzZ2R3OGVtTEFTTFhYNXBrSXNxQjdEeHVaT0NJSHlFdUh2d3VzSXhJWE5HbDFERGhoZnY0TSt4REFhN1RYNkYyMDlKV2prTlB4U2VOZk5lbE1NOU1ySExZR08rSlFQazRyMXhCMG02aFZKNVd6NWdxZUpNbHcxV2RnZlRrV1dCSW1nbTVLcHA5WEk5RVZkUHBhVE45UTFMZDhRcUhtNHVMTGxVeWdweHFQWDdhMDlEeFNGdlpiRFlVYU1NNXhWelJ5Y1gxOGl0VFhWZm5yd1BTTXdKd21DM3Q4WDIxMk5nMzZIakh1ZkhuNUJIbzRlTFo0STVwZ2VmbnA5TmVwTzQrWnVUNmVXT3czcnVNVW9mRGw1YWNOaXlaMGhxV2xGODNOdlVuMUhCcVMrSUxwOUdmc1o4SnhXMXA2TG1reEJhSU4wTmVqRitwMmtkc09OTWRDSlBKUCsrYlJ0cmQvYWRldXg2aU5rR3czZGltK3J3b0w5Szk1cGJRbDdLdFQ2S3NlTC9qZWFRa2QrWWtXVjFsRG5JWW5nS2NoVzlDcVhBbUZocis0bHJtdUdhTWJlOEZ4MFNHVG9KTXJBeU5vQzBldS8zVUFvMjI4enFRM2RzYjhPdmFOQmhaZE1KZnR5ak43bFRmOVZSN1BWNnNaMmRsWjZrWXhOL2UyWE83ZHNkanZSd2RJTmVQVk5JNTZuWVE2Y3lqVXN2OXFSMy9rR2tWUkZCTkhyclpFTXZhSWhiUUpZUlNKL2pBWGxncjRLVlNBS3Vid2hha2xocG02MFhhYXpDNnJyUnpOTUhHYUFnbURlekpSWEJnOU1EdERMeHkwOFFRY3hUcDRzTkE0dy9FV2ZmblpaNEtoR0E3bnlTcHdnQWdBV3RhMnVud1AwN2lFQTVPeDBIRzk1MGprR29lc2dLYWVtM3Y3L1B3YlJ5eC9xQm1QMVcwRlNMbmhOK01lRUxxZm0zdXptSXlyZmF2NVdEeFh5ZmdiWGFlN2JRLytxaVF3SFcrcHMzZVE2eXFrNVFERFdHVmgwTlVYRjE5QXNVVEhHQS9VbGpBMUZDbU1JMno3b2Z1RXY4bUlIbkFxb1UzZ2ZhalY5UnlmWlJxMDk4ejBZUndqcDBrL3VnNy9OQjYvbEY3TDZOeDE1ZFhLTUlESmFMRmpFcGN3VGlOaUJFRU00bXNPTnRiQUNTWkR6SXVMcDJFQUd4T0V1WTZJNjY1ZGo3STlpc1A2MS8rR1BjTWVpVndOOVVxblNUWGFhMXlwUmgzUjlZQThZcU1oMW5hN2dZRTdjYUNkNy9PT1R3RllobUVZWTBJSEh1aVk1MnJ0RXllckIwTGg4RjQ0S2hPemV0dEtwTjIrVHF0MU1QSXhrWWgxdDZOYzZFNW52dFU2UEJ6ZWtMTkQvSndRdngvVDdXWnA4eTg4V0poTmlHYTZudGJwTEVocnFRTnJiL3pjTXNOVzBHM2M3UUxoeUh6K0ZkM3VmS054U3pJNzRINlBxYllwRkU2dVZCNnVma1ZzTjVkNzcrakxoNis1NXB2OXRQMFg1dWJPRWo2eDNhMFFhYlVRZ1QwSVY1UHBxMjFvMDA1bnJ0MCtFSUlPd2szMjdXM3JXdXZyWjlPK1ZEQllJeEU0UzcrMlI2QktwUk9iemNOYnJTTW9SQVZYRXduTE1WZHJ0VzYwYjE5dnd2SDgvR3RIRjIwRVIxaUcxNjNRYWppOEx4TDU3Mnp1Wld3amhKN1FhbDBQMFJiMHh0bFdkb0hRN1NhaDdydmR1V2owRHpvNUE1emZiaDhzcTk4MmhxdnRGWlhLSXdxRmw5TnJPSk1JdVlyOWlFNG4xMjVmSC85R0l2dkM0YXRIZFhJOHBVNEhQM1BvWGZDV2ZabmFMdHNMU25rWjNkV1hMZU9yMVFmVFlyRzdkOThkUVJDTVg4am5hUFFmVWlydUozUzdjY2hHTkVRMCtpLzV2YmJPQXV4MlkxQ2dja1p2Rm5FRTJRMDJoRytFb1pyUlpMaHNKSExWK0wyVHBKMEd2YjlQN25neS9ST0FxTi9kNlN6aXNnaGt5eHZZNStPRGhZV0FmbzRVNEtoK3FLOGM4YTFMcFNkanlLZ0ZFbFpXam5XdHF1bGpiSG8xbXpkWlhUMmZYaU5vQ0ROWWhocTNUdWl0cjcrOVhyOGpyUFJkdXg0NzNBcVEySHYzV2xVSUNPbkc0NzlBa3pXYlIwZ0RiRUpQMEJSME93NU5MV1ppS0JwWVBoZzQrSFQ0VXdpWDY1Z2MzVzVLbm9aWVllanFxNjF5MlBuNU0wZEV1djEzbXVSK3UvY1Iwa1pkV1huOHRwaks4a3RkWDZxOHE4WHNFaUpSajI0RFVZekJLRE1IazBXaURMa2NZZ1djTFNuNm4xRnZRYWZGc0VVeUpocjk4OFExWFBYUkdRdTR3M1o3R1ZZaTFKbjhYditkdUU5ZnA1T1ZtWU11dWswNHZDNjJGbjg3clFmNUNTKzczVDRFSVlKbzlDK2VWOXdad1U2SzBlMlFrVHM3R0ZoMFFWeFcraGZJb29XUllSMFY4Yk94ZjZxYndOQWN1WUZFVVh5WFNQbjhhNnJWQnlINXVyVDBMUFNFWnZQUWJqY0gzYlRmV0luQ2Y2ZEpYVFlRNVRqUmFRcWFnRXdVRXlLeWhta2hHdjNURnZkRFdYOXdYYm5FZmd5ak94cTlTbU8vbW0yTFMwQUVJZXpaNmV6Q0M3Z2h2Z1lsaEU0cnlNREl3UWdnU0NrSHkvT3FyYmNTalppQjZMcVI0emVSQUFBUUFFbEVRVlRGVG5OZHJhMXZ5ZDZRbStIZUpaWDYydno4Njl6TzNmNThIeHp0dlhzL1F4V1FzZGp2OFNpUXpocy95ZGxYZ2twR2FQYVpiY2ZJUk5HUHJzdXZmeERHUXJjYnd0Zkh5YjQ4MjREU2lLWkRiSHNKMUZ5WE91SjZlQ0JRRFFnN2pGWWxxVmJyQm9oU3lyVEZuaURtcEUxa3B3d3hobUdZR1dHNEFKRmhHQzBRUmRxejUxdnExMHptbzduY3VXT0NDUG44cTlWSzZmTDhqK1J5N3h0MWNxdDFxTnBRWTlldVIzRDRmcjhFZmxHaDhESmFQbFBJZlpIa0NsSTlWbGMvckNZWUpaUGZtWnQ3Ni9nWVRhWHlTRnhON0oreGUyWW5vZnpTZFBwemMzTm5DMlpXY1JRZ0NvYlpDZWdyUi92T2VvZ05aYlB2RzE2VXdvNDMwNnRTZVZTcDlEUzFlZER5OHROaXNUK0lMUUc1ekgzN3JDbS9jaDc1UjRkUGNCVFFDR1puMG1qY2xuWkJSY3JmZGMyVkFOZ3N4bDFZZUUweStXM0JNTE9PejUyVzVTZkRiQW1zYm5ZTWd3V0lETU13K3kwY1haK0dUaWUzWjQrMVMwTTIrLzVzOW53eHE4REZMaFJlVGl0QUN5dWk4cTVNNWhPQ1lSZ1gyRnpmejRqYWw5MWxHSVlKanVqVlYyL1o5QTZHMlg4NDhNQTdoY01WSkNSQ29XbzR2QkVPNzZNWm4vb0RxbHcrSGordVZ4YVdJOVJiclNlZC9qU2x3SG1vN21lZ29TT1IveXd1dm9pMlBXMjNGOUdqN0NmSXRaZGlvVkErRWxrTGhhelY2VWIxZ1g2ZnVSMzltczJlUy9FUjdqUE1GaU83WWxqVjFHWXlINkVYM0JWbkRSSWFEcmlabUJtSCtxMk9jcVF6WTdIZkxpMDlCK2ZJeWFtcll6U2paOU1MYjB5blA1dE9mNkhkWHFiVkx0WG1wRUVNS0xyUGJqY095NkhST0xKVU9wR09wMUpmR3Y1RUh1WTdEbXF5dGJYM0pwUGZTaVl2b1IxWW1zMmI1UE92RUZaLy9oTnRiaFZvSTlJOXRGbzM2dThwODdkazhydUNldzR6d3dUUmFWbCtNa3pRc0xyWlFiQklaQmptV2dKSDEvV2haMVVzdmtEdTcveXRhUFJmQ0ZSME9pdjUvQ2wwUWpydEVxT1lFWER6OGZndlZsWWUxK25NMCtZZWFzTmNibXVHVWJDNXZsK1NUUDVnWWVFVXdUQU1FenhSd1RDTVJ6ckJMWWZRYWwwL0ZDcUhRdlZzOWlPQzJhOUJRMGNpK1BtWDQzZ3M5a2RoUXF0MUExd3FGdnMvMkpHQ1liWUoyaFFWWFRHZC90eit0Sk12d3pBemdyNXlESWNMOGZqbFFwc3BUSzlXZnl1V3JhQlNlVlN4K0h6MTYvejhHLzNlU0l2WlRocU4vNGVmUXVGazlFWWh0M2lqNDNOemI5Mnl6ZHJJcEJSeWNjMnQzU0dPWVR6Q25aWmhkaUk4Y2htR1laaFpnNlByK3JSYTE2dlg3MUlxUFYxWTRaYzF0Uy9FM056YmRzTG1wRjI1cEFqSFVoaG1IR3l1TXd6RE1ON2dMWmdaaG1FWWhtR3VkVlNyRDhqblR4TzhCVFBEN0NncWxjY1dDaS9DaTNqODBuVDZ5OG5rdDBhZDJXNGZ0SGZ2WjhXV2J0M0xURXVoOExKNi9RN3Q5blhwVjRSNkU0bExjN2wzUnlML0ZRekRiQlVzUHhtR1llems4NitvVm8rSnh5OWJXbnFlWUJpR1lSZ3JOUEh3YXZXaHplYk4xSkY0L0lwczlweDQvTmVDWVJpR21VVjRDMmFHWWJZSUxrQmtHSVpoR0laaEdJWmhtSm1nMjAxME92T2hVSU9YWkdBWWhtRVlobUVZaG1GbWxRaGMxMjQzRW9tczhnSnBETU13RE1Nd2pPQXRtQm1HWVJpR1lSaUdZUmhtUmdpRjZwSElIc0V3RE1Nd0RNTXdETU13czBzN0hGNFRETU13RE1Nd0ROT0hDeEFaaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaGpHR0N4QVpobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVloakdHQ3hBWmhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhqR0dDeEFaaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaGpHR0N4QVpobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVloakdHQ3hBWmhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhqR0dDeEFaaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaGpHR0N4QVpobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVloakdHQ3hBWmhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhqR0dDeEFaaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaGpHR0N4QVpobUVZaG1FWWhtRVlobUVZaG1FWWhtRVlobUVZaG1FWWhtRVloakhHcFFDeFZyc1hmdFN2c2Rqdk1wbFBqcjVDcEZhN1I2MTJ2M2I3Z0U1bkpSNy94Zno4NndURE1BekRYS3NKRndvdjZIYXo2ZlNuWXJFL0RmKzUzVDZvVkRvaEZHcm1jbThQaGVxQ1lSaUdZUmlHMlJJUXVDZ1duNFVYYzNOdkNZV3F3eWVVeThlMldrY2tFcGNra3o4UURNTXdETU13RE1Nd0RNTXdETU13RE1OTXdxVUFzZFU2dEZhNzMrQTVJd3NRUzZVVFNxV25xbDg3blp6OXI3WGFmYnZkUkNqVVNDYS9SVWNhalZ1MzI5ZkZDMFR6dytHaTJKa01mNHRXNjVCbTg1YkNxdGY4YlRUNkQrR0pnQjVYdFhwTXA3T0lHNHZIZjJIMFJueWpadk9JY0xpZzdzY2IzVzZxVW5tc2tOOGlHdjJiL2h2YjdRUHI5YnZnUlNyMTVTMHIwQW1vRldhdGNXdTFlK09OMGVpVjhmaXZ4UlJ3NHdaMDJXNDNXYWtjaXhmSjVIY2lrYXNFWTBhMFVubVlzSjcvVHlPUmY0dnRvRnE5UHcyTnVibTN1NTRRaWV5cDErL1k2U3loZlRPWkM0WGZiTXNRWTY0MVRCaGk2UHp0OW03YmdVNDIrLzVRcUNtMkF4NExobXkvL05TSEczZmJhYmNQcmxhUEZwWUg5SnRFNGxLeFg3R1R4c0xPd2k4ZmN4cUt4Uk9yMVFmRjQ1ZTdWaCtDY0xpS0UycTFleVFTdndpRlNtTDc4RXZRSVY1UnI5OExUa1k2L1ludDBzamJUcmNiTDVXZWdlWlZSeUtScTlQcFQ0dHRnclhZZUdiQkkyNDBidDlzM2l3Y1hrVWJHYjNSTDBHM3hTTzMwYmhkczNuemNIZzlsZnFpMk9IczF5YktPRHpINkxZRkk3RThVejRtWXdvU1JzM21iVnF0NjBDb0MydGcvajRlLzducm1iTmdLSTdCczE0SUNMWWxqT0RIeFRBTXd6QU13ekJid01ndG1FT2g4dUxpUzRRVmZNK1BmTGNJVWZWaE5IcmwvUHlaeU0yRXd4WDduL1A1VTdyZERGNGNlR0RQYWF4VUhsMnIzUWN2bHBlZjdGcVgwK2tzSWdBUkRwZTNOOUEvbmtybGtWU2pxYjVGby9IL0NvV1RoVlZyOGxiUEJZZ2VIbGUzbSsxME1xRlFBeUhDVVpjdGw1K0FxR1VtYzZGNWpkcmR5dVVuUmFQL25OTG43M1N5eGVJemhSVkkrbzlSL0t2VnVsR2g4RkpoUlp5L3YyVnVvWWRXQ09peWdUWnV1WHg4czNsanhQV21MRURreHRXOGJMZWJYbDgvVytkcXFkUlhVNm12NEh4NnNKQ3VYSUJvU3FlVHBONjFzUERLYlNrYVFOQy9XSHdlWG1ReW54aXR5MXFaek1kd1dySDRIRFI2T0x3bWZHVmJodGgrajQ2SkFyMVpyOTl4MUY5aFU2RmJpcGxoWStNTWZLbFJmMDBrZnBiSmZHVDQrTVFoVnEwK0NDckdmaVNiL1RCU0NXSTc0TEZneExiTFR5TzRjWDJrV24xZ3RmcVFVWDlOcHorWlRGNHlmTHpWdWw2cDlIUmg2YnVQNzJmWi9aMDFGbllXZnZtWW5rRld1MXA5cUxENjdVV2p6a2ttdjFrb1BCOFdmcW4weEZ6dVhMRjlhQXE2aVNZS3JrUE9SU3AxOGJXNEFERlJMai9SZmlRVys3MlBCWWltc2F4cnVSYWIrTGhtd1NPdTFlNWFxVHdXTjJCYWFPS1hvTnZpa1Z1djM2bGNmandDTy90QkFhSzJpUkpxdHc4UWxwdTJ0bi9JUnM4eHVtM0JTQ3h2dTQ4SmFWQ3IzUVBQZUducFJlaGl3bGNnRDZWajNvMUU5b2o5amtianR1dnJiNkxBS1FFYmJGUUI0cllhaXBNRmdtZTlFQkQ3b3kwUm9Gam1BQUxETUF6RE1BekRiQUVqQ3hBUkI1eFltVVQrZ0pCK1l5ejJSK0VIYTJ2dmJiVnVpQWhSTHZkdXdVeWlWRHFoWEg0Yy9ONlZsU2NKWnYrQ0czZC9vdHVOTlJyL1QrZk1lUHh5d2V4d3F0VUhkenBMd3FyWStPeVkwMUtwcjFDZFlybjgyTzNOYlRPYTZKZ29yZGIxeHd4MjN5dE5wNlRSdUEzMVZWY2lrV3VFSjdMWmM3cmRlWG45SXl1VlJ3bUdZV2FlZHZzNlkyUlhNdmxkd1REN0MrV3lOWVVTQ2Y1RTRpZWp6Z21GYXVuMFo4cmxKK01IZWo4Y0xvalpocU1vT29URGxZV0ZVK2wxcGZKd1RlOU1IMjRGSS9oeE1iTkFwN093ZCsvbjhXSng4V1dKeEk4RXM3VVlpZVZ0OXpGYnJVUG9EcnZkY0Nnay9LVmV2OVBHeGxsNGNjQUJSOCsrMVdFRXdxSDUvS2xVZlpoSS9EUWEvWk93SXA5WGlObURCY0lzd0szQU1BekRNQXpETUR1ZHFKZ0NOWGR0djV5Zng4VGpsNDFmZmk5b290Ri9aYk1mRkZZR3FDSVlYMG1sTGs0a2RzVml2eGZieExXdGNVT2hhaTczSHZ1Uld1MmV6ZVl0aEJWRlBRODVUblY4TnNOd080dFFxRTY5S3hyOXU5Z0dRcFhLWTRTY1VEdCt6YVJ3T0o5T2Y2NVNlV1NsOHVoczlrT1F0OEkvV0g1dU80NGhUNHphNm5GN2dSV1hUbjlxK1Bpb05UTW1EakhiS2lQdGJTOUE1TEZneEhiTFR6TzRjWDBra2ZpNVdnU2lWSG9xdkx4d2VDMlQrVGdkaWNWK0k2NWw3S3l4c0xQWVhoK3ozZDROSTF4WVV5Zy9pdC9HbkpsT1gxd3VQMWxZUnZ2UjI3aExMd3M2WDJtcjVaUWFqU045TDBBMGhSdDNQMmJiZzJrTXMwTXdFTXN6NVdNeStyVGIxNk1GTE9ibnowaWx2akx4ZkphZlJyQXRZUVEvTG9aaEdJWmhHSWJaQXFZcVFMVGg4OVlEekN5QTRNNzJicVlXaWNBdFBFOHdBWkJPZjBGc0s5ZTJ4a1g0TEpQNW1QMUlwN05DQllpWnpFV2hVRmt3L2hFS05iZXhkelVhdDI2MURoSFdLSnVjcTA2blAxT3BQTExiemRUcmQvVjNmU21Xbjl1T1k4alBNdEhvWDQzdWRudUhtQ2s4Rm96Z3hyM1dFb3Y5UmxVWlZxdkh0RnFaYVBTcUhTVEhmR2RuallXZHhmYjZtTlhxZytoRkt2WDE4V2RHSXRja2s5K3ExZTVYTGgrN2pRV0lMT2oyWTdoeDkyTzJQWmpHTUF3ekk3VGJ1K2xGUFA0cm5mTlpmaHJCdG9RUi9MZ1lobUVZaG1FWVpndndxd0J4S3VDTHFtbU9uWTYxbjBLemVVUzEra0IxUWl6MlIxcUdwOXROMW1yM3NoK3gwK2tzMU90M0VwWlArOHRJNUdwaEZZTGNxdDIrYmppOGlpUDErcDJielZ2aitySFk3K0RLd3VVWWNUTUg0R1phcmNOeFYwakp4MkovU2lUK0Y5Y1cwOUZzM3FUVnVnRzlUaVF1QzRmM0NhOTB1N0ZhN2I3OXl4NGhyQysrWkg5Y2tjaWVlUHdYcm0vRUU1REZNZGVQUnY4dm1meSs2K0pHZUZEZGJrTDlHZzZYNHZHZmo3b0hPVEd4M21qY3R0RzRUYmVMVk9WZlVxbXZhdTRXZ1FmU2JONVVXS1VQLzBTanFPUE41czFVZUlKSUpINkVMS0RqN1hndnJoQU81eE9KbitBMWJnQnZqRVQrZzF0eURWWGdudXYxdXpXYnQraDBGbU94M3lZU1B3dUZxdWdod2xxbzdJY3pVa1FiYU9OMnU2bDYvWTcySTBndG84bEczY01PYWx3OEpmVGJSdU9Xb1ZBN0Zyc0NZN2JUV1dtMURuSHR2VWI0T0hJOTArbk02YlZDcU5HNFhiTjVlS3QxV0NoVWkwYi9qRTRlaWZ4WFRFZXplY3RXNitCd2VFTSsxUnh1bzlHNEEvb1NPbGdxOVRYSEE0SGtiRFJ1Z1g4aHE2UFJLeEZlSExYS0pwNHFMdFZxSFlFN2pNVitGWTlmUVpJSHZSZDloczZCTkc0Mmp4UzluUi9idHZkZUgyL0VyYUdmMjYvWmJoL1ViTjdZZmlRZS84Mm9Kc1BKalFZdTNrMmx2dG50UmlBWjZ2VTd0TnNIUnlML1RpYS9FNHY5ZWZCa0E3MmdSbGs4L21zeENUekdjSGhOZHVDNytGS0FxRG5FNnZXN29qWHg2WGpnT25yQkNDbHFqa0kvYkxWdWlQYVZsNzNFUHIxWUtXdjh5ZkdvbFphSEVvZmlwb000Z3VPeDJGK2d6ZVZJUHpJVWFraFYvbVBYc2REcFpCdU5PMkVzb09Gd25WanNTcHpwdXZTZytqZ0lsbkI0dmRXNkVlNWNTcHU5VXRwWXJheHZvbmpEWklpRjhkenc2ZTMyOVVLaEloNEk1SnRqbDJTb09YeDlqRHRjcE5HNEdSNXZLdlZsM0dPMStpQThFTHdsbmY2MGZjbFZJNHlHeVNvd1ZnQUFFQUJKUkVGVW1PR1YvVGU5Tk1jQ2dRY094WWNlaXp2Qjg4R1hpc2QvSjVYZ3RDdFd5amE5SGE0TW9ZZXJSYVAvU2laLzREQkJwUVkvRWlxczB6a0E1MGNpVU0xL2cvd2MzZ0liSGFEYnpVWWkvM0FNbkZydDNoZzBzZGdmOE43QmQ0VGxrTGxGdTMyZ3NJYlZHZ1lkVk1Od3EyazI3b3lZWG9FMXJ0YmpNbThGQStYWWJ1K3ExZTZINW9CZXdITU9oMkgxWFI2UC8zYjhPbTB6QzFwS0twZC80WHRCNzRURGV5SFcwR0dxMVFkRDc2Q0hwOU5md0svQ25HMGZDMzNWQUN2aTIxS0MzVmJxcGhvK1dwYTF1YlFYblFORkk2WDM1ZWdEdGRyZFlMeE5JMGgxdEpqdGRBTkRFUTJFa2R0cVhROENHWmVLUlBiQlRKSlBBOFp3a2M3QmcycTNEd21GOG83aGovZDJPcnZDNFdzY3EzcnIrSmlLV3UyZVVoVmFkb0o4MnJmSEE0ZGpFbzMrTVpYNmhrT1I2UTh4ZVJ0M2xVL3NwNkZRU1V3Q2owZ095ZXRLRS9FcTRRbFN6UkRzTUJoR25VTlBtNHlCL3BISmdzNnppU0xONE1tZFZoTjlMV1pLY09hNkhpR01GenlvZHZzNlVpYXZ5c3YrWWVoempWdEJwM0VoemFSbjlDOW9UOGR0UWZwSjZXSDVHZzRSYWpRV0pvSkhqV2FsNXcvZExSOHZKTmlmeVhkek8vODZHS3JveWZoMjB1YkI0L3FyakYxMGJPZDQ3TFRhSHZINGI5VDc5RlRxVzZPTUVKdGMvYmxET090WVBrYUNUdWdaaXJiNzkzUGt5azlmaEJPS2I0UTdSYk1xK2VNS0JtQ2pjWFAwQVdFMTA1V0l1bUNValRqWFFOMGczZ0tkanM3VDdhYmhGMk4wNDhFT0RSa3orMU1IdXFhd1dqeEhSNkJBMFJ6cWhGR2U1aWk2M1hpdGRoOWhEY3hmak5ranFGYTdCNzdwb0JjODJjV3p2ZDFBT1RvWUZhT2JpRGN0SmdLTHJ1OHNKb3BsaXN3SStRenBTSzEyZjlzVTVRNWFWaGhpNjQyL3JWYVBodWhBdDRRUjNtd2VCcXVtMDFtT3h5OTFtNGJoYzBSeCtLdWhxNnV2Rm8zK0hYSnM4UHpKOGhOOXZ0MWVrWXJwV3c0QlNKMVFXSVAzaDNpdk1NR3pRTkNVU05zVjdqQ0tEcGtxZmZtVzY5YnJVR0dIU3RYOEQrb3p1SUxibVpNdE90L0ZzdW5qRXNHb0c0WmhHSVpoR0lhNUZqTGxGc3dwNFFldzZmUDVVKzFINFBUaVIvMmF5NzJMSWxEd0RZckY1eUwrQzY5amNmR2xqdXRVcXc4dEZwK05GN3QyUGFaLzVHRndxK0JySVhSWXI5KzlmOUNLYitMdHVNalFGWTdPNTE5ck8yQjU3RGh0ZnY0TVJGTEVGT0EyYUZOTytkRXZTU1NtS1VETU9SNFhIb2o5Q0c3WXJVWXRtcytmVHJGVXlYMUtwUk1YRjErRTdJdmp2STJOMTZuTnRZVU1UcTJzSER2cUh1Ym16aXFYbndTZlUvMnBVamx1YWVtWkU0TVVhUFMxdFhmamcrQnRMaTA5MS82bmN2bHhpSW5Zanh4d3dFTkNvVlhIRmFyVkIxUXFqMFVFQnlHR1l2R0Z0cmMvS1p0OWZ6Wjd2djFrQkt3M050Nm9ndDE0cjdDMnZ2MVFxZlEwZWYwSHpjam1Eb0UyTG5LdUd4dHZzQjlCckdGdTdtMmo3bUduTkM2aVkydHI3OFNENmg5NGhJeU4vZ0dERGk5V1ZoNHZwc0RIa2VzTkJOY0toUTlOYkFYRUVQUDVWeUIvNEhqN3dzSnJrc2x2aXltb1ZCNVNyUjZEMUJleWJxdXJGOWovaE5ZODRJQUgwMnVrSGt1bFo2Q0JIRy9QWkM3STVUN2dpQXhXcXcvTzUxOXRQNUxOZmhCWFE1L0o1YzZKUmo5S0J4SG9nVGdTVmlmNXFjcDJDeXNJZFpkaThYbDRjZUNCZDdKZnBGNi9mYUZ3aXYzSXdzSXJrOG52Q1RjUVVLTitua2hjdHJwNnJ2MEpsOHZINzlyMVdKWDRNZFVMcEx4a0dhVldRZ2p4eDBaanlWRWM3Qm5OSVlZSDJHb2Rrc2xjSkRjaW5Ld1g5RUVPYVdQakRQdnpGTlp1bnY5ZVhIeUZLbmRHT0xoU2VTUmlqb2crNzlwMUxMcVcvY2J3Sjd4WVducU9PbGdvdkJRRFBKWDZTcU54YTl1Vkh3VUpzN2o0WWxXeGFydUJOOUVXUHdxY3M3Q0FHL2lyNDI2VmdGMWNmRUcxK2hEN284T1RwQjJDOUUwVWIyZ09NZHpxeHNacGpjWlI5aFB3QUhHVDlrcGMyRWkwQUNkUnF4Mk44WUtSUmZVMCtJSjRzYkR3YXVFSm95R21UMENtbCtaWUVMSUdkRzN0N1hiTFI3N2RXcUZoYWVsWllncVFZb0dzczZrbmkyTHhPYm5jT3pINjZGZWtmdmZzK2FycjI0Y2ZMeFNpSExrWE9xb2ZOamJPRkpiV2ZrczZ2VmtmZ3l1dnJiMExLbkw0eXJ0MzMzMG9PYUhWdUROaWVnWFJ1UHFQeTZnVmpKUmpwZkl3UnlzUTJld0g4TnpFRGtSMm1NY01IbmxvUFA1THlva0tTeWc5WUdYbGNSNHFmYmQ5TENqVkFJMjJ2bjYyL1UrMTJuMFhGMTgyV05vU2huWkR2KzJmWUgxOUdEemt0eTRzbkpKTS9rQjRRa2VMOWMvVU54UWpoY0tMU1JjTHE4bUUvVzZYbDA4TWg5VkttUThpZ1pCSURQUncyRkdRZm5ob2pteWxqbytwS0JaZkJGV09uZzlyc0ZBNDJmNm5adk5XOC9PdnA5ZEdRMHllbjVXbE5tSlVmWThEVlhTSXBHa3E1YkVBc1ZKNUJCNUlJbkhKNHVMSm84NHBGaytDYVlFVXJDcmQwQkYwM2t5VVp2TklqVTZyaTVFV015VTRjMTJIMWRYenFMYzRnTEtUbS9mMWVwZUhWdEJwWEl4b2RCdlhZVktyM1RPZmZ4VmVyS3c4UVIwMEhRczZvTnVUeTladUg0U0w5ei9kZXJaNEF2SWhiQllaRkl2UHBDM0xIY2hXZUoycUdQRFdhVFU5NG9sME9ydm8wNGNuUVNsZ0t0TTVlTHoyQXNSeStkaUpsbzh3RkhRNmhxTHR4dndjdVVMV1JhMnR2Y1AyNlEvRDNVYWpmeGcrVS9ZdXRPOW1YSVZVZyt3RzV6dDZsNG02Q2FFbkl6TGdPTE5ZdER6QmVQeHkyOGNaMkorYTBEWHRSeHdXeS9MeTA0d3FYVUtoVGorTTlyWlJpK1oydS9HTmpiUGtPVyttSHFqcDRpazBsZU13WTJKMEUvR214WUtMcnU4VU5NVXlSV2JzSnhRS0w3SC82cWtBMFJsWVJoNEVJbDJXdG1mb1Y3eElweityVGdnaW9qaitxMEhLT1FvUTlaSVJNZnBxN2ZiQjluWHM4T3ZxS3A2cWtMV1Z4ay9NbTBEUTFBdmJHTzR3aWc0WktYMzV2UjZRejUvbXVDc0lpdm41TTRlZmxZNUY1N3RZdGhORU1vSmhHSVpoR0laaG1GRk1WWURZYU55YVhwamtqVHI5dDJ6NkxkSG9QMVJlRGY0YmZDRTVHMnl6T2xDdS9FRzA0U0hERVlMTDFHN3Zpa1QyMnE0Y1F0NU9ubnk1WTMwQ0Noemptb2lHSUJ1SzZBaytZbjM5TFNzclQwVGtVWjFXcVR5cVVMQ0tHc1BodFZUcVM1SElhcU54YzNMUGtNMlNNWnF1NDF2WTZBNjk4QVdYeHhVS1ZkVGpxdFh1THVjbWxqT1pUNm9UWEJNcWxQUktKSDZFaDlscTNZRFN3SWhlSlJMSE9iNE9MdFh0cG9VVkQ3MmRhNjdPRHFYbzB1blBSeUpYeTVWRmJvVndXTG44QkdUK3hyd0xwNjJ0L1krUUFRWEVGaDB6eXhPSm4rRGhDeXNrZXIzaDhJY0QzQ0Y4UXRsaGZvaG1MWmZ4ZFVTcGRHSXE5Vlg3cE9GOC9uUktnU01Za1VqOHJOMCtFSDRzcGNBMWNHa0ZQOWpxeGcySDh5cVFYYWs4MUpHUEgyWkhOQzZPSTNoQjN3WERGdWtLQkY2UmxXbTFiaWkwMkxyRzlZWk9LM1M3cWRYVkQxSEZGZUxVc2RpdmtGNnRWby9Ca1kyTjF5OHRyZG5EOTk1QWNuRmp3MHA0b0RsaXNUOTJPc2xHNC9iMjJja0lQRkZrS2hiN3ZjeWp0K3YxdStOdWtZZ0toUnIyeWdsS3RJaWVwUDBtMnJsV3UzK3BkSUtZbWxqc3I5VER1OTFrcGZKd3pYZHRiTHdHd1M4RTRtT3gzNFpDZGJrYzNRMjczUkQ5MVVRdkNQblI4WDVpKysrYU53QU5pR0E5Y2c5eXViNDlZanFNaHBpK1h0Q2syVHhpZGJVWGtrUGVCVjhOZ1dCOENwN3c2dXI3ZHUxNmREL0Eya0tVYzkrK2oySGtibXljdXJUMEl2cTRXdTBlVlBHQTBONXdwNlhzbE96aFY4aTdSUSsvN3RvYUx2dHdWVDZDanFwdUlKWDZZalQ2TDdSbXRmb2dSRjFYVjk5L3dBRVBIN1hjRWVLSmFBWElXN2xreFQ2NVFpZFVSbGlZbVNnRGREb0x3d2Rsd0xUamR2TDRJUlpDeHBHNkZwSTY4Zmd2Y1g2bGNveDhnRzljV2pwcGVFbzZ2cjVjZSt3dzBuM0o1RGZ3dUpyTlcyQ2NkanBuT1pZRXdKQnh1OXUydmZCWGVCMWk0ekVkWXZwb2o0WG8rdnBacEVUazVQdmZoVUp0MmNIdVR4M0FNMGp3VUMyVTZQWEd2eUlWMUdqY0Vpbkd3VXh6aFA3RHAwZWpmNGZTUlBvSEEwSG1JOStBUEIrQytNSVRTUENRRlpkSS9EUVcrMDA0dkk1Y1FxMTJMeG51ZDM0MW84YmRFdE5ySEVFMHJ0SGowa2RmT2JaYWg1TEd4MWhJSm44WWpmNlpra1B5N1ZOMXhhMWluTlpBSHdpSEt6RFAwTEh4alNDeXd1SC9ZcVRMNVVCdVBYN0pwZWtKYml3QUNHY3B2cjRLRTZKYWZTaStVYjErUjlqdzlsV05ZYmFSd29WdG5FeCtIZi9qeWxUUDV4ZGp0Smd3TkJTTHhaTklGeVAzbGt4ZWdpYno2MjZOZkV3QzM0SUNEdkg0WlhoNjdmYUtuRks0MldyNlE0eWdCZWJsdDlNcVFJeEcvOTEvNDgxVk5hY3A4Zml2WVAwMkdyY2RmVXFFQ3JEVTJzOUNUOUI1TTFGME9xMEpRV2t4Ty82YTY1clErbnpvZXpETUlwSC9vdmZDVW9VcFZTbzlGV01xbDNzbm5lYWhGWFFhRjVZYnVnMHMyRmJyY01lV0JkWHEvZVRuWG1tZldtTTZGb3hBL0kyZUxSNStyZllBM0JWOE43UTFYRlIxRHFTS3ZLdS95ZEZxaGVQdzZiZ2xmTUcxdGZldXJCeFByZUN0MDNxTFN3d1RqZlpXN0dzMmJ6cTZBTkd5dHlGTzBaL1ZRVTNMUjVnSU9tMURzWWUvSXhmdEJlK01iS1IwK21KRVVDRnYwVmlPYWlGQ0ZsRloxWWRvWDR4MFBKNWE3WDdVRGRDN01wbVAyQzVyb0c3Z3k1Qi9Kd3ZaTDQxRS90bnA3SkpMK3QzSzFmTFJiNFVoWEV3VXVRcXk1UkIxT2xrcWVaRmJBV3lPcWNGb3N3NHRXRHRvUHNpZlVRV0lNUGJvUmIrZkc3dDR4RVRsT0hUK3VCamRSRHhvc2VCY3ZCMkVwbGhPcHo5RlE3N1pQSXpXVFlBaGF0cytZcXBWVGlISzB1a3Z3ZmVSVytzOFZIN2NwMlZBQUw4K1NCVWdCaFJSSFAvVmh0ZjMxWkdmVUtDWnpJWGw4aE1oZitRNjhaZkwrNDl0Ykp3aFpIOWJXSGlkaDFpV0I0R2dLWkZtSU54aFlSUWQwbEg2TXE1clZSL0tQbll4cm9CV2d4eEFRMjlzSkplV1hqRHFUc1pZZEFHSTVVMkN5RFF4RE1Nd0RNTXdERE9LYVFvUUkycE53VkVSL0FNT2VKQU1nbXo2Zm5BRnUxMXJEVGE0R1pzM0VmMWJOdnNCZW8xc0VId1A1RTdVRVFlcDFOZG9KbGF0ZHY5TTVtUHFPTElDTklQSzdoRXBFSmRaWEh3cGZXZ3E5ZlY5K3k0VVZzVHp1UG41TStnRXBONkx4V2ZKTTY5WVdIZ3BKZDNobVZlcmwrZnpyNENIaGh0VG9iMkZoVE82M2JQczN3SXVQYzJ4UXh4QmVFWHpjWVZDTmZWdzRKekRMMEpBZk5UanNwUEx2VWM5TVRoN2NDRGhSaUlONDloSHczYXBaK3NraDVhWFQwUXlUMWpCZ2d2WDF0NkZad1VIZTI3dXJhTzhhTVN0MXRiZUkyU2NjV25wZWNNVC91Uk9FTlptRUFndVQzUUxoWnhndDdEd2FpcEFnVXU1dHZadUlSY0dVSFY3Y0xOcGRURjR4VEpJM1pGbi91LzYrdHVHcjZiWkNxYk1RdU1pZ3FBeUpYSWZnUnRQdk96c04yNmw4akNLbTgvUHY3WS96L1VUR012bDh2SERWOXZleHZYTXhGWkFQb0JpaFFzTHIxSmlDbzlvZGZXRDZBYUlkcTJzUEduS3dDVkoxNFdGVjZpSitISjNxbnZTYTdRN2hWWVJUMFJYcE0vS1pENlJ6Nys2V24wZ0pMYmNjdkcvL2J0OWlwQzljWG41R2JScm1MelZjeDFyNW5rQVQ0a2VsQXhYNlZaSElVa3d1SGdERWlyM29LNXJwQmNJU2xVS21WM1QrL3pOcW1Ma0c2WXZRRFFkWXBwNlFZOVFzZmdpSVVPUXk4dFBWMGs3eERyMzdmczR4bW1wOUhTVkprVFlibUhodFBYMXQrRDVJMzJZeVh5MDNkNmR6NzlHeURxVmJQWUMxdytRUzg2OG4xNmpVV2pKRUJnRHFpYUFJb1BDV2d0cU0rRWRqLzhjc1ZIY0FBWk9KdU4rWllSS0U0a2Z5VG5vZVRyU2JONmtueWcxTUZIczdObnp0ZUdES3l2SDJkT1ppdkZERENxTVVsTVlWcm5jdStuR1Vxa3ZyNjYrWHo3WVowRGUycThtbGQyYk81M2NuajNmbEdkK2RYNys5ZDF1NHBwcnJMY1hRaEVBQUJBQVNVUkJWSXUzV2pkMnJLU0xETmJ3M2FJZGQrKytyLzJJdHlFMkJnOURUQi9Oc1lBRUFPVkZjcmx6MEEvVmNUeG5IUzA1Q21SeGFJRUhER3E1VHVmbWRCY0U2NUZlVmI4aUI1UEx2UU4zcS9xZXNCcjY0L3YyWFNTVDY4ZDVLOTFBR29iRWNpTHgwOFhGRjZuanVkejdrQnNZM216SXRISDlOYjFNOGIxeFRSK1hKa2JLVVUzcldsdzhoZHFDYUxmZjJlM09pMWtGaWFMZHU2MWxkTWM4SmJuV2pwV0YycmZ2bzdCc1lRQXNMVDBUVDMxdGJiZmM1L2VtZ1JZZ0JqMFdNTWJsYWh4V1FndmlhKy9lejBJc28zMlY3SUkwS0pXZUxLLzhKMlFacVE0ZUFoeFBZK0pjSUgzR2FERmhZaWgyT25PMFZBOFN1b3VMTDZGTjJaTEpyNit0blN1bXh0VEhsTi9yMW5LMTQ1T1ZGTzEwVnRUNE5ScGkvYmYzeW5wd1dZM1B0K3hWZXRGdUx3dXZVSTlDYzdmYkI3bnVPVTc3emNrek4vZkUxQkYwM2t5VWlaM1dpSUMwbUFOL3pYVk4wSmRnUTlwWDJvYk52TEZ4ZXExMnYzTDVjWGpPVkVYaG9SVjBHamVaL0ZFKzM3dG1OcnRaZ0lnaFFJdWx3YnBUQnoyTUJTT2s0M1pDSkhLMWtNOTJiZTE5R01MbDhsTVJCRk0rSmd6NFpQSTc4Zml2bE9SSnB6OVZxVnhXS0p3c0t4NXVRMlVpbnUxcTA3aUVLNUQ1dUEyOFY5clZYM0E5QjNGRjBhdWpHaWhobVdqNUVKcUNUdDlRVlBnN2NxbktUZGhXS2tXSEtSUmU1Rmh1U2tnWHRhOFhybGhjZkNGTlBrK25MMXBmZncra2NhbDBmRHI5T1RYRnl5Z3UwV2hZaHFMMEhKOXAyM0QyUEZ3MkVuR3ZrTk5zaGY3SjQwd1V2QjAvOUFXcDBnVWVKVFNwbUFMMGZ3elBadk0ybzA2Z0haQ0YzQU5CbUx0NGl2SEtjZWprQ1RHNmlaaHFzVUJkdkoyQ3ZsaFdWWURRYS8wcXZmTTlML1BtWUg3K1Rjbmt0NUFRUWVCRi9tcXRqWTJBdzlyYWU5SDN1dDA0cFRBQ2lpaWFmalZOK1ltSWtQUWdickd4OFhxNVZPMUdxWFFpOWYrRmhWUHQyMnZvNDAwZ1RKUklzeER1RU9iUklRMmxIMEp3VDBnQnZyTHlGRm9FQk80MnVrcWw4Z2haaDMxa1BQNXIxNXNaWTlFRklaWVZ2aWNqR0laaEdJWmhHSVlaZy9HS0dvM0dyUkNUS2hhZkNVZFV6a3kxTmtteFJZc0dnQ3VMdk1WZ1RWNUxIcWw1bnVNRkY1M1NWTlhxTWZnRWRaeVdic0tkSkJJL0hINVhOdnNoVlFtRUdFMHE5VVg1bGdlclhhUnBXVVJoT2VTbjI1ZjhnV05HaVlmQnBkcUh2MFduZjhUTHFsRkVFSTlMZ1crQkVMRDZWUVdzTzUwRHhCUWdsbUhMa3JaVHFTLzFMK3VlSzBVNGxZSmZzZGh2bDVhZTdjdldHN25jdVNxa2lNQUtWZkIwT2dlcUU2clZCOUVMdVdWQXI0SFFpNFluWElyQVdvRWIxeHNURzdlL1JzdmY3THRzSUMzaGVyV2QyTGdUVzZIYlRWTG9CMkxOSHJwQ0dpQ2Qvb1IxSzYwYnRsbzNFbE9EdHJCdkE0UnZKeU00RnJTaUZmSnp1ZHg3YlhISmppcjRRSWlIWHVCbVNIR2swNTlSd2V0d2VCOUNzV0tiUUwrU1c3ZW8yKzdpYTFKVTFGQXZ5RGQzVlFHaTdqNTk2c3hSSXlzNC9CVWRpQUpUQWMzYzNGdnNOWGI5cFRKSVRXOXE3VVRpeHpSVWk4Vm40NDM1dkxYaHp2ZzU2L2FoTFVQMmUwVFBHT2hCQWdIaFhYdTJHeDBWNlJiMVYxZmtSbGVuMjNQbnNkZ2ZZN0UvaVMxa3pCQlRlNU5sTWg5U1VnV0pLeGtDdHVwT2tBMnlYNHB5VWVpMFpKN1JyN0NDcU42aTAvR3Q1R1ZLUEF3eDMxRUZRSTc5L3BCZWxVbDBqMVNyUi9kTDM5NWpUeW9MYVg2UUZkci9vQXFpMlBhK1I1K2VTbGw1Y1ZXVVpncFVBNzBZMm5tOGswaGNPbzJ4U3ZocmVnV0VmdU1HOUxqMGxhT3d5cHQyMDR0SVpHQmIrVWhrTDBtd1dVVjVRQ096a21xVnFWanNTdm52SDFSNXQ1Q2J4SWtnQ1hvc1FDeXJUQ2NHTXVrNys1d0ttTWZVRmFVMzJpdlJnRC9yYi9wcWpCWXpNaFJydFh2VEM1aEdWSDBvckRIK2EvcGUyd0pTcEhZcENxTlJMWlptTk1SNmYrdmJXcG9GaUhnSERVRFhCY2swVVpNNlZIVUl0QnVNbjFydDd2M2pOKzJmdVJXRGZXS25OU0lnTGViQVgzTmRrM1Q2cy9icVEvcGNOZG0xMWJxZUNCSU02bVRTY20rbEViaHBQeU5QVHkvc3c5bkRXREJDT201WDArdHd1RVNUbCtRU3RwdUZWc25rSmJKb2I4RDVWYzZGWnMzeEtFempFbU9nRmRxYXpWdjNyN0NJd1lnZkZSaWtMMlZmanBTWWFQa1lvVzhvS3Z3ZHViYVZici9YUDlaMVhTblRwaGMrb0xhK1FUZWdrekg2YXJXNzl0NXZHSmRvdDY4anBFSjB4Sk9odkVhVkVCbTJ3bVFUeFYvaWNhdVhZbWgwT3IyYWRZeE45QzdWLzV2Tld3alp4SFJMcGk2ZW5USEswWTR2TVRwVExUWUxMdDYyRTdSWTFvU01iVFhsdGY5cnp3U2k1UWEzTEtMb0Z4QUNDd3V2Z2R5QUZNM25YNDFPWGk0L1VVZ1o1U2lrQ3hxTmVQVk1qQVhUNk5CRXBkOXFIZG92bnI3SXRnVlpSenIrRmlvVU1Nd1lpMjZtOEZmcE13ekRNQXpETU15MURlTVZFT3YxdTVGckorUStBbk56YjdQUDFOOGE0QlhUZmpRSTMvVG5ZaWFwQUZIdVNGSWJmb3RqNmxVaThSTXFXV2kzZDFGWVdlMkZNZWdtV2FGZVJQZmcxbExSakdmZ3VtU3p2YTFKUXFHODJITHdCT3dUZjhQaDNzTDFybnRFR2wzVy9xdGF2Z3V4NE9IWVZyVjYvM3JkaWs3S2pUOWVZTnRVWWlvY2VlVkk1RDl3ak52dFJYV0UwZ055dTdlQk9HWXkrVU9LQU81MHJzV05HNkdZdXlNdGlzQUtiWDhqcG1ZV1JxNzkxK0ZXVUZrSGhLY3BiaWdKeVhONlNmMW04MURIMWwwZVNLVStOK3BQRkltV2djdW4yQTZISENlSWZwcEJTQ0ZzdjRJTWw3OVViQWRqYWg4OTZJVnVWMmxWM2RWd2JhV3IwNnhKN0FWL1JZZmE5eHh5dGQwK3VIL1llbHhVL3lGWFRiaU9mZFVFTlhsOWJlMTlkR1RNblBWRTRrZURncVdEK0hpNS9EaDA3LzV0NXlpOG0wZzRKNUhqekZMcE1FaVBiamZtdWdZRzdSb2pmR1ZsNWRqaGcyb3p4MkhHRExGVzYvcENQZ0hIVFNZU2w5QzJudTMyZ2ZZSHF3d2hTSWwyTzZPZUczVzI0VFcza0pGQ0VzdHhNQlFLUEZjWHRPbWxnMHJBeUExRzI4ZzN1NXFScGxDU1JsWVBhRlh0ZEx0eGpBVkV0TnZ0RmRwNlc2NWVSa0F5dElRaGxHQ1FDMzgrRElsTXlGaGZaZ1VvZG9UcHBkKzRBVDB1ZmVVb2JNWG9oY0xKbWN4SFlyRy9iRm0rUEdoVXZRSzlVSzFBYzhPVXJSSVFRWStGZUh6QUVhWnR1V2dWR1VMWmFmSDR6d2JmaUY5OTJKR2NHS1BGakF4RjI5MDZmT2NmMGtJK1cwd3M5cWRSQzZnSXd5Rkd3QXpvbmFTOWEwRTRURG8wSnJ5Q25vK3dDVEsxK0tGYW4yTHh1ZWdrK0hiSjVDV2l2K1VybkJjUDB0NERFenV0QjN6WFlnNzhOZGROQ0RXYk4yKzFEdTUwRHFBTWZhZlQwM1JVdHhFb3FkUTNhYXQ2M0lNcTM2ZW9WengrdVgwVFFBOWp3UWpIT3JXSlJFK2FLYzlPSWZlTWhzbTlXNVlHYnQ3QWxMTmZqT0lTNDRuRnJxRDdoQUNFZ3FqWDc5QmYzdTlYOEUvbG5TK0pmaVdablltV2p4R21ocUx3ZWVTcUtNb1A3RWZ4TUdtRlNQdEJlQm45RzdoODhINyt0My9DUWYwWFpuR0pTT1R2Nkpub01EZzVsZnE2cllwbEpQNjJndS9JS1JZV0VJQ3dOekJBYVBjZVlZV1ZyTW84RWtlcXZOWFV4Yk45MERqbHFQQXJSbWVxeFdiQnhkdDJnaGJMbXBEVnJaWmo2SnZpdlY5bFdHQmp5eUtLUGhLSlhMMnc4TnIxOWJQcjlidlFhbmF5ck8wQ3NiVm9lTVF6TVJaTW8wTVRsYjZhT09kWW5oQ09QeW1SZHZzUU1ZSnRuSHh1eEl5ckc0WmhHSVpoR0lhWmNZekxIV1RhWmgzT1JxMTJYMFFaVmxmUG01OC9YUzNTc3pYZ0hpaVRWSzAra0FvUTYvVTdrOHVVU24xNStIeVpnT3dNSHVudHBpVFhlYUlDeE41OHZsTHBCTmNQbFlISXNPZDFNdURnK1ZXUzVRMTdoRnJZZGlGUmFSaHZoTVA3Qmkrck5weDF1U3dGdjBRdk1IMndXaEJsR2h3K29kaE1jOGJWRVlxbmhNUFhPTTcwdGpYRERIS3RiVnlrdUlUYnJRcnJtYmp2Mm1QS3RvL2NpYTJBcDAwdkdvM2I0Y2YxSXE2N09Ca0JrV3Vmc0R0NDhVVVN2d2pIakpLZktqNWxXK0ZwWVBTcEhlNjJuakdwRGc5NlFjM2NIYk5jd2RDbkhPUjQ3NWJocitob3Qzc3J3VlFxanhwMVRxZXpQRmduWjAxZTM3ZnZ3djdxVU9lTm1iUHV1RnZSN3paNEwxTGRHQnFkanVwZGU0ZmV1NjkvQTd0Y3N6aERLOXo0Z05FMXh3d3hzYmxBeUVndDVzZytxcm9LZXVGSU9WQmx3T0IxU2tFOGdZa0ViWHJwRUkzK0E2bmZXdTArcmRZTmFYZGdKTmdTaVIrbTA1OGQweUlUb1lTaUxDbWJmUFBWNmpIRjRrbWpsdGZxZGlPaGtKZlNqVnp1dllYQ3l6RkE4dmxYeTV2NVp6eitzMHptVXpyNTNmSHNGTlBMcUhGOWYxeEd5bEZZUlFEZnhtazR1VmE3RjM2RXpPT21VbDlMcGI2MTB5c1JiU0tvTG13NU1CaVB3clpDWVhBRU54YkVVSmVtYjJmUDVKRUFoNUMzbVhBV3lodjFoVEV5M01oUTdLdWJZZC9aSDd2YWxHRnBvekFkWW9TcVZaSXpJclIycEtWNURnaUFpQ21BZVNOTE42dzBNM3dsMHRyTjVvMGgrV0hNMERLQjB5eTdhOFRFVG10S1FGck1qci9tdWliTjVpMExoWmVNcmhHSmlJQ0p4MzlPVVM4b01pcEFoSDlCUmZ6UUR1bzBiMlBCQ0ljRVVBdGUyaS9iYnU4cUZsOWNxOTF6MURYRUZCakZKY2FqU3NSYXJadmdDYXNwaS9YNkhSS0puNmptamtZSG9oazZsbzhSUm9ZaTRlUEliYmVYK3RjY2pxTHNHVHJaWFMvQWo2UCtxU29VVGVNU21jekhhN1dqaFJ5OCtJRXdqTWQvbVU1L1pwUXc5TDBWZkFjUEpCYjdFM3BSczNsVFJLMGJqZHZTOFhyOUhybmNPWjNPQXBuSGFqbFBVeGRQTVVZNTJ2RXhSbWVreFdiQnhkdGV0a0FzYTBQUkFFZHdvUGRydDJ1Tm5hMkpLUHBPSXZHalRPWVQ1Zkp4UWc2OWhZWFhickhIcENPUlptUXNtRWFISmlwOUpmYUhIUVJTSXBBU1lnUysrRjlCTS92cWhtRVlobUVZaG1GbUhPTUNSTVFVS0t5UXpaNjN1bm9oM09sOC9yUms4Z2RxY1lzdEFLR3VkUHB6NWZLVEtwVkg1SEx2eGtkWHF3OFJjZ01SMTVDSzI0SVF2VElMTlorUEFpaUlGaUhnTmVKanU5UHZwcnF0QkxLZ2dtazZRWWJoYm8xWXpNYkdHMVpXanZlanRHdHlpSUgyMDNGYjZHSS9XVnJtV3R1NEtsQ3lIemZ1eEZib2R1Zm9SU1p6d2FodGY5V21PWjZKUnY4eDZrOUtpaWFUMzBra2Z1cDZUamk4dVV4Ri85aEFHbDUvSFJyZmNaUkMydkdnRjJ3RmlMcjdzcW5GQWgyNzEyMEpmb29PdFc3aS9QeVpvODV4aXpaMlJyeDI0bVptcU5CNVZoWWdadnBuMWthOXQ5UEpSdHdTb01QcHR5MW16QkREWTZNRXhyQlFWZDhMVDJEd0w5Mnh2ODRLTTJKNkxTeWNXcXQ5czFSNkJ1MlBSc3Q3bE10UFJLWVExcWJ3Qk5WaDZLeWJXNjBlbmMrL1FwNWNUcVcrR28zK2l6WnBSZnFudjFKQ1NIZ2luYjQ0RnZ0OXFmUjB5ajdLMU9NaGxjcGowdWt2ek0yZFBaMlczREdtbDM3ait2NjRqSlNqa0FOOGVmbjRjdmtwMWVyOXFmODBHa2ZoQjdjMFAzL0dsbFVtQllOakZHOTF2am5Jc1NBbWFsS3FzSFJVSDByOGZBNWp0SmlSb1VoMjJyREMzYTdaT1BZeDRzQjBpUFdQcUJ6cWRZVzRYRXhDTGE0OGRRSGliOHBsYSsycmJqZEcyZjFJNU4rNGgwYmp0b25FVDJnTjZYajhDckZGK0duK0JhZkY3UGhycnV2UWJoKzB0dloyYXYxazhodXgyRjlrOVdxbjA5bFZMRDVMbnVMRDl4b1BvbDU0cEJCVzBBdTUzSHR3VTFTZUxpeS9lM1BoT205andSQ0hCT3YwUDdvblh0Q3hOemJPNnErQ2RuazgvblBaWkZaUHkrZFBwVy96LzluN0RuaEpxaXI5MnptL1BNTW9JaXBtUVV3Z1p2K3VZa1pkRTRvQkZRVVR1SVlGSThHRUdNQ2NjOVpkVVZrajZycUFMaXBtekFFVmNHRm1YdWpYT2YrL09xZjd2dHRWMWQxVjFkMHZET2Y3OVcrbVgzVjFkZFVOSjN6bjNIUFZHQmcvaDFVakhDNkFOb1JWMEdqY0xoNy9hYlc5Mi9pS0FBQVFBRWxFUVZSNlg5NlNrbXBvbmQ5N2hGODVoUGFFclJmdmhxS0JpVFdDcnQvcGJGaW4vR2U5NEZwa2w0dHBkVHE1M21YOThSSWdiNWVXVGlnV244a1ZkdEVtZUlNWGh0RHM3Tm5PVk1nZHdmRGc1aHVOMjlUclJ5aHJVQjJqU05wVHh0NUJlcnNBeUN2NlA0Q0wxNFgzR1QwcGpzNlhGcnNCc09zanNDbGkyU002eHIvT1ArbVBUV0VVcDRPdUJDT0p2Zm41cktNbDByYVpDMzdab1pGS1g0c21KL05XVmowZDU0b2hGdDEyd2dFVExSSUlCQUtCUUNBUUNMWUd3VGQ4QkhPWFRINmpWSHE2b3NWUEhwZGdUZ3FwMU5kNHF4UXdob25FVDJ1MWV5Z3J2T1FlSjI2MTdHdjE5RUpodlZvckZ2c0x5QlFRUGE0MUZBVVRBWHB0ZHZZTm9CVFgxczRCVjdXKy9tS0VWTlgwRVluOEU5NnYwd0hXUEl0Z2ZHeEo1K282Wjg3T05STGREbkRvOGkySnhCWHgrQlZxV21nUHZvRXVjeHFOL20yay9OUWlsd0lWR3dXb0J1eGlwbiswTDJRMTZTM1BCbEpMQWZRQ1lxNW9FUENNUTViODJxRFA5RmlKWjl0QzczYUtNSzNyTnNkdWlPYnpyOVVhdVZoOFRqeis4MEY1Tm5yUE93M05lM0pCSTZQTTRiemp1N085bTNSUDBaaGdYRE1vaGpEbXJYQjRaWUFXNnlaOWJua0NaVEJzRzlPcm5VeGVnaGRtYnIxK2wwcmxrZmdYdzNKOS9XVVFxc0ZxUTBhamY2Y3RDQThlZVNZYjByUXoya2xtV2I0QlZURllYb1hOUTBNS3lDSGFNVC8vTXNUQUdvM0RLNVVIYzVtWmN2bFJzZGl2b2JYVk5MRnRUQzhmbmV1NXVUejFnaS9seUFpSDg3bmMyM081ZHphYmg5UnE5NnBVSGtVUjY0UHorYk4zN1hxTW01UXc3K0dBclNJekFEdG9MbHluM0FxY1RIYnY2U0ZhekplaHlLYTFjNTY2MnRXaGtQdW9HNmVXbnVNbmhqeVg3eW1taklvbXV0N1BjT2lDMXRIb245VVlpTVYrMi92ZHc1aTRtSjE5MDhyS08ycTFZN1FHMzY3Ui9SSHdxY1VDWTVMbXVoZEFQdkJJWGx3OHNaY3RaS0ZlUDFKdElwTEo3NVRMajZkZEd1OFVqLyswVW5rNEhmeSsyZFRCNW9JdmREcXovWTVidlBmVFhXZThYcjhicCs3TnpMd3BuZjZ5Y1dhc2w0QzRqUUIzQTBaYXZYNUVQSDVyOUhJNi9jVjJlNFoydTc1Sm8ySGxqY1ZpUDFkVGhuZERjUnJRK1IvT3JiR2RibFJ2cjJlWCttZTljdGQ3ZTJmNjVpV2kwYi9PemIycTB6bTcyYngxdGZvQW5uY3cxWXJGazJkblg2dDJJS2k2NFpQcTlhTXhUU0RoSVJzem1VL244eS9ISE9tbEl2MjJsMThZM01YejZMcE9rS1B6cGNXMkU3c2U2cWVTTnNsYTNnU3hQRUZzRnFNNFlXQWNjbFJJa1prTlhUTS8vNUx0NWhEdDBFalRTS1d2eFQ0SnE3NzBkQlpvUXlrVXllMFRDQVFDZ1VBZ0VBZ09mSVRWR0VnbWY4QnZkTjJqU2FIVEdaRVpDY0tPY3hRcWxVZFVLc2YyN3VjN3JpZkQvN0d0SE5VaEI0TXMrNXZxSm9LTTFTYURVS3ZkczFnOGlWL2VLMk41eHM0b0FwOUkvSWdpd1JlblVsOVhWdDg5SENGQU5YMXdXZ3p0cDlNM3JocU5XNnRKb05HNGJhbjBOSDQxR3JkVEU0WjA3a0NBeCtHS0JZNW1EemVidDFXVHdKUm43Z1Nnczc2YXphMEpZSVJDMVpHN2JHam9EWVo0dnlFTjF3MkxkUjA3V3lEYysrN0dZeUtZWG9qSHJUWHVISVR6Z2xiclpzcWFRZjg3cFZLbW13WmQzZEI3TEsxUWVBNElXYnlabnorZGc3dHJhNjhmdEZwYUY0MHdqaHlpdXZ5K1JXS0d3L3Q2eDIvcU9QTlFmcVAzWGh3SEkwMlVpWU1KM0VFdG9OeTI3dG9tMEFYd1hCTVJwbTE2K1FYR1VpcjF6WVdGNStkeUYvQVI3eFBaQmk1cGlibmdqT09hNkhTUzNLMnAxSVcyVFlHNVlwOE5yUEpzbVVBanQ4VENsU0ZoNXViT1dseDhCaC9oZVRkVlROdjA4bjgvWGp0M1pITjU3QVZmeXJFZmJZeWZUT1l6UzB0UFRDUXVVVlE4d3ptRDJ1M3NkZGY5UUw4NEdIekR3UTZhQzNvajhtYnpadVp4MXprK0RmZ3lGRGtJalNISFJVdzFYRFU3cDFBNHRiYkgzTDR4RVd5S1JTTFg4YmRhTFUvZjBnOCtabm5DY0hpWk82SmVQN0pXdXpkc0hpb1J0N2RhdlIvdnFJc2pQS3JIeENhYktINjEyRFFRMkpiZ0VuZGtJcnA4c2RtMHRGVWljWm1aZmFpTTdSU0hZSUs5RUk5ZnlTTzJXdjBYTkRXM2RqTDVMZk9jTWRTTlY5Z210ZmJGT01GYUdkMmRUbisxLzh6Ujd2UG0yOVU4bmV2MU85ZnJSeW1ybHk5blloT2F0RjYvaTlxVWNxUWVEY1VwSVJRcXNzQnhTa0xuQ0k5RS9xbEkxTnZ5NXR2dHBkNEoxL1hlQk9RbFFxRkdMUGFiWE82ZHUzY2ZGdzZ2S0VwcFZadUhiakd3aVF4RjNpMWRXWVRZd3pxZERBeTVlQnhFbVRXNk9MMDFIditwUG5uYUx0NEVPVHBmV214S1lybi96R0UrcGthaDhGeHRLaTh2ZjFCdEZvS0taVjJYYmxPbDRwWXppZ0dBZmw5YnMzS1VFUmlhbTdQUzNHdTFZNHJGcDZrSllKSUNZYnZSSFI0eFV1bnJGRnN0ckl6djNvSk91RnFOaFVuMmdrQWdFQWdFQW9GQUlOaDhqT1VDVFlRbHQ2RzN2bmEwMzV0S1dVdXJ3VXdWQ2kra1A3OWhZNzFONk4xcWVuOWErd0dCMjlMRmtPSnhhdzhtMEdxVnlvTUdYQ09peGdBNXc4L2lsOU5EQ3d6UVFLcnJ6ZTRrcjJ4bTVtM01jZVR6WitudFI2ZUhST0lucXJ1bHkzMzB3WFo3aGtzSWpJOUc0dzRndHZnMXdVQ21kSzRYSkpQVy9sTUl5ZkNDY2thdGRqZnp6M0V3cFprN1FVQm1jb1BUOGwvWG9US1c3UElDU3A1REx6eG9RSkJwNHdZaWtlNCtzN3pSa2thbDhrQ1hyMFZXK0UyanNSRUlBWTlmcmQ1WGJRcUM2WVZFb3J0cTNNdjRiN2RubVpVR2c2OTJPT0x4WC9PYmN2bjRBYWYwTlZldGRrOWVzNTdKZkFxeG1kbFppemhHYTYrdG5lbHFuRFFhdHpjWi9FNG55eVdzcU02RUJjUWh1TEpScGZJSWN5NGdPczZiQUZJMGNhdzE4ZDVObE1tQzYwbFFDL1FGQmVsSitjYXVVZHNTbXFUbW5jaHNtTGJwRlJqeCtHLzRUYWVUVUlFUWkvMlMzNVJLVDNGK2FwUng3UllBc0lVZUlVdHRRcExCSTlDV09WZXRQa0I1UXpUNk56YmRiYWxGMDhDMFRhL0E4TjY1ZzVyTGV5OTRWNDZENy9iWHZiZk96U3REUS84OHdMR0Q1a0k4M3Eya1ZTNC8yamdjcmxTT1U1c0NYNFppTlBvWGZzUGJWV3YwOXRMdEE3c3F0dXBOOWZxUlE3WmRteXlDVGJGRXdzbzBJcGR0TkJQU2FIUlhORVdqZjFEamdlM0RZdkhaOVA1U1pYa3gzNE5aV3l4YUZRUlpJWTZETFRKUi9HbXhhU0N3TGNGcFZlZ0N2VXpGQk5mN29lY3l4MG0wVkRwQkRjWVVlcUhOWlpNcWxXTXJsWWZ3SVI3NUpzWlhOOFBCSnJmeFo3ZHp0Y1RRS1FLMlpLQlM2Y2xxTUxiT3JyWlN4SXpaOTNNdStsVW9uTnc3NFRkcXl2QnNLRTRMYkdCVUtnL1dwYTBVU1R4bnZwVHU1V3ExejJIWHFXeXhXTGRBN1BpOFJDaFVqc1grcURZWDRmQTZ2NW5JS3NkSVpCK241aFFLTDFDVTNvcG1nWXVLV2NOclJRelRidk5jdklsd2RONjEySlRFY3YrWnczeE1BNkdSUHpvbEJCRExtdjVxdGZhb1RjUjJZQlI5SXByUG40TnhBbU4rZHZhc1pQSmlycnhiTEo3TVNlVGpZTElDWWR2U0hjTXhVdW5EaytJM050ZSswVGljbFlodDhZWmZUTFlYQkFLQlFDQVFDQVFDd2VaalVtdXdKcmFXaTVkSjFXcjNncU51SzF0b1F6TDVQMllHNVBEOXM5YlhUMnMwN2tCdnc4WGlpWndsbHNsOFJwUG1xZFRGdktuRSt2ckxpTzdwUGhIdUFRN1Y4dkxIS3BXSHF1MEh2VlN4VUhndUJYdDJSdlFSSFRjM2R4YS9YMXQ3WGFjVFU5TkVNdmx0WGtpOXR2WUd4Q2JiN1Z5emVjdlYxZlBWOW9aMHJoZGtNcC9pTjZ1cjd3VFpnUWxicXgyTmpsWTNJTFJCS0NzSzNxeXVubWRVRmd3M0dyZGVYMy9wdm4yZlYxTkdOdnNoZnJPNitoWnpZektFb0VxbHArL2QrMVhOdW5JTkttV0Y0UjlUcmQ2UEQ5YnJSL0gyYlRZd0FhMkk1bTYzRnhVVmZGcGJlODBFdC9ZYmptQjZBWFE4NjZaeStWRWpmMElUZHZndHRjTUJrWlhKZkZMUmd4Y0t6OWRaSFJBQ21KV3JxMi9PNTErdVQ2WTE2K2NvMnM0cG0vMkFvZ29RczdQV2tYcjlhQTVqT0FHaW1kTWFPcDBrNVNsYXlHUStwMC9JWmorcXVsbU1aL0ZlbkFqZ3JhMTFkM25PWkQ2aHhuMUdyeWJLWkpGT2Y1SGZRS2oySXJzd1pwN0JjU3lJd1NFTE1MWVdDSnZ4ZENpVm5vblJUbmtxYzNwc2JBZlRDMVlCQkZldGRtK3RyZERDTUJUNWZTejJPeFVJaWNTUE9jY0ZvZmRDNFJTZDY5WnVMK1h6cjlIWEQ0VWF2YXpaNDBoNFdpM1FiQjZHVzNLOUxKUCt6ZWJOeStWLzVRdGdOT0w2empOYnJkMzc5MzhTa3hGaXMvZlRPUVM1ZVM2WXNjOHBZVHVZWHQ0NzExZHplZThGNzhwUldjYmVxZXZyWjFCRlo3YjN3bWl4VXVsSmlpd3J2VG5hOUlDN3F0ZnZ4Qzl1Qjh4VzQ4aVMyazdZUVhNQjJpMlovSzZ5bE9QakliZlJrb2dyUStodFF2SEZIbndZaXNua0padzVzYjcrSXAyR2d1SHFXakUwR3YwcnZ5a1VYc0N6ck5rOGRIMzlGV3F6NEd1S2FYQWhLT2lqa1hWRFlVandBRXVudndCeHJjWUQ1eHZ4d0tPcVZCaCsvNnVQeEdMalZsemJFaFBGcnhhYkJnTGJFbm9GQzJRdm5CRklQREpSWXIxUHJTd296QnJhRTlZeUtkdnRtZFhWTnc3UGxwdEdMN0FBd1RncGxaNUd6L3RWTGhKbUl0aGM4STVLNVNHVU0yMnBKMWoxeGVKSml0SnJ0QkRRU1FuNHVWNUp2d2hPRzc3cVlLdnM2a2prT2paUnFFRGQ1YUZRSlJ4ZWpjV3U1TWtJb1IwTzU5V1U0ZEZRbkI2SUM3VmFJSjkvRmVjZ1lyVGs4MmM3ejB3bUwrTkNmZkR2ZEhJUDVDY24yRkVsUEwxbnF6OWVZbVhsdmNYaXMzUitDZTFaZko5YTdSaGxUTTlOUVpzZnNGUTZvZEU0SXZEcUl3MWVXR2pLOW1UeSsvcFRNNzExMDF5OGlYQjAzclhZbE1TeWllRSs1aVpBVzhpMmw5NnNQSUJZMXRaK29YQXlmYnBwcVdsYnp5ajZBdHFIcldqUVI1ekluc3U5bldjeG1COW1Ec2ZBSkFYQ0RvMDBqVlQ2NGZCeU9uMmhvdHpFVXVtSi9GeXQxazNBd3ZFSjZmU1gxRmlZc0ZnV0NBUUNnVUFnRUFnRW00eXhLcXZwL0QvYlpoempJSlA1SXNJenl2SWJ6OUVIYzdrTE1wblBPMzY5bWtwOXJWeCtncUtrRmwxZXdoWGdSSmFYUDRUVDJ1ME04eU9SeUxXcDFGZU1VOXF6czI5Y1dYazdtSXQ4L3BWNGdVeHZ0MmMzcllSRE1DUVNsK0ZCUUJPQXVOVHJ5M0Z3ZnY1bEtoQ1dsei9JTzJob0lQaDAzWFViaSt4MzdUb3VFdG1ueGdZWTNsenVmU0JiRzQzYkZJdlB5ZVhlemNjTGhlY3l0MjVpNzk3LzB1L241bDZSVFA2MzhnT0VSbVpuejE1ZGZidWkvVDMxOFhqOForT3ZqMVM5QWdtOTMrcW9DV0d5bll2QnZIZnZOMjBITWRkNHVpbUxhdi96MHRKVDFTU3dtWjJMZVpyTmZnQy9nb0ZxYnFvQ2xpZncxcGs3RG9uRUQ5UHAveXlYSHd1cWV0KytMeUdnZ3FpSnJrVEM4WldwSWh6ZWp5bVd6NStKWGxoWmVSK25Tb0M0ZE0wVXpHUStYcTNlQngrdHJaMkxFUjRLdFFadFRCTUtsUkh4aFpCdk5tK0pjUUlCem9VdFFVVTV2MUtyM1hOMTlhMjJnMllxYWliek9mQ1N5aCtDNkFYb3BuVDZvbExwK0hMNU1kbnNSL0VVZzgrTmNCa1ZSQmJSaG1wc1RHT0srVUkyKy9GNi9jNVFJcVhTVS9EaUxHb2RxVTJsdnNGdkVFV2d5RWVHYnVsTUhkVEhDWWcwZ0lURmpJN0hmMlZ1VU1XQVNObTc5MnZtQUVEVDZZMnU2TS92eGVPUEF4OE5KaFF2ODB6RUZ6RlQxSGp3YnFKTUZwSElQekZ4RUt2QXZONjM3OHVzR25vZjdUVlRNS2VIWUZNTTAyRm01aDM1L01zeGVSSGc1SVBvdGJrNWZqOHQwOHY3WEtCZzU3M3dVaVJiT3AySWJsc0VDOGVwd2pJemMvN0t5czFJaVQ4ZEwxeTgzYzd5bzNHcUxnUFJLYlpNSUR3aHJrT2hKZ3M2QkhScC8rSStRTFpnZGlpS1lSUUt6NlA3end6UWR4RklUa1R2OE1JZ0NZWFc5ZmFJR0QrMjNSdW5JVCtuWjNwTnAzTjlOSmYzWHZDbEhPR2hJTkxEbWVzd2VaUFZvd0FBRUFCSlJFRlV5Y3pUWm1ZdU1EWmxteFlRQnVPcU5ocDAyKy90M2NOYllHbW9iWU1kTkJlVXBTYmUwMmpjRnNNUDk4eTNyYXk1Y01XbWJUSHB4MUJzNW5MdmdvNkRzTnEvLy9NWWlyWUNoeWJpOFY5QWFPTTZVTng0NFRvNEUrT2MzOWhPbm9hUDZXdUthY0Jzd0hOUmd1L3huQUEwQ05YcUEvbFM2ZlJYMU5qUVNTZTRUMDZBanNkL3FUK054NjgwVHc1ZzBXMlZpZUpMaTAwSEFXMEphQUZJZ0dyMXdiQWJWMWJld1FkblpzN2ptSG82L1I4WUljb1NNditPRnc5MU5jckg5TklMZmpzWDhYNGVzZnhuS3ZWdDUrOEdtd3ZlZ1F2Q2xsdGZQelVVcXVtRzVSVkVETXBMc0c0U1dnd3YzVnptblR1eFZZT1didmhIblBZQmRvV1BKSk9Yc293YXB5eTlMMEhuMFZDY0VxQ0RJQUE1K3hNdlYvKzZoeFlVSDVRamh0UEt5cnRaWmVoaGtNdTkwelJSZlBFU3JkYU5pOFdUOE1JQWkwYXZNU1ZHTnZzeHRZbklaRDZLNllPSFdsN2VHTldMaTgvZ0NvVitBZVhJcWJld050blBqY2N2VitvWmlnd1BzeEUyMDhVYnhOSDV1WUozTFRZVnNXeGlsSTg1ZGJDUDR3Um1CR2YzQmhETDRmQnlLblZScGZMSWV2M29mZnUrb0kvdjJUTml2Y1Q0MkhKR1VYbVduNUJhWERnV041eE1Yc0lmWVR4QWRlN2YveWxhaWZxYWhZVVg2MklUQVRCUmdiRDFkRWNBakZUNmloYjNWcXYzdzZlRndvdmdRb2JEYTFwOHdmSGhLdW5qWUxKaWVjdVpVb0ZBSUJBSUJBS0I0SWFHc1NvWFJpSmRqNElXYUU2bVBGc2tjdlhTMHBQUzZTOTZjWEdUeWUveEcwb2xITGl2SWdnZ2VQNkthbUQwMW10ZXZyajR6SEM0YUo1R0NWakg2MHFLY0xiWjBZTHJsVTUveWVSV0FxRXo0UDFZQUorMXVIZ1N2RHRkTGM4TnJhRS8ybmZjQTBuTlk2YnQrblhYNDBaT1h0L0ptY3luMERXSzlwMHhsb1RHMVFoRWU1ZHQwNzlPV3FGdC9OdEZJdkhqeGNXbmd4bm5yRmxFRG1abTNxWnBMTEFWYWd6MGltdnlENDJiNEtJeDZjNGRNVU9ONWNJN3JIT3oyWS9PemIyR05sZTFnTms5UDM4YXN4S1QyQ1orS2pPWDBIYThjZjEwZEM4b3lneVluMzhKRHhVSUxzMFZvaGV5MlErcU1jQmR6RDB5QktuVU55RzZ1ZE5wMDV4YjZob1MyZXlIVGZvcEd2MGJCclpPVFFPcmlHNWFXSGlCYTJmbGNoL1FOQkFFT002Wm1UazNsZnF5Y3VuY0VmbjBqbFd6bm5vem1GNUF6SkorTWFQM1NuTkZ0WHFmWHBCcFV0RUZyMVBNbDE3d0RqVEw0dUlwdWR5N3VIZlF2MGE2ejM5enpTRkZtL3N3dVR3N2U1WnRZNm1abWJmeTJFQWswcmI3R0FZU1Y0blE0VEdRKzNOelovYmZRbXQrL2dXNk1LbytFOStkbjMrcDIzTU5tbWp1OEdhaStOdmwyZU1VUThRSWxveHVXRDZJc05iaTRsUGQ2RjE5dFpiYmNlZkRlbmw4djFPc2kxVHFxM056WjJnUmJkd0dYWFJhcHBmWHVRQ0pGSS8vdVBmck4rVzJ4YTlEY3JMcEdCZ1l5VXRMVDAybnY2QXZ6bytHcHREUmJrV21MTVFhOXl4T2dLREQ2SnFkZlgwNi9Wbm5OUkhLbXA5L2NXL3JXR3RGRGFRdWhIL3ZjMU03RnhHRTZ3MlkzVWJpd3RjV0ZwNnZkeld5dGNZZzZNN2RIcWJYNUR2WFYzTjU3d1hsUnpuRzR6L1RtMVhwMHpDS2NLdTgvNllEbmFGL0JzQTBjaHo1bXEzK1A3cy8xQnRJVGVVZld6NFhCcXNQRnVsOUprb2s4azlZUHZoRjFoM29WdWlSMmRrMzllNndvb0xEcXhiemJpZ21reGZQelozTzc5RmNPQm5ERmEzdGR0WE8vUHpwWEtHRUw0dnJMeXljMWlzdjJpY1FQUHVZOXA4WStoVWZVOHdFMnduMSt0MmF6Y01HWHp2RUM4RE1paS9qSUJxOW1nY0d4Y3V0d1krd2JpSmh4YzRqa2IyT2hTamVMYm91UEpnb1BnYXRkL2pTWXY0eFJYTmRXZkhtMStaeTc4WFhqV1BkVnFMQi9Gdzl2SG5Lb0huaGRRNjVOMitHb3UvTzFTWTBMc3VqM1lsZ2M4RWpGaFpPeFNqRkJibGgyY0l4a3dCQVhNelAvN3ZlRzVxYkt4Ni9ZbUhoaFZ4VU5XaHorZk9JdlVQdmdBeGJoZC9FNHovcXZla2JNTDRzSDErQ3pxT2hPS1daU3dMOERMMjBnSjBtOENyYWpUSUJqbXR4OFJrOEhYUldPczI3cHpnWGpQbFJOOS9pNFlGMjA5bUhPRzF4OGRuOXM5SmZMd1JBS3ZXdHVibVh3eEtiU0tLVlR0VFRPZTd4K0crNHB4SUplM3FyVHhkUFk5akk5OG5SZVlVdkxUWU5zV3pEY0IrekI3TUZnbWVrRGYySmdTY0VFTXZ3bFhLNWQ4SnBHcHZKMU1aMm4rMDl4SDJZSHFPb0JvL0p2bHZ4SUQvYjdibTFOY3VKaTBhdkF1bGtmaGFOL21WbTVqeEYrMm1VU2s5UVkyQ2tRUEFsa2JhYzd1aS9KVS9zMEVpbFR3ZXZ3MEhXK3poVE85cHpjNjhZa0VQdlQxOVBWaXhQS1JnaEVBZ0VBb0ZBSUJBSUJpRzBaODlOYllkb0VlcXo5SitwMURkNFYwUlhySzYrdVZhN3R5SVhPaEpCbk8rWHZOcHZjMUFxUFpXTFh1emE5YSt1ZTVQbDg2K3VWQjRHaHhuME1meWpSdU93VGljWGpmNXgxRTRXa1ZiclJzM21UUkFRaWtUMlVVbi9pVkFWZ3UyQU1HS0hIT29ybFo1VUtKd0tiM2IzN29lUGM4SHJyLysyTG8rQkFJd1NiQkY0Y3haZVpVNjdMdDVydVBnNklORnU1MXF0US9GdkpMSS9ITDV1OHpkbTdYU1NyZFpOS1BxNDVoWlAxUWlCb29KTUJtOFZpNEZmYmwxLy9YY3dqM0s1OXpqcEtzb1l1Qm1rY1RUNjk2MWpmUHpwaFVMaCtWd0NjTmV1Snd5NjU1V1Y5OWZyZDZSSS8ydlVnWVpRdTczWWJCNktOK0d3MVZ6ajVIbnYzZnMxVUo4Z3ZyUFpqMkNBSVVBVkNqWEI1RHAzb0RNUWJUWVBhYlgyUkNML2pFYXZPWUNVT0NiT0hqeGFPTHdlamY1dHpPejViWWF0TkwxSWNOMFlnN2JUQ1VGd1FTNU50RzNEMUd0NHRHbzArazlYcVlnYm9NRHpJcnAxNUdhN2RQS2huYzVNTlBvNzIxb2F0NTgrdU5WYWdIVEY3K0xLVzdSYjk4Uk5MeC93MDdrK21zdFBMK2piR0swYzIrMFpqQmJjTFc0U3MwQjhrT0hZZ1hQQkN0RnhVTG5SdU4zeThrZndabW5waVRySmFSUGcyVkNNTmhxM3dOeUJrUmFKWE5OczNtTC8vazhycS9USWN4dzdZMGFhVGJUdGphUFJ2L1l5amJZQW51MVBSaGlORDNNaW5iNlF3OVZPMU90M1hWbXhZdHRMU3lkTUpBSHh3SVl2TFRaTlROeVc2QTV2Y2tQK3RpTUVzcys1TUF5VnlzTzV0TmhCQjkwWExqYXRIRHNZN2hodmVlbUtWdXNnL0RwTWRETFVEeVF6ZGFvWWJTaE9EelI1YjlucGhHT3hQd3oxclN5MDIzT1VsdFRHZEJpNVViVkhkWU94Mm03ak5RUHZobmJIM3RUSDN6WVFGKzlBeGdURjhpWmd5eG5GQXhmYmZTNEVVUHFLYWhtQXJjV0FvVFAzVG1kSm0wQWdFQWdFQW9GQUlOaGhjQzN6WUZ2Rk8yeWQwTXpNK2V2cjBWcnRHRERPdEdvMnNta0ppUERoZVZ1Y1JPSnlielIzeS9OV2VpMEVXbXhsbVFRSEN0cTYwRWl0ZG45RkJYTFVHQUFEcTFkcVpqSWZVNEt0Zzk3SUZkd0hiN2tZaVZ5dGJtQUFQeGdPWDZtMkRoUTQrYk90YUlFYk90N0ZMS1dNYkZsSXV3ZC9laUdUK1VTNS9CaHdkdlg2a2ZINHo1MG5OSnVIMXV0M1ZGYlpnL2VxQXhBZEVPdngrT1M1ZFF3d2I4dkVtOUhvVlhpcEF3MllPUCszcGFIOTZXRXJUUzhTWEg5VmFrb3BKdTFJNUo5NHFhRTM0SDI3WnpyNUQ5N094VTlmdlExVTRZUk5MMS93MDdrK21zdFBMK2piR0swY0VYaDIxT1FURE1RT25Bc2IxYXBxdFh2eW0rRlJ2WW5EczZIWWhGRHlKcGRhMGVnL05qT0gwaFdlN1U5R081ZTdZR1hsdlREVmNybDN1aGFockZRZW9XaURQOGsrOUFKZldteWFtTGd0c1MyR3R5LzRuQXMrRUlsY08zUm5CajduK2syV2FRY0VSaHVLMHdOTlhxL3NRVGk4NXVyWURqalprN3JaSHA3K2xrTmN2QU1aMHhQTDA4Q1dNNG9ITG5iWVhQQ2k5QldWY3UvVlByL2hJS1pVUXdrRUFvRkFJQkFJQklMQmlGNTMzZjhPUDZOYS9aZnJydnNYNVEyMTJyMUdYbkFjN05sekQ2cTZQOU5zM3JSVU9vR3J3ZXRkUzh5ZnBqUHRtT3E5Q2JZbmVDUlVLZzl2Tk82UVNuMkRIT01tWmE4K2piTi9NcG51L2xCK2h3ZGZ1VjYvRS8rWlRuOHhFcmxPeVREYlJIQVhGQXFuMGY1NkYwZWppQ3QzMnUybGZQNE1QaUdkdmtoSmoyeDdITmppZW1YbFBjTlAyTGZ2UzBvd0FLTEtCWUtkaU9tWlhnTEJ6Z0xQaFdiejVvWEM4MUtwaXhLSm4xQ3VXN2hhdlgreGVKS3k1c0pudU9MVXRwMExCN3dpdnY3Njd3MzV0RngrTEY1S0lMaUJRU3h3Z1VBZ0VBaHVJQkNsN3d1SnhPWHo4LyttQkFLQlFDQVFDQVFDd1dCRTFVNURvM0ViM3ErS2diaG1JdkVqSlJBTVJiczlVeTQvQmk5bExlaGM0ZFJWSUpuOGZpSnhtUm9EemVhaG9WQUpzY05zOWhOS3NCVm9OZytwMWU3RmNWeXpjMmRtM25aRDNjRkhJQkFJQklJdHh2Uk1MNEZnWjZIVFNkWnE5OFpMOWMrRlNPVGFUT2JqU2lBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQllPY2o2cnJPYVh1anUwTjBMUGFIUk9LU2JQYmorb2pic3pTTmY5VU9mRmpCWkJDTC9UNGUvM0c5ZnJTeUl1SlcyQzhhL1VjNi9abDArcXY2bkdERFkyYm1iWGlaUjJTWWJUSVNpY3ZhN2ZsRzQvYXExN254K0sreTJmZm9mVnFsUjNZVU92eWY5SnBBSXhSaUpTNWpReURZU1ppZTZTVVE3Q3lFdzh2SjVIZHJ0V002blF6UGhVaGtiekw1bld6MlEzcnozMjAvRnpybUc1bTVBc0VOQXkzekQ1bjRBb0ZBSUJBY3VCQ2w3eEV4SlJBSUJBS0JRQ0FRQ0lZaXRHZlBUWlZBY0VOQnVOM09kanJwU0dTL1Rrc1ZIQ2lJdE51em5VNGtFbG5XU2NtQ0hZUk9KMlpsbWxtcFp0SjlBb0ZBY01CQVRDK0JvQXRNaEhaN0poek82N3pESFlST0o2NHNRNjFoSkNNS0JBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQjBJUW1JQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDSHdqcWdRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJZkVJU0VBVUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJENGhpUWdDZ1FDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlQQU5TVUFVQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkE0QnVTZ0NnUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0hBTnlRQlVTQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GdlNBS2lRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUF0K1FCRVNCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0V2aUVKaUFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWg4UXhJUUJRS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRVBpR0pDQUtCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZzhBMUpRQlFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVRGdHNUtBS0JBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnY0EzWEJNUW8rWHlvL0JmSW5GNUpIS3RtalE2blhpNWZMeFNvVVRpdjZQUmZ5aEJEOVhxQXp1ZFJDaFVUeVl2NWlQMStwMWFyWU9WMVJlWGhNTUZGUWpUdUd5bmt5eVhuNGczeWVSM0k1RnJmSDIzV24xQXV6MGZqZjQ1SHYrbEdnT2RUcXBjZm9LaXA0aEdyL0wreFZaclQ2MTJMN3hKcGY0ckZLcXBMVUM0M2M2RXcwVTh4TWhURzQwakdvMWJoOFBydXZzRWdiR0RwdGhtb3QzT2hzTWxMNk1SMGh1ak54U3FPajhxbHgvZDZjeEdvMzlNSlA1WGJROTBPbW1hNEMyMVJSalNYSDR1RWxEUWJYK01NV2JDMUxsRnRVV0FqZFRwek1WaVY4YmpQd0VGc2I4QUFCQUFTVVJCVkZWYmlucjlibzNHSGNMaDFWVHFxMnJLYURadlZxazgwandTajEreGZlYjdjSFE2TWFVaUhpZWp0NWtid2R6Y3drRzRWVURqRkl2UFJ2dm9JNUhJZGVuMEY1VmdoNkRWdWpHRVJxdDFFTHBPV1pwbEcvbGlXdC9CbW9wRS91bm5xMkV5d3lycXdFV2w4b2gyZXpFVysyMDgvaFBsSCtQWUV0dDV6SXlEZGp2WGFOeTUyYndSUmh6K0ROeTIzbEdySGROczNpWWMzcHRLZlVOdEJack5tOVpxL3cvRElaMytiQ2pVR0g0eUcybXgySy9pOFo4cndiU1VmclRkVGhJbnNMVUkwOU9WbE1BYkp1TGk3U3pVYXZlczErOXFIa21sdmlKYzdyYkZsTlJOdlg1VW8zSDdjSGdaUEtxdkwzWTZtVkNvN0kxdXl1QjNSbW9vL3pqd0RjVkpJMUt2MzZYWlBLVFR5ZUdQY0hnbGxicG93SmxSYXR1dDBpQWhvdFl4dXRvalQwVVVBK2R2K1REWVVydmFSM09OeEthd1F6NUNKd2NrSm10dndCbWtnYWZSem1ZL01BVjVPeENzbTBLaDlYVDZRblhBWXJvaDlhMERYS0hZbHB1K3ZuaGR3UUdLQTlpaUMwMUoyVkhZZHpLcVh6QW14dVIxYnpBSTNXQU52d01TTGdtSW9FSFgxMStLTjNOenI1aE9BbUt5VUhpdXNtS1dmOXVHcEJYcyszWjdIdjlISW52VjVpS2ZQNE1JRjdWblR6ZU5xVngrWExYNkwzaXp1UGowd0dsTUFTN2I2V1RoNW9WQzlYQjQxZldhblU2NlVEZ0ZiNkxSUC90TlFDeVZudFpvM0FiaDZqRVRFS0UrK1I0UXBQUVZTMnMyYjhFalBKbjgvbVltSU1KQ2dyK0hsc2ZqOHhITXIwVGloM0RSaDNqcDFlcDlTcVduWXFaczh3UkV6QnJNblhDNHRKMFRNclo4aWpVYWg3UDBHNFJjN3IyeDJKVXFLQkJaWEY4L25kL1B6cDRUaVZ3LzZFeTRiZVh5NCt2MU8rUEZONDlKQklZNmxmb2E2RVhieVkzR2JVRXRnU2Jqb1F0NkViNTBLdlhWUk9MSCtweFM2U210MXNIZ0VZWU01bkw1c2RYcUErZ3gzdzFqeS9GNU9KOS9kYXUxRzg4eFAzODZYTXBtODFicjZ5OGFkRFVFUkxQWkR6bVA0eWRxdGZ2VTYwZHdEaWdrZVNMeC9YUWFNWksvcWszQnlPWXFGRTVyTkc2TjNrRWYyYjRMV3I5WVBKRnV1L3VwZDBGWHE5MjdWSHFTZVFTVE1SckZ0LzZRVEg0M01LODB6cUFGdlpYUHY0cHpsZWJtenJCTk1TOWp4Z1FHYXFsMFFyMStKTmh3UGhLUC95eWQvczlrOG52Nm5HcjFmcHhqNFFUYVA1UDV1T053ZUdYbDdXWTJGV04rL3QrSDBPamw4cE14MXpLWlQzbEpRS3pWN29FblZWWVAvdC9zN092VVJFRVhmekpOM3FrbklJSXJ4Mi8xSDJzTzZydTF0ZGVSS2VXT1JPSkhtY3duMVBUUmJONjhYSDRNVGNiYks1SUdvTVV6bVUrN1NnTVBnaTRNZ1ZtcFBCZ2prTVVMem9uRi9wSk9mdzdtaFBhT0lGM1gxczRqaGJnNk4zZW1MUWNhTXpxZmZ5MCtkVXFBa2FaWHBmSlFPS3VLN1BOd09HOStoTGtHNFE4ekF3ODlOM2ZPK3ZxL29mMWRoWXd5eGlRWTUwNG5CUnVEM244WUU4cDU4dHJhRzlydFdUMTY4UlA4WFEwSWM5Y0VSRndXRkRQdVoySGh0UDdIaksydVhxQXNHK3g3bUwvS0QzclhSQXU4UEJ4ZXQzMEs5WkhQbjBsWC91OTAraitVSDZCRDgvbFh1SDZFcGthRDZ6OGRRcVlkaWV5RGZJN0ZmbVhxeEhFQUxRWjFTVCs5amllMWZjcVR5MHZuT3MxczZJaEM0VlR6U0NSeWxWOWZEQTJGNXNKQW5adDdsVk5PZ2t4Wld6c0w5eDZOL21WbTVtM0tqMWh1dDNNOTUrSjNIaE1ReStWSDEycjNnOGFIZ29Ba2hHR1F5WHdNUGNLZjF1dDNMWlc2UDUzTHZkODI4UnVOMjdIQ1RhZS9ERkhtZCtZNmxTTjhpbWowNzNCdlU2bnZhbU00c0VDd29WUjZZck41eTB6bWN3WlJGVmxadWNDcHYzbzNVNW1mZjZuNVE4R2NwaUZqQnNkWldyb2FuT3ZyLzk1c0hxcXMyZnJLY0hqTitDUmFxVHdRdmRicFlKQmNrOHU5VTQwQmlFUUl4dUhub0IyY0REWEd4dXJxbTlnQVp1aTJKVC94SlVNdjJWNVllRkc3UFpmUC96di9uVXA5eXpSRkZHVjg1dk92d1RQRzQ3K0d0Y0FIYTdYN1FpVkJaazRxSTZUZFhscGJPMXRaUXU5LzB1a3ZPRThvbFo1ZXF4MnRlallZSG8ySFFTcDE0VWl6a0kwMHpOQ3RTa0FzRnA5cFMzaUNTSXhFL2c3SkJ1MDhKaU5acVR6RUZqVlhMbHJKazlMM0M0eWNTdVc0ZXYyT0VFSHQ5Z0pmRnFJRG1qU1YrcllaR05EeWZHYm1QSnhnWGdSYUhnSUJUTUxzN0JzY3Z4QmVYWDBMMlFNWTFaOEcxVEQ0VG5MbDh2SDErdUd3ZkNnOXFJVGhtazUvSGtiYXRBbGZQWFFIQWJObXFrdGNodmhpYlBiRVlyL081ZDVuKzhpTFI3eUQ0TXZSeGx5d2VRR3dxRjN0QitqbGF2VkJhakJjWmZLVVVLL2ZDZE9Ock92MjdPelo0MFNzYVZxbDlKK3dnaUtScTZQUnE1UEo3d3l5MjlVb2kwN3I4VVRpa2t6bTg3YlAwT0M4YWpxUnVCUWFTdm5CeE5VTm8xcTlOeXc2TU1BZUV4QXh5NHJGNTdDc0l3a0RVeG5hNml2S2ZyZjNwQXpYdThCeDR5UGtzdjBvbS8yWXpScjBhSHFaR0c0b0JnQWNMdkFBeGdFNEF0Y1RyL3VUY1hnOGoraWZ0czFvOUZxb1JZeERQSmR6V3JHZzQvZHdaNkxSdjBVaS80akYvamlTRm9OTHRicjZWbWdaZllUWWhyNEVSSWp4WXZFWjlmcmRkR3ZFWW45SUpDNkRmc1FJVVpNemdGMEJlNlpTT1JZVFJOOGtEY3R2UVpQYUdINmNVS2s4cU5HNFU2TnhHRnQ5WUR0eHEyVGVCSXhIZURRVVhSZENUOFFYOHd2dnplVUxudG1oUG9jRlBVNXo5aDh3T2NMaC9hNVg5aGc2MGR5SUsyRFBKSk9YS0QrQUlPTFVNV1Y1TjY4MTE0YzBHa2NVaTEwT1pHYm03VTVIMWJ1NkdVbmFROWVBMmtXWGdjSmlRNUVHN1pYWjdFY3dkSTI3UGNZWGphT3NGbnVZYmxJR3hDd2VUbTBXUU5TWHkvK0szaHlTZ09qWHV6RS9ncHVEbmxLV2lmSVRlclF0d0xSRDZwc01TSEk0SXpCbVdIcVFHdjBWdUZ6bkZMQ1pTU1l3SThhTXNIdmhkVDBMQk44U2FScllXbHRpR21DU0VKWW40bjJEemxsZmYzR3plUmg0UXBoaEFYaGRYeGFkaDhTRytPcnErV29vRUlnSFZjanZweGZqd0VoQUVCbXVGbVlaaER5ZUM2SVBvbHVOaXpCbURhUWxHQlVkOWtWd0VDcERDVGJnVHlDTUwraHN2SzVmZHQxNS8ydHJaK0kwTlNBRU1GbU1FNHp3Z2s0bkRjTVNJeFkyRlR1RHFkVFhwdjFRak1CT2szY01OeFM5eC92QzRXWDkwUVREaU9abEp3c1E3N0lGc3gyWUxXdHI1K0xON3QwUGRtckJHd2lLeFdlVlNzZkRLVjFhZXFvU1RBS3QxcTZWbFE5UmNwVjU4T0J5K2ZGNDdkbHpEN1hEc2JMeWJyZ0VtY3hueGd3bEh0aUEvNjl6cHdhZG9NWUFlQXA5ZllneWJTZzdmbVZoYmUzMTBIem1RWFJmb2ZBOEVKZTJ2STFLNWVHVVE3WUJXSzRnZy9EeU8yN0JGckVyRHIyK3NIQ0tMYmhWcmQ0ZjRVQmx4WncreVdxNDNaNFowbHhPK1F6ZnVGQjRJU2FVZVJDVER1eFZ1NzNiamZTZlBMdzBGOEpYWkV2WnlRaHdKU3NyNzFBVTBKcVplWlB5Q1FnWlozUFZpRkZFczh6UG54N01qeDFuME1LOUJDdmQreXV1eGdENFRSajZPaXpCd0kxUjVkSHZHVGV6YTlEZER2QUVRc1lkYm9BV2Q2cnhBVnNRNDRGNXc1MWVKZ1NXOTl6Y2EvaDlQbis2bWJmaEJKeG5mbXBYRE1tTm5pQWdVdGJXM21nZWdUUUE2NG9YYkJzT2pXaDRtYmxnUzIzQkJweFRyOThSTDRSYjV1ZlA0REJES05TSXhYNVpMSjVNWC9tSkxjeFdLajJ6UjdYWTA5MUdtbDZ0MW8xNGVOTlMrQTNBMjF4ZGZRY1RXTVRnd0cxbzhwbTUzRHY2VTMrNkxjT2ZndFNBODh6dmE3VS9PcGxyekx0cTlmOHBpN0RyY3NUaGNGa1BBeEJBUTRRRFp1dUFUOE44M05ZRlhnQi9pYjhMRWVxTUtPQWovblNRN2hzQytHeURuc1hHQWd3Uk1tQmpaMmRmTS83d2huK29md0xONkVnWDg5cTV0bythelVNNTRrVTVFNWRGSXRjcHF4ZXVWajRCVm5SdHpVcmNRUWpOdVF5QWc1R0tFbC80aUgreDdCRmhxRFpNR2YwMzJnb3ZHRUlMQ3krSVJLem53cFJCREo0L2hYa3pOM2VXK1gyRU4vaFR6aDN4TzNOZGxTTk1MMFU2ZDNiMjlTQk0xUmdDWVNRNm5iQ3IvcG9naG8rWlJPSVNYdlpRS0R6WDFyWVVYbnFNc2liakYvVW83WFNTTVBOS3BXZG9iNmpkL29NYUQ1QlJ3MDBVK3Qyb1RhRkR4Vk4yWUlhZTR2Sm8xTG9Oek4vZVhXVkhYcE11a3RhanE5bThiU0p4cVpuU0J5bU55YWlzcHB2aVFuUEVJNXZObTBIYmdnZDBEZEZCYmFHMVlYQnUvM0xzVGlCZTd0b1JwWktWK0Q0Ly94S25BUFNPVm11UDgrS3djOHcvUFNwOS96OTlpQzJCQnBkRk9BMkJsa3JsVWZQenArcUJCT1hlVS9wWjIwVXc1SEFiMGVpUzgvcU54dTFZRUNscmhLd09Ta0NFdEZ4ZGZUTW5WdXJiZ0RqQ2EyYm1MWDZYQi9nRnBNSHdXVGJ0S3FHRGZERmxpYStqS1IzVG5zb3pRWTk0bThDWG80MElIRStRZG5zTy9wMGFEQXlxNFozcmxNbFRRSWhDSUUvSE5OR0habWJlTU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment