@librechat/client 0.4.3 → 0.4.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +291 -244
- package/dist/index.js +289 -241
- package/dist/types/components/OriginalDialog.d.ts.map +1 -1
- package/dist/types/components/Radio.d.ts.map +1 -1
- package/dist/types/components/SecretInput.d.ts +12 -0
- package/dist/types/components/SecretInput.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +2 -1
- package/dist/types/components/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { forwardRef, useRef, useEffect, useMemo, useState,
|
|
3
|
+
import React__default, { forwardRef, useRef, useEffect, useMemo, useState, useCallback, useLayoutEffect, memo, startTransition, createContext, useContext } from 'react';
|
|
4
4
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
5
5
|
import { ChevronDownIcon, CaretSortIcon, ChevronUpIcon, CheckIcon as CheckIcon$1 } from '@radix-ui/react-icons';
|
|
6
6
|
import { clsx } from 'clsx';
|
|
@@ -9,7 +9,7 @@ import * as Ariakit from '@ariakit/react';
|
|
|
9
9
|
import { ComboboxProvider, Combobox, ComboboxCancel, ComboboxList, ComboboxItem, SelectProvider, SelectLabel as SelectLabel$1, Select as Select$2, SelectArrow, SelectPopover, SelectItemCheck, SelectItem as SelectItem$1, useCheckboxStore, useStoreState, Checkbox as Checkbox$1 } from '@ariakit/react';
|
|
10
10
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
11
11
|
import { Slot } from '@radix-ui/react-slot';
|
|
12
|
-
import { ChevronRight, MoreHorizontal, Check, X, CheckIcon, CircleIcon, ChevronRightIcon, ChevronLeft, Minus, Search, GripVertical, Plus, Sun, Moon, Monitor, CircleHelpIcon as CircleHelpIcon$1, ChevronDown } from 'lucide-react';
|
|
12
|
+
import { ChevronRight, MoreHorizontal, Check, X, CheckIcon, CircleIcon, ChevronRightIcon, Copy, EyeOff, Eye, ChevronLeft, Minus, Search, GripVertical, Plus, Sun, Moon, Monitor, CircleHelpIcon as CircleHelpIcon$1, ChevronDown } from 'lucide-react';
|
|
13
13
|
import { cva } from 'class-variance-authority';
|
|
14
14
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
15
15
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
@@ -34,9 +34,9 @@ import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
|
34
34
|
import { OTPInput, OTPInputContext } from 'input-otp';
|
|
35
35
|
import * as ResizablePrimitive from 'react-resizable-panels';
|
|
36
36
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
37
|
+
import * as Select$1 from '@ariakit/react/select';
|
|
37
38
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
38
39
|
import { flexRender, useReactTable, getFilteredRowModel, getSortedRowModel, getCoreRowModel } from '@tanstack/react-table';
|
|
39
|
-
import * as Select$1 from '@ariakit/react/select';
|
|
40
40
|
import { useSprings, animated } from '@react-spring/web';
|
|
41
41
|
import { atomWithStorage } from 'jotai/utils';
|
|
42
42
|
import { Listbox, ListboxButton, Label as Label$1, Transition, ListboxOptions, ListboxOption } from '@headlessui/react';
|
|
@@ -532,7 +532,7 @@ function DropdownMenuTrigger({ ...props }) {
|
|
|
532
532
|
return jsx(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
533
533
|
}
|
|
534
534
|
function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
|
|
535
|
-
return (jsx(DropdownMenuPrimitive.Portal, { children: jsx(DropdownMenuPrimitive.Content, { "data-slot": "dropdown-menu-content", sideOffset: sideOffset, className: cn('text-popover-foreground max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) z-
|
|
535
|
+
return (jsx(DropdownMenuPrimitive.Portal, { children: jsx(DropdownMenuPrimitive.Content, { "data-slot": "dropdown-menu-content", sideOffset: sideOffset, className: cn('text-popover-foreground max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) z-40 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-border-light bg-surface-secondary p-1 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', className), ...props }) }));
|
|
536
536
|
}
|
|
537
537
|
function DropdownMenuGroup({ ...props }) {
|
|
538
538
|
return jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
@@ -565,7 +565,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
|
565
565
|
return (jsxs(DropdownMenuPrimitive.SubTrigger, { "data-slot": "dropdown-menu-sub-trigger", "data-inset": inset, className: cn('outline-hidden flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[inset]:pl-8 data-[state=open]:text-accent-foreground', className), ...props, children: [children, jsx(ChevronRightIcon, { className: "ml-auto size-4" })] }));
|
|
566
566
|
}
|
|
567
567
|
function DropdownMenuSubContent({ className, ...props }) {
|
|
568
|
-
return (jsx(DropdownMenuPrimitive.SubContent, { "data-slot": "dropdown-menu-sub-content", className: cn('text-popover-foreground origin-(--radix-dropdown-menu-content-transform-origin) z-
|
|
568
|
+
return (jsx(DropdownMenuPrimitive.SubContent, { "data-slot": "dropdown-menu-sub-content", className: cn('text-popover-foreground origin-(--radix-dropdown-menu-content-transform-origin) z-40 min-w-[8rem] overflow-hidden rounded-md border border-border-medium bg-surface-secondary p-1 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', className), ...props }));
|
|
569
569
|
}
|
|
570
570
|
|
|
571
571
|
const HoverCard = HoverCardPrimitive.Root;
|
|
@@ -592,6 +592,40 @@ const InputNumber = React.forwardRef(({ className, ...props }, ref) => {
|
|
|
592
592
|
});
|
|
593
593
|
InputNumber.displayName = 'Input';
|
|
594
594
|
|
|
595
|
+
const SecretInput = React.forwardRef(({ className, showCopy = false, onCopy, copyFeedbackDuration = 2000, disabled, value, ...props }, ref) => {
|
|
596
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
597
|
+
const [isCopied, setIsCopied] = useState(false);
|
|
598
|
+
const toggleVisibility = useCallback(() => {
|
|
599
|
+
setIsVisible((prev) => !prev);
|
|
600
|
+
}, []);
|
|
601
|
+
const handleCopy = useCallback(async () => {
|
|
602
|
+
if (isCopied || disabled) {
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
const textToCopy = typeof value === 'string' ? value : '';
|
|
606
|
+
if (!textToCopy) {
|
|
607
|
+
return;
|
|
608
|
+
}
|
|
609
|
+
try {
|
|
610
|
+
await navigator.clipboard.writeText(textToCopy);
|
|
611
|
+
setIsCopied(true);
|
|
612
|
+
onCopy?.();
|
|
613
|
+
setTimeout(() => {
|
|
614
|
+
setIsCopied(false);
|
|
615
|
+
}, copyFeedbackDuration);
|
|
616
|
+
}
|
|
617
|
+
catch (err) {
|
|
618
|
+
console.error('Failed to copy:', err);
|
|
619
|
+
}
|
|
620
|
+
}, [value, isCopied, disabled, onCopy, copyFeedbackDuration]);
|
|
621
|
+
return (jsxs("div", { className: "relative flex items-center", children: [jsx("input", { type: isVisible ? 'text' : 'password', className: cn('flex h-10 w-full rounded-lg border border-input bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', showCopy ? 'pr-20' : 'pr-10', className ?? ''), ref: ref, disabled: disabled, value: value, autoComplete: "off", spellCheck: false, ...props }), jsxs("div", { className: "absolute right-1 flex items-center gap-0.5", children: [showCopy && (jsx("button", { type: "button", onClick: handleCopy, disabled: disabled || !value, className: cn('flex size-8 items-center justify-center rounded-md text-text-secondary transition-colors', disabled || !value
|
|
622
|
+
? 'cursor-not-allowed opacity-50'
|
|
623
|
+
: 'hover:bg-surface-hover hover:text-text-primary'), "aria-label": isCopied ? 'Copied' : 'Copy to clipboard', children: isCopied ? jsx(Check, { className: "size-4" }) : jsx(Copy, { className: "size-4" }) })), jsx("button", { type: "button", onClick: toggleVisibility, disabled: disabled, className: cn('flex size-8 items-center justify-center rounded-md text-text-secondary transition-colors', disabled
|
|
624
|
+
? 'cursor-not-allowed opacity-50'
|
|
625
|
+
: 'hover:bg-surface-hover hover:text-text-primary'), "aria-label": isVisible ? 'Hide password' : 'Show password', children: isVisible ? jsx(EyeOff, { className: "size-4" }) : jsx(Eye, { className: "size-4" }) })] })] }));
|
|
626
|
+
});
|
|
627
|
+
SecretInput.displayName = 'SecretInput';
|
|
628
|
+
|
|
595
629
|
/**
|
|
596
630
|
* A standardized filter/search input component with a floating label
|
|
597
631
|
* that animates up when focused or has a value.
|
|
@@ -605,7 +639,7 @@ InputNumber.displayName = 'Input';
|
|
|
605
639
|
* />
|
|
606
640
|
*/
|
|
607
641
|
const FilterInput = React.forwardRef(({ className, label, inputId, containerClassName, ...props }, ref) => {
|
|
608
|
-
return (jsxs("div", { className: cn('relative', containerClassName), children: [jsx("input", { id: inputId, ref: ref, placeholder: " ", "aria-label": label, className: cn('peer flex h-10 w-full rounded-lg border border-
|
|
642
|
+
return (jsxs("div", { className: cn('relative', containerClassName), children: [jsx("input", { id: inputId, ref: ref, placeholder: " ", "aria-label": label, className: cn('peer flex h-10 w-full rounded-lg border border-border-light bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', className), ...props }), jsx("label", { htmlFor: inputId, className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-text-secondary transition-all duration-200 peer-focus:top-0 peer-focus:bg-background peer-focus:px-1 peer-focus:text-xs peer-[:not(:placeholder-shown)]:top-0 peer-[:not(:placeholder-shown)]:bg-background peer-[:not(:placeholder-shown)]:px-1 peer-[:not(:placeholder-shown)]:text-xs", children: label })] }));
|
|
609
643
|
});
|
|
610
644
|
FilterInput.displayName = 'FilterInput';
|
|
611
645
|
|
|
@@ -649,26 +683,28 @@ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
|
649
683
|
const DialogContent = React.forwardRef(({ className, overlayClassName, showCloseButton = true, children, style, onEscapeKeyDown: propsOnEscapeKeyDown, ...props }, ref) => {
|
|
650
684
|
const depth = React.useContext(DialogDepthContext);
|
|
651
685
|
const contentZIndex = 100 + (depth - 1) * 60;
|
|
652
|
-
/* Handle Escape key to prevent closing dialog if a tooltip or dropdown
|
|
686
|
+
/* Handle Escape key to prevent closing dialog if a tooltip or dropdown has focus
|
|
653
687
|
(this is a workaround in order to achieve WCAG compliance which requires
|
|
654
688
|
that our tooltips be dismissable with Escape key) */
|
|
655
689
|
const handleEscapeKeyDown = React.useCallback((event) => {
|
|
656
|
-
const
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
690
|
+
const activeElement = document.activeElement;
|
|
691
|
+
// Check if active element is a trigger with an open popover (aria-expanded="true")
|
|
692
|
+
if (activeElement?.getAttribute('aria-expanded') === 'true') {
|
|
693
|
+
event.preventDefault();
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
696
|
+
// Check if a dropdown menu, listbox, or combobox has focus (focus is within it)
|
|
697
|
+
const popoverElements = document.querySelectorAll('[role="menu"], [role="listbox"], [role="combobox"]');
|
|
698
|
+
for (const popover of popoverElements) {
|
|
699
|
+
if (popover.contains(activeElement)) {
|
|
663
700
|
event.preventDefault();
|
|
664
701
|
return;
|
|
665
702
|
}
|
|
666
703
|
}
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
parseFloat(computedStyle.opacity) > 0) {
|
|
704
|
+
// Check if a tooltip has focus (focus is within it)
|
|
705
|
+
const tooltips = document.querySelectorAll('.tooltip');
|
|
706
|
+
for (const tooltip of tooltips) {
|
|
707
|
+
if (tooltip.contains(activeElement)) {
|
|
672
708
|
event.preventDefault();
|
|
673
709
|
return;
|
|
674
710
|
}
|
|
@@ -987,7 +1023,7 @@ const SelectScrollUpButton = React.forwardRef(({ className = '', ...props }, ref
|
|
|
987
1023
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
988
1024
|
const SelectScrollDownButton = React.forwardRef(({ className = '', ...props }, ref) => (jsx(SelectPrimitive.ScrollDownButton, { ref: ref, className: cn('flex cursor-default items-center justify-center py-1 dark:text-white', className), ...props, children: jsx(ChevronDownIcon, {}) })));
|
|
989
1025
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
990
|
-
const SelectContent = React.forwardRef(({ className = '', children, position = 'popper', ...props }, ref) => (jsx(SelectPrimitive.Portal, { children: jsxs(SelectPrimitive.Content, { ref: ref, className: cn('bg-popover text-popover-foreground relative z-
|
|
1026
|
+
const SelectContent = React.forwardRef(({ className = '', children, position = 'popper', ...props }, ref) => (jsx(SelectPrimitive.Portal, { children: jsxs(SelectPrimitive.Content, { ref: ref, className: cn('bg-popover text-popover-foreground relative z-40 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-600', position === 'popper'
|
|
991
1027
|
? 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1'
|
|
992
1028
|
: '', className), position: position, ...props, children: [jsx(SelectScrollUpButton, {}), jsx(SelectPrimitive.Viewport, { className: cn('p-1', position === 'popper'
|
|
993
1029
|
? 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'
|
|
@@ -1000,12 +1036,93 @@ SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
|
1000
1036
|
const SelectSeparator = React.forwardRef(({ className = '', ...props }, ref) => (jsx(SelectPrimitive.Separator, { ref: ref, className: cn('-mx-1 my-1 h-px bg-muted', className), ...props })));
|
|
1001
1037
|
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
1002
1038
|
|
|
1003
|
-
const
|
|
1004
|
-
const isSearching = searching === true;
|
|
1005
|
-
const hasValue = value != null && value.length > 0;
|
|
1039
|
+
const Radio = memo(function Radio({ options, value, onChange, disabled = false, className = '', fullWidth = false, }) {
|
|
1006
1040
|
const localize = useLocalize();
|
|
1007
|
-
|
|
1008
|
-
|
|
1041
|
+
const buttonRefs = useRef([]);
|
|
1042
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
1043
|
+
const [currentValue, setCurrentValue] = useState(value ?? '');
|
|
1044
|
+
const [backgroundStyle, setBackgroundStyle] = useState({});
|
|
1045
|
+
const handleChange = (newValue) => {
|
|
1046
|
+
setCurrentValue(newValue);
|
|
1047
|
+
onChange?.(newValue);
|
|
1048
|
+
};
|
|
1049
|
+
const updateBackgroundStyle = useCallback(() => {
|
|
1050
|
+
const selectedIndex = options.findIndex((opt) => opt.value === currentValue);
|
|
1051
|
+
if (selectedIndex >= 0 && buttonRefs.current[selectedIndex]) {
|
|
1052
|
+
const selectedButton = buttonRefs.current[selectedIndex];
|
|
1053
|
+
const container = selectedButton?.parentElement;
|
|
1054
|
+
if (selectedButton && container) {
|
|
1055
|
+
const containerRect = container.getBoundingClientRect();
|
|
1056
|
+
const buttonRect = selectedButton.getBoundingClientRect();
|
|
1057
|
+
const offsetLeft = buttonRect.left - containerRect.left - 4;
|
|
1058
|
+
setBackgroundStyle({
|
|
1059
|
+
width: `${buttonRect.width}px`,
|
|
1060
|
+
transform: `translateX(${offsetLeft}px)`,
|
|
1061
|
+
});
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
}, [currentValue, options]);
|
|
1065
|
+
// Mark as mounted after dialog animations settle
|
|
1066
|
+
// Timeout ensures we wait for CSS transitions to complete
|
|
1067
|
+
useEffect(() => {
|
|
1068
|
+
const timeout = setTimeout(() => {
|
|
1069
|
+
setIsMounted(true);
|
|
1070
|
+
}, 50);
|
|
1071
|
+
return () => clearTimeout(timeout);
|
|
1072
|
+
}, []);
|
|
1073
|
+
useLayoutEffect(() => {
|
|
1074
|
+
if (isMounted) {
|
|
1075
|
+
updateBackgroundStyle();
|
|
1076
|
+
}
|
|
1077
|
+
}, [isMounted, updateBackgroundStyle]);
|
|
1078
|
+
useLayoutEffect(() => {
|
|
1079
|
+
if (value !== undefined) {
|
|
1080
|
+
setCurrentValue(value);
|
|
1081
|
+
}
|
|
1082
|
+
}, [value]);
|
|
1083
|
+
if (options.length === 0) {
|
|
1084
|
+
return (jsx("div", { className: "relative inline-flex items-center rounded-lg bg-muted p-1 opacity-50", role: "radiogroup", children: jsx("span", { className: "px-4 py-2 text-xs text-muted-foreground", children: localize('com_ui_no_options') }) }));
|
|
1085
|
+
}
|
|
1086
|
+
const selectedIndex = options.findIndex((opt) => opt.value === currentValue);
|
|
1087
|
+
return (jsxs("div", { className: `relative ${fullWidth ? 'flex' : 'inline-flex'} items-center rounded-lg bg-muted p-1 ${className}`, role: "radiogroup", children: [selectedIndex >= 0 && isMounted && (jsx("div", { className: "pointer-events-none absolute inset-y-1 rounded-md border border-border/50 bg-background shadow-sm transition-all duration-300 ease-out", style: backgroundStyle })), options.map((option, index) => (jsxs("button", { ref: (el) => {
|
|
1088
|
+
buttonRefs.current[index] = el;
|
|
1089
|
+
}, type: "button", role: "radio", "aria-checked": currentValue === option.value, onClick: () => handleChange(option.value), disabled: disabled, className: `relative z-10 flex h-[34px] items-center justify-center gap-2 rounded-md px-4 text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${currentValue === option.value ? 'text-foreground' : 'text-foreground'} ${disabled ? 'cursor-not-allowed opacity-50' : ''} ${fullWidth ? 'flex-1' : ''}`, children: [option.icon && (jsx("span", { className: "flex-shrink-0", "aria-hidden": "true", children: option.icon })), jsx("span", { className: "whitespace-nowrap", children: option.label })] }, option.value)))] }));
|
|
1090
|
+
});
|
|
1091
|
+
|
|
1092
|
+
function Badge({ icon: Icon, label, id, isActive = false, isEditing = false, isDragging = false, isAvailable = true, isInChat = false, onBadgeAction, onToggle, className, ...props }) {
|
|
1093
|
+
const isMoveable = isEditing && isAvailable;
|
|
1094
|
+
const isDisabled = id === '1' && isInChat;
|
|
1095
|
+
const handleClick = (e) => {
|
|
1096
|
+
if (isDisabled) {
|
|
1097
|
+
e.preventDefault();
|
|
1098
|
+
e.stopPropagation();
|
|
1099
|
+
return;
|
|
1100
|
+
}
|
|
1101
|
+
if (!isEditing && onToggle) {
|
|
1102
|
+
e.preventDefault();
|
|
1103
|
+
e.stopPropagation();
|
|
1104
|
+
onToggle();
|
|
1105
|
+
}
|
|
1106
|
+
};
|
|
1107
|
+
const getWhileTapScale = () => {
|
|
1108
|
+
if (isDragging) {
|
|
1109
|
+
return 1.1;
|
|
1110
|
+
}
|
|
1111
|
+
if (isDisabled) {
|
|
1112
|
+
return 1;
|
|
1113
|
+
}
|
|
1114
|
+
return 0.97;
|
|
1115
|
+
};
|
|
1116
|
+
return (jsxs(motion.button, { onClick: handleClick, className: cn('group relative inline-flex items-center gap-1.5 rounded-full px-4 py-1.5', 'border border-border-medium text-sm font-medium transition-shadow', '@container-[600px]:w-full size-9 p-2', isActive
|
|
1117
|
+
? 'bg-surface-active shadow-md'
|
|
1118
|
+
: 'bg-surface-chat shadow-sm hover:bg-surface-hover hover:shadow-md', 'active:scale-95 active:shadow-inner', isMoveable && 'cursor-move', isDisabled && 'cursor-not-allowed opacity-50 hover:shadow-sm', className), animate: {
|
|
1119
|
+
scale: isDragging ? 1.1 : 1,
|
|
1120
|
+
boxShadow: isDragging ? '0 10px 25px rgba(0,0,0,0.1)' : undefined,
|
|
1121
|
+
}, whileTap: { scale: getWhileTapScale() }, transition: { type: 'tween', duration: 0.1, ease: 'easeOut' }, ...props, children: [Icon && (jsx(Icon, { className: cn('@container-[600px]:h-4 @container-[600px]:w-4 relative h-5 w-5', !label && 'mx-auto'), "aria-hidden": "true" })), jsx("span", { className: "@container-[600px]:inline relative hidden", children: label }), isEditing && !isDragging && (jsx(motion.button, { className: "@container-[600px]:h-5 @container-[600px]:w-5 absolute -right-1 -top-1 flex h-6 w-6 items-center justify-center rounded-full bg-surface-secondary-alt text-text-primary shadow-sm", initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, whileTap: { scale: 0.9 }, onMouseDown: (e) => e.stopPropagation(), onClick: (e) => {
|
|
1122
|
+
e.stopPropagation();
|
|
1123
|
+
onBadgeAction?.();
|
|
1124
|
+
}, children: isAvailable ? jsx(X, { className: "h-3 w-3" }) : jsx(Plus, { className: "h-3 w-3" }) }))] }));
|
|
1125
|
+
}
|
|
1009
1126
|
|
|
1010
1127
|
function ArchiveIcon({ className = 'icon-md' }) {
|
|
1011
1128
|
return (jsx("svg", { width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, "aria-hidden": "true", children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M3.62188 3.07918C3.87597 2.571 4.39537 2.25 4.96353 2.25H13.0365C13.6046 2.25 14.124 2.571 14.3781 3.07918L15.75 5.82295V13.5C15.75 14.7426 14.7426 15.75 13.5 15.75H4.5C3.25736 15.75 2.25 14.7426 2.25 13.5V5.82295L3.62188 3.07918ZM13.0365 3.75H4.96353L4.21353 5.25H13.7865L13.0365 3.75ZM14.25 6.75H3.75V13.5C3.75 13.9142 4.08579 14.25 4.5 14.25H13.5C13.9142 14.25 14.25 13.9142 14.25 13.5V6.75ZM6.75 9C6.75 8.58579 7.08579 8.25 7.5 8.25H10.5C10.9142 8.25 11.25 8.58579 11.25 9C11.25 9.41421 10.9142 9.75 10.5 9.75H7.5C7.08579 9.75 6.75 9.41421 6.75 9Z", fill: "currentColor" }) }));
|
|
@@ -1347,6 +1464,150 @@ function SharePointIcon({ className = '' }) {
|
|
|
1347
1464
|
return (jsx("svg", { fill: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", className: className, "aria-hidden": "true", children: jsx("path", { d: "M24 13.5q0 1.242-.475 2.332-.474 1.09-1.289 1.904-.814.815-1.904 1.29-1.09.474-2.332.474-.762 0-1.523-.2-.106.997-.557 1.858-.451.862-1.154 1.494-.704.633-1.606.99-.902.358-1.91.358-1.09 0-2.045-.416-.955-.416-1.664-1.125-.709-.709-1.125-1.664Q6 19.84 6 18.75q0-.188.018-.375.017-.188.04-.375H.997q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6h3.54q.14-1.277.726-2.373.586-1.096 1.488-1.904Q7.652.914 8.807.457 9.96 0 11.25 0q1.395 0 2.625.533T16.02 1.98q.914.915 1.447 2.145T18 6.75q0 .188-.012.375-.011.188-.035.375 1.242 0 2.344.469 1.101.468 1.928 1.277.826.809 1.3 1.904Q24 12.246 24 13.5zm-12.75-12q-.973 0-1.857.34-.885.34-1.577.943-.691.604-1.154 1.43Q6.2 5.039 6.06 6h4.945q.41 0 .703.293t.293.703v4.945l.21-.035q.212-.75.61-1.424.399-.673.944-1.218.545-.545 1.213-.944.668-.398 1.43-.61.093-.503.093-.96 0-1.09-.416-2.045-.416-.955-1.125-1.664-.709-.709-1.664-1.125Q12.34 1.5 11.25 1.5zM6.117 15.902q.54 0 1.06-.111.522-.111.932-.37.41-.257.662-.679.252-.422.252-1.055 0-.632-.263-1.054-.264-.422-.662-.703-.399-.282-.856-.463l-.855-.34q-.399-.158-.662-.334-.264-.176-.264-.445 0-.2.14-.323.141-.123.335-.193.193-.07.404-.094.21-.023.351-.023.598 0 1.055.152.457.153.95.457V8.543q-.282-.082-.522-.14-.24-.06-.475-.1-.234-.041-.486-.059-.252-.017-.557-.017-.515 0-1.054.117-.54.117-.979.375-.44.258-.715.68-.275.421-.275 1.03 0 .598.263.997.264.398.663.68.398.28.855.474l.856.363q.398.17.662.358.263.187.263.457 0 .222-.123.351-.123.13-.31.2-.188.07-.393.087-.205.018-.369.018-.703 0-1.248-.234-.545-.235-1.107-.621v1.875q1.195.468 2.472.468zM11.25 22.5q.773 0 1.453-.293t1.19-.803q.51-.51.808-1.195.299-.686.299-1.459 0-.668-.223-1.277-.222-.61-.62-1.096-.4-.486-.95-.826-.55-.34-1.207-.48v1.933q0 .41-.293.703t-.703.293H7.57q-.07.375-.07.75 0 .773.293 1.459t.803 1.195q.51.51 1.195.803.686.293 1.459.293zM18 18q.926 0 1.746-.352.82-.351 1.436-.966.615-.616.966-1.43.352-.815.352-1.752 0-.926-.352-1.746-.351-.82-.966-1.436-.616-.615-1.436-.966Q18.926 9 18 9t-1.74.357q-.815.358-1.43.973t-.973 1.43q-.357.814-.357 1.74 0 .129.006.258t.017.258q.551.27 1.02.65t.838.855q.369.475.627 1.026.258.55.387 1.148Q17.18 18 18 18Z" }) }));
|
|
1348
1465
|
}
|
|
1349
1466
|
|
|
1467
|
+
const Avatar = ({ user, size = 32, className = '', alt, showDefaultWhenEmpty = true, }) => {
|
|
1468
|
+
const avatarSrc = useAvatar(user);
|
|
1469
|
+
const [imageLoaded, setImageLoaded] = useState(false);
|
|
1470
|
+
const [imageError, setImageError] = useState(false);
|
|
1471
|
+
const avatarSeed = useMemo(() => user?.avatar || user?.username || user?.email || '', [user?.avatar, user?.username, user?.email]);
|
|
1472
|
+
const altText = useMemo(() => alt || `${user?.name || user?.username || user?.email || ''}'s avatar`, [alt, user?.name, user?.username, user?.email]);
|
|
1473
|
+
const imageSrc = useMemo(() => {
|
|
1474
|
+
if (!avatarSeed || imageError)
|
|
1475
|
+
return '';
|
|
1476
|
+
return (user?.avatar ?? '') || avatarSrc || '';
|
|
1477
|
+
}, [user?.avatar, avatarSrc, avatarSeed, imageError]);
|
|
1478
|
+
const handleImageLoad = useCallback(() => {
|
|
1479
|
+
setImageLoaded(true);
|
|
1480
|
+
}, []);
|
|
1481
|
+
const handleImageError = useCallback(() => {
|
|
1482
|
+
setImageError(true);
|
|
1483
|
+
setImageLoaded(false);
|
|
1484
|
+
}, []);
|
|
1485
|
+
const DefaultAvatar = useCallback(() => (jsx("div", { style: {
|
|
1486
|
+
backgroundColor: 'rgb(121, 137, 255)',
|
|
1487
|
+
width: `${size}px`,
|
|
1488
|
+
height: `${size}px`,
|
|
1489
|
+
boxShadow: 'rgba(240, 246, 252, 0.1) 0px 0px 0px 1px',
|
|
1490
|
+
}, className: `relative flex items-center justify-center rounded-full p-1 text-text-primary ${className}`, "aria-hidden": "true", children: jsx(UserIcon, {}) })), [size, className]);
|
|
1491
|
+
if (avatarSeed.length === 0 && showDefaultWhenEmpty) {
|
|
1492
|
+
return jsx(DefaultAvatar, {});
|
|
1493
|
+
}
|
|
1494
|
+
if (avatarSeed.length > 0 && !imageError) {
|
|
1495
|
+
return (jsxs("div", { className: "relative", style: { width: `${size}px`, height: `${size}px` }, children: [!imageLoaded && (jsx(Skeleton, { className: "rounded-full", style: { width: `${size}px`, height: `${size}px` } })), jsx("img", { style: {
|
|
1496
|
+
width: `${size}px`,
|
|
1497
|
+
height: `${size}px`,
|
|
1498
|
+
display: imageLoaded ? 'block' : 'none',
|
|
1499
|
+
}, className: `rounded-full ${className}`, src: imageSrc, alt: altText, onLoad: handleImageLoad, onError: handleImageError })] }));
|
|
1500
|
+
}
|
|
1501
|
+
if (imageError && showDefaultWhenEmpty) {
|
|
1502
|
+
return jsx(DefaultAvatar, {});
|
|
1503
|
+
}
|
|
1504
|
+
return null;
|
|
1505
|
+
};
|
|
1506
|
+
|
|
1507
|
+
function ComboboxComponent({ selectedValue, displayValue, items, setValue, ariaLabel, searchPlaceholder, selectPlaceholder, isCollapsed, SelectIcon, }) {
|
|
1508
|
+
const options = (items ?? []).map((option) => {
|
|
1509
|
+
if (typeof option === 'string') {
|
|
1510
|
+
return { label: option, value: option };
|
|
1511
|
+
}
|
|
1512
|
+
return option;
|
|
1513
|
+
});
|
|
1514
|
+
const { open, setOpen, setSearchValue, matches } = useCombobox({
|
|
1515
|
+
value: selectedValue,
|
|
1516
|
+
options,
|
|
1517
|
+
});
|
|
1518
|
+
return (jsx(SelectPrimitive.Root, { value: selectedValue, onValueChange: setValue, open: open,
|
|
1519
|
+
/** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658 */
|
|
1520
|
+
onOpenChange: () => {
|
|
1521
|
+
if (open === true) {
|
|
1522
|
+
setOpen(false);
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1525
|
+
setTimeout(() => {
|
|
1526
|
+
setOpen(!open);
|
|
1527
|
+
}, 75);
|
|
1528
|
+
}, children: jsxs(ComboboxProvider, { open: open, setOpen: setOpen, resetValueOnHide: true, includesBaseElement: false, setValue: (value) => {
|
|
1529
|
+
startTransition(() => {
|
|
1530
|
+
setSearchValue(value);
|
|
1531
|
+
});
|
|
1532
|
+
}, children: [jsx(SelectTrigger, { "aria-label": ariaLabel, className: cn('flex items-center gap-2 [&>span]:line-clamp-1 [&>span]:flex [&>span]:w-full [&>span]:items-center [&>span]:gap-1 [&>span]:truncate [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0', isCollapsed
|
|
1533
|
+
? 'flex h-9 w-9 shrink-0 items-center justify-center p-0 [&>span]:w-auto [&>svg]:hidden'
|
|
1534
|
+
: '', 'bg-white text-black hover:bg-gray-50 focus-visible:ring-2 focus-visible:ring-gray-500 dark:bg-gray-850 dark:text-white'), children: jsxs(SelectValue, { placeholder: selectPlaceholder, children: [jsx("div", { className: "assistant-item flex items-center justify-center overflow-hidden rounded-full", children: SelectIcon ? SelectIcon : jsx(ChevronDownIcon, {}) }), jsx("span", { className: cn('ml-2', isCollapsed ? 'hidden' : ''), style: { userSelect: 'none' }, children: selectedValue
|
|
1535
|
+
? (displayValue ?? selectedValue)
|
|
1536
|
+
: selectPlaceholder && selectPlaceholder })] }) }), jsx(SelectPrimitive.Portal, { children: jsxs(SelectPrimitive.Content, { role: "dialog", "aria-label": ariaLabel + 's', position: "popper", className: cn('bg-popover text-popover-foreground relative z-40 max-h-[52vh] min-w-[8rem] overflow-hidden rounded-md border border-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-600', 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', 'bg-white dark:bg-gray-700'), children: [jsxs(SelectPrimitive.Viewport, { className: "mb-5 h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]", children: [jsxs("div", { className: "group sticky left-0 top-0 z-10 flex h-12 items-center gap-2 bg-white px-3 py-2 text-black duration-300 dark:bg-gray-700 dark:text-white", children: [jsx(Search, { className: "h-4 w-4 text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300" }), jsx(Combobox, { autoSelect: true, placeholder: searchPlaceholder, className: "flex-1 rounded-md border-none bg-transparent px-2.5 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-gray-700/10 dark:focus:ring-gray-200/10",
|
|
1537
|
+
// Ariakit's Combobox manually triggers a blur event on virtually
|
|
1538
|
+
// blurred items, making them work as if they had actual DOM
|
|
1539
|
+
// focus. These blur events might happen after the corresponding
|
|
1540
|
+
// focus events in the capture phase, leading Radix Select to
|
|
1541
|
+
// close the popover. This happens because Radix Select relies on
|
|
1542
|
+
// the order of these captured events to discern if the focus was
|
|
1543
|
+
// outside the element. Since we don't have access to the
|
|
1544
|
+
// onInteractOutside prop in the Radix SelectContent component to
|
|
1545
|
+
// stop this behavior, we can turn off Ariakit's behavior here.
|
|
1546
|
+
onBlurCapture: (event) => {
|
|
1547
|
+
event.preventDefault();
|
|
1548
|
+
event.stopPropagation();
|
|
1549
|
+
} }), jsx(ComboboxCancel, { hideWhenEmpty: true, className: "relative flex h-5 w-5 items-center justify-end text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300" })] }), jsx(ComboboxList, { className: "overflow-y-auto p-1 py-2", children: matches.map(({ label, value, icon }) => (jsx(SelectPrimitive.Item, { value: `${value ?? ''}`, asChild: true, children: jsxs(ComboboxItem, { className: cn('relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', 'rounded-lg hover:bg-gray-100/50 hover:bg-gray-50 dark:text-white dark:hover:bg-gray-600'),
|
|
1550
|
+
/** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658 */
|
|
1551
|
+
onTouchEnd: () => {
|
|
1552
|
+
setValue(`${value ?? ''}`);
|
|
1553
|
+
setOpen(false);
|
|
1554
|
+
}, children: [jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: jsx(SelectPrimitive.ItemIndicator, { children: jsx(CheckIcon$1, { className: "h-4 w-4" }) }) }), jsx(SelectPrimitive.ItemText, { children: jsxs("div", { className: "flex items-center justify-center gap-3 dark:text-white [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0 [&_svg]:text-foreground", children: [jsx("div", { className: "assistant-item overflow-hidden rounded-full", children: icon && icon }), label] }) })] }) }, value))) })] }), jsx(SelectScrollDownButton, { className: "absolute bottom-0 left-0 right-0" })] }) })] }) }));
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
var css_248z$1 = ".popover-ui {\n display: flex;\n max-height: min(var(--popover-available-height, 1700px), 1700px);\n flex-direction: column;\n overflow: auto;\n overscroll-behavior: contain;\n border-radius: 1rem;\n border-width: 1px;\n border-style: solid;\n border-color: var(--border-light);\n background-color: var(--surface-primary);\n padding: 0.5rem;\n color: var(--text-primary);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n transform-origin: top;\n opacity: 0;\n transition-property: opacity, scale, translate;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n scale: 0.95;\n translate: 0 -0.5rem;\n margin-top: 4px;\n margin-right: -2px;\n}\n\n.popover-animate {\n opacity: 0;\n transform: scale(0.95) translateY(-0.5rem);\n transition:\n opacity 150ms cubic-bezier(0.4, 0, 0.2, 1),\n transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.popover-animate[data-enter] {\n opacity: 1;\n transform: scale(1) translateY(0);\n}\n\n.popover-ui:focus-visible,\n.popover-ui[data-focus-visible] {\n outline: var(--bg-surface-hover);\n outline-offset: -1px;\n}\n\n.popover-ui:where(.dark, .dark *) {\n background-color: var(--surface-secondary);\n color: var(--text-secondary);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.25),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.select-item {\n display: flex;\n cursor: pointer;\n scroll-margin: 0.5rem;\n align-items: center;\n gap: 0.5rem;\n border-radius: 0.5rem;\n padding: 0.5rem;\n outline: none !important;\n}\n\n.select-item[aria-disabled='true'] {\n opacity: 0.5;\n}\n\n.select-item[data-active-item] {\n background-color: var(--surface-hover);\n color: var(--text-primary);\n}\n\n.popover-ui[data-enter] {\n opacity: 1;\n scale: 1;\n translate: 0;\n}\n";
|
|
1558
|
+
styleInject(css_248z$1);
|
|
1559
|
+
|
|
1560
|
+
const isDivider = (item) => typeof item === 'object' && 'divider' in item;
|
|
1561
|
+
const isOption = (item) => typeof item === 'object' && 'value' in item && 'label' in item;
|
|
1562
|
+
const Dropdown = ({ value: selectedValue, label = '', onChange, options, className = '', sizeClasses, testId = 'dropdown-menu', icon, iconOnly = false, renderValue, ariaLabel, 'aria-labelledby': ariaLabelledBy, portal = true, }) => {
|
|
1563
|
+
const handleChange = (value) => {
|
|
1564
|
+
onChange(value);
|
|
1565
|
+
};
|
|
1566
|
+
const selectProps = Select$1.useSelectStore({
|
|
1567
|
+
value: selectedValue,
|
|
1568
|
+
setValue: handleChange,
|
|
1569
|
+
});
|
|
1570
|
+
const getOptionObject = (val) => {
|
|
1571
|
+
if (val == null || val === '') {
|
|
1572
|
+
return undefined;
|
|
1573
|
+
}
|
|
1574
|
+
return options
|
|
1575
|
+
.filter((o) => !isDivider(o))
|
|
1576
|
+
.map((o) => (typeof o === 'string' ? { value: o, label: o } : o))
|
|
1577
|
+
.find((o) => isOption(o) && o.value === val);
|
|
1578
|
+
};
|
|
1579
|
+
const getOptionLabel = (currentValue) => {
|
|
1580
|
+
if (currentValue == null || currentValue === '') {
|
|
1581
|
+
return '';
|
|
1582
|
+
}
|
|
1583
|
+
const option = getOptionObject(currentValue);
|
|
1584
|
+
return option ? option.label : currentValue;
|
|
1585
|
+
};
|
|
1586
|
+
return (jsxs("div", { className: cn('relative', className), children: [jsxs(Select$1.Select, { store: selectProps, className: cn('focus:ring-offset-ring-offset relative inline-flex items-center justify-between rounded-xl border border-input bg-background px-3 py-2 text-sm text-text-primary transition-all duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus:ring-ring-primary', iconOnly ? 'h-full w-10' : 'w-fit gap-2', className), "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children: [jsxs("div", { className: "flex w-full items-center gap-2", children: [icon, !iconOnly && (jsxs("span", { className: "block truncate", children: [label, (() => {
|
|
1587
|
+
const matchedOption = getOptionObject(selectedValue);
|
|
1588
|
+
if (matchedOption && renderValue) {
|
|
1589
|
+
return renderValue(matchedOption);
|
|
1590
|
+
}
|
|
1591
|
+
return getOptionLabel(selectedValue);
|
|
1592
|
+
})()] }))] }), !iconOnly && jsx(Select$1.SelectArrow, {})] }), jsx(Select$1.SelectPopover, { portal: portal, store: selectProps, className: cn('popover-ui z-40', sizeClasses, className, 'max-h-[80vh] overflow-y-auto', '[pointer-events:auto]'), children: options.map((item, index) => {
|
|
1593
|
+
if (isDivider(item)) {
|
|
1594
|
+
return jsx("div", { className: "my-1 border-t border-border-heavy" }, `divider-${index}`);
|
|
1595
|
+
}
|
|
1596
|
+
const option = typeof item === 'string' ? { value: item, label: item } : item;
|
|
1597
|
+
if (!isOption(option)) {
|
|
1598
|
+
return null;
|
|
1599
|
+
}
|
|
1600
|
+
return (jsx(Select$1.SelectItem, { value: String(option.value), className: "select-item", "data-theme": option.value, children: jsxs("div", { className: "flex w-full items-center gap-2", children: [option.icon != null && jsx("span", { children: option.icon }), jsx("span", { className: "block truncate", children: option.label }), selectedValue === option.value && (jsx("span", { className: "ml-auto pl-2", children: jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "icon-md block group-hover:hidden", children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z", fill: "currentColor" }) }) }))] }) }, `option-${index}`));
|
|
1601
|
+
}) })] }));
|
|
1602
|
+
};
|
|
1603
|
+
|
|
1604
|
+
const AnimatedSearchInput = ({ value, onChange, isSearching: searching, placeholder, }) => {
|
|
1605
|
+
const isSearching = searching === true;
|
|
1606
|
+
const hasValue = value != null && value.length > 0;
|
|
1607
|
+
const localize = useLocalize();
|
|
1608
|
+
return (jsxs("div", { className: "relative w-full", children: [jsx("div", { className: "relative rounded-lg transition-all duration-500 ease-in-out", children: jsxs("div", { className: "relative", children: [jsx("div", { className: "absolute left-3 top-1/2 z-50 -translate-y-1/2", children: jsx(Search, { className: cn(`h-4 w-4 transition-all duration-500 ease-in-out`, isSearching && hasValue ? 'text-blue-400' : 'text-gray-500') }) }), jsx("input", { type: "text", value: value, onChange: onChange, placeholder: placeholder, "aria-label": localize('com_ui_search'), className: `peer relative z-20 w-full rounded-lg bg-surface-secondary py-2 pl-10 outline-none backdrop-blur-sm transition-all duration-500 ease-in-out placeholder:text-gray-500 focus:ring-ring` }), jsx("div", { className: `pointer-events-none absolute inset-0 z-20 rounded-lg bg-gradient-to-r from-blue-500/20 via-purple-500/20 to-blue-500/20 transition-all duration-500 ease-in-out ${isSearching && hasValue ? 'opacity-100 blur-sm' : 'opacity-0 blur-none'} ` }), jsx("div", { className: `absolute right-3 top-1/2 z-20 -translate-y-1/2 transition-all duration-500 ease-in-out ${isSearching && hasValue ? 'scale-100 opacity-100' : 'scale-0 opacity-0'} `, children: jsxs("div", { className: "relative h-2 w-2", children: [jsx("div", { className: "absolute inset-0 animate-ping rounded-full bg-blue-500/60" }), jsx("div", { className: "absolute inset-0 rounded-full bg-blue-500" })] }) })] }) }), jsx("div", { className: `absolute -inset-8 -z-10 transition-all duration-700 ease-in-out ${isSearching && hasValue ? 'scale-105 opacity-100' : 'scale-100 opacity-0'} `, children: jsxs("div", { className: "absolute inset-0", children: [jsx("div", { className: `bg-gradient-radial absolute inset-0 from-blue-500/10 to-transparent transition-opacity duration-700 ease-in-out ${isSearching && hasValue ? 'animate-pulse-slow opacity-100' : 'opacity-0'} ` }), jsx("div", { className: `absolute inset-0 bg-gradient-to-r from-purple-500/5 via-blue-500/5 to-purple-500/5 blur-xl transition-all duration-700 ease-in-out ${isSearching && hasValue ? 'animate-gradient-x opacity-100' : 'opacity-0'} ` })] }) }), jsx("div", { className: `absolute inset-0 -z-20 scale-100 bg-gradient-to-r from-blue-500/10 via-purple-500/10 to-blue-500/10 opacity-0 blur-xl transition-all duration-500 ease-in-out peer-focus:scale-105 peer-focus:opacity-100` })] }));
|
|
1609
|
+
};
|
|
1610
|
+
|
|
1350
1611
|
const SelectionCheckbox = memo(({ checked, onChange, ariaLabel, }) => (jsx("div", { role: "button", tabIndex: 0, onKeyDown: (e) => e.stopPropagation(), className: "flex h-full w-[30px] items-center justify-center", onClick: (e) => e.stopPropagation(), children: jsx(Checkbox, { checked: checked, onCheckedChange: onChange, "aria-label": ariaLabel }) })));
|
|
1351
1612
|
SelectionCheckbox.displayName = 'SelectionCheckbox';
|
|
1352
1613
|
const TableRowComponent = ({ row, isSmallScreen, onSelectionChange, index, isSearching, }) => {
|
|
@@ -1519,220 +1780,6 @@ function DataTable({ columns, data, onDelete, filterColumn, defaultSort = [], cl
|
|
|
1519
1780
|
}), !virtualRows.length && (jsx(TableRow, { className: "hover:bg-transparent", children: jsx(TableCell, { colSpan: columns.length, className: "p-4 text-center", children: "No data available" }) })), paddingBottom > 0 && (jsx("tr", { children: jsx("td", { style: { height: `${paddingBottom}px` } }) })), (isFetchingNextPage || hasNextPage) && (jsx(TableRow, { className: "hover:bg-transparent", children: jsx(TableCell, { colSpan: columns.length, className: "p-4", children: jsx("div", { className: "flex h-full items-center justify-center", children: isFetchingNextPage ? (jsx(Spinner, { className: "size-4" })) : (hasNextPage && jsx("div", { className: "h-6" })) }) }) }))] })] }) })] }));
|
|
1520
1781
|
}
|
|
1521
1782
|
|
|
1522
|
-
const Radio = memo(function Radio({ options, value, onChange, disabled = false, className = '', fullWidth = false, }) {
|
|
1523
|
-
const localize = useLocalize();
|
|
1524
|
-
const [currentValue, setCurrentValue] = useState(value ?? '');
|
|
1525
|
-
const buttonRefs = useRef([]);
|
|
1526
|
-
const [backgroundStyle, setBackgroundStyle] = useState({});
|
|
1527
|
-
const handleChange = (newValue) => {
|
|
1528
|
-
setCurrentValue(newValue);
|
|
1529
|
-
onChange?.(newValue);
|
|
1530
|
-
};
|
|
1531
|
-
const updateBackgroundStyle = useCallback(() => {
|
|
1532
|
-
const selectedIndex = options.findIndex((opt) => opt.value === currentValue);
|
|
1533
|
-
if (selectedIndex >= 0 && buttonRefs.current[selectedIndex]) {
|
|
1534
|
-
const selectedButton = buttonRefs.current[selectedIndex];
|
|
1535
|
-
const container = selectedButton?.parentElement;
|
|
1536
|
-
if (selectedButton && container) {
|
|
1537
|
-
const containerRect = container.getBoundingClientRect();
|
|
1538
|
-
const buttonRect = selectedButton.getBoundingClientRect();
|
|
1539
|
-
const offsetLeft = buttonRect.left - containerRect.left - 4;
|
|
1540
|
-
setBackgroundStyle({
|
|
1541
|
-
width: `${buttonRect.width}px`,
|
|
1542
|
-
transform: `translateX(${offsetLeft}px)`,
|
|
1543
|
-
});
|
|
1544
|
-
}
|
|
1545
|
-
}
|
|
1546
|
-
}, [currentValue, options]);
|
|
1547
|
-
useLayoutEffect(() => {
|
|
1548
|
-
updateBackgroundStyle();
|
|
1549
|
-
}, [updateBackgroundStyle]);
|
|
1550
|
-
useLayoutEffect(() => {
|
|
1551
|
-
if (value !== undefined) {
|
|
1552
|
-
setCurrentValue(value);
|
|
1553
|
-
}
|
|
1554
|
-
}, [value]);
|
|
1555
|
-
if (options.length === 0) {
|
|
1556
|
-
return (jsx("div", { className: "relative inline-flex items-center rounded-lg bg-muted p-1 opacity-50", role: "radiogroup", children: jsx("span", { className: "px-4 py-2 text-xs text-muted-foreground", children: localize('com_ui_no_options') }) }));
|
|
1557
|
-
}
|
|
1558
|
-
const selectedIndex = options.findIndex((opt) => opt.value === currentValue);
|
|
1559
|
-
return (jsxs("div", { className: `relative ${fullWidth ? 'flex' : 'inline-flex'} items-center rounded-lg bg-muted p-1 ${className}`, role: "radiogroup", children: [selectedIndex >= 0 && (jsx("div", { className: "pointer-events-none absolute inset-y-1 rounded-md border border-border/50 bg-background shadow-sm transition-all duration-300 ease-out", style: backgroundStyle })), options.map((option, index) => (jsxs("button", { ref: (el) => {
|
|
1560
|
-
buttonRefs.current[index] = el;
|
|
1561
|
-
}, type: "button", role: "radio", "aria-checked": currentValue === option.value, onClick: () => handleChange(option.value), disabled: disabled, className: `relative z-10 flex h-[34px] items-center justify-center gap-2 rounded-md px-4 text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${currentValue === option.value ? 'text-foreground' : 'text-foreground'} ${disabled ? 'cursor-not-allowed opacity-50' : ''} ${fullWidth ? 'flex-1' : ''}`, children: [option.icon && (jsx("span", { className: "flex-shrink-0", "aria-hidden": "true", children: option.icon })), jsx("span", { className: "whitespace-nowrap", children: option.label })] }, option.value)))] }));
|
|
1562
|
-
});
|
|
1563
|
-
|
|
1564
|
-
function Badge({ icon: Icon, label, id, isActive = false, isEditing = false, isDragging = false, isAvailable = true, isInChat = false, onBadgeAction, onToggle, className, ...props }) {
|
|
1565
|
-
const isMoveable = isEditing && isAvailable;
|
|
1566
|
-
const isDisabled = id === '1' && isInChat;
|
|
1567
|
-
const handleClick = (e) => {
|
|
1568
|
-
if (isDisabled) {
|
|
1569
|
-
e.preventDefault();
|
|
1570
|
-
e.stopPropagation();
|
|
1571
|
-
return;
|
|
1572
|
-
}
|
|
1573
|
-
if (!isEditing && onToggle) {
|
|
1574
|
-
e.preventDefault();
|
|
1575
|
-
e.stopPropagation();
|
|
1576
|
-
onToggle();
|
|
1577
|
-
}
|
|
1578
|
-
};
|
|
1579
|
-
const getWhileTapScale = () => {
|
|
1580
|
-
if (isDragging) {
|
|
1581
|
-
return 1.1;
|
|
1582
|
-
}
|
|
1583
|
-
if (isDisabled) {
|
|
1584
|
-
return 1;
|
|
1585
|
-
}
|
|
1586
|
-
return 0.97;
|
|
1587
|
-
};
|
|
1588
|
-
return (jsxs(motion.button, { onClick: handleClick, className: cn('group relative inline-flex items-center gap-1.5 rounded-full px-4 py-1.5', 'border border-border-medium text-sm font-medium transition-shadow', '@container-[600px]:w-full size-9 p-2', isActive
|
|
1589
|
-
? 'bg-surface-active shadow-md'
|
|
1590
|
-
: 'bg-surface-chat shadow-sm hover:bg-surface-hover hover:shadow-md', 'active:scale-95 active:shadow-inner', isMoveable && 'cursor-move', isDisabled && 'cursor-not-allowed opacity-50 hover:shadow-sm', className), animate: {
|
|
1591
|
-
scale: isDragging ? 1.1 : 1,
|
|
1592
|
-
boxShadow: isDragging ? '0 10px 25px rgba(0,0,0,0.1)' : undefined,
|
|
1593
|
-
}, whileTap: { scale: getWhileTapScale() }, transition: { type: 'tween', duration: 0.1, ease: 'easeOut' }, ...props, children: [Icon && (jsx(Icon, { className: cn('@container-[600px]:h-4 @container-[600px]:w-4 relative h-5 w-5', !label && 'mx-auto'), "aria-hidden": "true" })), jsx("span", { className: "@container-[600px]:inline relative hidden", children: label }), isEditing && !isDragging && (jsx(motion.button, { className: "@container-[600px]:h-5 @container-[600px]:w-5 absolute -right-1 -top-1 flex h-6 w-6 items-center justify-center rounded-full bg-surface-secondary-alt text-text-primary shadow-sm", initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, whileTap: { scale: 0.9 }, onMouseDown: (e) => e.stopPropagation(), onClick: (e) => {
|
|
1594
|
-
e.stopPropagation();
|
|
1595
|
-
onBadgeAction?.();
|
|
1596
|
-
}, children: isAvailable ? jsx(X, { className: "h-3 w-3" }) : jsx(Plus, { className: "h-3 w-3" }) }))] }));
|
|
1597
|
-
}
|
|
1598
|
-
|
|
1599
|
-
const Avatar = ({ user, size = 32, className = '', alt, showDefaultWhenEmpty = true, }) => {
|
|
1600
|
-
const avatarSrc = useAvatar(user);
|
|
1601
|
-
const [imageLoaded, setImageLoaded] = useState(false);
|
|
1602
|
-
const [imageError, setImageError] = useState(false);
|
|
1603
|
-
const avatarSeed = useMemo(() => user?.avatar || user?.username || user?.email || '', [user?.avatar, user?.username, user?.email]);
|
|
1604
|
-
const altText = useMemo(() => alt || `${user?.name || user?.username || user?.email || ''}'s avatar`, [alt, user?.name, user?.username, user?.email]);
|
|
1605
|
-
const imageSrc = useMemo(() => {
|
|
1606
|
-
if (!avatarSeed || imageError)
|
|
1607
|
-
return '';
|
|
1608
|
-
return (user?.avatar ?? '') || avatarSrc || '';
|
|
1609
|
-
}, [user?.avatar, avatarSrc, avatarSeed, imageError]);
|
|
1610
|
-
const handleImageLoad = useCallback(() => {
|
|
1611
|
-
setImageLoaded(true);
|
|
1612
|
-
}, []);
|
|
1613
|
-
const handleImageError = useCallback(() => {
|
|
1614
|
-
setImageError(true);
|
|
1615
|
-
setImageLoaded(false);
|
|
1616
|
-
}, []);
|
|
1617
|
-
const DefaultAvatar = useCallback(() => (jsx("div", { style: {
|
|
1618
|
-
backgroundColor: 'rgb(121, 137, 255)',
|
|
1619
|
-
width: `${size}px`,
|
|
1620
|
-
height: `${size}px`,
|
|
1621
|
-
boxShadow: 'rgba(240, 246, 252, 0.1) 0px 0px 0px 1px',
|
|
1622
|
-
}, className: `relative flex items-center justify-center rounded-full p-1 text-text-primary ${className}`, "aria-hidden": "true", children: jsx(UserIcon, {}) })), [size, className]);
|
|
1623
|
-
if (avatarSeed.length === 0 && showDefaultWhenEmpty) {
|
|
1624
|
-
return jsx(DefaultAvatar, {});
|
|
1625
|
-
}
|
|
1626
|
-
if (avatarSeed.length > 0 && !imageError) {
|
|
1627
|
-
return (jsxs("div", { className: "relative", style: { width: `${size}px`, height: `${size}px` }, children: [!imageLoaded && (jsx(Skeleton, { className: "rounded-full", style: { width: `${size}px`, height: `${size}px` } })), jsx("img", { style: {
|
|
1628
|
-
width: `${size}px`,
|
|
1629
|
-
height: `${size}px`,
|
|
1630
|
-
display: imageLoaded ? 'block' : 'none',
|
|
1631
|
-
}, className: `rounded-full ${className}`, src: imageSrc, alt: altText, onLoad: handleImageLoad, onError: handleImageError })] }));
|
|
1632
|
-
}
|
|
1633
|
-
if (imageError && showDefaultWhenEmpty) {
|
|
1634
|
-
return jsx(DefaultAvatar, {});
|
|
1635
|
-
}
|
|
1636
|
-
return null;
|
|
1637
|
-
};
|
|
1638
|
-
|
|
1639
|
-
function ComboboxComponent({ selectedValue, displayValue, items, setValue, ariaLabel, searchPlaceholder, selectPlaceholder, isCollapsed, SelectIcon, }) {
|
|
1640
|
-
const options = (items ?? []).map((option) => {
|
|
1641
|
-
if (typeof option === 'string') {
|
|
1642
|
-
return { label: option, value: option };
|
|
1643
|
-
}
|
|
1644
|
-
return option;
|
|
1645
|
-
});
|
|
1646
|
-
const { open, setOpen, setSearchValue, matches } = useCombobox({
|
|
1647
|
-
value: selectedValue,
|
|
1648
|
-
options,
|
|
1649
|
-
});
|
|
1650
|
-
return (jsx(SelectPrimitive.Root, { value: selectedValue, onValueChange: setValue, open: open,
|
|
1651
|
-
/** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658 */
|
|
1652
|
-
onOpenChange: () => {
|
|
1653
|
-
if (open === true) {
|
|
1654
|
-
setOpen(false);
|
|
1655
|
-
return;
|
|
1656
|
-
}
|
|
1657
|
-
setTimeout(() => {
|
|
1658
|
-
setOpen(!open);
|
|
1659
|
-
}, 75);
|
|
1660
|
-
}, children: jsxs(ComboboxProvider, { open: open, setOpen: setOpen, resetValueOnHide: true, includesBaseElement: false, setValue: (value) => {
|
|
1661
|
-
startTransition(() => {
|
|
1662
|
-
setSearchValue(value);
|
|
1663
|
-
});
|
|
1664
|
-
}, children: [jsx(SelectTrigger, { "aria-label": ariaLabel, className: cn('flex items-center gap-2 [&>span]:line-clamp-1 [&>span]:flex [&>span]:w-full [&>span]:items-center [&>span]:gap-1 [&>span]:truncate [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0', isCollapsed
|
|
1665
|
-
? 'flex h-9 w-9 shrink-0 items-center justify-center p-0 [&>span]:w-auto [&>svg]:hidden'
|
|
1666
|
-
: '', 'bg-white text-black hover:bg-gray-50 focus-visible:ring-2 focus-visible:ring-gray-500 dark:bg-gray-850 dark:text-white'), children: jsxs(SelectValue, { placeholder: selectPlaceholder, children: [jsx("div", { className: "assistant-item flex items-center justify-center overflow-hidden rounded-full", children: SelectIcon ? SelectIcon : jsx(ChevronDownIcon, {}) }), jsx("span", { className: cn('ml-2', isCollapsed ? 'hidden' : ''), style: { userSelect: 'none' }, children: selectedValue
|
|
1667
|
-
? (displayValue ?? selectedValue)
|
|
1668
|
-
: selectPlaceholder && selectPlaceholder })] }) }), jsx(SelectPrimitive.Portal, { children: jsxs(SelectPrimitive.Content, { role: "dialog", "aria-label": ariaLabel + 's', position: "popper", className: cn('bg-popover text-popover-foreground relative z-50 max-h-[52vh] min-w-[8rem] overflow-hidden rounded-md border border-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-600', 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', 'bg-white dark:bg-gray-700'), children: [jsxs(SelectPrimitive.Viewport, { className: "mb-5 h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]", children: [jsxs("div", { className: "group sticky left-0 top-0 z-10 flex h-12 items-center gap-2 bg-white px-3 py-2 text-black duration-300 dark:bg-gray-700 dark:text-white", children: [jsx(Search, { className: "h-4 w-4 text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300" }), jsx(Combobox, { autoSelect: true, placeholder: searchPlaceholder, className: "flex-1 rounded-md border-none bg-transparent px-2.5 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-gray-700/10 dark:focus:ring-gray-200/10",
|
|
1669
|
-
// Ariakit's Combobox manually triggers a blur event on virtually
|
|
1670
|
-
// blurred items, making them work as if they had actual DOM
|
|
1671
|
-
// focus. These blur events might happen after the corresponding
|
|
1672
|
-
// focus events in the capture phase, leading Radix Select to
|
|
1673
|
-
// close the popover. This happens because Radix Select relies on
|
|
1674
|
-
// the order of these captured events to discern if the focus was
|
|
1675
|
-
// outside the element. Since we don't have access to the
|
|
1676
|
-
// onInteractOutside prop in the Radix SelectContent component to
|
|
1677
|
-
// stop this behavior, we can turn off Ariakit's behavior here.
|
|
1678
|
-
onBlurCapture: (event) => {
|
|
1679
|
-
event.preventDefault();
|
|
1680
|
-
event.stopPropagation();
|
|
1681
|
-
} }), jsx(ComboboxCancel, { hideWhenEmpty: true, className: "relative flex h-5 w-5 items-center justify-end text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300" })] }), jsx(ComboboxList, { className: "overflow-y-auto p-1 py-2", children: matches.map(({ label, value, icon }) => (jsx(SelectPrimitive.Item, { value: `${value ?? ''}`, asChild: true, children: jsxs(ComboboxItem, { className: cn('relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', 'rounded-lg hover:bg-gray-100/50 hover:bg-gray-50 dark:text-white dark:hover:bg-gray-600'),
|
|
1682
|
-
/** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658 */
|
|
1683
|
-
onTouchEnd: () => {
|
|
1684
|
-
setValue(`${value ?? ''}`);
|
|
1685
|
-
setOpen(false);
|
|
1686
|
-
}, children: [jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: jsx(SelectPrimitive.ItemIndicator, { children: jsx(CheckIcon$1, { className: "h-4 w-4" }) }) }), jsx(SelectPrimitive.ItemText, { children: jsxs("div", { className: "flex items-center justify-center gap-3 dark:text-white [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0 [&_svg]:text-foreground", children: [jsx("div", { className: "assistant-item overflow-hidden rounded-full", children: icon && icon }), label] }) })] }) }, value))) })] }), jsx(SelectScrollDownButton, { className: "absolute bottom-0 left-0 right-0" })] }) })] }) }));
|
|
1687
|
-
}
|
|
1688
|
-
|
|
1689
|
-
var css_248z$1 = ".popover-ui {\n display: flex;\n max-height: min(var(--popover-available-height, 1700px), 1700px);\n flex-direction: column;\n overflow: auto;\n overscroll-behavior: contain;\n border-radius: 1rem;\n border-width: 1px;\n border-style: solid;\n border-color: var(--border-light);\n background-color: var(--surface-primary);\n padding: 0.5rem;\n color: var(--text-primary);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n transform-origin: top;\n opacity: 0;\n transition-property: opacity, scale, translate;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n scale: 0.95;\n translate: 0 -0.5rem;\n margin-top: 4px;\n margin-right: -2px;\n z-index: 100;\n}\n\n.popover-animate {\n opacity: 0;\n transform: scale(0.95) translateY(-0.5rem);\n transition:\n opacity 150ms cubic-bezier(0.4, 0, 0.2, 1),\n transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.popover-animate[data-enter] {\n opacity: 1;\n transform: scale(1) translateY(0);\n}\n\n.popover-ui:focus-visible,\n.popover-ui[data-focus-visible] {\n outline: var(--bg-surface-hover);\n outline-offset: -1px;\n}\n\n.popover-ui:where(.dark, .dark *) {\n background-color: var(--surface-secondary);\n color: var(--text-secondary);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.25),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.select-item {\n display: flex;\n cursor: pointer;\n scroll-margin: 0.5rem;\n align-items: center;\n gap: 0.5rem;\n border-radius: 0.5rem;\n padding: 0.5rem;\n outline: none !important;\n}\n\n.select-item[aria-disabled='true'] {\n opacity: 0.5;\n}\n\n.select-item[data-active-item] {\n background-color: var(--surface-hover);\n color: var(--text-primary);\n}\n\n.popover-ui[data-enter] {\n opacity: 1;\n scale: 1;\n translate: 0;\n}\n";
|
|
1690
|
-
styleInject(css_248z$1);
|
|
1691
|
-
|
|
1692
|
-
const isDivider = (item) => typeof item === 'object' && 'divider' in item;
|
|
1693
|
-
const isOption = (item) => typeof item === 'object' && 'value' in item && 'label' in item;
|
|
1694
|
-
const Dropdown = ({ value: selectedValue, label = '', onChange, options, className = '', sizeClasses, testId = 'dropdown-menu', icon, iconOnly = false, renderValue, ariaLabel, 'aria-labelledby': ariaLabelledBy, portal = true, }) => {
|
|
1695
|
-
const handleChange = (value) => {
|
|
1696
|
-
onChange(value);
|
|
1697
|
-
};
|
|
1698
|
-
const selectProps = Select$1.useSelectStore({
|
|
1699
|
-
value: selectedValue,
|
|
1700
|
-
setValue: handleChange,
|
|
1701
|
-
});
|
|
1702
|
-
const getOptionObject = (val) => {
|
|
1703
|
-
if (val == null || val === '') {
|
|
1704
|
-
return undefined;
|
|
1705
|
-
}
|
|
1706
|
-
return options
|
|
1707
|
-
.filter((o) => !isDivider(o))
|
|
1708
|
-
.map((o) => (typeof o === 'string' ? { value: o, label: o } : o))
|
|
1709
|
-
.find((o) => isOption(o) && o.value === val);
|
|
1710
|
-
};
|
|
1711
|
-
const getOptionLabel = (currentValue) => {
|
|
1712
|
-
if (currentValue == null || currentValue === '') {
|
|
1713
|
-
return '';
|
|
1714
|
-
}
|
|
1715
|
-
const option = getOptionObject(currentValue);
|
|
1716
|
-
return option ? option.label : currentValue;
|
|
1717
|
-
};
|
|
1718
|
-
return (jsxs("div", { className: cn('relative', className), children: [jsxs(Select$1.Select, { store: selectProps, className: cn('focus:ring-offset-ring-offset relative inline-flex items-center justify-between rounded-xl border border-input bg-background px-3 py-2 text-sm text-text-primary transition-all duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus:ring-ring-primary', iconOnly ? 'h-full w-10' : 'w-fit gap-2', className), "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children: [jsxs("div", { className: "flex w-full items-center gap-2", children: [icon, !iconOnly && (jsxs("span", { className: "block truncate", children: [label, (() => {
|
|
1719
|
-
const matchedOption = getOptionObject(selectedValue);
|
|
1720
|
-
if (matchedOption && renderValue) {
|
|
1721
|
-
return renderValue(matchedOption);
|
|
1722
|
-
}
|
|
1723
|
-
return getOptionLabel(selectedValue);
|
|
1724
|
-
})()] }))] }), !iconOnly && jsx(Select$1.SelectArrow, {})] }), jsx(Select$1.SelectPopover, { portal: portal, store: selectProps, className: cn('popover-ui', sizeClasses, className, 'max-h-[80vh] overflow-y-auto', '[pointer-events:auto]'), children: options.map((item, index) => {
|
|
1725
|
-
if (isDivider(item)) {
|
|
1726
|
-
return jsx("div", { className: "my-1 border-t border-border-heavy" }, `divider-${index}`);
|
|
1727
|
-
}
|
|
1728
|
-
const option = typeof item === 'string' ? { value: item, label: item } : item;
|
|
1729
|
-
if (!isOption(option)) {
|
|
1730
|
-
return null;
|
|
1731
|
-
}
|
|
1732
|
-
return (jsx(Select$1.SelectItem, { value: String(option.value), className: "select-item", "data-theme": option.value, children: jsxs("div", { className: "flex w-full items-center gap-2", children: [option.icon != null && jsx("span", { children: option.icon }), jsx("span", { className: "block truncate", children: option.label }), selectedValue === option.value && (jsx("span", { className: "ml-auto pl-2", children: jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "icon-md block group-hover:hidden", children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z", fill: "currentColor" }) }) }))] }) }, `option-${index}`));
|
|
1733
|
-
}) })] }));
|
|
1734
|
-
};
|
|
1735
|
-
|
|
1736
1783
|
const splitGraphemes = (text) => {
|
|
1737
1784
|
if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {
|
|
1738
1785
|
const segmenter = new Intl.Segmenter('en', { granularity: 'grapheme' });
|
|
@@ -2104,7 +2151,7 @@ function MultiSelect({ items, label, placeholder = 'Select...', onSelectedValues
|
|
|
2104
2151
|
onSelectedValuesChange(values);
|
|
2105
2152
|
}
|
|
2106
2153
|
};
|
|
2107
|
-
return (jsx("div", { className: className, children: jsxs(SelectProvider, { value: selectedValues, setValue: handleValueChange, open: isPopoverOpen, setOpen: setIsPopoverOpen, children: [label && (jsx(SelectLabel$1, { className: cn('mb-1 block text-sm text-text-primary', labelClassName), children: label })), jsxs(Select$2, { ref: selectRef, className: cn('flex items-center justify-between gap-2 rounded-xl px-3 py-2 text-sm', 'bg-surface-tertiary text-text-primary shadow-sm hover:cursor-pointer hover:bg-surface-hover', 'outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white', selectClassName, selectedValues.length > 0 && selectItemsClassName != null && selectItemsClassName), onChange: (e) => e.stopPropagation(), children: [selectIcon && jsx("span", { children: selectIcon }), jsx("span", { className: "mr-auto hidden truncate md:block", children: renderSelectedValues(selectedValues, placeholder, items) }), jsx(SelectArrow, { className: cn('ml-1 hidden stroke-1 text-base opacity-75 transition-transform duration-300 md:block', isPopoverOpen && 'rotate-180') })] }), jsx(SelectPopover, { gutter: 4, sameWidth: true, modal: true, unmountOnHide: true, finalFocus: selectRef, className: cn('animate-popover z-
|
|
2154
|
+
return (jsx("div", { className: className, children: jsxs(SelectProvider, { value: selectedValues, setValue: handleValueChange, open: isPopoverOpen, setOpen: setIsPopoverOpen, children: [label && (jsx(SelectLabel$1, { className: cn('mb-1 block text-sm text-text-primary', labelClassName), children: label })), jsxs(Select$2, { ref: selectRef, className: cn('flex items-center justify-between gap-2 rounded-xl px-3 py-2 text-sm', 'bg-surface-tertiary text-text-primary shadow-sm hover:cursor-pointer hover:bg-surface-hover', 'outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white', selectClassName, selectedValues.length > 0 && selectItemsClassName != null && selectItemsClassName), onChange: (e) => e.stopPropagation(), children: [selectIcon && jsx("span", { children: selectIcon }), jsx("span", { className: "mr-auto hidden truncate md:block", children: renderSelectedValues(selectedValues, placeholder, items) }), jsx(SelectArrow, { className: cn('ml-1 hidden stroke-1 text-base opacity-75 transition-transform duration-300 md:block', isPopoverOpen && 'rotate-180') })] }), jsx(SelectPopover, { gutter: 4, sameWidth: true, modal: true, unmountOnHide: true, finalFocus: selectRef, className: cn('animate-popover z-40 flex max-h-[300px]', 'flex-col overflow-auto overscroll-contain rounded-xl', 'bg-surface-secondary px-1.5 py-1 text-text-primary shadow-lg', 'border border-border-light', 'outline-none', popoverClassName), children: items.map((item) => {
|
|
2108
2155
|
const value = getItemValue(item);
|
|
2109
2156
|
const label = getItemLabel(item);
|
|
2110
2157
|
const defaultContent = (jsxs(Fragment, { children: [jsx(SelectItemCheck, { className: "mr-0.5 text-primary" }), jsx("span", { className: "truncate", children: label })] }));
|
|
@@ -2125,7 +2172,7 @@ const DropdownPopup = ({ trigger, isOpen, setIsOpen, focusLoop, mountByState, ..
|
|
|
2125
2172
|
const Menu = ({ items, menuId, keyPrefix, className, iconClassName, itemClassName, modal, portal, sameWidth, gutter = 8, finalFocus, unmountOnHide, preserveTabOrder, ...props }) => {
|
|
2126
2173
|
const menuStore = Ariakit.useMenuStore();
|
|
2127
2174
|
const menu = Ariakit.useMenuContext();
|
|
2128
|
-
return (jsx(Ariakit.Menu, { id: menuId, modal: modal, gutter: gutter, portal: portal, sameWidth: sameWidth, finalFocus: finalFocus, unmountOnHide: unmountOnHide, preserveTabOrder: preserveTabOrder, className: cn('popover-ui z-
|
|
2175
|
+
return (jsx(Ariakit.Menu, { id: menuId, modal: modal, gutter: gutter, portal: portal, sameWidth: sameWidth, finalFocus: finalFocus, unmountOnHide: unmountOnHide, preserveTabOrder: preserveTabOrder, className: cn('popover-ui z-40', className), ...props, children: items
|
|
2129
2176
|
.filter((item) => item.show !== false)
|
|
2130
2177
|
.map((item, index) => {
|
|
2131
2178
|
const { subItems } = item;
|
|
@@ -2733,7 +2780,7 @@ function ControlCombobox({ selectedValue, displayValue, items, setValue, ariaLab
|
|
|
2733
2780
|
const optionIconClassName = cn('mr-2 flex h-5 w-5 items-center justify-center overflow-hidden rounded-full', iconClassName);
|
|
2734
2781
|
return (jsxs("div", { className: cn('flex w-full items-center justify-center px-1', containerClassName), children: [jsx(Ariakit.SelectLabel, { store: select, className: "sr-only", children: ariaLabel }), jsxs(Ariakit.Select, { ref: buttonRef, store: select, id: selectId, disabled: disabled, className: cn('flex items-center justify-center gap-2 rounded-full bg-surface-secondary', 'text-text-primary hover:bg-surface-tertiary', 'border border-border-light', isCollapsed ? 'h-10 w-10' : 'h-10 w-full rounded-xl px-3 py-2 text-sm', className), children: [SelectIcon != null && iconSide === 'left' && (jsx("div", { className: selectIconClassName, children: SelectIcon })), !isCollapsed && (jsxs(Fragment, { children: [jsx("span", { className: "flex-grow truncate text-left", children: displayValue != null
|
|
2735
2782
|
? displayValue || selectPlaceholder
|
|
2736
|
-
: selectedValue || selectPlaceholder }), SelectIcon != null && iconSide === 'right' && (jsx("div", { className: selectIconClassName, children: SelectIcon })), showCarat && jsx(ChevronDown, { className: "h-4 w-4 text-text-secondary" })] }))] }), jsxs(Ariakit.SelectPopover, { store: select, gutter: 4, portal: true, className: cn('animate-popover z-
|
|
2783
|
+
: selectedValue || selectPlaceholder }), SelectIcon != null && iconSide === 'right' && (jsx("div", { className: selectIconClassName, children: SelectIcon })), showCarat && jsx(ChevronDown, { className: "h-4 w-4 text-text-secondary" })] }))] }), jsxs(Ariakit.SelectPopover, { store: select, gutter: 4, portal: true, className: cn('animate-popover z-40 overflow-hidden rounded-xl border border-border-light bg-surface-secondary shadow-lg'), style: { width: isCollapsed ? '300px' : (buttonWidth ?? '300px') }, children: [jsx("div", { className: "py-1.5", children: jsxs("div", { className: "relative", children: [jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-primary" }), jsx(Ariakit.Combobox, { store: combobox, autoSelect: true, placeholder: searchPlaceholder, className: "w-full rounded-md bg-surface-secondary py-2 pl-9 pr-3 text-sm text-text-primary focus:outline-none" })] }) }), jsx("div", { className: "max-h-[300px] overflow-auto", children: jsx(Ariakit.ComboboxList, { store: combobox, children: jsx(SelectRenderer, { store: select, items: matches, itemSize: ROW_HEIGHT, overscan: 5, children: ({ value, icon, label, ...item }) => (jsxs(Ariakit.ComboboxItem, { ...item, className: cn('flex w-full cursor-pointer items-center px-3 text-sm', 'text-text-primary hover:bg-surface-tertiary', 'data-[active-item]:bg-surface-tertiary'), render: jsx(Ariakit.SelectItem, { value: value }), children: [icon != null && iconSide === 'left' && (jsx("div", { className: optionIconClassName, children: icon })), jsx("span", { className: "flex-grow truncate text-left", children: label }), icon != null && iconSide === 'right' && (jsx("div", { className: optionIconClassName, children: icon }))] }, item.id)) }) }) })] })] }));
|
|
2737
2784
|
}
|
|
2738
2785
|
var ControlCombobox$1 = memo(ControlCombobox);
|
|
2739
2786
|
|
|
@@ -2829,5 +2876,5 @@ function ToastProvider({ children }) {
|
|
|
2829
2876
|
return jsx(ToastContext.Provider, { value: { showToast }, children: children });
|
|
2830
2877
|
}
|
|
2831
2878
|
|
|
2832
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AnimatedSearchInput, AnimatedTabs, AnthropicIcon, AnthropicMinimalIcon, AppleIcon, ArchiveIcon, AssistantIcon, AttachmentIcon, AudioPaths, Avatar, AzureMinimalIcon, Badge, BedrockIcon, BirthdayIcon, Blocks, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ChatGPTMinimalIcon, CheckMark, Checkbox, CheckboxButton, CircleHelpIcon, Clipboard, CodePaths, CodeyIcon, ComboboxComponent as Combobox, ContinueIcon, ControlCombobox$1 as ControlCombobox, CrossIcon, CustomMinimalIcon, DataIcon, DataTable, DelayedRender, Dialog$1 as Dialog, DialogButton, DialogClose$1 as DialogClose, DialogContent$1 as DialogContent, DialogDescription$1 as DialogDescription, DialogFooter$1 as DialogFooter, DialogHeader$1 as DialogHeader, DialogOverlay, DialogTemplate, DialogTitle$1 as DialogTitle, DialogTrigger$1 as DialogTrigger, DiscordIcon, DotsIcon, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownPopup, ESide, EditIcon, ExperimentIcon, FacebookIcon, FileIcon, FilePaths, FileUpload, FilterInput, FormInput, GPTIcon, GearIcon, GeminiIcon, GithubIcon, GoogleIcon, Google as GoogleIconChat, GoogleMinimalIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, InfoHoverCard, Input, InputCombobox, InputNumber, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputWithDropdown, Label, LightningIcon, LinkIcon, ListeningIcon, LockIcon, LogOutIcon, MCPIcon, MessagesSquared, MinimalPlugin, MobileSidebar, MultiSelect, NewChatIcon, NotificationSeverity, Dialog as OGDialog, DialogClose as OGDialogClose, DialogContent as OGDialogContent, DialogDescription as OGDialogDescription, DialogFooter as OGDialogFooter, DialogHeader as OGDialogHeader, DialogOverlay as OGDialogOverlay, DialogPortal as OGDialogPortal, OGDialogTemplate, DialogTitle as OGDialogTitle, DialogTrigger as OGDialogTrigger, OpenAIMinimalIcon, OpenIDIcon, PaLMIcon, PaLMinimalIcon, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PersonalizationIcon, PinIcon, PixelCard, Plugin, Progress, QuestionMark, Radio, RegenerateIcon, ResizableHandle, ResizableHandleAlt, ResizablePanel, ResizablePanelGroup, SamlIcon, SaveIcon, Select, SelectContent, SelectDropDown, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, SendMessageIcon, Separator, SharePointIcon, SheetPaths, Sidebar, Skeleton, Slider, Sparkles, SpeechIcon, Spinner, SplitText, SquirclePlusIcon, StopGeneratingIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableRowHeader, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TextPaths, Textarea, TextareaAutosize, ThemeContext, ThemeProvider, ThemeSelector, ThumbDownIcon, ThumbUpIcon, Toast, ToastContext, ToastProvider, TooltipAnchor, TrashIcon, UserIcon, VectorIcon, VideoPaths, VolumeIcon, VolumeMuteIcon, XAIcon, applyFontSize, applyTheme, buttonVariants, chatDirectionAtom, cn, darkTheme, defaultTheme, fontSizeAtom, getInitialTheme, isDark, langAtom, logger, themeColorsAtom, themeModeAtom, themeNameAtom, toastState, useAvatar, useCombobox, useDelayedRender, useLocalize, useMediaQuery, useMultiSearch, useOnClickOutside, useTheme, useToast, useToastContext };
|
|
2833
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy91dGlscy50cyIsIi4uL3NyYy91dGlscy90aGVtZS50cyIsIi4uL3NyYy91dGlscy9sb2dnZXIudHMiLCIuLi9zcmMvY29tcG9uZW50cy9BY2NvcmRpb24udHN4IiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9jb21wb25lbnRzL0FuaW1hdGVkVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BbGVydERpYWxvZy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CcmVhZGNydW1iLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC50c3giLCIuLi9zcmMvY29tbW9uL2VudW0udHMiLCIuLi9zcmMvc3RvcmUudHMiLCIuLi9zcmMvaG9va3MvdXNlVG9hc3QudHMiLCIuLi9zcmMvaG9va3MvdXNlQXZhdGFyLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUNvbWJvYm94LnRzIiwiLi4vc3JjL2hvb2tzL3VzZUxvY2FsaXplLnRzIiwiLi4vc3JjL2hvb2tzL3VzZU1lZGlhUXVlcnkudHN4IiwiLi4vc3JjL2hvb2tzL3VzZURlbGF5ZWRSZW5kZXIudHN4IiwiLi4vc3JjL2hvb2tzL3VzZU9uQ2xpY2tPdXRzaWRlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvRGlhbG9nLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duTWVudS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ib3ZlckNhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXROdW1iZXIudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRmlsdGVySW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTGFiZWwudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvT3JpZ2luYWxEaWFsb2cudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUXVlc3Rpb25NYXJrLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NsaWRlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9TZXBhcmF0b3IudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRDb21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ta2VsZXRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Td2l0Y2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFibGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9UYWcudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWEudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWFBdXRvc2l6ZS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub2FzdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub29sdGlwLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUHJvZ3Jlc3MudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRPVFAudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTXVsdGlTZWFyY2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUmVzaXphYmxlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BbmltYXRlZFNlYXJjaElucHV0LnRzeCIsIi4uL3NyYy9zdmdzL0FyY2hpdmVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0Jsb2Nrcy50c3giLCIuLi9zcmMvc3Zncy9QbHVnaW4udHN4IiwiLi4vc3JjL3N2Z3MvR1BUSWNvbi50c3giLCIuLi9zcmMvc3Zncy9FZGl0SWNvbi50c3giLCIuLi9zcmMvc3Zncy9EYXRhSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TaWRlYmFyLnRzeCIsIi4uL3NyYy9zdmdzL01vYmlsZVNpZGViYXIudHN4IiwiLi4vc3JjL3N2Z3MvU3Bpbm5lci50c3giLCIuLi9zcmMvc3Zncy9DbGlwYm9hcmQudHN4IiwiLi4vc3JjL3N2Z3MvQ2hlY2tNYXJrLnRzeCIsIi4uL3NyYy9zdmdzL0Nyb3NzSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Mb2dPdXRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0N1c3RvbU1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0xpZ2h0bmluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvQXR0YWNobWVudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvTWVzc2FnZXNTcXVhcmVkLnRzeCIsIi4uL3NyYy9zdmdzL1N0b3BHZW5lcmF0aW5nSWNvbi50c3giLCIuLi9zcmMvc3Zncy9SZWdlbmVyYXRlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Db250aW51ZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvR29vZ2xlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9GYWNlYm9va0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvT3BlbklESWNvbi50c3giLCIuLi9zcmMvc3Zncy9HaXRodWJJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0Rpc2NvcmRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0FwcGxlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TYW1sSWNvbi50c3giLCIuLi9zcmMvc3Zncy9BbnRocm9waWNJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1NlbmRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0xpbmtJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0RvdHNJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dlYXJJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1Bpbkljb24udHN4IiwiLi4vc3JjL3N2Z3MvVHJhc2hJY29uLnRzeCIsIi4uL3NyYy9zdmdzL01pbmltYWxQbHVnaW4udHN4IiwiLi4vc3JjL3N2Z3MvQXp1cmVNaW5pbWFsSWNvbi50c3giLCIuLi9zcmMvc3Zncy9PcGVuQUlNaW5pbWFsSWNvbi50c3giLCIuLi9zcmMvc3Zncy9DaGF0R1BUTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvUGFMTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvUGFMTUljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ29kZXlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dlbWluaUljb24udHN4IiwiLi4vc3JjL3N2Z3MvR29vZ2xlTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQW50aHJvcGljTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvTGlzdGVuaW5nSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Wb2x1bWVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1ZvbHVtZU11dGVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1NlbmRNZXNzYWdlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Vc2VySWNvbi50c3giLCIuLi9zcmMvc3Zncy9Mb2NrSWNvbi50c3giLCIuLi9zcmMvc3Zncy9OZXdDaGF0SWNvbi50c3giLCIuLi9zcmMvc3Zncy9FeHBlcmltZW50SWNvbi50c3giLCIuLi9zcmMvc3Zncy9Hb29nbGVJY29uQ2hhdC50c3giLCIuLi9zcmMvc3Zncy9CaXJ0aGRheUljb24udHN4IiwiLi4vc3JjL3N2Z3MvQXNzaXN0YW50SWNvbi50c3giLCIuLi9zcmMvc3Zncy9TcGFya2xlcy50c3giLCIuLi9zcmMvc3Zncy9TcGVlY2hJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1NhdmVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0NpcmNsZUhlbHBJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0JlZHJvY2tJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1RodW1iVXBJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1RodW1iRG93bkljb24udHN4IiwiLi4vc3JjL3N2Z3MvWEFJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BlcnNvbmFsaXphdGlvbkljb24udHN4IiwiLi4vc3JjL3N2Z3MvTUNQSWNvbi50c3giLCIuLi9zcmMvc3Zncy9WZWN0b3JJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1NxdWlyY2xlUGx1c0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvQXVkaW9QYXRocy50c3giLCIuLi9zcmMvc3Zncy9Db2RlUGF0aHMudHN4IiwiLi4vc3JjL3N2Z3MvRmlsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvRmlsZVBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1NoZWV0UGF0aHMudHN4IiwiLi4vc3JjL3N2Z3MvVGV4dFBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1ZpZGVvUGF0aHMudHN4IiwiLi4vc3JjL3N2Z3MvU2hhcmVQb2ludEljb24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRGF0YVRhYmxlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1JhZGlvLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0JhZGdlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0F2YXRhci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Db21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ecm9wZG93bi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9TcGxpdFRleHQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRm9ybUlucHV0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1BpeGVsQ2FyZC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9GaWxlVXBsb2FkLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL011bHRpU2VsZWN0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duUG9wdXAudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRGVsYXllZFJlbmRlci50c3giLCIuLi9zcmMvdGhlbWUvdXRpbHMvYXBwbHlUaGVtZS50cyIsIi4uL3NyYy90aGVtZS9hdG9tcy90aGVtZUF0b21zLnRzIiwiLi4vc3JjL3RoZW1lL2NvbnRleHQvVGhlbWVQcm92aWRlci50c3giLCIuLi9zcmMvdGhlbWUvdGhlbWVzL2RlZmF1bHQudHMiLCIuLi9zcmMvdGhlbWUvdGhlbWVzL2RhcmsudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaGVtZVNlbGVjdG9yLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0luZm9Ib3ZlckNhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQ2hlY2tib3hCdXR0b24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRGlhbG9nVGVtcGxhdGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU2VsZWN0RHJvcERvd24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQ29udHJvbENvbWJvYm94LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL09HRGlhbG9nVGVtcGxhdGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRXaXRoRHJvcERvd24udHN4IiwiLi4vc3JjL1Byb3ZpZGVycy9Ub2FzdENvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEVTTSB1dGlsaXR5IGZ1bmN0aW9uc1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuXG5leHBvcnQgY29uc3QgY24gPSAoLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBhcHBseUZvbnRTaXplID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGNvbnN0IHNpemUgPSB2YWwuc3BsaXQoJy0nKVsxXTsgLy8gVGhpcyB3aWxsIGJlICd4cycsICdzbScsICdiYXNlJywgJ2xnJywgb3IgJ3hsJ1xuXG4gIHN3aXRjaCAoc2l6ZSkge1xuICAgIGNhc2UgJ3hzJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzAuNzVyZW0nKTsgLy8gMTJweFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc20nOlxuICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1tYXJrZG93bi1mb250LXNpemUnLCAnMC44NzVyZW0nKTsgLy8gMTRweFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZSc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcxcmVtJyk7IC8vIDE2cHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xnJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzEuMTI1cmVtJyk7IC8vIDE4cHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3hsJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzEuMjVyZW0nKTsgLy8gMjBweFxuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbml0aWFsVGhlbWUgPSAoKSA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgY29uc3Qgc3RvcmVkUHJlZnMgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NvbG9yLXRoZW1lJyk7XG4gICAgaWYgKHR5cGVvZiBzdG9yZWRQcmVmcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBzdG9yZWRQcmVmcztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyTWVkaWEgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIGlmICh1c2VyTWVkaWEubWF0Y2hlcykge1xuICAgICAgcmV0dXJuICdkYXJrJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJ2xpZ2h0Jztcbn07XG4iLCJjb25zdCBpc0RldmVsb3BtZW50ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCc7XG5jb25zdCBpc0xvZ2dlckVuYWJsZWQgPSBwcm9jZXNzLmVudi5WSVRFX0VOQUJMRV9MT0dHRVIgPT09ICd0cnVlJztcbmNvbnN0IGxvZ2dlckZpbHRlciA9IHByb2Nlc3MuZW52LlZJVEVfTE9HR0VSX0ZJTFRFUiB8fCAnJztcblxudHlwZSBMb2dGdW5jdGlvbiA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ7XG5cbmNvbnN0IGNyZWF0ZUxvZ0Z1bmN0aW9uID0gKFxuICBjb25zb2xlTWV0aG9kOiBMb2dGdW5jdGlvbixcbiAgdHlwZT86ICdsb2cnIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdpbmZvJyB8ICdkZWJ1ZycgfCAnZGlyJyxcbik6IExvZ0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICBpZiAoaXNEZXZlbG9wbWVudCB8fCBpc0xvZ2dlckVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyA/IGFyZ3NbMF0gOiAnJztcbiAgICAgIGlmIChzaG91bGRMb2codGFnKSkge1xuICAgICAgICBpZiAodGFnICYmIHR5cGVvZiBhcmdzWzFdID09PSAnc3RyaW5nJyAmJiB0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgY29uc29sZU1ldGhvZChgWyR7dGFnfV0gJHthcmdzWzFdfWAsIC4uLmFyZ3Muc2xpY2UoMikpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZyAmJiBhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zb2xlTWV0aG9kKGBbJHt0YWd9XWAsIC4uLmFyZ3Muc2xpY2UoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGVNZXRob2QoLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBsb2dnZXIgPSB7XG4gIGxvZzogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS5sb2csICdsb2cnKSxcbiAgZGlyOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLmRpciwgJ2RpcicpLFxuICB3YXJuOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLndhcm4sICd3YXJuJyksXG4gIGluZm86IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUuaW5mbywgJ2luZm8nKSxcbiAgZXJyb3I6IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUuZXJyb3IsICdlcnJvcicpLFxuICBkZWJ1ZzogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS5kZWJ1ZywgJ2RlYnVnJyksXG59O1xuXG5mdW5jdGlvbiBzaG91bGRMb2codGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFsb2dnZXJGaWx0ZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvKiBJZiBubyB0YWcgaXMgcHJvdmlkZWQsIGFsd2F5cyBsb2cgKi9cbiAgaWYgKCF0YWcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbG9nZ2VyRmlsdGVyXG4gICAgLnNwbGl0KCcsJylcbiAgICAuc29tZSgoZmlsdGVyKSA9PiB0YWcudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCkpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbG9nZ2VyO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQWNjb3JkaW9uUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1hY2NvcmRpb24nO1xuaW1wb3J0IHsgQ2hldnJvbkRvd25JY29uIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWljb25zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IEFjY29yZGlvbiA9IEFjY29yZGlvblByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBBY2NvcmRpb25JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBY2NvcmRpb25QcmltaXRpdmUuSXRlbSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignYm9yZGVyLWInLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkFjY29yZGlvbkl0ZW0uZGlzcGxheU5hbWUgPSAnQWNjb3JkaW9uSXRlbSc7XG5cbmNvbnN0IEFjY29yZGlvblRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBY2NvcmRpb25QcmltaXRpdmUuVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBY2NvcmRpb25QcmltaXRpdmUuSGVhZGVyIGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICA8QWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGhvdmVyOnVuZGVybGluZSBbJltkYXRhLXN0YXRlPW9wZW5dPnN2Z106cm90YXRlLTE4MCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPENoZXZyb25Eb3duSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IHNocmluay0wIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDBcIiAvPlxuICAgIDwvQWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXI+XG4gIDwvQWNjb3JkaW9uUHJpbWl0aXZlLkhlYWRlcj5cbikpO1xuQWNjb3JkaW9uVHJpZ2dlci5kaXNwbGF5TmFtZSA9IEFjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBY2NvcmRpb25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWNjb3JkaW9uUHJpbWl0aXZlLkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9XCJvdmVyZmxvdy15LWhpZGRlbiBvdmVyZmxvdy14LXZpc2libGUgdGV4dC1zbSB0cmFuc2l0aW9uLW9wYWNpdHkgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLWFjY29yZGlvbi11cCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWFjY29yZGlvbi1kb3duIGRhdGEtW3N0YXRlPWNsb3NlZF06b3BhY2l0eS0wIGRhdGEtW3N0YXRlPW9wZW5dOm9wYWNpdHktMTAwXCJcbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3BiLTQgcHQtMCcsIGNsYXNzTmFtZSl9PntjaGlsZHJlbn08L2Rpdj5cbiAgPC9BY2NvcmRpb25QcmltaXRpdmUuQ29udGVudD5cbikpO1xuQWNjb3JkaW9uQ29udGVudC5kaXNwbGF5TmFtZSA9IEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBBY2NvcmRpb24sIEFjY29yZGlvbkl0ZW0sIEFjY29yZGlvblRyaWdnZXIsIEFjY29yZGlvbkNvbnRlbnQgfTtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJpbXBvcnQgKiBhcyBBcmlha2l0IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmltcG9ydCAnLi9BbmltYXRlZFRhYnMuY3NzJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJJdGVtIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhYmVsOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuaW1hdGVkVGFic1Byb3BzIHtcbiAgdGFiczogVGFiSXRlbVtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYkxpc3RDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYkNsYXNzTmFtZT86IHN0cmluZztcbiAgdGFiUGFuZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYkxpc3RQcm9wcz86IEFyaWFraXQuVGFiTGlzdFByb3BzO1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRTZWxlY3RlZElkPzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiB1c2VQcmV2aW91czxUPih2YWx1ZTogVCkge1xuICBjb25zdCByZWYgPSB1c2VSZWY8VCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9LCBbdmFsdWVdKTtcbiAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuXG5jb25zdCBUYWIgPSBmb3J3YXJkUmVmPEVsZW1lbnRSZWY8dHlwZW9mIEFyaWFraXQuVGFiPiwgQXJpYWtpdC5UYWJQcm9wcz4oZnVuY3Rpb24gVGFiKHByb3BzLCByZWYpIHtcbiAgY29uc3QgdGFiUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFiRWxlbWVudCA9IHRhYlJlZi5jdXJyZW50O1xuICAgIGlmICghdGFiRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXBkYXRlU3RhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGFiRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnKSA9PT0gJ3RydWUnO1xuICAgICAgdGFiRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlU3RhdGUoKTtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodXBkYXRlU3RhdGUpO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGFiRWxlbWVudCwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnYXJpYS1zZWxlY3RlZCddIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuVGFiXG4gICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgIC8vIEZvcndhcmQgdGhlIHJlZiB0byBib3RoIG91ciBsb2NhbCByZWYgYW5kIHRoZSBwcm92aWRlZCByZWZcbiAgICAgICAgdGFiUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmKG5vZGUpO1xuICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2BhbmltYXRlZC10YWIgYXJpYS1zZWxlY3RlZDp0ZXh0LXRva2VuLXRleHQtcHJpbWFyeSBmbGV4IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItbm9uZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9ycyBhcmlhLWRpc2FibGVkOm9wYWNpdHktNTAgJHtwcm9wcy5jbGFzc05hbWUgfHwgJyd9YH1cbiAgICAvPlxuICApO1xufSk7XG5cbmNvbnN0IFRhYlBhbmVsID0gZm9yd2FyZFJlZjxFbGVtZW50UmVmPHR5cGVvZiBBcmlha2l0LlRhYlBhbmVsPiwgQXJpYWtpdC5UYWJQYW5lbFByb3BzPihcbiAgZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHRhYiA9IEFyaWFraXQudXNlVGFiQ29udGV4dCgpO1xuICAgIGNvbnN0IHByZXZpb3VzVGFiSWQgPSB1c2VQcmV2aW91cyhBcmlha2l0LnVzZVN0b3JlU3RhdGUodGFiLCAnc2VsZWN0ZWRJZCcpKTtcbiAgICBjb25zdCB3YXNPcGVuID0gcHJvcHMudGFiSWQgJiYgcHJldmlvdXNUYWJJZCA9PT0gcHJvcHMudGFiSWQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFyaWFraXQuVGFiUGFuZWxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgZGF0YS13YXMtb3Blbj17d2FzT3BlbiB8fCB1bmRlZmluZWR9XG4gICAgICAgIGNsYXNzTmFtZT17YGFuaW1hdGVkLXRhYi1wYW5lbCBtYXgtdy1mdWxsICR7cHJvcHMuY2xhc3NOYW1lIHx8ICcnfWB9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRUYWJzKHtcbiAgdGFicyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIHRhYkxpc3RDbGFzc05hbWUgPSAnJyxcbiAgdGFiQ2xhc3NOYW1lID0gJycsXG4gIHRhYlBhbmVsQ2xhc3NOYW1lID0gJycsXG4gIGNvbnRhaW5lckNsYXNzTmFtZSA9ICcnLFxuICB0YWJMaXN0UHJvcHMgPSB7fSxcbiAgZGVmYXVsdFNlbGVjdGVkSWQsXG59OiBBbmltYXRlZFRhYnNQcm9wcykge1xuICBjb25zdCB0YWJJZHMgPSB0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gdGFiLmlkIHx8IGB0YWItJHtpbmRleH1gKTtcbiAgY29uc3QgZmlyc3RUYWJJZCA9IGRlZmF1bHRTZWxlY3RlZElkIHx8IHRhYklkc1swXTtcbiAgY29uc3QgdGFiTGlzdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFiTGlzdCA9IHRhYkxpc3RSZWYuY3VycmVudDtcbiAgICBpZiAoIXRhYkxpc3QpIHJldHVybjtcblxuICAgIC8vIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdW5kZXJsaW5lIHBvc2l0aW9uXG4gICAgY29uc3QgdXBkYXRlVW5kZXJsaW5lID0gKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGFiTGlzdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zdGF0ZT1cImFjdGl2ZVwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKCFhY3RpdmVUYWIpIHJldHVybjtcblxuICAgICAgdGFiTGlzdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10YWItbGVmdCcsIGAke2FjdGl2ZVRhYi5vZmZzZXRMZWZ0fXB4YCk7XG4gICAgICB0YWJMaXN0LnN0eWxlLnNldFByb3BlcnR5KCctLXRhYi13aWR0aCcsIGAke2FjdGl2ZVRhYi5vZmZzZXRXaWR0aH1weGApO1xuICAgIH07XG5cbiAgICB1cGRhdGVVbmRlcmxpbmUoKTtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodXBkYXRlVW5kZXJsaW5lKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhYkxpc3QsIHsgYXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2RhdGEtc3RhdGUnXSB9KTtcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFt0YWJzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YHctZnVsbCAke2NsYXNzTmFtZX1gfT5cbiAgICAgIDxBcmlha2l0LlRhYlByb3ZpZGVyIGRlZmF1bHRTZWxlY3RlZElkPXtmaXJzdFRhYklkfT5cbiAgICAgICAgPEFyaWFraXQuVGFiTGlzdFxuICAgICAgICAgIHJlZj17dGFiTGlzdFJlZn1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGFic1wiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgYW5pbWF0ZWQtdGFiLWxpc3QgZmxleCBweS0xICR7dGFiTGlzdENsYXNzTmFtZX1gfVxuICAgICAgICAgIHsuLi50YWJMaXN0UHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxUYWJcbiAgICAgICAgICAgICAga2V5PXt0YWJJZHNbaW5kZXhdfVxuICAgICAgICAgICAgICBpZD17dGFiSWRzW2luZGV4XX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RhYi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0YWJDbGFzc05hbWV9XG4gICAgICAgICAgICAgIGRhdGEtc3RhdGU9e3RhYklkc1tpbmRleF0gPT09IGZpcnN0VGFiSWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSd9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsvKiBUeXBlU2NyaXB0IHdvcmthcm91bmQgZm9yIFJlYWN0IGkxOG5leHQgY2hpbGRyZW4gdHlwZSBjb21wYXRpYmlsaXR5ICovfVxuICAgICAgICAgICAgICB7dGFiLmxhYmVsfVxuICAgICAgICAgICAgPC9UYWI+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQXJpYWtpdC5UYWJMaXN0PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2FuaW1hdGVkLXBhbmVscyByZWxhdGl2ZSBmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHAtMCcsXG4gICAgICAgICAgICBjb250YWluZXJDbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFRhYlBhbmVsXG4gICAgICAgICAgICAgIGtleT17YHBhbmVsLSR7dGFiSWRzW2luZGV4XX1gfVxuICAgICAgICAgICAgICBpZD17YHBhbmVsLSR7dGFiSWRzW2luZGV4XX1gfVxuICAgICAgICAgICAgICB0YWJJZD17dGFiSWRzW2luZGV4XX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0YWJQYW5lbENsYXNzTmFtZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgey8qIFR5cGVTY3JpcHQgd29ya2Fyb3VuZCBmb3IgUmVhY3QgaTE4bmV4dCBjaGlsZHJlbiB0eXBlIGNvbXBhdGliaWxpdHkgKi99XG4gICAgICAgICAgICAgIHt0YWIuY29udGVudH1cbiAgICAgICAgICAgIDwvVGFiUGFuZWw+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Bcmlha2l0LlRhYlByb3ZpZGVyPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQWxlcnREaWFsb2dQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWFsZXJ0LWRpYWxvZyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBBbGVydERpYWxvZyA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nVHJpZ2dlciA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRyaWdnZXI7XG5cbnR5cGUgQWxlcnRQb3J0YWxQcm9wcyA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFsZXJ0RGlhbG9nUG9ydGFsUHJvcHMgJiB7IGNsYXNzTmFtZT86IHN0cmluZyB9O1xuXG5jb25zdCBBbGVydERpYWxvZ1BvcnRhbCA9ICh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogQWxlcnRQb3J0YWxQcm9wcykgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLihwcm9wcyBhcyBBbGVydFBvcnRhbFByb3BzKX0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotNTAgZmxleCBpdGVtcy1lbmQganVzdGlmeS1jZW50ZXIgc206aXRlbXMtY2VudGVyXCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gIDwvQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsPlxuKTtcbkFsZXJ0RGlhbG9nUG9ydGFsLmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmaXhlZCBpbnNldC0wIHotNTAgYmctZ3JheS01MDAvOTAgdHJhbnNpdGlvbi1vcGFjaXR5IGFuaW1hdGUtaW4gZmFkZS1pbiBkYXJrOmJnLWdyYXktODAwLzkwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dPdmVybGF5LmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQb3J0YWw+XG4gICAgPEFsZXJ0RGlhbG9nT3ZlcmxheSAvPlxuICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmaXhlZCB6LTUwIGdyaWQgdy1mdWxsIG1heC13LWxnIHNjYWxlLTEwMCBnYXAtNCBiZy13aGl0ZSBwLTYgb3BhY2l0eS0xMDAgYW5pbWF0ZS1pbiBmYWRlLWluLTkwIHNsaWRlLWluLWZyb20tYm90dG9tLTEwIHNtOnJvdW5kZWQtbGcgc206em9vbS1pbi05MCBzbTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0wIG1kOnctZnVsbCcsXG4gICAgICAgICdkYXJrOmJnLWdyYXktOTAwJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0FsZXJ0RGlhbG9nUG9ydGFsPlxuKSk7XG5BbGVydERpYWxvZ0NvbnRlbnQuZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0hlYWRlciA9ICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIHNwYWNlLXktMiB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pO1xuQWxlcnREaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSAnQWxlcnREaWFsb2dIZWFkZXInO1xuXG5jb25zdCBBbGVydERpYWxvZ0Zvb3RlciA9ICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1jb2wtcmV2ZXJzZSBzbTpmbGV4LXJvdyBzbTpqdXN0aWZ5LWVuZCBzbTpzcGFjZS14LTInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5BbGVydERpYWxvZ0Zvb3Rlci5kaXNwbGF5TmFtZSA9ICdBbGVydERpYWxvZ0Zvb3Rlcic7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAnLCAnZGFyazp0ZXh0LWdyYXktNTAnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dUaXRsZS5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtc20gdGV4dC1ncmF5LTUwMCcsICdkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0FjdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQWN0aW9uPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2lubGluZS1mbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctZ3JheS05MDAgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktODAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6YmctZ3JheS0xMDAgZGFyazp0ZXh0LWdyYXktOTAwIGRhcms6aG92ZXI6YmctZ3JheS0xMDAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5BbGVydERpYWxvZ0FjdGlvbi5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dDYW5jZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdtdC0yIGlubGluZS1mbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy10cmFuc3BhcmVudCBweC00IHB5LTIgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAgc206bXQtMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nQ2FuY2VsLmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBBbGVydERpYWxvZyxcbiAgQWxlcnREaWFsb2dUcmlnZ2VyLFxuICBBbGVydERpYWxvZ0NvbnRlbnQsXG4gIEFsZXJ0RGlhbG9nSGVhZGVyLFxuICBBbGVydERpYWxvZ0Zvb3RlcixcbiAgQWxlcnREaWFsb2dUaXRsZSxcbiAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbixcbiAgQWxlcnREaWFsb2dBY3Rpb24sXG4gIEFsZXJ0RGlhbG9nQ2FuY2VsLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNsb3QgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc2xvdCc7XG5pbXBvcnQgeyBDaGV2cm9uUmlnaHQsIE1vcmVIb3Jpem9udGFsIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IEJyZWFkY3J1bWIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRWxlbWVudCxcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCduYXYnPiAmIHtcbiAgICBzZXBhcmF0b3I/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIH1cbj4oKHsgLi4ucHJvcHMgfSwgcmVmKSA9PiA8bmF2IHJlZj17cmVmfSBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiIHsuLi5wcm9wc30gLz4pO1xuQnJlYWRjcnVtYi5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iJztcblxuY29uc3QgQnJlYWRjcnVtYkxpc3QgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxPTGlzdEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnb2wnPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPG9sXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBicmVhay13b3JkcyB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzbTpnYXAtMi41JyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcbkJyZWFkY3J1bWJMaXN0LmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJMaXN0JztcblxuY29uc3QgQnJlYWRjcnVtYkl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxMSUVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnbGknPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGxpIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNScsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iSXRlbSc7XG5cbmNvbnN0IEJyZWFkY3J1bWJMaW5rID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTEFuY2hvckVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnYSc+ICYge1xuICAgIGFzQ2hpbGQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGFzQ2hpbGQsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6ICdhJztcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3RyYW5zaXRpb24tY29sb3JzIGhvdmVyOnRleHQtZm9yZWdyb3VuZCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn0pO1xuQnJlYWRjcnVtYkxpbmsuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYkxpbmsnO1xuXG5jb25zdCBCcmVhZGNydW1iUGFnZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFNwYW5FbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3NwYW4nPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHNwYW5cbiAgICAgIHJlZj17cmVmfVxuICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdmb250LW5vcm1hbCB0ZXh0LWZvcmVncm91bmQnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuQnJlYWRjcnVtYlBhZ2UuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYlBhZ2UnO1xuXG5jb25zdCBCcmVhZGNydW1iU2VwYXJhdG9yID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8J2xpJz4pID0+IChcbiAgPGxpXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9e2NuKCdbJj5zdmddOnNpemUtMy41JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW4gPz8gPENoZXZyb25SaWdodCAvPn1cbiAgPC9saT5cbik7XG5CcmVhZGNydW1iU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJTZXBhcmF0b3InO1xuXG5jb25zdCBCcmVhZGNydW1iRWxsaXBzaXMgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaC05IHctOSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxNb3JlSG9yaXpvbnRhbCBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+TW9yZTwvc3Bhbj5cbiAgPC9zcGFuPlxuKTtcbkJyZWFkY3J1bWJFbGxpcHNpcy5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iRWxpcHNzaXMnO1xuXG5leHBvcnQge1xuICBCcmVhZGNydW1iLFxuICBCcmVhZGNydW1iTGlzdCxcbiAgQnJlYWRjcnVtYkl0ZW0sXG4gIEJyZWFkY3J1bWJMaW5rLFxuICBCcmVhZGNydW1iUGFnZSxcbiAgQnJlYWRjcnVtYlNlcGFyYXRvcixcbiAgQnJlYWRjcnVtYkVsbGlwc2lzLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNsb3QgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc2xvdCc7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICAnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogJ2JnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeS85MCcsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgICdiZy1zdXJmYWNlLWRlc3RydWN0aXZlIHRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBob3ZlcjpiZy1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJyxcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICAndGV4dC10ZXh0LXByaW1hcnkgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgICAgICBzZWNvbmRhcnk6ICdiZy1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1zZWNvbmRhcnkvODAnLFxuICAgICAgICBnaG9zdDogJ2hvdmVyOmJnLXN1cmZhY2UtaG92ZXIgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCcsXG4gICAgICAgIGxpbms6ICd0ZXh0LXByaW1hcnkgdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnVuZGVybGluZScsXG4gICAgICAgIC8vIGhhcmRjb2RlZCB0ZXh0IGNvbG9yIGJlY2F1c2Ugb2YgV0NBRyBjb250cmFzdCBpc3N1ZXMgKHRleHQtd2hpdGUpXG4gICAgICAgIHN1Ym1pdDogJ2JnLXN1cmZhY2Utc3VibWl0IHRleHQtd2hpdGUgaG92ZXI6Ymctc3VyZmFjZS1zdWJtaXQtaG92ZXInLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogJ2gtMTAgcHgtNCBweS0yJyxcbiAgICAgICAgc206ICdoLTkgcm91bmRlZC1sZyBweC0zJyxcbiAgICAgICAgbGc6ICdoLTExIHJvdW5kZWQtbGcgcHgtOCcsXG4gICAgICAgIGljb246ICdzaXplLTEwJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCB0eXBlID0gJ2J1dHRvbicsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6ICdidXR0b24nO1xuICAgIHJldHVybiAoXG4gICAgICA8Q29tcFxuICAgICAgICB0eXBlPXthc0NoaWxkID8gdW5kZWZpbmVkIDogdHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0J1dHRvbic7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jaGVja2JveCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIEJhc2VDaGVja2JveFByb3BzID0gT21pdDxcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgJ2FyaWEtbGFiZWwnIHwgJ2FyaWEtbGFiZWxsZWRieSdcbj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hlY2tib3hQcm9wcyA9XG4gIHwgKEJhc2VDaGVja2JveFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBzdHJpbmc7XG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5Jz86IG5ldmVyO1xuICAgIH0pXG4gIHwgKEJhc2VDaGVja2JveFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sIENoZWNrYm94UHJvcHM+KFxuICAoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3BlZXIgaC00IHctNCBzaHJpbmstMCByb3VuZGVkLXNtIGJvcmRlciBib3JkZXItYm9yZGVyLXhoZWF2eSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyl9PlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4gICksXG4pO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwiZXhwb3J0IGVudW0gRVNpZGUge1xuICBUb3AgPSAndG9wJyxcbiAgUmlnaHQgPSAncmlnaHQnLFxuICBCb3R0b20gPSAnYm90dG9tJyxcbiAgTGVmdCA9ICdsZWZ0Jyxcbn1cblxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uU2V2ZXJpdHkge1xuICBJTkZPID0gJ2luZm8nLFxuICBTVUNDRVNTID0gJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HID0gJ3dhcm5pbmcnLFxuICBFUlJPUiA9ICdlcnJvcicsXG59XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2V2ZXJpdHkgfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBsYW5nQXRvbSA9IGF0b208c3RyaW5nPignZW4nKTtcbmV4cG9ydCBjb25zdCBjaGF0RGlyZWN0aW9uQXRvbSA9IGF0b208c3RyaW5nPignbHRyJyk7XG5leHBvcnQgY29uc3QgZm9udFNpemVBdG9tID0gYXRvbTxzdHJpbmc+KCd0ZXh0LWJhc2UnKTtcblxuZXhwb3J0IHR5cGUgVG9hc3RTdGF0ZSA9IHtcbiAgb3BlbjogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHk7XG4gIHNob3dJY29uOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvYXN0U3RhdGUgPSBhdG9tPFRvYXN0U3RhdGU+KHtcbiAgb3BlbjogZmFsc2UsXG4gIG1lc3NhZ2U6ICcnLFxuICBzZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuU1VDQ0VTUyxcbiAgc2hvd0ljb246IHRydWUsXG59KTtcbiIsImltcG9ydCB7IHVzZUF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFNob3dUb2FzdCB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNldmVyaXR5IH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgdG9hc3RTdGF0ZSwgdHlwZSBUb2FzdFN0YXRlIH0gZnJvbSAnfi9zdG9yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVRvYXN0KHNob3dEZWxheSA9IDEwMCkge1xuICBjb25zdCBbdG9hc3QsIHNldFRvYXN0XSA9IHVzZUF0b20odG9hc3RTdGF0ZSk7XG4gIGNvbnN0IHNob3dUaW1lclJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaGlkZVRpbWVyUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChzaG93VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2hvd1RpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGhpZGVUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChoaWRlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNob3dUb2FzdCA9ICh7XG4gICAgbWVzc2FnZSxcbiAgICBzZXZlcml0eSA9IE5vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1MsXG4gICAgc2hvd0ljb24gPSB0cnVlLFxuICAgIGR1cmF0aW9uID0gMzAwMCwgLy8gZGVmYXVsdCBkdXJhdGlvbiBmb3IgdGhlIHRvYXN0IHRvIGJlIHZpc2libGVcbiAgICBzdGF0dXMsXG4gIH06IFRTaG93VG9hc3QpID0+IHtcbiAgICAvLyBDbGVhciBleGlzdGluZyB0aW1lb3V0c1xuICAgIGlmIChzaG93VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNob3dUaW1lclJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgaWYgKGhpZGVUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQoaGlkZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIFRpbWVvdXQgdG8gc2hvdyB0aGUgdG9hc3RcbiAgICBzaG93VGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvYXN0KHtcbiAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgc2V2ZXJpdHk6IChzdGF0dXMgYXMgTm90aWZpY2F0aW9uU2V2ZXJpdHkpID8/IHNldmVyaXR5LFxuICAgICAgICBzaG93SWNvbixcbiAgICAgIH0pO1xuICAgICAgLy8gSGlkZXMgdGhlIHRvYXN0IGFmdGVyIHRoZSBzcGVjaWZpZWQgZHVyYXRpb25cbiAgICAgIGhpZGVUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRUb2FzdCgocHJldlRvYXN0OiBUb2FzdFN0YXRlKSA9PiAoeyAuLi5wcmV2VG9hc3QsIG9wZW46IGZhbHNlIH0pKTtcbiAgICAgIH0sIGR1cmF0aW9uKTtcbiAgICB9LCBzaG93RGVsYXkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdG9hc3QsXG4gICAgb25PcGVuQ2hhbmdlOiAob3BlbjogYm9vbGVhbikgPT4gc2V0VG9hc3QoeyAuLi50b2FzdCwgb3BlbiB9KSxcbiAgICBzaG93VG9hc3QsXG4gIH07XG59XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlQXZhdGFyIH0gZnJvbSAnQGRpY2ViZWFyL2NvcmUnO1xuaW1wb3J0IHsgaW5pdGlhbHMgfSBmcm9tICdAZGljZWJlYXIvY29sbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IFRVc2VyIH0gZnJvbSAnbGlicmVjaGF0LWRhdGEtcHJvdmlkZXInO1xuXG5jb25zdCBhdmF0YXJDYWNoZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG5jb25zdCB1c2VBdmF0YXIgPSAodXNlcjogVFVzZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlcm5hbWUsIG5hbWUgfSA9IHVzZXIgPz8ge307XG4gICAgY29uc3Qgc2VlZCA9IG5hbWUgfHwgdXNlcm5hbWU7XG4gICAgaWYgKCFzZWVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHVzZXI/LmF2YXRhciAmJiB1c2VyPy5hdmF0YXIgIT09ICcnKSB7XG4gICAgICByZXR1cm4gdXNlci5hdmF0YXI7XG4gICAgfVxuXG4gICAgaWYgKGF2YXRhckNhY2hlW3NlZWRdKSB7XG4gICAgICByZXR1cm4gYXZhdGFyQ2FjaGVbc2VlZF07XG4gICAgfVxuXG4gICAgY29uc3QgYXZhdGFyID0gY3JlYXRlQXZhdGFyKGluaXRpYWxzLCB7XG4gICAgICBzZWVkLFxuICAgICAgZm9udEZhbWlseTogWydWZXJkYW5hJ10sXG4gICAgICBmb250U2l6ZTogMzYsXG4gICAgICBiYWNrZ3JvdW5kVHlwZTogWydzb2xpZCddLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBbXG4gICAgICAgICdkODFiNjAnLFxuICAgICAgICAnOGUyNGFhJyxcbiAgICAgICAgJzVlMzViMScsXG4gICAgICAgICczOTQ5YWInLFxuICAgICAgICAnREIzNzMzJyxcbiAgICAgICAgJzFCNzlDQycsXG4gICAgICAgICcwMjdDQjgnLFxuICAgICAgICAnMDA4MjkxJyxcbiAgICAgICAgJzAwODU3NycsXG4gICAgICAgICc1ODgwMkYnLFxuICAgICAgICAnOEE3NjFEJyxcbiAgICAgICAgJzlDNkQwMCcsXG4gICAgICAgICdCMDYyMDAnLFxuICAgICAgICAnRDE0NTFBJyxcbiAgICAgIF0sXG4gICAgICB0ZXh0Q29sb3I6IFsnZmZmZmZmJ10sXG4gICAgfSk7XG5cbiAgICBsZXQgYXZhdGFyRGF0YVVyaSA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBhdmF0YXJEYXRhVXJpID0gYXZhdGFyLnRvRGF0YVVyaSgpO1xuICAgICAgaWYgKGF2YXRhckRhdGFVcmkpIHtcbiAgICAgICAgYXZhdGFyQ2FjaGVbc2VlZF0gPSBhdmF0YXJEYXRhVXJpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgYXZhdGFyOicsIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXZhdGFyRGF0YVVyaTtcbiAgfSwgW3VzZXJdKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUF2YXRhcjtcbiIsImltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWF0Y2hTb3J0ZXIgfSBmcm9tICdtYXRjaC1zb3J0ZXInO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiwgTWVudGlvbk9wdGlvbiB9IGZyb20gJ34vY29tbW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29tYm9ib3goe1xuICB2YWx1ZSxcbiAgb3B0aW9ucyxcbn06IHtcbiAgdmFsdWU6IHN0cmluZztcbiAgb3B0aW9uczogQXJyYXk8T3B0aW9uV2l0aEljb24gfCBNZW50aW9uT3B0aW9uPjtcbn0pIHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCBtYXRjaGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hWYWx1ZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBbJ2xhYmVsJywgJ3ZhbHVlJ107XG4gICAgY29uc3QgbWF0Y2hlcyA9IG1hdGNoU29ydGVyKG9wdGlvbnMsIHNlYXJjaFZhbHVlLCB7IGtleXMgfSk7XG4gICAgLy8gUmFkaXggU2VsZWN0IGRvZXMgbm90IHdvcmsgaWYgd2UgZG9uJ3QgcmVuZGVyIHRoZSBzZWxlY3RlZCBpdGVtLCBzbyB3ZVxuICAgIC8vIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIG1hdGNoZXMuXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gb3B0aW9ucy5maW5kKChjdXJyZW50SXRlbSkgPT4gY3VycmVudEl0ZW0udmFsdWUgPT09IHZhbHVlKTtcbiAgICBpZiAoc2VsZWN0ZWRJdGVtICYmICFtYXRjaGVzLmluY2x1ZGVzKHNlbGVjdGVkSXRlbSkpIHtcbiAgICAgIG1hdGNoZXMucHVzaChzZWxlY3RlZEl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfSwgW3NlYXJjaFZhbHVlLCB2YWx1ZSwgb3B0aW9uc10pO1xuXG4gIHJldHVybiB7XG4gICAgb3BlbixcbiAgICBzZXRPcGVuLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHNldFNlYXJjaFZhbHVlLFxuICAgIG1hdGNoZXMsXG4gIH07XG59XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBUT3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IHJlc291cmNlcyB9IGZyb20gJ34vbG9jYWxlcy9pMThuJztcbmltcG9ydCB7IGxhbmdBdG9tIH0gZnJvbSAnfi9zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uS2V5cyA9IGtleW9mIHR5cGVvZiByZXNvdXJjZXMuZW4udHJhbnNsYXRpb247XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsaXplKCkge1xuICBjb25zdCBsYW5nID0gdXNlQXRvbVZhbHVlKGxhbmdBdG9tKTtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGkxOG4ubGFuZ3VhZ2UgIT09IGxhbmcpIHtcbiAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgfVxuICB9LCBbbGFuZywgaTE4bl0pO1xuXG4gIHJldHVybiAocGhyYXNlS2V5OiBUcmFuc2xhdGlvbktleXMsIG9wdGlvbnM/OiBUT3B0aW9ucykgPT4gdChwaHJhc2VLZXksIG9wdGlvbnMpO1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gIGNvbnN0IFttYXRjaGVzLCBzZXRNYXRjaGVzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG1lZGlhID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGlmIChtZWRpYS5tYXRjaGVzICE9PSBtYXRjaGVzKSB7XG4gICAgICBzZXRNYXRjaGVzKG1lZGlhLm1hdGNoZXMpO1xuICAgIH1cbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpID0+IHNldE1hdGNoZXMobWVkaWEubWF0Y2hlcyk7XG4gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gIH0sIFttYXRjaGVzLCBxdWVyeV0pO1xuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuIiwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IHVzZURlbGF5ZWRSZW5kZXIgPSAoZGVsYXk6IG51bWJlcikgPT4ge1xuICBjb25zdCBbZGVsYXllZCwgc2V0RGVsYXllZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgdGltZXJQcm9taXNlUmVmID0gdXNlUmVmPFByb21pc2U8dm9pZD4gfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWxheWVkKSB7XG4gICAgICBjb25zdCB0aW1lclByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0RGVsYXllZChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCBkZWxheSk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQgPSB0aW1lclByb21pc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRpbWVyUHJvbWlzZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9O1xuICB9LCBbZGVsYXksIGRlbGF5ZWRdKTtcblxuICByZXR1cm4gKGZuOiAoKSA9PiBSZWFjdE5vZGUpID0+IHtcbiAgICBpZiAoZGVsYXllZCAmJiB0aW1lclByb21pc2VSZWYuY3VycmVudCkge1xuICAgICAgdGhyb3cgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBmbigpO1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlRGVsYXllZFJlbmRlcjtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xudHlwZSBIYW5kbGVyID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT25DbGlja091dHNpZGUoXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50PixcbiAgaGFuZGxlcjogSGFuZGxlcixcbiAgZXhjbHVkZUlkczogc3RyaW5nW10sXG4gIGN1c3RvbUNvbmRpdGlvbj86ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgRWxlbWVudCB8IG51bGwpID0+IGJvb2xlYW4sXG4pOiB2b2lkIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbDtcblxuICAgICAgaWYgKHRhcmdldCAmJiAnaWQnIGluIHRhcmdldCAmJiBleGNsdWRlSWRzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGFyZ2V0Py5wYXJlbnROb2RlICYmXG4gICAgICAgICdpZCcgaW4gdGFyZ2V0LnBhcmVudE5vZGUgJiZcbiAgICAgICAgZXhjbHVkZUlkcy5pbmNsdWRlcygodGFyZ2V0LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1c3RvbUNvbmRpdGlvbiAmJiBjdXN0b21Db25kaXRpb24odGFyZ2V0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYuY3VycmVudCAmJiAhcmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBoYW5kbGVyKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtyZWYsIGhhbmRsZXJdKTtcbn1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIERpYWxvZ1ByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlhbG9nJztcbmltcG9ydCB7IHVzZU1lZGlhUXVlcnkgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgRGlhbG9nID0gRGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERpYWxvZ1RyaWdnZXIgPSBEaWFsb2dQcmltaXRpdmUuVHJpZ2dlcjtcblxudHlwZSBEaWFsb2dQb3J0YWxQcm9wcyA9IERpYWxvZ1ByaW1pdGl2ZS5EaWFsb2dQb3J0YWxQcm9wcyAmIHsgY2xhc3NOYW1lPzogc3RyaW5nIH07XG5cbmNvbnN0IERpYWxvZ1BvcnRhbCA9ICh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogRGlhbG9nUG9ydGFsUHJvcHMpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWwgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4uKHByb3BzIGFzIERpYWxvZ1BvcnRhbFByb3BzKX0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotWzk5OV0gZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlciBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgPC9EaWFsb2dQcmltaXRpdmUuUG9ydGFsPlxuKTtcbkRpYWxvZ1BvcnRhbC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZml4ZWQgaW5zZXQtMCB6LVs5OTldIGJnLWdyYXktNjAwLzY1IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTEwMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbiBkYXJrOmJnLWJsYWNrLzgwJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuRGlhbG9nT3ZlcmxheS5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5LmRpc3BsYXlOYW1lO1xuXG50eXBlIERpYWxvZ0NvbnRlbnRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+ICYge1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBkaXNhYmxlU2Nyb2xsPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERpYWxvZ0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ29udGVudD4sXG4gIERpYWxvZ0NvbnRlbnRQcm9wc1xuPihcbiAgKFxuICAgIHsgY2xhc3NOYW1lLCBjaGlsZHJlbiA9IHRydWUsIHNob3dDbG9zZUJ1dHRvbiA9IHRydWUsIGRpc2FibGVTY3JvbGwgPSBmYWxzZSwgLi4ucHJvcHMgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IGlzU21hbGxTY3JlZW4gPSB1c2VNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjhweCknKTtcbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1BvcnRhbD5cbiAgICAgICAgPERpYWxvZ092ZXJsYXkgLz5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmaXhlZCB6LVs5OTldIGdyaWQgdy1mdWxsIGdhcC00IHJvdW5kZWQtYi1sZyBiZy13aGl0ZSBwYi02IGFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi05MCBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0xMCBzbTpyb3VuZGVkLWxnJyxcbiAgICAgICAgICAgICdkYXJrOmJnLWdyYXktNzAwJyxcbiAgICAgICAgICAgIGlzU21hbGxTY3JlZW5cbiAgICAgICAgICAgICAgPyAnZml4ZWQgbGVmdC0xLzIgdG9wLTEvMiB6LVs5OTldIG0tYXV0byBncmlkIHctMTEvMTIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIGdhcC00IHJvdW5kZWQteGwgYmctd2hpdGUgcGItNidcbiAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgIGRpc2FibGVTY3JvbGwgPyAnb3ZlcmZsb3ctaGlkZGVuJyA6ICcnLFxuICAgICAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgICAgICl9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIHtzaG93Q2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZSBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC02IHRvcC1bMS42cmVtXSByb3VuZGVkLXNtIG9wYWNpdHktNzAgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YmctZ3JheS0xMDAgZGFyazpmb2N1czpyaW5nLXdoaXRlIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS03MDAgZGFyazpkYXRhLVtzdGF0ZT1vcGVuXTpiZy1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICA8WCBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ2xvc2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgICAgIDwvRGlhbG9nUG9ydGFsPlxuICAgICk7XG4gIH0sXG4pO1xuRGlhbG9nQ29udGVudC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dIZWFkZXIgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGZsZXgtY29sIHNwYWNlLXktMiBib3JkZXItYiBib3JkZXItYmxhY2svMTAgcC02IHBiLTQgdGV4dC1sZWZ0IGRhcms6Ym9yZGVyLXdoaXRlLzEwJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nSGVhZGVyJztcblxuY29uc3QgRGlhbG9nRm9vdGVyID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXgtMiBweC02IHB5LTQnLCBjbGFzc05hbWUgPz8gJycpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dGb290ZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nRm9vdGVyJztcblxuY29uc3QgRGlhbG9nVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwJywgJ2Rhcms6dGV4dC1ncmF5LTUwJywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbSB0ZXh0LWdyYXktNTAwJywgJ2Rhcms6dGV4dC1ncmF5LTQwMCcsIGNsYXNzTmFtZSA/PyAnJyl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgRGlhbG9nQ2xvc2UgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ2xvc2U+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5DbG9zZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBzbTptdC0wJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgIC8qIEltcG9ydGFudDogZm9yIGFjY2Vzc2liaWxpdHkgKi9cbiAgICAgICdmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nQ2xvc2UuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0J1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwIHNtOm10LTAnLFxuICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgLyogSW1wb3J0YW50OiBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuICAgICAgJ2ZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dCdXR0b24uZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nVHJpZ2dlcixcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dGb290ZXIsXG4gIERpYWxvZ1RpdGxlLFxuICBEaWFsb2dEZXNjcmlwdGlvbixcbiAgRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ0J1dHRvbixcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnUnO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBDaXJjbGVJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudSh7IC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdD4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdCBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51XCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51UG9ydGFsKHtcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWwgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1wb3J0YWxcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVUcmlnZ2VyKHtcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcj4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlciBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXRyaWdnZXJcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVDb250ZW50KHtcbiAgY2xhc3NOYW1lLFxuICBzaWRlT2Zmc2V0ID0gNCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWNvbnRlbnRcIlxuICAgICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICd0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBtYXgtaC0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCkgb3JpZ2luLSgtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSB6LTUwIG1pbi13LVs4cmVtXSBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBiZy1zdXJmYWNlLXNlY29uZGFyeSBwLTEgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMicsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51R3JvdXAoeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cCBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWdyb3VwXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51SXRlbSh7XG4gIGNsYXNzTmFtZSxcbiAgaW5zZXQsXG4gIHZhcmlhbnQgPSAnZGVmYXVsdCcsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICBpbnNldD86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZGVzdHJ1Y3RpdmUnO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgIGRhdGEtaW5zZXQ9e2luc2V0fVxuICAgICAgZGF0YS12YXJpYW50PXt2YXJpYW50fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXToqOltzdmddOiF0ZXh0LWRlc3RydWN0aXZlIG91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHgtMiBweS0xLjUgdGV4dC1zbSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtpbnNldF06cGwtOCBkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTp0ZXh0LWRlc3RydWN0aXZlIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOmJnLWRlc3RydWN0aXZlLzEwIGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOnRleHQtZGVzdHJ1Y3RpdmUgZGFyazpkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTpmb2N1czpiZy1kZXN0cnVjdGl2ZS8yMCBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgWyZfc3ZnOm5vdChbY2xhc3MqPSd0ZXh0LSddKV06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtKHtcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgY2hlY2tlZCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWNoZWNrYm94LWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJvdXRsaW5lLWhpZGRlbiByZWxhdGl2ZSBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXNtIHB5LTEuNSBwbC04IHByLTIgdGV4dC1zbSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MCBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTIgZmxleCBzaXplLTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVJhZGlvR3JvdXAoe1xuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcmFkaW8tZ3JvdXBcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVSYWRpb0l0ZW0oe1xuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcmFkaW8taXRlbVwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcIm91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHktMS41IHBsLTggcHItMiB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIFsmX3N2Zzpub3QoW2NsYXNzKj0nc2l6ZS0nXSldOnNpemUtNCBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgbGVmdC0yIGZsZXggc2l6ZS0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICA8Q2lyY2xlSWNvbiBjbGFzc05hbWU9XCJzaXplLTIgZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudUxhYmVsKHtcbiAgY2xhc3NOYW1lLFxuICBpbnNldCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICBpbnNldD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbFxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1sYWJlbFwiXG4gICAgICBkYXRhLWluc2V0PXtpbnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3B4LTIgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gZGF0YS1baW5zZXRdOnBsLTgnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVNlcGFyYXRvcih7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXNlcGFyYXRvclwiXG4gICAgICBjbGFzc05hbWU9e2NuKCctbXgtMSBteS0xIGgtcHggYmctc3VyZmFjZS1ob3ZlcicsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U2hvcnRjdXQoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdzcGFuJz4pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1zaG9ydGN1dFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdtbC1hdXRvIHRleHQteHMgdHJhY2tpbmctd2lkZXN0IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViKHsgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YiBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXN1YlwiIHsuLi5wcm9wc30gLz47XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVN1YlRyaWdnZXIoe1xuICBjbGFzc05hbWUsXG4gIGluc2V0LFxuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gIGluc2V0PzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViLXRyaWdnZXJcIlxuICAgICAgZGF0YS1pbnNldD17aW5zZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnb3V0bGluZS1oaWRkZW4gZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOmJnLWFjY2VudCBkYXRhLVtpbnNldF06cGwtOCBkYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJtbC1hdXRvIHNpemUtNFwiIC8+XG4gICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViQ29udGVudCh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViLWNvbnRlbnRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3RleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIG9yaWdpbi0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgei01MCBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHAtMSBzaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVTaG9ydGN1dCxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEhvdmVyQ2FyZFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaG92ZXItY2FyZCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBIb3ZlckNhcmQgPSBIb3ZlckNhcmRQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgSG92ZXJDYXJkVHJpZ2dlciA9IEhvdmVyQ2FyZFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBIb3ZlckNhcmRQb3J0YWwgPSBIb3ZlckNhcmRQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBIb3ZlckNhcmRDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgSG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEhvdmVyQ2FyZFByaW1pdGl2ZS5Db250ZW50PiAmIHsgZGlzYWJsZWQ/OiBib29sZWFuIH1cbj4oKHsgY2xhc3NOYW1lID0gJycsIGFsaWduID0gJ2NlbnRlcicsIHNpZGVPZmZzZXQgPSA2LCBkaXNhYmxlZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgaWYgKGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxIb3ZlckNhcmRQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3otNTAgdy02NCBvcmlnaW4tWy0tcmFkaXgtaG92ZXItY2FyZC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctc3VyZmFjZS1zZWNvbmRhcnkgcC00IHRleHQtdGV4dC1wcmltYXJ5IHNoYWRvdy1tZCBvdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5Ib3ZlckNhcmRDb250ZW50LmRpc3BsYXlOYW1lID0gSG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IEhvdmVyQ2FyZCwgSG92ZXJDYXJkVHJpZ2dlciwgSG92ZXJDYXJkQ29udGVudCwgSG92ZXJDYXJkUG9ydGFsIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PjtcblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIElucHV0UHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZmxleCBoLTEwIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcblxuSW5wdXQuZGlzcGxheU5hbWUgPSAnSW5wdXQnO1xuXG5leHBvcnQgeyBJbnB1dCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vLyBpbXBvcnQgeyBOdW1lcmljRm9ybWF0IH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5cbmltcG9ydCBSQ0lucHV0TnVtYmVyIGZyb20gJ3JjLWlucHV0LW51bWJlcic7XG5pbXBvcnQgKiBhcyBJbnB1dE51bWJlclByaW1pdGl2ZSBmcm9tICdyYy1pbnB1dC1udW1iZXInO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuLy8gVE9ETyBoZWxwIG5lZWRlZFxuLy8gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4vLyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+XG5cbmNvbnN0IElucHV0TnVtYmVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUkNJbnB1dE51bWJlcj4sXG4gIElucHV0TnVtYmVyUHJpbWl0aXZlLklucHV0TnVtYmVyUHJvcHNcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8UkNJbnB1dE51bWJlclxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggbWF4LWgtNSB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwJyxcbiAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcbklucHV0TnVtYmVyLmRpc3BsYXlOYW1lID0gJ0lucHV0JztcblxuLy8gY29uc29sZS5sb2coX0lucHV0TnVtYmVyKTtcblxuLy8gY29uc3QgSW5wdXROdW1iZXIgPSBSZWFjdC5mb3J3YXJkUmVmKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4vLyAgIHJldHVybiAoXG4vLyAgICAgPE51bWVyaWNGb3JtYXRcbi8vICAgICAgIGNsYXNzTmFtZT17Y24oXG4vLyAgICAgICAgICdmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweS0yIHB4LTMgdGV4dC1zbSBwbGFjZWhvbGRlcjp0ZXh0LWdyYXktNDAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbi8vICAgICAgICAgY2xhc3NOYW1lXG4vLyAgICAgICApfVxuLy8gICAgICAgcmVmPXtyZWZ9XG4vLyAgICAgICB7Li4ucHJvcHN9XG4vLyAgICAgLz5cbi8vICAgKTtcbi8vIH0pO1xuXG5leHBvcnQgeyBJbnB1dE51bWJlciB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJJbnB1dFByb3BzXG4gIGV4dGVuZHMgT21pdDxSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCAncGxhY2Vob2xkZXInPiB7XG4gIC8qKiBUaGUgbGFiZWwgdGV4dCBzaG93biBpbiB0aGUgZmxvYXRpbmcgbGFiZWwgKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgaW5wdXQgLSB1c2VkIHRvIGxpbmsgbGFiZWwgKi9cbiAgaW5wdXRJZDogc3RyaW5nO1xuICAvKiogQ29udGFpbmVyIGNsYXNzTmFtZSBmb3IgY3VzdG9tIHN0eWxpbmcgKi9cbiAgY29udGFpbmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3RhbmRhcmRpemVkIGZpbHRlci9zZWFyY2ggaW5wdXQgY29tcG9uZW50IHdpdGggYSBmbG9hdGluZyBsYWJlbFxuICogdGhhdCBhbmltYXRlcyB1cCB3aGVuIGZvY3VzZWQgb3IgaGFzIGEgdmFsdWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIDxGaWx0ZXJJbnB1dFxuICogICBpbnB1dElkPVwiYm9va21hcmtzLWZpbHRlclwiXG4gKiAgIGxhYmVsPXtsb2NhbGl6ZSgnY29tX3VpX2Jvb2ttYXJrc19maWx0ZXInKX1cbiAqICAgdmFsdWU9e3NlYXJjaFF1ZXJ5fVxuICogICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFF1ZXJ5KGUudGFyZ2V0LnZhbHVlKX1cbiAqIC8+XG4gKi9cbmNvbnN0IEZpbHRlcklucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBGaWx0ZXJJbnB1dFByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCBsYWJlbCwgaW5wdXRJZCwgY29udGFpbmVyQ2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdyZWxhdGl2ZScsIGNvbnRhaW5lckNsYXNzTmFtZSl9PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD17aW5wdXRJZH1cbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9e2xhYmVsfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAncGVlciBmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGh0bWxGb3I9e2lucHV0SWR9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtc20gdGV4dC10ZXh0LXNlY29uZGFyeSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgcGVlci1mb2N1czp0b3AtMCBwZWVyLWZvY3VzOmJnLWJhY2tncm91bmQgcGVlci1mb2N1czpweC0xIHBlZXItZm9jdXM6dGV4dC14cyBwZWVyLVs6bm90KDpwbGFjZWhvbGRlci1zaG93bildOnRvcC0wIHBlZXItWzpub3QoOnBsYWNlaG9sZGVyLXNob3duKV06YmctYmFja2dyb3VuZCBwZWVyLVs6bm90KDpwbGFjZWhvbGRlci1zaG93bildOnB4LTEgcGVlci1bOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pXTp0ZXh0LXhzXCJcbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH0sXG4pO1xuXG5GaWx0ZXJJbnB1dC5kaXNwbGF5TmFtZSA9ICdGaWx0ZXJJbnB1dCc7XG5cbmV4cG9ydCB7IEZpbHRlcklucHV0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtbGFiZWwnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIHtcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIH1cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8TGFiZWxQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIHsuLi5wcm9wc31cbiAgICB7Li4ue1xuICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgJ2Jsb2NrIHctZnVsbCBicmVhay1hbGwgdGV4dC1zbSBsZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpvcGFjaXR5LTcwIGRhcms6dGV4dC1ncmF5LTIwMCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICksXG4gICAgfX1cbiAgLz5cbikpO1xuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBMYWJlbCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgRGlhbG9nUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1kaWFsb2cnO1xuaW1wb3J0IHsgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBEaWFsb2dEZXB0aENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KDApO1xuXG5pbnRlcmZhY2UgT0dEaWFsb2dQcm9wcyBleHRlbmRzIERpYWxvZ1ByaW1pdGl2ZS5EaWFsb2dQcm9wcyB7XG4gIHRyaWdnZXJSZWY/OiBSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgdHJpZ2dlclJlZnM/OiBSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTERpdkVsZW1lbnQgfCBudWxsPltdO1xufVxuXG5jb25zdCBEaWFsb2cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBPR0RpYWxvZ1Byb3BzPihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAoeyBjaGlsZHJlbiwgdHJpZ2dlclJlZiwgdHJpZ2dlclJlZnMsIG9uT3BlbkNoYW5nZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RGVwdGggPSBSZWFjdC51c2VDb250ZXh0KERpYWxvZ0RlcHRoQ29udGV4dCk7XG4gICAgY29uc3QgY3VycmVudERlcHRoID0gcGFyZW50RGVwdGggKyAxO1xuXG4gICAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAoIW9wZW4gJiYgdHJpZ2dlclJlZj8uY3VycmVudCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgICAgaWYgKHRyaWdnZXJSZWZzPy5sZW5ndGgpIHtcbiAgICAgICAgdHJpZ2dlclJlZnMuZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZj8uY3VycmVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG9uT3BlbkNoYW5nZT8uKG9wZW4pO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ0RlcHRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y3VycmVudERlcHRofT5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Sb290IHsuLi5wcm9wc30gb25PcGVuQ2hhbmdlPXtoYW5kbGVPcGVuQ2hhbmdlfT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvRGlhbG9nUHJpbWl0aXZlLlJvb3Q+XG4gICAgICA8L0RpYWxvZ0RlcHRoQ29udGV4dC5Qcm92aWRlcj5cbiAgICApO1xuICB9LFxuKTtcblxuY29uc3QgRGlhbG9nVHJpZ2dlciA9IERpYWxvZ1ByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEaWFsb2dQb3J0YWwgPSBEaWFsb2dQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBEaWFsb2dDbG9zZSA9IERpYWxvZ1ByaW1pdGl2ZS5DbG9zZTtcblxuZXhwb3J0IGNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgc3R5bGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCBkZXB0aCA9IFJlYWN0LnVzZUNvbnRleHQoRGlhbG9nRGVwdGhDb250ZXh0KTtcbiAgY29uc3Qgb3ZlcmxheVpJbmRleCA9IDUwICsgKGRlcHRoIC0gMSkgKiA2MDtcblxuICByZXR1cm4gKFxuICAgIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzdHlsZT17eyAuLi5zdHlsZSwgekluZGV4OiBvdmVybGF5WkluZGV4IH19XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZml4ZWQgaW5zZXQtMCBiZy1ibGFjay84MCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn0pO1xuRGlhbG9nT3ZlcmxheS5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5LmRpc3BsYXlOYW1lO1xuXG50eXBlIERpYWxvZ0NvbnRlbnRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+ICYge1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBkaXNhYmxlU2Nyb2xsPzogYm9vbGVhbjtcbiAgb3ZlcmxheUNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmNvbnN0IERpYWxvZ0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ29udGVudD4sXG4gIERpYWxvZ0NvbnRlbnRQcm9wc1xuPihcbiAgKFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIG92ZXJsYXlDbGFzc05hbWUsXG4gICAgICBzaG93Q2xvc2VCdXR0b24gPSB0cnVlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBzdHlsZSxcbiAgICAgIG9uRXNjYXBlS2V5RG93bjogcHJvcHNPbkVzY2FwZUtleURvd24sXG4gICAgICAuLi5wcm9wc1xuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICBjb25zdCBkZXB0aCA9IFJlYWN0LnVzZUNvbnRleHQoRGlhbG9nRGVwdGhDb250ZXh0KTtcbiAgICBjb25zdCBjb250ZW50WkluZGV4ID0gMTAwICsgKGRlcHRoIC0gMSkgKiA2MDtcblxuICAgIC8qIEhhbmRsZSBFc2NhcGUga2V5IHRvIHByZXZlbnQgY2xvc2luZyBkaWFsb2cgaWYgYSB0b29sdGlwIG9yIGRyb3Bkb3duIGlzIG9wZW5cbiAgICAodGhpcyBpcyBhIHdvcmthcm91bmQgaW4gb3JkZXIgdG8gYWNoaWV2ZSBXQ0FHIGNvbXBsaWFuY2Ugd2hpY2ggcmVxdWlyZXNcbiAgICB0aGF0IG91ciB0b29sdGlwcyBiZSBkaXNtaXNzYWJsZSB3aXRoIEVzY2FwZSBrZXkpICovXG4gICAgY29uc3QgaGFuZGxlRXNjYXBlS2V5RG93biA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvb2x0aXAnKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25NZW51cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPVwibWVudVwiXScpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdG9vbHRpcCBvZiB0b29sdGlwcykge1xuICAgICAgICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0b29sdGlwKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb21wdXRlZFN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJlxuICAgICAgICAgICAgY29tcHV0ZWRTdHlsZS52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJyAmJlxuICAgICAgICAgICAgcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLm9wYWNpdHkpID4gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGRyb3Bkb3duTWVudSBvZiBkcm9wZG93bk1lbnVzKSB7XG4gICAgICAgICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRyb3Bkb3duTWVudSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29tcHV0ZWRTdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiZcbiAgICAgICAgICAgIGNvbXB1dGVkU3R5bGUudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicgJiZcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5vcGFjaXR5KSA+IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHNPbkVzY2FwZUtleURvd24/LihldmVudCk7XG4gICAgICB9LFxuICAgICAgW3Byb3BzT25Fc2NhcGVLZXlEb3duXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEaWFsb2dQb3J0YWw+XG4gICAgICAgIDxEaWFsb2dPdmVybGF5IGNsYXNzTmFtZT17b3ZlcmxheUNsYXNzTmFtZX0gLz5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgc3R5bGU9e3sgLi4uc3R5bGUsIHpJbmRleDogY29udGVudFpJbmRleCB9fVxuICAgICAgICAgIG9uRXNjYXBlS2V5RG93bj17aGFuZGxlRXNjYXBlS2V5RG93bn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ21heC13LTExLzEyIGZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIGdyaWQgbWF4LWgtWzkwdmhdIHctZnVsbCB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIGdhcC00IG92ZXJmbG93LXktYXV0byByb3VuZGVkLTJ4bCBiZy1iYWNrZ3JvdW5kIHAtNiB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbGcgZHVyYXRpb24tMjAwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3AtWzQ4JV0gZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLXRvcC1bNDglXScsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAge3Nob3dDbG9zZUJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8RGlhbG9nUHJpbWl0aXZlLkNsb3NlIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTQgdG9wLTQgcm91bmRlZC1zbSBvcGFjaXR5LTcwIHJpbmctcmluZy1wcmltYXJ5IHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpiZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5DbG9zZT5cbiAgICAgICAgICApfVxuICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PlxuICAgICAgPC9EaWFsb2dQb3J0YWw+XG4gICAgKTtcbiAgfSxcbik7XG5EaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0hlYWRlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pO1xuRGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0hlYWRlcic7XG5cbmNvbnN0IERpYWxvZ0Zvb3RlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1lbmQgc206c3BhY2UteC0yJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuRGlhbG9nRm9vdGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0Zvb3Rlcic7XG5cbmNvbnN0IERpYWxvZ1RpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlRpdGxlPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuVGl0bGVcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbSB0ZXh0LXRleHQtc2Vjb25kYXJ5JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ0Rlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBEaWFsb2cgYXMgT0dEaWFsb2csXG4gIERpYWxvZ1BvcnRhbCBhcyBPR0RpYWxvZ1BvcnRhbCxcbiAgRGlhbG9nT3ZlcmxheSBhcyBPR0RpYWxvZ092ZXJsYXksXG4gIERpYWxvZ0Nsb3NlIGFzIE9HRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ1RyaWdnZXIgYXMgT0dEaWFsb2dUcmlnZ2VyLFxuICBEaWFsb2dDb250ZW50IGFzIE9HRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyIGFzIE9HRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dGb290ZXIgYXMgT0dEaWFsb2dGb290ZXIsXG4gIERpYWxvZ1RpdGxlIGFzIE9HRGlhbG9nVGl0bGUsXG4gIERpYWxvZ0Rlc2NyaXB0aW9uIGFzIE9HRGlhbG9nRGVzY3JpcHRpb24sXG59O1xuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uTWFyayA9ICh7IGNsYXNzTmFtZSA9ICcnIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnYm9yZGVyLXRva2VuLWJvcmRlci1tZWRpdW0gdGV4dC10b2tlbi10ZXh0LXRlcnRpYXJ5IG1sLTIgZmxleCBoLTMuNSB3LTMuNSBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciB0ZXh0LVswLjVyZW1dIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZScsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA/XG4gICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgU2xpZGVyUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zbGlkZXInO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBTbGlkZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2xpZGVyUHJpbWl0aXZlLlJvb3Q+ICYge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICAnYXJpYS1kZXNjcmliZWRieSc/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwgeyAnYXJpYS1sYWJlbCc6IHN0cmluZzsgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlciB9XG4gICAgfCB7ICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmc7ICdhcmlhLWxhYmVsJz86IG5ldmVyIH1cbiAgICB8IHsgJ2FyaWEtbGFiZWwnOiBzdHJpbmc7ICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmcgfVxuICApO1xuXG5jb25zdCBTbGlkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNsaWRlclByaW1pdGl2ZS5Sb290PiwgU2xpZGVyUHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgb25Eb3VibGVDbGljayxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhRGVzY3JpYmVkQnksXG4gICAgICAuLi5wcm9wc1xuICAgIH0sXG4gICAgcmVmLFxuICApID0+IChcbiAgICA8U2xpZGVyUHJpbWl0aXZlLlJvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgey4uLntcbiAgICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgdG91Y2gtbm9uZSBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXInLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICAgb25Eb3VibGVDbGljayxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFNsaWRlclByaW1pdGl2ZS5UcmFja1xuICAgICAgICB7Li4ueyBjbGFzc05hbWU6ICdyZWxhdGl2ZSBoLTIgdy1mdWxsIGdyb3cgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1zZWNvbmRhcnknIH19XG4gICAgICA+XG4gICAgICAgIDxTbGlkZXJQcmltaXRpdmUuUmFuZ2Ugey4uLnsgY2xhc3NOYW1lOiAnYWJzb2x1dGUgaC1mdWxsIGJnLXByaW1hcnknIH19IC8+XG4gICAgICA8L1NsaWRlclByaW1pdGl2ZS5UcmFjaz5cbiAgICAgIDxTbGlkZXJQcmltaXRpdmUuVGh1bWJcbiAgICAgICAgey4uLntcbiAgICAgICAgICBjbGFzc05hbWU6XG4gICAgICAgICAgICAnYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXByaW1hcnkgYmctYmFja2dyb3VuZCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFyaWFEZXNjcmliZWRCeSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgPC9TbGlkZXJQcmltaXRpdmUuUm9vdD5cbiAgKSxcbik7XG5TbGlkZXIuZGlzcGxheU5hbWUgPSBTbGlkZXJQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU2xpZGVyIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZXBhcmF0b3JQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlcGFyYXRvcic7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlcGFyYXRvclByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZXBhcmF0b3JQcmltaXRpdmUuUm9vdD4gJiB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB9XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJywgZGVjb3JhdGl2ZSA9IHRydWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VwYXJhdG9yUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICB7Li4ucHJvcHN9XG4gICAgey4uLntcbiAgICAgIGRlY29yYXRpdmUsXG4gICAgICBvcmllbnRhdGlvbixcbiAgICAgIGNsYXNzTmFtZTogY24oXG4gICAgICAgICdzaHJpbmstMCBiZy1ib3JkZXItbGlnaHQnLFxuICAgICAgICBvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2gtWzFweF0gdy1mdWxsJyA6ICdoLWZ1bGwgdy1bMXB4XScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICksXG4gICAgfX1cbiAgLz5cbikpO1xuU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VwYXJhdG9yUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFNlcGFyYXRvciB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFyaWFraXQgZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgQ29tYm9ib3hQcm9wcyA9IHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvcHRpb25zOiBPcHRpb25XaXRoSWNvbltdIHwgc3RyaW5nW107XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgbGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb25CbHVyOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IElucHV0Q29tYm9ib3g6IFJlYWN0LkZDPENvbWJvYm94UHJvcHM+ID0gKHtcbiAgbGFiZWwsXG4gIGxhYmVsQ2xhc3NOYW1lLFxuICBwbGFjZWhvbGRlciA9ICdTZWxlY3QgYW4gb3B0aW9uJyxcbiAgb3B0aW9ucyxcbiAgY2xhc3NOYW1lLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIG9uQmx1cixcbn0pID0+IHtcbiAgY29uc3QgaXNPcHRpb25PYmplY3QgPSAob3B0aW9uOiB1bmtub3duKTogb3B0aW9uIGlzIE9wdGlvbldpdGhJY29uID0+IHtcbiAgICByZXR1cm4gb3B0aW9uICE9IG51bGwgJiYgdHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb247XG4gIH07XG5cbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUodmFsdWUpO1xuICBjb25zdCBbaXNLZXlib2FyZEZvY3VzLCBzZXRJc0tleWJvYXJkRm9jdXNdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgb25DaGFuZ2UobmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuQ29tYm9ib3hQcm92aWRlciB2YWx1ZT17aW5wdXRWYWx1ZX0gc2V0VmFsdWU9e2hhbmRsZUNoYW5nZX0+XG4gICAgICB7bGFiZWwgIT0gbnVsbCAmJiAoXG4gICAgICAgIDxBcmlha2l0LkNvbWJvYm94TGFiZWxcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKCdtYi0yIGJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC10ZXh0LXByaW1hcnknLCBsYWJlbENsYXNzTmFtZSA/PyAnJyl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQXJpYWtpdC5Db21ib2JveExhYmVsPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUnLCBpc0tleWJvYXJkRm9jdXMgPyAncm91bmRlZC1tZCByaW5nLTIgcmluZy1yaW5nLXByaW1hcnknIDogJycpfT5cbiAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hcbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdoLTEwIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXN1cmZhY2UtcHJpbWFyeSBweC0zIHB5LTIgdGV4dC1zbScsXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItdGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlcicsXG4gICAgICAgICAgICAnZm9jdXM6b3V0bGluZS1ub25lJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IGhhbmRsZUNoYW5nZShldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uQmx1cj17KCkgPT4ge1xuICAgICAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1cigpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Gb2N1c1Zpc2libGU9eygpID0+IHtcbiAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXMoZmFsc2UpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxBcmlha2l0LkNvbWJvYm94UG9wb3ZlclxuICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgIHNhbWVXaWR0aFxuICAgICAgICBvcGVuPXtpc09wZW59XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldElzT3BlbihmYWxzZSl9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3otNTAgbWF4LWgtNjAgdy1mdWxsIG92ZXJmbG93LWF1dG8gcm91bmRlZC1tZCBiZy1zdXJmYWNlLXByaW1hcnkgcC0xIHNoYWRvdy1sZycsXG4gICAgICAgICAgJ2FuaW1hdGUtaW4gZmFkZS1pbi0wIHpvb20taW4tOTUnLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbjogc3RyaW5nIHwgT3B0aW9uV2l0aEljb24sIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICA8QXJpYWtpdC5Db21ib2JveEl0ZW1cbiAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAncmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZScsXG4gICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5IGhvdmVyOnRleHQtdGV4dC1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgJ2RhdGEtW2FjdGl2ZS1pdGVtXTpiZy1zdXJmYWNlLXRlcnRpYXJ5IGRhdGEtW2FjdGl2ZS1pdGVtXTp0ZXh0LXRleHQtcHJpbWFyeScsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgdmFsdWU9e2lzT3B0aW9uT2JqZWN0KG9wdGlvbikgPyBgJHtvcHRpb24udmFsdWUgPz8gJyd9YCA6IG9wdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNPcHRpb25PYmplY3Qob3B0aW9uKSAmJiBvcHRpb24uaWNvbiAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXItMiBmbGV4LXNocmluay0wXCI+e29wdGlvbi5pY29ufTwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7aXNPcHRpb25PYmplY3Qob3B0aW9uKSA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbn1cbiAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvQXJpYWtpdC5Db21ib2JveFBvcG92ZXI+XG4gICAgPC9Bcmlha2l0LkNvbWJvYm94UHJvdmlkZXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdhbmltYXRlLXB1bHNlIHJvdW5kZWQtbWQgYmctc3VyZmFjZS10ZXJ0aWFyeSBvcGFjaXR5LTUwIGRhcms6b3BhY2l0eS0yNScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFN3aXRjaFByaW1pdGl2ZXMgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXN3aXRjaCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIEJhc2VTd2l0Y2hQcm9wcyA9IE9taXQ8XG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgJ2FyaWEtbGFiZWwnIHwgJ2FyaWEtbGFiZWxsZWRieSdcbj47XG5cbnR5cGUgU3dpdGNoUHJvcHMgPVxuICB8IChCYXNlU3dpdGNoUHJvcHMgJiB7XG4gICAgICAnYXJpYS1sYWJlbCc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknPzogbmV2ZXI7XG4gICAgfSlcbiAgfCAoQmFzZVN3aXRjaFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5jb25zdCBTd2l0Y2ggPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sIFN3aXRjaFByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAncGVlciBpbmxpbmUtZmxleCBoLTYgdy0xMSBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci10cmFuc3BhcmVudCB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpiZy1zd2l0Y2gtdW5jaGVja2VkJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHJlZj17cmVmfVxuICAgID5cbiAgICAgIDxTd2l0Y2hQcmltaXRpdmVzLlRodW1iXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzLW5vbmUgYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYmctYmFja2dyb3VuZCBzaGFkb3ctbGcgcmluZy0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTUgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0cmFuc2xhdGUteC0wJyxcbiAgICAgICAgKX1cbiAgICAgIC8+XG4gICAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4gICksXG4pO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmludGVyZmFjZSBUYWJsZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4ge1xuICB1bndyYXBwZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgVGFibGVQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdW53cmFwcGVkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IChcbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbigndy1mdWxsIGNhcHRpb24tYm90dG9tIHRleHQtc20nLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgKTtcblxuICAgIGlmICh1bndyYXBwZWQpIHtcbiAgICAgIHJldHVybiB0YWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIG92ZXJmbG93LWF1dG9cIj57dGFibGVFbGVtZW50fTwvZGl2PjtcbiAgfSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9ICdUYWJsZSc7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ1smX3RyXTpib3JkZXItYicsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSAnVGFibGVIZWFkZXInO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignWyZfdHI6bGFzdC1jaGlsZF06Ym9yZGVyLTAnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9ICdUYWJsZUJvZHknO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRmb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignYm9yZGVyLXQgYmctbXV0ZWQvNTAgZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6Ym9yZGVyLWItMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9ICdUYWJsZUZvb3Rlcic7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpiZy1tdXRlZCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9ICdUYWJsZVJvdyc7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNlbGxFbGVtZW50LFxuICBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2gtMTIgcHgtNCB0ZXh0LWxlZnQgYWxpZ24tbWlkZGxlIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9ICdUYWJsZUhlYWQnO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRkXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncC00IGFsaWduLW1pZGRsZSBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSAnVGFibGVDZWxsJztcblxuY29uc3QgVGFibGVSb3dIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRoXG4gICAgcmVmPXtyZWZ9XG4gICAgc2NvcGU9XCJyb3dcIlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAncC00IHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZVJvd0hlYWRlci5kaXNwbGF5TmFtZSA9ICdUYWJsZVJvd0hlYWRlcic7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ210LTQgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9ICdUYWJsZUNhcHRpb24nO1xuXG5leHBvcnQge1xuICBUYWJsZSxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVGb290ZXIsXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVSb3csXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVSb3dIZWFkZXIsXG4gIFRhYmxlQ2FwdGlvbixcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBUYWJzUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC10YWJzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFRhYnMgPSBUYWJzUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRhYnNMaXN0ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5MaXN0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkxpc3Q+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuTGlzdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctc3VyZmFjZS1wcmltYXJ5JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuVGFic0xpc3QuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLkxpc3QuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFRhYnNUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuVHJpZ2dlclxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaW5saW5lLWZsZXggbWluLXctWzEwMHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1bMC4xODVyZW1dIHB4LTMgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCB0cmFuc2l0aW9uLWFsbCBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9YWN0aXZlXTpiZy13aGl0ZSBkYXRhLVtzdGF0ZT1hY3RpdmVdOnRleHQtZ3JheS04MDAgZGF0YS1bc3RhdGU9YWN0aXZlXTpzaGFkb3ctc20gZGFyazpkYXRhLVtzdGF0ZT1hY3RpdmVdOmJnLWdyYXktNzAwIGRhcms6ZGF0YS1bc3RhdGU9YWN0aXZlXTp0ZXh0LWdyYXktMjAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuVGFic1RyaWdnZXIuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFRhYnNDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuQ29udGVudCBjbGFzc05hbWU9e2NuKCdtdC0yIHJvdW5kZWQtbWQgcC02JywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSByZWY9e3JlZn0gLz5cbikpO1xuVGFic0NvbnRlbnQuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRhYnMsIFRhYnNMaXN0LCBUYWJzVHJpZ2dlciwgVGFic0NvbnRlbnQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBUYWdQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz4gJiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBDYW5jZWxCdXR0b24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIExhYmVsTm9kZT86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb25SZW1vdmU/OiAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBUYWdQcmltaXRpdmVSb290ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgVGFnUHJvcHM+KFxuICAoXG4gICAgeyBDYW5jZWxCdXR0b24sIExhYmVsTm9kZSwgbGFiZWwsIG9uUmVtb3ZlLCBjbGFzc05hbWUgPSAnJywgbGFiZWxDbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSxcbiAgICByZWYsXG4gICkgPT4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggbWF4LWgtOCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3cteS1oaWRkZW4gcm91bmRlZC0zeGwgYm9yZGVyLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy1ncmVlbi02MDAvMjAgdGV4dC14cyB0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignbWwtMSB3aGl0ZXNwYWNlLXByZS13cmFwIHB4LTIgcHktMScsIGxhYmVsQ2xhc3NOYW1lKX0+XG4gICAgICAgIHtMYWJlbE5vZGUgPyA8PntMYWJlbE5vZGV9IDwvPiA6IG51bGx9XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvZGl2PlxuICAgICAge0NhbmNlbEJ1dHRvblxuICAgICAgICA/IENhbmNlbEJ1dHRvblxuICAgICAgICA6IG9uUmVtb3ZlICYmIChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIG9uUmVtb3ZlKGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNjAwLzUwXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YFJlbW92ZSAke2xhYmVsfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cIm0tWzEuNXB4XSBwLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5cblRhZ1ByaW1pdGl2ZVJvb3QuZGlzcGxheU5hbWUgPSAnVGFnJztcblxuZXhwb3J0IGNvbnN0IFRhZyA9IFJlYWN0Lm1lbW8oVGFnUHJpbWl0aXZlUm9vdCk7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRleHRhcmVhQXV0b3NpemUgZnJvbSAncmVhY3QtdGV4dGFyZWEtYXV0b3NpemUnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0YXJlYVByb3BzIGV4dGVuZHMgUmVhY3QuVGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiB7fVxuXG5jb25zdCBUZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaC0yMCB3LWZ1bGwgcmVzaXplLW5vbmUgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNTAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5UZXh0YXJlYS5kaXNwbGF5TmFtZSA9ICdUZXh0YXJlYSc7XG5cbmV4cG9ydCB7IFRleHRhcmVhIH07XG4iLCJpbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0VGV4dGFyZWFBdXRvc2l6ZSBmcm9tICdyZWFjdC10ZXh0YXJlYS1hdXRvc2l6ZSc7XG5pbXBvcnQgdHlwZSB7IFRleHRhcmVhQXV0b3NpemVQcm9wcyB9IGZyb20gJ3JlYWN0LXRleHRhcmVhLWF1dG9zaXplJztcbmltcG9ydCB7IGNoYXREaXJlY3Rpb25BdG9tIH0gZnJvbSAnfi9zdG9yZSc7XG5cbnR5cGUgQmFzZVRleHRhcmVhQXV0b3NpemVQcm9wcyA9IE9taXQ8VGV4dGFyZWFBdXRvc2l6ZVByb3BzLCAnYXJpYS1sYWJlbCcgfCAnYXJpYS1sYWJlbGxlZGJ5Jz47XG5cbmV4cG9ydCB0eXBlIFRleHRhcmVhQXV0b3NpemVQcm9wc1dpdGhBcmlhID1cbiAgfCAoQmFzZVRleHRhcmVhQXV0b3NpemVQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsJzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlcjtcbiAgICB9KVxuICB8IChCYXNlVGV4dGFyZWFBdXRvc2l6ZVByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5leHBvcnQgY29uc3QgVGV4dGFyZWFBdXRvc2l6ZSA9IGZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFBdXRvc2l6ZVByb3BzV2l0aEFyaWE+KFxuICAocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IFssIHNldElzUmVyZW5kZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY2hhdERpcmVjdGlvbiA9IHVzZUF0b21WYWx1ZShjaGF0RGlyZWN0aW9uQXRvbSkudG9Mb3dlckNhc2UoKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4gc2V0SXNSZXJlbmRlcmVkKHRydWUpLCBbXSk7XG4gICAgcmV0dXJuIDxSZWFjdFRleHRhcmVhQXV0b3NpemUgZGlyPXtjaGF0RGlyZWN0aW9ufSB7Li4ucHJvcHN9IHJlZj17cmVmfSAvPjtcbiAgfSxcbik7XG4iLCJpbXBvcnQgKiBhcyBSYWRpeFRvYXN0IGZyb20gJ0ByYWRpeC11aS9yZWFjdC10b2FzdCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXZlcml0eSB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnfi9ob29rcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBUb2FzdCgpIHtcbiAgY29uc3QgeyB0b2FzdCwgb25PcGVuQ2hhbmdlIH0gPSB1c2VUb2FzdCgpO1xuICBjb25zdCBzZXZlcml0eUNsYXNzTmFtZSA9IHtcbiAgICAvKiBHb2luZyB1cCBieSAxMDAgdW5pdHMgaW4gdGVybXMgb2YgZGFya25lc3MgKGVnIGJnLWdyZWVuLTUwMCB0byBiZy1ncmVlbi02MDApIGZvclxuICAgICAqIGJnIGNvbG9ycyBwcm9kdWNlcyBjb2xvcnMgdGhhdCBhcmUgdG9vIHZpc3VhbGx5IGRpc3NpbWlsYXIgdG8gTGlicmVDaGF0J3Mgc3RhbmRhcmQgY29sb3IgcGFsZXR0ZS5cbiAgICAgKiBUaGVzZSBjb2xvcnMgd2VyZSBkZXJpdmVkIGJ5IGFkanVzdGluZyB0aGUgdmFsdWVzIGluIHRoZSBIU1YgY29sb3Igc3BhY2UgdXNpbmcgQ0NBXG4gICAgICogdW50aWwgdGhlIDQuNToxIGNvbnRyYXN0IHJhdGlvIHRocmVzaG9sZCB3YXMgbWV0IGFnYWluc3Qgd2hpdGUgdGV4dCB3aGlsZSBtYWludGFpbmluZ1xuICAgICAqIGEgcmVsYXRpdmVseSByZWNvZ25pemFibGUgY29sb3Igc2NoZW1lIGZvciB0b2FzdHMgd2l0aG91dCBjb21wcm9taXNpbmcgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiAqL1xuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5JTkZPXTogJ2JvcmRlci1ncmF5LTUwMCBiZy1ncmF5LTUwMCcsXG4gICAgW05vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1NdOiAnYm9yZGVyLVsjMDI4NTVFXSBiZy1bIzAyODU1RV0nLFxuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5XQVJOSU5HXTogJ2JvcmRlci1bI0M3NTIwOV0gYmctWyNDNzUyMDldJyxcbiAgICBbTm90aWZpY2F0aW9uU2V2ZXJpdHkuRVJST1JdOiAnYm9yZGVyLVsjRTAyRjFGXSBiZy1bI0UwMkYxRl0nLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJhZGl4VG9hc3QuUm9vdFxuICAgICAgb3Blbj17dG9hc3Qub3Blbn1cbiAgICAgIG9uT3BlbkNoYW5nZT17b25PcGVuQ2hhbmdlfVxuICAgICAgY2xhc3NOYW1lPVwidG9hc3Qtcm9vdFwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBoZWlnaHQ6ICc3NHB4JyxcbiAgICAgICAgbWFyZ2luQm90dG9tOiAnMHB4JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgcC0xIHRleHQtY2VudGVyIG1kOnctYXV0byBtZDp0ZXh0LWp1c3RpZnlcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17YGFsZXJ0LXJvb3QgcG9pbnRlci1ldmVudHMtYXV0byBpbmxpbmUtZmxleCBmbGV4LXJvdyBnYXAtMiByb3VuZGVkLW1kIGJvcmRlciBweC0zIHB5LTIgZm9udC1ib2xkIHRleHQtd2hpdGUgJHtcbiAgICAgICAgICAgIHNldmVyaXR5Q2xhc3NOYW1lW3RvYXN0LnNldmVyaXR5XVxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3RvYXN0LnNob3dJY29uICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBmbGV4LXNocmluay0wIGZsZXgtZ3Jvdy0wXCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbi1zbVwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCIgLz5cbiAgICAgICAgICAgICAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCI4XCIgeDI9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjE2XCIgeDI9XCIxMi4wMVwiIHkyPVwiMTZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFJhZGl4VG9hc3QuRGVzY3JpcHRpb24gY2xhc3NOYW1lPVwiZmxleC0xIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1sZWZ0XCI+e3RvYXN0Lm1lc3NhZ2V9PC9kaXY+XG4gICAgICAgICAgPC9SYWRpeFRvYXN0LkRlc2NyaXB0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvUmFkaXhUb2FzdC5Sb290PlxuICApO1xufVxuIiwiaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuaW1wb3J0ICcuL1Rvb2x0aXAuY3NzJztcblxuaW50ZXJmYWNlIFRvb2x0aXBBbmNob3JQcm9wcyBleHRlbmRzIEFyaWFraXQuVG9vbHRpcEFuY2hvclByb3BzIHtcbiAgcm9sZT86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlbmFibGVIVE1MPzogYm9vbGVhbjtcbiAgc2lkZT86ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xufVxuXG5leHBvcnQgY29uc3QgVG9vbHRpcEFuY2hvciA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFRvb2x0aXBBbmNob3JQcm9wcz4oZnVuY3Rpb24gVG9vbHRpcEFuY2hvcihcbiAgeyBkZXNjcmlwdGlvbiwgc2lkZSA9ICd0b3AnLCBjbGFzc05hbWUsIHJvbGUsIGVuYWJsZUhUTUwgPSBmYWxzZSwgLi4ucHJvcHMgfSxcbiAgcmVmLFxuKSB7XG4gIGNvbnN0IHRvb2x0aXAgPSBBcmlha2l0LnVzZVRvb2x0aXBTdG9yZSh7IHBsYWNlbWVudDogc2lkZSB9KTtcbiAgY29uc3QgbW91bnRlZCA9IEFyaWFraXQudXNlU3RvcmVTdGF0ZSh0b29sdGlwLCAoc3RhdGUpID0+IHN0YXRlLm1vdW50ZWQpO1xuICBjb25zdCBwbGFjZW1lbnQgPSBBcmlha2l0LnVzZVN0b3JlU3RhdGUodG9vbHRpcCwgKHN0YXRlKSA9PiBzdGF0ZS5wbGFjZW1lbnQpO1xuXG4gIGNvbnN0IHNhbml0aXplciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gRE9NUHVyaWZ5KCk7XG4gICAgaW5zdGFuY2UuYWRkSG9vaygnYWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXMnLCAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUudGFnTmFtZSAmJiBub2RlLnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzYW5pdGl6ZWRIVE1MID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVIVE1MKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc2FuaXRpemVyLnNhbml0aXplKGRlc2NyaXB0aW9uLCB7XG4gICAgICAgIEFMTE9XRURfVEFHUzogWydhJywgJ3N0cm9uZycsICdiJywgJ2VtJywgJ2knLCAnYnInLCAnY29kZSddLFxuICAgICAgICBBTExPV0VEX0FUVFI6IFsnaHJlZicsICdjbGFzcycsICd0YXJnZXQnLCAncmVsJ10sXG4gICAgICAgIEFMTE9XX0RBVEFfQVRUUjogZmFsc2UsXG4gICAgICAgIEFMTE9XX0FSSUFfQVRUUjogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignU2FuaXRpemF0aW9uIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHJldHVybiBkZXNjcmlwdGlvbjtcbiAgICB9XG4gIH0sIFtlbmFibGVIVE1MLCBkZXNjcmlwdGlvbiwgc2FuaXRpemVyXSk7XG5cbiAgY29uc3QgeyB4LCB5IH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBkaXIgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICBzd2l0Y2ggKGRpcikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHsgeDogMCwgeTogLTggfTtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IDggfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiAtOCwgeTogMCB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4geyB4OiA4LCB5OiAwIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAwIH07XG4gICAgfVxuICB9LCBbcGxhY2VtZW50XSk7XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAocm9sZSA9PT0gJ2J1dHRvbicgJiYgZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QXJpYWtpdC5Ub29sdGlwUHJvdmlkZXIgc3RvcmU9e3Rvb2x0aXB9IGhpZGVUaW1lb3V0PXswfT5cbiAgICAgIDxBcmlha2l0LlRvb2x0aXBBbmNob3JcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICBjbGFzc05hbWU9e2NuKCdjdXJzb3ItcG9pbnRlcicsIGNsYXNzTmFtZSl9XG4gICAgICAvPlxuICAgICAgPEFuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAge21vdW50ZWQgPT09IHRydWUgJiYgKFxuICAgICAgICAgIDxBcmlha2l0LlRvb2x0aXBcbiAgICAgICAgICAgIGd1dHRlcj17NH1cbiAgICAgICAgICAgIGFsd2F5c1Zpc2libGVcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgcmVuZGVyPXtcbiAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHgsIHkgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHg6IDAsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHgsIHkgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QXJpYWtpdC5Ub29sdGlwQXJyb3cgLz5cbiAgICAgICAgICAgIHtlbmFibGVIVE1MID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgICAgIF9faHRtbDogc2FuaXRpemVkSFRNTCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Bcmlha2l0LlRvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICA8L0FyaWFraXQuVG9vbHRpcFByb3ZpZGVyPlxuICApO1xufSk7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdCwgQ2hldnJvblJpZ2h0LCBNb3JlSG9yaXpvbnRhbCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgYnV0dG9uVmFyaWFudHMgfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBQYWdpbmF0aW9uID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczwnbmF2Jz4pID0+IChcbiAgPG5hdlxuICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICBhcmlhLWxhYmVsPVwicGFnaW5hdGlvblwiXG4gICAgY2xhc3NOYW1lPXtjbignbXgtYXV0byBmbGV4IHctZnVsbCBqdXN0aWZ5LWNlbnRlcicsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblBhZ2luYXRpb24uZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbic7XG5cbmNvbnN0IFBhZ2luYXRpb25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVUxpc3RFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczwndWwnPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHVsIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMScsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5QYWdpbmF0aW9uQ29udGVudC5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uQ29udGVudCc7XG5cbmNvbnN0IFBhZ2luYXRpb25JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MTElFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczwnbGknPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8bGkgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJycsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuUGFnaW5hdGlvbkl0ZW0uZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbkl0ZW0nO1xuXG50eXBlIFBhZ2luYXRpb25MaW5rUHJvcHMgPSB7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbn0gJiBQaWNrPEJ1dHRvblByb3BzLCAnc2l6ZSc+ICZcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHM8J2EnPjtcblxuY29uc3QgUGFnaW5hdGlvbkxpbmsgPSAoe1xuICBjbGFzc05hbWUsXG4gIGlzQWN0aXZlID0gZmFsc2UsXG4gIHNpemUgPSAnaWNvbicsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFnaW5hdGlvbkxpbmtQcm9wcykgPT4gKFxuICA8YVxuICAgIGFyaWEtY3VycmVudD17aXNBY3RpdmUgPyAncGFnZScgOiB1bmRlZmluZWR9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIGJ1dHRvblZhcmlhbnRzKHtcbiAgICAgICAgdmFyaWFudDogaXNBY3RpdmUgPyAnb3V0bGluZScgOiAnZ2hvc3QnLFxuICAgICAgICBzaXplLFxuICAgICAgfSksXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW4gfHwgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPlBhZ2UgbGluazwvc3Bhbj59XG4gIDwvYT5cbik7XG5QYWdpbmF0aW9uTGluay5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uTGluayc7XG5cbmNvbnN0IFBhZ2luYXRpb25QcmV2aW91cyA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uTGluaz4pID0+IChcbiAgPFBhZ2luYXRpb25MaW5rXG4gICAgYXJpYS1sYWJlbD1cIkdvIHRvIHByZXZpb3VzIHBhZ2VcIlxuICAgIHNpemU9XCJkZWZhdWx0XCJcbiAgICBjbGFzc05hbWU9e2NuKCdnYXAtMSBwbC0yLjUnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJoLTQgdy00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICA8c3Bhbj5QcmV2aW91czwvc3Bhbj5cbiAgPC9QYWdpbmF0aW9uTGluaz5cbik7XG5QYWdpbmF0aW9uUHJldmlvdXMuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvblByZXZpb3VzJztcblxuY29uc3QgUGFnaW5hdGlvbk5leHQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uTGluaz4pID0+IChcbiAgPFBhZ2luYXRpb25MaW5rXG4gICAgYXJpYS1sYWJlbD1cIkdvIHRvIG5leHQgcGFnZVwiXG4gICAgc2l6ZT1cImRlZmF1bHRcIlxuICAgIGNsYXNzTmFtZT17Y24oJ2dhcC0xIHByLTIuNScsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4+TmV4dDwvc3Bhbj5cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cImgtNCB3LTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICA8L1BhZ2luYXRpb25MaW5rPlxuKTtcblBhZ2luYXRpb25OZXh0LmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25OZXh0JztcblxuY29uc3QgUGFnaW5hdGlvbkVsbGlwc2lzID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczwnc3Bhbic+KSA9PiAoXG4gIDxzcGFuXG4gICAgYXJpYS1oaWRkZW5cbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGgtOSB3LTkgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8TW9yZUhvcml6b250YWwgY2xhc3NOYW1lPVwiaC00IHctNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPk1vcmUgcGFnZXM8L3NwYW4+XG4gIDwvc3Bhbj5cbik7XG5QYWdpbmF0aW9uRWxsaXBzaXMuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbkVsbGlwc2lzJztcblxuZXhwb3J0IHtcbiAgUGFnaW5hdGlvbixcbiAgUGFnaW5hdGlvbkNvbnRlbnQsXG4gIFBhZ2luYXRpb25FbGxpcHNpcyxcbiAgUGFnaW5hdGlvbkl0ZW0sXG4gIFBhZ2luYXRpb25MaW5rLFxuICBQYWdpbmF0aW9uTmV4dCxcbiAgUGFnaW5hdGlvblByZXZpb3VzLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFByb2dyZXNzUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcm9ncmVzcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBQcm9ncmVzcyA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByb2dyZXNzUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByb2dyZXNzUHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgdmFsdWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UHJvZ3Jlc3NQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlIGgtMiB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzIwJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8UHJvZ3Jlc3NQcmltaXRpdmUuSW5kaWNhdG9yXG4gICAgICBjbGFzc05hbWU9XCJoLWZ1bGwgdy1mdWxsIGZsZXgtMSBiZy1wcmltYXJ5IHRyYW5zaXRpb24tYWxsXCJcbiAgICAgIHN0eWxlPXt7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLSR7MTAwIC0gKHZhbHVlIHx8IDApfSUpYCB9fVxuICAgIC8+XG4gIDwvUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdD5cbikpO1xuUHJvZ3Jlc3MuZGlzcGxheU5hbWUgPSBQcm9ncmVzc1ByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQcm9ncmVzcyB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgT1RQSW5wdXQsIE9UUElucHV0Q29udGV4dCB9IGZyb20gJ2lucHV0LW90cCc7XG5pbXBvcnQgeyBNaW51cyB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBJbnB1dE9UUCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIE9UUElucHV0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBPVFBJbnB1dD5cbj4oKHsgY2xhc3NOYW1lLCBjb250YWluZXJDbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8T1RQSW5wdXRcbiAgICByZWY9e3JlZn1cbiAgICBjb250YWluZXJDbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGhhcy1bOmRpc2FibGVkXTpvcGFjaXR5LTUwJyxcbiAgICAgIGNvbnRhaW5lckNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNsYXNzTmFtZT17Y24oJ2Rpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5JbnB1dE9UUC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUCc7XG5cbmNvbnN0IElucHV0T1RQR3JvdXAgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPCdkaXYnPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkaXYnPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlcicsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuSW5wdXRPVFBHcm91cC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUEdyb3VwJztcblxuY29uc3QgSW5wdXRPVFBTbG90ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjwnZGl2Jz4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz4gJiB7IGluZGV4OiBudW1iZXIgfVxuPigoeyBpbmRleCwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgaW5wdXRPVFBDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChPVFBJbnB1dENvbnRleHQpO1xuXG4gIGlmICghaW5wdXRPVFBDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dE9UUFNsb3QgbXVzdCBiZSB1c2VkIHdpdGhpbiBhbiBPVFBJbnB1dCcpO1xuICB9XG5cbiAgY29uc3QgeyBjaGFyLCBoYXNGYWtlQ2FyZXQsIGlzQWN0aXZlIH0gPSBpbnB1dE9UUENvbnRleHQuc2xvdHNbaW5kZXhdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAndGV4dC1tZCByZWxhdGl2ZSBmbGV4IGgtMTEgdy0xMSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXkgYm9yZGVyLXIgYm9yZGVyLWlucHV0IHNoYWRvdy1zbSB0cmFuc2l0aW9uLWFsbCBmaXJzdDpyb3VuZGVkLWwteGwgZmlyc3Q6Ym9yZGVyLWwgbGFzdDpyb3VuZGVkLXIteGwnLFxuICAgICAgICBpc0FjdGl2ZSAmJiAnei0xMCByaW5nLTEgcmluZy1yaW5nJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hhcn1cbiAgICAgIHtoYXNGYWtlQ2FyZXQgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1jYXJldC1ibGluayBoLTQgdy1weCBiZy1mb3JlZ3JvdW5kIGR1cmF0aW9uLTEwMDBcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcbklucHV0T1RQU2xvdC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUFNsb3QnO1xuXG5jb25zdCBJbnB1dE9UUFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8J2Rpdic+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2Rpdic+XG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IHJlZj17cmVmfSByb2xlPVwic2VwYXJhdG9yXCIgey4uLnByb3BzfT5cbiAgICA8TWludXMgLz5cbiAgPC9kaXY+XG4pKTtcbklucHV0T1RQU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gJ0lucHV0T1RQU2VwYXJhdG9yJztcblxuZXhwb3J0IHsgSW5wdXRPVFAsIElucHV0T1RQR3JvdXAsIElucHV0T1RQU2xvdCwgSW5wdXRPVFBTZXBhcmF0b3IgfTtcbiIsImltcG9ydCB7IFNlYXJjaCwgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG4vKiogVGhpcyBpcyBhIGdlbmVyaWMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gTWVudSBhbmQgU2VsZWN0IGNvbXBvbmVudHMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE11bHRpU2VhcmNoKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBwbGFjZWhvbGRlcixcbiAgY2xhc3NOYW1lID0gJycsXG59OiB7XG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsO1xuICBvbkNoYW5nZTogKGZpbHRlcjogc3RyaW5nKSA9PiB2b2lkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcblxuICBjb25zdCBvbkNoYW5nZUhhbmRsZXI6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSksXG4gICAgW29uQ2hhbmdlXSxcbiAgKTtcblxuICBjb25zdCBjbGVhclNlYXJjaCA9ICgpID0+IHtcbiAgICBvbkNoYW5nZSgnJyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIH0sIDApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZvY3VzOnRvLXN1cmZhY2UtcHJpbWFyeS81MCBncm91cCBzdGlja3kgbGVmdC0wIHRvcC0wIHotMTAgZmxleCBoLTEyIGl0ZW1zLWNlbnRlciBnYXAtMiBiZy1ncmFkaWVudC10by1iIGZyb20tc3VyZmFjZS10ZXJ0aWFyeS1hbHQgZnJvbS02NSUgdG8tdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtdGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCBmb2N1czpiZy1ncmFkaWVudC10by1iIGZvY3VzOmZyb20tc3VyZmFjZS1wcmltYXJ5JyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICA+XG4gICAgICA8U2VhcmNoXG4gICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC10ZXh0LXNlY29uZGFyeS1hbHQgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwXCJcbiAgICAgICAgYXJpYS1oaWRkZW49eyd0cnVlJ31cbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICB2YWx1ZT17dmFsdWUgPz8gJyd9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUhhbmRsZXJ9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtTdHJpbmcocGxhY2Vob2xkZXIgPz8gJ1NlYXJjaC4uLicpfVxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIE1vZGVsXCJcbiAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIHJvdW5kZWQtbWQgYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcHgtMi41IHB5LTIgdGV4dC1zbSBwbGFjZWhvbGRlci10ZXh0LXNlY29uZGFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctcmluZy1wcmltYXJ5XCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3JlbGF0aXZlIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcm91bmRlZC1tZCB0ZXh0LXRleHQtc2Vjb25kYXJ5LWFsdCcsXG4gICAgICAgICAgKHZhbHVlPy5sZW5ndGggPz8gMCkgPyAnY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0xMDAnIDogJ2hpZGRlbicsXG4gICAgICAgICl9XG4gICAgICAgIGFyaWEtbGFiZWw9eydDbGVhciBzZWFyY2gnfVxuICAgICAgICBvbkNsaWNrPXtjbGVhclNlYXJjaH1cbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICA+XG4gICAgICAgIDxYXG4gICAgICAgICAgYXJpYS1oaWRkZW49eyd0cnVlJ31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ3RleHQtdGV4dC1zZWNvbmRhcnktYWx0JyxcbiAgICAgICAgICAgICh2YWx1ZT8ubGVuZ3RoID8/IDApID8gJ2N1cnNvci1wb2ludGVyIG9wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTAnLFxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgYSBtdWx0aVNlYXJjaCBpbnB1dFxuICogQHBhcmFtIG5vZGVcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdEdldFN0cmluZ0tleShub2RlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJykge1xuICAgIC8vIEJVR0ZJWDogRGV0ZWN0IHBzZWRlbyBzZXBhcmF0b3JzIGFuZCBtYWtlIHN1cmUgdGhleSBkb24ndCBhcHBlYXIgaW4gdGhlIGxpc3Qgd2hlbiBmaWx0ZXJpbmcgaXRlbXNcbiAgICAvLyBpdCBtYWtlcyBzdXJlIChmb3IgdGhlIG1vc3QgcGFydCkgdGhhdCB0aGUgbW9kZWwgbmFtZSBzdGFydHMgYW5kIGVuZHMgd2l0aCBkYXNoZXNcbiAgICAvLyBUaGUgbG9uZy10ZXJtIGZpeCBoZXJlIHdvdWxkIGJlIHRvIGVuYWJsZSBzZXBlcmF0b3JzIChtb2RlbCBncm91cGluZ3MpIGJ1dCB0aGVyZSdzIG5vXG4gICAgLy8gZmVhdHVyZSBtb2NrcyBmb3Igc3VjaCBhIHRoaW5nIHlldFxuICAgIGlmIChub2RlLnN0YXJ0c1dpdGgoJy0tLScpICYmIG5vZGUuZW5kc1dpdGgoJy0tLScpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGUudG9VcHBlckNhc2UoKTtcbiAgfVxuICAvLyBUaGlzIHNob3VsZCBiZSBhIG5vb3AsIGJ1dCBpdCdzIGhlcmUgZm9yIHJlZHVuZGFuY3lcbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIEhvb2sgZm9yIGNvbmRpdGlvbmFsbHkgbWFraW5nIGEgbXVsdGktZWxlbWVudCBsaXN0IGNvbXBvbmVudCBpbnRvIGEgc29ydGFibGUgY29tcG9uZW50XG4gKiBSZXR1cm5zIGEgUmVuZGVyTm9kZSBmb3Igc2VhcmNoIGlucHV0IHdoZW4gc2VhcmNoIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlXG4gKiBAcGFyYW0gYXZhaWxhYmxlT3B0aW9uc1xuICogQHBhcmFtIHBsYWNlaG9sZGVyXG4gKiBAcGFyYW0gZ2V0VGV4dEtleU92ZXJyaWRlXG4gKiBAcGFyYW0gY2xhc3NOYW1lIC0gQWRkaXRpb25hbCBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgc2VhcmNoIGNvbnRhaW5lclxuICogQHBhcmFtIGRpc2FibGVkIC0gSWYgdGhlIHNlYXJjaCBzaG91bGQgYmUgZGlzYWJsZWRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNdWx0aVNlYXJjaDxPcHRpb25zVHlwZSBleHRlbmRzIHVua25vd25bXT4oe1xuICBhdmFpbGFibGVPcHRpb25zID0gW10gYXMgdW5rbm93biBhcyBPcHRpb25zVHlwZSxcbiAgcGxhY2Vob2xkZXIsXG4gIGdldFRleHRLZXlPdmVycmlkZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxufToge1xuICBhdmFpbGFibGVPcHRpb25zPzogT3B0aW9uc1R5cGU7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBnZXRUZXh0S2V5T3ZlcnJpZGU/OiAobm9kZTogT3B0aW9uc1R5cGVbMF0pID0+IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59KTogW09wdGlvbnNUeXBlLCBSZWFjdC5SZWFjdE5vZGVdIHtcbiAgY29uc3QgW2ZpbHRlclZhbHVlLCBzZXRGaWx0ZXJWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvLyBXZSBjb25kaXRpb25hbGx5IHNob3cgdGhlIHNlYXJjaCB3aGVuIHRoZXJlJ3MgbW9yZSB0aGFuIDEwIGVsZW1lbnRzIGluIHRoZSBtZW51XG4gIGNvbnN0IHNob3VsZFNob3dTZWFyY2ggPSBhdmFpbGFibGVPcHRpb25zLmxlbmd0aCA+IDEwICYmICFkaXNhYmxlZDtcblxuICAvLyBEZWZpbmUgdGhlIGhlbHBlciBmdW5jdGlvbiB1c2VkIHRvIGVuYWJsZSBzZWFyY2hcbiAgLy8gSWYgdGhpcyBpcyBpbnZhbGlkbHkgZGVzY3JpYmVkLCB3ZSB3aWxsIGFzc3VtZSBkZXZlbG9wZXIgZXJyb3IgLSB0Zi4gYXZvaWQgcmVuZGVyaW5nXG4gIGNvbnN0IGdldFRleHRLZXlIZWxwZXIgPSBnZXRUZXh0S2V5T3ZlcnJpZGUgfHwgZGVmYXVsdEdldFN0cmluZ0tleTtcblxuICAvLyBJdGVyYXRlIHNhaWQgb3B0aW9uc1xuICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gZmlsdGVyVmFsdWUgPz8gJyc7XG4gICAgaWYgKCFzaG91bGRTaG93U2VhcmNoIHx8ICFjdXJyZW50RmlsdGVyIHx8ICFhdmFpbGFibGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgLy8gRG9uJ3QgcmVuZGVyIGlmIGF2YWlsYWJsZSBvcHRpb25zIGFyZW4ndCBwcmVzZW50LCB0aGVyZSdzIG5vIGZpbHRlciBhY3RpdmVcbiAgICAgIHJldHVybiBhdmFpbGFibGVPcHRpb25zO1xuICAgIH1cbiAgICAvLyBGaWx0ZXIgdGhyb3VnaCB0aGUgdmFsdWVzLCB1c2luZyBhIHNpbXBsZSB0ZXh0LWJhc2VkIHNlYXJjaFxuICAgIC8vIG5vdGhpbmcgdG9vIGZhbmN5LCBidXQgd2UgY2FuIGFkZCBhIGJldHRlciBzZWFyY2ggYWxnbyBsYXRlciBpZiB3ZSBuZWVkXG4gICAgY29uc3QgdXBwZXJGaWx0ZXJWYWx1ZSA9IGN1cnJlbnRGaWx0ZXIudG9VcHBlckNhc2UoKTtcblxuICAgIHJldHVybiBhdmFpbGFibGVPcHRpb25zLmZpbHRlcigodmFsdWUpID0+XG4gICAgICBnZXRUZXh0S2V5SGVscGVyKHZhbHVlKS5pbmNsdWRlcyh1cHBlckZpbHRlclZhbHVlKSxcbiAgICApIGFzIE9wdGlvbnNUeXBlO1xuICB9LCBbYXZhaWxhYmxlT3B0aW9ucywgZ2V0VGV4dEtleUhlbHBlciwgZmlsdGVyVmFsdWUsIHNob3VsZFNob3dTZWFyY2hdKTtcblxuICBjb25zdCBvblNlYXJjaENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0RmlsdGVyVmFsdWU6IHN0cmluZykgPT4gc2V0RmlsdGVyVmFsdWUobmV4dEZpbHRlclZhbHVlKSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBzZWFyY2hSZW5kZXIgPSBzaG91bGRTaG93U2VhcmNoID8gKFxuICAgIDxNdWx0aVNlYXJjaFxuICAgICAgdmFsdWU9e2ZpbHRlclZhbHVlfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBvbkNoYW5nZT17b25TZWFyY2hDaGFuZ2V9XG4gICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgLz5cbiAgKSA6IG51bGw7XG5cbiAgcmV0dXJuIFtmaWx0ZXJlZE9wdGlvbnMsIHNlYXJjaFJlbmRlcl07XG59XG4iLCJpbXBvcnQgeyBHcmlwVmVydGljYWwgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0ICogYXMgUmVzaXphYmxlUHJpbWl0aXZlIGZyb20gJ3JlYWN0LXJlc2l6YWJsZS1wYW5lbHMnO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbEdyb3VwID0gKHtcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsR3JvdXA+KSA9PiAoXG4gIDxSZXNpemFibGVQcmltaXRpdmUuUGFuZWxHcm91cFxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaC1mdWxsIHctZnVsbCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmZsZXgtY29sJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbCA9IFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbDtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlID0gKHtcbiAgd2l0aEhhbmRsZSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPiAmIHtcbiAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gIDxSZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGVcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3JlbGF0aXZlIGZsZXggdy1weCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOmluc2V0LXktMCBhZnRlcjpsZWZ0LTEvMiBhZnRlcjp3LTEgYWZ0ZXI6LXRyYW5zbGF0ZS14LTEvMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTpoLXB4IGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6bGVmdC0wIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6aC0xIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6LXRyYW5zbGF0ZS15LTEvMiBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOnRyYW5zbGF0ZS14LTAgWyZbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdPmRpdl06cm90YXRlLTkwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHt3aXRoSGFuZGxlICYmIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiei0xMCBmbGV4IGgtNCB3LTMgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtc20gYm9yZGVyIGJnLWJvcmRlclwiPlxuICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cImgtMi41IHctMi41XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPlxuKTtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlQWx0ID0gKHtcbiAgd2l0aEhhbmRsZSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPiAmIHtcbiAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gIDxSZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGVcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2dyb3VwIHJlbGF0aXZlIGZsZXggdy1weCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOmluc2V0LXktMCBhZnRlcjpsZWZ0LTEvMiBhZnRlcjp3LTEgYWZ0ZXI6LXRyYW5zbGF0ZS14LTEvMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTpoLXB4IGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6bGVmdC0wIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6aC0xIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6LXRyYW5zbGF0ZS15LTEvMiBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOnRyYW5zbGF0ZS14LTAgWyZbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdPmRpdl06cm90YXRlLTkwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHt3aXRoSGFuZGxlICYmIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW52aXNpYmxlIHotMTAgZmxleCBoLTQgdy0zIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGJvcmRlciBiZy1ib3JkZXIgZ3JvdXAtaG92ZXI6dmlzaWJsZSBncm91cC1hY3RpdmU6dmlzaWJsZSBncm91cC1kYXRhLVtyZXNpemUtaGFuZGxlLWFjdGl2ZV06dmlzaWJsZVwiPlxuICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cImgtMi41IHctMi41XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPlxuKTtcblxuZXhwb3J0IHsgUmVzaXphYmxlUGFuZWxHcm91cCwgUmVzaXphYmxlUGFuZWwsIFJlc2l6YWJsZUhhbmRsZSwgUmVzaXphYmxlSGFuZGxlQWx0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyBDYXJldFNvcnRJY29uLCBDaGVja0ljb24sIENoZXZyb25Eb3duSWNvbiwgQ2hldnJvblVwSWNvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pY29ucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG4vLyBAdHMtaWdub3JlIC0gUmFkaXggVUkgdHlwZSBjb25mbGljdHMgd2l0aCBSZWFjdCB0eXBlc1xuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBib3JkZXItaW5wdXQgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtc20gc2hhZG93LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTYwMCBbJj5zcGFuXTpsaW5lLWNsYW1wLTEnLFxuICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2FyZXRTb3J0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvblVwSWNvbiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbERvd25CdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd25JY29uIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIGNoaWxkcmVuLCBwb3NpdGlvbiA9ICdwb3BwZXInLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdiZy1wb3BvdmVyIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHJlbGF0aXZlIHotNTAgbWF4LWgtOTYgbWluLXctWzhyZW1dIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXJrOmJvcmRlci1ncmF5LTYwMCcsXG4gICAgICAgIHBvc2l0aW9uID09PSAncG9wcGVyJ1xuICAgICAgICAgID8gJ2RhdGEtW3NpZGU9Ym90dG9tXTp0cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06LXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06dHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06LXRyYW5zbGF0ZS15LTEnXG4gICAgICAgICAgOiAnJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncC0xJyxcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gJ3BvcHBlcidcbiAgICAgICAgICAgID8gJ2gtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHctZnVsbCBtaW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXSdcbiAgICAgICAgICAgIDogJycsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncHgtMiBweS0xLjUgdGV4dC1zbSBmb250LXNlbWlib2xkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC0yIHByLTggdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignLW14LTEgbXktMSBoLXB4IGJnLW11dGVkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IFRyYW5zbGF0aW9uS2V5cywgdXNlTG9jYWxpemUgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IEFuaW1hdGVkU2VhcmNoSW5wdXQgPSAoe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGlzU2VhcmNoaW5nOiBzZWFyY2hpbmcsXG4gIHBsYWNlaG9sZGVyLFxufToge1xuICB2YWx1ZT86IHN0cmluZztcbiAgb25DaGFuZ2U6IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgaXNTZWFyY2hpbmc/OiBib29sZWFuO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCBpc1NlYXJjaGluZyA9IHNlYXJjaGluZyA9PT0gdHJ1ZTtcbiAgY29uc3QgaGFzVmFsdWUgPSB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICB7LyogSWNvbiBvbiB0aGUgbGVmdCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMyB0b3AtMS8yIHotNTAgLXRyYW5zbGF0ZS15LTEvMlwiPlxuICAgICAgICAgICAgPFNlYXJjaFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgIGBoLTQgdy00IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dGAsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAndGV4dC1ibHVlLTQwMCcgOiAndGV4dC1ncmF5LTUwMCcsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIElucHV0IGZpZWxkICovfVxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17bG9jYWxpemUoJ2NvbV91aV9zZWFyY2gnKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHBlZXIgcmVsYXRpdmUgei0yMCB3LWZ1bGwgcm91bmRlZC1sZyBiZy1zdXJmYWNlLXNlY29uZGFyeSBweS0yIHBsLTEwIG91dGxpbmUtbm9uZSBiYWNrZHJvcC1ibHVyLXNtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCBwbGFjZWhvbGRlcjp0ZXh0LWdyYXktNTAwIGZvY3VzOnJpbmctcmluZ2B9XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHsvKiBHcmFkaWVudCBvdmVybGF5ICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMCB6LTIwIHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNTAwLzIwIHZpYS1wdXJwbGUtNTAwLzIwIHRvLWJsdWUtNTAwLzIwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ29wYWNpdHktMTAwIGJsdXItc20nIDogJ29wYWNpdHktMCBibHVyLW5vbmUnfSBgfVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7LyogQW5pbWF0ZWQgbG9hZGluZyBpbmRpY2F0b3IgKi99XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgYWJzb2x1dGUgcmlnaHQtMyB0b3AtMS8yIHotMjAgLXRyYW5zbGF0ZS15LTEvMiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdzY2FsZS0xMDAgb3BhY2l0eS0xMDAnIDogJ3NjYWxlLTAgb3BhY2l0eS0wJ30gYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtMiB3LTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGFuaW1hdGUtcGluZyByb3VuZGVkLWZ1bGwgYmctYmx1ZS01MDAvNjBcIiAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1mdWxsIGJnLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogT3V0ZXIgZ2xvdyBlZmZlY3QgKi99XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIC1pbnNldC04IC16LTEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTcwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ3NjYWxlLTEwNSBvcGFjaXR5LTEwMCcgOiAnc2NhbGUtMTAwIG9wYWNpdHktMCd9IGB9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YGJnLWdyYWRpZW50LXJhZGlhbCBhYnNvbHV0ZSBpbnNldC0wIGZyb20tYmx1ZS01MDAvMTAgdG8tdHJhbnNwYXJlbnQgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTcwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ2FuaW1hdGUtcHVsc2Utc2xvdyBvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS0wJ30gYH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAvNSB2aWEtYmx1ZS01MDAvNSB0by1wdXJwbGUtNTAwLzUgYmx1ci14bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdhbmltYXRlLWdyYWRpZW50LXggb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktMCd9IGB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgYWJzb2x1dGUgaW5zZXQtMCAtei0yMCBzY2FsZS0xMDAgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNTAwLzEwIHZpYS1wdXJwbGUtNTAwLzEwIHRvLWJsdWUtNTAwLzEwIG9wYWNpdHktMCBibHVyLXhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCBwZWVyLWZvY3VzOnNjYWxlLTEwNSBwZWVyLWZvY3VzOm9wYWNpdHktMTAwYH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBbmltYXRlZFNlYXJjaElucHV0O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJjaGl2ZUljb24oeyBjbGFzc05hbWUgPSAnaWNvbi1tZCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMuNjIxODggMy4wNzkxOEMzLjg3NTk3IDIuNTcxIDQuMzk1MzcgMi4yNSA0Ljk2MzUzIDIuMjVIMTMuMDM2NUMxMy42MDQ2IDIuMjUgMTQuMTI0IDIuNTcxIDE0LjM3ODEgMy4wNzkxOEwxNS43NSA1LjgyMjk1VjEzLjVDMTUuNzUgMTQuNzQyNiAxNC43NDI2IDE1Ljc1IDEzLjUgMTUuNzVINC41QzMuMjU3MzYgMTUuNzUgMi4yNSAxNC43NDI2IDIuMjUgMTMuNVY1LjgyMjk1TDMuNjIxODggMy4wNzkxOFpNMTMuMDM2NSAzLjc1SDQuOTYzNTNMNC4yMTM1MyA1LjI1SDEzLjc4NjVMMTMuMDM2NSAzLjc1Wk0xNC4yNSA2Ljc1SDMuNzVWMTMuNUMzLjc1IDEzLjkxNDIgNC4wODU3OSAxNC4yNSA0LjUgMTQuMjVIMTMuNUMxMy45MTQyIDE0LjI1IDE0LjI1IDEzLjkxNDIgMTQuMjUgMTMuNVY2Ljc1Wk02Ljc1IDlDNi43NSA4LjU4NTc5IDcuMDg1NzkgOC4yNSA3LjUgOC4yNUgxMC41QzEwLjkxNDIgOC4yNSAxMS4yNSA4LjU4NTc5IDExLjI1IDlDMTEuMjUgOS40MTQyMSAxMC45MTQyIDkuNzUgMTAuNSA5Ljc1SDcuNUM3LjA4NTc5IDkuNzUgNi43NSA5LjQxNDIxIDYuNzUgOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmxvY2tzKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbignbHVjaWRlIGx1Y2lkZS1ibG9ja3MnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI3XCIgeD1cIjE0XCIgeT1cIjNcIiByeD1cIjFcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMCAyMVY4YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAtMS0xSDNcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBsdWdpbih7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTMuMTY0Ljk4YS43LjcgMCAwIDAtMS4zMjggMGwtLjQ3OCAxLjQzNWEuNy43IDAgMCAxLS40NDMuNDQzbC0xLjQzNi40NzhhLjcuNyAwIDAgMCAwIDEuMzI4bDEuNDM2LjQ3OWEuNy43IDAgMCAxIC40NDMuNDQybC40NzggMS40MzZhLjcuNyAwIDAgMCAxLjMyOCAwbC40NzgtMS40MzZhLjcuNyAwIDAgMSAuNDQzLS40NDNsMS40MzYtLjQ3OGEuNy43IDAgMCAwIDAtMS4zMjhsLTEuNDM2LS40NzhhLjcuNyAwIDAgMS0uNDQzLS40NDNMMTMuMTY0Ljk3OVpcIiAvPlxuICAgICAgICA8cGF0aCBkPVwiTTEzLjIzNyAxMC41MzRjLS4yMjgtLjI0NS0uNTEzLS40Ni0uODQ3LS40NmEuODIzLjgyMyAwIDAgMC0uODI4Ljg0OWMuMDQgMS4wNC4xMjggMi4wNjcuMjYzIDMuMDhhLjYxOS42MTkgMCAwIDEtLjUyOC42OTVjLS44NzIuMTIxLTEuNzQ4LjIwOC0yLjYyNi4yNjJhLjguOCAwIDAgMS0uODQ1LS44MDVjMC0uMzI1LjIxLS42MDIuNDUtLjgyLjIzNS0uMjE1LjM3NS0uNDg4LjM3NS0uNzg3IDAtLjY4My0uNzM4LTEuMjM3LTEuNjUtMS4yMzctLjkxMSAwLTEuNjUuNTU0LTEuNjUgMS4yMzcgMCAuMjk0LjEzNy41NjMuMzY0Ljc3NS4yNDUuMjI5LjQ2MS41MTMuNDYxLjg0OGEuODIzLjgyMyAwIDAgMS0uODUuODI5IDMzLjgwOSAzMy44MDkgMCAwIDEtMy4yNjYtLjI3OC42MTkuNjE5IDAgMCAxLS41MzItLjUzMiAzNC4wOTkgMzQuMDk5IDAgMCAxLS4yNzgtMy4yNjcuODIzLjgyMyAwIDAgMSAuODMtLjg1Yy4zMzMgMCAuNjE5LjIxNi44NDYuNDYxLjIxMi4yMjguNDgyLjM2NC43NzYuMzY0LjY4MyAwIDEuMjM3LS43MzggMS4yMzctMS42NSAwLS45MS0uNTU0LTEuNjUtMS4yMzctMS42NS0uMjk5IDAtLjU3Mi4xNDItLjc4Ni4zNzYtLjIxOS4yNC0uNDk2LjQ1LS44MjEuNDVhLjguOCAwIDAgMS0uODA1LS44NDVjLjA1NC0uODg1LjE0Mi0xLjc2LjI2Mi0yLjYyNmEuNjE5LjYxOSAwIDAgMSAuNjk1LS41MjhjMS4wMjIuMTM2IDIuMDUuMjI0IDMuMDguMjYzYS44MjIuODIyIDAgMCAwIC44NS0uODI4YzAtLjMzNC0uMjE3LS42Mi0uNDYyLS44NDctLjIyNy0uMjEyLS4zNjMtLjQ4Mi0uMzYzLS43NzZDNS4zNTIgMS41NTQgNi4wOSAxIDcuMDAyIDFjLjkxIDAgMS42NDkuNTU0IDEuNjQ5IDEuMjM3IDAgLjE3My0uMDEyLjMyNy0uMDI5LjQ3M0M4LjI1OCAzIDggMy40MSA4IDRjMCAxLjUgMS42NjcgMS44MzMgMi41IDIgLjE2Ny44MzMuNSAyLjUgMiAyLjUuNzMyIDAgMS4xODYtLjM5NyAxLjQ3OS0uOWwuMDM0LS4wMDFjLjY4MyAwIDEuMjM3LjczOCAxLjIzNyAxLjY1IDAgLjkxMS0uNTU0IDEuNjUtMS4yMzcgMS42NS0uMjk0IDAtLjU2NC0uMTM3LS43NzYtLjM2NFpcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdQVEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgIHZpZXdCb3g9e2AwIDAgJHt1bml0fSAke3VuaXR9YH1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0zNy41MzI0IDE2Ljg3MDdDMzcuOTgwOCAxNS41MjQxIDM4LjEzNjMgMTQuMDk3NCAzNy45ODg2IDEyLjY4NTlDMzcuODQwOSAxMS4yNzQ0IDM3LjM5MzQgOS45MTA3NiAzNi42NzYgOC42ODYyMkMzNS42MTI2IDYuODM0MDQgMzMuOTg4MiA1LjM2NzYgMzIuMDM3MyA0LjQ5ODVDMzAuMDg2NCAzLjYyOTQxIDI3LjkwOTggMy40MDI1OSAyNS44MjE1IDMuODUwNzhDMjQuODc5NiAyLjc4OTMgMjMuNzIxOSAxLjk0MTI1IDIyLjQyNTcgMS4zNjM0MUMyMS4xMjk1IDAuNzg1NTc1IDE5LjcyNDkgMC40OTEyNjkgMTguMzA1OCAwLjUwMDE5N0MxNi4xNzA4IDAuNDk1MDQ0IDE0LjA4OTMgMS4xNjgwMyAxMi4zNjE0IDIuNDIyMTRDMTAuNjMzNSAzLjY3NjI0IDkuMzQ4NTMgNS40NDY2NiA4LjY5MTcgNy40NzgxNUM3LjMwMDg1IDcuNzYyODYgNS45ODY4NiA4LjM0MTQgNC44Mzc3IDkuMTc1MDVDMy42ODg1NCAxMC4wMDg3IDIuNzMwNzMgMTEuMDc4MiAyLjAyODM5IDEyLjMxMkMwLjk1NjQ2NCAxNC4xNTkxIDAuNDk4OTA1IDE2LjI5ODggMC43MjE2OTggMTguNDIyOEMwLjk0NDQ5MiAyMC41NDY3IDEuODM2MTIgMjIuNTQ0OSAzLjI2OCAyNC4xMjkzQzIuODE5NjYgMjUuNDc1OSAyLjY2NDEzIDI2LjkwMjYgMi44MTE4MiAyOC4zMTQxQzIuOTU5NTEgMjkuNzI1NiAzLjQwNzAxIDMxLjA4OTIgNC4xMjQzNyAzMi4zMTM4QzUuMTg3OTEgMzQuMTY1OSA2LjgxMjMgMzUuNjMyMiA4Ljc2MzIxIDM2LjUwMTNDMTAuNzE0MSAzNy4zNzA0IDEyLjg5MDcgMzcuNTk3MyAxNC45Nzg5IDM3LjE0OTJDMTUuOTIwOCAzOC4yMTA3IDE3LjA3ODYgMzkuMDU4NyAxOC4zNzQ3IDM5LjYzNjZDMTkuNjcwOSA0MC4yMTQ0IDIxLjA3NTUgNDAuNTA4NyAyMi40OTQ2IDQwLjQ5OThDMjQuNjMwNyA0MC41MDU0IDI2LjcxMzMgMzkuODMyMSAyOC40NDE4IDM4LjU3NzJDMzAuMTcwNCAzNy4zMjIzIDMxLjQ1NTYgMzUuNTUwNiAzMi4xMTE5IDMzLjUxNzlDMzMuNTAyNyAzMy4yMzMyIDM0LjgxNjcgMzIuNjU0NyAzNS45NjU5IDMxLjgyMUMzNy4xMTUgMzAuOTg3NCAzOC4wNzI4IDI5LjkxNzggMzguNzc1MiAyOC42ODRDMzkuODQ1OCAyNi44MzcxIDQwLjMwMjMgMjQuNjk3OSA0MC4wNzg5IDIyLjU3NDhDMzkuODU1NiAyMC40NTE3IDM4Ljk2MzkgMTguNDU0NCAzNy41MzI0IDE2Ljg3MDdaTTIyLjQ5NzggMzcuODg0OUMyMC43NDQzIDM3Ljg4NzQgMTkuMDQ1OSAzNy4yNzMzIDE3LjY5OTQgMzYuMTUwMUMxNy43NjAxIDM2LjExNyAxNy44NjY2IDM2LjA1ODYgMTcuOTM2IDM2LjAxNjFMMjUuOTAwNCAzMS40MTU2QzI2LjEwMDMgMzEuMzAxOSAyNi4yNjYzIDMxLjEzNyAyNi4zODEzIDMwLjkzNzhDMjYuNDk2NCAzMC43Mzg2IDI2LjU1NjMgMzAuNTEyNCAyNi41NTQ5IDMwLjI4MjVWMTkuMDU0MkwyOS45MjEzIDIwLjk5OEMyOS45Mzg5IDIxLjAwNjggMjkuOTU0MSAyMS4wMTk4IDI5Ljk2NTYgMjEuMDM1OUMyOS45NzcgMjEuMDUyIDI5Ljk4NDIgMjEuMDcwNyAyOS45ODY3IDIxLjA5MDJWMzAuMzg4OUMyOS45ODQyIDMyLjM3NSAyOS4xOTQ2IDM0LjI3OTEgMjcuNzkwOSAzNS42ODQxQzI2LjM4NzIgMzcuMDg5MiAyNC40ODM4IDM3Ljg4MDYgMjIuNDk3OCAzNy44ODQ5Wk02LjM5MjI3IDMxLjAwNjRDNS41MTM5NyAyOS40ODg4IDUuMTk3NDIgMjcuNzEwNyA1LjQ5ODA0IDI1Ljk4MzJDNS41NTcxOCAyNi4wMTg3IDUuNjYwNDggMjYuMDgxOCA1LjczNDYxIDI2LjEyNDRMMTMuNjk5IDMwLjcyNDhDMTMuODk3NSAzMC44NDA4IDE0LjEyMzMgMzAuOTAyIDE0LjM1MzIgMzAuOTAyQzE0LjU4MyAzMC45MDIgMTQuODA4OCAzMC44NDA4IDE1LjAwNzMgMzAuNzI0OEwyNC43MzEgMjUuMTEwM1YyOC45OTc5QzI0LjczMjEgMjkuMDE3NyAyNC43MjgzIDI5LjAzNzYgMjQuNzE5OSAyOS4wNTU2QzI0LjcxMTUgMjkuMDczNiAyNC42OTg4IDI5LjA4OTMgMjQuNjgyOSAyOS4xMDEyTDE2LjYzMTcgMzMuNzQ5N0MxNC45MDk2IDM0Ljc0MTYgMTIuODY0MyAzNS4wMDk3IDEwLjk0NDcgMzQuNDk1NEM5LjAyNTA2IDMzLjk4MTEgNy4zODc4NSAzMi43MjYzIDYuMzkyMjcgMzEuMDA2NFpNNC4yOTcwNyAxMy42MTk0QzUuMTcxNTYgMTIuMDk5OCA2LjU1Mjc5IDEwLjkzNjQgOC4xOTg4NSAxMC4zMzI3QzguMTk4ODUgMTAuNDAxMyA4LjE5NDkxIDEwLjUyMjggOC4xOTQ5MSAxMC42MDcxVjE5LjgwOEM4LjE5MzUxIDIwLjAzNzggOC4yNTMzNCAyMC4yNjM4IDguMzY4MjMgMjAuNDYyOUM4LjQ4MzEyIDIwLjY2MTkgOC42NDg5MyAyMC44MjY3IDguODQ4NjMgMjAuOTQwNEwxOC41NzIzIDI2LjU1NDJMMTUuMjA2IDI4LjQ5NzlDMTUuMTg5NCAyOC41MDg5IDE1LjE3MDMgMjguNTE1NSAxNS4xNTA1IDI4LjUxNzNDMTUuMTMwNyAyOC41MTkxIDE1LjExMDcgMjguNTE2IDE1LjA5MjQgMjguNTA4Mkw3LjA0MDQ2IDIzLjg1NTdDNS4zMjEzNSAyMi44NjAxIDQuMDY3MTYgMjEuMjIzNSAzLjU1Mjg5IDE5LjMwNDZDMy4wMzg2MiAxNy4zODU4IDMuMzA2MjQgMTUuMzQxMyA0LjI5NzA3IDEzLjYxOTRaTTMxLjk1NSAyMC4wNTU2TDIyLjIzMTIgMTQuNDQxMUwyNS41OTc2IDEyLjQ5ODFDMjUuNjE0MiAxMi40ODcyIDI1LjYzMzMgMTIuNDgwNSAyNS42NTMxIDEyLjQ3ODdDMjUuNjcyOSAxMi40NzY5IDI1LjY5MjggMTIuNDgwMSAyNS43MTExIDEyLjQ4NzlMMzMuNzYzMSAxNy4xMzY0QzM0Ljk5NjcgMTcuODQ5IDM2LjAwMTcgMTguODk4MiAzNi42NjA2IDIwLjE2MTNDMzcuMzE5NCAyMS40MjQ0IDM3LjYwNDcgMjIuODQ5IDM3LjQ4MzIgMjQuMjY4NEMzNy4zNjE3IDI1LjY4NzggMzYuODM4MiAyNy4wNDMyIDM1Ljk3NDMgMjguMTc1OUMzNS4xMTAzIDI5LjMwODYgMzMuOTQxNSAzMC4xNzE3IDMyLjYwNDcgMzAuNjY0MUMzMi42MDQ3IDMwLjU5NDcgMzIuNjA0NyAzMC40NzMzIDMyLjYwNDcgMzAuMzg4OVYyMS4xODhDMzIuNjA2NiAyMC45NTg2IDMyLjU0NzQgMjAuNzMyOCAzMi40MzMyIDIwLjUzMzhDMzIuMzE5IDIwLjMzNDggMzIuMTU0IDIwLjE2OTggMzEuOTU1IDIwLjA1NTZaTTM1LjMwNTUgMTUuMDEyOEMzNS4yNDY0IDE0Ljk3NjUgMzUuMTQzMSAxNC45MTQyIDM1LjA2OSAxNC44NzE3TDI3LjEwNDUgMTAuMjcxMkMyNi45MDYgMTAuMTU1NCAyNi42ODAzIDEwLjA5NDMgMjYuNDUwNCAxMC4wOTQzQzI2LjIyMDYgMTAuMDk0MyAyNS45OTQ4IDEwLjE1NTQgMjUuNzk2MyAxMC4yNzEyTDE2LjA3MjYgMTUuODg1OFYxMS45OTgyQzE2LjA3MTUgMTEuOTc4MyAxNi4wNzUzIDExLjk1ODUgMTYuMDgzNyAxMS45NDA1QzE2LjA5MjEgMTEuOTIyNSAxNi4xMDQ4IDExLjkwNjggMTYuMTIwNyAxMS44OTQ5TDI0LjE3MTkgNy4yNTAyNUMyNS40MDUzIDYuNTM5MDMgMjYuODE1OCA2LjE5Mzc2IDI4LjIzODMgNi4yNTQ4MkMyOS42NjA4IDYuMzE1ODkgMzEuMDM2NCA2Ljc4MDc3IDMyLjIwNDQgNy41OTUwOEMzMy4zNzIzIDguNDA5MzkgMzQuMjg0MiA5LjUzOTQ1IDM0LjgzMzQgMTAuODUzMUMzNS4zODI2IDEyLjE2NjcgMzUuNTQ2NCAxMy42MDk1IDM1LjMwNTUgMTUuMDEyOFpNMTQuMjQyNCAyMS45NDE5TDEwLjg3NTIgMTkuOTk4MUMxMC44NTc2IDE5Ljk4OTMgMTAuODQyMyAxOS45NzYzIDEwLjgzMDkgMTkuOTYwMkMxMC44MTk1IDE5Ljk0NDEgMTAuODEyMiAxOS45MjU0IDEwLjgwOTggMTkuOTA1OFYxMC42MDcxQzEwLjgxMDcgOS4xODI5NSAxMS4yMTczIDcuNzg4NDggMTEuOTgxOSA2LjU4Njk2QzEyLjc0NjYgNS4zODU0NCAxMy44Mzc3IDQuNDI2NTkgMTUuMTI3NSAzLjgyMjY0QzE2LjQxNzMgMy4yMTg2OSAxNy44NTI0IDIuOTk0NjQgMTkuMjY0OSAzLjE3NjdDMjAuNjc3NSAzLjM1ODc2IDIyLjAwODkgMy45Mzk0MSAyMy4xMDM0IDQuODUwNjdDMjMuMDQyNyA0Ljg4Mzc5IDIyLjkzNyA0Ljk0MjE1IDIyLjg2NjggNC45ODQ3M0wxNC45MDI0IDkuNTg1MTdDMTQuNzAyNSA5LjY5ODc4IDE0LjUzNjYgOS44NjM1NiAxNC40MjE1IDEwLjA2MjZDMTQuMzA2NSAxMC4yNjE2IDE0LjI0NjYgMTAuNDg3NyAxNC4yNDc5IDEwLjcxNzVMMTQuMjQyNCAyMS45NDE5Wk0xNi4wNzEgMTcuOTk5MUwyMC40MDE4IDE1LjQ5NzhMMjQuNzMyNSAxNy45OTc1VjIyLjk5ODVMMjAuNDAxOCAyNS40OTgzTDE2LjA3MSAyMi45OTg1VjE3Ljk5OTFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBFZGl0SWNvbiA9IFJlYWN0LmZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPigocHJvcHM6IEljb25Qcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lID0gJ2ljb24tbWQnLCBzaXplID0gJzEuMmVtJyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgcmVmPXtyZWZ9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEzLjI5MjkgNC4yOTI5MUMxNS4wNjQxIDIuNTIxNjcgMTcuOTM1OSAyLjUyMTY3IDE5LjcwNzEgNC4yOTI5QzIxLjQ3ODMgNi4wNjQxNCAyMS40NzgzIDguOTM1ODggMTkuNzA3MSAxMC43MDcxTDE4LjcwNzMgMTEuNzA2OUwxMS4xNjAzIDE5LjI1MzlDMTAuNzE4MiAxOS42OTYgMTAuMTQ4OSAxOS45ODkgOS41MzIxOSAyMC4wOTE4TDQuMTY0NCAyMC45ODY0QzMuODQ1ODQgMjEuMDM5NSAzLjUyMTI1IDIwLjkzNTUgMy4yOTI4OSAyMC43MDcxQzMuMDY0NTMgMjAuNDc4OCAyLjk2MDUxIDIwLjE1NDIgMy4wMTM2IDE5LjgzNTZMMy45MDgyNCAxNC40Njc4QzQuMDExMDMgMTMuODUxMSA0LjMwMzk2IDEzLjI4MTggNC43NDYxIDEyLjgzOTdMMTMuMjkyOSA0LjI5MjkxWk0xMyA3LjQxNDIyTDYuMTYwMzEgMTQuMjUzOUM2LjAxMjkzIDE0LjQwMTMgNS45MTUyOSAxNC41OTEgNS44ODEwMiAxNC43OTY2TDUuMjE2NTUgMTguNzgzNUw5LjIwMzM5IDE4LjExOUM5LjQwODk4IDE4LjA4NDcgOS41OTg3MiAxNy45ODcxIDkuNzQ2MSAxNy44Mzk3TDE2LjU4NTggMTFMMTMgNy40MTQyMlpNMTggOS41ODU4TDE0LjQxNDIgNi4wMDAwMUwxNC43MDcxIDUuNzA3MTJDMTUuNjk3MyA0LjcxNjkzIDE3LjMwMjcgNC43MTY5MyAxOC4yOTI5IDUuNzA3MTJDMTkuMjgzMSA2LjY5NzMxIDE5LjI4MzEgOC4zMDI3MiAxOC4yOTI5IDkuMjkyOTFMMTggOS41ODU4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0SWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFJY29uKHsgY2xhc3NOYW1lID0gJ2ljb24tc20nIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk02LjAwNjMzIDUuNUM2LjAyMzIxIDUuNTMzMTkgNi4wNzA0MiA1LjYwMzY2IDYuMTk1MjUgNS43MDkwNkM2LjQyNDU4IDUuOTAyNyA2LjgxNTczIDYuMTIyMTUgNy4zODY1OSA2LjMyNjAzQzguNTE5NiA2LjczMDY3IDEwLjE1MDYgNyAxMiA3QzEzLjg0OTQgNyAxNS40ODA0IDYuNzMwNjcgMTYuNjEzNCA2LjMyNjAzQzE3LjE4NDMgNi4xMjIxNSAxNy41NzU0IDUuOTAyNyAxNy44MDQ4IDUuNzA5MDZDMTcuOTI5NiA1LjYwMzY2IDE3Ljk3NjggNS41MzMxOSAxNy45OTM3IDUuNUMxNy45NzY4IDUuNDY2ODEgMTcuOTI5NiA1LjM5NjM0IDE3LjgwNDggNS4yOTA5NEMxNy41NzU0IDUuMDk3MyAxNy4xODQzIDQuODc3ODUgMTYuNjEzNCA0LjY3Mzk3QzE1LjQ4MDQgNC4yNjkzMyAxMy44NDk0IDQgMTIgNEMxMC4xNTA2IDQgOC41MTk2IDQuMjY5MzMgNy4zODY1OSA0LjY3Mzk3QzYuODE1NzMgNC44Nzc4NSA2LjQyNDU4IDUuMDk3MyA2LjE5NTI1IDUuMjkwOTRDNi4wNzA0MiA1LjM5NjM0IDYuMDIzMjEgNS40NjY4MSA2LjAwNjMzIDUuNVpNMTggNy45MTcyNkMxNy43NzI2IDguMDI0MDMgMTcuNTMzMyA4LjEyMTIzIDE3LjI4NjEgOC4yMDk1MUMxNS44ODU2IDguNzA5NjggMTQuMDE2NiA5IDEyIDlDOS45ODM0MSA5IDguMTE0NCA4LjcwOTY4IDYuNzEzOTIgOC4yMDk1MUM2LjQ2Njc0IDguMTIxMjMgNi4yMjczOCA4LjAyNDAzIDYgNy45MTcyNlYxMS45ODY2QzYuMDA4MTMgMTIuMDA3MyA2LjAzOTMxIDEyLjA2NjEgNi4xNDI1OSAxMi4xNjI0QzYuMzE5NzYgMTIuMzI3NyA2LjYzMTgxIDEyLjUyNTIgNy4xMDYwOSAxMi43MTg5QzguMDQ4MzcgMTMuMTAzOSA5LjQzMDI3IDEzLjM5MzIgMTEuMDUxIDEzLjQ3NkMxMS42MDI2IDEzLjUwNDIgMTIuMDI2OSAxMy45NzQxIDExLjk5ODcgMTQuNTI1N0MxMS45NzA1IDE1LjA3NzMgMTEuNTAwNSAxNS41MDE2IDEwLjk0OSAxNS40NzM0QzkuMTc3NDQgMTUuMzgyOSA3LjU1OTM0IDE1LjA2NDYgNi4zNDk2OSAxNC41NzA0QzYuMjMwOTcgMTQuNTIxOSA2LjExNDE5IDE0LjQ3MDkgNiAxNC40MTczVjE4LjQ4NjZDNi4wMDgxMyAxOC41MDczIDYuMDM5MzEgMTguNTY2MSA2LjE0MjU5IDE4LjY2MjRDNi4zMTk3NiAxOC44Mjc3IDYuNjMxODEgMTkuMDI1MiA3LjEwNjA5IDE5LjIxODlDOC4wNDgzNyAxOS42MDM5IDkuNDMwMjcgMTkuODkzMiAxMS4wNTEgMTkuOTc2QzExLjYwMjYgMjAuMDA0MiAxMi4wMjY5IDIwLjQ3NDEgMTEuOTk4NyAyMS4wMjU3QzExLjk3MDUgMjEuNTc3MyAxMS41MDA1IDIyLjAwMTYgMTAuOTQ5IDIxLjk3MzRDOS4xNzc0NCAyMS44ODI5IDcuNTU5MzQgMjEuNTY0NiA2LjM0OTY5IDIxLjA3MDRDNS43NDgwMSAyMC44MjQ2IDUuMTk2MTEgMjAuNTE0NiA0Ljc3ODMzIDIwLjEyNDlDNC4zNTk0OCAxOS43MzQxIDQgMTkuMTg2NiA0IDE4LjVWNS41QzQgNC43NDYzMSA0LjQzMDQ4IDQuMTYzNDYgNC45MDQ5NCAzLjc2MjgzQzUuMzg0MDUgMy4zNTgyOSA2LjAxODAzIDMuMDM5MDIgNi43MTM5MiAyLjc5MDQ5QzguMTE0NCAyLjI5MDMyIDkuOTgzNDEgMiAxMiAyQzE0LjAxNjYgMiAxNS44ODU2IDIuMjkwMzIgMTcuMjg2MSAyLjc5MDQ5QzE3Ljk4MiAzLjAzOTAyIDE4LjYxNiAzLjM1ODI5IDE5LjA5NTEgMy43NjI4M0MxOS41Njk1IDQuMTYzNDYgMjAgNC43NDYzMSAyMCA1LjVWMTBDMjAgMTAuNTUyMyAxOS41NTIzIDExIDE5IDExQzE4LjQ0NzcgMTEgMTggMTAuNTUyMyAxOCAxMFY3LjkxNzI2Wk0xNy41IDEzQzE4LjA1MjMgMTMgMTguNSAxMy40NDc3IDE4LjUgMTRWMTQuNjcwN0MxOC44NTEgMTQuNzk0OCAxOS4xNzIgMTQuOTgyMyAxOS40NDkyIDE1LjIxOTVMMjAuMDMwOCAxNC44ODM3QzIwLjUwOTEgMTQuNjA3NSAyMS4xMjA3IDE0Ljc3MTQgMjEuMzk2OCAxNS4yNDk3QzIxLjY3MyAxNS43MjggMjEuNTA5MSAxNi4zMzk2IDIxLjAzMDggMTYuNjE1N0wyMC40NDk5IDE2Ljk1MTFDMjAuNDgyOCAxNy4xMjkxIDIwLjUgMTcuMzEyNSAyMC41IDE3LjVDMjAuNSAxNy42ODczIDIwLjQ4MjggMTcuODcwNyAyMC40NSAxOC4wNDg1TDIxLjAzMDggMTguMzgzOEMyMS41MDkxIDE4LjY1OTkgMjEuNjcyOSAxOS4yNzE1IDIxLjM5NjggMTkuNzQ5OEMyMS4xMjA2IDIwLjIyODEgMjAuNTA5MSAyMC4zOTIgMjAuMDMwOCAyMC4xMTU4TDE5LjQ0OTUgMTkuNzgwM0MxOS4xNzIyIDIwLjAxNzYgMTguODUxMSAyMC4yMDUyIDE4LjUgMjAuMzI5M1YyMUMxOC41IDIxLjU1MjMgMTguMDUyMyAyMiAxNy41IDIyQzE2Ljk0NzcgMjIgMTYuNSAyMS41NTIzIDE2LjUgMjFWMjAuMzI5M0MxNi4xNDg5IDIwLjIwNTIgMTUuODI3NyAyMC4wMTc2IDE1LjU1MDQgMTkuNzgwMkwxNC45NjkgMjAuMTE1OUMxNC40OTA3IDIwLjM5MiAxMy44NzkxIDIwLjIyODIgMTMuNjAzIDE5Ljc0OTlDMTMuMzI2OSAxOS4yNzE2IDEzLjQ5MDcgMTguNjYgMTMuOTY5IDE4LjM4MzlMMTQuNTUgMTguMDQ4NEMxNC41MTcyIDE3Ljg3MDYgMTQuNSAxNy42ODczIDE0LjUgMTcuNUMxNC41IDE3LjMxMjcgMTQuNTE3MiAxNy4xMjk0IDE0LjU1IDE2Ljk1MTVMMTMuOTY5MSAxNi42MTYxQzEzLjQ5MDggMTYuMzQgMTMuMzI2OSAxNS43Mjg0IDEzLjYwMzEgMTUuMjUwMUMxMy44NzkyIDE0Ljc3MTggMTQuNDkwOCAxNC42MDggMTQuOTY5MSAxNC44ODQxTDE1LjU1MDQgMTUuMjE5N0MxNS44Mjc4IDE0Ljk4MjQgMTYuMTQ4OSAxNC43OTQ4IDE2LjUgMTQuNjcwN1YxNEMxNi41IDEzLjQ0NzcgMTYuOTQ3NyAxMyAxNy41IDEzWk0xNi42MjQgMTcuMDE3NEMxNi42Mjc0IDE3LjAxMTcgMTYuNjMwOCAxNy4wMDU5IDE2LjYzNDIgMTcuMDAwMUMxNi42Mzc0IDE2Ljk5NDYgMTYuNjQwNSAxNi45ODkgMTYuNjQzNiAxNi45ODM0QzE2LjgxODcgMTYuNjkzNyAxNy4xMzY3IDE2LjUgMTcuNSAxNi41QzE3Ljg2NDUgMTYuNSAxOC4xODM1IDE2LjY5NTEgMTguMzU4MyAxNi45ODY1QzE4LjM2MDcgMTYuOTkwOSAxOC4zNjMyIDE2Ljk5NTMgMTguMzY1OCAxNi45OTk3QzE4LjM2ODUgMTcuMDA0NCAxOC4zNzEzIDE3LjAwOTEgMTguMzc0MSAxNy4wMTM4QzE4LjQ1NDMgMTcuMTU3NyAxOC41IDE3LjMyMzUgMTguNSAxNy41QzE4LjUgMTcuNjczNyAxOC40NTU3IDE3LjgzNzEgMTguMzc3OCAxNy45Nzk0QzE4LjM3MzcgMTcuOTg2MSAxOC4zNjk3IDE3Ljk5MjkgMTguMzY1NyAxNy45OTk4QzE4LjM2MTkgMTguMDA2NCAxOC4zNTgxIDE4LjAxMzEgMTguMzU0NSAxOC4wMTk4QzE4LjE3ODkgMTguMzA3NyAxNy44NjE5IDE4LjUgMTcuNSAxOC41QzE3LjEzNjIgMTguNSAxNi44MTc4IDE4LjMwNTggMTYuNjQyOCAxOC4wMTU0QzE2LjY0IDE4LjAxMDIgMTYuNjM3MSAxOC4wMDUgMTYuNjM0MSAxNy45OTk5QzE2LjYzMSAxNy45OTQ1IDE2LjYyNzggMTcuOTg5MSAxNi42MjQ2IDE3Ljk4MzhDMTYuNTQ1MiAxNy44NDA0IDE2LjUgMTcuNjc1NSAxNi41IDE3LjVDMTYuNSAxNy4zMjUgMTYuNTQ1IDE3LjE2MDUgMTYuNjI0IDE3LjAxNzRaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2lkZWJhcih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOC44NTcxOSAzSDE1LjE0MjhDMTYuMjI2NiAyLjk5OTk5IDE3LjEwMDcgMi45OTk5OCAxNy44MDg2IDMuMDU3ODJDMTguNTM3NSAzLjExNzM3IDE5LjE3NzcgMy4yNDMxOCAxOS43NyAzLjU0NDk3QzIwLjcxMDggNC4wMjQzMyAyMS40NzU3IDQuNzg5MjQgMjEuOTU1IDUuNzMwMDVDMjIuMjU2OCA2LjMyMjM0IDIyLjM4MjYgNi45NjI1MyAyMi40NDIyIDcuNjkxMzhDMjIuNSA4LjM5OTI1IDIyLjUgOS4yNzMzOSAyMi41IDEwLjM1NzJWMTMuNjQyOEMyMi41IDE0LjcyNjYgMjIuNSAxNS42MDA4IDIyLjQ0MjIgMTYuMzA4NkMyMi4zODI2IDE3LjAzNzUgMjIuMjU2OCAxNy42Nzc3IDIxLjk1NSAxOC4yN0MyMS40NzU3IDE5LjIxMDggMjAuNzEwOCAxOS45NzU3IDE5Ljc3IDIwLjQ1NUMxOS4xNzc3IDIwLjc1NjggMTguNTM3NSAyMC44ODI2IDE3LjgwODYgMjAuOTQyMkMxNy4xMDA4IDIxIDE2LjIyNjYgMjEgMTUuMTQyOCAyMUg4Ljg1NzE3QzcuNzczMzkgMjEgNi44OTkyNSAyMSA2LjE5MTM4IDIwLjk0MjJDNS40NjI1MyAyMC44ODI2IDQuODIyMzQgMjAuNzU2OCA0LjIzMDA1IDIwLjQ1NUMzLjI4OTI0IDE5Ljk3NTcgMi41MjQzMyAxOS4yMTA4IDIuMDQ0OTcgMTguMjdDMS43NDMxOCAxNy42Nzc3IDEuNjE3MzcgMTcuMDM3NSAxLjU1NzgyIDE2LjMwODZDMS40OTk5OCAxNS42MDA3IDEuNDk5OTkgMTQuNzI2NiAxLjUgMTMuNjQyOFYxMC4zNTcyQzEuNDk5OTkgOS4yNzM0MSAxLjQ5OTk4IDguMzk5MjYgMS41NTc4MiA3LjY5MTM4QzEuNjE3MzcgNi45NjI1MyAxLjc0MzE4IDYuMzIyMzQgMi4wNDQ5NyA1LjczMDA1QzIuNTI0MzMgNC43ODkyNCAzLjI4OTI0IDQuMDI0MzMgNC4yMzAwNSAzLjU0NDk3QzQuODIyMzQgMy4yNDMxOCA1LjQ2MjUzIDMuMTE3MzcgNi4xOTEzOCAzLjA1NzgyQzYuODk5MjYgMi45OTk5OCA3Ljc3MzQxIDIuOTk5OTkgOC44NTcxOSAzWk02LjM1NDI0IDUuMDUxMThDNS43NDkwNyA1LjEwMDYyIDUuNDAxMzggNS4xOTI3OSA1LjEzODAzIDUuMzI2OThDNC41NzM1NCA1LjYxNDYgNC4xMTQ2IDYuMDczNTQgMy44MjY5OCA2LjYzODAzQzMuNjkyNzkgNi45MDEzOCAzLjYwMDYyIDcuMjQ5MDcgMy41NTExOCA3Ljg1NDI0QzMuNTAwNzggOC40NzEwOCAzLjUgOS4yNjMzOSAzLjUgMTAuNFYxMy42QzMuNSAxNC43MzY2IDMuNTAwNzggMTUuNTI4OSAzLjU1MTE4IDE2LjE0NThDMy42MDA2MiAxNi43NTA5IDMuNjkyNzkgMTcuMDk4NiAzLjgyNjk4IDE3LjM2MkM0LjExNDYgMTcuOTI2NSA0LjU3MzU0IDE4LjM4NTQgNS4xMzgwMyAxOC42NzNDNS40MDEzOCAxOC44MDcyIDUuNzQ5MDcgMTguODk5NCA2LjM1NDI0IDE4Ljk0ODhDNi45NzEwOCAxOC45OTkyIDcuNzYzMzkgMTkgOC45IDE5SDkuNVY1SDguOUM3Ljc2MzM5IDUgNi45NzEwOCA1LjAwMDc4IDYuMzU0MjQgNS4wNTExOFpNMTEuNSA1VjE5SDE1LjFDMTYuMjM2NiAxOSAxNy4wMjg5IDE4Ljk5OTIgMTcuNjQ1OCAxOC45NDg4QzE4LjI1MDkgMTguODk5NCAxOC41OTg2IDE4LjgwNzIgMTguODYyIDE4LjY3M0MxOS40MjY1IDE4LjM4NTQgMTkuODg1NCAxNy45MjY1IDIwLjE3MyAxNy4zNjJDMjAuMzA3MiAxNy4wOTg2IDIwLjM5OTQgMTYuNzUwOSAyMC40NDg4IDE2LjE0NThDMjAuNDk5MiAxNS41Mjg5IDIwLjUgMTQuNzM2NiAyMC41IDEzLjZWMTAuNEMyMC41IDkuMjYzMzkgMjAuNDk5MiA4LjQ3MTA4IDIwLjQ0ODggNy44NTQyNEMyMC4zOTk0IDcuMjQ5MDcgMjAuMzA3MiA2LjkwMTM4IDIwLjE3MyA2LjYzODAzQzE5Ljg4NTQgNi4wNzM1NCAxOS40MjY1IDUuNjE0NiAxOC44NjIgNS4zMjY5OEMxOC41OTg2IDUuMTkyNzkgMTguMjUwOSA1LjEwMDYyIDE3LjY0NTggNS4wNTExOEMxNy4wMjg5IDUuMDAwNzggMTYuMjM2NiA1IDE1LjEgNUgxMS41Wk01IDguNUM1IDcuOTQ3NzIgNS40NDc3MiA3LjUgNiA3LjVIN0M3LjU1MjI5IDcuNSA4IDcuOTQ3NzIgOCA4LjVDOCA5LjA1MjI5IDcuNTUyMjkgOS41IDcgOS41SDZDNS40NDc3MiA5LjUgNSA5LjA1MjI5IDUgOC41Wk01IDEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN0M3LjU1MjI5IDExIDggMTEuNDQ3NyA4IDEyQzggMTIuNTUyMyA3LjU1MjI5IDEzIDcgMTNINkM1LjQ0NzcyIDEzIDUgMTIuNTUyMyA1IDEyWlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vYmlsZVNpZGViYXIoeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMgOEMzIDcuNDQ3NzIgMy40NDc3MiA3IDQgN0gyMEMyMC41NTIzIDcgMjEgNy40NDc3MiAyMSA4QzIxIDguNTUyMjggMjAuNTUyMyA5IDIwIDlINEMzLjQ0NzcyIDkgMyA4LjU1MjI4IDMgOFpNMyAxNkMzIDE1LjQ0NzcgMy40NDc3MiAxNSA0IDE1SDE0QzE0LjU1MjMgMTUgMTUgMTUuNDQ3NyAxNSAxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdINEMzLjQ0NzcyIDE3IDMgMTYuNTUyMyAzIDE2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5pbnRlcmZhY2UgU3Bpbm5lclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZztcbiAgYmdPcGFjaXR5PzogbnVtYmVyO1xuICBzcGVlZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3Bpbm5lcih7XG4gIGNsYXNzTmFtZSA9ICdtLWF1dG8nLFxuICBzaXplID0gMjAsXG4gIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gIGJnT3BhY2l0eSA9IDAuMSxcbiAgc3BlZWQgPSAwLjc1LFxufTogU3Bpbm5lclByb3BzKSB7XG4gIGNvbnN0IGNzc1ZhcnMgPSB7XG4gICAgJy0tc3Bpbm5lci1zcGVlZCc6IGAke3NwZWVkfXNgLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJ3NwaW5uZXInKX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHN0eWxlPXtjc3NWYXJzfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPntgXG4gICAgICAgICAgLnNwaW5uZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItcm90YXRlIHZhcigtLXNwaW5uZXItc3BlZWQpIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGtleWZyYW1lcyBzcGlubmVyLXJvdGF0ZSB7XG4gICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIGB9PC9zdHlsZT5cbiAgICAgIDwvZGVmcz5cblxuICAgICAgPGNpcmNsZVxuICAgICAgICBjeD1cIjIwXCJcbiAgICAgICAgY3k9XCIyMFwiXG4gICAgICAgIHI9XCIxNC41XCJcbiAgICAgICAgcGF0aExlbmd0aD1cIjEwMFwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiNVwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgc3Ryb2tlPXtjb2xvcn1cbiAgICAgICAgc3Ryb2tlT3BhY2l0eT17YmdPcGFjaXR5fVxuICAgICAgLz5cbiAgICAgIDxjaXJjbGVcbiAgICAgICAgY3g9XCIyMFwiXG4gICAgICAgIGN5PVwiMjBcIlxuICAgICAgICByPVwiMTQuNVwiXG4gICAgICAgIHBhdGhMZW5ndGg9XCIxMDBcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjVcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZT17Y29sb3J9XG4gICAgICAgIHN0cm9rZURhc2hhcnJheT1cIjI1IDc1XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2xpcGJvYXJkKHsgY2xhc3NOYW1lID0gJ2ljb24tbWQtaGVhdnknLCBzaXplID0gJzFlbScgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNNyA1YTMgMyAwIDAgMSAzLTNoOWEzIDMgMCAwIDEgMyAzdjlhMyAzIDAgMCAxLTMgM2gtMnYyYTMgMyAwIDAgMS0zIDNINWEzIDMgMCAwIDEtMy0zdi05YTMgMyAwIDAgMSAzLTNoMnptMiAyaDVhMyAzIDAgMCAxIDMgM3Y1aDJhMSAxIDAgMCAwIDEtMVY1YTEgMSAwIDAgMC0xLTFoLTlhMSAxIDAgMCAwLTEgMXpNNSA5YTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDlhMSAxIDAgMCAwIDEtMXYtOWExIDEgMCAwIDAtMS0xelwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hlY2tNYXJrKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE4LjA2MzMgNS42NzM3NUMxOC41MTk2IDUuOTg0ODcgMTguNjM3NCA2LjYwNyAxOC4zMjYyIDcuMDYzMzFMMTAuODI2MiAxOC4wNjMzQzEwLjY1ODUgMTguMzA5MyAxMC4zODk4IDE4LjQ2NzggMTAuMDkzNCAxOC40OTU2QzkuNzk2ODggMTguNTIzNCA5LjUwMzQ1IDE4LjQxNzYgOS4yOTI4OSAxOC4yMDcxTDQuNzkyODkgMTMuNzA3MUM0LjQwMjM3IDEzLjMxNjYgNC40MDIzNyAxMi42ODM0IDQuNzkyODkgMTIuMjkyOUM1LjE4MzQyIDExLjkwMjMgNS44MTY1OCAxMS45MDIzIDYuMjA3MTEgMTIuMjkyOUw5Ljg1MzY4IDE1LjkzOTRMMTYuNjczOCA1LjkzNjY0QzE2Ljk4NDkgNS40ODAzMyAxNy42MDcgNS4zNjI2MyAxOC4wNjMzIDUuNjczNzVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDcm9zc0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lLCAnaC00IHctNCcpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bGluZSB4MT1cIjE4XCIgeTE9XCI2XCIgeDI9XCI2XCIgeTI9XCIxOFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dPdXRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tbWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExIDNIN0M1Ljg5NTQzIDMgNSAzLjg5NTQzIDUgNVYxOUM1IDIwLjEwNDYgNS44OTU0MyAyMSA3IDIxSDExXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIwIDEySDExTTIwIDEyTDE2IDE2TTIwIDEyTDE2IDhcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdsdWNpZGUgbHVjaWRlLWJvdCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgOFY0SDhcIiAvPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjEyXCIgeD1cIjRcIiB5PVwiOFwiIHJ4PVwiMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIgMTRoMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIwIDE0aDJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNSAxM3YyXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNOSAxM3YyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExpZ2h0bmluZ0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC02IHctNicsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIGQ9XCJNMy43NSAxMy41bDEwLjUtMTEuMjVMMTIgMTAuNWg4LjI1TDkuNzUgMjEuNzUgMTIgMTMuNUgzLjc1elwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXR0YWNobWVudEljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOSA3QzkgNC4yMzg1OCAxMS4yMzg2IDIgMTQgMkMxNi43NjE0IDIgMTkgNC4yMzg1OCAxOSA3VjE1QzE5IDE4Ljg2NiAxNS44NjYgMjIgMTIgMjJDOC4xMzQwMSAyMiA1IDE4Ljg2NiA1IDE1VjlDNSA4LjQ0NzcyIDUuNDQ3NzIgOCA2IDhDNi41NTIyOCA4IDcgOC40NDc3MiA3IDlWMTVDNyAxNy43NjE0IDkuMjM4NTggMjAgMTIgMjBDMTQuNzYxNCAyMCAxNyAxNy43NjE0IDE3IDE1VjdDMTcgNS4zNDMxNSAxNS42NTY5IDQgMTQgNEMxMi4zNDMxIDQgMTEgNS4zNDMxNSAxMSA3VjE1QzExIDE1LjU1MjMgMTEuNDQ3NyAxNiAxMiAxNkMxMi41NTIzIDE2IDEzIDE1LjU1MjMgMTMgMTVWOUMxMyA4LjQ0NzcyIDEzLjQ0NzcgOCAxNCA4QzE0LjU1MjMgOCAxNSA4LjQ0NzcyIDE1IDlWMTVDMTUgMTYuNjU2OSAxMy42NTY5IDE4IDEyIDE4QzEwLjM0MzEgMTggOSAxNi42NTY5IDkgMTVWN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWVzc2FnZXNTcXVhcmVkKHsgY2xhc3NOYW1lIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lID8/ICcnLCAnbHVjaWRlIGx1Y2lkZS1tZXNzYWdlcy1zcXVhcmUnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xNCA5YTIgMiAwIDAgMS0yIDJINmwtNCA0VjRjMC0xLjEuOS0yIDItMmg4YTIgMiAwIDAgMSAyIDJ2NVpcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA5aDJhMiAyIDAgMCAxIDIgMnYxMWwtNC00aC02YTIgMiAwIDAgMS0yLTJ2LTFcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvcEdlbmVyYXRpbmdJY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjIuNVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVnZW5lcmF0ZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdpY29uLW1kLWhlYXZ5JywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMy4wNyAxMC44NzZDMy42MjMgNi40MzYgNy40MSAzIDEyIDNhOS4xNSA5LjE1IDAgMCAxIDYuMDEyIDIuMjU0VjRhMSAxIDAgMSAxIDIgMHY0YTEgMSAwIDAgMS0xIDFIMTVhMSAxIDAgMSAxIDAtMmgxLjk1N0E3LjE1IDcuMTUgMCAwIDAgMTIgNWE3IDcgMCAwIDAtNi45NDYgNi4xMjQgMSAxIDAgMSAxLTEuOTg0LS4yNDhtMTYuOTkyIDEuMTMyYTEgMSAwIDAgMSAuODY4IDEuMTE2QzIwLjM3NyAxNy41NjQgMTYuNTkgMjEgMTIgMjFhOS4xNSA5LjE1IDAgMCAxLTYtMi4yNDRWMjBhMSAxIDAgMSAxLTIgMHYtNGExIDEgMCAwIDEgMS0xaDRhMSAxIDAgMSAxIDAgMkg3LjA0M0E3LjE1IDcuMTUgMCAwIDAgMTIgMTlhNyA3IDAgMCAwIDYuOTQ2LTYuMTI0IDEgMSAwIDAgMSAxLjExNi0uODY4XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb250aW51ZUljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgLXJvdGF0ZS0xODAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMTlcIlxuICAgICAgd2lkdGg9XCIxOVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCIgLz5cbiAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR29vZ2xlSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBpZD1cImdvb2dsZVwiXG4gICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiNmYmJiMDBcIlxuICAgICAgICBkPVwiTTExMy40NyAzMDkuNDA4IDk1LjY0OCAzNzUuOTRsLTY1LjEzOSAxLjM3OEMxMS4wNDIgMzQxLjIxMSAwIDI5OS45IDAgMjU2YzAtNDIuNDUxIDEwLjMyNC04Mi40ODMgMjguNjI0LTExNy43MzJoLjAxNEw4Ni42MyAxNDguOWwyNS40MDQgNTcuNjQ0Yy01LjMxNyAxNS41MDEtOC4yMTUgMzIuMTQxLTguMjE1IDQ5LjQ1Ni4wMDIgMTguNzkyIDMuNDA2IDM2Ljc5NyA5LjY1MSA1My40MDh6XCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiIzUxOGVmOFwiXG4gICAgICAgIGQ9XCJNNTA3LjUyNyAyMDguMTc2QzUxMC40NjcgMjIzLjY2MiA1MTIgMjM5LjY1NSA1MTIgMjU2YzAgMTguMzI4LTEuOTI3IDM2LjIwNi01LjU5OCA1My40NTEtMTIuNDYyIDU4LjY4My00NS4wMjUgMTA5LjkyNS05MC4xMzQgMTQ2LjE4N2wtLjAxNC0uMDE0LTczLjA0NC0zLjcyNy0xMC4zMzgtNjQuNTM1YzI5LjkzMi0xNy41NTQgNTMuMzI0LTQ1LjAyNSA2NS42NDYtNzcuOTExaC0xMzYuODlWMjA4LjE3NmgyNDUuODk5elwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiMyOGI0NDZcIlxuICAgICAgICBkPVwibTQxNi4yNTMgNDU1LjYyNC4wMTQuMDE0QzM3Mi4zOTYgNDkwLjkwMSAzMTYuNjY2IDUxMiAyNTYgNTEyYy05Ny40OTEgMC0xODIuMjUyLTU0LjQ5MS0yMjUuNDkxLTEzNC42ODFsODIuOTYxLTY3LjkxYzIxLjYxOSA1Ny42OTggNzcuMjc4IDk4Ljc3MSAxNDIuNTMgOTguNzcxIDI4LjA0NyAwIDU0LjMyMy03LjU4MiA3Ni44Ny0yMC44MThsODMuMzgzIDY4LjI2MnpcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZjE0MzM2XCJcbiAgICAgICAgZD1cIm00MTkuNDA0IDU4LjkzNi04Mi45MzMgNjcuODk2QzMxMy4xMzYgMTEyLjI0NiAyODUuNTUyIDEwMy44MiAyNTYgMTAzLjgyYy02Ni43MjkgMC0xMjMuNDI5IDQyLjk1Ny0xNDMuOTY1IDEwMi43MjRsLTgzLjM5Ny02OC4yNzZoLS4wMTRDNzEuMjMgNTYuMTIzIDE1Ny4wNiAwIDI1NiAwYzYyLjExNSAwIDExOS4wNjggMjIuMTI2IDE2My40MDQgNTguOTM2elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmFjZWJvb2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCA0MCA0MFwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgIGlkPVwiYVwiXG4gICAgICAgIHgxPXstMjc3LjM3NX1cbiAgICAgICAgeDI9ey0yNzcuMzc1fVxuICAgICAgICB5MT17NDA2LjYwMn1cbiAgICAgICAgeTI9ezQwNy41NzN9XG4gICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDQwIDAgMCAtMzkuNzc3OCAxMTExNS4wMDEgMTYyMTIuMzM0KVwiXG4gICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICA+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MH0gc3RvcENvbG9yPVwiIzAwNjJlMFwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MX0gc3RvcENvbG9yPVwiIzE5YWZmZlwiIC8+XG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjYSlcIlxuICAgICAgICBkPVwiTTE2LjcgMzkuOEM3LjIgMzguMSAwIDI5LjkgMCAyMCAwIDkgOSAwIDIwIDBzMjAgOSAyMCAyMGMwIDkuOS03LjIgMTguMS0xNi43IDE5LjhsLTEuMS0uOWgtNC40bC0xLjEuOXpcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIm0yNy44IDI1LjYuOS01LjZoLTUuM3YtMy45YzAtMS42LjYtMi44IDMtMi44SDI5VjguMmMtMS40LS4yLTMtLjQtNC40LS40LTQuNiAwLTcuOCAyLjgtNy44IDcuOFYyMGgtNXY1LjZoNXYxNC4xYzEuMS4yIDIuMi4zIDMuMy4zIDEuMSAwIDIuMi0uMSAzLjMtLjNWMjUuNmg0LjR6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcGVuSURJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCA0NDggNTEyXCJcbiAgICAgIGlkPVwib3BlbmlkXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHaXRodWJJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0xMiAwYTEyIDEyIDAgMCAwLTMuODQgMjMuMzk5Yy42MDguMTEyLjgzMi0uMjU2LjgzMi0uNTc2di0yLjAxNWMtMy4zOTUuNzM2LTQuMTE1LTEuNjMyLTQuMTE1LTEuNjMyYTMuMjQxIDMuMjQxIDAgMCAwLTEuMzU5LTEuNzkyYy0xLjEwNC0uNzM2LjA2NC0uNzM2LjA2NC0uNzM2YTIuNTY2IDIuNTY2IDAgMCAxIDEuODI0IDEuMjE2YTIuNjM4IDIuNjM4IDAgMCAwIDMuNjE2IDEuMDI0YTIuNjA3IDIuNjA3IDAgMCAxIC43NjgtMS42Yy0yLjY4OC0uMzItNS41MDQtMS4zNDQtNS41MDQtNS45ODRhNC42NzcgNC42NzcgMCAwIDEgMS4yMTYtMy4xNjhhNC4zODMgNC4zODMgMCAwIDEgLjEyOC0zLjEzNnMxLjAyNC0uMzIgMy4zNiAxLjIxNmExMS42NiAxMS42NiAwIDAgMSA2LjExMiAwYzIuMzM2LTEuNTM2IDMuMzYtMS4yMTYgMy4zNi0xLjIxNmE0LjM1NCA0LjM1NCAwIDAgMSAuMTI4IDMuMTM2YTQuNjI4IDQuNjI4IDAgMCAxIDEuMjE2IDMuMTY4YzAgNC42NzItMi44NDggNS42NjQtNS41MzYgNS45NTJhMi44ODEgMi44ODEgMCAwIDEgLjgzMiAyLjI0djMuMzZjMCAuMzIuMjI0LjY3Mi44MzIuNTc2QTEyIDEyIDAgMCAwIDEyIDB6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaXNjb3JkSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTAyNCAxMDI0XCJcbiAgICAgIGlkPVwiZGlzY29yZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTYgdy02XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjUxMlwiIGN5PVwiNTEyXCIgcj1cIjUxMlwiIGZpbGw9XCIjNTg2NWYyXCIgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIk02ODkuNDMgMzQ5YTQyMi4yMSA0MjIuMjEgMCAwIDAtMTA0LjIyLTMyLjMyIDEuNTggMS41OCAwIDAgMC0xLjY4Ljc5IDI5NC4xMSAyOTQuMTEgMCAwIDAtMTMgMjYuNjYgMzg5Ljc4IDM4OS43OCAwIDAgMC0xMTcuMDUgMCAyNjkuNzUgMjY5Ljc1IDAgMCAwLTEzLjE4LTI2LjY2IDEuNjQgMS42NCAwIDAgMC0xLjY4LS43OUE0MjEgNDIxIDAgMCAwIDMzNC40NCAzNDlhMS40OSAxLjQ5IDAgMCAwLS42OS41OWMtNjYuMzcgOTkuMTctODQuNTUgMTk1LjktNzUuNjMgMjkxLjQxYTEuNzYgMS43NiAwIDAgMCAuNjcgMS4yIDQyNC41OCA0MjQuNTggMCAwIDAgMTI3Ljg1IDY0LjYzIDEuNjYgMS42NiAwIDAgMCAxLjgtLjU5IDMwMy40NSAzMDMuNDUgMCAwIDAgMjYuMTUtNDIuNTQgMS42MiAxLjYyIDAgMCAwLS44OS0yLjI1IDI3OS42IDI3OS42IDAgMCAxLTM5Ljk0LTE5IDEuNjQgMS42NCAwIDAgMS0uMTYtMi43MmMyLjY4LTIgNS4zNy00LjEgNy45My02LjIyYTEuNTggMS41OCAwIDAgMSAxLjY1LS4yMmM4My43OSAzOC4yNiAxNzQuNTEgMzguMjYgMjU3LjMxIDBhMS41OCAxLjU4IDAgMCAxIDEuNjguMmMyLjU2IDIuMTEgNS4yNSA0LjIzIDggNi4yNGExLjY0IDEuNjQgMCAwIDEtLjE0IDIuNzIgMjYyLjM3IDI2Mi4zNyAwIDAgMS00MCAxOSAxLjYzIDEuNjMgMCAwIDAtLjg3IDIuMjggMzQwLjcyIDM0MC43MiAwIDAgMCAyNi4xMyA0Mi41MiAxLjYyIDEuNjIgMCAwIDAgMS44LjYxIDQyMy4xNyA0MjMuMTcgMCAwIDAgMTI4LTY0LjYzIDEuNjQgMS42NCAwIDAgMCAuNjctMS4xOGMxMC42OC0xMTAuNDQtMTcuODgtMjA2LjM4LTc1LjctMjkxLjQyYTEuMyAxLjMgMCAwIDAtLjYzLS42M3pNNDI3LjA5IDU4Mi44NWMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDIgMjguNDQtMjAuMzcgNTEuNi00NiA1MS42em0xNzAuMTMgMGMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDEgMjguNDQtMjAuMTcgNTEuNi00NiA1MS42elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwbGVJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sU3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDgxNCAxMDAwXCJcbiAgICAgIGlkPVwiYXBwbGVcIlxuICAgICAgY2xhc3NOYW1lPVwiaC02IHctNlwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNzg4LjEgMzQwLjljLTUuOCA0LjUtMTA4LjIgNjIuMi0xMDguMiAxOTAuNSAwIDE0OC40IDEzMC4zIDIwMC45IDEzNC4yIDIwMi4yLS42IDMuMi0yMC43IDcxLjktNjguNyAxNDEuOS00Mi44IDYxLjYtODcuNSAxMjMuMS0xNTUuNSAxMjMuMXMtODUuNS0zOS41LTE2NC0zOS41Yy03Ni41IDAtMTAzLjcgNDAuOC0xNjUuOSA0MC44cy0xMDUuNi01Ny0xNTUuNS0xMjdDNDYuNyA3OTAuNyAwIDY2MyAwIDU0MS44YzAtMTk0LjQgMTI2LjQtMjk3LjUgMjUwLjgtMjk3LjUgNjYuMSAwIDEyMS4yIDQzLjQgMTYyLjcgNDMuNCAzOS41IDAgMTAxLjEtNDYgMTc2LjMtNDYgMjguNSAwIDEzMC45IDIuNiAxOTguMyA5OS4yem0tMjM0LTE4MS41YzMxLjEtMzYuOSA1My4xLTg4LjEgNTMuMS0xMzkuMyAwLTcuMS0uNi0xNC4zLTEuOS0yMC4xLTUwLjYgMS45LTExMC44IDMzLjctMTQ3LjEgNzUuOC0yOC41IDMyLjQtNTUuMSA4My42LTU1LjEgMTM1LjUgMCA3LjggMS4zIDE1LjYgMS45IDE4LjEgMy4yLjYgOC40IDEuMyAxMy42IDEuMyA0NS40IDAgMTAyLjUtMzAuNCAxMzUuNS03MS4zelwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsIi8qKlxuICogU2FtbEljb24gQ29tcG9uZW50XG4gKlxuICogU291cmNlOiBTVkcgUmVwb1xuICogVVJMOiBodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zdmcvNDQ4NTkwL3NhbWxcbiAqICAtIENPTExFQ1RJT046IEhhc2hpY29ycCBMaW5lIEludGVyZmFjZSBJY29uc1xuICogIC0gTElDRU5TRTogTUxQIExpY2Vuc2VcbiAqICAtIEFVVEhPUjogSGFzaGlDb3JwXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhbWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiODAwcHhcIlxuICAgICAgaGVpZ2h0PVwiODAwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiIzAwMDAwMFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTcuNzU0IDJsLjQ2My40MWMuMzQzLjMwNC42ODcuNjA3IDEuMDI2LjkxNUMxMS40NCA1LjMyIDEzLjMgNy41NjUgMTQuNyAxMC4xNDljLjA3Mi4xMzIuMTM3LjI2OC4yMDIuNDAzbC4wOTguMjAzLS4xMDguMDU3LS4wODEtLjExNS0uMjEtLjI5OS0uMTQ3LS4yMTRjLTEuMDE5LTEuNDc5LTIuMDQtMi45Ni0zLjQ0Mi00LjE0NWE2LjU2MyA2LjU2MyAwIDAwLTEuMzkzLS45MDRjLTEuMDE0LS40ODUtMS45MTYtLjI5MS0yLjY5LjUwNS0uNzM2Ljc1Ny0xLjExOCAxLjY5Ny0xLjQ2MyAyLjY1My0uMDQ1LjEyMy0uMDkyLjI0NS0uMTM5LjM2N2wtLjA4Mi4yMTUtLjE3Mi0uMDU1Yy4xLS4zNDguMTkyLS42OTguMjg0LTEuMDQ5LjIxLS43OTUuNDItMS41OS43MTItMi4zNTYuMzEtLjgxNi43MDItMS42MDMgMS4wOTMtMi4zOS4xNjktLjM0MS4zMzgtLjY4Mi41LTEuMDI1aC4wOTJ6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTguNDQ4IDExLjgyMmMtMS42MjYuNzctNS41NiAxLjU2NC03LjQyNiAxLjM2Qy43MTcgMTEuNTc2IDMuNzEgNC4wNSA1LjE4IDIuOTFsLS4wOTUuMjE4YTQuNjM4IDQuNjM4IDAgMDEtLjEzOC4zMDNsLS4wNjYuMTI5Yy0uNzYgMS40NjItMS41MTkgMi45MjYtMS45MDggNC41M2E3LjQ4MiA3LjQ4MiAwIDAwLS4yMjggMS42ODljLS4wMSAxLjM0LjgyNCAyLjI1MiAyLjIxNyAyLjMwOS42Ny4wMjcgMS4zNDctLjA0MyAyLjAyMy0uMTE0LjI5NC0uMDMuNTg3LS4wNjEuODgtLjA4NC4xMDgtLjAwOC4yMTQtLjAyMS4zNTItLjAzOWwuMjMxLS4wMjh6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTMuODI1IDE0Ljc4MWMtLjQ0NS4wMzQtLjg5LjA2OC0xLjMzMy4xMDggNC4wOTcuMzkgOC4wMy0uMjc3IDExLjkxLTEuNjQ0LTEuMjY1LTIuMjMtMi45Ny0zLjk5MS00Ljk1Mi01LjUyMi4wMjYuMDk4LjA4NC4xNjkuMTQxLjIzOWwuMDQ4LjA2Yy4xNy4yMjYuMzQ4LjQ0OC41MjcuNjcuNDA5LjUwOS44MTggMS4wMTggMS4xMjYgMS41NzguNzc4IDEuNDIuMzU2IDIuNjQ4LTEuMTY4IDMuMjk2LTEuMDAyLjQyNy0yLjA5Ny43MTgtMy4xOC44OTItMS4wMy4xNjQtMi4wNzUuMjQzLTMuMTE5LjMyM3pcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY0ljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAxNlwiXG4gICAgICBvdmVyZmxvdz1cInZpc2libGVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdmaWxsLWN1cnJlbnQgdGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxnXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxM3B4KSByb3RhdGVaKDBkZWcpJyxcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICc0Ljc3NXB4IDcuNzM1MDFweCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgc2hhcGVSZW5kZXJpbmc9XCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgICAgICAgIC8vIGZpbGw9XCJyZ2IoMjQsMjQsMjQpXCJcbiAgICAgICAgICBmaWxsT3BhY2l0eT1cIjFcIlxuICAgICAgICAgIGQ9XCIgTTAsMCBDMCwwIDYuMTY3NzA5MzUwNTg1OTM3NSwxNS40NzAwMjIyMDE1MzgwODYgNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiBDNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiA5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgOS41NTAwMDQwMDU0MzIxMjksMTUuNDcwMDIyMjAxNTM4MDg2IEM5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgMy4zODIyOTQxNzgwMDkwMzMsMCAzLjM4MjI5NDE3ODAwOTAzMywwIEMzLjM4MjI5NDE3ODAwOTAzMywwIDAsMCAwLDAgQzAsMCAwLDAgMCwwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogJzcuOTM1cHggNy43MzUwMXB4JyxcbiAgICAgICAgfX1cbiAgICAgICAgb3BhY2l0eT1cIjFcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHNoYXBlUmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICAgICAgICAvLyBmaWxsPVwicmdiKDI0LDI0LDI0KVwiXG4gICAgICAgICAgZmlsbE9wYWNpdHk9XCIxXCJcbiAgICAgICAgICBkPVwiIE01LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNy45MzUwMDI4MDM4MDI0OSwzLjkxMTY5NDI4ODI1Mzc4NCA3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IEM3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IDEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSAxMC4wNDU0MDA2MTk1MDY4MzYsOS4zNDgyOTYxNjU0NjYzMDkgQzEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDl6IE02LjE2Njc1NTE5OTQzMjM3MywwIEM2LjE2Njc1NTE5OTQzMjM3MywwIDAsMTUuNDcwMDIyMjAxNTM4MDg2IDAsMTUuNDcwMDIyMjAxNTM4MDg2IEMwLDE1LjQ3MDAyMjIwMTUzODA4NiAzLjQ0ODA3NzIwMTg0MzI2MTcsMTUuNDcwMDIyMjAxNTM4MDg2IDMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgQzMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgQzQuNzA5Mjc4NTgzNTI2NjExLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IEMxMS4xNjA5MzYzNTU1OTA4MiwxMi4yMjEzMDAxMjUxMjIwNyAxMi40MjE5Mjg0MDU3NjE3MTksMTUuNDcwMDIyMjAxNTM4MDg2IDEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgQzEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDE1Ljg3MDAwNTYwNzYwNDk4LDE1LjQ3MDAyMjIwMTUzODA4NiBDMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDkuNzAzMjUwODg1MDA5NzY2LDAgOS43MDMyNTA4ODUwMDk3NjYsMCBDOS43MDMyNTA4ODUwMDk3NjYsMCA2LjE2Njc1NTE5OTQzMjM3MywwIDYuMTY2NzU1MTk5NDMyMzczLDAgQzYuMTY2NzU1MTk5NDMyMzczLDAgNi4xNjY3NTUxOTk0MzIzNzMsMCA2LjE2Njc1NTE5OTQzMjM3MywwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kSWNvbih7IHNpemUgPSAyNCwgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD17JzAgMCAyNCAyNCd9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXdoaXRlIGRhcms6dGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNyAxMUwxMiA2TDE3IDExTTEyIDE4VjdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaW5rSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9XCJpY29uLW1kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNSA1QzE0LjQ0NzcgNSAxNCA0LjU1MjI4IDE0IDRDMTQgMy40NDc3MiAxNC40NDc3IDMgMTUgM0gyMEMyMC41NTIzIDMgMjEgMy40NDc3MiAyMSA0VjlDMjEgOS41NTIyOCAyMC41NTIzIDEwIDIwIDEwQzE5LjQ0NzcgMTAgMTkgOS41NTIyOCAxOSA5VjYuNDE0MjFMMTMuNzA3MSAxMS43MDcxQzEzLjMxNjYgMTIuMDk3NiAxMi42ODM0IDEyLjA5NzYgMTIuMjkyOSAxMS43MDcxQzExLjkwMjQgMTEuMzE2NiAxMS45MDI0IDEwLjY4MzQgMTIuMjkyOSAxMC4yOTI5TDE3LjU4NTggNUgxNVpNNCA3QzQgNS4zNDMxNSA1LjM0MzE1IDQgNyA0SDEwQzEwLjU1MjMgNCAxMSA0LjQ0NzcyIDExIDVDMTEgNS41NTIyOCAxMC41NTIzIDYgMTAgNkg3QzYuNDQ3NzIgNiA2IDYuNDQ3NzIgNiA3VjE3QzYgMTcuNTUyMyA2LjQ0NzcyIDE4IDcgMThIMTdDMTcuNTUyMyAxOCAxOCAxNy41NTIzIDE4IDE3VjE0QzE4IDEzLjQ0NzcgMTguNDQ3NyAxMyAxOSAxM0MxOS41NTIzIDEzIDIwIDEzLjQ0NzcgMjAgMTRWMTdDMjAgMTguNjU2OSAxOC42NTY5IDIwIDE3IDIwSDdDNS4zNDMxNSAyMCA0IDE4LjY1NjkgNCAxN1Y3WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERvdHNJY29uKHtcbiAgY2xhc3NOYW1lID0gJ2gtNCB3LTQgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXktNTAwJyxcbn06IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxOVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgICA8Y2lyY2xlIGN4PVwiNVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgR2Vhckljb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgR2Vhckljb246IFJlYWN0LkZDPEdlYXJJY29uUHJvcHM+ID0gKHsgY2xhc3NOYW1lID0gJycgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9XCIxN1wiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExLjY0MzkgM0MxMC45MzUyIDMgMTAuMjc5NCAzLjM3NTA4IDkuOTIwMDIgMy45ODU5Nkw5LjQ5NjQ0IDQuNzA2MDVDOC45NjE4NCA1LjYxNDg3IDcuOTg5MzggNi4xNzYzMiA2LjkzNTAxIDYuMTg0ODlMNi4wOTk2NyA2LjE5MTY4QzUuMzkwOTYgNi4xOTc0NCA0LjczODIzIDYuNTc3ODMgNC4zODM4NiA3LjE5MTYxTDQuMDI3NzYgNy44MDg0MUMzLjY3MzM5IDguNDIyMTkgMy42NzAzMiA5LjE3NzY3IDQuMDE5NjkgOS43OTQzTDQuNDMxNTEgMTAuNTIxMkM0Ljk1MTI3IDExLjQzODYgNC45NTEyNyAxMi41NjE1IDQuNDMxNTEgMTMuNDc4OEw0LjAxOTY5IDE0LjIwNTdDMy42NzAzMiAxNC44MjI0IDMuNjczMzkgMTUuNTc3OCA0LjAyNzc2IDE2LjE5MTZMNC4zODM4NiAxNi44MDg0QzQuNzM4MjMgMTcuNDIyMiA1LjM5MDk2IDE3LjgwMjYgNi4wOTk2NiAxNy44MDgzTDYuOTM1MDIgMTcuODE1MUM3Ljk4OTM5IDE3LjgyMzcgOC45NjE4NSAxOC4zODUxIDkuNDk2NDUgMTkuMjk0TDkuOTIwMDIgMjAuMDE0QzEwLjI3OTQgMjAuNjI0OSAxMC45MzUyIDIxIDExLjY0MzkgMjFIMTIuMzU2MUMxMy4wNjQ4IDIxIDEzLjcyMDYgMjAuNjI0OSAxNC4wOCAyMC4wMTRMMTQuNTAzNSAxOS4yOTRDMTUuMDM4MSAxOC4zODUxIDE2LjAxMDYgMTcuODIzNyAxNy4wNjUgMTcuODE1MUwxNy45MDA0IDE3LjgwODNDMTguNjA5MSAxNy44MDI2IDE5LjI2MTggMTcuNDIyMiAxOS42MTYyIDE2LjgwODRMMTkuOTcyMyAxNi4xOTE2QzIwLjMyNjcgMTUuNTc3OCAyMC4zMjk4IDE0LjgyMjQgMTkuOTgwNCAxNC4yMDU3TDE5LjU2ODYgMTMuNDc4OEMxOS4wNDg4IDEyLjU2MTUgMTkuMDQ4OCAxMS40Mzg2IDE5LjU2ODYgMTAuNTIxMkwxOS45ODA0IDkuNzk0M0MyMC4zMjk4IDkuMTc3NjcgMjAuMzI2NyA4LjQyMjE5IDE5Ljk3MjMgNy44MDg0MUwxOS42MTYyIDcuMTkxNjFDMTkuMjYxOCA2LjU3NzgzIDE4LjYwOTEgNi4xOTc0NCAxNy45MDA0IDYuMTkxNjhMMTcuMDY1IDYuMTg0ODlDMTYuMDEwNiA2LjE3NjMyIDE1LjAzODIgNS42MTQ4NyAxNC41MDM2IDQuNzA2MDVMMTQuMDggMy45ODU5NkMxMy43MjA2IDMuMzc1MDggMTMuMDY0OCAzIDEyLjM1NjEgM0gxMS42NDM5WlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMi41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+PC9jaXJjbGU+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHZWFySWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBpbkljb24oeyB1bnBpbiA9IGZhbHNlIH06IHsgdW5waW4/OiBib29sZWFuIH0pIHtcbiAgaWYgKHVucGluKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzdmdcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTVWMTcuNTU4NUMxNSAxOC40MTkzIDE0LjQ0OTEgMTkuMTgzNiAxMy42MzI1IDE5LjQ1NThMMTMuMTcyNiAxOS42MDkxQzEyLjQ1NCAxOS44NDg3IDExLjY2MTYgMTkuNjYxNiAxMS4xMjYgMTkuMTI2TDQuODc0MDMgMTIuODc0QzQuMzM4MzcgMTIuMzM4NCA0LjE1MTMyIDExLjU0NiA0LjM5MDg4IDEwLjgyNzRMNC41NDQxNSAxMC4zNjc1QzQuODE2MzggOS41NTA4NiA1LjU4MDY2IDkgNi40NDE1MiA5SDlNMTIgNi4yTDEzLjYyNzcgMy45MjExNkMxNC4zNDYxIDIuOTE1NDkgMTUuNzk1NSAyLjc5NTUyIDE2LjY2OTQgMy42Njk0MkwyMC4zMzA2IDcuMzMwNThDMjEuMjA0NSA4LjIwNDQ4IDIxLjA4NDUgOS42NTM5MiAyMC4wNzg4IDEwLjM3MjNMMTggMTEuODU3MVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk04IDE2TDMgMjFcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNNCA0TDIwIDIwXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9XCJpY29uLXNtXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE3LjQ4NDUgMi44Nzk4QzE2LjE3NzMgMS41NzI1OCAxNC4wMTA3IDEuNzQ1MzQgMTIuOTI3MiAzLjI0MzE4TDkuNzk3NzIgNy41NjkyM0M5LjYwOTQ1IDcuODI5NDggOS4zMDc3NSA3Ljk4MzYgOC45ODY1NCA3Ljk4MzZINi40NDY3M0MzLjc0MDYxIDcuOTgzNiAyLjI3NDE0IDExLjY3NTkgNC4xNjk0OCAxMy41NzEzTDYuNTkxMTYgMTUuOTkzTDIuMjkzMjQgMjAuMjkwOUMxLjkwMjI1IDIwLjY4MTkgMS45MDIyNSAyMS4zMTU4IDIuMjkzMjQgMjEuNzA2OEMyLjY4NDIyIDIyLjA5NzcgMy4zMTgxMiAyMi4wOTc3IDMuNzA5MTEgMjEuNzA2OEw4LjAwNzAzIDE3LjQwODhMMTAuNDI4NyAxOS44MzA1QzEyLjMyNDEgMjEuNzI1OSAxNi4wMTY0IDIwLjI1OTQgMTYuMDE2NCAxNy41NTMzVjE1LjAxMzVDMTYuMDE2NCAxNC42OTIzIDE2LjE3MDUgMTQuMzkwNiAxNi40MzA4IDE0LjIwMjNMMjAuNzU2OCAxMS4wNzI4QzIyLjI1NDcgOS45ODkyNiAyMi40Mjc0IDcuODIyNyAyMS4xMjAyIDYuNTE1NDlMMTcuNDg0NSAyLjg3OThaTTExLjg0NDYgMTguNDE0N0MxMi40OTk0IDE5LjA2OTQgMTQuMDE0MSAxOC40OTI4IDE0LjAxNDEgMTcuNTUzM1YxNS4wMTM1QzE0LjAxNDEgMTQuMDQ5OSAxNC40NzY0IDEzLjE0NDcgMTUuMjU3MiAxMi41OEwxOS41ODMyIDkuNDUwNDdDMjAuMDgyNSA5LjA4OTI4IDIwLjE0MDEgOC4zNjcxIDE5LjcwNDMgNy45MzEzNkwxNi4wNjg2IDQuMjk1NjdDMTUuNjMyOSAzLjg1OTkzIDE0LjkxMDcgMy45MTc1MSAxNC41NDk1IDQuNDE2OEwxMS40MjAxIDguNzQyODVDMTAuODU1MyA5LjUyMzU5IDkuOTUwMTYgOS45ODU5NCA4Ljk4NjU0IDkuOTg1OTRINi40NDY3M0M1LjUwNzIgOS45ODU5NCA0LjkzMDU5IDExLjUwMDYgNS41ODUzNSAxMi4xNTU0TDExLjg0NDYgMTguNDE0N1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFRyYXNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUcmFzaEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiBUcmFzaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTAuNTU1NSA0QzEwLjA5OSA0IDkuNzAwNTIgNC4zMDkwNiA5LjU4NjkzIDQuNzUxMTRMOS4yOTM4MiA1Ljg5MTlIMTQuNzE1TDE0LjQyMTkgNC43NTExNEMxNC4zMDgzIDQuMzA5MDYgMTMuOTA5OCA0IDEzLjQ1MzMgNEgxMC41NTU1Wk0xNi43Nzk5IDUuODkxOUwxNi4zNTg5IDQuMjUzNDJDMTYuMDE4MiAyLjkyNzE5IDE0LjgyMjYgMiAxMy40NTMzIDJIMTAuNTU1NUM5LjE4NjE2IDIgNy45OTA2MiAyLjkyNzE5IDcuNjQ5ODUgNC4yNTM0Mkw3LjIyODg2IDUuODkxOUg0QzMuNDQ3NzIgNS44OTE5IDMgNi4zMzk2MSAzIDYuODkxOUMzIDcuNDQ0MTggMy40NDc3MiA3Ljg5MTkgNCA3Ljg5MTlINC4xMDA2OUw1LjMxNTQ0IDE5LjMxNzJDNS40Nzc2MyAyMC44NDI3IDYuNzY0NTUgMjIgOC4yOTg2MyAyMkgxNS43MDE0QzE3LjIzNTQgMjIgMTguNTIyNCAyMC44NDI3IDE4LjY4NDYgMTkuMzE3MkwxOS44OTkzIDcuODkxOUgyMEMyMC41NTIzIDcuODkxOSAyMSA3LjQ0NDE4IDIxIDYuODkxOUMyMSA2LjMzOTYxIDIwLjU1MjMgNS44OTE5IDIwIDUuODkxOUgxNi43Nzk5Wk0xNy44ODggNy44OTE5SDYuMTExOTZMNy4zMDQyMyAxOS4xMDU3QzcuMzU4MyAxOS42MTQyIDcuNzg3MjcgMjAgOC4yOTg2MyAyMEgxNS43MDE0QzE2LjIxMjcgMjAgMTYuNjQxNyAxOS42MTQyIDE2LjY5NTggMTkuMTA1N0wxNy44ODggNy44OTE5Wk0xMCAxMEMxMC41NTIzIDEwIDExIDEwLjQ0NzcgMTEgMTFWMTZDMTEgMTYuNTUyMyAxMC41NTIzIDE3IDEwIDE3QzkuNDQ3NzIgMTcgOSAxNi41NTIzIDkgMTZWMTFDOSAxMC40NDc3IDkuNDQ3NzIgMTAgMTAgMTBaTTE0IDEwQzE0LjU1MjMgMTAgMTUgMTAuNDQ3NyAxNSAxMVYxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdDMTMuNDQ3NyAxNyAxMyAxNi41NTIzIDEzIDE2VjExQzEzIDEwLjQ0NzcgMTMuNDQ3NyAxMCAxNCAxMFpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNaW5pbWFsUGx1Z2luKHtcbiAgc2l6ZSxcbiAgY2xhc3NOYW1lID0gJ2ljb24tbWQnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTUuNDY0NiAxOUMxNS4yMjE5IDIwLjY5NjEgMTMuNzYzMiAyMiAxMiAyMkMxMC4yMzY4IDIyIDguNzc4MDYgMjAuNjk2MSA4LjUzNTQ0IDE5SDZDNC4zNDMxNSAxOSAzIDE3LjY1NjkgMyAxNlYxMy41QzMgMTIuOTQ3NyAzLjQ0NzcyIDEyLjUgNCAxMi41SDQuNUM1LjMyODQzIDEyLjUgNiAxMS44Mjg0IDYgMTFDNiAxMC4xNzE2IDUuMzI4NDMgOS41IDQuNSA5LjVINEMzLjQ0NzcyIDkuNSAzIDkuMDUyMjkgMyA4LjVMMyA2QzMgNC4zNDMxNSA0LjM0MzE1IDMgNiAzTDE4IDNDMTkuNjU2OSAzIDIxIDQuMzQzMTUgMjEgNkwyMSAxNkMyMSAxNy42NTY5IDE5LjY1NjkgMTkgMTggMTlIMTUuNDY0NlpNMTIgMjBDMTIuODI4NCAyMCAxMy41IDE5LjMyODQgMTMuNSAxOC41VjE4QzEzLjUgMTcuNDQ3NyAxMy45NDc3IDE3IDE0LjUgMTdIMThDMTguNTUyMyAxNyAxOSAxNi41NTIzIDE5IDE2TDE5IDZDMTkgNS40NDc3MiAxOC41NTIzIDUgMTggNUw2IDVDNS40NDc3MiA1IDUgNS40NDc3MiA1IDZWNy41MzU0NEM2LjY5NjE1IDcuNzc4MDYgOCA5LjIzNjc2IDggMTFDOCAxMi43NjMyIDYuNjk2MTUgMTQuMjIxOSA1IDE0LjQ2NDZMNSAxNkM1IDE2LjU1MjMgNS40NDc3MSAxNyA2IDE3SDkuNUMxMC4wNTIzIDE3IDEwLjUgMTcuNDQ3NyAxMC41IDE4VjE4LjVDMTAuNSAxOS4zMjg0IDExLjE3MTYgMjAgMTIgMjBaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEF6dXJlTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICdoLTQgdy00Jyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJtOC4wNDU4IDAuODE5ODFhMS4xMTk3IDEuMTE5NyAwIDAgMC0xLjA2MDggMC43NjE4NGwtNi43OTEyIDIwLjEyM2ExLjExNzggMS4xMTc4IDAgMCAwIDEuMDU5MiAxLjQ3NTFoNS40NjQ3YTEuMTE5NyAxLjExOTcgMCAwIDAgMS4wNjA4LTAuNzYxNWwxLjM1MjgtNC4wMDg0LTIuMzY4NC0yLjIxMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAxIDAuMzUxOTMtMC44OTIzaDMuMDYzOWwxLjgyMTMtNS4zOTY2LTIuODExMS04LjMyOTRhMS4xMTgxIDEuMTE4MSAwIDAgMC0xLjA1OTUtMC43NjA0OWgtMC4wODM2elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTcuMTE0NyAxNS4zMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAwLTAuMzUxOTMgMC44OTIzbDcuMTU1MiA2LjY3ODJhMS4xMjQ4IDEuMTI0OCAwIDAgMCAwLjc2NzI0IDAuMzAyMzhoMC4yNDE3YTEuMTE4MSAxLjExODEgMCAwIDAgMS4wNTM0LTEuNDc1NWwtMi4xNTkxLTYuMzk3NHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy4wMTUgMS41ODA3YTEuMTE3OCAxLjExNzggMCAwIDAtMS4wNTkzLTAuNzYwNDloLTcuODI1OGExLjExODEgMS4xMTgxIDAgMCAxIDEuMDU5MyAwLjc2MDQ5bDYuNzkxNiAyMC4xMjNhMS4xMTgxIDEuMTE4MSAwIDAgMS0xLjA1OTMgMS40NzU3aDcuODI2MWExLjExODEgMS4xMTgxIDAgMCAwIDEuMDU5LTEuNDc1N3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT3BlbkFJTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnaC00IHctNCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTM3LjUzMjQgMTYuODcwN0MzNy45ODA4IDE1LjUyNDEgMzguMTM2MyAxNC4wOTc0IDM3Ljk4ODYgMTIuNjg1OUMzNy44NDA5IDExLjI3NDQgMzcuMzkzNCA5LjkxMDc2IDM2LjY3NiA4LjY4NjIyQzM1LjYxMjYgNi44MzQwNCAzMy45ODgyIDUuMzY3NiAzMi4wMzczIDQuNDk4NUMzMC4wODY0IDMuNjI5NDEgMjcuOTA5OCAzLjQwMjU5IDI1LjgyMTUgMy44NTA3OEMyNC44Nzk2IDIuNzg5MyAyMy43MjE5IDEuOTQxMjUgMjIuNDI1NyAxLjM2MzQxQzIxLjEyOTUgMC43ODU1NzUgMTkuNzI0OSAwLjQ5MTI2OSAxOC4zMDU4IDAuNTAwMTk3QzE2LjE3MDggMC40OTUwNDQgMTQuMDg5MyAxLjE2ODAzIDEyLjM2MTQgMi40MjIxNEMxMC42MzM1IDMuNjc2MjQgOS4zNDg1MyA1LjQ0NjY2IDguNjkxNyA3LjQ3ODE1QzcuMzAwODUgNy43NjI4NiA1Ljk4Njg2IDguMzQxNCA0LjgzNzcgOS4xNzUwNUMzLjY4ODU0IDEwLjAwODcgMi43MzA3MyAxMS4wNzgyIDIuMDI4MzkgMTIuMzEyQzAuOTU2NDY0IDE0LjE1OTEgMC40OTg5MDUgMTYuMjk4OCAwLjcyMTY5OCAxOC40MjI4QzAuOTQ0NDkyIDIwLjU0NjcgMS44MzYxMiAyMi41NDQ5IDMuMjY4IDI0LjEyOTNDMi44MTk2NiAyNS40NzU5IDIuNjY0MTMgMjYuOTAyNiAyLjgxMTgyIDI4LjMxNDFDMi45NTk1MSAyOS43MjU2IDMuNDA3MDEgMzEuMDg5MiA0LjEyNDM3IDMyLjMxMzhDNS4xODc5MSAzNC4xNjU5IDYuODEyMyAzNS42MzIyIDguNzYzMjEgMzYuNTAxM0MxMC43MTQxIDM3LjM3MDQgMTIuODkwNyAzNy41OTczIDE0Ljk3ODkgMzcuMTQ5MkMxNS45MjA4IDM4LjIxMDcgMTcuMDc4NiAzOS4wNTg3IDE4LjM3NDcgMzkuNjM2NkMxOS42NzA5IDQwLjIxNDQgMjEuMDc1NSA0MC41MDg3IDIyLjQ5NDYgNDAuNDk5OEMyNC42MzA3IDQwLjUwNTQgMjYuNzEzMyAzOS44MzIxIDI4LjQ0MTggMzguNTc3MkMzMC4xNzA0IDM3LjMyMjMgMzEuNDU1NiAzNS41NTA2IDMyLjExMTkgMzMuNTE3OUMzMy41MDI3IDMzLjIzMzIgMzQuODE2NyAzMi42NTQ3IDM1Ljk2NTkgMzEuODIxQzM3LjExNSAzMC45ODc0IDM4LjA3MjggMjkuOTE3OCAzOC43NzUyIDI4LjY4NEMzOS44NDU4IDI2LjgzNzEgNDAuMzAyMyAyNC42OTc5IDQwLjA3ODkgMjIuNTc0OEMzOS44NTU2IDIwLjQ1MTcgMzguOTYzOSAxOC40NTQ0IDM3LjUzMjQgMTYuODcwN1pNMjIuNDk3OCAzNy44ODQ5QzIwLjc0NDMgMzcuODg3NCAxOS4wNDU5IDM3LjI3MzMgMTcuNjk5NCAzNi4xNTAxQzE3Ljc2MDEgMzYuMTE3IDE3Ljg2NjYgMzYuMDU4NiAxNy45MzYgMzYuMDE2MUwyNS45MDA0IDMxLjQxNTZDMjYuMTAwMyAzMS4zMDE5IDI2LjI2NjMgMzEuMTM3IDI2LjM4MTMgMzAuOTM3OEMyNi40OTY0IDMwLjczODYgMjYuNTU2MyAzMC41MTI0IDI2LjU1NDkgMzAuMjgyNVYxOS4wNTQyTDI5LjkyMTMgMjAuOTk4QzI5LjkzODkgMjEuMDA2OCAyOS45NTQxIDIxLjAxOTggMjkuOTY1NiAyMS4wMzU5QzI5Ljk3NyAyMS4wNTIgMjkuOTg0MiAyMS4wNzA3IDI5Ljk4NjcgMjEuMDkwMlYzMC4zODg5QzI5Ljk4NDIgMzIuMzc1IDI5LjE5NDYgMzQuMjc5MSAyNy43OTA5IDM1LjY4NDFDMjYuMzg3MiAzNy4wODkyIDI0LjQ4MzggMzcuODgwNiAyMi40OTc4IDM3Ljg4NDlaTTYuMzkyMjcgMzEuMDA2NEM1LjUxMzk3IDI5LjQ4ODggNS4xOTc0MiAyNy43MTA3IDUuNDk4MDQgMjUuOTgzMkM1LjU1NzE4IDI2LjAxODcgNS42NjA0OCAyNi4wODE4IDUuNzM0NjEgMjYuMTI0NEwxMy42OTkgMzAuNzI0OEMxMy44OTc1IDMwLjg0MDggMTQuMTIzMyAzMC45MDIgMTQuMzUzMiAzMC45MDJDMTQuNTgzIDMwLjkwMiAxNC44MDg4IDMwLjg0MDggMTUuMDA3MyAzMC43MjQ4TDI0LjczMSAyNS4xMTAzVjI4Ljk5NzlDMjQuNzMyMSAyOS4wMTc3IDI0LjcyODMgMjkuMDM3NiAyNC43MTk5IDI5LjA1NTZDMjQuNzExNSAyOS4wNzM2IDI0LjY5ODggMjkuMDg5MyAyNC42ODI5IDI5LjEwMTJMMTYuNjMxNyAzMy43NDk3QzE0LjkwOTYgMzQuNzQxNiAxMi44NjQzIDM1LjAwOTcgMTAuOTQ0NyAzNC40OTU0QzkuMDI1MDYgMzMuOTgxMSA3LjM4Nzg1IDMyLjcyNjMgNi4zOTIyNyAzMS4wMDY0Wk00LjI5NzA3IDEzLjYxOTRDNS4xNzE1NiAxMi4wOTk4IDYuNTUyNzkgMTAuOTM2NCA4LjE5ODg1IDEwLjMzMjdDOC4xOTg4NSAxMC40MDEzIDguMTk0OTEgMTAuNTIyOCA4LjE5NDkxIDEwLjYwNzFWMTkuODA4QzguMTkzNTEgMjAuMDM3OCA4LjI1MzM0IDIwLjI2MzggOC4zNjgyMyAyMC40NjI5QzguNDgzMTIgMjAuNjYxOSA4LjY0ODkzIDIwLjgyNjcgOC44NDg2MyAyMC45NDA0TDE4LjU3MjMgMjYuNTU0MkwxNS4yMDYgMjguNDk3OUMxNS4xODk0IDI4LjUwODkgMTUuMTcwMyAyOC41MTU1IDE1LjE1MDUgMjguNTE3M0MxNS4xMzA3IDI4LjUxOTEgMTUuMTEwNyAyOC41MTYgMTUuMDkyNCAyOC41MDgyTDcuMDQwNDYgMjMuODU1N0M1LjMyMTM1IDIyLjg2MDEgNC4wNjcxNiAyMS4yMjM1IDMuNTUyODkgMTkuMzA0NkMzLjAzODYyIDE3LjM4NTggMy4zMDYyNCAxNS4zNDEzIDQuMjk3MDcgMTMuNjE5NFpNMzEuOTU1IDIwLjA1NTZMMjIuMjMxMiAxNC40NDExTDI1LjU5NzYgMTIuNDk4MUMyNS42MTQyIDEyLjQ4NzIgMjUuNjMzMyAxMi40ODA1IDI1LjY1MzEgMTIuNDc4N0MyNS42NzI5IDEyLjQ3NjkgMjUuNjkyOCAxMi40ODAxIDI1LjcxMTEgMTIuNDg3OUwzMy43NjMxIDE3LjEzNjRDMzQuOTk2NyAxNy44NDkgMzYuMDAxNyAxOC44OTgyIDM2LjY2MDYgMjAuMTYxM0MzNy4zMTk0IDIxLjQyNDQgMzcuNjA0NyAyMi44NDkgMzcuNDgzMiAyNC4yNjg0QzM3LjM2MTcgMjUuNjg3OCAzNi44MzgyIDI3LjA0MzIgMzUuOTc0MyAyOC4xNzU5QzM1LjExMDMgMjkuMzA4NiAzMy45NDE1IDMwLjE3MTcgMzIuNjA0NyAzMC42NjQxQzMyLjYwNDcgMzAuNTk0NyAzMi42MDQ3IDMwLjQ3MzMgMzIuNjA0NyAzMC4zODg5VjIxLjE4OEMzMi42MDY2IDIwLjk1ODYgMzIuNTQ3NCAyMC43MzI4IDMyLjQzMzIgMjAuNTMzOEMzMi4zMTkgMjAuMzM0OCAzMi4xNTQgMjAuMTY5OCAzMS45NTUgMjAuMDU1NlpNMzUuMzA1NSAxNS4wMTI4QzM1LjI0NjQgMTQuOTc2NSAzNS4xNDMxIDE0LjkxNDIgMzUuMDY5IDE0Ljg3MTdMMjcuMTA0NSAxMC4yNzEyQzI2LjkwNiAxMC4xNTU0IDI2LjY4MDMgMTAuMDk0MyAyNi40NTA0IDEwLjA5NDNDMjYuMjIwNiAxMC4wOTQzIDI1Ljk5NDggMTAuMTU1NCAyNS43OTYzIDEwLjI3MTJMMTYuMDcyNiAxNS44ODU4VjExLjk5ODJDMTYuMDcxNSAxMS45NzgzIDE2LjA3NTMgMTEuOTU4NSAxNi4wODM3IDExLjk0MDVDMTYuMDkyMSAxMS45MjI1IDE2LjEwNDggMTEuOTA2OCAxNi4xMjA3IDExLjg5NDlMMjQuMTcxOSA3LjI1MDI1QzI1LjQwNTMgNi41MzkwMyAyNi44MTU4IDYuMTkzNzYgMjguMjM4MyA2LjI1NDgyQzI5LjY2MDggNi4zMTU4OSAzMS4wMzY0IDYuNzgwNzcgMzIuMjA0NCA3LjU5NTA4QzMzLjM3MjMgOC40MDkzOSAzNC4yODQyIDkuNTM5NDUgMzQuODMzNCAxMC44NTMxQzM1LjM4MjYgMTIuMTY2NyAzNS41NDY0IDEzLjYwOTUgMzUuMzA1NSAxNS4wMTI4Wk0xNC4yNDI0IDIxLjk0MTlMMTAuODc1MiAxOS45OTgxQzEwLjg1NzYgMTkuOTg5MyAxMC44NDIzIDE5Ljk3NjMgMTAuODMwOSAxOS45NjAyQzEwLjgxOTUgMTkuOTQ0MSAxMC44MTIyIDE5LjkyNTQgMTAuODA5OCAxOS45MDU4VjEwLjYwNzFDMTAuODEwNyA5LjE4Mjk1IDExLjIxNzMgNy43ODg0OCAxMS45ODE5IDYuNTg2OTZDMTIuNzQ2NiA1LjM4NTQ0IDEzLjgzNzcgNC40MjY1OSAxNS4xMjc1IDMuODIyNjRDMTYuNDE3MyAzLjIxODY5IDE3Ljg1MjQgMi45OTQ2NCAxOS4yNjQ5IDMuMTc2N0MyMC42Nzc1IDMuMzU4NzYgMjIuMDA4OSAzLjkzOTQxIDIzLjEwMzQgNC44NTA2N0MyMy4wNDI3IDQuODgzNzkgMjIuOTM3IDQuOTQyMTUgMjIuODY2OCA0Ljk4NDczTDE0LjkwMjQgOS41ODUxN0MxNC43MDI1IDkuNjk4NzggMTQuNTM2NiA5Ljg2MzU2IDE0LjQyMTUgMTAuMDYyNkMxNC4zMDY1IDEwLjI2MTYgMTQuMjQ2NiAxMC40ODc3IDE0LjI0NzkgMTAuNzE3NUwxNC4yNDI0IDIxLjk0MTlaTTE2LjA3MSAxNy45OTkxTDIwLjQwMTggMTUuNDk3OEwyNC43MzI1IDE3Ljk5NzVWMjIuOTk4NUwyMC40MDE4IDI1LjQ5ODNMMTYuMDcxIDIyLjk5ODVWMTcuOTk5MVpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hhdEdQVE1pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT1cImx1Y2lkZSBsdWNpZGUtYm90XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEwXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiAvPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI1XCIgcj1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMiA3djRcIiAvPlxuICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCI4XCIgeTE9XCIxNlwiIHkyPVwiMTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxNlwiIHgyPVwiMTZcIiB5MT1cIjE2XCIgeTI9XCIxNlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwibTE2IDMwLjIzOGMxLjIyOTggMCAyLjIyNTktMC45OTYwOCAyLjIyNTktMi4yMjU5di0xMS40NmMtMC42MzUxMy0wLjU2NDI5LTEuNjU1My0xLjY4MDUtMi4yMjU5LTIuMjUxLTAuNzk4NTggMC44Mzc5My0xLjM1OTkgMS4zNTk5LTIuMjI1OSAyLjI1MXYxMS40NmMwIDEuMjI5OCAwLjk5NjA4IDIuMjI1OSAyLjIyNTkgMi4yMjU5elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTI0Ljg2OCAxNS43NjFjLTAuNjE2OTEtMC42MTY0My0xLjMxMjEtMS4xMDY1LTIuMDUzNi0xLjQ3MDMtNi44MTQ3IDAuMDEwNDY3IDAuMTMzMDQgMC4wMzEwMjYtNi44MTQ3IDAuMDEwNDY3bDkuNTI4NiA5LjUyODZjMC4zOTMyNCAwLjM5MzI0IDEuMDcwMyAwLjIzNzQzIDEuMjM3Mi0wLjI5MTIyIDAuODM4NDEtMi42NTQ0IDAuMjA1ODktNS42NzIzLTEuODk3Ni03Ljc3NzZ6XCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJtNy4xMzE4IDE1Ljc2MWMwLjU5MDItMC41ODk3NSAxLjI1MjEtMS4wNjM5IDEuOTU3NS0xLjQyMjQgNi45MTA3LTAuMDM3NDI3LTAuMTE4MTItMC4wNTcyODggNi45MTA3LTAuMDM3NDI3bC05LjUyODYgOS41Mjg2Yy0wLjM5MzI0IDAuMzkzMjQtMS4wNzAzIDAuMjM3NDMtMS4yMzcyLTAuMjkxMjItMC44Mzg0MS0yLjY1NDMtMC4yMDU4OS01LjY3MjMgMS44OTc2LTcuNzc3NnpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0yNC4xNjIgOC4zNjU1Yy0wLjkzMTY5IDAtMS44Mjg4IDAuMTUwMDktMi42NjkxIDAuNDI3NzItNS40OTI0IDUuNTA3OSAwIDAtNS40OTI0IDUuNTA3OWgxNS4wNjljMC42MTc2NyAwIDEuMDI5NS0wLjY1MjkyIDAuNzQ5MzgtMS4yMDM4LTEuNDMyLTIuODEwMi00LjMyMTktNC43MzE4LTcuNjU3LTQuNzMxOHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy41NzUgNC4zMzNjLTAuNjI2MTMgMC42MjYxMy0xLjEzNDMgMS4zMjU3LTEuNTI0OCAyLjA3MTggMS42NzY3IDQuMTE3NCAwLjUzNTE4IDYuMzkwOS0wLjA1MDAzIDcuODk2NGwxMC42NTYtMTAuNjU2YzAuNDM3NzUtMC40Mzc3NSAwLjI2NzEtMS4xOTA4LTAuMzIwOS0xLjM4MTktMy4wMDEyLTAuOTczODItNi40MDMxLTAuMjg3NTEtOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNC40MjUgNC4zMzNjMi42ODIyIDIuNjgyMiAzLjE5OTcgNi43MTI5IDEuNTc0OCA5Ljk2ODJsLTEwLjY1Ni0xMC42NTZjLTAuNDM3NzUtMC40Mzc3NS0wLjI2NzEtMS4xOTA4IDAuMzIwOS0xLjM4MTkgMy4wMDEyLTAuOTczODIgNi40MDMxLTAuMjg3NTEgOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm03LjgzODUgOC4zNjU1YzAuOTEyMSAwIDEuNzkxIDAuMTQzODUgMi42MTYgMC40MTAzNyA1LjU0NTUgNS41MjUzLTAuMDYxNzczIDAuMDExNjc1IDUuNTQ1NSA1LjUyNTNoLTE1LjA2OWMtMC42MTc2OCAwLTEuMDI5NS0wLjY1MjkyLTAuNzQ5MzgtMS4yMDM4IDEuNDMyLTIuODEwMiA0LjMyMTktNC43MzE4IDcuNjU3LTQuNzMxOHpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMTdcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkuNjI2NzQgMTYuMjIwMkg5LjcwNDlDMTAuNDIyNSAxNi4yMjAyIDExLjAwMTYgMTUuNjQxMiAxMS4wMDE2IDE0LjkyMzZWNC4wNDIyNEg4LjMzMDA4VjE0LjkyQzguMzMwMDggMTUuNjM3NiA4LjkwOTE0IDE2LjIyMDIgOS42MjY3NCAxNi4yMjAyWlwiXG4gICAgICAgIGZpbGw9XCIjRjlBQjAwXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjY4MTkgOC4wMjgxM0MxMy4zMjQ5IDYuNjY3NTIgMTEuMjk2NCA2LjM5Mzk4IDkuNjY1NzcgNy4yMDA0TDE1LjA1ODUgMTIuNTkzMUMxNS4yODIzIDEyLjgxNjkgMTUuNjYyNCAxMi43MjgxIDE1Ljc1ODMgMTIuNDI5N0MxNi4yMzA4IDEwLjkyNyAxNS44NzU2IDkuMjE4MjIgMTQuNjgxOSA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjNUJCOTc0XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTQuNjQ5NTMgOC4wMjgxM0M2LjAwNjU5IDYuNjY3NTIgOC4wMzUwNyA2LjM5Mzk4IDkuNjY1NjcgNy4yMDA0TDQuMjcyOTcgMTIuNTkzMUM0LjA0OTE2IDEyLjgxNjkgMy42NjkwNCAxMi43MjgxIDMuNTczMTIgMTIuNDI5N0MzLjEwMDY0IDEwLjkyNyAzLjQ1NTg5IDkuMjE4MjIgNC42NDk1MyA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjMTI5RUFGXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjI4NCAzLjg0MzI2QzEyLjEzODMgMy44NDMyNiAxMC4zMTU5IDUuMjUwMDUgOS42NjU3NyA3LjIwMDM4SDE4LjE5MThDMTguNTM5OSA3LjIwMDM4IDE4Ljc3NDQgNi44MzA5MiAxOC42MTQ1IDYuNTE4M0MxNy44MDgxIDQuOTMwMzMgMTYuMTcwNCAzLjg0MzI2IDE0LjI4NCAzLjg0MzI2WlwiXG4gICAgICAgIGZpbGw9XCIjQUY1Q0Y3XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEwLjU1NzQgMS41NTkwMUM5LjA0MDUzIDMuMDc1OTMgOC43NDU2NyA1LjM2MDE5IDkuNjY1NzcgNy4yMDAzOUwxNS42OTQ0IDEuMTcxNzlDMTUuOTQzIDAuOTIzMTEzIDE1Ljg0MzYgMC40OTY4MTQgMTUuNTEzMiAwLjM5MDIzOUMxMy44MTUxIC0wLjE2MDQgMTEuODg5NiAwLjIyNjgyMiAxMC41NTc0IDEuNTU5MDFaXCJcbiAgICAgICAgZmlsbD1cIiNGRjhCQ0JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNOC43NzQwOCAxLjU1OTAxQzEwLjI5MSAzLjA3NTkzIDEwLjU4NTkgNS4zNjAxOSA5LjY2NTc2IDcuMjAwMzlMMy42MzcxNiAxLjE3MTc5QzMuMzg4NDggMC45MjMxMTMgMy40ODc5NSAwLjQ5NjgxNCAzLjgxODMzIDAuMzkwMjM5QzUuNTE2NDMgLTAuMTYwNCA3LjQ0MTg5IDAuMjI2ODIyIDguNzc0MDggMS41NTkwMVpcIlxuICAgICAgICBmaWxsPVwiI0ZBN0IxN1wiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01LjA0NzUyIDMuODQzMjZDNy4xOTMyMyAzLjg0MzI2IDkuMDE1NjYgNS4yNTAwNSA5LjY2NTc3IDcuMjAwMzhIMS4xMzk3NkMwLjc5MTYxNiA3LjIwMDM4IDAuNTU3MTUgNi44MzA5MiAwLjcxNzAxMyA2LjUxODNDMS41MjM0MyA0LjkzMDMzIDMuMTYxMTQgMy44NDMyNiA1LjA0NzUyIDMuODQzMjZaXCJcbiAgICAgICAgZmlsbD1cIiM0Mjg1RjRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RleUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdkYXJrOmZpbGwtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMiA0LjAwNkMyIDIuODk4IDIuODk3IDIgNC4wMDYgMmg5Ljk4OEMxNS4xMDIgMiAxNiAyLjg5NyAxNiA0LjAwNnY5Ljk4OEEyLjAwNSAyLjAwNSAwIDAgMSAxMy45OTQgMTZINC4wMDZBMi4wMDUgMi4wMDUgMCAwIDEgMiAxMy45OTRWNC4wMDZ6TTEzLjk5MiA5bC4wMDMtLjAwM0wxMC45OTcgNiA5Ljc1IDcuMjQ3IDExLjUwMyA5IDkuNzUgMTAuNzUzIDEwLjk5NyAxMmwyLjk5Ny0yLjk5N0wxMy45OTIgOXptLTkuOTkgMEw0IDguOTk3IDYuOTk3IDZsMS4yNDcgMS4yNDdMNi40OTIgOWwxLjc1MyAxLjc1M0w2Ljk5NyAxMiA0IDkuMDAzIDQuMDAzIDl6XCJcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHZW1pbmlJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcbiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDIpXCJcbiAgICAgICAgZD1cIk05IDE4YzAtMS4yNDUtLjI0LTIuNDE1LS43Mi0zLjUxYTguOTM0IDguOTM0IDAgMDAtMS45MTItMi44NTdBOC45MzQgOC45MzQgMCAwMDMuNTEgOS43MiA4LjY0NiA4LjY0NiAwIDAwMCA5YTguODg2IDguODg2IDAgMDAzLjUxLS42OTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3LTEuOTM2QTguOTM0IDguOTM0IDAgMDA4LjI4IDMuNTFDOC43NiAyLjQxNSA5IDEuMjQ1IDkgMGMwIDEuMjQ1LjIzMiAyLjQxNS42OTcgMy41MWE5LjI0NyA5LjI0NyAwIDAwMS45MzYgMi44NTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3IDEuOTM2QTguODg2IDguODg2IDAgMDAxOCA5Yy0xLjI0NSAwLTIuNDE1LjI0LTMuNTEuNzJhOC45MzQgOC45MzQgMCAwMC0yLjg1NyAxLjkxMiA5LjI0NyA5LjI0NyAwIDAwLTEuOTM1IDIuODU4QTguODg2IDguODg2IDAgMDA5IDE4elwiXG4gICAgICAvPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxyYWRpYWxHcmFkaWVudFxuICAgICAgICAgIGlkPVwiXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDJcIlxuICAgICAgICAgIGN4PVwiMFwiXG4gICAgICAgICAgY3k9XCIwXCJcbiAgICAgICAgICByPVwiMVwiXG4gICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInJvdGF0ZSgxMzUgOSAzLjcyOCkgc2NhbGUoMjUuNDU1OCAxMi43Mjc5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuMzI1XCIgc3RvcENvbG9yPVwiI0ZGRERCN1wiPjwvc3RvcD5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuNzA2XCIgc3RvcENvbG9yPVwiIzA3NkVGRlwiPjwvc3RvcD5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGVNaW5pbWFsSWNvbih7IGNsYXNzTmFtZSA9ICcnIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCI4MDBweFwiXG4gICAgICBoZWlnaHQ9XCI4MDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNDczLjE2LDIyMS40OGwtMi4yNi05LjU5SDI2Mi40NnY4OC4yMkgzODdjLTEyLjkzLDYxLjQtNzIuOTMsOTMuNzItMTIxLjk0LDkzLjcyLTM1LjY2LDAtNzMuMjUtMTUtOTguMTMtMzkuMTFhMTQwLjA4LDE0MC4wOCwwLDAsMS00MS44LTk4Ljg4YzAtMzcuMTYsMTYuNy03NC4zMyw0MS05OC43OHM2MS0zOC4xMyw5Ny40OS0zOC4xM2M0MS43OSwwLDcxLjc0LDIyLjE5LDgyLjk0LDMyLjMxbDYyLjY5LTYyLjM2QzM5MC44Niw3Mi43MiwzNDAuMzQsMzIsMjYxLjYsMzJoMGMtNjAuNzUsMC0xMTksMjMuMjctMTYxLjU4LDY1LjcxQzU4LDEzOS41LDM2LjI1LDE5OS45MywzNi4yNSwyNTZTNTYuODMsMzY5LjQ4LDk3LjU1LDQxMS42QzE0MS4wNiw0NTYuNTIsMjAyLjY4LDQ4MCwyNjYuMTMsNDgwYzU3LjczLDAsMTEyLjQ1LTIyLjYyLDE1MS40NS02My42NiwzOC4zNC00MC40LDU4LjE3LTk2LjMsNTguMTctMTU0LjlDNDc1Ljc1LDIzNi43Nyw0NzMuMjcsMjIyLjEyLDQ3My4xNiwyMjEuNDhaXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY01pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTQgdy00XCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0xNy4zMDQgMy41NDcyaC0zLjY3MThsNi42OTU5IDE2LjkwNmgzLjY3MTh6bS0xMC42MDggMC02LjY5NTkgMTYuOTA2aDMuNzQ0MmwxLjM2OTMtMy41NTAyaDcuMDA1MmwxLjM2OTMgMy41NTAyaDMuNzQ0MmwtNi42OTU5LTE2LjkwNnptLTAuMzcxMTQgMTAuMjE2IDIuMjkxNC01Ljk0MTMgMi4yOTE0IDUuOTQxM3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgTGlzdGVuaW5nSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaXN0ZW5pbmdJY29uKHsgY2xhc3NOYW1lIH06IExpc3RlbmluZ0ljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMmEzIDMgMCAwIDAtMyAzdjdhMyAzIDAgMCAwIDYgMFY1YTMgMyAwIDAgMC0zLTNaXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlwiIC8+XG4gICAgICA8bGluZSB4MT1cIjEyXCIgeDI9XCIxMlwiIHkxPVwiMTlcIiB5Mj1cIjIyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgNC45MDk5QzExIDQuNDc0ODUgMTAuNDgyOCA0LjI0NzM0IDEwLjE2MjEgNC41NDEzMkw2LjY3NTcyIDcuNzM3MkM2LjQ5MTI5IDcuOTA2MjYgNi4yNTAxOSA4LjAwMDA1IDYgOC4wMDAwNUg0QzMuNDQ3NzIgOC4wMDAwNSAzIDguNDQ3NzYgMyA5LjAwMDA1VjE1QzMgMTUuNTUyMyAzLjQ0NzcyIDE2IDQgMTZINkM2LjI1MDE5IDE2IDYuNDkxMjkgMTYuMDkzOCA2LjY3NTcyIDE2LjI2MjlMMTAuMTYyMSAxOS40NTg4QzEwLjQ4MjggMTkuNzUyNyAxMSAxOS41MjUyIDExIDE5LjA5MDJWNC45MDk5Wk04LjgxMDY5IDMuMDY3MDFDMTAuNDE0MiAxLjU5NzE0IDEzIDIuNzM0NjMgMTMgNC45MDk5VjE5LjA5MDJDMTMgMjEuMjY1NSAxMC40MTQyIDIyLjQwMyA4LjgxMDY5IDIwLjkzMzFMNS42MTEwMiAxOEg0QzIuMzQzMTUgMTggMSAxNi42NTY5IDEgMTVWOS4wMDAwNUMxIDcuMzQzMTkgMi4zNDMxNSA2LjAwMDA1IDQgNi4wMDAwNUg1LjYxMTAyTDguODEwNjkgMy4wNjcwMVpNMjAuMzE2NiA2LjM1NjY1QzIwLjgwMTkgNi4wOTMxMyAyMS40MDkgNi4yNzI5NiAyMS42NzI1IDYuNzU4MzNDMjIuNTE5MSA4LjMxNzYgMjIuOTk5NiAxMC4xMDQyIDIyLjk5OTYgMTIuMDAwMUMyMi45OTk2IDEzLjg1MDcgMjIuNTQxOCAxNS41OTc0IDIxLjczMjMgMTcuMTMwMkMyMS40NzQ0IDE3LjYxODUgMjAuODY5NSAxNy44MDU0IDIwLjM4MTEgMTcuNTQ3NUMxOS44OTI3IDE3LjI4OTYgMTkuNzA1OSAxNi42ODQ2IDE5Ljk2MzggMTYuMTk2MkMyMC42MjQ5IDE0Ljk0NDQgMjAuOTk5NiAxMy41MTc1IDIwLjk5OTYgMTIuMDAwMUMyMC45OTk2IDEwLjQ0NTggMjAuNjA2NCA4Ljk4NjI3IDE5LjkxNDkgNy43MTI2MkMxOS42NTE0IDcuMjI3MjYgMTkuODMxMiA2LjYyMDE3IDIwLjMxNjYgNi4zNTY2NVpNMTUuNzk5NCA3LjkwMDQ5QzE2LjI0MSA3LjU2ODggMTYuODY3OSA3LjY1Nzg5IDE3LjE5OTUgOC4wOTk0N0MxOC4wMTU2IDkuMTg1OTMgMTguNDk5NiAxMC41Mzc5IDE4LjQ5OTYgMTIuMDAwMUMxOC40OTk2IDEzLjMxMjcgMTguMTA5NCAxNC41MzcyIDE3LjQzODUgMTUuNTYwNEMxNy4xMzU3IDE2LjAyMjIgMTYuNTE1OCAxNi4xNTExIDE2LjA1MzkgMTUuODQ4M0MxNS41OTIxIDE1LjU0NTUgMTUuNDYzMiAxNC45MjU1IDE1Ljc2NiAxNC40NjM3QzE2LjIyOTggMTMuNzU2NCAxNi40OTk2IDEyLjkxMTMgMTYuNDk5NiAxMi4wMDAxQzE2LjQ5OTYgMTAuOTg1OSAxNi4xNjUzIDEwLjA1MjYgMTUuNjAwNCA5LjMwMDYzQzE1LjI2ODcgOC44NTkwNSAxNS4zNTc4IDguMjMyMTggMTUuNzk5NCA3LjkwMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZU11dGVJY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyWk05LjUgOC41QzguOTQ3NzIgOC41IDguNSA4Ljk0NzcyIDguNSA5LjVWMTQuNUM4LjUgMTUuMDUyMyA4Ljk0NzcyIDE1LjUgOS41IDE1LjVIMTQuNUMxNS4wNTIzIDE1LjUgMTUuNSAxNS4wNTIzIDE1LjUgMTQuNVY5LjVDMTUuNSA4Ljk0NzcyIDE1LjA1MjMgOC41IDE0LjUgOC41SDkuNVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kTWVzc2FnZUljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc20gbS0xIG1kOm0tMFwiXG4gICAgICBzdHlsZT17eyB3aWR0aDogJzFlbScsIGhlaWdodDogJzFlbScsIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnIH19XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNLjUgMS4xNjNBMSAxIDAgMCAxIDEuOTcuMjhsMTIuODY4IDYuODM3YTEgMSAwIDAgMSAwIDEuNzY2TDEuOTY5IDE1LjcyQTEgMSAwIDAgMSAuNSAxNC44MzZWMTAuMzNhMSAxIDAgMCAxIC44MTYtLjk4M0w4LjUgOCAxLjMxNiA2LjY1M0ExIDEgMCAwIDEgLjUgNS42N1YxLjE2M1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVc2VySWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiN1wiIHI9XCI0XCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExvY2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPVwibHVjaWRlIGx1Y2lkZS1sb2NrXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjExXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiByeT1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk03IDExVjdhNSA1IDAgMCAxIDEwIDB2NFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTmV3Q2hhdEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbigndGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNi43OTI5IDIuNzkyODlDMTguMDExOCAxLjU3Mzk0IDE5Ljk4ODIgMS41NzM5NCAyMS4yMDcxIDIuNzkyODlDMjIuNDI2MSA0LjAxMTg0IDIyLjQyNjEgNS45ODgxNSAyMS4yMDcxIDcuMjA3MTFMMTIuNzA3MSAxNS43MDcxQzEyLjUxOTYgMTUuODk0NiAxMi4yNjUyIDE2IDEyIDE2SDlDOC40NDc3MiAxNiA4IDE1LjU1MjMgOCAxNVYxMkM4IDExLjczNDggOC4xMDUzNiAxMS40ODA0IDguMjkyODkgMTEuMjkyOUwxNi43OTI5IDIuNzkyODlaTTE5Ljc5MjkgNC4yMDcxMUMxOS4zNTUgMy43NjkyIDE4LjY0NSAzLjc2OTIgMTguMjA3MSA0LjIwNzFMMTAgMTIuNDE0MlYxNEgxMS41ODU4TDE5Ljc5MjkgNS43OTI4OUMyMC4yMzA4IDUuMzU0OTkgMjAuMjMwOCA0LjY0NTAxIDE5Ljc5MjkgNC4yMDcxMVpNNiA1QzUuNDQ3NzIgNSA1IDUuNDQ3NzEgNSA2VjE4QzUgMTguNTUyMyA1LjQ0NzcyIDE5IDYgMTlIMThDMTguNTUyMyAxOSAxOSAxOC41NTIzIDE5IDE4VjE0QzE5IDEzLjQ0NzcgMTkuNDQ3NyAxMyAyMCAxM0MyMC41NTIzIDEzIDIxIDEzLjQ0NzcgMjEgMTRWMThDMjEgMTkuNjU2OSAxOS42NTY5IDIxIDE4IDIxSDZDNC4zNDMxNSAyMSAzIDE5LjY1NjkgMyAxOFY2QzMgNC4zNDMxNCA0LjM0MzE1IDMgNiAzSDEwQzEwLjU1MjMgMyAxMSAzLjQ0NzcxIDExIDRDMTEgNC41NTIyOCAxMC41NTIzIDUgMTAgNUg2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGVyaW1lbnRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkgM0gxNU05IDNWOS4yNzU5QzkgOS43NDM3NyA4LjgzNTk3IDEwLjE5NjggOC41MzY0NCAxMC41NTYzTDQuODUwODUgMTQuOTc5QzQuMzAxMDggMTUuNjM4NyA0IDE2LjQ3MDMgNCAxNy4zMjkxVjE3LjMyOTFDNCAxOS4zNTY1IDUuNjQzNTMgMjEgNy42NzA5NCAyMUgxNi4zMjkxQzE4LjM1NjUgMjEgMjAgMTkuMzU2NSAyMCAxNy4zMjkxVjE3LjMyOTFDMjAgMTYuNDcwMyAxOS42OTg5IDE1LjYzODcgMTkuMTQ5MiAxNC45NzlMMTUuNDYzNiAxMC41NTYzQzE1LjE2NCAxMC4xOTY4IDE1IDkuNzQzNzcgMTUgOS4yNzU5VjNNOSAzSDhNMTUgM0gxNlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNSAxNC43NzRDMTEuNSAxMi44MzkgMTIuMTUgMTYuNzA4OSAxOCAxNFwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGUoe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHdpZHRoPVwiMjRweFwiXG4gICAgICBoZWlnaHQ9XCIyNHB4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjEuNVwiXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJycpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTQ3My4xNiwyMjEuNDhsLTIuMjYtOS41OUgyNjIuNDZ2ODguMjJIMzg3Yy0xMi45Myw2MS40LTcyLjkzLDkzLjcyLTEyMS45NCw5My43Mi0zNS42NiwwLTczLjI1LTE1LTk4LjEzLTM5LjExYTE0MC4wOCwxNDAuMDgsMCwwLDEtNDEuOC05OC44OGMwLTM3LjE2LDE2LjctNzQuMzMsNDEtOTguNzhzNjEtMzguMTMsOTcuNDktMzguMTNjNDEuNzksMCw3MS43NCwyMi4xOSw4Mi45NCwzMi4zMWw2Mi42OS02Mi4zNkMzOTAuODYsNzIuNzIsMzQwLjM0LDMyLDI2MS42LDMyaDBjLTYwLjc1LDAtMTE5LDIzLjI3LTE2MS41OCw2NS43MUM1OCwxMzkuNSwzNi4yNSwxOTkuOTMsMzYuMjUsMjU2UzU2LjgzLDM2OS40OCw5Ny41NSw0MTEuNkMxNDEuMDYsNDU2LjUyLDIwMi42OCw0ODAsMjY2LjEzLDQ4MGM1Ny43MywwLDExMi40NS0yMi42MiwxNTEuNDUtNjMuNjYsMzguMzQtNDAuNCw1OC4xNy05Ni4zLDU4LjE3LTE1NC45QzQ3NS43NSwyMzYuNzcsNDczLjI3LDIyMi4xMiw0NzMuMTYsMjIxLjQ4WlwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmlydGhkYXlJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMzMuMzMgMjkwXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sbnNYbGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC05IHctOScsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxkZWZzPlxuICAgICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgICBpZD1cImxpbmVhckdyYWRpZW50MTg0MlwiXG4gICAgICAgICAgeDE9XCIxNjMuOTJcIlxuICAgICAgICAgIHgyPVwiMTczLjY2XCJcbiAgICAgICAgICB5MT1cIjIyLjIxMlwiXG4gICAgICAgICAgeTI9XCItNi41Nzg0XCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSguMTAzOTEgLjA1MDE0MylcIlxuICAgICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBzdG9wQ29sb3I9XCIjNjQwYTYyXCIgb2Zmc2V0PVwiMFwiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcENvbG9yPVwiIzg1MjI4M1wiIG9mZnNldD1cIi40OTkxN1wiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcENvbG9yPVwiIzY0MGE2MlwiIG9mZnNldD1cIjFcIiAvPlxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPC9kZWZzPlxuICAgICAgPGc+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KC40MzQxNiAuOTAwODQgLS44OTk2NiAuNDM2NiAwIDApXCJcbiAgICAgICAgICBkPVwibTI1OS4yOS0xMjYuMDNhMjMyLjIgMjM3LjU2IDAgMCAxLTE3LjQxMiAyMzEuMzRsLTE5My4zMi0xMzEuNTl6XCJcbiAgICAgICAgICBmaWxsPVwidXJsKCNsaW5lYXJHcmFkaWVudDE4NDIpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoLjY5NjcgLjA1MTkyNiAtLjA1MTkyNiAuNjk2NyAzNS41NzggMjMuMTk2KVwiXG4gICAgICAgICAgZD1cIm01MC44MTggMzEuNDE1Yy0xLjQ2NTQgMi40NzQ5LTEwLjgzOCAyLjQxOTUtMTIuOTk3IDQuMzIwNC0yLjE1ODQgMS45MDA5LTMuMjg4IDExLjIwNi01LjkyODIgMTIuMzQ3LTIuNjQwMiAxLjE0MDktMTAuMTkxLTQuNDEzMi0xMy4wNTQtNC4xNDQxLTIuODYzNiAwLjI2OTE3LTkuMjQ2NiA3LjEzMy0xMi4wNTMgNi41MDQxLTIuODA2Ni0wLjYyODg5LTUuNjUwMy05LjU2MDItOC4xMjUyLTExLjAyNi0yLjQ3NDktMS40NjU0LTExLjY3MyAwLjMzNTcyLTEzLjU3NC0xLjgyMjdzMS4wNDgyLTExLjA1Ni0wLjA5MjctMTMuNjk2Yy0xLjE0MDktMi42NDAyLTkuNjQxMi02LjU4OTgtOS45MTA0LTkuNDUzMy0wLjI2OTE3LTIuODYzNiA3LjM0NjMtOC4zMjggNy45NzUyLTExLjEzNSAwLjYyODg5LTIuODA2Ni0zLjkyNjUtMTAuOTk4LTIuNDYxMi0xMy40NzMgMS40NjU0LTIuNDc0OSAxMC44MzgtMi40MTk1IDEyLjk5Ny00LjMyMDQgMi4xNTg0LTEuOTAwOSAzLjI4OC0xMS4yMDYgNS45MjgyLTEyLjM0NyAyLjY0MDItMS4xNDA5IDEwLjE5MSA0LjQxMzIgMTMuMDU0IDQuMTQ0MSAyLjg2MzYtMC4yNjkxNyA5LjI0NjYtNy4xMzMgMTIuMDUzLTYuNTA0MSAyLjgwNjYgMC42Mjg4OSA1LjY1MDMgOS41NjAyIDguMTI1MiAxMS4wMjZzMTEuNjczLTAuMzM1NzIgMTMuNTc0IDEuODIyN2MxLjkwMDkgMi4xNTg0LTEuMDQ4MiAxMS4wNTYgMC4wOTI3IDEzLjY5NiAxLjE0MDkgMi42NDAyIDkuNjQxMiA2LjU4OTggOS45MTA0IDkuNDUzMyAwLjI2OTE3IDIuODYzNS03LjM0NjMgOC4zMjgtNy45NzUyIDExLjEzNS0wLjYyODg5IDIuODA2NiAzLjkyNjUgMTAuOTk4IDIuNDYxMiAxMy40NzN6XCJcbiAgICAgICAgICBmaWxsPVwiI2ZmOWQ3OFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI2YyOTQ3MlwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCI0Ljc4NzdcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTcwLjM2XCIgY3k9XCIyMTUuNzZcIiByPVwiMTIuOTAzXCIgZmlsbD1cIiNjZmZmZmZcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJtMjIwLjc3IDE3NC43N2MtODguNTI2IDEwMS4wMy0xOTEuMjEgODUuNzMxLTIwOS41IDgyLjE0Mi0yLjIxMDEtMmUtNSAtMi42Njg2IDAuNDI0MjYtMy40MzcgMi4wMDIxbC0xLjcwNDIgNy41MDI4YzAuMDU2MTk3IDIuMzYwMyAwLjM3NTQ0IDIuNjQyOCAxLjkxMjEgMy41NDA5IDE4LjM5NiAzLjM3NDYgMTMwLjI3IDE5LjQ4OCAyMjMuNDYtODYuODgxIDAuNjQwMTEtMS41MDk1IDAuNDY2NTMtMy4xMzI0LTAuNTkxMzctNC43MzM3bC01LjE1NTgtMy42NDgyYy0xLjU4Ni0wLjg3NDMtMy45NTI0LTAuOTQzMzItNC45ODM3IDAuMDc1MXpcIlxuICAgICAgICAgIGNvbG9yPVwiIzAwMDAwMFwiXG4gICAgICAgICAgZmlsbD1cIiNmZjlkNzhcIlxuICAgICAgICAgIHN0cm9rZT1cIiNmMjk0NzJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMi44OTEzXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGcgZmlsbD1cIiNjZmZmZmZcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNzIuNjg0XCIgY3k9XCI5OS40N1wiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5OS4xNDRcIiBjeT1cIjE3Mi4zMlwiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1OS42MTdcIiBjeT1cIjIxNC43OFwiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMzUuNFwiIGN5PVwiMTE4LjQyXCIgcj1cIjEyLjkwM1wiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSgzOC42NilcIlxuICAgICAgICAgICAgZD1cIm0yNTQuMjEtMS45NjA4YTEyLjkwMyAxMi45MDMgMCAwIDEtNi40ODUyIDExLjE5NCAxMi45MDMgMTIuOTAzIDAgMCAxLTEyLjkzNy0wLjA1ODIgMTIuOTAzIDEyLjkwMyAwIDAgMS02LjM4NDMtMTEuMjUybDEyLjkwMyAwLjExNjF6XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJtMjkuNDc2IDE1OC4xNmExMi45MDMgMTIuOTAzIDAgMCAwLTMuNjU2MiAwLjUyOTNsLTMuMzY5MSAyMy4xODlhMTIuOTAzIDEyLjkwMyAwIDAgMCA3LjAyNTQgMi4wODc5IDEyLjkwMyAxMi45MDMgMCAwIDAgMTIuOTA0LTEyLjkwNCAxMi45MDMgMTIuOTAzIDAgMCAwLTEyLjkwNC0xMi45MDJ6XCIgLz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXNzaXN0YW50SWNvbih7XG4gIGNsYXNzTmFtZSA9ICcnLFxuICBzaXplID0gJzFlbScsXG59OiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbn0pIHtcbiAgY29uc3QgdW5pdCA9IDI0O1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICB2aWV3Qm94PXtgMCAwICR7dW5pdH0gJHt1bml0fWB9XG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtdG9rZW4tc2Vjb25kYXJ5IGgtMi8zIHctMi8zJywgY2xhc3NOYW1lKX1cbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiIC8+XG4gICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiMjIuMDhcIiB4Mj1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGFya2xlcyh7IGNsYXNzTmFtZSA9ICcnLCBzaXplID0gMjQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgc2hyaW5rLTAnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE5LjM5NzUgMS4zNTQ5OEMxOS4zNzQ2IDEuMTUyOTMgMTkuMjAzNyAxLjAwMDIxIDE5LjAwMDQgMUMxOC43OTcxIDAuOTk5NzkzIDE4LjYyNTkgMS4xNTIxNyAxOC42MDI2IDEuMzU0MTdDMTguNDc5OCAyLjQxODk0IDE4LjE2MjcgMy4xNTY5MiAxNy42NTk4IDMuNjU5ODNDMTcuMTU2OSA0LjE2Mjc0IDE2LjQxODkgNC40Nzk4MyAxNS4zNTQyIDQuNjAyNjRDMTUuMTUyMiA0LjYyNTkzIDE0Ljk5OTggNC43OTcwNyAxNSA1LjAwMDQxQzE1LjAwMDIgNS4yMDM3NSAxNS4xNTI5IDUuMzc0NTcgMTUuMzU1IDUuMzk3NDZDMTYuNDAxOSA1LjUxNjA1IDE3LjE1NjIgNS44MzMwNCAxNy42NzE2IDYuMzM5MDZDMTguMTg0NSA2Ljg0MjY5IDE4LjUwNzggNy41Nzk5OCAxOC42MDE2IDguNjM1MzlDMTguNjE5OSA4Ljg0MTk1IDE4Ljc5MzEgOS4wMDAyMyAxOS4wMDA1IDlDMTkuMjA3OCA4Ljk5OTc3IDE5LjM4MDYgOC44NDEwOSAxOS4zOTg1IDguNjM0NUMxOS40ODgzIDcuNTk2NzMgMTkuODExNCA2Ljg0MzI4IDIwLjMyNzMgNi4zMjczNUMyMC44NDMzIDUuODExNDIgMjEuNTk2NyA1LjQ4ODM0IDIyLjYzNDUgNS4zOTg1MUMyMi44NDExIDUuMzgwNjMgMjIuOTk5OCA1LjIwNzgyIDIzIDUuMDAwNDVDMjMuMDAwMiA0Ljc5MzA4IDIyLjg0MiA0LjYxOTkyIDIyLjYzNTQgNC42MDE1N0MyMS41OCA0LjUwNzgyIDIwLjg0MjcgNC4xODQ0NyAyMC4zMzkxIDMuNjcxNTdDMTkuODMzIDMuMTU2MjMgMTkuNTE2IDIuNDAxOTIgMTkuMzk3NSAxLjM1NDk4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgM0MxMS40ODMzIDMgMTEuODk3NCAzLjM0NTYyIDExLjk4MzkgMy44MjExMUMxMi40NjM3IDYuNDYwNDMgMTMuMjc5IDguMjM5ODMgMTQuNTE5NiA5LjQ4MDM5QzE1Ljc2MDIgMTAuNzIxIDE3LjUzOTYgMTEuNTM2MyAyMC4xNzg5IDEyLjAxNjFDMjAuNjU0NCAxMi4xMDI2IDIxIDEyLjUxNjcgMjEgMTNDMjEgMTMuNDgzMyAyMC42NTQ0IDEzLjg5NzQgMjAuMTc4OSAxMy45ODM5QzE3LjUzOTYgMTQuNDYzNyAxNS43NjAyIDE1LjI3OSAxNC41MTk2IDE2LjUxOTZDMTMuMjc5IDE3Ljc2MDIgMTIuNDYzNyAxOS41Mzk2IDExLjk4MzkgMjIuMTc4OUMxMS44OTc0IDIyLjY1NDQgMTEuNDgzMyAyMyAxMSAyM0MxMC41MTY3IDIzIDEwLjEwMjYgMjIuNjU0NCAxMC4wMTYxIDIyLjE3ODlDOS41MzYyNSAxOS41Mzk2IDguNzIwOTYgMTcuNzYwMiA3LjQ4MDM5IDE2LjUxOTZDNi4yMzk4MyAxNS4yNzkgNC40NjA0MyAxNC40NjM3IDEuODIxMTEgMTMuOTgzOUMxLjM0NTYyIDEzLjg5NzQgMSAxMy40ODMzIDEgMTNDMSAxMi41MTY3IDEuMzQ1NjIgMTIuMTAyNiAxLjgyMTExIDEyLjAxNjFDNC40NjA0MyAxMS41MzYzIDYuMjM5ODMgMTAuNzIxIDcuNDgwMzkgOS40ODAzOUM4LjcyMDk2IDguMjM5ODMgOS41MzYyNSA2LjQ2MDQzIDEwLjAxNjEgMy44MjExMUMxMC4xMDI2IDMuMzQ1NjIgMTAuNTE2NyAzIDExIDNaTTUuNjY2MTggMTNDNi45MjQ3IDEzLjUyMjYgNy45OTc4OCAxNC4yMDg3IDguODk0NjEgMTUuMTA1NEM5Ljc5MTM0IDE2LjAwMjEgMTAuNDc3NCAxNy4wNzUzIDExIDE4LjMzMzhDMTEuNTIyNiAxNy4wNzUzIDEyLjIwODcgMTYuMDAyMSAxMy4xMDU0IDE1LjEwNTRDMTQuMDAyMSAxNC4yMDg3IDE1LjA3NTMgMTMuNTIyNiAxNi4zMzM4IDEzQzE1LjA3NTMgMTIuNDc3NCAxNC4wMDIxIDExLjc5MTMgMTMuMTA1NCAxMC44OTQ2QzEyLjIwODcgOS45OTc4OCAxMS41MjI2IDguOTI0NyAxMSA3LjY2NjE4QzEwLjQ3NzQgOC45MjQ3IDkuNzkxMzQgOS45OTc4OCA4Ljg5NDYxIDEwLjg5NDZDNy45OTc4OCAxMS43OTEzIDYuOTI0NyAxMi40Nzc0IDUuNjY2MTggMTNaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgU3BlZWNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGVlY2hJY29uKHsgY2xhc3NOYW1lIH06IFNwZWVjaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTIgMTB2M1wiIC8+XG4gICAgICA8cGF0aCBkPVwiTTYgNnYxMVwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTEwIDN2MThcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNCA4djdcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA1djEzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMTB2M1wiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJ0eXBlIFNhdmVJY29uUHJvcHMgPSB7XG4gIHNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhdmVJY29uKHsgc2l6ZSA9ICcxZW0nLCBjbGFzc05hbWUgfTogU2F2ZUljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZpZXdCb3g9XCI2NCA2NCA4OTYgODk2XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMi41XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTg5My4zIDI5My4zTDczMC43IDEzMC43Yy03LjUtNy41LTE2LjctMTMtMjYuNy0xNlYxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQwek01MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgwelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDaXJjbGVIZWxwSWNvbih7IGNsYXNzTmFtZSA9ICdpY29uLW1kLWhlYXZ5Jywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMTdoLjAxXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJlZHJvY2tJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ZpbGwtY3VycmVudCB0ZXh0LWJsYWNrJywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGcgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICA8cGF0aCBkPVwiTTEyLDE4LjEzOTcwMTQgTDkuNTc0LDE4Ljk0ODcwMTQgTDguNjI4LDE4LjMxNzcwMTQgTDkuNjU4LDE3Ljk3MzcwMTQgTDkuMzQyLDE3LjAyNTcwMTQgTDcuNTc0LDE3LjYxNDcwMTQgTDcsMTcuMjMyNzAxNCBMNywxNC40OTk3MDE0IEM3LDE0LjMxMDcwMTQgNi44OTMsMTQuMTM3NzAxNCA2LjcyNCwxNC4wNTI3MDE0IEw1LDEzLjE5MDcwMTQgTDUsMTAuODA4NzAxNCBMNi41LDEwLjA1ODcwMTQgTDgsMTAuODA4NzAxNCBMOCwxMi40OTk3MDE0IEM4LDEyLjY4OTcwMTQgOC4xMDcsMTIuODYyNzAxNCA4LjI3NiwxMi45NDc3MDE0IEwxMC4yNzYsMTMuOTQ3NzAxNCBMMTAuNzI0LDEzLjA1MjcwMTQgTDksMTIuMTkwNzAxNCBMOSwxMC44MDg3MDE0IEwxMC43MjQsOS45NDc3MDEzNiBDMTAuODkzLDkuODYyNzAxMzYgMTEsOS42ODk3MDEzNiAxMSw5LjQ5OTcwMTM2IEwxMSw3Ljk5OTcwMTM2IEwxMCw3Ljk5OTcwMTM2IEwxMCw5LjE5MDcwMTM2IEw4LjUsOS45NDA3MDEzNiBMNyw5LjE5MDcwMTM2IEw3LDYuNzY3NzAxMzYgTDgsNi4xMDA3MDEzNiBMOCw3Ljk5OTcwMTM2IEw5LDcuOTk5NzAxMzYgTDksNS40MzQ3MDEzNiBMOS41NzQsNS4wNTE3MDEzNiBMMTIsNS44NjA3MDEzNiBMMTIsMTguMTM5NzAxNCBaIE0xNy41LDE2Ljk5OTcwMTQgQzE3Ljc3NSwxNi45OTk3MDE0IDE4LDE3LjIyMzcwMTQgMTgsMTcuNDk5NzAxNCBDMTgsMTcuNzc1NzAxNCAxNy43NzUsMTcuOTk5NzAxNCAxNy41LDE3Ljk5OTcwMTQgQzE3LjIyNSwxNy45OTk3MDE0IDE3LDE3Ljc3NTcwMTQgMTcsMTcuNDk5NzAxNCBDMTcsMTcuMjIzNzAxNCAxNy4yMjUsMTYuOTk5NzAxNCAxNy41LDE2Ljk5OTcwMTQgTDE3LjUsMTYuOTk5NzAxNCBaIE0xNi41LDUuOTk5NzAxMzYgQzE2Ljc3NSw1Ljk5OTcwMTM2IDE3LDYuMjIzNzAxMzYgMTcsNi40OTk3MDEzNiBDMTcsNi43NzU3MDEzNiAxNi43NzUsNi45OTk3MDEzNiAxNi41LDYuOTk5NzAxMzYgQzE2LjIyNSw2Ljk5OTcwMTM2IDE2LDYuNzc1NzAxMzYgMTYsNi40OTk3MDEzNiBDMTYsNi4yMjM3MDEzNiAxNi4yMjUsNS45OTk3MDEzNiAxNi41LDUuOTk5NzAxMzYgTDE2LjUsNS45OTk3MDEzNiBaIE0xOC41LDExLjk5OTcwMTQgQzE4Ljc3NSwxMS45OTk3MDE0IDE5LDEyLjIyMzcwMTQgMTksMTIuNDk5NzAxNCBDMTksMTIuNzc1NzAxNCAxOC43NzUsMTIuOTk5NzAxNCAxOC41LDEyLjk5OTcwMTQgQzE4LjIyNSwxMi45OTk3MDE0IDE4LDEyLjc3NTcwMTQgMTgsMTIuNDk5NzAxNCBDMTgsMTIuMjIzNzAxNCAxOC4yMjUsMTEuOTk5NzAxNCAxOC41LDExLjk5OTcwMTQgTDE4LjUsMTEuOTk5NzAxNCBaIE0xNy4wOTIsMTIuOTk5NzAxNCBDMTcuMjk5LDEzLjU4MDcwMTQgMTcuODQ5LDEzLjk5OTcwMTQgMTguNSwxMy45OTk3MDE0IEMxOS4zMjcsMTMuOTk5NzAxNCAyMCwxMy4zMjc3MDE0IDIwLDEyLjQ5OTcwMTQgQzIwLDExLjY3MjcwMTQgMTkuMzI3LDEwLjk5OTcwMTQgMTguNSwxMC45OTk3MDE0IEMxNy44NDksMTAuOTk5NzAxNCAxNy4yOTksMTEuNDE5NzAxNCAxNy4wOTIsMTEuOTk5NzAxNCBMMTMsMTEuOTk5NzAxNCBMMTMsOS45OTk3MDEzNiBMMTYuNSw5Ljk5OTcwMTM2IEMxNi43NzYsOS45OTk3MDEzNiAxNyw5Ljc3NjcwMTM2IDE3LDkuNDk5NzAxMzYgTDE3LDcuOTA3NzAxMzYgQzE3LjU4MSw3LjcwMDcwMTM2IDE4LDcuMTUwNzAxMzYgMTgsNi40OTk3MDEzNiBDMTgsNS42NzI3MDEzNiAxNy4zMjcsNC45OTk3MDEzNiAxNi41LDQuOTk5NzAxMzYgQzE1LjY3Myw0Ljk5OTcwMTM2IDE1LDUuNjcyNzAxMzYgMTUsNi40OTk3MDEzNiBDMTUsNy4xNTA3MDEzNiAxNS40MTksNy43MDA3MDEzNiAxNiw3LjkwNzcwMTM2IEwxNiw4Ljk5OTcwMTM2IEwxMyw4Ljk5OTcwMTM2IEwxMyw1LjQ5OTcwMTM2IEMxMyw1LjI4NDcwMTM2IDEyLjg2Miw1LjA5MzcwMTM2IDEyLjY1OCw1LjAyNTcwMTM2IEw5LjY1OCw0LjAyNTcwMTM2IEM5LjUxMSwzLjk3NjcwMTM2IDkuMzUxLDMuOTk4NzAxMzYgOS4yMjMsNC4wODM3MDEzNiBMNi4yMjMsNi4wODM3MDEzNiBDNi4wODQsNi4xNzY3MDEzNiA2LDYuMzMyNzAxMzYgNiw2LjQ5OTcwMTM2IEw2LDkuMTkwNzAxMzYgTDQuMjc2LDEwLjA1MjcwMTQgQzQuMTA3LDEwLjEzNzcwMTQgNCwxMC4zMTA3MDE0IDQsMTAuNDk5NzAxNCBMNCwxMy40OTk3MDE0IEM0LDEzLjY4OTcwMTQgNC4xMDcsMTMuODYyNzAxNCA0LjI3NiwxMy45NDc3MDE0IEw2LDE0LjgwODcwMTQgTDYsMTcuNDk5NzAxNCBDNiwxNy42NjY3MDE0IDYuMDg0LDE3LjgyMzcwMTQgNi4yMjMsMTcuOTE1NzAxNCBMOS4yMjMsMTkuOTE1NzAxNCBDOS4zMDYsMTkuOTcxNzAxNCA5LjQwMiwxOS45OTk3MDE0IDkuNSwxOS45OTk3MDE0IEM5LjU1MywxOS45OTk3MDE0IDkuNjA2LDE5Ljk5MTcwMTQgOS42NTgsMTkuOTczNzAxNCBMMTIuNjU4LDE4Ljk3MzcwMTQgQzEyLjg2MiwxOC45MDY3MDE0IDEzLDE4LjcxNTcwMTQgMTMsMTguNDk5NzAxNCBMMTMsMTUuOTk5NzAxNCBMMTUuMjkzLDE1Ljk5OTcwMTQgTDE2LjE0NiwxNi44NTM3MDE0IEwxNi4xNTksMTYuODQwNzAxNCBDMTYuMDYxLDE3LjA0MDcwMTQgMTYsMTcuMjYyNzAxNCAxNiwxNy40OTk3MDE0IEMxNiwxOC4zMjY3MDE0IDE2LjY3MywxOC45OTk3MDE0IDE3LjUsMTguOTk5NzAxNCBDMTguMzI3LDE4Ljk5OTcwMTQgMTksMTguMzI2NzAxNCAxOSwxNy40OTk3MDE0IEMxOSwxNi42NzI3MDE0IDE4LjMyNywxNS45OTk3MDE0IDE3LjUsMTUuOTk5NzAxNCBDMTcuMjYyLDE1Ljk5OTcwMTQgMTcuMDQsMTYuMDYwNzAxNCAxNi44NDEsMTYuMTU5NzAxNCBMMTYuODU0LDE2LjE0NjcwMTQgTDE1Ljg1NCwxNS4xNDY3MDE0IEMxNS43NiwxNS4wNTI3MDE0IDE1LjYzMywxNC45OTk3MDE0IDE1LjUsMTQuOTk5NzAxNCBMMTMsMTQuOTk5NzAxNCBMMTMsMTIuOTk5NzAxNCBMMTcuMDkyLDEyLjk5OTcwMTQgWlwiIC8+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaHVtYlVwSWNvbih7IGNsYXNzTmFtZSA9ICcnLCBzaXplID0gJzFlbScsIGJvbGQgPSBmYWxzZSB9KSB7XG4gIHJldHVybiBib2xkID8gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEyLjU5MiAyLjUwMzg2QzEyLjgwNDcgMi4xMzAxNCAxMy4yMzE3IDEuOTM1IDEzLjY1MiAyLjAxOTQyQzE1LjU2MjcgMi40MDMxNCAxNi43MjQ2IDQuMzYwNzkgMTYuMTUxNiA2LjIzMDg1TDE1LjMwMyA5TDE3LjAxNDIgOUMxOS42NDA5IDkgMjEuNTQ4NSAxMS41MDc5IDIwLjg1NzQgMTQuMDUyNUwxOS40OTk0IDE5LjA1MjVDMTkuMDI2NyAyMC43OTI3IDE3LjQ1MjYgMjIgMTUuNjU2MiAyMkg5Ljk2NzIxQzguODY5IDIxLjk5NzkgNy45NzkzOSAyMS4xMDMzIDcuOTc5MzkgMjBWOUg4LjMxNzM0QzguNjc0NzIgOSA5LjAwNDcgOC44MDc3MSA5LjE4MjAxIDguNDk2MTNMMTIuNTkyIDIuNTAzODZaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01Ljk4NzYzIDlDNC4zMzc2MSA5IDMgMTAuMzQzMSAzIDEyVjE5QzMgMjAuNjU2OSA0LjMzNzYxIDIyIDUuOTg3NjMgMjJINi41MjA1NUM2LjE4MTYyIDIxLjQxMTYgNS45ODc2MyAyMC43Mjg2IDUuOTg3NjMgMjBWOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICkgOiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTIuMTMxOCAyLjUwMzg5QzEyLjMzMjEgMi4xNTMzOCAxMi43MjM1IDEuOTU3NjggMTMuMTI0IDIuMDA3NzVMMTMuNTc3OCAyLjA2NDQ3QzE2LjA0NDkgMi4zNzI4NiAxNy42MzYgNC44MzM1MyAxNi45MDQ4IDcuMjA5OTNMMTYuMzU0IDguOTk5OTlIMTcuMDcyMkMxOS43MDk3IDguOTk5OTkgMjEuNjI1MyAxMS41MDc5IDIwLjkzMTMgMTQuMDUyNUwxOS41Njc3IDE5LjA1MjVDMTkuMDkzMSAyMC43OTI3IDE3LjUxMjQgMjIgMTUuNzA4NiAyMkg2QzQuMzQzMTUgMjIgMyAyMC42NTY4IDMgMTlWMTJDMyAxMC4zNDMxIDQuMzQzMTUgOC45OTk5OSA2IDguOTk5OTlIOEM4LjI1OTUyIDguOTk5OTkgOC40OTkxNCA4Ljg2MDk0IDguNjI3OSA4LjYzNTYxTDEyLjEzMTggMi41MDM4OVpNMTAgMjBIMTUuNzA4NkMxNi42MTA1IDIwIDE3LjQwMDggMTkuMzk2NCAxNy42MzgxIDE4LjUyNjJMMTkuMDAxOCAxMy41MjYyQzE5LjM0ODggMTIuMjUzOSAxOC4zOTEgMTEgMTcuMDcyMiAxMUgxNUMxNC42ODI3IDExIDE0LjM4NDEgMTAuODQ5NCAxNC4xOTU2IDEwLjU5NDFDMTQuMDA3MSAxMC4zMzg4IDEzLjk1MDkgMTAuMDA5MiAxNC4wNDQyIDkuNzA1OTFMMTQuOTkzMiA2LjYyMTc1QzE1LjMzODQgNS40OTk4NCAxNC42NDg0IDQuMzQwMzYgMTMuNTMxOSA0LjA4NDY4TDEwLjM2NDQgOS42Mjc4OUMxMC4wNTIyIDEwLjE3NDIgOS41NjY5MSAxMC41ODU5IDkgMTAuODA5OFYxOUM5IDE5LjU1MjMgOS40NDc3MiAyMCAxMCAyMFpNNyAxMVYxOUM3IDE5LjM1MDYgNy4wNjAxNSAxOS42ODcyIDcuMTcwNzEgMjBINkM1LjQ0NzcyIDIwIDUgMTkuNTUyMyA1IDE5VjEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaHVtYkRvd25JY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJywgYm9sZCA9IGZhbHNlIH0pIHtcbiAgcmV0dXJuIGJvbGQgPyAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTEuNDA3OSAyMS40OTYxQzExLjE5NTMgMjEuODY5OCAxMC43NjgzIDIyLjA2NDkgMTAuMzQ4IDIxLjk4MDVDOC40MzczIDIxLjU5NjggNy4yNzU0MSAxOS42MzkxIDcuODQ4NDQgMTcuNzY5MUw4LjY5Njk3IDE0Ljk5OTlMNi45ODU3NyAxNC45OTk5QzQuMzU5MTUgMTQuOTk5OSAyLjQ1MTUxIDEyLjQ5MiAzLjE0MjYyIDkuOTQ3NDdMNC41MDA2MyA0Ljk0NzQ3QzQuOTczMjkgMy4yMDcyMiA2LjU0NzQxIDEuOTk5OTQgOC4zNDM3OCAxLjk5OTk0SDE0LjAzMjhDMTUuMTMxIDIuMDAyMDcgMTYuMDIwNiAyLjg5NjY4IDE2LjAyMDYgMy45OTk5NFYxNC45OTk5SDE1LjY4MjdDMTUuMzI1MyAxNC45OTk5IDE0Ljk5NTMgMTUuMTkyMiAxNC44MTggMTUuNTAzOEwxMS40MDc5IDIxLjQ5NjFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOC4wMTI0IDE0Ljk5OTlDMTkuNjYyNCAxNC45OTk5IDIxIDEzLjY1NjggMjEgMTEuOTk5OVY0Ljk5OTk0QzIxIDMuMzQzMDggMTkuNjYyNCAxLjk5OTk0IDE4LjAxMjQgMS45OTk5NEgxNy40Nzk0QzE3LjgxODQgMi41ODgyOSAxOC4wMTI0IDMuMjcxMzYgMTguMDEyNCAzLjk5OTk0VjE0Ljk5OTlaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApIDogKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTExLjg3MjcgMjEuNDk2MUMxMS42NzI1IDIxLjg0NjYgMTEuMjgxMSAyMi4wNDIzIDEwLjg4MDUgMjEuOTkyMkwxMC40MjY3IDIxLjkzNTVDNy45NTk1OCAyMS42MjcxIDYuMzY4NTUgMTkuMTY2NSA3LjA5OTc1IDE2Ljc5MDFMNy42NTA1NCAxNUg2LjkzMjI2QzQuMjk0NzYgMTUgMi4zNzkyMyAxMi40OTIxIDMuMDczMiA5Ljk0NzUzTDQuNDM2ODQgNC45NDc1M0M0LjkxMTQ1IDMuMjA3MjggNi40OTIwOSAyIDguMjk1ODkgMkgxOC4wMDQ1QzE5LjY2MTQgMiAyMS4wMDQ1IDMuMzQzMTUgMjEuMDA0NSA1VjEyQzIxLjAwNDUgMTMuNjU2OSAxOS42NjE0IDE1IDE4LjAwNDUgMTVIMTYuMDA0NUMxNS43NDUgMTUgMTUuNTA1NCAxNS4xMzkxIDE1LjM3NjYgMTUuMzY0NEwxMS44NzI3IDIxLjQ5NjFaTTE0LjAwNDUgNEg4LjI5NTg5QzcuMzkzOTkgNCA2LjYwMzY3IDQuNjAzNjQgNi4zNjYzNyA1LjQ3Mzc2TDUuMDAyNzMgMTAuNDczOEM0LjY1NTc0IDExLjc0NiA1LjYxMzUxIDEzIDYuOTMyMjYgMTNIOS4wMDQ1MUM5LjMyMTg1IDEzIDkuNjIwMzYgMTMuMTUwNiA5LjgwODkgMTMuNDA1OUM5Ljk5NzQzIDEzLjY2MTIgMTAuMDUzNiAxMy45OTA4IDkuOTYwMjggMTQuMjk0MUw5LjAxMTMxIDE3LjM3ODJDOC42NjYxIDE4LjUwMDIgOS4zNTYwOCAxOS42NTk2IDEwLjQ3MjYgMTkuOTE1M0wxMy42NDAxIDE0LjM3MjFDMTMuOTUyMyAxMy44MjU4IDE0LjQzNzYgMTMuNDE0MSAxNS4wMDQ1IDEzLjE5MDJWNUMxNS4wMDQ1IDQuNDQ3NzIgMTQuNTU2OCA0IDE0LjAwNDUgNFpNMTcuMDA0NSAxM1Y1QzE3LjAwNDUgNC42NDkzNyAxNi45NDQ0IDQuMzEyNzggMTYuODMzOCA0SDE4LjAwNDVDMTguNTU2OCA0IDE5LjAwNDUgNC40NDc3MiAxOS4wMDQ1IDVWMTJDMTkuMDA0NSAxMi41NTIzIDE4LjU1NjggMTMgMTguMDA0NSAxM0gxNy4wMDQ1WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFhBSWNvbih7IGNsYXNzTmFtZSA9ICcnIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0zLjAwNSA4Ljg1OCA4Ljc4MyAxMi41NDRoMy45MDRMNi45MDggOC44NTh6TTYuOTA1IDE1LjgyNSAzIDIxLjQwMmgzLjkwN2wxLjk1MS0yLjc4OHpNMTYuNTg1IDJsLTYuNzUgOS42NCAxLjk1MyAyLjc5TDIwLjQ5MiAyek0xNy4yOTIgNy45NjV2MTMuNDM3aDMuMlYzLjM5NXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZXJzb25hbGl6YXRpb25JY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17YGljb24tc20gJHtjbGFzc05hbWV9YH1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMiA0QzEwLjM0MzEgNCA5IDUuMzQzMTUgOSA3QzkgOC42NTY4NSAxMC4zNDMxIDEwIDEyIDEwQzEzLjY1NjkgMTAgMTUgOC42NTY4NSAxNSA3QzE1IDUuMzQzMTUgMTMuNjU2OSA0IDEyIDRaTTcgN0M3IDQuMjM4NTggOS4yMzg1OCAyIDEyIDJDMTQuNzYxNCAyIDE3IDQuMjM4NTggMTcgN0MxNyA5Ljc2MTQyIDE0Ljc2MTQgMTIgMTIgMTJDOS4yMzg1OCAxMiA3IDkuNzYxNDIgNyA3Wk0xOS4wMjc3IDE1LjYyNTVDMTguNjg1OSAxNS41NjQ2IDE4LjE5NDEgMTUuNjUzNCAxNy42ODIgMTYuMTgyOUMxNy40OTM2IDE2LjM3NzcgMTcuMjM0MiAxNi40ODc3IDE2Ljk2MzIgMTYuNDg3N0MxNi42OTIyIDE2LjQ4NzcgMTYuNDMyOCAxNi4zNzc3IDE2LjI0NDQgMTYuMTgyOUMxNS43MzIyIDE1LjY1MzQgMTUuMjQwNSAxNS41NjQ2IDE0Ljg5ODcgMTUuNjI1NUMxNC41MzgxIDE1LjY4OTcgMTQuMjE3OSAxNS45Mzg0IDE0LjA2MjMgMTYuMzI3NUMxMy44MDQ4IDE2Ljk3MTMgMTMuOTAxNCAxOC42NjIgMTYuOTYzMiAyMC40NjE3QzIwLjAyNDkgMTguNjYyIDIwLjEyMTYgMTYuOTcxMyAxOS44NjQgMTYuMzI3NUMxOS43MDg0IDE1LjkzODQgMTkuMzg4MiAxNS42ODk3IDE5LjAyNzcgMTUuNjI1NVpNMjEuNzIxIDE1LjU4NDdDMjIuNTc0OCAxNy43MTkxIDIxLjI2NTQgMjAuNDI5IDE3LjQzNyAyMi40ODkyQzE3LjE0MTIgMjIuNjQ4NCAxNi43ODUyIDIyLjY0ODQgMTYuNDg5MyAyMi40ODkyQzEyLjY2MDkgMjAuNDI5MSAxMS4zNTE2IDE3LjcxOTEgMTIuMjA1MyAxNS41ODQ3QzEyLjYxMTcgMTQuNTY4OSAxMy40OTE3IDEzLjg0NDYgMTQuNTQ4MSAxMy42NTY1QzE1LjM1NjcgMTMuNTEyNSAxNi4yMDMyIDEzLjY5MTUgMTYuOTYzMiAxNC4xOTI0QzE3LjcyMzIgMTMuNjkxNSAxOC41Njk3IDEzLjUxMjUgMTkuMzc4MyAxMy42NTY1QzIwLjQzNDcgMTMuODQ0NiAyMS4zMTQ3IDE0LjU2ODkgMjEuNzIxIDE1LjU4NDdaTTkuOTI1OTcgMTQuMjA0OUMxMC4xMzQ1IDE0LjcxNjMgOS44ODkgMTUuMjk5OSA5LjM3NzYgMTUuNTA4NEM3LjA2MTMxIDE2LjQ1MyA1LjUgMTguNTgxMyA1LjUgMjAuOTk5OUM1LjUgMjEuNTUyMiA1LjA1MjI4IDIxLjk5OTkgNC41IDIxLjk5OTlDMy45NDc3MiAyMS45OTk5IDMuNSAyMS41NTIyIDMuNSAyMC45OTk5QzMuNSAxNy42Nzc3IDUuNjQxIDE0Ljg3MjMgOC42MjI0IDEzLjY1NjVDOS4xMzM4IDEzLjQ0OCA5LjcxNzQzIDEzLjY5MzUgOS45MjU5NyAxNC4yMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1DUEljb24oeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMTk1XCJcbiAgICAgIGhlaWdodD1cIjE5NVwiXG4gICAgICB2aWV3Qm94PVwiMCAyIDE5NSAxOTVcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yNSA5Ny44NTI4TDkyLjg4MjMgMjkuOTcwNkMxMDIuMjU1IDIwLjU5OCAxMTcuNDUxIDIwLjU5OCAxMjYuODIzIDI5Ljk3MDZWMjkuOTcwNkMxMzYuMTk2IDM5LjM0MzEgMTM2LjE5NiA1NC41MzkxIDEyNi44MjMgNjMuOTExN0w3NS41NTgxIDExNS4xNzdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTc2LjI2NTMgMTE0LjQ3TDEyNi44MjMgNjMuOTExN0MxMzYuMTk2IDU0LjUzOTEgMTUxLjM5MiA1NC41MzkxIDE2MC43NjUgNjMuOTExN0wxNjEuMTE4IDY0LjI2NTJDMTcwLjQ5MSA3My42Mzc4IDE3MC40OTEgODguODMzOCAxNjEuMTE4IDk4LjIwNjNMOTkuNzI0OCAxNTkuNkM5Ni42MDA2IDE2Mi43MjQgOTYuNjAwNiAxNjcuNzg5IDk5LjcyNDggMTcwLjkxM0wxMTIuMzMxIDE4My41MlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZlY3Rvckljb24oeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNy40NTk5NiAxNC4zNzVDNy40NTk5NiAxMy4zNjE2IDYuNjM4NDQgMTIuNTQgNS42MjUgMTIuNTRDNC42MTE1NiAxMi41NCAzLjc5MDA0IDEzLjM2MTYgMy43OTAwNCAxNC4zNzVDMy43OTAwNCAxNS4zODg0IDQuNjExNTYgMTYuMjEgNS42MjUgMTYuMjFDNi42Mzg0NCAxNi4yMSA3LjQ1OTk2IDE1LjM4ODQgNy40NTk5NiAxNC4zNzVaTTE2LjIxIDE0LjM3NUMxNi4yMSAxMy4zNjE2IDE1LjM4ODQgMTIuNTQgMTQuMzc1IDEyLjU0QzEzLjM2MTYgMTIuNTQgMTIuNTQgMTMuMzYxNiAxMi41NCAxNC4zNzVDMTIuNTQgMTUuMzg4NCAxMy4zNjE2IDE2LjIxIDE0LjM3NSAxNi4yMUMxNS4zODg0IDE2LjIxIDE2LjIxIDE1LjM4ODQgMTYuMjEgMTQuMzc1Wk03LjQ1OTk2IDUuNjI1QzcuNDU5OTYgNC42MTE1NiA2LjYzODQ0IDMuNzkwMDQgNS42MjUgMy43OTAwNEM0LjYxMTU2IDMuNzkwMDQgMy43OTAwNCA0LjYxMTU2IDMuNzkwMDQgNS42MjVDMy43OTAwNCA2LjYzODQ0IDQuNjExNTYgNy40NTk5NiA1LjYyNSA3LjQ1OTk2QzYuNjM4NDQgNy40NTk5NiA3LjQ1OTk2IDYuNjM4NDQgNy40NTk5NiA1LjYyNVpNMTYuMjEgNS42MjVDMTYuMjEgNC42MTE1NiAxNS4zODg0IDMuNzkwMDQgMTQuMzc1IDMuNzkwMDRDMTMuMzYxNiAzLjc5MDA0IDEyLjU0IDQuNjExNTYgMTIuNTQgNS42MjVDMTIuNTQgNi42Mzg0NCAxMy4zNjE2IDcuNDU5OTYgMTQuMzc1IDcuNDU5OTZDMTUuMzg4NCA3LjQ1OTk2IDE2LjIxIDYuNjM4NDQgMTYuMjEgNS42MjVaTTE3LjU0IDE0LjM3NUMxNy41NCAxNi4xMjMgMTYuMTIzIDE3LjU0IDE0LjM3NSAxNy41NEMxMi42MjcgMTcuNTQgMTEuMjEgMTYuMTIzIDExLjIxIDE0LjM3NUMxMS4yMSAxMi42MjcgMTIuNjI3IDExLjIxIDE0LjM3NSAxMS4yMUMxNi4xMjMgMTEuMjEgMTcuNTQgMTIuNjI3IDE3LjU0IDE0LjM3NVpNOC43OTAwNCA1LjYyNUM4Ljc5MDA0IDcuMzcyOTggNy4zNzI5OCA4Ljc5MDA0IDUuNjI1IDguNzkwMDRDMy44NzcwMiA4Ljc5MDA0IDIuNDU5OTYgNy4zNzI5OCAyLjQ1OTk2IDUuNjI1QzIuNDU5OTYgMy44NzcwMiAzLjg3NzAyIDIuNDU5OTYgNS42MjUgMi40NTk5NkM3LjM3Mjk4IDIuNDU5OTYgOC43OTAwNCAzLjg3NzAyIDguNzkwMDQgNS42MjVaTTE3LjU0IDUuNjI1QzE3LjU0IDcuMzcyOTggMTYuMTIzIDguNzkwMDQgMTQuMzc1IDguNzkwMDRDMTMuNzQxNiA4Ljc5MDA0IDEzLjE1MyA4LjYwMTczIDEyLjY1ODIgOC4yODEyNUw4LjI4MTI1IDEyLjY1ODJDOC42MDE3MyAxMy4xNTMgOC43OTAwNCAxMy43NDE2IDguNzkwMDQgMTQuMzc1QzguNzkwMDQgMTYuMTIzIDcuMzcyOTggMTcuNTQgNS42MjUgMTcuNTRDMy44NzcwMiAxNy41NCAyLjQ1OTk2IDE2LjEyMyAyLjQ1OTk2IDE0LjM3NUMyLjQ1OTk2IDEyLjYyNyAzLjg3NzAyIDExLjIxIDUuNjI1IDExLjIxQzYuMjU3OTQgMTEuMjEgNi44NDYyMyAxMS4zOTc3IDcuMzQwODIgMTEuNzE3OEwxMS43MTc4IDcuMzQwODJDMTEuMzk3NyA2Ljg0NjIzIDExLjIxIDYuMjU3OTQgMTEuMjEgNS42MjVDMTEuMjEgMy44NzcwMiAxMi42MjcgMi40NTk5NiAxNC4zNzUgMi40NTk5NkMxNi4xMjMgMi40NTk5NiAxNy41NCAzLjg3NzAyIDE3LjU0IDUuNjI1WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcXVpcmNsZVBsdXNJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJ0ZXh0LTN4bFwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjVcIiB4Mj1cIjEyXCIgeTI9XCIxOVwiIC8+XG4gICAgICA8bGluZSB4MT1cIjVcIiB5MT1cIjEyXCIgeDI9XCIxOVwiIHkyPVwiMTJcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXVkaW9QYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk04IDE1djZcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTMgOHYyMFwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOCAxMHYxNlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMyA2djI0XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTI4IDEydjEyXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RlUGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMjEuMzMzIDIzTDI2LjMzMyAxOEwyMS4zMzMgMTNcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTQuNjY3IDEzTDkuNjY2OTkgMThMMTQuNjY3IDIzXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSAnbGlicmVjaGF0LWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEZpbGUgfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpbGVJY29uKHtcbiAgZmlsZSxcbiAgZmlsZVR5cGUsXG59OiB7XG4gIGZpbGU/OiBQYXJ0aWFsPEV4dGVuZGVkRmlsZSB8IFRGaWxlPjtcbiAgZmlsZVR5cGU6IHtcbiAgICBmaWxsOiBzdHJpbmc7XG4gICAgcGF0aHM6IFJlYWN0LkZDO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDM2IDM2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtMTAgdy0xMCBmbGV4LXNocmluay0wXCJcbiAgICAgIHdpZHRoPVwiMzZcIlxuICAgICAgaGVpZ2h0PVwiMzZcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjZcIiBmaWxsPXtmaWxlVHlwZS5maWxsfSAvPlxuICAgICAgeyhmaWxlPy5bJ3Byb2dyZXNzJ10gPz8gMSkgPj0gMSAmJiA8Pns8ZmlsZVR5cGUucGF0aHMgLz59PC8+fVxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmlsZVBhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE1LjVMMTguODMzIDkuNjY2NjNaXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzVjE1LjVIMjQuNjY2M1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hlZXRQYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNS41IDEwLjVIMTIuMTY2N0MxMS4yNDYyIDEwLjUgMTAuNSAxMS4yNDYyIDEwLjUgMTIuMTY2N1YxMy41VjE4TTE1LjUgMTAuNUgyMy44MzMzQzI0Ljc1MzggMTAuNSAyNS41IDExLjI0NjIgMjUuNSAxMi4xNjY3VjEzLjVWMThNMTUuNSAxMC41VjI1LjVNMTUuNSAyNS41SDE4SDIzLjgzMzNDMjQuNzUzOCAyNS41IDI1LjUgMjQuNzUzOCAyNS41IDIzLjgzMzNWMThNMTUuNSAyNS41SDEyLjE2NjdDMTEuMjQ2MiAyNS41IDEwLjUgMjQuNzUzOCAxMC41IDIzLjgzMzNWMThNMTAuNSAxOEgyNS41XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXh0UGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTkuNjY2MyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE0LjY2NjZMMTkuNjY2MyA5LjY2NjYzWlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOS42NjcgOS42NjY2M1YxNC42NjY2SDI0LjY2N1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMS4zMzM3IDE4LjgzMzRIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIxLjMzMzcgMjIuMTY2NkgxNC42NjdcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTYuMzMzNyAxNS41SDE1LjUwMDNIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBWaWRlb1BhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogVmlkZW8gY29udGFpbmVyIC0gcm91bmRlZCByZWN0YW5nbGUgKG5vdCBmaWxsZWQpICovfVxuICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiByeD1cIjNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZVdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIHsvKiBQbGF5IGJ1dHRvbiAtIGNlbnRlcmVkIGFuZCBwb2ludGluZyByaWdodCAqL31cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMThsLTYgNHYtOEwyMiAxOHpcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlUG9pbnRJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTI0IDEzLjVxMCAxLjI0Mi0uNDc1IDIuMzMyLS40NzQgMS4wOS0xLjI4OSAxLjkwNC0uODE0LjgxNS0xLjkwNCAxLjI5LTEuMDkuNDc0LTIuMzMyLjQ3NC0uNzYyIDAtMS41MjMtLjItLjEwNi45OTctLjU1NyAxLjg1OC0uNDUxLjg2Mi0xLjE1NCAxLjQ5NC0uNzA0LjYzMy0xLjYwNi45OS0uOTAyLjM1OC0xLjkxLjM1OC0xLjA5IDAtMi4wNDUtLjQxNi0uOTU1LS40MTYtMS42NjQtMS4xMjUtLjcwOS0uNzA5LTEuMTI1LTEuNjY0UTYgMTkuODQgNiAxOC43NXEwLS4xODguMDE4LS4zNzUuMDE3LS4xODguMDQtLjM3NUguOTk3cS0uNDEgMC0uNzAzLS4yOTNUMCAxNy4wMDRWNi45OTZxMC0uNDEuMjkzLS43MDNULjk5NiA2aDMuNTRxLjE0LTEuMjc3LjcyNi0yLjM3My41ODYtMS4wOTYgMS40ODgtMS45MDRRNy42NTIuOTE0IDguODA3LjQ1NyA5Ljk2IDAgMTEuMjUgMHExLjM5NSAwIDIuNjI1LjUzM1QxNi4wMiAxLjk4cS45MTQuOTE1IDEuNDQ3IDIuMTQ1VDE4IDYuNzVxMCAuMTg4LS4wMTIuMzc1LS4wMTEuMTg4LS4wMzUuMzc1IDEuMjQyIDAgMi4zNDQuNDY5IDEuMTAxLjQ2OCAxLjkyOCAxLjI3Ny44MjYuODA5IDEuMyAxLjkwNFEyNCAxMi4yNDYgMjQgMTMuNXptLTEyLjc1LTEycS0uOTczIDAtMS44NTcuMzQtLjg4NS4zNC0xLjU3Ny45NDMtLjY5MS42MDQtMS4xNTQgMS40M1E2LjIgNS4wMzkgNi4wNiA2aDQuOTQ1cS40MSAwIC43MDMuMjkzdC4yOTMuNzAzdjQuOTQ1bC4yMS0uMDM1cS4yMTItLjc1LjYxLTEuNDI0LjM5OS0uNjczLjk0NC0xLjIxOC41NDUtLjU0NSAxLjIxMy0uOTQ0LjY2OC0uMzk4IDEuNDMtLjYxLjA5My0uNTAzLjA5My0uOTYgMC0xLjA5LS40MTYtMi4wNDUtLjQxNi0uOTU1LTEuMTI1LTEuNjY0LS43MDktLjcwOS0xLjY2NC0xLjEyNVExMi4zNCAxLjUgMTEuMjUgMS41ek02LjExNyAxNS45MDJxLjU0IDAgMS4wNi0uMTExLjUyMi0uMTExLjkzMi0uMzcuNDEtLjI1Ny42NjItLjY3OS4yNTItLjQyMi4yNTItMS4wNTUgMC0uNjMyLS4yNjMtMS4wNTQtLjI2NC0uNDIyLS42NjItLjcwMy0uMzk5LS4yODItLjg1Ni0uNDYzbC0uODU1LS4zNHEtLjM5OS0uMTU4LS42NjItLjMzNC0uMjY0LS4xNzYtLjI2NC0uNDQ1IDAtLjIuMTQtLjMyMy4xNDEtLjEyMy4zMzUtLjE5My4xOTMtLjA3LjQwNC0uMDk0LjIxLS4wMjMuMzUxLS4wMjMuNTk4IDAgMS4wNTUuMTUyLjQ1Ny4xNTMuOTUuNDU3VjguNTQzcS0uMjgyLS4wODItLjUyMi0uMTQtLjI0LS4wNi0uNDc1LS4xLS4yMzQtLjA0MS0uNDg2LS4wNTktLjI1Mi0uMDE3LS41NTctLjAxNy0uNTE1IDAtMS4wNTQuMTE3LS41NC4xMTctLjk3OS4zNzUtLjQ0LjI1OC0uNzE1LjY4LS4yNzUuNDIxLS4yNzUgMS4wMyAwIC41OTguMjYzLjk5Ny4yNjQuMzk4LjY2My42OC4zOTguMjguODU1LjQ3NGwuODU2LjM2M3EuMzk4LjE3LjY2Mi4zNTguMjYzLjE4Ny4yNjMuNDU3IDAgLjIyMi0uMTIzLjM1MS0uMTIzLjEzLS4zMS4yLS4xODguMDctLjM5My4wODctLjIwNS4wMTgtLjM2OS4wMTgtLjcwMyAwLTEuMjQ4LS4yMzQtLjU0NS0uMjM1LTEuMTA3LS42MjF2MS44NzVxMS4xOTUuNDY4IDIuNDcyLjQ2OHpNMTEuMjUgMjIuNXEuNzczIDAgMS40NTMtLjI5M3QxLjE5LS44MDNxLjUxLS41MS44MDgtMS4xOTUuMjk5LS42ODYuMjk5LTEuNDU5IDAtLjY2OC0uMjIzLTEuMjc3LS4yMjItLjYxLS42Mi0xLjA5Ni0uNC0uNDg2LS45NS0uODI2LS41NS0uMzQtMS4yMDctLjQ4djEuOTMzcTAgLjQxLS4yOTMuNzAzdC0uNzAzLjI5M0g3LjU3cS0uMDcuMzc1LS4wNy43NSAwIC43NzMuMjkzIDEuNDU5dC44MDMgMS4xOTVxLjUxLjUxIDEuMTk1LjgwMy42ODYuMjkzIDEuNDU5LjI5M3pNMTggMThxLjkyNiAwIDEuNzQ2LS4zNTIuODItLjM1MSAxLjQzNi0uOTY2LjYxNS0uNjE2Ljk2Ni0xLjQzLjM1Mi0uODE1LjM1Mi0xLjc1MiAwLS45MjYtLjM1Mi0xLjc0Ni0uMzUxLS44Mi0uOTY2LTEuNDM2LS42MTYtLjYxNS0xLjQzNi0uOTY2UTE4LjkyNiA5IDE4IDl0LTEuNzQuMzU3cS0uODE1LjM1OC0xLjQzLjk3M3QtLjk3MyAxLjQzcS0uMzU3LjgxNC0uMzU3IDEuNzQgMCAuMTI5LjAwNi4yNTh0LjAxNy4yNThxLjU1MS4yNyAxLjAyLjY1dC44MzguODU1cS4zNjkuNDc1LjYyNyAxLjAyNi4yNTguNTUuMzg3IDEuMTQ4UTE3LjE4IDE4IDE4IDE4WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVZpcnR1YWxpemVyIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXZpcnR1YWwnO1xuaW1wb3J0IHtcbiAgUm93LFxuICBDb2x1bW5EZWYsXG4gIGZsZXhSZW5kZXIsXG4gIFNvcnRpbmdTdGF0ZSxcbiAgdXNlUmVhY3RUYWJsZSxcbiAgZ2V0Q29yZVJvd01vZGVsLFxuICBWaXNpYmlsaXR5U3RhdGUsXG4gIGdldFNvcnRlZFJvd01vZGVsLFxuICBDb2x1bW5GaWx0ZXJzU3RhdGUsXG4gIGdldEZpbHRlcmVkUm93TW9kZWwsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSc7XG5pbXBvcnQgdHlwZSB7IFRhYmxlIGFzIFRUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSc7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVSb3csIFRhYmxlQm9keSwgVGFibGVDZWxsLCBUYWJsZUhlYWQsIFRhYmxlSGVhZGVyIH0gZnJvbSAnLi9UYWJsZSc7XG5pbXBvcnQgeyB1c2VNZWRpYVF1ZXJ5LCB1c2VMb2NhbGl6ZSwgVHJhbnNsYXRpb25LZXlzIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgQW5pbWF0ZWRTZWFyY2hJbnB1dCBmcm9tICcuL0FuaW1hdGVkU2VhcmNoSW5wdXQnO1xuaW1wb3J0IHsgVHJhc2hJY29uLCBTcGlubmVyIH0gZnJvbSAnfi9zdmdzJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi9Ta2VsZXRvbic7XG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4vQ2hlY2tib3gnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPiA9IENvbHVtbkRlZjxURGF0YSwgVFZhbHVlPiAmIHtcbiAgbWV0YT86IHtcbiAgICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIG1vYmlsZVNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbWluV2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG59O1xuXG5jb25zdCBTZWxlY3Rpb25DaGVja2JveCA9IG1lbW8oXG4gICh7XG4gICAgY2hlY2tlZCxcbiAgICBvbkNoYW5nZSxcbiAgICBhcmlhTGFiZWwsXG4gIH06IHtcbiAgICBjaGVja2VkOiBib29sZWFuO1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIH0pID0+IChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgb25LZXlEb3duPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIHctWzMwcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICA+XG4gICAgICA8Q2hlY2tib3ggY2hlY2tlZD17Y2hlY2tlZH0gb25DaGVja2VkQ2hhbmdlPXtvbkNoYW5nZX0gYXJpYS1sYWJlbD17YXJpYUxhYmVsfSAvPlxuICAgIDwvZGl2PlxuICApLFxuKTtcblxuU2VsZWN0aW9uQ2hlY2tib3guZGlzcGxheU5hbWUgPSAnU2VsZWN0aW9uQ2hlY2tib3gnO1xuXG5pbnRlcmZhY2UgRGF0YVRhYmxlUHJvcHM8VERhdGEsIFRWYWx1ZT4ge1xuICBjb2x1bW5zOiBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPltdO1xuICBkYXRhOiBURGF0YVtdO1xuICBvbkRlbGV0ZT86IChzZWxlY3RlZFJvd3M6IFREYXRhW10pID0+IFByb21pc2U8dm9pZD47XG4gIGZpbHRlckNvbHVtbj86IHN0cmluZztcbiAgZGVmYXVsdFNvcnQ/OiBTb3J0aW5nU3RhdGU7XG4gIGNvbHVtblZpc2liaWxpdHlNYXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBpc0ZldGNoaW5nTmV4dFBhZ2U/OiBib29sZWFuO1xuICBoYXNOZXh0UGFnZT86IGJvb2xlYW47XG4gIGZldGNoTmV4dFBhZ2U/OiAob3B0aW9ucz86IHVua25vd24pID0+IFByb21pc2U8dW5rbm93bj47XG4gIGVuYWJsZVJvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIHNob3dDaGVja2JveGVzPzogYm9vbGVhbjtcbiAgb25GaWx0ZXJDaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgZmlsdGVyVmFsdWU/OiBzdHJpbmc7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGVuYWJsZVNlYXJjaD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFRhYmxlUm93Q29tcG9uZW50ID0gPFREYXRhLCBUVmFsdWU+KHtcbiAgcm93LFxuICBpc1NtYWxsU2NyZWVuLFxuICBvblNlbGVjdGlvbkNoYW5nZSxcbiAgaW5kZXgsXG4gIGlzU2VhcmNoaW5nLFxufToge1xuICByb3c6IFJvdzxURGF0YT47XG4gIGlzU21hbGxTY3JlZW46IGJvb2xlYW47XG4gIG9uU2VsZWN0aW9uQ2hhbmdlPzogKHJvd0lkOiBzdHJpbmcsIHNlbGVjdGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NlYXJjaGluZzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlU2VsZWN0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICByb3cudG9nZ2xlU2VsZWN0ZWQodmFsdWUpO1xuICAgICAgb25TZWxlY3Rpb25DaGFuZ2U/Lihyb3cuaWQsIHZhbHVlKTtcbiAgICB9LFxuICAgIFtyb3csIG9uU2VsZWN0aW9uQ2hhbmdlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZVJvd1xuICAgICAgZGF0YS1zdGF0ZT17cm93LmdldElzU2VsZWN0ZWQoKSA/ICdzZWxlY3RlZCcgOiB1bmRlZmluZWR9XG4gICAgICBjbGFzc05hbWU9XCJtb3Rpb24tc2FmZTphbmltYXRlLWZhZGVJbiBib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLW91dCBob3ZlcjpiZy1zdXJmYWNlLXNlY29uZGFyeVwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBhbmltYXRpb25EZWxheTogYCR7aW5kZXggKiAyMH1tc2AsXG4gICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoJHtpc1NlYXJjaGluZyA/ICc0cHgnIDogJzAnfSlgLFxuICAgICAgICBvcGFjaXR5OiBpc1NlYXJjaGluZyA/IDAuNSA6IDEsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsKSA9PiB7XG4gICAgICAgIGlmIChjZWxsLmNvbHVtbi5pZCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IGNsYXNzTmFtZT1cInB4LTIgcHktMSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDBcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdGlvbkNoZWNrYm94XG4gICAgICAgICAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cIlNlbGVjdCByb3dcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjZWxsLmNvbHVtbi5pZCA9PT0gJ3RpdGxlJykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgIGtleT17Y2VsbC5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0wIG1heC13LTAgcHgtMiBweS0xIGFsaWduLW1pZGRsZSB0ZXh0LXhzIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBzbTpweC00IHNtOnB5LTIgc206dGV4dC1zbVwiXG4gICAgICAgICAgICAgIHN0eWxlPXtnZXRDb2x1bW5TdHlsZShcbiAgICAgICAgICAgICAgICBjZWxsLmNvbHVtbi5jb2x1bW5EZWYgYXMgVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sXG4gICAgICAgICAgICAgICAgaXNTbWFsbFNjcmVlbixcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgc2NvcGU9XCJyb3dcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXZpc2libGUgdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsLCBjZWxsLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAga2V5PXtjZWxsLmlkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0wIG1heC13LTAgb3ZlcmZsb3ctdmlzaWJsZSBweC0yIHB5LTEgYWxpZ24tbWlkZGxlIHRleHQteHMgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHNtOnB4LTQgc206cHktMiBzbTp0ZXh0LXNtXCJcbiAgICAgICAgICAgIHN0eWxlPXtnZXRDb2x1bW5TdHlsZShcbiAgICAgICAgICAgICAgY2VsbC5jb2x1bW4uY29sdW1uRGVmIGFzIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LFxuICAgICAgICAgICAgICBpc1NtYWxsU2NyZWVuLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXZpc2libGUgdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICB7ZmxleFJlbmRlcihjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCwgY2VsbC5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L1RhYmxlUm93PlxuICApO1xufTtcblxuY29uc3QgTWVtb2l6ZWRUYWJsZVJvdyA9IG1lbW8oVGFibGVSb3dDb21wb25lbnQpIGFzIHR5cGVvZiBUYWJsZVJvd0NvbXBvbmVudDtcblxuZnVuY3Rpb24gZ2V0Q29sdW1uU3R5bGU8VERhdGEsIFRWYWx1ZT4oXG4gIGNvbHVtbjogVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sXG4gIGlzU21hbGxTY3JlZW46IGJvb2xlYW4sXG4pOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogaXNTbWFsbFNjcmVlbiA/IGNvbHVtbi5tZXRhPy5tb2JpbGVTaXplIDogY29sdW1uLm1ldGE/LnNpemUsXG4gICAgbWluV2lkdGg6IGNvbHVtbi5tZXRhPy5taW5XaWR0aCxcbiAgICBtYXhXaWR0aDogY29sdW1uLm1ldGE/LnNpemUsXG4gIH07XG59XG5cbmNvbnN0IERlbGV0ZUJ1dHRvbiA9IG1lbW8oXG4gICh7XG4gICAgb25EZWxldGUsXG4gICAgaXNEZWxldGluZyxcbiAgICBkaXNhYmxlZCxcbiAgICBpc1NtYWxsU2NyZWVuLFxuICAgIGFyaWFMYWJlbCxcbiAgfToge1xuICAgIG9uRGVsZXRlPzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBpc0RlbGV0aW5nOiBib29sZWFuO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIGlzU21hbGxTY3JlZW46IGJvb2xlYW47XG4gICAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIH0pID0+IHtcbiAgICBpZiAoIW9uRGVsZXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBjbGFzc05hbWU9e2NuKCdtaW4tdy1bNDBweF0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwJywgaXNTbWFsbFNjcmVlbiAmJiAncHgtMiBweS0xJyl9XG4gICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgID5cbiAgICAgICAge2lzRGVsZXRpbmcgPyAoXG4gICAgICAgICAgPFNwaW5uZXIgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFRyYXNoSWNvbiBjbGFzc05hbWU9XCJzaXplLTMuNSB0ZXh0LXJlZC00MDAgc206c2l6ZS00XCIgLz5cbiAgICAgICAgICAgIHshaXNTbWFsbFNjcmVlbiAmJiA8c3BhbiBjbGFzc05hbWU9XCJtbC0yXCI+RGVsZXRlPC9zcGFuPn1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXRhVGFibGU8VERhdGEsIFRWYWx1ZT4oe1xuICBjb2x1bW5zLFxuICBkYXRhLFxuICBvbkRlbGV0ZSxcbiAgZmlsdGVyQ29sdW1uLFxuICBkZWZhdWx0U29ydCA9IFtdLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgaXNGZXRjaGluZ05leHRQYWdlID0gZmFsc2UsXG4gIGhhc05leHRQYWdlID0gZmFsc2UsXG4gIGZldGNoTmV4dFBhZ2UsXG4gIGVuYWJsZVJvd1NlbGVjdGlvbiA9IHRydWUsXG4gIHNob3dDaGVja2JveGVzID0gdHJ1ZSxcbiAgb25GaWx0ZXJDaGFuZ2UsXG4gIGZpbHRlclZhbHVlLFxuICBpc0xvYWRpbmcsXG4gIGVuYWJsZVNlYXJjaCA9IHRydWUsXG59OiBEYXRhVGFibGVQcm9wczxURGF0YSwgVFZhbHVlPikge1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG4gIGNvbnN0IGlzU21hbGxTY3JlZW4gPSB1c2VNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjhweCknKTtcbiAgY29uc3QgdGFibGVDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IFtpc0RlbGV0aW5nLCBzZXRJc0RlbGV0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvbiwgc2V0Um93U2VsZWN0aW9uXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IFtzb3J0aW5nLCBzZXRTb3J0aW5nXSA9IHVzZVN0YXRlPFNvcnRpbmdTdGF0ZT4oZGVmYXVsdFNvcnQpO1xuICBjb25zdCBbY29sdW1uRmlsdGVycywgc2V0Q29sdW1uRmlsdGVyc10gPSB1c2VTdGF0ZTxDb2x1bW5GaWx0ZXJzU3RhdGU+KFtdKTtcbiAgY29uc3QgW2NvbHVtblZpc2liaWxpdHksIHNldENvbHVtblZpc2liaWxpdHldID0gdXNlU3RhdGU8VmlzaWJpbGl0eVN0YXRlPih7fSk7XG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlID8/ICcnKTtcbiAgY29uc3QgW2lzU2VhcmNoaW5nLCBzZXRJc1NlYXJjaGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50LCBzZXRTZWFyY2hSZXN1bHRzQW5ub3VuY2VtZW50XSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCB0YWJsZUNvbHVtbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZVJvd1NlbGVjdGlvbiB8fCAhc2hvd0NoZWNrYm94ZXMpIHtcbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RDb2x1bW4gPSB7XG4gICAgICBpZDogJ3NlbGVjdCcsXG4gICAgICBoZWFkZXI6ICh7IHRhYmxlIH06IHsgdGFibGU6IFRUYWJsZTxURGF0YT4gfSkgPT4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIHctWzMwcHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKCl9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT4gdGFibGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZChCb29sZWFuKHZhbHVlKSl9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IGFsbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApLFxuICAgICAgY2VsbDogKHsgcm93IH06IHsgcm93OiBSb3c8VERhdGE+IH0pID0+IChcbiAgICAgICAgPFNlbGVjdGlvbkNoZWNrYm94XG4gICAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiByb3cudG9nZ2xlU2VsZWN0ZWQodmFsdWUpfVxuICAgICAgICAgIGFyaWFMYWJlbD1cIlNlbGVjdCByb3dcIlxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG1ldGE6IHsgc2l6ZTogJzUwcHgnIH0sXG4gICAgfTtcbiAgICByZXR1cm4gW3NlbGVjdENvbHVtbiwgLi4uY29sdW1uc107XG4gIH0sIFtjb2x1bW5zLCBlbmFibGVSb3dTZWxlY3Rpb24sIHNob3dDaGVja2JveGVzXSk7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBkYXRhLFxuICAgIGNvbHVtbnM6IHRhYmxlQ29sdW1ucyxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFNvcnRlZFJvd01vZGVsOiBnZXRTb3J0ZWRSb3dNb2RlbCgpLFxuICAgIGdldEZpbHRlcmVkUm93TW9kZWw6IGdldEZpbHRlcmVkUm93TW9kZWwoKSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb24sXG4gICAgZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgc3RhdGU6IHtcbiAgICAgIHNvcnRpbmcsXG4gICAgICBjb2x1bW5GaWx0ZXJzLFxuICAgICAgY29sdW1uVmlzaWJpbGl0eSxcbiAgICAgIHJvd1NlbGVjdGlvbixcbiAgICB9LFxuICAgIG9uU29ydGluZ0NoYW5nZTogc2V0U29ydGluZyxcbiAgICBvbkNvbHVtbkZpbHRlcnNDaGFuZ2U6IHNldENvbHVtbkZpbHRlcnMsXG4gICAgb25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOiBzZXRDb2x1bW5WaXNpYmlsaXR5LFxuICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBzZXRSb3dTZWxlY3Rpb24sXG4gIH0pO1xuXG4gIGNvbnN0IHsgcm93cyB9ID0gdGFibGUuZ2V0Um93TW9kZWwoKTtcblxuICBjb25zdCByb3dWaXJ0dWFsaXplciA9IHVzZVZpcnR1YWxpemVyKHtcbiAgICBjb3VudDogcm93cy5sZW5ndGgsXG4gICAgZ2V0U2Nyb2xsRWxlbWVudDogKCkgPT4gdGFibGVDb250YWluZXJSZWYuY3VycmVudCxcbiAgICBlc3RpbWF0ZVNpemU6IHVzZUNhbGxiYWNrKCgpID0+IDQ4LCBbXSksXG4gICAgb3ZlcnNjYW46IDEwLFxuICB9KTtcblxuICBjb25zdCB2aXJ0dWFsUm93cyA9IHJvd1ZpcnR1YWxpemVyLmdldFZpcnR1YWxJdGVtcygpO1xuICBjb25zdCB0b3RhbFNpemUgPSByb3dWaXJ0dWFsaXplci5nZXRUb3RhbFNpemUoKTtcbiAgY29uc3QgcGFkZGluZ1RvcCA9IHZpcnR1YWxSb3dzLmxlbmd0aCA+IDAgPyB2aXJ0dWFsUm93c1swXS5zdGFydCA6IDA7XG4gIGNvbnN0IHBhZGRpbmdCb3R0b20gPVxuICAgIHZpcnR1YWxSb3dzLmxlbmd0aCA+IDAgPyB0b3RhbFNpemUgLSB2aXJ0dWFsUm93c1t2aXJ0dWFsUm93cy5sZW5ndGggLSAxXS5lbmQgOiAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRhYmxlQ29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFzY3JvbGxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFoYXNOZXh0UGFnZSB8fCBpc0ZldGNoaW5nTmV4dFBhZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBzY3JvbGxFbGVtZW50O1xuICAgICAgaWYgKHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCA8PSBjbGllbnRIZWlnaHQgKiAxLjUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBTYWZlbHkgZmV0Y2ggbmV4dCBwYWdlIHdpdGhvdXQgYnJlYWtpbmcgaWYgbGFzdFBhZ2UgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgYXdhaXQgZmV0Y2hOZXh0UGFnZT8uKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGZldGNoIG5leHQgcGFnZTonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gKCkgPT4gc2Nyb2xsRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICB9LCBbaGFzTmV4dFBhZ2UsIGlzRmV0Y2hpbmdOZXh0UGFnZSwgZmV0Y2hOZXh0UGFnZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNTZWFyY2hpbmcodHJ1ZSk7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXJDaGFuZ2U/LihzZWFyY2hUZXJtKTtcbiAgICAgIHNldElzU2VhcmNoaW5nKGZhbHNlKTtcbiAgICB9LCAzMDApO1xuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH0sIFtzZWFyY2hUZXJtLCBvbkZpbHRlckNoYW5nZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hUZXJtLnRyaW0oKSB8fCBpc1NlYXJjaGluZykge1xuICAgICAgc2V0U2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudCgnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0Q291bnQgPSByb3dzLmxlbmd0aDtcbiAgICBjb25zdCBhbm5vdW5jZW1lbnQgPVxuICAgICAgcmVzdWx0Q291bnQgPT09IDFcbiAgICAgICAgPyBsb2NhbGl6ZSgnY29tX3VpX3Jlc3VsdF9mb3VuZCcgYXMgVHJhbnNsYXRpb25LZXlzLCB7XG4gICAgICAgICAgICBjb3VudDogcmVzdWx0Q291bnQsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBsb2NhbGl6ZSgnY29tX3VpX3Jlc3VsdHNfZm91bmQnIGFzIFRyYW5zbGF0aW9uS2V5cywge1xuICAgICAgICAgICAgY291bnQ6IHJlc3VsdENvdW50LFxuICAgICAgICAgIH0pO1xuXG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0U2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudChhbm5vdW5jZW1lbnQpO1xuICAgIH0sIDMwMCk7XG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9LCBbcm93cy5sZW5ndGgsIHNlYXJjaFRlcm0sIGlzU2VhcmNoaW5nLCBsb2NhbGl6ZV0pO1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIW9uRGVsZXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0SXNEZWxldGluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXRlbXNUb0RlbGV0ZSA9IHRhYmxlLmdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbCgpLnJvd3MubWFwKChyKSA9PiByLm9yaWdpbmFsKTtcbiAgICAgIGF3YWl0IG9uRGVsZXRlKGl0ZW1zVG9EZWxldGUpO1xuICAgICAgc2V0Um93U2VsZWN0aW9uKHt9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNEZWxldGluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbb25EZWxldGUsIHRhYmxlXSk7XG5cbiAgY29uc3QgZ2V0UmFuZG9tV2lkdGggPSAoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoNDEwIC0gMTcwICsgMSkpICsgMTcwO1xuXG4gIGNvbnN0IHNrZWxldG9ucyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEzIH0sIChfLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHJhbmRvbVdpZHRoID0gZ2V0UmFuZG9tV2lkdGgoKTtcbiAgICBjb25zdCBmaXJzdERhdGFDb2x1bW5JbmRleCA9IHRhYmxlQ29sdW1uc1swXT8uaWQgPT09ICdzZWxlY3QnID8gMSA6IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRhYmxlUm93IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cIm1vdGlvbi1zYWZlOmFuaW1hdGUtZmFkZUluIGJvcmRlci1iIGJvcmRlci1ib3JkZXItbGlnaHRcIj5cbiAgICAgICAge3RhYmxlQ29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbHVtblN0eWxlKGNvbHVtbiBhcyBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPiwgaXNTbWFsbFNjcmVlbik7XG4gICAgICAgICAgY29uc3QgaXNGaXJzdERhdGFDb2x1bW4gPSBjb2x1bW5JbmRleCA9PT0gZmlyc3REYXRhQ29sdW1uSW5kZXg7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NvbHVtbi5pZH0gY2xhc3NOYW1lPVwicHgtMiBweS0xIHNtOnB4LTQgc206cHktMlwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICAgICAgICAgIDxTa2VsZXRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNlwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2lzRmlyc3REYXRhQ29sdW1uID8geyB3aWR0aDogYCR7cmFuZG9tV2lkdGh9cHhgIH0gOiB7IHdpZHRoOiAnMTAwJScgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9UYWJsZVJvdz5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBoLWZ1bGwgZmxleC1jb2wgZ2FwLTQnLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICB7c2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogVGFibGUgY29udHJvbHMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiBzbTpnYXAtNFwiPlxuICAgICAgICB7ZW5hYmxlUm93U2VsZWN0aW9uICYmIHNob3dDaGVja2JveGVzICYmIChcbiAgICAgICAgICA8RGVsZXRlQnV0dG9uXG4gICAgICAgICAgICBvbkRlbGV0ZT17aGFuZGxlRGVsZXRlfVxuICAgICAgICAgICAgaXNEZWxldGluZz17aXNEZWxldGluZ31cbiAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0RmlsdGVyZWRTZWxlY3RlZFJvd01vZGVsKCkucm93cy5sZW5ndGggfHwgaXNEZWxldGluZ31cbiAgICAgICAgICAgIGlzU21hbGxTY3JlZW49e2lzU21hbGxTY3JlZW59XG4gICAgICAgICAgICBhcmlhTGFiZWw9e2xvY2FsaXplKCdjb21fdWlfZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2ZpbHRlckNvbHVtbiAhPT0gdW5kZWZpbmVkICYmIHRhYmxlLmdldENvbHVtbihmaWx0ZXJDb2x1bW4pICYmIGVuYWJsZVNlYXJjaCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlZFNlYXJjaElucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hUZXJtfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFRlcm0oZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBpc1NlYXJjaGluZz17aXNTZWFyY2hpbmd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFZpcnR1YWxpemVkIHRhYmxlICovfVxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3RhYmxlQ29udGFpbmVyUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdyZWxhdGl2ZSBtaW4taC0wIG1heC13LWZ1bGwgZmxleC0xIG92ZXJmbG93LXgtYXV0byBvdmVyZmxvdy15LWF1dG8gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJsYWNrLzEwIGRhcms6Ym9yZGVyLXdoaXRlLzEwJyxcbiAgICAgICAgICAndHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGVhc2Utb3V0JyxcbiAgICAgICAgICBpc1NlYXJjaGluZyAmJiAnYmctc3VyZmFjZS1zZWNvbmRhcnkvNTAnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInctZnVsbCBtaW4tdy1bMzAwcHhdIHRhYmxlLWZpeGVkIGJvcmRlci1zZXBhcmF0ZSBib3JkZXItc3BhY2luZy0wXCI+XG4gICAgICAgICAgPFRhYmxlSGVhZGVyIGNsYXNzTmFtZT1cInN0aWNreSB0b3AtMCB6LTUwIGJnLXN1cmZhY2Utc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICB7dGFibGUuZ2V0SGVhZGVyR3JvdXBzKCkubWFwKChoZWFkZXJHcm91cCkgPT4gKFxuICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0gY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWJvcmRlci1saWdodFwiPlxuICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgIGtleT17aGVhZGVyLmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBiZy1zdXJmYWNlLXNlY29uZGFyeSBweC0yIHB5LTIgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC10ZXh0LXNlY29uZGFyeSBzbTpweC00XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblN0eWxlKFxuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmIGFzIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LFxuICAgICAgICAgICAgICAgICAgICAgIGlzU21hbGxTY3JlZW4sXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlci5jb2x1bW4uZ2V0VG9nZ2xlU29ydGluZ0hhbmRsZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIDogZmxleFJlbmRlcihoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIsIGhlYWRlci5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuXG4gICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgIHtwYWRkaW5nVG9wID4gMCAmJiAoXG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9e3sgaGVpZ2h0OiBgJHtwYWRkaW5nVG9wfXB4YCB9fSAvPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2lzTG9hZGluZyAmJiBza2VsZXRvbnN9XG5cbiAgICAgICAgICAgIHt2aXJ0dWFsUm93cy5tYXAoKHZpcnR1YWxSb3cpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1t2aXJ0dWFsUm93LmluZGV4XTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TWVtb2l6ZWRUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgICAgIGlzU21hbGxTY3JlZW49e2lzU21hbGxTY3JlZW59XG4gICAgICAgICAgICAgICAgICBpbmRleD17dmlydHVhbFJvdy5pbmRleH1cbiAgICAgICAgICAgICAgICAgIGlzU2VhcmNoaW5nPXtpc1NlYXJjaGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG5cbiAgICAgICAgICAgIHshdmlydHVhbFJvd3MubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFRhYmxlUm93IGNsYXNzTmFtZT1cImhvdmVyOmJnLXRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBjb2xTcGFuPXtjb2x1bW5zLmxlbmd0aH0gY2xhc3NOYW1lPVwicC00IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICBObyBkYXRhIGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3BhZGRpbmdCb3R0b20gPiAwICYmIChcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT17eyBoZWlnaHQ6IGAke3BhZGRpbmdCb3R0b219cHhgIH19IC8+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7LyogTG9hZGluZyBpbmRpY2F0b3IgKi99XG4gICAgICAgICAgICB7KGlzRmV0Y2hpbmdOZXh0UGFnZSB8fCBoYXNOZXh0UGFnZSkgJiYgKFxuICAgICAgICAgICAgICA8VGFibGVSb3cgY2xhc3NOYW1lPVwiaG92ZXI6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGNvbFNwYW49e2NvbHVtbnMubGVuZ3RofSBjbGFzc05hbWU9XCJwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpc0ZldGNoaW5nTmV4dFBhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXIgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICBoYXNOZXh0UGFnZSAmJiA8ZGl2IGNsYXNzTmFtZT1cImgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgIDwvVGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZUNhbGxiYWNrLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTG9jYWxpemUgfSBmcm9tICd+L2hvb2tzJztcblxuaW50ZXJmYWNlIE9wdGlvbiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmludGVyZmFjZSBSYWRpb1Byb3BzIHtcbiAgb3B0aW9uczogT3B0aW9uW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZnVsbFdpZHRoPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUmFkaW8gPSBtZW1vKGZ1bmN0aW9uIFJhZGlvKHtcbiAgb3B0aW9ucyxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgZnVsbFdpZHRoID0gZmFsc2UsXG59OiBSYWRpb1Byb3BzKSB7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4odmFsdWUgPz8gJycpO1xuICBjb25zdCBidXR0b25SZWZzID0gdXNlUmVmPChIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwpW10+KFtdKTtcbiAgY29uc3QgW2JhY2tncm91bmRTdHlsZSwgc2V0QmFja2dyb3VuZFN0eWxlXSA9IHVzZVN0YXRlPFJlYWN0LkNTU1Byb3BlcnRpZXM+KHt9KTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgb25DaGFuZ2U/LihuZXdWYWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQmFja2dyb3VuZFN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleCgob3B0KSA9PiBvcHQudmFsdWUgPT09IGN1cnJlbnRWYWx1ZSk7XG4gICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCAmJiBidXR0b25SZWZzLmN1cnJlbnRbc2VsZWN0ZWRJbmRleF0pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQnV0dG9uID0gYnV0dG9uUmVmcy5jdXJyZW50W3NlbGVjdGVkSW5kZXhdO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gc2VsZWN0ZWRCdXR0b24/LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRCdXR0b24gJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJ1dHRvblJlY3QgPSBzZWxlY3RlZEJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IGJ1dHRvblJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCAtIDQ7XG4gICAgICAgIHNldEJhY2tncm91bmRTdHlsZSh7XG4gICAgICAgICAgd2lkdGg6IGAke2J1dHRvblJlY3Qud2lkdGh9cHhgLFxuICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtvZmZzZXRMZWZ0fXB4KWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2N1cnJlbnRWYWx1ZSwgb3B0aW9uc10pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlQmFja2dyb3VuZFN0eWxlKCk7XG4gIH0sIFt1cGRhdGVCYWNrZ3JvdW5kU3R5bGVdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXRDdXJyZW50VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfSwgW3ZhbHVlXSk7XG5cbiAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgYmctbXV0ZWQgcC0xIG9wYWNpdHktNTBcIlxuICAgICAgICByb2xlPVwicmFkaW9ncm91cFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTQgcHktMiB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgIHtsb2NhbGl6ZSgnY29tX3VpX25vX29wdGlvbnMnKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleCgob3B0KSA9PiBvcHQudmFsdWUgPT09IGN1cnJlbnRWYWx1ZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSAke2Z1bGxXaWR0aCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCd9IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLW11dGVkIHAtMSAke2NsYXNzTmFtZX1gfVxuICAgICAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICAgID5cbiAgICAgIHtzZWxlY3RlZEluZGV4ID49IDAgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC15LTEgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci81MCBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1zbSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1vdXRcIlxuICAgICAgICAgIHN0eWxlPXtiYWNrZ3JvdW5kU3R5bGV9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICByZWY9eyhlbCkgPT4ge1xuICAgICAgICAgICAgYnV0dG9uUmVmcy5jdXJyZW50W2luZGV4XSA9IGVsO1xuICAgICAgICAgIH19XG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cInJhZGlvXCJcbiAgICAgICAgICBhcmlhLWNoZWNrZWQ9e2N1cnJlbnRWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNoYW5nZShvcHRpb24udmFsdWUpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSB6LTEwIGZsZXggaC1bMzRweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgcHgtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyAke1xuICAgICAgICAgICAgY3VycmVudFZhbHVlID09PSBvcHRpb24udmFsdWUgPyAndGV4dC1mb3JlZ3JvdW5kJyA6ICd0ZXh0LWZvcmVncm91bmQnXG4gICAgICAgICAgfSAke2Rpc2FibGVkID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJyA6ICcnfSAke2Z1bGxXaWR0aCA/ICdmbGV4LTEnIDogJyd9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24uaWNvbiAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIHtvcHRpb24uaWNvbn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIndoaXRlc3BhY2Utbm93cmFwXCI+e29wdGlvbi5sYWJlbH08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW87XG4iLCJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBYLCBQbHVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBCdXR0b25IVE1MQXR0cmlidXRlcyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTHVjaWRlSWNvbiB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQmFkZ2VQcm9wc1xuICBleHRlbmRzIE9taXQ8XG4gICAgQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICdvbkFuaW1hdGlvblN0YXJ0JyB8ICdvbkRyYWdTdGFydCcgfCAnb25EcmFnRW5kJyB8ICdvbkRyYWcnXG4gID4ge1xuICBpY29uPzogTHVjaWRlSWNvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNFZGl0aW5nPzogYm9vbGVhbjtcbiAgaXNEcmFnZ2luZz86IGJvb2xlYW47XG4gIGlzQXZhaWxhYmxlOiBib29sZWFuO1xuICBpc0luQ2hhdD86IGJvb2xlYW47XG4gIG9uQmFkZ2VBY3Rpb24/OiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZT86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhZGdlKHtcbiAgaWNvbjogSWNvbixcbiAgbGFiZWwsXG4gIGlkLFxuICBpc0FjdGl2ZSA9IGZhbHNlLFxuICBpc0VkaXRpbmcgPSBmYWxzZSxcbiAgaXNEcmFnZ2luZyA9IGZhbHNlLFxuICBpc0F2YWlsYWJsZSA9IHRydWUsXG4gIGlzSW5DaGF0ID0gZmFsc2UsXG4gIG9uQmFkZ2VBY3Rpb24sXG4gIG9uVG9nZ2xlLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBCYWRnZVByb3BzKSB7XG4gIGNvbnN0IGlzTW92ZWFibGUgPSBpc0VkaXRpbmcgJiYgaXNBdmFpbGFibGU7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBpZCA9PT0gJzEnICYmIGlzSW5DaGF0O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrOiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gPSAoZSkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNFZGl0aW5nICYmIG9uVG9nZ2xlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgb25Ub2dnbGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0V2hpbGVUYXBTY2FsZSA9ICgpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgcmV0dXJuIDEuMTtcbiAgICB9XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMC45NztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncm91cCByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSByb3VuZGVkLWZ1bGwgcHgtNCBweS0xLjUnLFxuICAgICAgICAnYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1zaGFkb3cnLFxuICAgICAgICAnQGNvbnRhaW5lci1bNjAwcHhdOnctZnVsbCBzaXplLTkgcC0yJyxcbiAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICA/ICdiZy1zdXJmYWNlLWFjdGl2ZSBzaGFkb3ctbWQnXG4gICAgICAgICAgOiAnYmctc3VyZmFjZS1jaGF0IHNoYWRvdy1zbSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnNoYWRvdy1tZCcsXG4gICAgICAgICdhY3RpdmU6c2NhbGUtOTUgYWN0aXZlOnNoYWRvdy1pbm5lcicsXG4gICAgICAgIGlzTW92ZWFibGUgJiYgJ2N1cnNvci1tb3ZlJyxcbiAgICAgICAgaXNEaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAgaG92ZXI6c2hhZG93LXNtJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgc2NhbGU6IGlzRHJhZ2dpbmcgPyAxLjEgOiAxLFxuICAgICAgICBib3hTaGFkb3c6IGlzRHJhZ2dpbmcgPyAnMCAxMHB4IDI1cHggcmdiYSgwLDAsMCwwLjEpJyA6IHVuZGVmaW5lZCxcbiAgICAgIH19XG4gICAgICB3aGlsZVRhcD17eyBzY2FsZTogZ2V0V2hpbGVUYXBTY2FsZSgpIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IHR5cGU6ICd0d2VlbicsIGR1cmF0aW9uOiAwLjEsIGVhc2U6ICdlYXNlT3V0JyB9fVxuICAgICAgey4uLihwcm9wcyBhcyBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgbW90aW9uLmJ1dHRvbj4pfVxuICAgID5cbiAgICAgIHtJY29uICYmIChcbiAgICAgICAgPEljb25cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ0Bjb250YWluZXItWzYwMHB4XTpoLTQgQGNvbnRhaW5lci1bNjAwcHhdOnctNCByZWxhdGl2ZSBoLTUgdy01JyxcbiAgICAgICAgICAgICFsYWJlbCAmJiAnbXgtYXV0bycsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIkBjb250YWluZXItWzYwMHB4XTppbmxpbmUgcmVsYXRpdmUgaGlkZGVuXCI+e2xhYmVsfTwvc3Bhbj5cblxuICAgICAge2lzRWRpdGluZyAmJiAhaXNEcmFnZ2luZyAmJiAoXG4gICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiQGNvbnRhaW5lci1bNjAwcHhdOmgtNSBAY29udGFpbmVyLVs2MDBweF06dy01IGFic29sdXRlIC1yaWdodC0xIC10b3AtMSBmbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1zdXJmYWNlLXNlY29uZGFyeS1hbHQgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LXNtXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjggfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC44IH19XG4gICAgICAgICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOSB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIG9uQmFkZ2VBY3Rpb24/LigpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7aXNBdmFpbGFibGUgPyA8WCBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz4gOiA8UGx1cyBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz59XG4gICAgICAgIDwvbW90aW9uLmJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9tb3Rpb24uYnV0dG9uPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFVzZXIgfSBmcm9tICdsaWJyZWNoYXQtZGF0YS1wcm92aWRlcic7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4vU2tlbGV0b24nO1xuaW1wb3J0IHsgdXNlQXZhdGFyIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBVc2VySWNvbiB9IGZyb20gJ34vc3Zncyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhdGFyUHJvcHMge1xuICB1c2VyPzogVFVzZXI7XG4gIHNpemU/OiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzaG93RGVmYXVsdFdoZW5FbXB0eT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEF2YXRhcjogUmVhY3QuRkM8QXZhdGFyUHJvcHM+ID0gKHtcbiAgdXNlcixcbiAgc2l6ZSA9IDMyLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgYWx0LFxuICBzaG93RGVmYXVsdFdoZW5FbXB0eSA9IHRydWUsXG59KSA9PiB7XG4gIGNvbnN0IGF2YXRhclNyYyA9IHVzZUF2YXRhcih1c2VyKTtcbiAgY29uc3QgW2ltYWdlTG9hZGVkLCBzZXRJbWFnZUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpbWFnZUVycm9yLCBzZXRJbWFnZUVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBhdmF0YXJTZWVkID0gdXNlTWVtbyhcbiAgICAoKSA9PiB1c2VyPy5hdmF0YXIgfHwgdXNlcj8udXNlcm5hbWUgfHwgdXNlcj8uZW1haWwgfHwgJycsXG4gICAgW3VzZXI/LmF2YXRhciwgdXNlcj8udXNlcm5hbWUsIHVzZXI/LmVtYWlsXSxcbiAgKTtcblxuICBjb25zdCBhbHRUZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBhbHQgfHwgYCR7dXNlcj8ubmFtZSB8fCB1c2VyPy51c2VybmFtZSB8fCB1c2VyPy5lbWFpbCB8fCAnJ30ncyBhdmF0YXJgLFxuICAgIFthbHQsIHVzZXI/Lm5hbWUsIHVzZXI/LnVzZXJuYW1lLCB1c2VyPy5lbWFpbF0sXG4gICk7XG5cbiAgY29uc3QgaW1hZ2VTcmMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWF2YXRhclNlZWQgfHwgaW1hZ2VFcnJvcikgcmV0dXJuICcnO1xuICAgIHJldHVybiAodXNlcj8uYXZhdGFyID8/ICcnKSB8fCBhdmF0YXJTcmMgfHwgJyc7XG4gIH0sIFt1c2VyPy5hdmF0YXIsIGF2YXRhclNyYywgYXZhdGFyU2VlZCwgaW1hZ2VFcnJvcl0pO1xuXG4gIGNvbnN0IGhhbmRsZUltYWdlTG9hZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJbWFnZUxvYWRlZCh0cnVlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhbmRsZUltYWdlRXJyb3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SW1hZ2VFcnJvcih0cnVlKTtcbiAgICBzZXRJbWFnZUxvYWRlZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBEZWZhdWx0QXZhdGFyID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYigxMjEsIDEzNywgMjU1KScsXG4gICAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICAgIGhlaWdodDogYCR7c2l6ZX1weGAsXG4gICAgICAgICAgYm94U2hhZG93OiAncmdiYSgyNDAsIDI0NiwgMjUyLCAwLjEpIDBweCAwcHggMHB4IDFweCcsXG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17YHJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBwLTEgdGV4dC10ZXh0LXByaW1hcnkgJHtjbGFzc05hbWV9YH1cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPFVzZXJJY29uIC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICAgIFtzaXplLCBjbGFzc05hbWVdLFxuICApO1xuXG4gIGlmIChhdmF0YXJTZWVkLmxlbmd0aCA9PT0gMCAmJiBzaG93RGVmYXVsdFdoZW5FbXB0eSkge1xuICAgIHJldHVybiA8RGVmYXVsdEF2YXRhciAvPjtcbiAgfVxuXG4gIGlmIChhdmF0YXJTZWVkLmxlbmd0aCA+IDAgJiYgIWltYWdlRXJyb3IpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHN0eWxlPXt7IHdpZHRoOiBgJHtzaXplfXB4YCwgaGVpZ2h0OiBgJHtzaXplfXB4YCB9fT5cbiAgICAgICAgeyFpbWFnZUxvYWRlZCAmJiAoXG4gICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInJvdW5kZWQtZnVsbFwiIHN0eWxlPXt7IHdpZHRoOiBgJHtzaXplfXB4YCwgaGVpZ2h0OiBgJHtzaXplfXB4YCB9fSAvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxpbWdcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICAgICAgaGVpZ2h0OiBgJHtzaXplfXB4YCxcbiAgICAgICAgICAgIGRpc3BsYXk6IGltYWdlTG9hZGVkID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCAke2NsYXNzTmFtZX1gfVxuICAgICAgICAgIHNyYz17aW1hZ2VTcmN9XG4gICAgICAgICAgYWx0PXthbHRUZXh0fVxuICAgICAgICAgIG9uTG9hZD17aGFuZGxlSW1hZ2VMb2FkfVxuICAgICAgICAgIG9uRXJyb3I9e2hhbmRsZUltYWdlRXJyb3J9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGltYWdlRXJyb3IgJiYgc2hvd0RlZmF1bHRXaGVuRW1wdHkpIHtcbiAgICByZXR1cm4gPERlZmF1bHRBdmF0YXIgLz47XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF2YXRhcjtcbiIsImltcG9ydCB7IHN0YXJ0VHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlYXJjaCBhcyBTZWFyY2hJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCAqIGFzIFJhZGl4U2VsZWN0IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBDaGV2cm9uRG93bkljb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaWNvbnMnO1xuaW1wb3J0IHtcbiAgQ29tYm9ib3gsXG4gIENvbWJvYm94SXRlbSxcbiAgQ29tYm9ib3hMaXN0LFxuICBDb21ib2JveFByb3ZpZGVyLFxuICBDb21ib2JveENhbmNlbCxcbn0gZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlLCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uIH0gZnJvbSAnLi9TZWxlY3QnO1xuaW1wb3J0IHsgdXNlQ29tYm9ib3ggfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbWJvYm94Q29tcG9uZW50KHtcbiAgc2VsZWN0ZWRWYWx1ZSxcbiAgZGlzcGxheVZhbHVlLFxuICBpdGVtcyxcbiAgc2V0VmFsdWUsXG4gIGFyaWFMYWJlbCxcbiAgc2VhcmNoUGxhY2Vob2xkZXIsXG4gIHNlbGVjdFBsYWNlaG9sZGVyLFxuICBpc0NvbGxhcHNlZCxcbiAgU2VsZWN0SWNvbixcbn06IHtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZT86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VsZWN0UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGl0ZW1zOiBPcHRpb25XaXRoSWNvbltdIHwgc3RyaW5nW107XG4gIHNldFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIFNlbGVjdEljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG59KSB7XG4gIGNvbnN0IG9wdGlvbnM6IE9wdGlvbldpdGhJY29uW10gPSAoaXRlbXMgPz8gW10pLm1hcCgob3B0aW9uOiBzdHJpbmcgfCBPcHRpb25XaXRoSWNvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHsgbGFiZWw6IG9wdGlvbiwgdmFsdWU6IG9wdGlvbiB9O1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uO1xuICB9KTtcblxuICBjb25zdCB7IG9wZW4sIHNldE9wZW4sIHNldFNlYXJjaFZhbHVlLCBtYXRjaGVzIH0gPSB1c2VDb21ib2JveCh7XG4gICAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gICAgb3B0aW9ucyxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UmFkaXhTZWxlY3QuUm9vdFxuICAgICAgdmFsdWU9e3NlbGVjdGVkVmFsdWV9XG4gICAgICBvblZhbHVlQ2hhbmdlPXtzZXRWYWx1ZX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICAvKiogSGFja3kgZml4IGZvciByYWRpeC11aSBBbmRyb2lkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMTY1OCAgKi9cbiAgICAgIG9uT3BlbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRPcGVuKCFvcGVuKTtcbiAgICAgICAgfSwgNzUpO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8Q29tYm9ib3hQcm92aWRlclxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBzZXRPcGVuPXtzZXRPcGVufVxuICAgICAgICByZXNldFZhbHVlT25IaWRlXG4gICAgICAgIGluY2x1ZGVzQmFzZUVsZW1lbnQ9e2ZhbHNlfVxuICAgICAgICBzZXRWYWx1ZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgICAgIHNldFNlYXJjaFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXJcbiAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBbJj5zcGFuXTpsaW5lLWNsYW1wLTEgWyY+c3Bhbl06ZmxleCBbJj5zcGFuXTp3LWZ1bGwgWyY+c3Bhbl06aXRlbXMtY2VudGVyIFsmPnNwYW5dOmdhcC0xIFsmPnNwYW5dOnRydW5jYXRlIFsmX3N2Z106aC00IFsmX3N2Z106dy00IFsmX3N2Z106c2hyaW5rLTAnLFxuICAgICAgICAgICAgaXNDb2xsYXBzZWRcbiAgICAgICAgICAgICAgPyAnZmxleCBoLTkgdy05IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTAgWyY+c3Bhbl06dy1hdXRvIFsmPnN2Z106aGlkZGVuJ1xuICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgJ2JnLXdoaXRlIHRleHQtYmxhY2sgaG92ZXI6YmctZ3JheS01MCBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZ3JheS01MDAgZGFyazpiZy1ncmF5LTg1MCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9e3NlbGVjdFBsYWNlaG9sZGVyfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzaXN0YW50LWl0ZW0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICB7U2VsZWN0SWNvbiA/IFNlbGVjdEljb24gOiA8Q2hldnJvbkRvd25JY29uIC8+fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdtbC0yJywgaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnKX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgdXNlclNlbGVjdDogJ25vbmUnIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlXG4gICAgICAgICAgICAgICAgPyAoZGlzcGxheVZhbHVlID8/IHNlbGVjdGVkVmFsdWUpXG4gICAgICAgICAgICAgICAgOiBzZWxlY3RQbGFjZWhvbGRlciAmJiBzZWxlY3RQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L1NlbGVjdFZhbHVlPlxuICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgIDxSYWRpeFNlbGVjdC5Qb3J0YWw+XG4gICAgICAgICAgPFJhZGl4U2VsZWN0LkNvbnRlbnRcbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsICsgJ3MnfVxuICAgICAgICAgICAgcG9zaXRpb249XCJwb3BwZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ2JnLXBvcG92ZXIgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcmVsYXRpdmUgei01MCBtYXgtaC1bNTJ2aF0gbWluLXctWzhyZW1dIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXJrOmJvcmRlci1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICdkYXRhLVtzaWRlPWJvdHRvbV06dHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOi10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOi10cmFuc2xhdGUteS0xJyxcbiAgICAgICAgICAgICAgJ2JnLXdoaXRlIGRhcms6YmctZ3JheS03MDAnLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8UmFkaXhTZWxlY3QuVmlld3BvcnQgY2xhc3NOYW1lPVwibWItNSBoLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSB3LWZ1bGwgbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncm91cCBzdGlja3kgbGVmdC0wIHRvcC0wIHotMTAgZmxleCBoLTEyIGl0ZW1zLWNlbnRlciBnYXAtMiBiZy13aGl0ZSBweC0zIHB5LTIgdGV4dC1ibGFjayBkdXJhdGlvbi0zMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtZ3JheS01MDAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIGRhcms6Z3JvdXAtZm9jdXMtd2l0aGluOnRleHQtZ3JheS0zMDAgZGFyazpncm91cC1ob3Zlcjp0ZXh0LWdyYXktMzAwXCIgLz5cbiAgICAgICAgICAgICAgICA8Q29tYm9ib3hcbiAgICAgICAgICAgICAgICAgIGF1dG9TZWxlY3RcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSByb3VuZGVkLW1kIGJvcmRlci1ub25lIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBweS0yIHRleHQtc20gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLWdyYXktNzAwLzEwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTIwMC8xMFwiXG4gICAgICAgICAgICAgICAgICAvLyBBcmlha2l0J3MgQ29tYm9ib3ggbWFudWFsbHkgdHJpZ2dlcnMgYSBibHVyIGV2ZW50IG9uIHZpcnR1YWxseVxuICAgICAgICAgICAgICAgICAgLy8gYmx1cnJlZCBpdGVtcywgbWFraW5nIHRoZW0gd29yayBhcyBpZiB0aGV5IGhhZCBhY3R1YWwgRE9NXG4gICAgICAgICAgICAgICAgICAvLyBmb2N1cy4gVGhlc2UgYmx1ciBldmVudHMgbWlnaHQgaGFwcGVuIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICAgICAvLyBmb2N1cyBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2UsIGxlYWRpbmcgUmFkaXggU2VsZWN0IHRvXG4gICAgICAgICAgICAgICAgICAvLyBjbG9zZSB0aGUgcG9wb3Zlci4gVGhpcyBoYXBwZW5zIGJlY2F1c2UgUmFkaXggU2VsZWN0IHJlbGllcyBvblxuICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yZGVyIG9mIHRoZXNlIGNhcHR1cmVkIGV2ZW50cyB0byBkaXNjZXJuIGlmIHRoZSBmb2N1cyB3YXNcbiAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgdGhlIGVsZW1lbnQuIFNpbmNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgLy8gb25JbnRlcmFjdE91dHNpZGUgcHJvcCBpbiB0aGUgUmFkaXggU2VsZWN0Q29udGVudCBjb21wb25lbnQgdG9cbiAgICAgICAgICAgICAgICAgIC8vIHN0b3AgdGhpcyBiZWhhdmlvciwgd2UgY2FuIHR1cm4gb2ZmIEFyaWFraXQncyBiZWhhdmlvciBoZXJlLlxuICAgICAgICAgICAgICAgICAgb25CbHVyQ2FwdHVyZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxDb21ib2JveENhbmNlbFxuICAgICAgICAgICAgICAgICAgaGlkZVdoZW5FbXB0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDAgZGFyazpncm91cC1mb2N1cy13aXRoaW46dGV4dC1ncmF5LTMwMCBkYXJrOmdyb3VwLWhvdmVyOnRleHQtZ3JheS0zMDBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Q29tYm9ib3hMaXN0IGNsYXNzTmFtZT1cIm92ZXJmbG93LXktYXV0byBwLTEgcHktMlwiPlxuICAgICAgICAgICAgICAgIHttYXRjaGVzLm1hcCgoeyBsYWJlbCwgdmFsdWUsIGljb24gfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFJhZGl4U2VsZWN0Lkl0ZW0ga2V5PXt2YWx1ZX0gdmFsdWU9e2Ake3ZhbHVlID8/ICcnfWB9IGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgIDxDb21ib2JveEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC0yIHByLTggdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgaG92ZXI6YmctZ3JheS01MCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAvKiogSGFja3kgZml4IGZvciByYWRpeC11aSBBbmRyb2lkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMTY1OCAgKi9cbiAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoRW5kPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHt2YWx1ZSA/PyAnJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFkaXhTZWxlY3QuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUmFkaXhTZWxlY3QuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFJhZGl4U2VsZWN0Lkl0ZW1UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMyBkYXJrOnRleHQtd2hpdGUgWyZfc3ZnXTpoLTQgWyZfc3ZnXTp3LTQgWyZfc3ZnXTpzaHJpbmstMCBbJl9zdmddOnRleHQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFzc2lzdGFudC1pdGVtIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWNvbiAmJiBpY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5JdGVtVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9Db21ib2JveEl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1JhZGl4U2VsZWN0Lkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvQ29tYm9ib3hMaXN0PlxuICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5WaWV3cG9ydD5cbiAgICAgICAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wXCIgLz5cbiAgICAgICAgICA8L1JhZGl4U2VsZWN0LkNvbnRlbnQ+XG4gICAgICAgIDwvUmFkaXhTZWxlY3QuUG9ydGFsPlxuICAgICAgPC9Db21ib2JveFByb3ZpZGVyPlxuICAgIDwvUmFkaXhTZWxlY3QuUm9vdD5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZWxlY3QgZnJvbSAnQGFyaWFraXQvcmVhY3Qvc2VsZWN0JztcbmltcG9ydCB0eXBlIHsgT3B0aW9uIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5pbXBvcnQgJy4vRHJvcGRvd24uY3NzJztcblxuaW50ZXJmYWNlIERyb3Bkb3duUHJvcHMge1xuICB2YWx1ZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb3B0aW9uczogKHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KVtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemVDbGFzc2VzPzogc3RyaW5nO1xuICB0ZXN0SWQ/OiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGljb25Pbmx5PzogYm9vbGVhbjtcbiAgcmVuZGVyVmFsdWU/OiAob3B0aW9uOiBPcHRpb24pID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZztcbiAgcG9ydGFsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgaXNEaXZpZGVyID0gKGl0ZW06IHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KTogaXRlbSBpcyB7IGRpdmlkZXI6IHRydWUgfSA9PlxuICB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgJ2RpdmlkZXInIGluIGl0ZW07XG5cbmNvbnN0IGlzT3B0aW9uID0gKGl0ZW06IHN0cmluZyB8IE9wdGlvbiB8IHsgZGl2aWRlcjogdHJ1ZSB9KTogaXRlbSBpcyBPcHRpb24gPT5cbiAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICd2YWx1ZScgaW4gaXRlbSAmJiAnbGFiZWwnIGluIGl0ZW07XG5cbmNvbnN0IERyb3Bkb3duOiBSZWFjdC5GQzxEcm9wZG93blByb3BzPiA9ICh7XG4gIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICBsYWJlbCA9ICcnLFxuICBvbkNoYW5nZSxcbiAgb3B0aW9ucyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIHNpemVDbGFzc2VzLFxuICB0ZXN0SWQgPSAnZHJvcGRvd24tbWVudScsXG4gIGljb24sXG4gIGljb25Pbmx5ID0gZmFsc2UsXG4gIHJlbmRlclZhbHVlLFxuICBhcmlhTGFiZWwsXG4gICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgcG9ydGFsID0gdHJ1ZSxcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0UHJvcHMgPSBTZWxlY3QudXNlU2VsZWN0U3RvcmUoe1xuICAgIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICAgIHNldFZhbHVlOiBoYW5kbGVDaGFuZ2UsXG4gIH0pO1xuXG4gIGNvbnN0IGdldE9wdGlvbk9iamVjdCA9ICh2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IE9wdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gJycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zXG4gICAgICAuZmlsdGVyKChvKSA9PiAhaXNEaXZpZGVyKG8pKVxuICAgICAgLm1hcCgobykgPT4gKHR5cGVvZiBvID09PSAnc3RyaW5nJyA/IHsgdmFsdWU6IG8sIGxhYmVsOiBvIH0gOiBvKSlcbiAgICAgIC5maW5kKChvKSA9PiBpc09wdGlvbihvKSAmJiBvLnZhbHVlID09PSB2YWwpIGFzIE9wdGlvbiB8IHVuZGVmaW5lZDtcbiAgfTtcblxuICBjb25zdCBnZXRPcHRpb25MYWJlbCA9IChjdXJyZW50VmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmIChjdXJyZW50VmFsdWUgPT0gbnVsbCB8fCBjdXJyZW50VmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbiA9IGdldE9wdGlvbk9iamVjdChjdXJyZW50VmFsdWUpO1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubGFiZWwgOiBjdXJyZW50VmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlJywgY2xhc3NOYW1lKX0+XG4gICAgICA8U2VsZWN0LlNlbGVjdFxuICAgICAgICBzdG9yZT17c2VsZWN0UHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZvY3VzOnJpbmctb2Zmc2V0LXJpbmctb2Zmc2V0IHJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcHgtMyBweS0yIHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGZvY3VzOnJpbmctcmluZy1wcmltYXJ5JyxcbiAgICAgICAgICBpY29uT25seSA/ICdoLWZ1bGwgdy0xMCcgOiAndy1maXQgZ2FwLTInLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9e3Rlc3RJZH1cbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2FyaWFMYWJlbGxlZEJ5fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICAgIHshaWNvbk9ubHkgJiYgKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2sgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uID0gZ2V0T3B0aW9uT2JqZWN0KHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkT3B0aW9uICYmIHJlbmRlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyVmFsdWUobWF0Y2hlZE9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRPcHRpb25MYWJlbChzZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeyFpY29uT25seSAmJiA8U2VsZWN0LlNlbGVjdEFycm93IC8+fVxuICAgICAgPC9TZWxlY3QuU2VsZWN0PlxuICAgICAgPFNlbGVjdC5TZWxlY3RQb3BvdmVyXG4gICAgICAgIHBvcnRhbD17cG9ydGFsfVxuICAgICAgICBzdG9yZT17c2VsZWN0UHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3BvcG92ZXItdWknLFxuICAgICAgICAgIHNpemVDbGFzc2VzLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAnbWF4LWgtWzgwdmhdIG92ZXJmbG93LXktYXV0bycsXG4gICAgICAgICAgJ1twb2ludGVyLWV2ZW50czphdXRvXScsIC8vIE92ZXJyaWRlIGJvZHkncyBwb2ludGVyLWV2ZW50czpub25lIHdoZW4gaW4gbW9kYWxcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge29wdGlvbnMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChpc0RpdmlkZXIoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17YGRpdmlkZXItJHtpbmRleH1gfSBjbGFzc05hbWU9XCJteS0xIGJvcmRlci10IGJvcmRlci1ib3JkZXItaGVhdnlcIiAvPjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBvcHRpb24gPSB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IHZhbHVlOiBpdGVtLCBsYWJlbDogaXRlbSB9IDogaXRlbTtcbiAgICAgICAgICBpZiAoIWlzT3B0aW9uKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U2VsZWN0LlNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgdmFsdWU9e1N0cmluZyhvcHRpb24udmFsdWUpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWxlY3QtaXRlbVwiXG4gICAgICAgICAgICAgIGRhdGEtdGhlbWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICB7b3B0aW9uLmljb24gIT0gbnVsbCAmJiA8c3Bhbj57b3B0aW9uLmljb24gYXMgUmVhY3QuUmVhY3ROb2RlfTwvc3Bhbj59XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2sgdHJ1bmNhdGVcIj57b3B0aW9uLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLWF1dG8gcGwtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uLW1kIGJsb2NrIGdyb3VwLWhvdmVyOmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyWk0xNi4wNzU1IDcuOTMyMTlDMTYuNTI3MiA4LjI1MDAzIDE2LjYzNTYgOC44NzM4MyAxNi4zMTc4IDkuMzI1NDlMMTEuNTY3OCAxNi4wNzU1QzExLjM5MzEgMTYuMzIzNyAxMS4xMTUyIDE2LjQ3OTIgMTAuODEyMyAxNi40OTgxQzEwLjUwOTMgMTYuNTE3IDEwLjIxNDIgMTYuMzk3MyAxMC4wMTAxIDE2LjE3MjdMNy41MTAwNiAxMy40MjI3QzcuMTM4NTUgMTMuMDE0IDcuMTY4NjcgMTIuMzgxNiA3LjU3NzMzIDEyLjAxMDFDNy45ODU5OCAxMS42Mzg2IDguNjE4NDMgMTEuNjY4NyA4Ljk4OTk0IDEyLjA3NzNMMTAuNjUwNCAxMy45MDM5TDE0LjY4MjIgOC4xNzQ1MUMxNSA3LjcyMjg0IDE1LjYyMzggNy42MTQzNiAxNi4wNzU1IDcuOTMyMTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9TZWxlY3QuU2VsZWN0SXRlbT5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvU2VsZWN0LlNlbGVjdFBvcG92ZXI+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bjtcbiIsImltcG9ydCB7IHVzZVNwcmluZ3MsIGFuaW1hdGVkLCBTcHJpbmdDb25maWcgfSBmcm9tICdAcmVhY3Qtc3ByaW5nL3dlYic7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmludGVyZmFjZSBTZWdtZW50ZXJPcHRpb25zIHtcbiAgZ3JhbnVsYXJpdHk/OiAnZ3JhcGhlbWUnIHwgJ3dvcmQnIHwgJ3NlbnRlbmNlJztcbiAgbG9jYWxlTWF0Y2hlcj86ICdsb29rdXAnIHwgJ2Jlc3QgZml0Jztcbn1cblxuaW50ZXJmYWNlIFNlZ21lbnREYXRhIHtcbiAgc2VnbWVudDogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBpbnB1dDogc3RyaW5nO1xuICBpc1dvcmRMaWtlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFNlZ21lbnRzIHtcbiAgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxTZWdtZW50RGF0YT47XG59XG5cbmludGVyZmFjZSBJbnRsU2VnbWVudGVyIHtcbiAgc2VnbWVudChpbnB1dDogc3RyaW5nKTogU2VnbWVudHM7XG59XG5cbmludGVyZmFjZSBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3Ige1xuICBuZXcgKGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IFNlZ21lbnRlck9wdGlvbnMpOiBJbnRsU2VnbWVudGVyO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBJbnRsIHtcbiAgICBTZWdtZW50ZXI6IEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvcjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgU3BsaXRUZXh0UHJvcHMge1xuICB0ZXh0Pzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRlbGF5PzogbnVtYmVyO1xuICBhbmltYXRpb25Gcm9tPzogeyBvcGFjaXR5OiBudW1iZXI7IHRyYW5zZm9ybTogc3RyaW5nIH07XG4gIGFuaW1hdGlvblRvPzogeyBvcGFjaXR5OiBudW1iZXI7IHRyYW5zZm9ybTogc3RyaW5nIH07XG4gIGVhc2luZz86IFNwcmluZ0NvbmZpZ1snZWFzaW5nJ107XG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgcm9vdE1hcmdpbj86IHN0cmluZztcbiAgdGV4dEFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInIHwgJ2p1c3RpZnknIHwgJ3N0YXJ0JyB8ICdlbmQnO1xuICBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlPzogKCkgPT4gdm9pZDtcbiAgb25MaW5lQ291bnRDaGFuZ2U/OiAobGluZUNvdW50OiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHNwbGl0R3JhcGhlbWVzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcbiAgaWYgKHR5cGVvZiBJbnRsICE9PSAndW5kZWZpbmVkJyAmJiAnU2VnbWVudGVyJyBpbiBJbnRsKSB7XG4gICAgY29uc3Qgc2VnbWVudGVyID0gbmV3IChJbnRsIGFzIHR5cGVvZiBJbnRsICYgeyBTZWdtZW50ZXI6IEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvciB9KS5TZWdtZW50ZXIoXG4gICAgICAnZW4nLFxuICAgICAgeyBncmFudWxhcml0eTogJ2dyYXBoZW1lJyB9LFxuICAgICk7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudCh0ZXh0KTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShzZWdtZW50cykubWFwKChzOiBTZWdtZW50RGF0YSkgPT4gcy5zZWdtZW50KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gWy4uLnRleHRdO1xuICB9XG59O1xuXG5jb25zdCBTcGxpdFRleHQ6IFJlYWN0LkZDPFNwbGl0VGV4dFByb3BzPiA9ICh7XG4gIHRleHQgPSAnJyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIGRlbGF5ID0gMTAwLFxuICBhbmltYXRpb25Gcm9tID0geyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLDQwcHgsMCknIH0sXG4gIGFuaW1hdGlvblRvID0geyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLDAsMCknIH0sXG4gIGVhc2luZyA9ICh0OiBudW1iZXIpID0+IHQsXG4gIHRocmVzaG9sZCA9IDAuMSxcbiAgcm9vdE1hcmdpbiA9ICctMTAwcHgnLFxuICB0ZXh0QWxpZ24gPSAnY2VudGVyJyxcbiAgb25MZXR0ZXJBbmltYXRpb25Db21wbGV0ZSxcbiAgb25MaW5lQ291bnRDaGFuZ2UsXG59KSA9PiB7XG4gIGNvbnN0IHdvcmRzID0gdGV4dC5zcGxpdCgnICcpLm1hcChzcGxpdEdyYXBoZW1lcyk7XG4gIGNvbnN0IGxldHRlcnMgPSB3b3Jkcy5mbGF0KCk7XG4gIGNvbnN0IFtpblZpZXcsIHNldEluVmlld10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MUGFyYWdyYXBoRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGFuaW1hdGVkQ291bnQgPSB1c2VSZWYoMCk7XG5cbiAgY29uc3QgW3NwcmluZ3NdID0gdXNlU3ByaW5ncyhcbiAgICBsZXR0ZXJzLmxlbmd0aCxcbiAgICAoaSkgPT4gKHtcbiAgICAgIGZyb206IGFuaW1hdGlvbkZyb20sXG4gICAgICB0bzogaW5WaWV3XG4gICAgICAgID8gYXN5bmMgKG5leHQpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IG5leHQoYW5pbWF0aW9uVG8pO1xuICAgICAgICAgICAgYW5pbWF0ZWRDb3VudC5jdXJyZW50ICs9IDE7XG4gICAgICAgICAgICBpZiAoYW5pbWF0ZWRDb3VudC5jdXJyZW50ID09PSBsZXR0ZXJzLmxlbmd0aCAmJiBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlKSB7XG4gICAgICAgICAgICAgIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDogYW5pbWF0aW9uRnJvbSxcbiAgICAgIGRlbGF5OiBpICogZGVsYXksXG4gICAgICBjb25maWc6IHsgZWFzaW5nIH0sXG4gICAgfSksXG4gICAgW2luVmlldywgdGV4dCwgZGVsYXksIGFuaW1hdGlvbkZyb20sIGFuaW1hdGlvblRvLCBlYXNpbmcsIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzZXRJblZpZXcodHJ1ZSk7XG4gICAgICAgICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBvYnNlcnZlci51bm9ic2VydmUocmVmLmN1cnJlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkLCByb290TWFyZ2luIH0sXG4gICAgKTtcblxuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW3RocmVzaG9sZCwgcm9vdE1hcmdpbl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50ICYmIGluVmlldykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHJlZi5jdXJyZW50O1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPVxuICAgICAgICAgIHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkubGluZUhlaWdodCkgfHxcbiAgICAgICAgICBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmZvbnRTaXplKSAqIDEuMjtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gTWF0aC5yb3VuZChoZWlnaHQgLyBsaW5lSGVpZ2h0KTtcblxuICAgICAgICBpZiAob25MaW5lQ291bnRDaGFuZ2UpIHtcbiAgICAgICAgICBvbkxpbmVDb3VudENoYW5nZShsaW5lcyk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9LCBbaW5WaWV3LCB0ZXh0LCBvbkxpbmVDb3VudENoYW5nZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj57dGV4dH08L3NwYW4+XG4gICAgICA8cFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgc3BsaXQtcGFyZW50IGlubGluZSBvdmVyZmxvdy1oaWRkZW4gJHtjbGFzc05hbWV9YH1cbiAgICAgICAgc3R5bGU9e3sgdGV4dEFsaWduLCB3aGl0ZVNwYWNlOiAnbm9ybWFsJywgd29yZFdyYXA6ICdicmVhay13b3JkJyB9fVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICB7d29yZHMubWFwKCh3b3JkLCB3b3JkSW5kZXgpID0+IChcbiAgICAgICAgICA8c3BhbiBrZXk9e3dvcmRJbmRleH0gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZS1ibG9jaycsIHdoaXRlU3BhY2U6ICdub3dyYXAnIH19PlxuICAgICAgICAgICAge3dvcmQubWFwKChsZXR0ZXIsIGxldHRlckluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID1cbiAgICAgICAgICAgICAgICB3b3Jkcy5zbGljZSgwLCB3b3JkSW5kZXgpLnJlZHVjZSgoYWNjLCB3KSA9PiBhY2MgKyB3Lmxlbmd0aCwgMCkgKyBsZXR0ZXJJbmRleDtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxhbmltYXRlZC5zcGFuXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3NwcmluZ3NbaW5kZXhdfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIHRyYW5zZm9ybSB0cmFuc2l0aW9uLW9wYWNpdHkgd2lsbC1jaGFuZ2UtdHJhbnNmb3JtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7bGV0dGVyfVxuICAgICAgICAgICAgICAgIDwvYW5pbWF0ZWQuc3Bhbj5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAge3dvcmRJbmRleCA8IHdvcmRzLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgd2lkdGg6ICcwLjNlbScgfX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICkpfVxuICAgICAgPC9wPlxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3BsaXRUZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQ29udHJvbGxlclJlbmRlclByb3BzLCBGaWVsZFZhbHVlcywgRmllbGRQYXRoIH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi9MYWJlbCc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJy4vSW5wdXQnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9ybUlucHV0PFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4+KHtcbiAgZmllbGQsXG4gIGxhYmVsLFxuICBsYWJlbENsYXNzLFxuICBpbnB1dENsYXNzLFxuICBjb250YWluZXJDbGFzcyxcbiAgbGFiZWxBZGphY2VudCxcbiAgcGxhY2Vob2xkZXIgPSAnJyxcbiAgdHlwZSA9ICdzdHJpbmcnLFxufToge1xuICBmaWVsZDogQ29udHJvbGxlclJlbmRlclByb3BzPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICBsYWJlbDogc3RyaW5nO1xuICBsYWJlbENsYXNzPzogc3RyaW5nO1xuICBpbnB1dENsYXNzPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG4gIHR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInO1xuICBsYWJlbEFkamFjZW50PzogUmVhY3QuUmVhY3ROb2RlO1xufSkge1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuXG4gICAgaWYgKHR5cGUgIT09ICdudW1iZXInKSB7XG4gICAgICBmaWVsZC5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgZmllbGQub25DaGFuZ2UodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICBmaWVsZC5vbkNoYW5nZShOdW1iZXIodmFsdWUpKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMicsIGNvbnRhaW5lckNsYXNzKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGdhcC0yXCI+XG4gICAgICAgIDxMYWJlbFxuICAgICAgICAgIGh0bWxGb3I9e2Ake2ZpZWxkLm5hbWV9LWlucHV0YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtdGV4dC1wcmltYXJ5JywgbGFiZWxDbGFzcyl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIHtsYWJlbEFkamFjZW50fVxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRcbiAgICAgICAgaWQ9e2Ake2ZpZWxkLm5hbWV9LWlucHV0YH1cbiAgICAgICAgdmFsdWU9e2ZpZWxkLnZhbHVlID8/ICcnfVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaC0xMCBtYXgtaC0xMCB3LWZ1bGwgcmVzaXplLW5vbmUgYm9yZGVyLW5vbmUgYmctc3VyZmFjZS1zZWNvbmRhcnkgcHgtMyBweS0yJyxcbiAgICAgICAgICBpbnB1dENsYXNzLFxuICAgICAgICApfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNsYXNzIFBpeGVsIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbiAgc3BlZWQ6IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICBzaXplU3RlcDogbnVtYmVyO1xuICBtaW5TaXplOiBudW1iZXI7XG4gIG1heFNpemVJbnRlZ2VyOiBudW1iZXI7XG4gIG1heFNpemU6IG51bWJlcjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgY291bnRlcjogbnVtYmVyO1xuICBjb3VudGVyU3RlcDogbnVtYmVyO1xuICBpc0lkbGU6IGJvb2xlYW47XG4gIGlzUmV2ZXJzZTogYm9vbGVhbjtcbiAgaXNTaGltbWVyOiBib29sZWFuO1xuICBhY3RpdmF0aW9uVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICBjb2xvcjogc3RyaW5nLFxuICAgIHNwZWVkOiBudW1iZXIsXG4gICAgZGVsYXk6IG51bWJlcixcbiAgICBhY3RpdmF0aW9uVGhyZXNob2xkOiBudW1iZXIsXG4gICkge1xuICAgIHRoaXMud2lkdGggPSBjYW52YXMud2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBjYW52YXMuaGVpZ2h0O1xuICAgIHRoaXMuY3R4ID0gY29udGV4dDtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgIHRoaXMuc3BlZWQgPSB0aGlzLnJhbmRvbSgwLjEsIDAuOSkgKiBzcGVlZDtcbiAgICB0aGlzLnNpemUgPSAwO1xuICAgIHRoaXMuc2l6ZVN0ZXAgPSBNYXRoLnJhbmRvbSgpICogMC40O1xuICAgIHRoaXMubWluU2l6ZSA9IDAuNTtcbiAgICB0aGlzLm1heFNpemVJbnRlZ2VyID0gMjtcbiAgICB0aGlzLm1heFNpemUgPSB0aGlzLnJhbmRvbSh0aGlzLm1pblNpemUsIHRoaXMubWF4U2l6ZUludGVnZXIpO1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheTtcbiAgICB0aGlzLmNvdW50ZXIgPSAwO1xuICAgIHRoaXMuY291bnRlclN0ZXAgPSBNYXRoLnJhbmRvbSgpICogNCArICh0aGlzLndpZHRoICsgdGhpcy5oZWlnaHQpICogMC4wMTtcbiAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNSZXZlcnNlID0gZmFsc2U7XG4gICAgdGhpcy5pc1NoaW1tZXIgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2YXRpb25UaHJlc2hvbGQgPSBhY3RpdmF0aW9uVGhyZXNob2xkO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5kb20obWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbjtcbiAgfVxuXG4gIHByaXZhdGUgZHJhdygpIHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLm1heFNpemVJbnRlZ2VyICogMC41IC0gdGhpcy5zaXplICogMC41O1xuICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9IHRoaXMuY29sb3I7XG4gICAgdGhpcy5jdHguZmlsbFJlY3QodGhpcy54ICsgb2Zmc2V0LCB0aGlzLnkgKyBvZmZzZXQsIHRoaXMuc2l6ZSwgdGhpcy5zaXplKTtcbiAgfVxuXG4gIGFwcGVhcigpIHtcbiAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvdW50ZXIgPD0gdGhpcy5kZWxheSkge1xuICAgICAgdGhpcy5jb3VudGVyICs9IHRoaXMuY291bnRlclN0ZXA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNpemUgPj0gdGhpcy5tYXhTaXplKSB7XG4gICAgICB0aGlzLmlzU2hpbW1lciA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2hpbW1lcikge1xuICAgICAgdGhpcy5zaGltbWVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLnNpemVTdGVwO1xuICAgIH1cbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIGFwcGVhcldpdGhQcm9ncmVzcyhwcm9ncmVzczogbnVtYmVyKSB7XG4gICAgY29uc3QgZGlmZiA9IHByb2dyZXNzIC0gdGhpcy5hY3RpdmF0aW9uVGhyZXNob2xkO1xuICAgIGlmIChkaWZmIDw9IDApIHtcbiAgICAgIHRoaXMuaXNJZGxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY291bnRlciA8PSB0aGlzLmRlbGF5KSB7XG4gICAgICB0aGlzLmNvdW50ZXIgKz0gdGhpcy5jb3VudGVyU3RlcDtcbiAgICAgIHRoaXMuaXNJZGxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNpemUgPj0gdGhpcy5tYXhTaXplKSB7XG4gICAgICB0aGlzLmlzU2hpbW1lciA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2hpbW1lcikge1xuICAgICAgdGhpcy5zaGltbWVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLnNpemVTdGVwO1xuICAgIH1cbiAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgIHRoaXMuZHJhdygpO1xuICB9XG5cbiAgZGlzYXBwZWFyKCkge1xuICAgIHRoaXMuaXNTaGltbWVyID0gZmFsc2U7XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICBpZiAodGhpcy5zaXplIDw9IDApIHtcbiAgICAgIHRoaXMuaXNJZGxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaXplIC09IDAuMTtcbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hpbW1lcigpIHtcbiAgICBpZiAodGhpcy5zaXplID49IHRoaXMubWF4U2l6ZSkge1xuICAgICAgdGhpcy5pc1JldmVyc2UgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaXplIDw9IHRoaXMubWluU2l6ZSkge1xuICAgICAgdGhpcy5pc1JldmVyc2UgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5zaXplICs9IHRoaXMuaXNSZXZlcnNlID8gLXRoaXMuc3BlZWQgOiB0aGlzLnNwZWVkO1xuICB9XG59XG5cbmNvbnN0IGdldEVmZmVjdGl2ZVNwZWVkID0gKHZhbHVlOiBudW1iZXIsIHJlZHVjZWRNb3Rpb246IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoU3RyaW5nKHZhbHVlKSwgMTApO1xuICBjb25zdCB0aHJvdHRsZSA9IDAuMDAxO1xuICBpZiAocGFyc2VkIDw9IDAgfHwgcmVkdWNlZE1vdGlvbikge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmIChwYXJzZWQgPj0gMTAwKSB7XG4gICAgcmV0dXJuIDEwMCAqIHRocm90dGxlO1xuICB9XG4gIHJldHVybiBwYXJzZWQgKiB0aHJvdHRsZTtcbn07XG5cbmNvbnN0IGNsYW1wID0gKG46IG51bWJlciwgbWluID0gMCwgbWF4ID0gMSkgPT4gTWF0aC5taW4oTWF0aC5tYXgobiwgbWluKSwgbWF4KTtcblxuY29uc3QgVkFSSUFOVFMgPSB7XG4gIGRlZmF1bHQ6IHsgZ2FwOiA1LCBzcGVlZDogMzUsIGNvbG9yczogJyNmOGZhZmMsI2YxZjVmOSwjY2JkNWUxJywgbm9Gb2N1czogZmFsc2UgfSxcbiAgYmx1ZTogeyBnYXA6IDEwLCBzcGVlZDogMjUsIGNvbG9yczogJyNlMGYyZmUsIzdkZDNmYywjMGVhNWU5Jywgbm9Gb2N1czogZmFsc2UgfSxcbiAgeWVsbG93OiB7IGdhcDogMywgc3BlZWQ6IDIwLCBjb2xvcnM6ICcjZmVmMDhhLCNmZGUwNDcsI2VhYjMwOCcsIG5vRm9jdXM6IGZhbHNlIH0sXG4gIHBpbms6IHsgZ2FwOiA2LCBzcGVlZDogODAsIGNvbG9yczogJyNmZWNkZDMsI2ZkYTRhZiwjZTExZDQ4Jywgbm9Gb2N1czogdHJ1ZSB9LFxufSBhcyBjb25zdDtcblxuaW50ZXJmYWNlIFBpeGVsQ2FyZFByb3BzIHtcbiAgdmFyaWFudD86IGtleW9mIHR5cGVvZiBWQVJJQU5UUztcbiAgZ2FwPzogbnVtYmVyO1xuICBzcGVlZD86IG51bWJlcjtcbiAgY29sb3JzPzogc3RyaW5nO1xuICBub0ZvY3VzPzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBwcm9ncmVzcz86IG51bWJlcjtcbiAgcmFuZG9tbmVzcz86IG51bWJlcjtcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGl4ZWxDYXJkKHtcbiAgdmFyaWFudCA9ICdkZWZhdWx0JyxcbiAgZ2FwLFxuICBzcGVlZCxcbiAgY29sb3JzLFxuICBub0ZvY3VzLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgcHJvZ3Jlc3MsXG4gIHJhbmRvbW5lc3MgPSAwLjMsXG4gIHdpZHRoLFxuICBoZWlnaHQsXG59OiBQaXhlbENhcmRQcm9wcykge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBjYW52YXNSZWYgPSB1c2VSZWY8SFRNTENhbnZhc0VsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBwaXhlbHNSZWYgPSB1c2VSZWY8UGl4ZWxbXT4oW10pO1xuICBjb25zdCBhbmltYXRpb25SZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCB0aW1lUHJldlJlZiA9IHVzZVJlZihwZXJmb3JtYW5jZS5ub3coKSk7XG4gIGNvbnN0IHByb2dyZXNzUmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4ocHJvZ3Jlc3MpO1xuICBjb25zdCByZWR1Y2VkTW90aW9uID0gdXNlUmVmKFxuICAgIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXMsXG4gICkuY3VycmVudDtcblxuICBjb25zdCBjZmcgPSBWQVJJQU5UU1t2YXJpYW50XTtcbiAgY29uc3QgZyA9IGdhcCA/PyBjZmcuZ2FwO1xuICBjb25zdCBzID0gc3BlZWQgPz8gY2ZnLnNwZWVkO1xuICBjb25zdCBwYWxldHRlID0gY29sb3JzID8/IGNmZy5jb2xvcnM7XG4gIGNvbnN0IGRpc2FibGVGb2N1cyA9IG5vRm9jdXMgPz8gY2ZnLm5vRm9jdXM7XG5cbiAgY29uc3QgdXBkYXRlQ2FudmFzT3BhY2l0eSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWNhbnZhc1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhbnZhc1JlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZhZGVTdGFydCA9IDAuOTtcbiAgICBjb25zdCBhbHBoYSA9XG4gICAgICBwcm9ncmVzc1JlZi5jdXJyZW50ID49IGZhZGVTdGFydCA/IDEgLSAocHJvZ3Jlc3NSZWYuY3VycmVudCAtIGZhZGVTdGFydCkgLyAwLjEgOiAxO1xuICAgIGNhbnZhc1JlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSBTdHJpbmcoY2xhbXAoYWxwaGEpKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGFuaW1hdGUgPSB1c2VDYWxsYmFjayhcbiAgICAobWV0aG9kOiBrZXlvZiBQaXhlbCkgPT4ge1xuICAgICAgYW5pbWF0aW9uUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gYW5pbWF0ZShtZXRob2QpKTtcblxuICAgICAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICBjb25zdCBlbGFwc2VkID0gbm93IC0gdGltZVByZXZSZWYuY3VycmVudDtcbiAgICAgIGlmIChlbGFwc2VkIDwgMTAwMCAvIDYwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRpbWVQcmV2UmVmLmN1cnJlbnQgPSBub3cgLSAoZWxhcHNlZCAlICgxMDAwIC8gNjApKTtcblxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzUmVmLmN1cnJlbnQ/LmdldENvbnRleHQoJzJkJyk7XG4gICAgICBpZiAoIWN0eCB8fCAhY2FudmFzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGNhbnZhc1JlZi5jdXJyZW50LndpZHRoLCBjYW52YXNSZWYuY3VycmVudC5oZWlnaHQpO1xuXG4gICAgICBsZXQgaWRsZSA9IHRydWU7XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgcGl4ZWxzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ2FwcGVhcldpdGhQcm9ncmVzcycpIHtcbiAgICAgICAgICBpZiAocHJvZ3Jlc3NSZWYuY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwLmFwcGVhcldpdGhQcm9ncmVzcyhwcm9ncmVzc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcC5pc0lkbGUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIGR5bmFtaWMgZGlzcGF0Y2hcbiAgICAgICAgICBwW21ldGhvZF0oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXAuaXNJZGxlKSB7XG4gICAgICAgICAgaWRsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZUNhbnZhc09wYWNpdHkoKTtcbiAgICAgIGlmIChpZGxlKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblJlZi5jdXJyZW50ISk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbdXBkYXRlQ2FudmFzT3BhY2l0eV0sXG4gICk7XG5cbiAgY29uc3Qgc3RhcnRBbmltID0gdXNlQ2FsbGJhY2soXG4gICAgKG06IGtleW9mIFBpeGVsKSA9PiB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25SZWYuY3VycmVudCEpO1xuICAgICAgYW5pbWF0aW9uUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gYW5pbWF0ZShtKSk7XG4gICAgfSxcbiAgICBbYW5pbWF0ZV0sXG4gICk7XG5cbiAgY29uc3QgaW5pdFBpeGVscyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFjYW52YXNSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGg6IGN3LCBoZWlnaHQ6IGNoIH0gPSBjb250YWluZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXNSZWYuY3VycmVudC5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNhbnZhc1JlZi5jdXJyZW50LndpZHRoID0gTWF0aC5mbG9vcihjdyk7XG4gICAgY2FudmFzUmVmLmN1cnJlbnQuaGVpZ2h0ID0gTWF0aC5mbG9vcihjaCk7XG5cbiAgICBjb25zdCBjb2xzID0gcGFsZXR0ZS5zcGxpdCgnLCcpO1xuICAgIGNvbnN0IHB4OiBQaXhlbFtdID0gW107XG5cbiAgICBjb25zdCBjeCA9IGN3IC8gMjtcbiAgICBjb25zdCBjeSA9IGNoIC8gMjtcbiAgICBjb25zdCBtYXhEaXN0ID0gTWF0aC5oeXBvdChjeCwgY3kpO1xuXG4gICAgZm9yIChsZXQgeCA9IDA7IHggPCBjdzsgeCArPSBnKSB7XG4gICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IGNoOyB5ICs9IGcpIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSBjb2xzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbHMubGVuZ3RoKV07XG4gICAgICAgIGNvbnN0IGRpc3ROb3JtID0gTWF0aC5oeXBvdCh4IC0gY3gsIHkgLSBjeSkgLyBtYXhEaXN0O1xuICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSBjbGFtcChkaXN0Tm9ybSAqICgxIC0gcmFuZG9tbmVzcykgKyBNYXRoLnJhbmRvbSgpICogcmFuZG9tbmVzcyk7XG4gICAgICAgIGNvbnN0IGRlbGF5ID0gcmVkdWNlZE1vdGlvbiA/IDAgOiBkaXN0Tm9ybSAqIG1heERpc3Q7XG4gICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcHgucHVzaChcbiAgICAgICAgICBuZXcgUGl4ZWwoXG4gICAgICAgICAgICBjYW52YXNSZWYuY3VycmVudCxcbiAgICAgICAgICAgIGN0eCxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICBnZXRFZmZlY3RpdmVTcGVlZChzLCByZWR1Y2VkTW90aW9uKSxcbiAgICAgICAgICAgIGRlbGF5LFxuICAgICAgICAgICAgdGhyZXNob2xkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHBpeGVsc1JlZi5jdXJyZW50ID0gcHg7XG5cbiAgICBpZiAocHJvZ3Jlc3NSZWYuY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdGFydEFuaW0oJ2FwcGVhcldpdGhQcm9ncmVzcycpO1xuICAgIH1cbiAgfSwgW2csIHBhbGV0dGUsIHMsIHJhbmRvbW5lc3MsIHJlZHVjZWRNb3Rpb24sIHN0YXJ0QW5pbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvZ3Jlc3NSZWYuY3VycmVudCA9IHByb2dyZXNzO1xuICAgIGlmIChwcm9ncmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdGFydEFuaW0oJ2FwcGVhcldpdGhQcm9ncmVzcycpO1xuICAgIH1cbiAgfSwgW3Byb2dyZXNzLCBzdGFydEFuaW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcm9ncmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25SZWYuY3VycmVudCEpO1xuICAgIH1cbiAgfSwgW3Byb2dyZXNzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbml0UGl4ZWxzKCk7XG4gICAgY29uc3Qgb2JzID0gbmV3IFJlc2l6ZU9ic2VydmVyKGluaXRQaXhlbHMpO1xuICAgIGlmIChjb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgb2JzLm9ic2VydmUoY29udGFpbmVyUmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2JzLmRpc2Nvbm5lY3QoKTtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblJlZi5jdXJyZW50ISk7XG4gICAgfTtcbiAgfSwgW2luaXRQaXhlbHNdKTtcblxuICBjb25zdCBob3ZlckluID0gKCkgPT4gcHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHN0YXJ0QW5pbSgnYXBwZWFyJyk7XG4gIGNvbnN0IGhvdmVyT3V0ID0gKCkgPT4gcHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHN0YXJ0QW5pbSgnZGlzYXBwZWFyJyk7XG4gIGNvbnN0IGZvY3VzSW46IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IChlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVGb2N1cyAmJlxuICAgICAgIWUuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpICYmXG4gICAgICBwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHN0YXJ0QW5pbSgnYXBwZWFyJyk7XG4gICAgfVxuICB9O1xuICBjb25zdCBmb2N1c091dDogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gKGUpID0+IHtcbiAgICBpZiAoXG4gICAgICAhZGlzYWJsZUZvY3VzICYmXG4gICAgICAhZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkgJiZcbiAgICAgIHByb2dyZXNzUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgc3RhcnRBbmltKCdkaXNhcHBlYXInKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHdpZHRoOiB3aWR0aCB8fCAnMTAwJScsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IHx8ICcxMDAlJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdyZWxhdGl2ZSBpc29sYXRlIGdyaWQgc2VsZWN0LW5vbmUgcGxhY2UtaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IHNoYWRvdy1tZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXQnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjogJ2N1YmljLWJlemllcigwLjUsIDEsIDAuODksIDEpJyxcbiAgICAgICAgfX1cbiAgICAgICAgb25Nb3VzZUVudGVyPXtob3ZlcklufVxuICAgICAgICBvbk1vdXNlTGVhdmU9e2hvdmVyT3V0fVxuICAgICAgICBvbkZvY3VzPXtkaXNhYmxlRm9jdXMgPyB1bmRlZmluZWQgOiBmb2N1c0lufVxuICAgICAgICBvbkJsdXI9e2Rpc2FibGVGb2N1cyA/IHVuZGVmaW5lZCA6IGZvY3VzT3V0fVxuICAgICAgICB0YWJJbmRleD17ZGlzYWJsZUZvY3VzID8gLTEgOiAwfVxuICAgICAgPlxuICAgICAgICA8Y2FudmFzXG4gICAgICAgICAgcmVmPXtjYW52YXNSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC0wIGJsb2NrXCJcbiAgICAgICAgICB3aWR0aD17d2lkdGggJiYgd2lkdGggIT09ICdhdXRvJyA/IHBhcnNlSW50KFN0cmluZyh3aWR0aCkpIDogdW5kZWZpbmVkfVxuICAgICAgICAgIGhlaWdodD17aGVpZ2h0ICYmIGhlaWdodCAhPT0gJ2F1dG8nID8gcGFyc2VJbnQoU3RyaW5nKGhlaWdodCkpIDogdW5kZWZpbmVkfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcblxudHlwZSBGaWxlVXBsb2FkUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25DbGljaz86ICgpID0+IHZvaWQ7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGhhbmRsZUZpbGVDaGFuZ2U6IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBGaWxlVXBsb2FkID0gZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBGaWxlVXBsb2FkUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgaGFuZGxlRmlsZUNoYW5nZSB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH0sXG4pO1xuXG5GaWxlVXBsb2FkLmRpc3BsYXlOYW1lID0gJ0ZpbGVVcGxvYWQnO1xuXG5leHBvcnQgZGVmYXVsdCBGaWxlVXBsb2FkO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEFycm93LFxuICBTZWxlY3RJdGVtLFxuICBTZWxlY3RJdGVtQ2hlY2ssXG4gIFNlbGVjdExhYmVsLFxuICBTZWxlY3RQb3BvdmVyLFxuICBTZWxlY3RQcm92aWRlcixcbn0gZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0ICcuL0FuaW1hdGVQb3BvdmVyLmNzcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIE11bHRpU2VsZWN0SXRlbTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgfCB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBUIH07XG5cbmZ1bmN0aW9uIGdldEl0ZW1WYWx1ZTxUIGV4dGVuZHMgc3RyaW5nPihpdGVtOiBNdWx0aVNlbGVjdEl0ZW08VD4pOiBUIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRJdGVtTGFiZWw8VCBleHRlbmRzIHN0cmluZz4oaXRlbTogTXVsdGlTZWxlY3RJdGVtPFQ+KTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtLmxhYmVsO1xufVxuXG5pbnRlcmZhY2UgTXVsdGlTZWxlY3RQcm9wczxUIGV4dGVuZHMgc3RyaW5nPiB7XG4gIGl0ZW1zOiBNdWx0aVNlbGVjdEl0ZW08VD5bXTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvblNlbGVjdGVkVmFsdWVzQ2hhbmdlPzogKHZhbHVlczogVFtdKSA9PiB2b2lkO1xuICByZW5kZXJTZWxlY3RlZFZhbHVlcz86IChcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgICBpdGVtcz86IE11bHRpU2VsZWN0SXRlbTxUPltdLFxuICApID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpdGVtQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBsYWJlbENsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RJY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICBwb3BvdmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RJdGVtc0NsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZXM6IFRbXTtcbiAgc2V0U2VsZWN0ZWRWYWx1ZXM6ICh2YWx1ZXM6IFRbXSkgPT4gdm9pZDtcbiAgcmVuZGVySXRlbUNvbnRlbnQ/OiAoXG4gICAgdmFsdWU6IFQsXG4gICAgZGVmYXVsdENvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuLFxuICApID0+IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFJlbmRlcjxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdmFsdWVzOiBUW10sXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxuICBpdGVtcz86IE11bHRpU2VsZWN0SXRlbTxUPltdLFxuKSB7XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyIHx8ICdTZWxlY3QuLi4nO1xuICB9XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gRmluZCB0aGUgaXRlbSB0byBnZXQgaXRzIGxhYmVsXG4gICAgaWYgKGl0ZW1zKSB7XG4gICAgICBjb25zdCBpdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gZ2V0SXRlbVZhbHVlKGl0ZW0pID09PSB2YWx1ZXNbMF0pO1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGdldEl0ZW1MYWJlbChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlc1swXTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWVzLmxlbmd0aH0gaXRlbXMgc2VsZWN0ZWRgO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNdWx0aVNlbGVjdDxUIGV4dGVuZHMgc3RyaW5nPih7XG4gIGl0ZW1zLFxuICBsYWJlbCxcbiAgcGxhY2Vob2xkZXIgPSAnU2VsZWN0Li4uJyxcbiAgb25TZWxlY3RlZFZhbHVlc0NoYW5nZSxcbiAgcmVuZGVyU2VsZWN0ZWRWYWx1ZXMgPSBkZWZhdWx0UmVuZGVyLFxuICBjbGFzc05hbWUsXG4gIHNlbGVjdEljb24sXG4gIGl0ZW1DbGFzc05hbWUsXG4gIGxhYmVsQ2xhc3NOYW1lLFxuICBzZWxlY3RDbGFzc05hbWUsXG4gIHBvcG92ZXJDbGFzc05hbWUsXG4gIHNlbGVjdEl0ZW1zQ2xhc3NOYW1lLFxuICBzZWxlY3RlZFZhbHVlcyA9IFtdLFxuICBzZXRTZWxlY3RlZFZhbHVlcyxcbiAgcmVuZGVySXRlbUNvbnRlbnQsXG59OiBNdWx0aVNlbGVjdFByb3BzPFQ+KSB7XG4gIGNvbnN0IHNlbGVjdFJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtpc1BvcG92ZXJPcGVuLCBzZXRJc1BvcG92ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9ICh2YWx1ZXM6IFRbXSkgPT4ge1xuICAgIHNldFNlbGVjdGVkVmFsdWVzKHZhbHVlcyk7XG4gICAgaWYgKG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UpIHtcbiAgICAgIG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UodmFsdWVzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgIDxTZWxlY3RQcm92aWRlclxuICAgICAgICB2YWx1ZT17c2VsZWN0ZWRWYWx1ZXN9XG4gICAgICAgIHNldFZhbHVlPXtoYW5kbGVWYWx1ZUNoYW5nZX1cbiAgICAgICAgb3Blbj17aXNQb3BvdmVyT3Blbn1cbiAgICAgICAgc2V0T3Blbj17c2V0SXNQb3BvdmVyT3Blbn1cbiAgICAgID5cbiAgICAgICAge2xhYmVsICYmIChcbiAgICAgICAgICA8U2VsZWN0TGFiZWwgY2xhc3NOYW1lPXtjbignbWItMSBibG9jayB0ZXh0LXNtIHRleHQtdGV4dC1wcmltYXJ5JywgbGFiZWxDbGFzc05hbWUpfT5cbiAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICA8L1NlbGVjdExhYmVsPlxuICAgICAgICApfVxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgcmVmPXtzZWxlY3RSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgcm91bmRlZC14bCBweC0zIHB5LTIgdGV4dC1zbScsXG4gICAgICAgICAgICAnYmctc3VyZmFjZS10ZXJ0aWFyeSB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctc20gaG92ZXI6Y3Vyc29yLXBvaW50ZXIgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlcicsXG4gICAgICAgICAgICAnb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy13aGl0ZScsXG4gICAgICAgICAgICBzZWxlY3RDbGFzc05hbWUsXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAwICYmIHNlbGVjdEl0ZW1zQ2xhc3NOYW1lICE9IG51bGwgJiYgc2VsZWN0SXRlbXNDbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgID5cbiAgICAgICAgICB7c2VsZWN0SWNvbiAmJiA8c3Bhbj57c2VsZWN0SWNvbiBhcyBSZWFjdC5KU1guRWxlbWVudH08L3NwYW4+fVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1yLWF1dG8gaGlkZGVuIHRydW5jYXRlIG1kOmJsb2NrXCI+XG4gICAgICAgICAgICB7cmVuZGVyU2VsZWN0ZWRWYWx1ZXMoc2VsZWN0ZWRWYWx1ZXMsIHBsYWNlaG9sZGVyLCBpdGVtcyl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxTZWxlY3RBcnJvd1xuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ21sLTEgaGlkZGVuIHN0cm9rZS0xIHRleHQtYmFzZSBvcGFjaXR5LTc1IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBtZDpibG9jaycsXG4gICAgICAgICAgICAgIGlzUG9wb3Zlck9wZW4gJiYgJ3JvdGF0ZS0xODAnLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAgPFNlbGVjdFBvcG92ZXJcbiAgICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgICAgc2FtZVdpZHRoXG4gICAgICAgICAgbW9kYWxcbiAgICAgICAgICB1bm1vdW50T25IaWRlXG4gICAgICAgICAgZmluYWxGb2N1cz17c2VsZWN0UmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnYW5pbWF0ZS1wb3BvdmVyIHotNTAgZmxleCBtYXgtaC1bMzAwcHhdJyxcbiAgICAgICAgICAgICdmbGV4LWNvbCBvdmVyZmxvdy1hdXRvIG92ZXJzY3JvbGwtY29udGFpbiByb3VuZGVkLXhsJyxcbiAgICAgICAgICAgICdiZy1zdXJmYWNlLXNlY29uZGFyeSBweC0xLjUgcHktMSB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbGcnLFxuICAgICAgICAgICAgJ2JvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0JyxcbiAgICAgICAgICAgICdvdXRsaW5lLW5vbmUnLFxuICAgICAgICAgICAgcG9wb3ZlckNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRJdGVtVmFsdWUoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IGdldEl0ZW1MYWJlbChpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb250ZW50ID0gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtQ2hlY2sgY2xhc3NOYW1lPVwibXItMC41IHRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidHJ1bmNhdGVcIj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRJdGVtU2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbVxuICAgICAgICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1sZyBweC0yIHB5LTEuNSBob3ZlcjpjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAnc2Nyb2xsLW0tMSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgJ2hvdmVyOmJnLWJsYWNrL1swLjA3NV0gZGFyazpob3ZlcjpiZy13aGl0ZS8xMCcsXG4gICAgICAgICAgICAgICAgICAnZGF0YS1bYWN0aXZlLWl0ZW1dOmJnLWJsYWNrL1swLjA3NV0gZGFyazpkYXRhLVthY3RpdmUtaXRlbV06Ymctd2hpdGUvMTAnLFxuICAgICAgICAgICAgICAgICAgJ3ctZnVsbCBtaW4tdy0wIHRleHQtc20nLFxuICAgICAgICAgICAgICAgICAgaXRlbUNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3JlbmRlckl0ZW1Db250ZW50XG4gICAgICAgICAgICAgICAgICA/IChyZW5kZXJJdGVtQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICBpc0N1cnJlbnRJdGVtU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICkgYXMgUmVhY3QuSlNYLkVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICA6IChkZWZhdWx0Q29udGVudCBhcyBSZWFjdC5KU1guRWxlbWVudCl9XG4gICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvU2VsZWN0UG9wb3Zlcj5cbiAgICAgIDwvU2VsZWN0UHJvdmlkZXI+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgdHlwZSAqIGFzIHQgZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmltcG9ydCAnLi9Ecm9wZG93bi5jc3MnO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25Qcm9wcyB7XG4gIGtleVByZWZpeD86IHN0cmluZztcbiAgdHJpZ2dlcjogUmVhY3QuUmVhY3ROb2RlO1xuICBpdGVtczogdC5NZW51SXRlbVByb3BzW107XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgc2V0SXNPcGVuOiAoaXNPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGljb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIGl0ZW1DbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNhbWVXaWR0aD86IGJvb2xlYW47XG4gIGFuY2hvcj86IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfTtcbiAgZ3V0dGVyPzogbnVtYmVyO1xuICBtb2RhbD86IGJvb2xlYW47XG4gIHBvcnRhbD86IGJvb2xlYW47XG4gIHByZXNlcnZlVGFiT3JkZXI/OiBib29sZWFuO1xuICBmb2N1c0xvb3A/OiBib29sZWFuO1xuICBtZW51SWQ6IHN0cmluZztcbiAgbW91bnRCeVN0YXRlPzogYm9vbGVhbjtcbiAgdW5tb3VudE9uSGlkZT86IGJvb2xlYW47XG4gIGZpbmFsRm9jdXM/OiBSZWFjdC5SZWZPYmplY3Q8SFRNTEVsZW1lbnQ+O1xufVxuXG50eXBlIE1lbnVQcm9wcyA9IE9taXQ8XG4gIERyb3Bkb3duUHJvcHMsXG4gICd0cmlnZ2VyJyB8ICdpc09wZW4nIHwgJ3NldElzT3BlbicgfCAnZm9jdXNMb29wJyB8ICdtb3VudEJ5U3RhdGUnXG4+ICZcbiAgQXJpYWtpdC5NZW51UHJvcHM7XG5cbmNvbnN0IERyb3Bkb3duUG9wdXA6IFJlYWN0LkZDPERyb3Bkb3duUHJvcHM+ID0gKHtcbiAgdHJpZ2dlcixcbiAgaXNPcGVuLFxuICBzZXRJc09wZW4sXG4gIGZvY3VzTG9vcCxcbiAgbW91bnRCeVN0YXRlLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBtZW51ID0gQXJpYWtpdC51c2VNZW51U3RvcmUoeyBvcGVuOiBpc09wZW4sIHNldE9wZW46IHNldElzT3BlbiwgZm9jdXNMb29wIH0pO1xuICBpZiAobW91bnRCeVN0YXRlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxBcmlha2l0Lk1lbnVQcm92aWRlciBzdG9yZT17bWVudX0+XG4gICAgICAgIHt0cmlnZ2VyfVxuICAgICAgICB7aXNPcGVuICYmIDxNZW51IHsuLi5wcm9wc30gLz59XG4gICAgICA8L0FyaWFraXQuTWVudVByb3ZpZGVyPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8QXJpYWtpdC5NZW51UHJvdmlkZXIgc3RvcmU9e21lbnV9PlxuICAgICAge3RyaWdnZXJ9XG4gICAgICA8TWVudSB7Li4ucHJvcHN9IC8+XG4gICAgPC9Bcmlha2l0Lk1lbnVQcm92aWRlcj5cbiAgKTtcbn07XG5cbmNvbnN0IE1lbnU6IFJlYWN0LkZDPE1lbnVQcm9wcz4gPSAoe1xuICBpdGVtcyxcbiAgbWVudUlkLFxuICBrZXlQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgaWNvbkNsYXNzTmFtZSxcbiAgaXRlbUNsYXNzTmFtZSxcbiAgbW9kYWwsXG4gIHBvcnRhbCxcbiAgc2FtZVdpZHRoLFxuICBndXR0ZXIgPSA4LFxuICBmaW5hbEZvY3VzLFxuICB1bm1vdW50T25IaWRlLFxuICBwcmVzZXJ2ZVRhYk9yZGVyLFxuICAuLi5wcm9wc1xufSkgPT4ge1xuICBjb25zdCBtZW51U3RvcmUgPSBBcmlha2l0LnVzZU1lbnVTdG9yZSgpO1xuICBjb25zdCBtZW51ID0gQXJpYWtpdC51c2VNZW51Q29udGV4dCgpO1xuICByZXR1cm4gKFxuICAgIDxBcmlha2l0Lk1lbnVcbiAgICAgIGlkPXttZW51SWR9XG4gICAgICBtb2RhbD17bW9kYWx9XG4gICAgICBndXR0ZXI9e2d1dHRlcn1cbiAgICAgIHBvcnRhbD17cG9ydGFsfVxuICAgICAgc2FtZVdpZHRoPXtzYW1lV2lkdGh9XG4gICAgICBmaW5hbEZvY3VzPXtmaW5hbEZvY3VzfVxuICAgICAgdW5tb3VudE9uSGlkZT17dW5tb3VudE9uSGlkZX1cbiAgICAgIHByZXNlcnZlVGFiT3JkZXI9e3ByZXNlcnZlVGFiT3JkZXJ9XG4gICAgICBjbGFzc05hbWU9e2NuKCdwb3BvdmVyLXVpIHotNTAnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtpdGVtc1xuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNob3cgIT09IGZhbHNlKVxuICAgICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc3ViSXRlbXMgfSA9IGl0ZW07XG4gICAgICAgICAgaWYgKGl0ZW0uc2VwYXJhdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiA8QXJpYWtpdC5NZW51U2VwYXJhdG9yIGtleT17aW5kZXh9IGNsYXNzTmFtZT1cIm15LTEgaC1weCBib3JkZXItYm9yZGVyLW1lZGl1bVwiIC8+O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3ViSXRlbXMgJiYgc3ViSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEFyaWFraXQuTWVudVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgc3RvcmU9e21lbnVTdG9yZX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2tleVByZWZpeCA/PyAnJ30ke2luZGV4fS0ke2l0ZW0uaWQgPz8gJyd9LXByb3ZpZGVyYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxBcmlha2l0Lk1lbnVCdXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICdncm91cCBmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHJvdW5kZWQtbGcgcHgtMyBweS0zLjUgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeSBvdXRsaW5lLW5vbmUgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBmb2N1czpiZy1zdXJmYWNlLWhvdmVyIG1kOnB4LTIuNSBtZDpweS0yJyxcbiAgICAgICAgICAgICAgICAgICAgaXRlbUNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIGlkPXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgcmVuZGVyPXtpdGVtLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgIHJlZj17aXRlbS5yZWZ9XG4gICAgICAgICAgICAgICAgICAvLyBoaWRlT25DbGljaz17aXRlbS5oaWRlT25DbGlja31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5pY29uICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oJ21yLTIgc2l6ZS00JywgaWNvbkNsYXNzTmFtZSl9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPEFyaWFraXQuTWVudUJ1dHRvbkFycm93IGNsYXNzTmFtZT1cInN0cm9rZS0xIHRleHQtYmFzZSBvcGFjaXR5LTc1XCIgLz5cbiAgICAgICAgICAgICAgICA8L0FyaWFraXQuTWVudUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgaXRlbXM9e3N1Ykl0ZW1zfVxuICAgICAgICAgICAgICAgICAgbWVudUlkPXtgJHttZW51SWR9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgIGtleT17YCR7a2V5UHJlZml4ID8/ICcnfSR7aW5kZXh9LSR7aXRlbS5pZCA/PyAnJ31gfVxuICAgICAgICAgICAgICAgICAgZ3V0dGVyPXsxMn1cbiAgICAgICAgICAgICAgICAgIHBvcnRhbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0FyaWFraXQuTWVudVByb3ZpZGVyPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFyaWFraXQuTWVudUl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHtrZXlQcmVmaXggPz8gJyd9JHtpbmRleH0tJHtpdGVtLmlkID8/ICcnfWB9XG4gICAgICAgICAgICAgIGlkPXtpdGVtLmlkfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdncm91cCBmbGV4IHctZnVsbCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1sZyBweC0zIHB5LTMuNSB0ZXh0LXNtIHRleHQtdGV4dC1wcmltYXJ5IG91dGxpbmUtbm9uZSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGZvY3VzOmJnLXN1cmZhY2UtaG92ZXIgbWQ6cHgtMi41IG1kOnB5LTInLFxuICAgICAgICAgICAgICAgIGl0ZW1DbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpdGVtLmRpc2FibGVkfVxuICAgICAgICAgICAgICByZW5kZXI9e2l0ZW0ucmVuZGVyfVxuICAgICAgICAgICAgICByZWY9e2l0ZW0ucmVmfVxuICAgICAgICAgICAgICBoaWRlT25DbGljaz17aXRlbS5oaWRlT25DbGlja31cbiAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD17aXRlbS5hcmlhSGFzUG9wdXB9XG4gICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9e2l0ZW0uYXJpYUNvbnRyb2xzfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0ub25DbGljayhldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmhpZGVPbkNsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZW51Py5oaWRlKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpdGVtLmljb24gIT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbignbXItMiBzaXplLTQnLCBpY29uQ2xhc3NOYW1lKX0gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICB7aXRlbS5pY29ufVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2l0ZW0ubGFiZWx9XG4gICAgICAgICAgICAgIHtpdGVtLmtiZCAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cIm1sLWF1dG8gaGlkZGVuIGZvbnQtc2FucyB0ZXh0LXhzIHRleHQtYmxhY2svNTAgZ3JvdXAtaG92ZXI6aW5saW5lIGdyb3VwLWZvY3VzOmlubGluZSBkYXJrOnRleHQtd2hpdGUvNTBcIj5cbiAgICAgICAgICAgICAgICAgIOKMmHtpdGVtLmtiZH1cbiAgICAgICAgICAgICAgICA8L2tiZD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXJpYWtpdC5NZW51SXRlbT5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICA8L0FyaWFraXQuTWVudT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUG9wdXA7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGVsYXllZFJlbmRlciB9IGZyb20gJ34vaG9va3MnO1xuXG5pbnRlcmZhY2UgRGVsYXllZFJlbmRlclByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuY29uc3QgRGVsYXllZFJlbmRlciA9ICh7IGRlbGF5LCBjaGlsZHJlbiB9OiBEZWxheWVkUmVuZGVyUHJvcHMpID0+XG4gIHVzZURlbGF5ZWRSZW5kZXIoZGVsYXkpKCgpID0+IGNoaWxkcmVuKTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsYXllZFJlbmRlcjtcbiIsImltcG9ydCB7IElUaGVtZVJHQiwgSVRoZW1lVmFyaWFibGVzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBSR0Igc3RyaW5nIGZvcm1hdCAoZS5nLiwgXCIyNTUgMjU1IDI1NVwiKVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVJHQihyZ2I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXJnYikgcmV0dXJuIHRydWU7XG4gIGNvbnN0IHJnYlJlZ2V4ID0gL14oXFxkezEsM30pXFxzKyhcXGR7MSwzfSlcXHMrKFxcZHsxLDN9KSQvO1xuICBjb25zdCBtYXRjaCA9IHJnYi5tYXRjaChyZ2JSZWdleCk7XG5cbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIENoZWNrIHRoYXQgZWFjaCB2YWx1ZSBpcyBiZXR3ZWVuIDAtMjU1XG4gIGNvbnN0IFssIHIsIGcsIGJdID0gbWF0Y2g7XG4gIHJldHVybiBbciwgZywgYl0uZXZlcnkoKHZhbCkgPT4ge1xuICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KHZhbCwgMTApO1xuICAgIHJldHVybiBudW0gPj0gMCAmJiBudW0gPD0gMjU1O1xuICB9KTtcbn1cblxuLyoqXG4gKiBNYXBzIHRoZW1lIFJHQiB2YWx1ZXMgdG8gQ1NTIHZhcmlhYmxlc1xuICovXG5mdW5jdGlvbiBtYXBUaGVtZShyZ2I6IElUaGVtZVJHQik6IFBhcnRpYWw8SVRoZW1lVmFyaWFibGVzPiB7XG4gIGNvbnN0IHZhcmlhYmxlczogUGFydGlhbDxJVGhlbWVWYXJpYWJsZXM+ID0ge307XG5cbiAgLy8gTWFwIGVhY2ggUkdCIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nIENTUyB2YXJpYWJsZVxuICBjb25zdCBtYXBwaW5nczogUmVjb3JkPGtleW9mIElUaGVtZVJHQiwga2V5b2YgSVRoZW1lVmFyaWFibGVzPiA9IHtcbiAgICAncmdiLXRleHQtcHJpbWFyeSc6ICctLXRleHQtcHJpbWFyeScsXG4gICAgJ3JnYi10ZXh0LXNlY29uZGFyeSc6ICctLXRleHQtc2Vjb25kYXJ5JyxcbiAgICAncmdiLXRleHQtc2Vjb25kYXJ5LWFsdCc6ICctLXRleHQtc2Vjb25kYXJ5LWFsdCcsXG4gICAgJ3JnYi10ZXh0LXRlcnRpYXJ5JzogJy0tdGV4dC10ZXJ0aWFyeScsXG4gICAgJ3JnYi10ZXh0LXdhcm5pbmcnOiAnLS10ZXh0LXdhcm5pbmcnLFxuICAgICdyZ2ItcmluZy1wcmltYXJ5JzogJy0tcmluZy1wcmltYXJ5JyxcbiAgICAncmdiLWhlYWRlci1wcmltYXJ5JzogJy0taGVhZGVyLXByaW1hcnknLFxuICAgICdyZ2ItaGVhZGVyLWhvdmVyJzogJy0taGVhZGVyLWhvdmVyJyxcbiAgICAncmdiLWhlYWRlci1idXR0b24taG92ZXInOiAnLS1oZWFkZXItYnV0dG9uLWhvdmVyJyxcbiAgICAncmdiLXN1cmZhY2UtYWN0aXZlJzogJy0tc3VyZmFjZS1hY3RpdmUnLFxuICAgICdyZ2Itc3VyZmFjZS1hY3RpdmUtYWx0JzogJy0tc3VyZmFjZS1hY3RpdmUtYWx0JyxcbiAgICAncmdiLXN1cmZhY2UtaG92ZXInOiAnLS1zdXJmYWNlLWhvdmVyJyxcbiAgICAncmdiLXN1cmZhY2UtaG92ZXItYWx0JzogJy0tc3VyZmFjZS1ob3Zlci1hbHQnLFxuICAgICdyZ2Itc3VyZmFjZS1wcmltYXJ5JzogJy0tc3VyZmFjZS1wcmltYXJ5JyxcbiAgICAncmdiLXN1cmZhY2UtcHJpbWFyeS1hbHQnOiAnLS1zdXJmYWNlLXByaW1hcnktYWx0JyxcbiAgICAncmdiLXN1cmZhY2UtcHJpbWFyeS1jb250cmFzdCc6ICctLXN1cmZhY2UtcHJpbWFyeS1jb250cmFzdCcsXG4gICAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeSc6ICctLXN1cmZhY2Utc2Vjb25kYXJ5JyxcbiAgICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5LWFsdCc6ICctLXN1cmZhY2Utc2Vjb25kYXJ5LWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5JzogJy0tc3VyZmFjZS10ZXJ0aWFyeScsXG4gICAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5LWFsdCc6ICctLXN1cmZhY2UtdGVydGlhcnktYWx0JyxcbiAgICAncmdiLXN1cmZhY2UtZGlhbG9nJzogJy0tc3VyZmFjZS1kaWFsb2cnLFxuICAgICdyZ2Itc3VyZmFjZS1zdWJtaXQnOiAnLS1zdXJmYWNlLXN1Ym1pdCcsXG4gICAgJ3JnYi1zdXJmYWNlLXN1Ym1pdC1ob3Zlcic6ICctLXN1cmZhY2Utc3VibWl0LWhvdmVyJyxcbiAgICAncmdiLXN1cmZhY2UtZGVzdHJ1Y3RpdmUnOiAnLS1zdXJmYWNlLWRlc3RydWN0aXZlJyxcbiAgICAncmdiLXN1cmZhY2UtZGVzdHJ1Y3RpdmUtaG92ZXInOiAnLS1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJyxcbiAgICAncmdiLXN1cmZhY2UtY2hhdCc6ICctLXN1cmZhY2UtY2hhdCcsXG4gICAgJ3JnYi1ib3JkZXItbGlnaHQnOiAnLS1ib3JkZXItbGlnaHQnLFxuICAgICdyZ2ItYm9yZGVyLW1lZGl1bSc6ICctLWJvcmRlci1tZWRpdW0nLFxuICAgICdyZ2ItYm9yZGVyLW1lZGl1bS1hbHQnOiAnLS1ib3JkZXItbWVkaXVtLWFsdCcsXG4gICAgJ3JnYi1ib3JkZXItaGVhdnknOiAnLS1ib3JkZXItaGVhdnknLFxuICAgICdyZ2ItYm9yZGVyLXhoZWF2eSc6ICctLWJvcmRlci14aGVhdnknLFxuICAgICdyZ2ItYnJhbmQtcHVycGxlJzogJy0tYnJhbmQtcHVycGxlJyxcbiAgICAncmdiLXByZXNlbnRhdGlvbic6ICctLXByZXNlbnRhdGlvbicsXG5cbiAgICAvLyBVdGlsaXR5IGNvbG9yc1xuICAgICdyZ2ItYmFja2dyb3VuZCc6ICctLWJhY2tncm91bmQnLFxuICAgICdyZ2ItZm9yZWdyb3VuZCc6ICctLWZvcmVncm91bmQnLFxuICAgICdyZ2ItcHJpbWFyeSc6ICctLXByaW1hcnknLFxuICAgICdyZ2ItcHJpbWFyeS1mb3JlZ3JvdW5kJzogJy0tcHJpbWFyeS1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLXNlY29uZGFyeSc6ICctLXNlY29uZGFyeScsXG4gICAgJ3JnYi1zZWNvbmRhcnktZm9yZWdyb3VuZCc6ICctLXNlY29uZGFyeS1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLW11dGVkJzogJy0tbXV0ZWQnLFxuICAgICdyZ2ItbXV0ZWQtZm9yZWdyb3VuZCc6ICctLW11dGVkLWZvcmVncm91bmQnLFxuICAgICdyZ2ItYWNjZW50JzogJy0tYWNjZW50JyxcbiAgICAncmdiLWFjY2VudC1mb3JlZ3JvdW5kJzogJy0tYWNjZW50LWZvcmVncm91bmQnLFxuICAgICdyZ2ItZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCc6ICctLWRlc3RydWN0aXZlLWZvcmVncm91bmQnLFxuICAgICdyZ2ItYm9yZGVyJzogJy0tYm9yZGVyJyxcbiAgICAncmdiLWlucHV0JzogJy0taW5wdXQnLFxuICAgICdyZ2ItcmluZyc6ICctLXJpbmcnLFxuICAgICdyZ2ItY2FyZCc6ICctLWNhcmQnLFxuICAgICdyZ2ItY2FyZC1mb3JlZ3JvdW5kJzogJy0tY2FyZC1mb3JlZ3JvdW5kJyxcbiAgfTtcblxuICBPYmplY3QuZW50cmllcyhtYXBwaW5ncykuZm9yRWFjaCgoW3JnYktleSwgY3NzVmFyXSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gcmdiW3JnYktleSBhcyBrZXlvZiBJVGhlbWVSR0JdO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFyaWFibGVzW2Nzc1Zhcl0gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbi8qKlxuICogQXBwbGllcyB0aGVtZSB0byB0aGUgZG9jdW1lbnQgcm9vdFxuICogU2V0cyBDU1MgdmFyaWFibGVzIGFzIHJnYigpIHZhbHVlcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIENTU1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcHBseVRoZW1lKHRoZW1lUkdCPzogSVRoZW1lUkdCKSB7XG4gIGlmICghdGhlbWVSR0IpIHJldHVybjtcblxuICBjb25zdCB0aGVtZU9iamVjdCA9IG1hcFRoZW1lKHRoZW1lUkdCKTtcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICBPYmplY3QuZW50cmllcyh0aGVtZU9iamVjdCkuZm9yRWFjaCgoW2Nzc1ZhciwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUkdCKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgUkdCIHZhbHVlIGZvciAke2Nzc1Zhcn06ICR7dmFsdWV9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBDU1MgdmFyaWFibGUgYXMgcmdiKCkgdmFsdWUgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAvLyBUaGlzIGVuc3VyZXMgZXhpc3RpbmcgQ1NTIHRoYXQgZXhwZWN0cyBjb2xvciB2YWx1ZXMgKG5vdCBzcGFjZS1zZXBhcmF0ZWQgUkdCKSBjb250aW51ZXMgdG8gd29ya1xuICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoY3NzVmFyLCBgcmdiKCR7dmFsdWV9KWApO1xuICB9KTtcbn1cbiIsImltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gJ2pvdGFpL3V0aWxzJztcbmltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBBdG9tIGZvciBzdG9yaW5nIHRoZSB0aGVtZSBtb2RlIChsaWdodC9kYXJrL3N5c3RlbSkgaW4gbG9jYWxTdG9yYWdlXG4gKiBLZXk6ICdjb2xvci10aGVtZSdcbiAqL1xuZXhwb3J0IGNvbnN0IHRoZW1lTW9kZUF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nPignY29sb3ItdGhlbWUnLCAnc3lzdGVtJywgdW5kZWZpbmVkLCB7XG4gIGdldE9uSW5pdDogdHJ1ZSxcbn0pO1xuXG4vKipcbiAqIEF0b20gZm9yIHN0b3JpbmcgY3VzdG9tIHRoZW1lIGNvbG9ycyBpbiBsb2NhbFN0b3JhZ2VcbiAqIEtleTogJ3RoZW1lLWNvbG9ycydcbiAqL1xuZXhwb3J0IGNvbnN0IHRoZW1lQ29sb3JzQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxJVGhlbWVSR0IgfCB1bmRlZmluZWQ+KFxuICAndGhlbWUtY29sb3JzJyxcbiAgdW5kZWZpbmVkLFxuICB1bmRlZmluZWQsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH0sXG4pO1xuXG4vKipcbiAqIEF0b20gZm9yIHN0b3JpbmcgdGhlIHRoZW1lIG5hbWUgaW4gbG9jYWxTdG9yYWdlXG4gKiBLZXk6ICd0aGVtZS1uYW1lJ1xuICovXG5leHBvcnQgY29uc3QgdGhlbWVOYW1lQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICAndGhlbWUtbmFtZScsXG4gIHVuZGVmaW5lZCxcbiAgdW5kZWZpbmVkLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9LFxuKTtcbiIsImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgSVRoZW1lUkdCIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IGFwcGx5VGhlbWUgZnJvbSAnLi4vdXRpbHMvYXBwbHlUaGVtZSc7XG5pbXBvcnQgeyB0aGVtZU1vZGVBdG9tLCB0aGVtZUNvbG9yc0F0b20sIHRoZW1lTmFtZUF0b20gfSBmcm9tICcuLi9hdG9tcy90aGVtZUF0b21zJztcblxudHlwZSBUaGVtZUNvbnRleHRUeXBlID0ge1xuICB0aGVtZTogc3RyaW5nOyAvLyAnbGlnaHQnIHwgJ2RhcmsnIHwgJ3N5c3RlbSdcbiAgc2V0VGhlbWU6ICh0aGVtZTogc3RyaW5nKSA9PiB2b2lkO1xuICB0aGVtZVJHQj86IElUaGVtZVJHQjtcbiAgc2V0VGhlbWVSR0I6IChjb2xvcnM/OiBJVGhlbWVSR0IpID0+IHZvaWQ7XG4gIHRoZW1lTmFtZT86IHN0cmluZztcbiAgc2V0VGhlbWVOYW1lOiAobmFtZT86IHN0cmluZykgPT4gdm9pZDtcbiAgcmVzZXRUaGVtZTogKCkgPT4gdm9pZDtcbn07XG5cbi8vIEV4cG9ydCBUaGVtZUNvbnRleHQgc28gaXQgY2FuIGJlIGltcG9ydGVkIGZyb20gaG9va3NcbmV4cG9ydCBjb25zdCBUaGVtZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFRoZW1lQ29udGV4dFR5cGU+KHtcbiAgdGhlbWU6ICdzeXN0ZW0nLFxuICBzZXRUaGVtZTogKCkgPT4gdW5kZWZpbmVkLFxuICBzZXRUaGVtZVJHQjogKCkgPT4gdW5kZWZpbmVkLFxuICBzZXRUaGVtZU5hbWU6ICgpID0+IHVuZGVmaW5lZCxcbiAgcmVzZXRUaGVtZTogKCkgPT4gdW5kZWZpbmVkLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVQcm92aWRlclByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGhlbWVSR0I/OiBJVGhlbWVSR0I7XG4gIHRoZW1lTmFtZT86IHN0cmluZztcbiAgaW5pdGlhbFRoZW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZW1lIGlzIGRhcmtcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGFyayA9ICh0aGVtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICh0aGVtZSA9PT0gJ3N5c3RlbScpIHtcbiAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuICB9XG4gIHJldHVybiB0aGVtZSA9PT0gJ2RhcmsnO1xufTtcblxuLyoqXG4gKiBUaGVtZVByb3ZpZGVyIGNvbXBvbmVudCB0aGF0IGhhbmRsZXMgYm90aCBkYXJrL2xpZ2h0IG1vZGUgc3dpdGNoaW5nXG4gKiBhbmQgZHluYW1pYyBjb2xvciB0aGVtZXMgdmlhIENTUyB2YXJpYWJsZXMgd2l0aCBsb2NhbFN0b3JhZ2UgcGVyc2lzdGVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgdGhlbWVSR0I6IHByb3BUaGVtZVJHQixcbiAgdGhlbWVOYW1lOiBwcm9wVGhlbWVOYW1lLFxuICBpbml0aWFsVGhlbWUsXG59OiBUaGVtZVByb3ZpZGVyUHJvcHMpIHtcbiAgLy8gVXNlIGpvdGFpIGF0b21zIGZvciBwZXJzaXN0ZW50IHN0YXRlXG4gIGNvbnN0IFt0aGVtZSwgc2V0VGhlbWVdID0gdXNlQXRvbSh0aGVtZU1vZGVBdG9tKTtcbiAgY29uc3QgW3N0b3JlZFRoZW1lUkdCLCBzZXRTdG9yZWRUaGVtZVJHQl0gPSB1c2VBdG9tKHRoZW1lQ29sb3JzQXRvbSk7XG4gIGNvbnN0IFtzdG9yZWRUaGVtZU5hbWUsIHNldFN0b3JlZFRoZW1lTmFtZV0gPSB1c2VBdG9tKHRoZW1lTmFtZUF0b20pO1xuXG4gIC8vIFRyYWNrIGlmIHByb3BzIGhhdmUgYmVlbiBpbml0aWFsaXplZFxuICBjb25zdCBwcm9wc0luaXRpYWxpemVkID0gdXNlUmVmKGZhbHNlKTtcblxuICAvLyBJbml0aWFsaXplIGZyb20gcHJvcHMgb25seSBvbmNlIG9uIG1vdW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwcm9wc0luaXRpYWxpemVkLmN1cnJlbnQpIHtcbiAgICAgIHByb3BzSW5pdGlhbGl6ZWQuY3VycmVudCA9IHRydWU7XG5cbiAgICAgIC8vIFNldCBpbml0aWFsIHRoZW1lIGlmIHByb3ZpZGVkXG4gICAgICBpZiAoaW5pdGlhbFRoZW1lKSB7XG4gICAgICAgIHNldFRoZW1lKGluaXRpYWxUaGVtZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBpbml0aWFsIHRoZW1lIGNvbG9ycyBpZiBwcm92aWRlZFxuICAgICAgaWYgKHByb3BUaGVtZVJHQikge1xuICAgICAgICBzZXRTdG9yZWRUaGVtZVJHQihwcm9wVGhlbWVSR0IpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgaW5pdGlhbCB0aGVtZSBuYW1lIGlmIHByb3ZpZGVkXG4gICAgICBpZiAocHJvcFRoZW1lTmFtZSkge1xuICAgICAgICBzZXRTdG9yZWRUaGVtZU5hbWUocHJvcFRoZW1lTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaW5pdGlhbFRoZW1lLCBwcm9wVGhlbWVSR0IsIHByb3BUaGVtZU5hbWUsIHNldFRoZW1lLCBzZXRTdG9yZWRUaGVtZVJHQiwgc2V0U3RvcmVkVGhlbWVOYW1lXSk7XG5cbiAgLy8gQXBwbHkgY2xhc3MtYmFzZWQgZGFyayBtb2RlXG4gIGNvbnN0IGFwcGx5VGhlbWVNb2RlID0gdXNlQ2FsbGJhY2soKHJhd1RoZW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByb290ID0gd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBkYXJrTW9kZSA9IGlzRGFyayhyYXdUaGVtZSk7XG5cbiAgICByb290LmNsYXNzTGlzdC5yZW1vdmUoZGFya01vZGUgPyAnbGlnaHQnIDogJ2RhcmsnKTtcbiAgICByb290LmNsYXNzTGlzdC5hZGQoZGFya01vZGUgPyAnZGFyaycgOiAnbGlnaHQnKTtcbiAgfSwgW10pO1xuXG4gIC8vIEhhbmRsZSBzeXN0ZW0gdGhlbWUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIGNvbnN0IGNoYW5nZVRoZW1lT25TeXN0ZW1DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBpZiAodGhlbWUgPT09ICdzeXN0ZW0nKSB7XG4gICAgICAgIGFwcGx5VGhlbWVNb2RlKCdzeXN0ZW0nKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VUaGVtZU9uU3lzdGVtQ2hhbmdlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VUaGVtZU9uU3lzdGVtQ2hhbmdlKTtcbiAgICB9O1xuICB9LCBbdGhlbWUsIGFwcGx5VGhlbWVNb2RlXSk7XG5cbiAgLy8gQXBwbHkgZGFyay9saWdodCBtb2RlIGNsYXNzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXBwbHlUaGVtZU1vZGUodGhlbWUpO1xuICB9LCBbdGhlbWUsIGFwcGx5VGhlbWVNb2RlXSk7XG5cbiAgLy8gQXBwbHkgZHluYW1pYyBjb2xvciB0aGVtZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdG9yZWRUaGVtZVJHQikge1xuICAgICAgYXBwbHlUaGVtZShzdG9yZWRUaGVtZVJHQik7XG4gICAgfVxuICB9LCBbc3RvcmVkVGhlbWVSR0JdKTtcblxuICAvLyBSZXNldCB0aGVtZSBmdW5jdGlvblxuICBjb25zdCByZXNldFRoZW1lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRoZW1lKCdzeXN0ZW0nKTtcbiAgICBzZXRTdG9yZWRUaGVtZVJHQih1bmRlZmluZWQpO1xuICAgIHNldFN0b3JlZFRoZW1lTmFtZSh1bmRlZmluZWQpO1xuICAgIC8vIFJlbW92ZSBhbnkgY3VzdG9tIENTUyB2YXJpYWJsZXNcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGN1c3RvbVByb3BzID0gQXJyYXkuZnJvbShyb290LnN0eWxlKS5maWx0ZXIoKHByb3ApID0+IHByb3Auc3RhcnRzV2l0aCgnLS0nKSk7XG4gICAgY3VzdG9tUHJvcHMuZm9yRWFjaCgocHJvcCkgPT4gcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcm9wKSk7XG4gIH0sIFtzZXRUaGVtZSwgc2V0U3RvcmVkVGhlbWVSR0IsIHNldFN0b3JlZFRoZW1lTmFtZV0pO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgdGhlbWUsXG4gICAgICBzZXRUaGVtZSxcbiAgICAgIHRoZW1lUkdCOiBzdG9yZWRUaGVtZVJHQixcbiAgICAgIHNldFRoZW1lUkdCOiBzZXRTdG9yZWRUaGVtZVJHQixcbiAgICAgIHRoZW1lTmFtZTogc3RvcmVkVGhlbWVOYW1lLFxuICAgICAgc2V0VGhlbWVOYW1lOiBzZXRTdG9yZWRUaGVtZU5hbWUsXG4gICAgICByZXNldFRoZW1lLFxuICAgIH0pLFxuICAgIFtcbiAgICAgIHRoZW1lLFxuICAgICAgc2V0VGhlbWUsXG4gICAgICBzdG9yZWRUaGVtZVJHQixcbiAgICAgIHNldFN0b3JlZFRoZW1lUkdCLFxuICAgICAgc3RvcmVkVGhlbWVOYW1lLFxuICAgICAgc2V0U3RvcmVkVGhlbWVOYW1lLFxuICAgICAgcmVzZXRUaGVtZSxcbiAgICBdLFxuICApO1xuXG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvVGhlbWVDb250ZXh0LlByb3ZpZGVyPjtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyB0aGUgY3VycmVudCB0aGVtZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VUaGVtZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgVGhlbWVQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBUaGVtZVByb3ZpZGVyO1xuIiwiaW1wb3J0IHsgSVRoZW1lUkdCIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHQgbGlnaHQgdGhlbWVcbiAqIFJHQiB2YWx1ZXMgZXh0cmFjdGVkIGZyb20gdGhlIGV4aXN0aW5nIENTUyB2YXJpYWJsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRUaGVtZTogSVRoZW1lUkdCID0ge1xuICAvLyBUZXh0IGNvbG9yc1xuICAncmdiLXRleHQtcHJpbWFyeSc6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuICAncmdiLXRleHQtc2Vjb25kYXJ5JzogJzY2IDY2IDY2JywgLy8gIzQyNDI0MiAoZ3JheS02MDApXG4gICdyZ2ItdGV4dC1zZWNvbmRhcnktYWx0JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG4gICdyZ2ItdGV4dC10ZXJ0aWFyeSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLXRleHQtd2FybmluZyc6ICcyNDUgMTU4IDExJywgLy8gI2Y1OWUwYiAoYW1iZXItNTAwKVxuXG4gIC8vIFJpbmcgY29sb3JzXG4gICdyZ2ItcmluZy1wcmltYXJ5JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG5cbiAgLy8gSGVhZGVyIGNvbG9yc1xuICAncmdiLWhlYWRlci1wcmltYXJ5JzogJzI1NSAyNTUgMjU1JywgLy8gI2ZmZiAod2hpdGUpXG4gICdyZ2ItaGVhZGVyLWhvdmVyJzogJzI0NyAyNDcgMjQ4JywgLy8gI2Y3ZjdmOCAoZ3JheS01MClcbiAgJ3JnYi1oZWFkZXItYnV0dG9uLWhvdmVyJzogJzI0NyAyNDcgMjQ4JywgLy8gI2Y3ZjdmOCAoZ3JheS01MClcblxuICAvLyBTdXJmYWNlIGNvbG9yc1xuICAncmdiLXN1cmZhY2UtYWN0aXZlJzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2Itc3VyZmFjZS1hY3RpdmUtYWx0JzogJzIyNyAyMjcgMjI3JywgLy8gI2UzZTNlMyAoZ3JheS0yMDApXG4gICdyZ2Itc3VyZmFjZS1ob3Zlcic6ICcyMjcgMjI3IDIyNycsIC8vICNlM2UzZTMgKGdyYXktMjAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXItYWx0JzogJzIwNSAyMDUgMjA1JywgLy8gI2NkY2RjZCAoZ3JheS0zMDApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5JzogJzI1NSAyNTUgMjU1JywgLy8gI2ZmZiAod2hpdGUpXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWFsdCc6ICcyNDcgMjQ3IDI0OCcsIC8vICNmN2Y3ZjggKGdyYXktNTApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0JzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnknOiAnMjQ3IDI0NyAyNDgnLCAvLyAjZjdmN2Y4IChncmF5LTUwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5LWFsdCc6ICcyMjcgMjI3IDIyNycsIC8vICNlM2UzZTMgKGdyYXktMjAwKVxuICAncmdiLXN1cmZhY2UtdGVydGlhcnknOiAnMjM2IDIzNiAyMzYnLCAvLyAjZWNlY2VjIChncmF5LTEwMClcbiAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5LWFsdCc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLXN1cmZhY2UtZGlhbG9nJzogJzI1NSAyNTUgMjU1JywgLy8gI2ZmZiAod2hpdGUpXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQnOiAnNCAxMjAgODcnLCAvLyAjMDQ3ODU3IChncmVlbi03MDApXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQtaG92ZXInOiAnNiA5NSA3MCcsIC8vICMwNjVmNDYgKGdyZWVuLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlJzogJzE4NSAyOCAyOCcsIC8vICNiOTFjMWMgKHJlZC03MDApXG4gICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3Zlcic6ICcxNTMgMjcgMjcnLCAvLyAjOTkxYjFiIChyZWQtODAwKVxuICAncmdiLXN1cmZhY2UtY2hhdCc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuXG4gIC8vIEJvcmRlciBjb2xvcnNcbiAgJ3JnYi1ib3JkZXItbGlnaHQnOiAnMjI3IDIyNyAyMjcnLCAvLyAjZTNlM2UzIChncmF5LTIwMClcbiAgJ3JnYi1ib3JkZXItbWVkaXVtJzogJzIwNSAyMDUgMjA1JywgLy8gI2NkY2RjZCAoZ3JheS0zMDApXG4gICdyZ2ItYm9yZGVyLW1lZGl1bS1hbHQnOiAnMjA1IDIwNSAyMDUnLCAvLyAjY2RjZGNkIChncmF5LTMwMClcbiAgJ3JnYi1ib3JkZXItaGVhdnknOiAnMTUzIDE1MCAxNTAnLCAvLyAjOTk5Njk2IChncmF5LTQwMClcbiAgJ3JnYi1ib3JkZXIteGhlYXZ5JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG5cbiAgLy8gQnJhbmQgY29sb3JzXG4gICdyZ2ItYnJhbmQtcHVycGxlJzogJzE3MSAxMDQgMjU1JywgLy8gI2FiNjhmZlxuXG4gIC8vIFByZXNlbnRhdGlvblxuICAncmdiLXByZXNlbnRhdGlvbic6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuXG4gIC8vIFV0aWxpdHkgY29sb3JzIChtYXBwZWQgdG8gZXhpc3RpbmcgY29sb3JzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcbiAgJ3JnYi1iYWNrZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyBzdXJmYWNlLXByaW1hcnlcbiAgJ3JnYi1mb3JlZ3JvdW5kJzogJzE3IDE3IDE3JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1wcmltYXJ5JzogJzIzNSAyMzUgMjM1JywgLy8gU2FtZSBhcyBzdXJmYWNlLWFjdGl2ZVxuICAncmdiLXByaW1hcnktZm9yZWdyb3VuZCc6ICcwIDAgMCcsIC8vIFNhbWUgYXMgc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0XG4gICdyZ2Itc2Vjb25kYXJ5JzogJzI0NyAyNDcgMjQ4JywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLXNlY29uZGFyeS1mb3JlZ3JvdW5kJzogJzY2IDY2IDY2JywgLy8gU2FtZSBhcyB0ZXh0LXNlY29uZGFyeVxuICAncmdiLW11dGVkJzogJzI1MCAyNTAgMjUwJywgLy8gU2FtZSBhcyBzdXJmYWNlLXRlcnRpYXJ5XG4gICdyZ2ItbXV0ZWQtZm9yZWdyb3VuZCc6ICcxMjAgMTIwIDEyMCcsIC8vIFNhbWUgYXMgdGV4dC10ZXJ0aWFyeVxuICAncmdiLWFjY2VudCc6ICcyNDUgMjQ1IDI0NScsIC8vIFNhbWUgYXMgc3VyZmFjZS1hY3RpdmUtYWx0XG4gICdyZ2ItYWNjZW50LWZvcmVncm91bmQnOiAnMTcgMTcgMTcnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWRlc3RydWN0aXZlLWZvcmVncm91bmQnOiAnMTcgMTcgMTcnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWJvcmRlcic6ICcyMTUgMjE1IDIxNScsIC8vIFNhbWUgYXMgYm9yZGVyLW1lZGl1bVxuICAncmdiLWlucHV0JzogJzIzMCAyMzAgMjMwJywgLy8gU2FtZSBhcyBib3JkZXItbGlnaHRcbiAgJ3JnYi1yaW5nJzogJzE4MCAxODAgMTgwJywgLy8gU2FtZSBhcyByaW5nLXByaW1hcnlcbiAgJ3JnYi1jYXJkJzogJzI0NyAyNDcgMjQ4JywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLWNhcmQtZm9yZWdyb3VuZCc6ICcxNyAxNyAxNycsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG59O1xuIiwiaW1wb3J0IHsgSVRoZW1lUkdCIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIERhcmsgdGhlbWVcbiAqIFJHQiB2YWx1ZXMgZXh0cmFjdGVkIGZyb20gdGhlIGV4aXN0aW5nIGRhcmsgbW9kZSBDU1MgdmFyaWFibGVzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXJrVGhlbWU6IElUaGVtZVJHQiA9IHtcbiAgLy8gVGV4dCBjb2xvcnNcbiAgJ3JnYi10ZXh0LXByaW1hcnknOiAnMjM2IDIzNiAyMzYnLCAvLyAjZWNlY2VjIChncmF5LTEwMClcbiAgJ3JnYi10ZXh0LXNlY29uZGFyeSc6ICcyMDUgMjA1IDIwNScsIC8vICNjZGNkY2QgKGdyYXktMzAwKVxuICAncmdiLXRleHQtc2Vjb25kYXJ5LWFsdCc6ICcxNTMgMTUwIDE1MCcsIC8vICM5OTk2OTYgKGdyYXktNDAwKVxuICAncmdiLXRleHQtdGVydGlhcnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcbiAgJ3JnYi10ZXh0LXdhcm5pbmcnOiAnMjQ1IDE1OCAxMScsIC8vICNmNTllMGIgKGFtYmVyLTUwMClcblxuICAvLyBSaW5nIGNvbG9ycyAobm90IGRlZmluZWQgaW4gZGFyayBtb2RlLCB1c2luZyBkZWZhdWx0KVxuICAncmdiLXJpbmctcHJpbWFyeSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuXG4gIC8vIEhlYWRlciBjb2xvcnNcbiAgJ3JnYi1oZWFkZXItcHJpbWFyeSc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLWhlYWRlci1ob3Zlcic6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLWhlYWRlci1idXR0b24taG92ZXInOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcblxuICAvLyBTdXJmYWNlIGNvbG9yc1xuICAncmdiLXN1cmZhY2UtYWN0aXZlJzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG4gICdyZ2Itc3VyZmFjZS1hY3RpdmUtYWx0JzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG4gICdyZ2Itc3VyZmFjZS1ob3Zlcic6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXItYWx0JzogJzY2IDY2IDY2JywgLy8gIzQyNDI0MiAoZ3JheS02MDApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5JzogJzEzIDEzIDEzJywgLy8gIzBkMGQwZCAoZ3JheS05MDApXG4gICdyZ2Itc3VyZmFjZS1wcmltYXJ5LWFsdCc6ICcyMyAyMyAyMycsIC8vICMxNzE3MTcgKGdyYXktODUwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1jb250cmFzdCc6ICcyMyAyMyAyMycsIC8vICMxNzE3MTcgKGdyYXktODUwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5JzogJzMzIDMzIDMzJywgLy8gIzIxMjEyMSAoZ3JheS04MDApXG4gICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnktYWx0JzogJzMzIDMzIDMzJywgLy8gIzIxMjEyMSAoZ3JheS04MDApXG4gICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeSc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLXN1cmZhY2UtdGVydGlhcnktYWx0JzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG4gICdyZ2Itc3VyZmFjZS1kaWFsb2cnOiAnMjMgMjMgMjMnLCAvLyAjMTcxNzE3IChncmF5LTg1MClcbiAgJ3JnYi1zdXJmYWNlLXN1Ym1pdCc6ICc0IDEyMCA4NycsIC8vICMwNDc4NTcgKGdyZWVuLTcwMClcbiAgJ3JnYi1zdXJmYWNlLXN1Ym1pdC1ob3Zlcic6ICc2IDk1IDcwJywgLy8gIzA2NWY0NiAoZ3JlZW4tODAwKVxuICAncmdiLXN1cmZhY2UtZGVzdHJ1Y3RpdmUnOiAnMTUzIDI3IDI3JywgLy8gIzk5MWIxYiAocmVkLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJzogJzEyNyAyOSAyOScsIC8vICM3ZjFkMWQgKHJlZC05MDApXG4gICdyZ2Itc3VyZmFjZS1jaGF0JzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG5cbiAgLy8gQm9yZGVyIGNvbG9yc1xuICAncmdiLWJvcmRlci1saWdodCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLWJvcmRlci1tZWRpdW0nOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1ib3JkZXItbWVkaXVtLWFsdCc6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLWJvcmRlci1oZWF2eSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLWJvcmRlci14aGVhdnknOiAnMTUzIDE1MCAxNTAnLCAvLyAjOTk5Njk2IChncmF5LTQwMClcblxuICAvLyBCcmFuZCBjb2xvcnNcbiAgJ3JnYi1icmFuZC1wdXJwbGUnOiAnMTcxIDEwNCAyNTUnLCAvLyAjYWI2OGZmXG5cbiAgLy8gUHJlc2VudGF0aW9uXG4gICdyZ2ItcHJlc2VudGF0aW9uJzogJzMzIDMzIDMzJywgLy8gIzIxMjEyMSAoZ3JheS04MDApXG5cbiAgLy8gVXRpbGl0eSBjb2xvcnMgKG1hcHBlZCB0byBleGlzdGluZyBjb2xvcnMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KVxuICAncmdiLWJhY2tncm91bmQnOiAnMzMgMzMgMzMnLCAvLyBTYW1lIGFzIHN1cmZhY2UtcHJpbWFyeVxuICAncmdiLWZvcmVncm91bmQnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLXByaW1hcnknOiAnNjYgNjYgNjYnLCAvLyBTYW1lIGFzIHN1cmZhY2UtYWN0aXZlXG4gICdyZ2ItcHJpbWFyeS1mb3JlZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyBzdXJmYWNlLXByaW1hcnktY29udHJhc3RcbiAgJ3JnYi1zZWNvbmRhcnknOiAnNDIgNDIgNDInLCAvLyBTYW1lIGFzIHN1cmZhY2Utc2Vjb25kYXJ5XG4gICdyZ2Itc2Vjb25kYXJ5LWZvcmVncm91bmQnOiAnMTkzIDE5MyAxOTMnLCAvLyBTYW1lIGFzIHRleHQtc2Vjb25kYXJ5XG4gICdyZ2ItbXV0ZWQnOiAnNTYgNTYgNTYnLCAvLyBTYW1lIGFzIHN1cmZhY2UtdGVydGlhcnlcbiAgJ3JnYi1tdXRlZC1mb3JlZ3JvdW5kJzogJzE0MCAxNDAgMTQwJywgLy8gU2FtZSBhcyB0ZXh0LXRlcnRpYXJ5XG4gICdyZ2ItYWNjZW50JzogJzgyIDgyIDgyJywgLy8gU2FtZSBhcyBzdXJmYWNlLWFjdGl2ZS1hbHRcbiAgJ3JnYi1hY2NlbnQtZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG4gICdyZ2ItZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG4gICdyZ2ItYm9yZGVyJzogJzgyIDgyIDgyJywgLy8gU2FtZSBhcyBib3JkZXItbWVkaXVtXG4gICdyZ2ItaW5wdXQnOiAnNjYgNjYgNjYnLCAvLyBTYW1lIGFzIGJvcmRlci1saWdodFxuICAncmdiLXJpbmcnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHJpbmctcHJpbWFyeVxuICAncmdiLWNhcmQnOiAnNDIgNDIgNDInLCAvLyBTYW1lIGFzIHN1cmZhY2Utc2Vjb25kYXJ5XG4gICdyZ2ItY2FyZC1mb3JlZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbn07XG4iLCJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN1biwgTW9vbiwgTW9uaXRvciB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBUaGVtZUNvbnRleHQsIGlzRGFyayB9IGZyb20gJy4uL3RoZW1lJztcbmltcG9ydCB7IHVzZUxvY2FsaXplIH0gZnJvbSAnLi4vaG9va3MnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGxhc3RUaGVtZUNoYW5nZT86IG51bWJlcjtcbiAgfVxufVxuXG50eXBlIFRoZW1lVHlwZSA9ICdzeXN0ZW0nIHwgJ2RhcmsnIHwgJ2xpZ2h0JztcblxuY29uc3QgVGhlbWUgPSAoeyB0aGVtZSwgb25DaGFuZ2UgfTogeyB0aGVtZTogc3RyaW5nOyBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgfSkgPT4ge1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG5cbiAgY29uc3QgdGhlbWVJY29uczogUmVjb3JkPFRoZW1lVHlwZSwgSlNYLkVsZW1lbnQ+ID0ge1xuICAgIHN5c3RlbTogPE1vbml0b3IgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz4sXG4gICAgZGFyazogPE1vb24gY29sb3I9XCJ3aGl0ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+LFxuICAgIGxpZ2h0OiA8U3VuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+LFxuICB9O1xuXG4gIGNvbnN0IG5leHRUaGVtZSA9IGlzRGFyayh0aGVtZSkgPyAnbGlnaHQnIDogJ2RhcmsnO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5UHJlc3MgPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0Jykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2hhbmdlKG5leHRUaGVtZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleVByZXNzKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlQcmVzcyk7XG4gIH0sIFtuZXh0VGhlbWUsIG9uQ2hhbmdlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWxnIHAtMiB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1ibHVlLTYwMCBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctMFwiXG4gICAgICBhcmlhLWxhYmVsPXtsb2NhbGl6ZSgnY29tX3VpX3RvZ2dsZV90aGVtZScpfVxuICAgICAgYXJpYS1rZXlzaG9ydGN1dHM9XCJDdHJsK1NoaWZ0K1RcIlxuICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkNoYW5nZShuZXh0VGhlbWUpO1xuICAgICAgfX1cbiAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgb25DaGFuZ2UobmV4dFRoZW1lKTtcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICA+XG4gICAgICB7dGhlbWVJY29uc1t0aGVtZSBhcyBUaGVtZVR5cGVdfVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuY29uc3QgVGhlbWVTZWxlY3RvciA9ICh7IHJldHVyblRoZW1lT25seSB9OiB7IHJldHVyblRoZW1lT25seT86IGJvb2xlYW4gfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lLCBzZXRUaGVtZSB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICBjb25zdCBbYW5ub3VuY2VtZW50LCBzZXRBbm5vdW5jZW1lbnRdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplKCk7XG5cbiAgY29uc3QgY2hhbmdlVGhlbWUgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmxhc3RUaGVtZUNoYW5nZSA9PT0gJ251bWJlcicgJiYgbm93IC0gd2luZG93Lmxhc3RUaGVtZUNoYW5nZSA8IDUwMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3aW5kb3cubGFzdFRoZW1lQ2hhbmdlID0gbm93O1xuXG4gICAgICBzZXRUaGVtZSh2YWx1ZSk7XG4gICAgICBzZXRBbm5vdW5jZW1lbnQoXG4gICAgICAgIGlzRGFyayh2YWx1ZSlcbiAgICAgICAgICA/IGxvY2FsaXplKCdjb21fdWlfZGFya190aGVtZV9lbmFibGVkJylcbiAgICAgICAgICA6IGxvY2FsaXplKCdjb21fdWlfbGlnaHRfdGhlbWVfZW5hYmxlZCcpLFxuICAgICAgKTtcbiAgICB9LFxuICAgIFtzZXRUaGVtZSwgbG9jYWxpemVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoZW1lID09PSAnc3lzdGVtJykge1xuICAgICAgY29uc3QgcHJlZmVyc0RhcmtTY2hlbWUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG4gICAgICBzZXRUaGVtZShwcmVmZXJzRGFya1NjaGVtZSA/ICdkYXJrJyA6ICdsaWdodCcpO1xuICAgIH1cbiAgfSwgW3RoZW1lLCBzZXRUaGVtZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFubm91bmNlbWVudCkge1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gc2V0QW5ub3VuY2VtZW50KCcnKSwgMTAwMCk7XG4gICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH1cbiAgfSwgW2Fubm91bmNlbWVudF0pO1xuXG4gIGlmIChyZXR1cm5UaGVtZU9ubHkgPT09IHRydWUpIHtcbiAgICByZXR1cm4gPFRoZW1lIHRoZW1lPXt0aGVtZX0gb25DaGFuZ2U9e2NoYW5nZVRoZW1lfSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBwdC02IGRhcms6YmctZ3JheS05MDAgc206cHQtMFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgbS00XCI+XG4gICAgICAgIDxUaGVtZSB0aGVtZT17dGhlbWV9IG9uQ2hhbmdlPXtjaGFuZ2VUaGVtZX0gLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgIHthbm5vdW5jZW1lbnR9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRoZW1lU2VsZWN0b3I7XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENpcmNsZUhlbHBJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IEhvdmVyQ2FyZCwgSG92ZXJDYXJkVHJpZ2dlciwgSG92ZXJDYXJkUG9ydGFsLCBIb3ZlckNhcmRDb250ZW50IH0gZnJvbSAnLi9Ib3ZlckNhcmQnO1xuaW1wb3J0IHsgRVNpZGUgfSBmcm9tICd+L2NvbW1vbic7XG5cbnR5cGUgSW5mb0hvdmVyQ2FyZFByb3BzID0ge1xuICBzaWRlPzogRVNpZGU7XG4gIHRleHQ6IHN0cmluZztcbn07XG5cbmNvbnN0IEluZm9Ib3ZlckNhcmQgPSAoeyBzaWRlLCB0ZXh0IH06IEluZm9Ib3ZlckNhcmRQcm9wcykgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPEhvdmVyQ2FyZCBvcGVuRGVsYXk9ezUwfSBvcGVuPXtpc09wZW59IG9uT3BlbkNoYW5nZT17c2V0SXNPcGVufT5cbiAgICAgIDxIb3ZlckNhcmRUcmlnZ2VyXG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBjdXJzb3ItaGVscCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1zbSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZy1wcmltYXJ5IGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMlwiXG4gICAgICAgIG9uRm9jdXM9eygpID0+IHNldElzT3Blbih0cnVlKX1cbiAgICAgICAgb25CbHVyPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICBhcmlhLWxhYmVsPXt0ZXh0fVxuICAgICAgPlxuICAgICAgICA8Q2lyY2xlSGVscEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LXRleHQtdGVydGlhcnlcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgPC9Ib3ZlckNhcmRUcmlnZ2VyPlxuICAgICAgPEhvdmVyQ2FyZFBvcnRhbD5cbiAgICAgICAgPEhvdmVyQ2FyZENvbnRlbnQgc2lkZT17c2lkZX0gY2xhc3NOYW1lPVwiei1bOTk5XSB3LTgwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtaC1bODB2aF0gc3BhY2UteS0yIG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXRleHQtc2Vjb25kYXJ5XCI+e3RleHR9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0hvdmVyQ2FyZENvbnRlbnQ+XG4gICAgICA8L0hvdmVyQ2FyZFBvcnRhbD5cbiAgICA8L0hvdmVyQ2FyZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEluZm9Ib3ZlckNhcmQ7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGVja2JveCwgdXNlU3RvcmVTdGF0ZSwgdXNlQ2hlY2tib3hTdG9yZSB9IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IENoZWNrYm94QnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTElucHV0RWxlbWVudCxcbiAge1xuICAgIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGVmYXVsdENoZWNrZWQ/OiBib29sZWFuO1xuICAgIGlzQ2hlY2tlZENsYXNzTmFtZT86IHN0cmluZztcbiAgICBzZXRWYWx1ZT86ICh2YWx1ZXM6IHtcbiAgICAgIGU/OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICAgIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nO1xuICAgIH0pID0+IHZvaWQ7XG4gIH1cbj4oKHsgaWNvbiwgbGFiZWwsIHNldFZhbHVlLCBjbGFzc05hbWUsIGNoZWNrZWQsIGRlZmF1bHRDaGVja2VkLCBpc0NoZWNrZWRDbGFzc05hbWUgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IGNoZWNrYm94ID0gdXNlQ2hlY2tib3hTdG9yZSgpO1xuICBjb25zdCBpc0NoZWNrZWQgPSB1c2VTdG9yZVN0YXRlKGNoZWNrYm94LCAoc3RhdGUpID0+IHN0YXRlPy52YWx1ZSk7XG4gIGNvbnN0IG9uQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodHlwZW9mIGlzQ2hlY2tlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldFZhbHVlPy4oeyBlLCB2YWx1ZTogIWlzQ2hlY2tlZCB9KTtcbiAgfTtcblxuICAvLyBTeW5jIHdpdGggY29udHJvbGxlZCBjaGVja2VkIHByb3BcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2hlY2tlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGVja2JveC5zZXRWYWx1ZShjaGVja2VkKTtcbiAgICB9XG4gIH0sIFtjaGVja2VkLCBjaGVja2JveF0pO1xuXG4gIC8vIFNldCBpbml0aWFsIHZhbHVlIGZyb20gZGVmYXVsdENoZWNrZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiBjaGVja2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoZWNrYm94LnNldFZhbHVlKGRlZmF1bHRDaGVja2VkKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0Q2hlY2tlZCwgY2hlY2tlZCwgY2hlY2tib3hdKTtcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzdG9yZT17Y2hlY2tib3h9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAvLyBCYXNlIHN0eWxpbmcgZnJvbSBNdWx0aVNlbGVjdCdzIHNlbGVjdENsYXNzTmFtZVxuICAgICAgICAnZ3JvdXAgcmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xLjUnLFxuICAgICAgICAncm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItYm9yZGVyLW1lZGl1bSB0ZXh0LXNtIGZvbnQtbWVkaXVtJyxcbiAgICAgICAgJ3NpemUtOSBwLTIgdHJhbnNpdGlvbi1hbGwgbWQ6dy1mdWxsIG1kOnAtMycsXG4gICAgICAgICdiZy10cmFuc3BhcmVudCBzaGFkb3ctc20gaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBob3ZlcjpzaGFkb3ctbWQgYWN0aXZlOnNoYWRvdy1pbm5lcicsXG5cbiAgICAgICAgLy8gQ2hlY2tlZCBzdGF0ZSBzdHlsaW5nXG4gICAgICAgIGlzQ2hlY2tlZCAmJiBpc0NoZWNrZWRDbGFzc05hbWUgJiYgaXNDaGVja2VkQ2xhc3NOYW1lLFxuXG4gICAgICAgIC8vIEFkZGl0aW9uYWwgY3VzdG9tIGNsYXNzZXNcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJlbmRlcj17PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD17bGFiZWx9IC8+fVxuICAgID5cbiAgICAgIHsvKiBJY29uIGlmIHByb3ZpZGVkICovfVxuICAgICAge2ljb24gJiYgPHNwYW4gY2xhc3NOYW1lPVwiaWNvbi1tZCB0ZXh0LXRleHQtcHJpbWFyeVwiPntpY29uIGFzIFJlYWN0LkpTWC5FbGVtZW50fTwvc3Bhbj59XG5cbiAgICAgIHsvKiBTaG93IHRoZSBsYWJlbCBvbiBsYXJnZXIgc2NyZWVucyAqL31cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImhpZGRlbiB0cnVuY2F0ZSBtZDpibG9ja1wiPntsYWJlbH08L3NwYW4+XG4gICAgPC9DaGVja2JveD5cbiAgKTtcbn0pO1xuXG5DaGVja2JveEJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdDaGVja2JveEJ1dHRvbic7XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94QnV0dG9uO1xuIiwiaW1wb3J0IHsgZm9yd2FyZFJlZiwgUmVhY3ROb2RlLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBEaWFsb2dDbG9zZSxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nRGVzY3JpcHRpb24sXG4gIERpYWxvZ0Zvb3RlcixcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dUaXRsZSxcbn0gZnJvbSAnLi9EaWFsb2cnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgU2VsZWN0aW9uUHJvcHMgPSB7XG4gIHNlbGVjdEhhbmRsZXI/OiAoKSA9PiB2b2lkO1xuICBzZWxlY3RDbGFzc2VzPzogc3RyaW5nO1xuICBzZWxlY3RUZXh0Pzogc3RyaW5nO1xufTtcblxudHlwZSBEaWFsb2dUZW1wbGF0ZVByb3BzID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWFpbj86IFJlYWN0Tm9kZTtcbiAgYnV0dG9ucz86IFJlYWN0Tm9kZTtcbiAgbGVmdEJ1dHRvbnM/OiBSZWFjdE5vZGU7XG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvblByb3BzO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGhlYWRlckNsYXNzTmFtZT86IHN0cmluZztcbiAgZm9vdGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBzaG93Q2FuY2VsQnV0dG9uPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERpYWxvZ1RlbXBsYXRlID0gZm9yd2FyZFJlZigocHJvcHM6IERpYWxvZ1RlbXBsYXRlUHJvcHMsIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICBjb25zdCB7XG4gICAgdGl0bGUsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgbWFpbixcbiAgICBidXR0b25zLFxuICAgIGxlZnRCdXR0b25zLFxuICAgIHNlbGVjdGlvbixcbiAgICBjbGFzc05hbWUsXG4gICAgaGVhZGVyQ2xhc3NOYW1lLFxuICAgIGZvb3RlckNsYXNzTmFtZSxcbiAgICBzaG93Q2xvc2VCdXR0b24sXG4gICAgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWUsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgeyBzZWxlY3RIYW5kbGVyLCBzZWxlY3RDbGFzc2VzLCBzZWxlY3RUZXh0IH0gPSBzZWxlY3Rpb24gfHwge307XG4gIGNvbnN0IENhbmNlbCA9ICdjYW5jZWwnO1xuXG4gIGNvbnN0IGRlZmF1bHRTZWxlY3QgPVxuICAgICdiZy1ncmF5LTgwMCB0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktNzAwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6YmctZ3JheS0yMDAgZGFyazp0ZXh0LWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS0yMDAnO1xuICByZXR1cm4gKFxuICAgIDxEaWFsb2dDb250ZW50XG4gICAgICBzaG93Q2xvc2VCdXR0b249e3Nob3dDbG9zZUJ1dHRvbn1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbignc2hhZG93LTJ4bCBkYXJrOmJnLWdyYXktNzAwJywgY2xhc3NOYW1lIHx8ICcnKX1cbiAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgID5cbiAgICAgIDxEaWFsb2dIZWFkZXIgY2xhc3NOYW1lPXtjbihoZWFkZXJDbGFzc05hbWUgPz8gJycpfT5cbiAgICAgICAgPERpYWxvZ1RpdGxlIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gbGVhZGluZy02IHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktMjAwXCI+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L0RpYWxvZ1RpdGxlPlxuICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgIDxEaWFsb2dEZXNjcmlwdGlvbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTMwMFwiPlxuICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvRGlhbG9nRGVzY3JpcHRpb24+XG4gICAgICAgICl9XG4gICAgICA8L0RpYWxvZ0hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHgtNlwiPnttYWluID8gbWFpbiA6IG51bGx9PC9kaXY+XG4gICAgICA8RGlhbG9nRm9vdGVyIGNsYXNzTmFtZT17Zm9vdGVyQ2xhc3NOYW1lfT5cbiAgICAgICAgPGRpdj57bGVmdEJ1dHRvbnMgPyBsZWZ0QnV0dG9ucyA6IG51bGx9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWF1dG8gZ2FwLTNcIj5cbiAgICAgICAgICB7c2hvd0NhbmNlbEJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8RGlhbG9nQ2xvc2UgY2xhc3NOYW1lPVwiYm9yZGVyLWdyYXktMTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS02MDBcIj5cbiAgICAgICAgICAgICAge0NhbmNlbH1cbiAgICAgICAgICAgIDwvRGlhbG9nQ2xvc2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7YnV0dG9ucyA/IGJ1dHRvbnMgOiBudWxsfVxuICAgICAgICAgIHtzZWxlY3Rpb24gPyAoXG4gICAgICAgICAgICA8RGlhbG9nQ2xvc2VcbiAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0SGFuZGxlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtcbiAgICAgICAgICAgICAgICBzZWxlY3RDbGFzc2VzIHx8IGRlZmF1bHRTZWxlY3RcbiAgICAgICAgICAgICAgfSBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlci1ub25lIHB4LTQgcHktMiB0ZXh0LXNtYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3NlbGVjdFRleHR9XG4gICAgICAgICAgICA8L0RpYWxvZ0Nsb3NlPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvRGlhbG9nRm9vdGVyPlxuICAgIDwvRGlhbG9nQ29udGVudD5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2dUZW1wbGF0ZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBMYWJlbCxcbiAgTGlzdGJveCxcbiAgVHJhbnNpdGlvbixcbiAgTGlzdGJveEJ1dHRvbixcbiAgTGlzdGJveE9wdGlvbixcbiAgTGlzdGJveE9wdGlvbnMsXG59IGZyb20gJ0BoZWFkbGVzc3VpL3JlYWN0JztcbmltcG9ydCB0eXBlIHsgT3B0aW9uLCBPcHRpb25XaXRoSWNvbiwgRHJvcGRvd25WYWx1ZVNldHRlciB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHVzZU11bHRpU2VhcmNoIH0gZnJvbSAnLi9NdWx0aVNlYXJjaCc7XG5pbXBvcnQgeyBDaGVja01hcmsgfSBmcm9tICd+L3N2Z3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBTZWxlY3REcm9wRG93blByb3BzID0ge1xuICBpZD86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZyB8IG51bGwgfCBPcHRpb24gfCBPcHRpb25XaXRoSWNvbjtcbiAgc2V0VmFsdWU6IERyb3Bkb3duVmFsdWVTZXR0ZXIgfCAoKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpO1xuICB0YWJJbmRleD86IG51bWJlcjtcbiAgYXZhaWxhYmxlVmFsdWVzPzogc3RyaW5nW10gfCBPcHRpb25bXSB8IE9wdGlvbldpdGhJY29uW107XG4gIGVtcHR5VGl0bGU/OiBib29sZWFuO1xuICBzaG93QWJvdmU/OiBib29sZWFuO1xuICBzaG93TGFiZWw/OiBib29sZWFuO1xuICBpY29uU2lkZT86ICdsZWZ0JyB8ICdyaWdodCc7XG4gIG9wdGlvbkljb25TaWRlPzogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgcmVuZGVyT3B0aW9uPzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGN1cnJlbnRWYWx1ZUNsYXNzPzogc3RyaW5nO1xuICBvcHRpb25zTGlzdENsYXNzPzogc3RyaW5nO1xuICBvcHRpb25zQ2xhc3M/OiBzdHJpbmc7XG4gIHN1YkNvbnRhaW5lckNsYXNzTmFtZT86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VhcmNoQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2hvd09wdGlvbkljb24/OiBib29sZWFuO1xufTtcblxuZnVuY3Rpb24gZ2V0T3B0aW9uVGV4dChvcHRpb246IHN0cmluZyB8IE9wdGlvbiB8IE9wdGlvbldpdGhJY29uKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuICBpZiAoJ2xhYmVsJyBpbiBvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsID8/ICcnO1xuICB9XG4gIGlmICgndmFsdWUnIGluIG9wdGlvbikge1xuICAgIHJldHVybiAob3B0aW9uLnZhbHVlID8/ICcnKSArICcnO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gU2VsZWN0RHJvcERvd24oe1xuICB0aXRsZTogX3RpdGxlLFxuICB2YWx1ZSxcbiAgZGlzYWJsZWQsXG4gIHNldFZhbHVlLFxuICBhdmFpbGFibGVWYWx1ZXMsXG4gIHNob3dBYm92ZSA9IGZhbHNlLFxuICBzaG93TGFiZWwgPSB0cnVlLFxuICBlbXB0eVRpdGxlID0gZmFsc2UsXG4gIGljb25TaWRlID0gJ3JpZ2h0JyxcbiAgb3B0aW9uSWNvblNpZGUgPSAnbGVmdCcsXG4gIHBsYWNlaG9sZGVyLFxuICBjb250YWluZXJDbGFzc05hbWUsXG4gIG9wdGlvbnNMaXN0Q2xhc3MsXG4gIG9wdGlvbnNDbGFzcyxcbiAgY3VycmVudFZhbHVlQ2xhc3MsXG4gIHN1YkNvbnRhaW5lckNsYXNzTmFtZSxcbiAgY2xhc3NOYW1lLFxuICByZW5kZXJPcHRpb24sXG4gIHNlYXJjaENsYXNzTmFtZSxcbiAgc2VhcmNoUGxhY2Vob2xkZXIsXG4gIHNob3dPcHRpb25JY29uID0gZmFsc2UsXG59OiBTZWxlY3REcm9wRG93blByb3BzKSB7XG4gIGNvbnN0IHRyYW5zaXRpb25Qcm9wcyA9IHsgY2xhc3NOYW1lOiAndG9wLWZ1bGwgbXQtMycgfTtcbiAgaWYgKHNob3dBYm92ZSkge1xuICAgIHRyYW5zaXRpb25Qcm9wcy5jbGFzc05hbWUgPSAnYm90dG9tLWZ1bGwgbWItMyc7XG4gIH1cblxuICBsZXQgdGl0bGUgPSBfdGl0bGU7XG4gIGlmIChlbXB0eVRpdGxlKSB7XG4gICAgdGl0bGUgPSAnJztcbiAgfVxuXG4gIGNvbnN0IHZhbHVlcyA9IGF2YWlsYWJsZVZhbHVlcyA/PyBbXTtcblxuICAvLyBFbmFibGUgc2VhcmNoYWJsZSBzZWxlY3QgaWYgZW5vdWdoIGl0ZW1zIGFyZSBwcm92aWRlZC5cbiAgY29uc3QgW2ZpbHRlcmVkVmFsdWVzLCBzZWFyY2hSZW5kZXJdID0gdXNlTXVsdGlTZWFyY2g8c3RyaW5nW10gfCBPcHRpb25bXT4oe1xuICAgIGF2YWlsYWJsZU9wdGlvbnM6IHZhbHVlcyxcbiAgICBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsXG4gICAgZ2V0VGV4dEtleU92ZXJyaWRlOiAob3B0aW9uKSA9PiBnZXRPcHRpb25UZXh0KG9wdGlvbikudG9VcHBlckNhc2UoKSxcbiAgICBjbGFzc05hbWU6IHNlYXJjaENsYXNzTmFtZSxcbiAgICBkaXNhYmxlZCxcbiAgfSk7XG4gIGNvbnN0IGhhc1NlYXJjaFJlbmRlciA9IHNlYXJjaFJlbmRlciAhPSBudWxsO1xuICBjb25zdCBvcHRpb25zID0gaGFzU2VhcmNoUmVuZGVyID8gZmlsdGVyZWRWYWx1ZXMgOiB2YWx1ZXM7XG4gIGNvbnN0IHJlbmRlckljb24gPSBzaG93T3B0aW9uSWNvbiAmJiB2YWx1ZSAhPSBudWxsICYmICh2YWx1ZSBhcyBPcHRpb25XaXRoSWNvbikuaWNvbiAhPSBudWxsO1xuXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yJywgY29udGFpbmVyQ2xhc3NOYW1lID8/ICcnKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlIHctZnVsbCcsIHN1YkNvbnRhaW5lckNsYXNzTmFtZSA/PyAnJyl9PlxuICAgICAgICA8TGlzdGJveCB2YWx1ZT17dmFsdWV9IG9uQ2hhbmdlPXtzZXRWYWx1ZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgICAgICB7KHsgb3BlbiB9KSA9PiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8TGlzdGJveEJ1dHRvblxuICAgICAgICAgICAgICAgIHJlZj17YnV0dG9uUmVmfVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcGVuICYmIGJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUmVmLmN1cnJlbnQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICdyZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBmbGV4LWNvbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYmxhY2svMTAgYmctd2hpdGUgcHktMiBwbC0zIHByLTEwIHRleHQtbGVmdCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Ymctd2hpdGUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBzbTp0ZXh0LXNtJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3Nob3dMYWJlbCAmJiAoXG4gICAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC14cyB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwMFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGxlc3N1aS1saXN0Ym94LWxhYmVsLTpyMTpcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRsZXNzdWktc3RhdGU9XCJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggdy1mdWxsIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICdmbGV4IGgtNiBpdGVtcy1jZW50ZXIgZ2FwLTEgdHJ1bmNhdGUgdGV4dC1zbSB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgIXNob3dMYWJlbCA/ICd0ZXh0LXhzJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZUNsYXNzID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7IXNob3dMYWJlbCAmJiAhZW1wdHlUaXRsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwMFwiPnt0aXRsZX06PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7cmVuZGVySWNvbiAmJiBvcHRpb25JY29uU2lkZSAhPT0gJ3JpZ2h0JyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaWNvbi1tZCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgeyh2YWx1ZSBhcyBPcHRpb25XaXRoSWNvbikuaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJJY29uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpY29uLW1kIGFic29sdXRlIHJpZ2h0LTAgbXItOCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgeyh2YWx1ZSBhcyBPcHRpb25XaXRoSWNvbikuaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXRleHQtc2Vjb25kYXJ5XCI+e3BsYWNlaG9sZGVyfTwvc3Bhbj47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubGFiZWwgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwci0yXCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtZ3JheS00MDBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2hvd0Fib3ZlID8geyB0cmFuc2Zvcm06ICdzY2FsZVkoLTEpJyB9IDoge319XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCI2IDkgMTIgMTUgMTggOVwiPjwvcG9seWxpbmU+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvTGlzdGJveEJ1dHRvbj5cbiAgICAgICAgICAgICAgPFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBzaG93PXtvcGVufVxuICAgICAgICAgICAgICAgIGFzPVwiZGl2XCJcbiAgICAgICAgICAgICAgICBsZWF2ZT1cInRyYW5zaXRpb24gZWFzZS1pbiBkdXJhdGlvbi0xMDBcIlxuICAgICAgICAgICAgICAgIGxlYXZlRnJvbT1cIm9wYWNpdHktMTAwXCJcbiAgICAgICAgICAgICAgICBsZWF2ZVRvPVwib3BhY2l0eS0wXCJcbiAgICAgICAgICAgICAgICB7Li4udHJhbnNpdGlvblByb3BzfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPExpc3Rib3hPcHRpb25zXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnYWJzb2x1dGUgei0xMCBtdC0yIG1heC1oLTYwIHctZnVsbCBvdmVyZmxvdy1hdXRvIHJvdW5kZWQgYm9yZGVyIGJnLXdoaXRlIHRleHQteHMgcmluZy1ibGFjay8xMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6cmluZy13aGl0ZS8yMCBtZDp3LVsxMDAlXScsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNMaXN0Q2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtyZW5kZXJPcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8TGlzdGJveE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17J2xpc3Rib3gtcmVuZGVyLW9wdGlvbid9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e251bGx9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCByZWxhdGl2ZSBmbGV4IGgtWzQycHhdIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcGwtMyBwci05IHRleHQtZ3JheS04MDAgaG92ZXI6YmctZ3JheS0yMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zQ2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJPcHRpb24oKSBhcyBSZWFjdC5KU1guRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgPC9MaXN0Ym94T3B0aW9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtzZWFyY2hSZW5kZXIgYXMgUmVhY3QuSlNYLkVsZW1lbnR9XG4gICAgICAgICAgICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbjogc3RyaW5nIHwgT3B0aW9uLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gb3B0aW9uIDogKG9wdGlvbi5sYWJlbCA/PyBvcHRpb24udmFsdWUgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IG9wdGlvbiA6IChvcHRpb24udmFsdWUgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SWNvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoKG9wdGlvbi5pY29uIGFzIFJlYWN0LlJlYWN0Tm9kZSkgPz8gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhY3RpdmVWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IE9wdGlvbiA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGl2ZVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVZhbHVlID0gYWN0aXZlVmFsdWU/LnZhbHVlID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3Rib3hPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyh7IGFjdGl2ZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCBoLVs0MnB4XSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHBsLTMgcHItOSB0ZXh0LWdyYXktODAwIGhvdmVyOmJnLWdyYXktMjAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA/ICdiZy1zdXJmYWNlLWFjdGl2ZSB0ZXh0LXRleHQtcHJpbWFyeScgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zQ2xhc3MgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbGV4IGgtNiBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS0yMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID09PSB2YWx1ZSA/ICdmb250LXNlbWlib2xkJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpZGUgPT09ICdsZWZ0JyA/ICdtbC00JyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudEljb24gIT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtci0xJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25JY29uU2lkZSA9PT0gJ3JpZ2h0JyA/ICdhYnNvbHV0ZSByaWdodC0wIHByLTInIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50TGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWYWx1ZSA9PT0gYWN0aXZlVmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWJzb2x1dGUgaW5zZXQteS0wIGZsZXggaXRlbXMtY2VudGVyIHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktMjAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpZGUgPT09ICdsZWZ0JyA/ICdsZWZ0LTAgcGwtMicgOiAncmlnaHQtMCBwci0zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrTWFyayAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L0xpc3Rib3hPcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0xpc3Rib3hPcHRpb25zPlxuICAgICAgICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0xpc3Rib3g+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0RHJvcERvd247XG4iLCJpbXBvcnQgKiBhcyBBcmlha2l0IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IG1hdGNoU29ydGVyIH0gZnJvbSAnbWF0Y2gtc29ydGVyJztcbmltcG9ydCB7IFNlYXJjaCwgQ2hldnJvbkRvd24gfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZVJlZiwgbWVtbywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0UmVuZGVyZXIgfSBmcm9tICdAYXJpYWtpdC9yZWFjdC1jb3JlL3NlbGVjdC9zZWxlY3QtcmVuZGVyZXInO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCAnLi9BbmltYXRlUG9wb3Zlci5jc3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuaW50ZXJmYWNlIENvbnRyb2xDb21ib2JveFByb3BzIHtcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nO1xuICBkaXNwbGF5VmFsdWU/OiBzdHJpbmc7XG4gIGl0ZW1zOiBPcHRpb25XaXRoSWNvbltdO1xuICBzZXRWYWx1ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGFyaWFMYWJlbDogc3RyaW5nO1xuICBzZWFyY2hQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VsZWN0UGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGlzQ29sbGFwc2VkOiBib29sZWFuO1xuICBTZWxlY3RJY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGljb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNob3dDYXJhdD86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBpY29uU2lkZT86ICdsZWZ0JyB8ICdyaWdodCc7XG4gIHNlbGVjdElkPzogc3RyaW5nO1xufVxuXG5jb25zdCBST1dfSEVJR0hUID0gMzY7XG5cbmZ1bmN0aW9uIENvbnRyb2xDb21ib2JveCh7XG4gIHNlbGVjdGVkVmFsdWUsXG4gIGRpc3BsYXlWYWx1ZSxcbiAgaXRlbXMsXG4gIHNldFZhbHVlLFxuICBhcmlhTGFiZWwsXG4gIHNlYXJjaFBsYWNlaG9sZGVyLFxuICBzZWxlY3RQbGFjZWhvbGRlcixcbiAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICBpc0NvbGxhcHNlZCxcbiAgU2VsZWN0SWNvbixcbiAgc2hvd0NhcmF0LFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkLFxuICBpY29uQ2xhc3NOYW1lLFxuICBpY29uU2lkZSA9ICdsZWZ0JyxcbiAgc2VsZWN0SWQsXG59OiBDb250cm9sQ29tYm9ib3hQcm9wcykge1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2J1dHRvbldpZHRoLCBzZXRCdXR0b25XaWR0aF0gPSB1c2VTdGF0ZTxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBnZXRJdGVtID0gKG9wdGlvbjogT3B0aW9uV2l0aEljb24pID0+ICh7XG4gICAgaWQ6IGBpdGVtLSR7b3B0aW9uLnZhbHVlfWAsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICBpY29uOiBvcHRpb24uaWNvbixcbiAgfSk7XG5cbiAgY29uc3QgY29tYm9ib3ggPSBBcmlha2l0LnVzZUNvbWJvYm94U3RvcmUoe1xuICAgIGRlZmF1bHRJdGVtczogaXRlbXMubWFwKGdldEl0ZW0pLFxuICAgIHJlc2V0VmFsdWVPbkhpZGU6IHRydWUsXG4gICAgdmFsdWU6IHNlYXJjaFZhbHVlLFxuICAgIHNldFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgfSk7XG5cbiAgY29uc3Qgc2VsZWN0ID0gQXJpYWtpdC51c2VTZWxlY3RTdG9yZSh7XG4gICAgY29tYm9ib3gsXG4gICAgZGVmYXVsdEl0ZW1zOiBpdGVtcy5tYXAoZ2V0SXRlbSksXG4gICAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gICAgc2V0VmFsdWUsXG4gIH0pO1xuXG4gIGNvbnN0IG1hdGNoZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gbWF0Y2hTb3J0ZXIoaXRlbXMsIHNlYXJjaFZhbHVlLCB7XG4gICAgICBrZXlzOiBbJ3ZhbHVlJywgJ2xhYmVsJ10sXG4gICAgICBiYXNlU29ydDogKGEsIGIpID0+IChhLmluZGV4IDwgYi5pbmRleCA/IC0xIDogMSksXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMubWFwKGdldEl0ZW0pO1xuICB9LCBbc2VhcmNoVmFsdWUsIGl0ZW1zXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUmVmLmN1cnJlbnQgJiYgIWlzQ29sbGFwc2VkKSB7XG4gICAgICBzZXRCdXR0b25XaWR0aChidXR0b25SZWYuY3VycmVudC5vZmZzZXRXaWR0aCk7XG4gICAgfVxuICB9LCBbaXNDb2xsYXBzZWRdKTtcblxuICBjb25zdCBzZWxlY3RJY29uQ2xhc3NOYW1lID0gY24oXG4gICAgJ2ZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCcsXG4gICAgaWNvbkNsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3Qgb3B0aW9uSWNvbkNsYXNzTmFtZSA9IGNuKFxuICAgICdtci0yIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCcsXG4gICAgaWNvbkNsYXNzTmFtZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTEnLCBjb250YWluZXJDbGFzc05hbWUpfT5cbiAgICAgIDxBcmlha2l0LlNlbGVjdExhYmVsIHN0b3JlPXtzZWxlY3R9IGNsYXNzTmFtZT1cInNyLW9ubHlcIj5cbiAgICAgICAge2FyaWFMYWJlbH1cbiAgICAgIDwvQXJpYWtpdC5TZWxlY3RMYWJlbD5cbiAgICAgIDxBcmlha2l0LlNlbGVjdFxuICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgc3RvcmU9e3NlbGVjdH1cbiAgICAgICAgaWQ9e3NlbGVjdElkfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtZnVsbCBiZy1zdXJmYWNlLXNlY29uZGFyeScsXG4gICAgICAgICAgJ3RleHQtdGV4dC1wcmltYXJ5IGhvdmVyOmJnLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICAgICAgICdib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCcsXG4gICAgICAgICAgaXNDb2xsYXBzZWQgPyAnaC0xMCB3LTEwJyA6ICdoLTEwIHctZnVsbCByb3VuZGVkLXhsIHB4LTMgcHktMiB0ZXh0LXNtJyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtTZWxlY3RJY29uICE9IG51bGwgJiYgaWNvblNpZGUgPT09ICdsZWZ0JyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3NlbGVjdEljb25DbGFzc05hbWV9PntTZWxlY3RJY29ufTwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7IWlzQ29sbGFwc2VkICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleC1ncm93IHRydW5jYXRlIHRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICB7ZGlzcGxheVZhbHVlICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IGRpc3BsYXlWYWx1ZSB8fCBzZWxlY3RQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWx1ZSB8fCBzZWxlY3RQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIHtTZWxlY3RJY29uICE9IG51bGwgJiYgaWNvblNpZGUgPT09ICdyaWdodCcgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c2VsZWN0SWNvbkNsYXNzTmFtZX0+e1NlbGVjdEljb259PC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3dDYXJhdCAmJiA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LXRleHQtc2Vjb25kYXJ5XCIgLz59XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0FyaWFraXQuU2VsZWN0PlxuICAgICAgPEFyaWFraXQuU2VsZWN0UG9wb3ZlclxuICAgICAgICBzdG9yZT17c2VsZWN0fVxuICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgIHBvcnRhbFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdhbmltYXRlLXBvcG92ZXIgei01MCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBiZy1zdXJmYWNlLXNlY29uZGFyeSBzaGFkb3ctbGcnLFxuICAgICAgICApfVxuICAgICAgICBzdHlsZT17eyB3aWR0aDogaXNDb2xsYXBzZWQgPyAnMzAwcHgnIDogKGJ1dHRvbldpZHRoID8/ICczMDBweCcpIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHktMS41XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiBoLTQgdy00IC10cmFuc2xhdGUteS0xLzIgdGV4dC10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hcbiAgICAgICAgICAgICAgc3RvcmU9e2NvbWJvYm94fVxuICAgICAgICAgICAgICBhdXRvU2VsZWN0XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHJvdW5kZWQtbWQgYmctc3VyZmFjZS1zZWNvbmRhcnkgcHktMiBwbC05IHByLTMgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeSBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LWgtWzMwMHB4XSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hMaXN0IHN0b3JlPXtjb21ib2JveH0+XG4gICAgICAgICAgICA8U2VsZWN0UmVuZGVyZXIgc3RvcmU9e3NlbGVjdH0gaXRlbXM9e21hdGNoZXN9IGl0ZW1TaXplPXtST1dfSEVJR0hUfSBvdmVyc2Nhbj17NX0+XG4gICAgICAgICAgICAgIHsoeyB2YWx1ZSwgaWNvbiwgbGFiZWwsIC4uLml0ZW0gfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxBcmlha2l0LkNvbWJvYm94SXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgey4uLml0ZW19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHB4LTMgdGV4dC1zbScsXG4gICAgICAgICAgICAgICAgICAgICd0ZXh0LXRleHQtcHJpbWFyeSBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtW2FjdGl2ZS1pdGVtXTpiZy1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICByZW5kZXI9ezxBcmlha2l0LlNlbGVjdEl0ZW0gdmFsdWU9e3ZhbHVlfSAvPn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7aWNvbiAhPSBudWxsICYmIGljb25TaWRlID09PSAnbGVmdCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17b3B0aW9uSWNvbkNsYXNzTmFtZX0+e2ljb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleC1ncm93IHRydW5jYXRlIHRleHQtbGVmdFwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB7aWNvbiAhPSBudWxsICYmIGljb25TaWRlID09PSAncmlnaHQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e29wdGlvbkljb25DbGFzc05hbWV9PntpY29ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hJdGVtPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TZWxlY3RSZW5kZXJlcj5cbiAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hMaXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQXJpYWtpdC5TZWxlY3RQb3BvdmVyPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKENvbnRyb2xDb21ib2JveCk7XG4iLCJpbXBvcnQgeyBmb3J3YXJkUmVmLCBSZWFjdE5vZGUsIFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIE9HRGlhbG9nVGl0bGUsXG4gIE9HRGlhbG9nQ2xvc2UsXG4gIE9HRGlhbG9nRm9vdGVyLFxuICBPR0RpYWxvZ0hlYWRlcixcbiAgT0dEaWFsb2dDb250ZW50LFxuICBPR0RpYWxvZ0Rlc2NyaXB0aW9uLFxufSBmcm9tICcuL09yaWdpbmFsRGlhbG9nJztcbmltcG9ydCB7IHVzZUxvY2FsaXplIH0gZnJvbSAnfi9ob29rcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnfi9zdmdzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG50eXBlIFNlbGVjdGlvblByb3BzID0ge1xuICBzZWxlY3RIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgc2VsZWN0Q2xhc3Nlcz86IHN0cmluZztcbiAgc2VsZWN0VGV4dD86IHN0cmluZyB8IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgRGlhbG9nVGVtcGxhdGVQcm9wcyA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG1haW4/OiBSZWFjdE5vZGU7XG4gIGJ1dHRvbnM/OiBSZWFjdE5vZGU7XG4gIGxlZnRCdXR0b25zPzogUmVhY3ROb2RlO1xuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25Qcm9wcztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBvdmVybGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1haW5DbGFzc05hbWU/OiBzdHJpbmc7XG4gIGZvb3RlckNsYXNzTmFtZT86IHN0cmluZztcbiAgc2hvd0Nsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgc2hvd0NhbmNlbEJ1dHRvbj86IGJvb2xlYW47XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgT0dEaWFsb2dUZW1wbGF0ZSA9IGZvcndhcmRSZWYoKHByb3BzOiBEaWFsb2dUZW1wbGF0ZVByb3BzLCByZWY6IFJlZjxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuICBjb25zdCB7XG4gICAgdGl0bGUsXG4gICAgbWFpbixcbiAgICBidXR0b25zLFxuICAgIHNlbGVjdGlvbixcbiAgICBjbGFzc05hbWUsXG4gICAgbGVmdEJ1dHRvbnMsXG4gICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICBtYWluQ2xhc3NOYW1lLFxuICAgIGhlYWRlckNsYXNzTmFtZSxcbiAgICBmb290ZXJDbGFzc05hbWUsXG4gICAgc2hvd0Nsb3NlQnV0dG9uLFxuICAgIG92ZXJsYXlDbGFzc05hbWUsXG4gICAgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWUsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgeyBzZWxlY3RIYW5kbGVyLCBzZWxlY3RDbGFzc2VzLCBzZWxlY3RUZXh0LCBpc0xvYWRpbmcgfSA9IHNlbGVjdGlvbiB8fCB7fTtcblxuICBjb25zdCBkZWZhdWx0U2VsZWN0ID1cbiAgICAnYmctZ3JheS04MDAgdGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTcwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJnLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktMjAwJztcbiAgcmV0dXJuIChcbiAgICA8T0dEaWFsb2dDb250ZW50XG4gICAgICBvdmVybGF5Q2xhc3NOYW1lPXtvdmVybGF5Q2xhc3NOYW1lfVxuICAgICAgc2hvd0Nsb3NlQnV0dG9uPXtzaG93Q2xvc2VCdXR0b259XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3ctMTEvMTIgYm9yZGVyLW5vbmUgYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQnLCBjbGFzc05hbWUgPz8gJycpfVxuICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgPlxuICAgICAgPE9HRGlhbG9nSGVhZGVyIGNsYXNzTmFtZT17Y24oaGVhZGVyQ2xhc3NOYW1lID8/ICcnKX0+XG4gICAgICAgIDxPR0RpYWxvZ1RpdGxlPnt0aXRsZX08L09HRGlhbG9nVGl0bGU+XG4gICAgICAgIHtkZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgPE9HRGlhbG9nRGVzY3JpcHRpb24gY2xhc3NOYW1lPVwiaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgPC9PR0RpYWxvZ0Rlc2NyaXB0aW9uPlxuICAgICAgICApfVxuICAgICAgPC9PR0RpYWxvZ0hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncHgtMCBweS0yJywgbWFpbkNsYXNzTmFtZSl9PnttYWluICE9IG51bGwgPyBtYWluIDogbnVsbH08L2Rpdj5cbiAgICAgIDxPR0RpYWxvZ0Zvb3RlciBjbGFzc05hbWU9e2Zvb3RlckNsYXNzTmFtZX0+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAge2xlZnRCdXR0b25zICE9IG51bGwgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgZmxleCBoLWF1dG8gZ2FwLTMgbWF4LXNtOnctZnVsbCBtYXgtc206ZmxleC1jb2wgc206bXQtMCBzbTpmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICB7bGVmdEJ1dHRvbnN9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWF1dG8gZ2FwLTMgbWF4LXNtOnctZnVsbCBtYXgtc206ZmxleC1jb2wgc206ZmxleC1yb3dcIj5cbiAgICAgICAgICB7c2hvd0NhbmNlbEJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8T0dEaWFsb2dDbG9zZSBhc0NoaWxkPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgYXJpYS1sYWJlbD17bG9jYWxpemUoJ2NvbV91aV9jYW5jZWwnKX0+XG4gICAgICAgICAgICAgICAge2xvY2FsaXplKCdjb21fdWlfY2FuY2VsJyl9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9PR0RpYWxvZ0Nsb3NlPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2J1dHRvbnMgIT0gbnVsbCA/IGJ1dHRvbnMgOiBudWxsfVxuICAgICAgICAgIHtzZWxlY3Rpb24gPyAoXG4gICAgICAgICAgICA8T0dEaWFsb2dDbG9zZVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RIYW5kbGVyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake1xuICAgICAgICAgICAgICAgIHNlbGVjdENsYXNzZXMgPz8gZGVmYXVsdFNlbGVjdFxuICAgICAgICAgICAgICB9IGZsZXggaC0xMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBweC00IHB5LTIgdGV4dC1zbSBkaXNhYmxlZDpvcGFjaXR5LTgwIG1heC1zbTpvcmRlci1maXJzdCBtYXgtc206dy1mdWxsIHNtOm9yZGVyLW5vbmVgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNMb2FkaW5nID09PSB0cnVlID8gKFxuICAgICAgICAgICAgICAgIDxTcGlubmVyIGNsYXNzTmFtZT1cInNpemUtNCB0ZXh0LXdoaXRlXCIgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAoc2VsZWN0VGV4dCBhcyBSZWFjdC5KU1guRWxlbWVudClcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvT0dEaWFsb2dDbG9zZT5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L09HRGlhbG9nRm9vdGVyPlxuICAgIDwvT0dEaWFsb2dDb250ZW50PlxuICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IE9HRGlhbG9nVGVtcGxhdGU7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJy4vSW5wdXQnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IHR5cGUgSW5wdXRXaXRoRHJvcGRvd25Qcm9wcyA9IFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gJiB7XG4gIG9wdGlvbnM6IHN0cmluZ1tdO1xuICBvblNlbGVjdD86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xufTtcblxuY29uc3QgSW5wdXRXaXRoRHJvcGRvd24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIElucHV0V2l0aERyb3Bkb3duUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIG9wdGlvbnMsIG9uU2VsZWN0LCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKChwcm9wcy52YWx1ZSBhcyBzdHJpbmcpIHx8ICcnKTtcbiAgICBjb25zdCBbaGlnaGxpZ2h0ZWRJbmRleCwgc2V0SGlnaGxpZ2h0ZWRJbmRleF0gPSBSZWFjdC51c2VTdGF0ZSgtMSk7XG4gICAgY29uc3QgaW5wdXRSZWYgPSBSZWFjdC51c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCgtMSk7XG4gICAgICBpZiAob25TZWxlY3QpIHtcbiAgICAgICAgb25TZWxlY3QodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSBhcyBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50Pik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRJbnB1dFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xuICAgICAgICBwcm9wcy5vbkNoYW5nZShlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBzd2l0Y2ggKGUua2V5KSB7XG4gICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICghaXNPcGVuKSB7XG4gICAgICAgICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoKHByZXZJbmRleCkgPT5cbiAgICAgICAgICAgICAgcHJldkluZGV4IDwgb3B0aW9ucy5sZW5ndGggLSAxID8gcHJldkluZGV4ICsgMSA6IHByZXZJbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCgocHJldkluZGV4KSA9PiAocHJldkluZGV4ID4gMCA/IHByZXZJbmRleCAtIDEgOiAwKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKGlzT3BlbiAmJiBoaWdobGlnaHRlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0KG9wdGlvbnNbaGlnaGxpZ2h0ZWRJbmRleF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCgtMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQgJiYgIWlucHV0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgICAgICBzZXRIaWdobGlnaHRlZEluZGV4KC0xKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCIgcmVmPXtpbnB1dFJlZn0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUlucHV0Q2hhbmdlfVxuICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImRyb3Bkb3duLWxpc3RcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignYmctc3VyZmFjZS1zZWNvbmRhcnknLCBjbGFzc05hbWUgPz8gJycpfVxuICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtdGVydGlhcnkgYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBweC0yIGhvdmVyOnRleHQtc2Vjb25kYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLXByaW1hcnlcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKCFpc09wZW4pfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17aXNPcGVuID8gJ0Nsb3NlIGRyb3Bkb3duJyA6ICdPcGVuIGRyb3Bkb3duJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICAgIGQ9XCJNMTkgOWwtNyA3LTctN1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgaWQ9XCJkcm9wZG93bi1saXN0XCJcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHotMTAgbXQtMSBtYXgtaC02MCB3LWZ1bGwgb3ZlcmZsb3ctYXV0byByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyLW1lZGl1bSBiZy1zdXJmYWNlLXNlY29uZGFyeSBzaGFkb3ctbGcgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1yaW5nLXByaW1hcnlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e2luZGV4ID09PSBoaWdobGlnaHRlZEluZGV4fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAnY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1tZCBweC0zIHB5LTInLFxuICAgICAgICAgICAgICAgICAgJ2ZvY3VzOmJnLXN1cmZhY2UtdGVydGlhcnkgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctcmluZy1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGluZGV4ID09PSBoaWdobGlnaHRlZEluZGV4XG4gICAgICAgICAgICAgICAgICAgID8gJ2JnLXN1cmZhY2UtYWN0aXZlIHRleHQtcHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc3VyZmFjZS10ZXJ0aWFyeScsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3Qob3B0aW9uKX1cbiAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7b3B0aW9ufVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH0sXG4pO1xuXG5JbnB1dFdpdGhEcm9wZG93bi5kaXNwbGF5TmFtZSA9ICdJbnB1dFdpdGhEcm9wZG93bic7XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0V2l0aERyb3Bkb3duO1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBUU2hvd1RvYXN0IH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHVzZVRvYXN0IGZyb20gJ34vaG9va3MvdXNlVG9hc3QnO1xuXG50eXBlIFRvYXN0Q29udGV4dFR5cGUgPSB7XG4gIHNob3dUb2FzdDogKHsgbWVzc2FnZSwgc2V2ZXJpdHksIHNob3dJY29uLCBkdXJhdGlvbiB9OiBUU2hvd1RvYXN0KSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IFRvYXN0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8VG9hc3RDb250ZXh0VHlwZT4oe1xuICBzaG93VG9hc3Q6ICgpID0+ICh7fSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVRvYXN0Q29udGV4dCgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoVG9hc3RDb250ZXh0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVG9hc3RQcm92aWRlcih7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHsgc2hvd1RvYXN0IH0gPSB1c2VUb2FzdCgpO1xuXG4gIHJldHVybiA8VG9hc3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IHNob3dUb2FzdCB9fT57Y2hpbGRyZW59PC9Ub2FzdENvbnRleHQuUHJvdmlkZXI+O1xufVxuIl0sIm5hbWVzIjpbIl9qc3giLCJfanN4cyIsIkRpYWxvZyIsIkRpYWxvZ1RyaWdnZXIiLCJEaWFsb2dQb3J0YWwiLCJEaWFsb2dPdmVybGF5IiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0hlYWRlciIsIkRpYWxvZ0Zvb3RlciIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nRGVzY3JpcHRpb24iLCJEaWFsb2dDbG9zZSIsIlJlYWN0IiwiQ2hlY2tJY29uIiwiX0ZyYWdtZW50IiwiUmFkaXhTZWxlY3QiLCJTZWFyY2hJY29uIiwiU2VsZWN0IiwiU2VsZWN0TGFiZWwiLCJTZWxlY3RJdGVtIiwiQ2lyY2xlSGVscEljb24iLCJDaGVja2JveCIsIkxhYmVsIiwiT0dEaWFsb2dDb250ZW50IiwiT0dEaWFsb2dIZWFkZXIiLCJPR0RpYWxvZ1RpdGxlIiwiT0dEaWFsb2dEZXNjcmlwdGlvbiIsIk9HRGlhbG9nRm9vdGVyIiwiT0dEaWFsb2dDbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtNQUlhLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBb0IsS0FBWTtBQUNwRCxJQUFBLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5Qjs7QUNOYSxNQUFBLGFBQWEsR0FBRyxDQUFDLEdBQVcsS0FBSTtBQUMzQyxJQUFBLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlO0FBQ3JDLElBQUEsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvQixRQUFRLElBQUk7QUFDVixRQUFBLEtBQUssSUFBSTtZQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxD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
|
|
2879
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AnimatedSearchInput, AnimatedTabs, AnthropicIcon, AnthropicMinimalIcon, AppleIcon, ArchiveIcon, AssistantIcon, AttachmentIcon, AudioPaths, Avatar, AzureMinimalIcon, Badge, BedrockIcon, BirthdayIcon, Blocks, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ChatGPTMinimalIcon, CheckMark, Checkbox, CheckboxButton, CircleHelpIcon, Clipboard, CodePaths, CodeyIcon, ComboboxComponent as Combobox, ContinueIcon, ControlCombobox$1 as ControlCombobox, CrossIcon, CustomMinimalIcon, DataIcon, DataTable, DelayedRender, Dialog$1 as Dialog, DialogButton, DialogClose$1 as DialogClose, DialogContent$1 as DialogContent, DialogDescription$1 as DialogDescription, DialogFooter$1 as DialogFooter, DialogHeader$1 as DialogHeader, DialogOverlay, DialogTemplate, DialogTitle$1 as DialogTitle, DialogTrigger$1 as DialogTrigger, DiscordIcon, DotsIcon, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownPopup, ESide, EditIcon, ExperimentIcon, FacebookIcon, FileIcon, FilePaths, FileUpload, FilterInput, FormInput, GPTIcon, GearIcon, GeminiIcon, GithubIcon, GoogleIcon, Google as GoogleIconChat, GoogleMinimalIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, InfoHoverCard, Input, InputCombobox, InputNumber, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputWithDropdown, Label, LightningIcon, LinkIcon, ListeningIcon, LockIcon, LogOutIcon, MCPIcon, MessagesSquared, MinimalPlugin, MobileSidebar, MultiSelect, NewChatIcon, NotificationSeverity, Dialog as OGDialog, DialogClose as OGDialogClose, DialogContent as OGDialogContent, DialogDescription as OGDialogDescription, DialogFooter as OGDialogFooter, DialogHeader as OGDialogHeader, DialogOverlay as OGDialogOverlay, DialogPortal as OGDialogPortal, OGDialogTemplate, DialogTitle as OGDialogTitle, DialogTrigger as OGDialogTrigger, OpenAIMinimalIcon, OpenIDIcon, PaLMIcon, PaLMinimalIcon, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PersonalizationIcon, PinIcon, PixelCard, Plugin, Progress, QuestionMark, Radio, RegenerateIcon, ResizableHandle, ResizableHandleAlt, ResizablePanel, ResizablePanelGroup, SamlIcon, SaveIcon, SecretInput, Select, SelectContent, SelectDropDown, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, SendMessageIcon, Separator, SharePointIcon, SheetPaths, Sidebar, Skeleton, Slider, Sparkles, SpeechIcon, Spinner, SplitText, SquirclePlusIcon, StopGeneratingIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableRowHeader, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TextPaths, Textarea, TextareaAutosize, ThemeContext, ThemeProvider, ThemeSelector, ThumbDownIcon, ThumbUpIcon, Toast, ToastContext, ToastProvider, TooltipAnchor, TrashIcon, UserIcon, VectorIcon, VideoPaths, VolumeIcon, VolumeMuteIcon, XAIcon, applyFontSize, applyTheme, buttonVariants, chatDirectionAtom, cn, darkTheme, defaultTheme, fontSizeAtom, getInitialTheme, isDark, langAtom, logger, themeColorsAtom, themeModeAtom, themeNameAtom, toastState, useAvatar, useCombobox, useDelayedRender, useLocalize, useMediaQuery, useMultiSearch, useOnClickOutside, useTheme, useToast, useToastContext };
|
|
2880
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy91dGlscy50cyIsIi4uL3NyYy91dGlscy90aGVtZS50cyIsIi4uL3NyYy91dGlscy9sb2dnZXIudHMiLCIuLi9zcmMvY29tcG9uZW50cy9BY2NvcmRpb24udHN4IiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9jb21wb25lbnRzL0FuaW1hdGVkVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BbGVydERpYWxvZy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CcmVhZGNydW1iLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC50c3giLCIuLi9zcmMvY29tbW9uL2VudW0udHMiLCIuLi9zcmMvc3RvcmUudHMiLCIuLi9zcmMvaG9va3MvdXNlVG9hc3QudHMiLCIuLi9zcmMvaG9va3MvdXNlQXZhdGFyLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUNvbWJvYm94LnRzIiwiLi4vc3JjL2hvb2tzL3VzZUxvY2FsaXplLnRzIiwiLi4vc3JjL2hvb2tzL3VzZU1lZGlhUXVlcnkudHN4IiwiLi4vc3JjL2hvb2tzL3VzZURlbGF5ZWRSZW5kZXIudHN4IiwiLi4vc3JjL2hvb2tzL3VzZU9uQ2xpY2tPdXRzaWRlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvRGlhbG9nLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duTWVudS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ib3ZlckNhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXROdW1iZXIudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU2VjcmV0SW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRmlsdGVySW5wdXQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTGFiZWwudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvT3JpZ2luYWxEaWFsb2cudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUXVlc3Rpb25NYXJrLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NsaWRlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9TZXBhcmF0b3IudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRDb21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ta2VsZXRvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Td2l0Y2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFibGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGFicy50c3giLCIuLi9zcmMvY29tcG9uZW50cy9UYWcudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWEudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvVGV4dGFyZWFBdXRvc2l6ZS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub2FzdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ub29sdGlwLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUHJvZ3Jlc3MudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRPVFAudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvTXVsdGlTZWFyY2gudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvUmVzaXphYmxlLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9SYWRpby50c3giLCIuLi9zcmMvY29tcG9uZW50cy9CYWRnZS50c3giLCIuLi9zcmMvc3Zncy9BcmNoaXZlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9CbG9ja3MudHN4IiwiLi4vc3JjL3N2Z3MvUGx1Z2luLnRzeCIsIi4uL3NyYy9zdmdzL0dQVEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRWRpdEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRGF0YUljb24udHN4IiwiLi4vc3JjL3N2Z3MvU2lkZWJhci50c3giLCIuLi9zcmMvc3Zncy9Nb2JpbGVTaWRlYmFyLnRzeCIsIi4uL3NyYy9zdmdzL1NwaW5uZXIudHN4IiwiLi4vc3JjL3N2Z3MvQ2xpcGJvYXJkLnRzeCIsIi4uL3NyYy9zdmdzL0NoZWNrTWFyay50c3giLCIuLi9zcmMvc3Zncy9Dcm9zc0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvTG9nT3V0SWNvbi50c3giLCIuLi9zcmMvc3Zncy9DdXN0b21NaW5pbWFsSWNvbi50c3giLCIuLi9zcmMvc3Zncy9MaWdodG5pbmdJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0F0dGFjaG1lbnRJY29uLnRzeCIsIi4uL3NyYy9zdmdzL01lc3NhZ2VzU3F1YXJlZC50c3giLCIuLi9zcmMvc3Zncy9TdG9wR2VuZXJhdGluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvUmVnZW5lcmF0ZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ29udGludWVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dvb2dsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvRmFjZWJvb2tJY29uLnRzeCIsIi4uL3NyYy9zdmdzL09wZW5JREljb24udHN4IiwiLi4vc3JjL3N2Z3MvR2l0aHViSWNvbi50c3giLCIuLi9zcmMvc3Zncy9EaXNjb3JkSWNvbi50c3giLCIuLi9zcmMvc3Zncy9BcHBsZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvU2FtbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQW50aHJvcGljSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TZW5kSWNvbi50c3giLCIuLi9zcmMvc3Zncy9MaW5rSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Eb3RzSWNvbi50c3giLCIuLi9zcmMvc3Zncy9HZWFySWNvbi50c3giLCIuLi9zcmMvc3Zncy9QaW5JY29uLnRzeCIsIi4uL3NyYy9zdmdzL1RyYXNoSWNvbi50c3giLCIuLi9zcmMvc3Zncy9NaW5pbWFsUGx1Z2luLnRzeCIsIi4uL3NyYy9zdmdzL0F6dXJlTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvT3BlbkFJTWluaW1hbEljb24udHN4IiwiLi4vc3JjL3N2Z3MvQ2hhdEdQVE1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BhTE1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL1BhTE1JY29uLnRzeCIsIi4uL3NyYy9zdmdzL0NvZGV5SWNvbi50c3giLCIuLi9zcmMvc3Zncy9HZW1pbmlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0dvb2dsZU1pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0FudGhyb3BpY01pbmltYWxJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0xpc3RlbmluZ0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvVm9sdW1lSWNvbi50c3giLCIuLi9zcmMvc3Zncy9Wb2x1bWVNdXRlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TZW5kTWVzc2FnZUljb24udHN4IiwiLi4vc3JjL3N2Z3MvVXNlckljb24udHN4IiwiLi4vc3JjL3N2Z3MvTG9ja0ljb24udHN4IiwiLi4vc3JjL3N2Z3MvTmV3Q2hhdEljb24udHN4IiwiLi4vc3JjL3N2Z3MvRXhwZXJpbWVudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvR29vZ2xlSWNvbkNoYXQudHN4IiwiLi4vc3JjL3N2Z3MvQmlydGhkYXlJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0Fzc2lzdGFudEljb24udHN4IiwiLi4vc3JjL3N2Z3MvU3BhcmtsZXMudHN4IiwiLi4vc3JjL3N2Z3MvU3BlZWNoSWNvbi50c3giLCIuLi9zcmMvc3Zncy9TYXZlSWNvbi50c3giLCIuLi9zcmMvc3Zncy9DaXJjbGVIZWxwSWNvbi50c3giLCIuLi9zcmMvc3Zncy9CZWRyb2NrSWNvbi50c3giLCIuLi9zcmMvc3Zncy9UaHVtYlVwSWNvbi50c3giLCIuLi9zcmMvc3Zncy9UaHVtYkRvd25JY29uLnRzeCIsIi4uL3NyYy9zdmdzL1hBSWNvbi50c3giLCIuLi9zcmMvc3Zncy9QZXJzb25hbGl6YXRpb25JY29uLnRzeCIsIi4uL3NyYy9zdmdzL01DUEljb24udHN4IiwiLi4vc3JjL3N2Z3MvVmVjdG9ySWNvbi50c3giLCIuLi9zcmMvc3Zncy9TcXVpcmNsZVBsdXNJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0F1ZGlvUGF0aHMudHN4IiwiLi4vc3JjL3N2Z3MvQ29kZVBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL0ZpbGVJY29uLnRzeCIsIi4uL3NyYy9zdmdzL0ZpbGVQYXRocy50c3giLCIuLi9zcmMvc3Zncy9TaGVldFBhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1RleHRQYXRocy50c3giLCIuLi9zcmMvc3Zncy9WaWRlb1BhdGhzLnRzeCIsIi4uL3NyYy9zdmdzL1NoYXJlUG9pbnRJY29uLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0F2YXRhci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Db21ib2JveC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9Ecm9wZG93bi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9BbmltYXRlZFNlYXJjaElucHV0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0RhdGFUYWJsZS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9TcGxpdFRleHQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRm9ybUlucHV0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL1BpeGVsQ2FyZC50c3giLCIuLi9zcmMvY29tcG9uZW50cy9GaWxlVXBsb2FkLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL011bHRpU2VsZWN0LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duUG9wdXAudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRGVsYXllZFJlbmRlci50c3giLCIuLi9zcmMvdGhlbWUvdXRpbHMvYXBwbHlUaGVtZS50cyIsIi4uL3NyYy90aGVtZS9hdG9tcy90aGVtZUF0b21zLnRzIiwiLi4vc3JjL3RoZW1lL2NvbnRleHQvVGhlbWVQcm92aWRlci50c3giLCIuLi9zcmMvdGhlbWUvdGhlbWVzL2RlZmF1bHQudHMiLCIuLi9zcmMvdGhlbWUvdGhlbWVzL2RhcmsudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaGVtZVNlbGVjdG9yLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL0luZm9Ib3ZlckNhcmQudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQ2hlY2tib3hCdXR0b24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvRGlhbG9nVGVtcGxhdGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvU2VsZWN0RHJvcERvd24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvQ29udHJvbENvbWJvYm94LnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL09HRGlhbG9nVGVtcGxhdGUudHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvSW5wdXRXaXRoRHJvcERvd24udHN4IiwiLi4vc3JjL1Byb3ZpZGVycy9Ub2FzdENvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEVTTSB1dGlsaXR5IGZ1bmN0aW9uc1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuXG5leHBvcnQgY29uc3QgY24gPSAoLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBhcHBseUZvbnRTaXplID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGNvbnN0IHNpemUgPSB2YWwuc3BsaXQoJy0nKVsxXTsgLy8gVGhpcyB3aWxsIGJlICd4cycsICdzbScsICdiYXNlJywgJ2xnJywgb3IgJ3hsJ1xuXG4gIHN3aXRjaCAoc2l6ZSkge1xuICAgIGNhc2UgJ3hzJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzAuNzVyZW0nKTsgLy8gMTJweFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc20nOlxuICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1tYXJrZG93bi1mb250LXNpemUnLCAnMC44NzVyZW0nKTsgLy8gMTRweFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZSc6XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1hcmtkb3duLWZvbnQtc2l6ZScsICcxcmVtJyk7IC8vIDE2cHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xnJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzEuMTI1cmVtJyk7IC8vIDE4cHhcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3hsJzpcbiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWFya2Rvd24tZm9udC1zaXplJywgJzEuMjVyZW0nKTsgLy8gMjBweFxuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbml0aWFsVGhlbWUgPSAoKSA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgY29uc3Qgc3RvcmVkUHJlZnMgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NvbG9yLXRoZW1lJyk7XG4gICAgaWYgKHR5cGVvZiBzdG9yZWRQcmVmcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBzdG9yZWRQcmVmcztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyTWVkaWEgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIGlmICh1c2VyTWVkaWEubWF0Y2hlcykge1xuICAgICAgcmV0dXJuICdkYXJrJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJ2xpZ2h0Jztcbn07XG4iLCJjb25zdCBpc0RldmVsb3BtZW50ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCc7XG5jb25zdCBpc0xvZ2dlckVuYWJsZWQgPSBwcm9jZXNzLmVudi5WSVRFX0VOQUJMRV9MT0dHRVIgPT09ICd0cnVlJztcbmNvbnN0IGxvZ2dlckZpbHRlciA9IHByb2Nlc3MuZW52LlZJVEVfTE9HR0VSX0ZJTFRFUiB8fCAnJztcblxudHlwZSBMb2dGdW5jdGlvbiA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ7XG5cbmNvbnN0IGNyZWF0ZUxvZ0Z1bmN0aW9uID0gKFxuICBjb25zb2xlTWV0aG9kOiBMb2dGdW5jdGlvbixcbiAgdHlwZT86ICdsb2cnIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdpbmZvJyB8ICdkZWJ1ZycgfCAnZGlyJyxcbik6IExvZ0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICBpZiAoaXNEZXZlbG9wbWVudCB8fCBpc0xvZ2dlckVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyA/IGFyZ3NbMF0gOiAnJztcbiAgICAgIGlmIChzaG91bGRMb2codGFnKSkge1xuICAgICAgICBpZiAodGFnICYmIHR5cGVvZiBhcmdzWzFdID09PSAnc3RyaW5nJyAmJiB0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgY29uc29sZU1ldGhvZChgWyR7dGFnfV0gJHthcmdzWzFdfWAsIC4uLmFyZ3Muc2xpY2UoMikpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZyAmJiBhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zb2xlTWV0aG9kKGBbJHt0YWd9XWAsIC4uLmFyZ3Muc2xpY2UoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGVNZXRob2QoLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBsb2dnZXIgPSB7XG4gIGxvZzogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS5sb2csICdsb2cnKSxcbiAgZGlyOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLmRpciwgJ2RpcicpLFxuICB3YXJuOiBjcmVhdGVMb2dGdW5jdGlvbihjb25zb2xlLndhcm4sICd3YXJuJyksXG4gIGluZm86IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUuaW5mbywgJ2luZm8nKSxcbiAgZXJyb3I6IGNyZWF0ZUxvZ0Z1bmN0aW9uKGNvbnNvbGUuZXJyb3IsICdlcnJvcicpLFxuICBkZWJ1ZzogY3JlYXRlTG9nRnVuY3Rpb24oY29uc29sZS5kZWJ1ZywgJ2RlYnVnJyksXG59O1xuXG5mdW5jdGlvbiBzaG91bGRMb2codGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFsb2dnZXJGaWx0ZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvKiBJZiBubyB0YWcgaXMgcHJvdmlkZWQsIGFsd2F5cyBsb2cgKi9cbiAgaWYgKCF0YWcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbG9nZ2VyRmlsdGVyXG4gICAgLnNwbGl0KCcsJylcbiAgICAuc29tZSgoZmlsdGVyKSA9PiB0YWcudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCkpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbG9nZ2VyO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQWNjb3JkaW9uUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1hY2NvcmRpb24nO1xuaW1wb3J0IHsgQ2hldnJvbkRvd25JY29uIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWljb25zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IEFjY29yZGlvbiA9IEFjY29yZGlvblByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBBY2NvcmRpb25JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBY2NvcmRpb25QcmltaXRpdmUuSXRlbSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignYm9yZGVyLWInLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkFjY29yZGlvbkl0ZW0uZGlzcGxheU5hbWUgPSAnQWNjb3JkaW9uSXRlbSc7XG5cbmNvbnN0IEFjY29yZGlvblRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBY2NvcmRpb25QcmltaXRpdmUuVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBY2NvcmRpb25QcmltaXRpdmUuSGVhZGVyIGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICA8QWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGhvdmVyOnVuZGVybGluZSBbJltkYXRhLXN0YXRlPW9wZW5dPnN2Z106cm90YXRlLTE4MCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPENoZXZyb25Eb3duSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IHNocmluay0wIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDBcIiAvPlxuICAgIDwvQWNjb3JkaW9uUHJpbWl0aXZlLlRyaWdnZXI+XG4gIDwvQWNjb3JkaW9uUHJpbWl0aXZlLkhlYWRlcj5cbikpO1xuQWNjb3JkaW9uVHJpZ2dlci5kaXNwbGF5TmFtZSA9IEFjY29yZGlvblByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBY2NvcmRpb25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWNjb3JkaW9uUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWNjb3JkaW9uUHJpbWl0aXZlLkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9XCJvdmVyZmxvdy15LWhpZGRlbiBvdmVyZmxvdy14LXZpc2libGUgdGV4dC1zbSB0cmFuc2l0aW9uLW9wYWNpdHkgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLWFjY29yZGlvbi11cCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWFjY29yZGlvbi1kb3duIGRhdGEtW3N0YXRlPWNsb3NlZF06b3BhY2l0eS0wIGRhdGEtW3N0YXRlPW9wZW5dOm9wYWNpdHktMTAwXCJcbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3BiLTQgcHQtMCcsIGNsYXNzTmFtZSl9PntjaGlsZHJlbn08L2Rpdj5cbiAgPC9BY2NvcmRpb25QcmltaXRpdmUuQ29udGVudD5cbikpO1xuQWNjb3JkaW9uQ29udGVudC5kaXNwbGF5TmFtZSA9IEFjY29yZGlvblByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBBY2NvcmRpb24sIEFjY29yZGlvbkl0ZW0sIEFjY29yZGlvblRyaWdnZXIsIEFjY29yZGlvbkNvbnRlbnQgfTtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJpbXBvcnQgKiBhcyBBcmlha2l0IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmltcG9ydCAnLi9BbmltYXRlZFRhYnMuY3NzJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJJdGVtIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhYmVsOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuaW1hdGVkVGFic1Byb3BzIHtcbiAgdGFiczogVGFiSXRlbVtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYkxpc3RDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYkNsYXNzTmFtZT86IHN0cmluZztcbiAgdGFiUGFuZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYkxpc3RQcm9wcz86IEFyaWFraXQuVGFiTGlzdFByb3BzO1xuICBjb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRTZWxlY3RlZElkPzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiB1c2VQcmV2aW91czxUPih2YWx1ZTogVCkge1xuICBjb25zdCByZWYgPSB1c2VSZWY8VCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9LCBbdmFsdWVdKTtcbiAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuXG5jb25zdCBUYWIgPSBmb3J3YXJkUmVmPEVsZW1lbnRSZWY8dHlwZW9mIEFyaWFraXQuVGFiPiwgQXJpYWtpdC5UYWJQcm9wcz4oZnVuY3Rpb24gVGFiKHByb3BzLCByZWYpIHtcbiAgY29uc3QgdGFiUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFiRWxlbWVudCA9IHRhYlJlZi5jdXJyZW50O1xuICAgIGlmICghdGFiRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXBkYXRlU3RhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGFiRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnKSA9PT0gJ3RydWUnO1xuICAgICAgdGFiRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlU3RhdGUoKTtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodXBkYXRlU3RhdGUpO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGFiRWxlbWVudCwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnYXJpYS1zZWxlY3RlZCddIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuVGFiXG4gICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgIC8vIEZvcndhcmQgdGhlIHJlZiB0byBib3RoIG91ciBsb2NhbCByZWYgYW5kIHRoZSBwcm92aWRlZCByZWZcbiAgICAgICAgdGFiUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmKG5vZGUpO1xuICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2BhbmltYXRlZC10YWIgYXJpYS1zZWxlY3RlZDp0ZXh0LXRva2VuLXRleHQtcHJpbWFyeSBmbGV4IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB3aGl0ZXNwYWNlLW5vd3JhcCBib3JkZXItbm9uZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9ycyBhcmlhLWRpc2FibGVkOm9wYWNpdHktNTAgJHtwcm9wcy5jbGFzc05hbWUgfHwgJyd9YH1cbiAgICAvPlxuICApO1xufSk7XG5cbmNvbnN0IFRhYlBhbmVsID0gZm9yd2FyZFJlZjxFbGVtZW50UmVmPHR5cGVvZiBBcmlha2l0LlRhYlBhbmVsPiwgQXJpYWtpdC5UYWJQYW5lbFByb3BzPihcbiAgZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHRhYiA9IEFyaWFraXQudXNlVGFiQ29udGV4dCgpO1xuICAgIGNvbnN0IHByZXZpb3VzVGFiSWQgPSB1c2VQcmV2aW91cyhBcmlha2l0LnVzZVN0b3JlU3RhdGUodGFiLCAnc2VsZWN0ZWRJZCcpKTtcbiAgICBjb25zdCB3YXNPcGVuID0gcHJvcHMudGFiSWQgJiYgcHJldmlvdXNUYWJJZCA9PT0gcHJvcHMudGFiSWQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFyaWFraXQuVGFiUGFuZWxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgZGF0YS13YXMtb3Blbj17d2FzT3BlbiB8fCB1bmRlZmluZWR9XG4gICAgICAgIGNsYXNzTmFtZT17YGFuaW1hdGVkLXRhYi1wYW5lbCBtYXgtdy1mdWxsICR7cHJvcHMuY2xhc3NOYW1lIHx8ICcnfWB9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRUYWJzKHtcbiAgdGFicyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIHRhYkxpc3RDbGFzc05hbWUgPSAnJyxcbiAgdGFiQ2xhc3NOYW1lID0gJycsXG4gIHRhYlBhbmVsQ2xhc3NOYW1lID0gJycsXG4gIGNvbnRhaW5lckNsYXNzTmFtZSA9ICcnLFxuICB0YWJMaXN0UHJvcHMgPSB7fSxcbiAgZGVmYXVsdFNlbGVjdGVkSWQsXG59OiBBbmltYXRlZFRhYnNQcm9wcykge1xuICBjb25zdCB0YWJJZHMgPSB0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gdGFiLmlkIHx8IGB0YWItJHtpbmRleH1gKTtcbiAgY29uc3QgZmlyc3RUYWJJZCA9IGRlZmF1bHRTZWxlY3RlZElkIHx8IHRhYklkc1swXTtcbiAgY29uc3QgdGFiTGlzdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFiTGlzdCA9IHRhYkxpc3RSZWYuY3VycmVudDtcbiAgICBpZiAoIXRhYkxpc3QpIHJldHVybjtcblxuICAgIC8vIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdW5kZXJsaW5lIHBvc2l0aW9uXG4gICAgY29uc3QgdXBkYXRlVW5kZXJsaW5lID0gKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGFiTGlzdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zdGF0ZT1cImFjdGl2ZVwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKCFhY3RpdmVUYWIpIHJldHVybjtcblxuICAgICAgdGFiTGlzdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10YWItbGVmdCcsIGAke2FjdGl2ZVRhYi5vZmZzZXRMZWZ0fXB4YCk7XG4gICAgICB0YWJMaXN0LnN0eWxlLnNldFByb3BlcnR5KCctLXRhYi13aWR0aCcsIGAke2FjdGl2ZVRhYi5vZmZzZXRXaWR0aH1weGApO1xuICAgIH07XG5cbiAgICB1cGRhdGVVbmRlcmxpbmUoKTtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodXBkYXRlVW5kZXJsaW5lKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhYkxpc3QsIHsgYXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2RhdGEtc3RhdGUnXSB9KTtcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFt0YWJzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YHctZnVsbCAke2NsYXNzTmFtZX1gfT5cbiAgICAgIDxBcmlha2l0LlRhYlByb3ZpZGVyIGRlZmF1bHRTZWxlY3RlZElkPXtmaXJzdFRhYklkfT5cbiAgICAgICAgPEFyaWFraXQuVGFiTGlzdFxuICAgICAgICAgIHJlZj17dGFiTGlzdFJlZn1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGFic1wiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgYW5pbWF0ZWQtdGFiLWxpc3QgZmxleCBweS0xICR7dGFiTGlzdENsYXNzTmFtZX1gfVxuICAgICAgICAgIHsuLi50YWJMaXN0UHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxUYWJcbiAgICAgICAgICAgICAga2V5PXt0YWJJZHNbaW5kZXhdfVxuICAgICAgICAgICAgICBpZD17dGFiSWRzW2luZGV4XX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RhYi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0YWJDbGFzc05hbWV9XG4gICAgICAgICAgICAgIGRhdGEtc3RhdGU9e3RhYklkc1tpbmRleF0gPT09IGZpcnN0VGFiSWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSd9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsvKiBUeXBlU2NyaXB0IHdvcmthcm91bmQgZm9yIFJlYWN0IGkxOG5leHQgY2hpbGRyZW4gdHlwZSBjb21wYXRpYmlsaXR5ICovfVxuICAgICAgICAgICAgICB7dGFiLmxhYmVsfVxuICAgICAgICAgICAgPC9UYWI+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQXJpYWtpdC5UYWJMaXN0PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2FuaW1hdGVkLXBhbmVscyByZWxhdGl2ZSBmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHAtMCcsXG4gICAgICAgICAgICBjb250YWluZXJDbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFRhYlBhbmVsXG4gICAgICAgICAgICAgIGtleT17YHBhbmVsLSR7dGFiSWRzW2luZGV4XX1gfVxuICAgICAgICAgICAgICBpZD17YHBhbmVsLSR7dGFiSWRzW2luZGV4XX1gfVxuICAgICAgICAgICAgICB0YWJJZD17dGFiSWRzW2luZGV4XX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0YWJQYW5lbENsYXNzTmFtZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgey8qIFR5cGVTY3JpcHQgd29ya2Fyb3VuZCBmb3IgUmVhY3QgaTE4bmV4dCBjaGlsZHJlbiB0eXBlIGNvbXBhdGliaWxpdHkgKi99XG4gICAgICAgICAgICAgIHt0YWIuY29udGVudH1cbiAgICAgICAgICAgIDwvVGFiUGFuZWw+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Bcmlha2l0LlRhYlByb3ZpZGVyPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQWxlcnREaWFsb2dQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWFsZXJ0LWRpYWxvZyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBBbGVydERpYWxvZyA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nVHJpZ2dlciA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRyaWdnZXI7XG5cbnR5cGUgQWxlcnRQb3J0YWxQcm9wcyA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFsZXJ0RGlhbG9nUG9ydGFsUHJvcHMgJiB7IGNsYXNzTmFtZT86IHN0cmluZyB9O1xuXG5jb25zdCBBbGVydERpYWxvZ1BvcnRhbCA9ICh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogQWxlcnRQb3J0YWxQcm9wcykgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLihwcm9wcyBhcyBBbGVydFBvcnRhbFByb3BzKX0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotNTAgZmxleCBpdGVtcy1lbmQganVzdGlmeS1jZW50ZXIgc206aXRlbXMtY2VudGVyXCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gIDwvQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsPlxuKTtcbkFsZXJ0RGlhbG9nUG9ydGFsLmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmaXhlZCBpbnNldC0wIHotNTAgYmctZ3JheS01MDAvOTAgdHJhbnNpdGlvbi1vcGFjaXR5IGFuaW1hdGUtaW4gZmFkZS1pbiBkYXJrOmJnLWdyYXktODAwLzkwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dPdmVybGF5LmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQb3J0YWw+XG4gICAgPEFsZXJ0RGlhbG9nT3ZlcmxheSAvPlxuICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmaXhlZCB6LTUwIGdyaWQgdy1mdWxsIG1heC13LWxnIHNjYWxlLTEwMCBnYXAtNCBiZy13aGl0ZSBwLTYgb3BhY2l0eS0xMDAgYW5pbWF0ZS1pbiBmYWRlLWluLTkwIHNsaWRlLWluLWZyb20tYm90dG9tLTEwIHNtOnJvdW5kZWQtbGcgc206em9vbS1pbi05MCBzbTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0wIG1kOnctZnVsbCcsXG4gICAgICAgICdkYXJrOmJnLWdyYXktOTAwJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0FsZXJ0RGlhbG9nUG9ydGFsPlxuKSk7XG5BbGVydERpYWxvZ0NvbnRlbnQuZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0hlYWRlciA9ICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIHNwYWNlLXktMiB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pO1xuQWxlcnREaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSAnQWxlcnREaWFsb2dIZWFkZXInO1xuXG5jb25zdCBBbGVydERpYWxvZ0Zvb3RlciA9ICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1jb2wtcmV2ZXJzZSBzbTpmbGV4LXJvdyBzbTpqdXN0aWZ5LWVuZCBzbTpzcGFjZS14LTInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5BbGVydERpYWxvZ0Zvb3Rlci5kaXNwbGF5TmFtZSA9ICdBbGVydERpYWxvZ0Zvb3Rlcic7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAnLCAnZGFyazp0ZXh0LWdyYXktNTAnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dUaXRsZS5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtc20gdGV4dC1ncmF5LTUwMCcsICdkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnREaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0FjdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQWN0aW9uPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2lubGluZS1mbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctZ3JheS05MDAgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktODAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6YmctZ3JheS0xMDAgZGFyazp0ZXh0LWdyYXktOTAwIGRhcms6aG92ZXI6YmctZ3JheS0xMDAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5BbGVydERpYWxvZ0FjdGlvbi5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dDYW5jZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdtdC0yIGlubGluZS1mbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy10cmFuc3BhcmVudCBweC00IHB5LTIgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAgc206bXQtMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGlhbG9nQ2FuY2VsLmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuQ2FuY2VsLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBBbGVydERpYWxvZyxcbiAgQWxlcnREaWFsb2dUcmlnZ2VyLFxuICBBbGVydERpYWxvZ0NvbnRlbnQsXG4gIEFsZXJ0RGlhbG9nSGVhZGVyLFxuICBBbGVydERpYWxvZ0Zvb3RlcixcbiAgQWxlcnREaWFsb2dUaXRsZSxcbiAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbixcbiAgQWxlcnREaWFsb2dBY3Rpb24sXG4gIEFsZXJ0RGlhbG9nQ2FuY2VsLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNsb3QgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc2xvdCc7XG5pbXBvcnQgeyBDaGV2cm9uUmlnaHQsIE1vcmVIb3Jpem9udGFsIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IEJyZWFkY3J1bWIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRWxlbWVudCxcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCduYXYnPiAmIHtcbiAgICBzZXBhcmF0b3I/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIH1cbj4oKHsgLi4ucHJvcHMgfSwgcmVmKSA9PiA8bmF2IHJlZj17cmVmfSBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiIHsuLi5wcm9wc30gLz4pO1xuQnJlYWRjcnVtYi5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iJztcblxuY29uc3QgQnJlYWRjcnVtYkxpc3QgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxPTGlzdEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnb2wnPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPG9sXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBicmVhay13b3JkcyB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzbTpnYXAtMi41JyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcbkJyZWFkY3J1bWJMaXN0LmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJMaXN0JztcblxuY29uc3QgQnJlYWRjcnVtYkl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxMSUVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnbGknPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGxpIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNScsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iSXRlbSc7XG5cbmNvbnN0IEJyZWFkY3J1bWJMaW5rID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTEFuY2hvckVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnYSc+ICYge1xuICAgIGFzQ2hpbGQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGFzQ2hpbGQsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6ICdhJztcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3RyYW5zaXRpb24tY29sb3JzIGhvdmVyOnRleHQtZm9yZWdyb3VuZCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn0pO1xuQnJlYWRjcnVtYkxpbmsuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYkxpbmsnO1xuXG5jb25zdCBCcmVhZGNydW1iUGFnZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFNwYW5FbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3NwYW4nPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHNwYW5cbiAgICAgIHJlZj17cmVmfVxuICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdmb250LW5vcm1hbCB0ZXh0LWZvcmVncm91bmQnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuQnJlYWRjcnVtYlBhZ2UuZGlzcGxheU5hbWUgPSAnQnJlYWRjcnVtYlBhZ2UnO1xuXG5jb25zdCBCcmVhZGNydW1iU2VwYXJhdG9yID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8J2xpJz4pID0+IChcbiAgPGxpXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9e2NuKCdbJj5zdmddOnNpemUtMy41JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW4gPz8gPENoZXZyb25SaWdodCAvPn1cbiAgPC9saT5cbik7XG5CcmVhZGNydW1iU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gJ0JyZWFkY3J1bWJTZXBhcmF0b3InO1xuXG5jb25zdCBCcmVhZGNydW1iRWxsaXBzaXMgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaC05IHctOSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxNb3JlSG9yaXpvbnRhbCBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+TW9yZTwvc3Bhbj5cbiAgPC9zcGFuPlxuKTtcbkJyZWFkY3J1bWJFbGxpcHNpcy5kaXNwbGF5TmFtZSA9ICdCcmVhZGNydW1iRWxpcHNzaXMnO1xuXG5leHBvcnQge1xuICBCcmVhZGNydW1iLFxuICBCcmVhZGNydW1iTGlzdCxcbiAgQnJlYWRjcnVtYkl0ZW0sXG4gIEJyZWFkY3J1bWJMaW5rLFxuICBCcmVhZGNydW1iUGFnZSxcbiAgQnJlYWRjcnVtYlNlcGFyYXRvcixcbiAgQnJlYWRjcnVtYkVsbGlwc2lzLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNsb3QgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3Qtc2xvdCc7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICAnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogJ2JnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeS85MCcsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgICdiZy1zdXJmYWNlLWRlc3RydWN0aXZlIHRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBob3ZlcjpiZy1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJyxcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICAndGV4dC10ZXh0LXByaW1hcnkgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgICAgICBzZWNvbmRhcnk6ICdiZy1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1zZWNvbmRhcnkvODAnLFxuICAgICAgICBnaG9zdDogJ2hvdmVyOmJnLXN1cmZhY2UtaG92ZXIgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCcsXG4gICAgICAgIGxpbms6ICd0ZXh0LXByaW1hcnkgdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnVuZGVybGluZScsXG4gICAgICAgIC8vIGhhcmRjb2RlZCB0ZXh0IGNvbG9yIGJlY2F1c2Ugb2YgV0NBRyBjb250cmFzdCBpc3N1ZXMgKHRleHQtd2hpdGUpXG4gICAgICAgIHN1Ym1pdDogJ2JnLXN1cmZhY2Utc3VibWl0IHRleHQtd2hpdGUgaG92ZXI6Ymctc3VyZmFjZS1zdWJtaXQtaG92ZXInLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogJ2gtMTAgcHgtNCBweS0yJyxcbiAgICAgICAgc206ICdoLTkgcm91bmRlZC1sZyBweC0zJyxcbiAgICAgICAgbGc6ICdoLTExIHJvdW5kZWQtbGcgcHgtOCcsXG4gICAgICAgIGljb246ICdzaXplLTEwJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6ICdkZWZhdWx0JyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCB0eXBlID0gJ2J1dHRvbicsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6ICdidXR0b24nO1xuICAgIHJldHVybiAoXG4gICAgICA8Q29tcFxuICAgICAgICB0eXBlPXthc0NoaWxkID8gdW5kZWZpbmVkIDogdHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0J1dHRvbic7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jaGVja2JveCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIEJhc2VDaGVja2JveFByb3BzID0gT21pdDxcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgJ2FyaWEtbGFiZWwnIHwgJ2FyaWEtbGFiZWxsZWRieSdcbj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hlY2tib3hQcm9wcyA9XG4gIHwgKEJhc2VDaGVja2JveFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBzdHJpbmc7XG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5Jz86IG5ldmVyO1xuICAgIH0pXG4gIHwgKEJhc2VDaGVja2JveFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sIENoZWNrYm94UHJvcHM+KFxuICAoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3BlZXIgaC00IHctNCBzaHJpbmstMCByb3VuZGVkLXNtIGJvcmRlciBib3JkZXItYm9yZGVyLXhoZWF2eSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyl9PlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4gICksXG4pO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwiZXhwb3J0IGVudW0gRVNpZGUge1xuICBUb3AgPSAndG9wJyxcbiAgUmlnaHQgPSAncmlnaHQnLFxuICBCb3R0b20gPSAnYm90dG9tJyxcbiAgTGVmdCA9ICdsZWZ0Jyxcbn1cblxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uU2V2ZXJpdHkge1xuICBJTkZPID0gJ2luZm8nLFxuICBTVUNDRVNTID0gJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HID0gJ3dhcm5pbmcnLFxuICBFUlJPUiA9ICdlcnJvcicsXG59XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2V2ZXJpdHkgfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBsYW5nQXRvbSA9IGF0b208c3RyaW5nPignZW4nKTtcbmV4cG9ydCBjb25zdCBjaGF0RGlyZWN0aW9uQXRvbSA9IGF0b208c3RyaW5nPignbHRyJyk7XG5leHBvcnQgY29uc3QgZm9udFNpemVBdG9tID0gYXRvbTxzdHJpbmc+KCd0ZXh0LWJhc2UnKTtcblxuZXhwb3J0IHR5cGUgVG9hc3RTdGF0ZSA9IHtcbiAgb3BlbjogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHk7XG4gIHNob3dJY29uOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvYXN0U3RhdGUgPSBhdG9tPFRvYXN0U3RhdGU+KHtcbiAgb3BlbjogZmFsc2UsXG4gIG1lc3NhZ2U6ICcnLFxuICBzZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuU1VDQ0VTUyxcbiAgc2hvd0ljb246IHRydWUsXG59KTtcbiIsImltcG9ydCB7IHVzZUF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFNob3dUb2FzdCB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNldmVyaXR5IH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgdG9hc3RTdGF0ZSwgdHlwZSBUb2FzdFN0YXRlIH0gZnJvbSAnfi9zdG9yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVRvYXN0KHNob3dEZWxheSA9IDEwMCkge1xuICBjb25zdCBbdG9hc3QsIHNldFRvYXN0XSA9IHVzZUF0b20odG9hc3RTdGF0ZSk7XG4gIGNvbnN0IHNob3dUaW1lclJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaGlkZVRpbWVyUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChzaG93VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2hvd1RpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGhpZGVUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChoaWRlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNob3dUb2FzdCA9ICh7XG4gICAgbWVzc2FnZSxcbiAgICBzZXZlcml0eSA9IE5vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1MsXG4gICAgc2hvd0ljb24gPSB0cnVlLFxuICAgIGR1cmF0aW9uID0gMzAwMCwgLy8gZGVmYXVsdCBkdXJhdGlvbiBmb3IgdGhlIHRvYXN0IHRvIGJlIHZpc2libGVcbiAgICBzdGF0dXMsXG4gIH06IFRTaG93VG9hc3QpID0+IHtcbiAgICAvLyBDbGVhciBleGlzdGluZyB0aW1lb3V0c1xuICAgIGlmIChzaG93VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNob3dUaW1lclJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgaWYgKGhpZGVUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQoaGlkZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIFRpbWVvdXQgdG8gc2hvdyB0aGUgdG9hc3RcbiAgICBzaG93VGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvYXN0KHtcbiAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgc2V2ZXJpdHk6IChzdGF0dXMgYXMgTm90aWZpY2F0aW9uU2V2ZXJpdHkpID8/IHNldmVyaXR5LFxuICAgICAgICBzaG93SWNvbixcbiAgICAgIH0pO1xuICAgICAgLy8gSGlkZXMgdGhlIHRvYXN0IGFmdGVyIHRoZSBzcGVjaWZpZWQgZHVyYXRpb25cbiAgICAgIGhpZGVUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRUb2FzdCgocHJldlRvYXN0OiBUb2FzdFN0YXRlKSA9PiAoeyAuLi5wcmV2VG9hc3QsIG9wZW46IGZhbHNlIH0pKTtcbiAgICAgIH0sIGR1cmF0aW9uKTtcbiAgICB9LCBzaG93RGVsYXkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdG9hc3QsXG4gICAgb25PcGVuQ2hhbmdlOiAob3BlbjogYm9vbGVhbikgPT4gc2V0VG9hc3QoeyAuLi50b2FzdCwgb3BlbiB9KSxcbiAgICBzaG93VG9hc3QsXG4gIH07XG59XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlQXZhdGFyIH0gZnJvbSAnQGRpY2ViZWFyL2NvcmUnO1xuaW1wb3J0IHsgaW5pdGlhbHMgfSBmcm9tICdAZGljZWJlYXIvY29sbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IFRVc2VyIH0gZnJvbSAnbGlicmVjaGF0LWRhdGEtcHJvdmlkZXInO1xuXG5jb25zdCBhdmF0YXJDYWNoZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG5jb25zdCB1c2VBdmF0YXIgPSAodXNlcjogVFVzZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlcm5hbWUsIG5hbWUgfSA9IHVzZXIgPz8ge307XG4gICAgY29uc3Qgc2VlZCA9IG5hbWUgfHwgdXNlcm5hbWU7XG4gICAgaWYgKCFzZWVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHVzZXI/LmF2YXRhciAmJiB1c2VyPy5hdmF0YXIgIT09ICcnKSB7XG4gICAgICByZXR1cm4gdXNlci5hdmF0YXI7XG4gICAgfVxuXG4gICAgaWYgKGF2YXRhckNhY2hlW3NlZWRdKSB7XG4gICAgICByZXR1cm4gYXZhdGFyQ2FjaGVbc2VlZF07XG4gICAgfVxuXG4gICAgY29uc3QgYXZhdGFyID0gY3JlYXRlQXZhdGFyKGluaXRpYWxzLCB7XG4gICAgICBzZWVkLFxuICAgICAgZm9udEZhbWlseTogWydWZXJkYW5hJ10sXG4gICAgICBmb250U2l6ZTogMzYsXG4gICAgICBiYWNrZ3JvdW5kVHlwZTogWydzb2xpZCddLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBbXG4gICAgICAgICdkODFiNjAnLFxuICAgICAgICAnOGUyNGFhJyxcbiAgICAgICAgJzVlMzViMScsXG4gICAgICAgICczOTQ5YWInLFxuICAgICAgICAnREIzNzMzJyxcbiAgICAgICAgJzFCNzlDQycsXG4gICAgICAgICcwMjdDQjgnLFxuICAgICAgICAnMDA4MjkxJyxcbiAgICAgICAgJzAwODU3NycsXG4gICAgICAgICc1ODgwMkYnLFxuICAgICAgICAnOEE3NjFEJyxcbiAgICAgICAgJzlDNkQwMCcsXG4gICAgICAgICdCMDYyMDAnLFxuICAgICAgICAnRDE0NTFBJyxcbiAgICAgIF0sXG4gICAgICB0ZXh0Q29sb3I6IFsnZmZmZmZmJ10sXG4gICAgfSk7XG5cbiAgICBsZXQgYXZhdGFyRGF0YVVyaSA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBhdmF0YXJEYXRhVXJpID0gYXZhdGFyLnRvRGF0YVVyaSgpO1xuICAgICAgaWYgKGF2YXRhckRhdGFVcmkpIHtcbiAgICAgICAgYXZhdGFyQ2FjaGVbc2VlZF0gPSBhdmF0YXJEYXRhVXJpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgYXZhdGFyOicsIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXZhdGFyRGF0YVVyaTtcbiAgfSwgW3VzZXJdKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUF2YXRhcjtcbiIsImltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWF0Y2hTb3J0ZXIgfSBmcm9tICdtYXRjaC1zb3J0ZXInO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiwgTWVudGlvbk9wdGlvbiB9IGZyb20gJ34vY29tbW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29tYm9ib3goe1xuICB2YWx1ZSxcbiAgb3B0aW9ucyxcbn06IHtcbiAgdmFsdWU6IHN0cmluZztcbiAgb3B0aW9uczogQXJyYXk8T3B0aW9uV2l0aEljb24gfCBNZW50aW9uT3B0aW9uPjtcbn0pIHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCBtYXRjaGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hWYWx1ZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBbJ2xhYmVsJywgJ3ZhbHVlJ107XG4gICAgY29uc3QgbWF0Y2hlcyA9IG1hdGNoU29ydGVyKG9wdGlvbnMsIHNlYXJjaFZhbHVlLCB7IGtleXMgfSk7XG4gICAgLy8gUmFkaXggU2VsZWN0IGRvZXMgbm90IHdvcmsgaWYgd2UgZG9uJ3QgcmVuZGVyIHRoZSBzZWxlY3RlZCBpdGVtLCBzbyB3ZVxuICAgIC8vIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIG1hdGNoZXMuXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gb3B0aW9ucy5maW5kKChjdXJyZW50SXRlbSkgPT4gY3VycmVudEl0ZW0udmFsdWUgPT09IHZhbHVlKTtcbiAgICBpZiAoc2VsZWN0ZWRJdGVtICYmICFtYXRjaGVzLmluY2x1ZGVzKHNlbGVjdGVkSXRlbSkpIHtcbiAgICAgIG1hdGNoZXMucHVzaChzZWxlY3RlZEl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfSwgW3NlYXJjaFZhbHVlLCB2YWx1ZSwgb3B0aW9uc10pO1xuXG4gIHJldHVybiB7XG4gICAgb3BlbixcbiAgICBzZXRPcGVuLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHNldFNlYXJjaFZhbHVlLFxuICAgIG1hdGNoZXMsXG4gIH07XG59XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBUT3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IHJlc291cmNlcyB9IGZyb20gJ34vbG9jYWxlcy9pMThuJztcbmltcG9ydCB7IGxhbmdBdG9tIH0gZnJvbSAnfi9zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uS2V5cyA9IGtleW9mIHR5cGVvZiByZXNvdXJjZXMuZW4udHJhbnNsYXRpb247XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsaXplKCkge1xuICBjb25zdCBsYW5nID0gdXNlQXRvbVZhbHVlKGxhbmdBdG9tKTtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGkxOG4ubGFuZ3VhZ2UgIT09IGxhbmcpIHtcbiAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgfVxuICB9LCBbbGFuZywgaTE4bl0pO1xuXG4gIHJldHVybiAocGhyYXNlS2V5OiBUcmFuc2xhdGlvbktleXMsIG9wdGlvbnM/OiBUT3B0aW9ucykgPT4gdChwaHJhc2VLZXksIG9wdGlvbnMpO1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gIGNvbnN0IFttYXRjaGVzLCBzZXRNYXRjaGVzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG1lZGlhID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGlmIChtZWRpYS5tYXRjaGVzICE9PSBtYXRjaGVzKSB7XG4gICAgICBzZXRNYXRjaGVzKG1lZGlhLm1hdGNoZXMpO1xuICAgIH1cbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpID0+IHNldE1hdGNoZXMobWVkaWEubWF0Y2hlcyk7XG4gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gIH0sIFttYXRjaGVzLCBxdWVyeV0pO1xuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuIiwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IHVzZURlbGF5ZWRSZW5kZXIgPSAoZGVsYXk6IG51bWJlcikgPT4ge1xuICBjb25zdCBbZGVsYXllZCwgc2V0RGVsYXllZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgdGltZXJQcm9taXNlUmVmID0gdXNlUmVmPFByb21pc2U8dm9pZD4gfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWxheWVkKSB7XG4gICAgICBjb25zdCB0aW1lclByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0RGVsYXllZChmYWxzZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCBkZWxheSk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQgPSB0aW1lclByb21pc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRpbWVyUHJvbWlzZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9O1xuICB9LCBbZGVsYXksIGRlbGF5ZWRdKTtcblxuICByZXR1cm4gKGZuOiAoKSA9PiBSZWFjdE5vZGUpID0+IHtcbiAgICBpZiAoZGVsYXllZCAmJiB0aW1lclByb21pc2VSZWYuY3VycmVudCkge1xuICAgICAgdGhyb3cgdGltZXJQcm9taXNlUmVmLmN1cnJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBmbigpO1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlRGVsYXllZFJlbmRlcjtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xudHlwZSBIYW5kbGVyID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT25DbGlja091dHNpZGUoXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50PixcbiAgaGFuZGxlcjogSGFuZGxlcixcbiAgZXhjbHVkZUlkczogc3RyaW5nW10sXG4gIGN1c3RvbUNvbmRpdGlvbj86ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgRWxlbWVudCB8IG51bGwpID0+IGJvb2xlYW4sXG4pOiB2b2lkIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbDtcblxuICAgICAgaWYgKHRhcmdldCAmJiAnaWQnIGluIHRhcmdldCAmJiBleGNsdWRlSWRzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGFyZ2V0Py5wYXJlbnROb2RlICYmXG4gICAgICAgICdpZCcgaW4gdGFyZ2V0LnBhcmVudE5vZGUgJiZcbiAgICAgICAgZXhjbHVkZUlkcy5pbmNsdWRlcygodGFyZ2V0LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1c3RvbUNvbmRpdGlvbiAmJiBjdXN0b21Db25kaXRpb24odGFyZ2V0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYuY3VycmVudCAmJiAhcmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBoYW5kbGVyKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtyZWYsIGhhbmRsZXJdKTtcbn1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIERpYWxvZ1ByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlhbG9nJztcbmltcG9ydCB7IHVzZU1lZGlhUXVlcnkgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuY29uc3QgRGlhbG9nID0gRGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERpYWxvZ1RyaWdnZXIgPSBEaWFsb2dQcmltaXRpdmUuVHJpZ2dlcjtcblxudHlwZSBEaWFsb2dQb3J0YWxQcm9wcyA9IERpYWxvZ1ByaW1pdGl2ZS5EaWFsb2dQb3J0YWxQcm9wcyAmIHsgY2xhc3NOYW1lPzogc3RyaW5nIH07XG5cbmNvbnN0IERpYWxvZ1BvcnRhbCA9ICh7IGNsYXNzTmFtZSA9ICcnLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogRGlhbG9nUG9ydGFsUHJvcHMpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWwgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4uKHByb3BzIGFzIERpYWxvZ1BvcnRhbFByb3BzKX0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotWzk5OV0gZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlciBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgPC9EaWFsb2dQcmltaXRpdmUuUG9ydGFsPlxuKTtcbkRpYWxvZ1BvcnRhbC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnZml4ZWQgaW5zZXQtMCB6LVs5OTldIGJnLWdyYXktNjAwLzY1IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTEwMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbiBkYXJrOmJnLWJsYWNrLzgwJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuRGlhbG9nT3ZlcmxheS5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5LmRpc3BsYXlOYW1lO1xuXG50eXBlIERpYWxvZ0NvbnRlbnRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+ICYge1xuICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBkaXNhYmxlU2Nyb2xsPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERpYWxvZ0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ29udGVudD4sXG4gIERpYWxvZ0NvbnRlbnRQcm9wc1xuPihcbiAgKFxuICAgIHsgY2xhc3NOYW1lLCBjaGlsZHJlbiA9IHRydWUsIHNob3dDbG9zZUJ1dHRvbiA9IHRydWUsIGRpc2FibGVTY3JvbGwgPSBmYWxzZSwgLi4ucHJvcHMgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IGlzU21hbGxTY3JlZW4gPSB1c2VNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjhweCknKTtcbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1BvcnRhbD5cbiAgICAgICAgPERpYWxvZ092ZXJsYXkgLz5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmaXhlZCB6LVs5OTldIGdyaWQgdy1mdWxsIGdhcC00IHJvdW5kZWQtYi1sZyBiZy13aGl0ZSBwYi02IGFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi05MCBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0xMCBzbTpyb3VuZGVkLWxnJyxcbiAgICAgICAgICAgICdkYXJrOmJnLWdyYXktNzAwJyxcbiAgICAgICAgICAgIGlzU21hbGxTY3JlZW5cbiAgICAgICAgICAgICAgPyAnZml4ZWQgbGVmdC0xLzIgdG9wLTEvMiB6LVs5OTldIG0tYXV0byBncmlkIHctMTEvMTIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIGdhcC00IHJvdW5kZWQteGwgYmctd2hpdGUgcGItNidcbiAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgIGRpc2FibGVTY3JvbGwgPyAnb3ZlcmZsb3ctaGlkZGVuJyA6ICcnLFxuICAgICAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgICAgICl9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIHtzaG93Q2xvc2VCdXR0b24gJiYgKFxuICAgICAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZSBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC02IHRvcC1bMS42cmVtXSByb3VuZGVkLXNtIG9wYWNpdHktNzAgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YmctZ3JheS0xMDAgZGFyazpmb2N1czpyaW5nLXdoaXRlIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS03MDAgZGFyazpkYXRhLVtzdGF0ZT1vcGVuXTpiZy1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICA8WCBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ2xvc2U+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgICAgIDwvRGlhbG9nUG9ydGFsPlxuICAgICk7XG4gIH0sXG4pO1xuRGlhbG9nQ29udGVudC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dIZWFkZXIgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGZsZXgtY29sIHNwYWNlLXktMiBib3JkZXItYiBib3JkZXItYmxhY2svMTAgcC02IHBiLTQgdGV4dC1sZWZ0IGRhcms6Ym9yZGVyLXdoaXRlLzEwJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nSGVhZGVyJztcblxuY29uc3QgRGlhbG9nRm9vdGVyID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXgtMiBweC02IHB5LTQnLCBjbGFzc05hbWUgPz8gJycpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5EaWFsb2dGb290ZXIuZGlzcGxheU5hbWUgPSAnRGlhbG9nRm9vdGVyJztcblxuY29uc3QgRGlhbG9nVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5UaXRsZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwJywgJ2Rhcms6dGV4dC1ncmF5LTUwJywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbSB0ZXh0LWdyYXktNTAwJywgJ2Rhcms6dGV4dC1ncmF5LTQwMCcsIGNsYXNzTmFtZSA/PyAnJyl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgRGlhbG9nQ2xvc2UgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ2xvc2U+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5DbG9zZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBzbTptdC0wJyxcbiAgICAgIGNsYXNzTmFtZSA/PyAnJyxcbiAgICAgIC8qIEltcG9ydGFudDogZm9yIGFjY2Vzc2liaWxpdHkgKi9cbiAgICAgICdmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRGlhbG9nQ2xvc2UuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0J1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8QnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnbXQtMiBpbmxpbmUtZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctdHJhbnNwYXJlbnQgcHgtNCBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwIHNtOm10LTAnLFxuICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgLyogSW1wb3J0YW50OiBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuICAgICAgJ2ZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5EaWFsb2dCdXR0b24uZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nVHJpZ2dlcixcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dGb290ZXIsXG4gIERpYWxvZ1RpdGxlLFxuICBEaWFsb2dEZXNjcmlwdGlvbixcbiAgRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ0J1dHRvbixcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnUnO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBDaXJjbGVJY29uIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudSh7IC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdD4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdCBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51XCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51UG9ydGFsKHtcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWwgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1wb3J0YWxcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVUcmlnZ2VyKHtcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcj4pIHtcbiAgcmV0dXJuIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlciBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXRyaWdnZXJcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVDb250ZW50KHtcbiAgY2xhc3NOYW1lLFxuICBzaWRlT2Zmc2V0ID0gNCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWNvbnRlbnRcIlxuICAgICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICd0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBtYXgtaC0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCkgb3JpZ2luLSgtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSB6LTQwIG1pbi13LVs4cmVtXSBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBiZy1zdXJmYWNlLXNlY29uZGFyeSBwLTEgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMicsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51R3JvdXAoeyAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cCBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWdyb3VwXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51SXRlbSh7XG4gIGNsYXNzTmFtZSxcbiAgaW5zZXQsXG4gIHZhcmlhbnQgPSAnZGVmYXVsdCcsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICBpbnNldD86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZGVzdHJ1Y3RpdmUnO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgIGRhdGEtaW5zZXQ9e2luc2V0fVxuICAgICAgZGF0YS12YXJpYW50PXt2YXJpYW50fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXToqOltzdmddOiF0ZXh0LWRlc3RydWN0aXZlIG91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHgtMiBweS0xLjUgdGV4dC1zbSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtpbnNldF06cGwtOCBkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTp0ZXh0LWRlc3RydWN0aXZlIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOmJnLWRlc3RydWN0aXZlLzEwIGRhdGEtW3ZhcmlhbnQ9ZGVzdHJ1Y3RpdmVdOmZvY3VzOnRleHQtZGVzdHJ1Y3RpdmUgZGFyazpkYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTpmb2N1czpiZy1kZXN0cnVjdGl2ZS8yMCBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgWyZfc3ZnOm5vdChbY2xhc3MqPSd0ZXh0LSddKV06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtKHtcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgY2hlY2tlZCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LWNoZWNrYm94LWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJvdXRsaW5lLWhpZGRlbiByZWxhdGl2ZSBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXNtIHB5LTEuNSBwbC04IHByLTIgdGV4dC1zbSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MCBbJl9zdmc6bm90KFtjbGFzcyo9J3NpemUtJ10pXTpzaXplLTQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTIgZmxleCBzaXplLTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVJhZGlvR3JvdXAoe1xuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwPikge1xuICByZXR1cm4gPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcmFkaW8tZ3JvdXBcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnVSYWRpb0l0ZW0oe1xuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtcmFkaW8taXRlbVwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcIm91dGxpbmUtaGlkZGVuIHJlbGF0aXZlIGZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtc20gcHktMS41IHBsLTggcHItMiB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwIFsmX3N2Zzpub3QoW2NsYXNzKj0nc2l6ZS0nXSldOnNpemUtNCBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgbGVmdC0yIGZsZXggc2l6ZS0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICA8Q2lyY2xlSWNvbiBjbGFzc05hbWU9XCJzaXplLTIgZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudUxhYmVsKHtcbiAgY2xhc3NOYW1lLFxuICBpbnNldCxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICBpbnNldD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbFxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1sYWJlbFwiXG4gICAgICBkYXRhLWluc2V0PXtpbnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3B4LTIgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gZGF0YS1baW5zZXRdOnBsLTgnLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVNlcGFyYXRvcih7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPikge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgICBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXNlcGFyYXRvclwiXG4gICAgICBjbGFzc05hbWU9e2NuKCctbXgtMSBteS0xIGgtcHggYmctc3VyZmFjZS1ob3ZlcicsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U2hvcnRjdXQoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPCdzcGFuJz4pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgZGF0YS1zbG90PVwiZHJvcGRvd24tbWVudS1zaG9ydGN1dFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdtbC1hdXRvIHRleHQteHMgdHJhY2tpbmctd2lkZXN0IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViKHsgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI+KSB7XG4gIHJldHVybiA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YiBkYXRhLXNsb3Q9XCJkcm9wZG93bi1tZW51LXN1YlwiIHsuLi5wcm9wc30gLz47XG59XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVN1YlRyaWdnZXIoe1xuICBjbGFzc05hbWUsXG4gIGluc2V0LFxuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gIGluc2V0PzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViLXRyaWdnZXJcIlxuICAgICAgZGF0YS1pbnNldD17aW5zZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnb3V0bGluZS1oaWRkZW4gZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOmJnLWFjY2VudCBkYXRhLVtpbnNldF06cGwtOCBkYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJtbC1hdXRvIHNpemUtNFwiIC8+XG4gICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRHJvcGRvd25NZW51U3ViQ29udGVudCh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICAgIGRhdGEtc2xvdD1cImRyb3Bkb3duLW1lbnUtc3ViLWNvbnRlbnRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3RleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIG9yaWdpbi0oLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgei00MCBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHAtMSBzaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVTaG9ydGN1dCxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEhvdmVyQ2FyZFByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaG92ZXItY2FyZCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBIb3ZlckNhcmQgPSBIb3ZlckNhcmRQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgSG92ZXJDYXJkVHJpZ2dlciA9IEhvdmVyQ2FyZFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBIb3ZlckNhcmRQb3J0YWwgPSBIb3ZlckNhcmRQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBIb3ZlckNhcmRDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgSG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEhvdmVyQ2FyZFByaW1pdGl2ZS5Db250ZW50PiAmIHsgZGlzYWJsZWQ/OiBib29sZWFuIH1cbj4oKHsgY2xhc3NOYW1lID0gJycsIGFsaWduID0gJ2NlbnRlcicsIHNpZGVPZmZzZXQgPSA2LCBkaXNhYmxlZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgaWYgKGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxIb3ZlckNhcmRQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3otNTAgdy02NCBvcmlnaW4tWy0tcmFkaXgtaG92ZXItY2FyZC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctc3VyZmFjZS1zZWNvbmRhcnkgcC00IHRleHQtdGV4dC1wcmltYXJ5IHNoYWRvdy1tZCBvdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5Ib3ZlckNhcmRDb250ZW50LmRpc3BsYXlOYW1lID0gSG92ZXJDYXJkUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IEhvdmVyQ2FyZCwgSG92ZXJDYXJkVHJpZ2dlciwgSG92ZXJDYXJkQ29udGVudCwgSG92ZXJDYXJkUG9ydGFsIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PjtcblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIElucHV0UHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZmxleCBoLTEwIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcblxuSW5wdXQuZGlzcGxheU5hbWUgPSAnSW5wdXQnO1xuXG5leHBvcnQgeyBJbnB1dCB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vLyBpbXBvcnQgeyBOdW1lcmljRm9ybWF0IH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5cbmltcG9ydCBSQ0lucHV0TnVtYmVyIGZyb20gJ3JjLWlucHV0LW51bWJlcic7XG5pbXBvcnQgKiBhcyBJbnB1dE51bWJlclByaW1pdGl2ZSBmcm9tICdyYy1pbnB1dC1udW1iZXInO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuLy8gVE9ETyBoZWxwIG5lZWRlZFxuLy8gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4vLyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+XG5cbmNvbnN0IElucHV0TnVtYmVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUkNJbnB1dE51bWJlcj4sXG4gIElucHV0TnVtYmVyUHJpbWl0aXZlLklucHV0TnVtYmVyUHJvcHNcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8UkNJbnB1dE51bWJlclxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggbWF4LWgtNSB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwJyxcbiAgICAgICAgY2xhc3NOYW1lID8/ICcnLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59KTtcbklucHV0TnVtYmVyLmRpc3BsYXlOYW1lID0gJ0lucHV0JztcblxuLy8gY29uc29sZS5sb2coX0lucHV0TnVtYmVyKTtcblxuLy8gY29uc3QgSW5wdXROdW1iZXIgPSBSZWFjdC5mb3J3YXJkUmVmKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4vLyAgIHJldHVybiAoXG4vLyAgICAgPE51bWVyaWNGb3JtYXRcbi8vICAgICAgIGNsYXNzTmFtZT17Y24oXG4vLyAgICAgICAgICdmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy10cmFuc3BhcmVudCBweS0yIHB4LTMgdGV4dC1zbSBwbGFjZWhvbGRlcjp0ZXh0LWdyYXktNDAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTQwMCBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6Ym9yZGVyLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTUwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTQwMCBkYXJrOmZvY3VzOnJpbmctb2Zmc2V0LWdyYXktOTAwJyxcbi8vICAgICAgICAgY2xhc3NOYW1lXG4vLyAgICAgICApfVxuLy8gICAgICAgcmVmPXtyZWZ9XG4vLyAgICAgICB7Li4ucHJvcHN9XG4vLyAgICAgLz5cbi8vICAgKTtcbi8vIH0pO1xuXG5leHBvcnQgeyBJbnB1dE51bWJlciB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRXllLCBFeWVPZmYsIENvcHksIENoZWNrIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0SW5wdXRQcm9wc1xuICBleHRlbmRzIE9taXQ8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgJ3R5cGUnPiB7XG4gIC8qKiBTaG93IGNvcHkgYnV0dG9uICovXG4gIHNob3dDb3B5PzogYm9vbGVhbjtcbiAgLyoqIENhbGxiYWNrIHdoZW4gdmFsdWUgaXMgY29waWVkICovXG4gIG9uQ29weT86ICgpID0+IHZvaWQ7XG4gIC8qKiBEdXJhdGlvbiBpbiBtcyB0byBzaG93IGNoZWNrbWFyayBhZnRlciBjb3B5IChkZWZhdWx0OiAyMDAwKSAqL1xuICBjb3B5RmVlZGJhY2tEdXJhdGlvbj86IG51bWJlcjtcbn1cblxuY29uc3QgU2VjcmV0SW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFNlY3JldElucHV0UHJvcHM+KFxuICAoXG4gICAgeyBjbGFzc05hbWUsIHNob3dDb3B5ID0gZmFsc2UsIG9uQ29weSwgY29weUZlZWRiYWNrRHVyYXRpb24gPSAyMDAwLCBkaXNhYmxlZCwgdmFsdWUsIC4uLnByb3BzIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICBjb25zdCBbaXNWaXNpYmxlLCBzZXRJc1Zpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0NvcGllZCwgc2V0SXNDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3QgdG9nZ2xlVmlzaWJpbGl0eSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldElzVmlzaWJsZSgocHJldikgPT4gIXByZXYpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGhhbmRsZUNvcHkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoaXNDb3BpZWQgfHwgZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0ZXh0VG9Db3B5ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogJyc7XG4gICAgICBpZiAoIXRleHRUb0NvcHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0VG9Db3B5KTtcbiAgICAgICAgc2V0SXNDb3BpZWQodHJ1ZSk7XG4gICAgICAgIG9uQ29weT8uKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0SXNDb3BpZWQoZmFsc2UpO1xuICAgICAgICB9LCBjb3B5RmVlZGJhY2tEdXJhdGlvbik7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvcHk6JywgZXJyKTtcbiAgICAgIH1cbiAgICB9LCBbdmFsdWUsIGlzQ29waWVkLCBkaXNhYmxlZCwgb25Db3B5LCBjb3B5RmVlZGJhY2tEdXJhdGlvbl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT17aXNWaXNpYmxlID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2ZsZXggaC0xMCB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgICAgICAgIHNob3dDb3B5ID8gJ3ByLTIwJyA6ICdwci0xMCcsXG4gICAgICAgICAgICBjbGFzc05hbWUgPz8gJycsXG4gICAgICAgICAgKX1cbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgc3BlbGxDaGVjaz17ZmFsc2V9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTEgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNVwiPlxuICAgICAgICAgIHtzaG93Q29weSAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgIXZhbHVlfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdmbGV4IHNpemUtOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LXRleHQtc2Vjb25kYXJ5IHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCB8fCAhdmFsdWVcbiAgICAgICAgICAgICAgICAgID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJ1xuICAgICAgICAgICAgICAgICAgOiAnaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBob3Zlcjp0ZXh0LXRleHQtcHJpbWFyeScsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2lzQ29waWVkID8gJ0NvcGllZCcgOiAnQ29weSB0byBjbGlwYm9hcmQnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNDb3BpZWQgPyA8Q2hlY2sgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz4gOiA8Q29weSBjbGFzc05hbWU9XCJzaXplLTRcIiAvPn1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0b2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgJ2ZsZXggc2l6ZS04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHRleHQtdGV4dC1zZWNvbmRhcnkgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJ1xuICAgICAgICAgICAgICAgIDogJ2hvdmVyOmJnLXN1cmZhY2UtaG92ZXIgaG92ZXI6dGV4dC10ZXh0LXByaW1hcnknLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2lzVmlzaWJsZSA/ICdIaWRlIHBhc3N3b3JkJyA6ICdTaG93IHBhc3N3b3JkJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNWaXNpYmxlID8gPEV5ZU9mZiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPiA6IDxFeWUgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz59XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSxcbik7XG5cblNlY3JldElucHV0LmRpc3BsYXlOYW1lID0gJ1NlY3JldElucHV0JztcblxuZXhwb3J0IHsgU2VjcmV0SW5wdXQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVySW5wdXRQcm9wc1xuICBleHRlbmRzIE9taXQ8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgJ3BsYWNlaG9sZGVyJz4ge1xuICAvKiogVGhlIGxhYmVsIHRleHQgc2hvd24gaW4gdGhlIGZsb2F0aW5nIGxhYmVsICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGlucHV0IC0gdXNlZCB0byBsaW5rIGxhYmVsICovXG4gIGlucHV0SWQ6IHN0cmluZztcbiAgLyoqIENvbnRhaW5lciBjbGFzc05hbWUgZm9yIGN1c3RvbSBzdHlsaW5nICovXG4gIGNvbnRhaW5lckNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN0YW5kYXJkaXplZCBmaWx0ZXIvc2VhcmNoIGlucHV0IGNvbXBvbmVudCB3aXRoIGEgZmxvYXRpbmcgbGFiZWxcbiAqIHRoYXQgYW5pbWF0ZXMgdXAgd2hlbiBmb2N1c2VkIG9yIGhhcyBhIHZhbHVlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RmlsdGVySW5wdXRcbiAqICAgaW5wdXRJZD1cImJvb2ttYXJrcy1maWx0ZXJcIlxuICogICBsYWJlbD17bG9jYWxpemUoJ2NvbV91aV9ib29rbWFya3NfZmlsdGVyJyl9XG4gKiAgIHZhbHVlPXtzZWFyY2hRdWVyeX1cbiAqICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hRdWVyeShlLnRhcmdldC52YWx1ZSl9XG4gKiAvPlxuICovXG5jb25zdCBGaWx0ZXJJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRmlsdGVySW5wdXRQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgbGFiZWwsIGlucHV0SWQsIGNvbnRhaW5lckNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUnLCBjb250YWluZXJDbGFzc05hbWUpfT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgaWQ9e2lucHV0SWR9XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtsYWJlbH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ3BlZXIgZmxleCBoLTEwIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgaHRtbEZvcj17aW5wdXRJZH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGxlZnQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1zbSB0ZXh0LXRleHQtc2Vjb25kYXJ5IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBwZWVyLWZvY3VzOnRvcC0wIHBlZXItZm9jdXM6YmctYmFja2dyb3VuZCBwZWVyLWZvY3VzOnB4LTEgcGVlci1mb2N1czp0ZXh0LXhzIHBlZXItWzpub3QoOnBsYWNlaG9sZGVyLXNob3duKV06dG9wLTAgcGVlci1bOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pXTpiZy1iYWNrZ3JvdW5kIHBlZXItWzpub3QoOnBsYWNlaG9sZGVyLXNob3duKV06cHgtMSBwZWVyLVs6bm90KDpwbGFjZWhvbGRlci1zaG93bildOnRleHQteHNcIlxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSxcbik7XG5cbkZpbHRlcklucHV0LmRpc3BsYXlOYW1lID0gJ0ZpbHRlcklucHV0JztcblxuZXhwb3J0IHsgRmlsdGVySW5wdXQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1sYWJlbCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+ICYge1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgfVxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgey4uLnByb3BzfVxuICAgIHsuLi57XG4gICAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgICAnYmxvY2sgdy1mdWxsIGJyZWFrLWFsbCB0ZXh0LXNtIGxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOm9wYWNpdHktNzAgZGFyazp0ZXh0LWdyYXktMjAwJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKSxcbiAgICB9fVxuICAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBEaWFsb2dQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWRpYWxvZyc7XG5pbXBvcnQgeyBYIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IERpYWxvZ0RlcHRoQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoMCk7XG5cbmludGVyZmFjZSBPR0RpYWxvZ1Byb3BzIGV4dGVuZHMgRGlhbG9nUHJpbWl0aXZlLkRpYWxvZ1Byb3BzIHtcbiAgdHJpZ2dlclJlZj86IFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB0cmlnZ2VyUmVmcz86IFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MRGl2RWxlbWVudCB8IG51bGw+W107XG59XG5cbmNvbnN0IERpYWxvZyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIE9HRGlhbG9nUHJvcHM+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICh7IGNoaWxkcmVuLCB0cmlnZ2VyUmVmLCB0cmlnZ2VyUmVmcywgb25PcGVuQ2hhbmdlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBwYXJlbnREZXB0aCA9IFJlYWN0LnVzZUNvbnRleHQoRGlhbG9nRGVwdGhDb250ZXh0KTtcbiAgICBjb25zdCBjdXJyZW50RGVwdGggPSBwYXJlbnREZXB0aCArIDE7XG5cbiAgICBjb25zdCBoYW5kbGVPcGVuQ2hhbmdlID0gKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICghb3BlbiAmJiB0cmlnZ2VyUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgICBpZiAodHJpZ2dlclJlZnM/Lmxlbmd0aCkge1xuICAgICAgICB0cmlnZ2VyUmVmcy5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgICAgICBpZiAocmVmPy5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgcmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgb25PcGVuQ2hhbmdlPy4ob3Blbik7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RGlhbG9nRGVwdGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjdXJyZW50RGVwdGh9PlxuICAgICAgICA8RGlhbG9nUHJpbWl0aXZlLlJvb3Qgey4uLnByb3BzfSBvbk9wZW5DaGFuZ2U9e2hhbmRsZU9wZW5DaGFuZ2V9PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9EaWFsb2dQcmltaXRpdmUuUm9vdD5cbiAgICAgIDwvRGlhbG9nRGVwdGhDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH0sXG4pO1xuXG5jb25zdCBEaWFsb2dUcmlnZ2VyID0gRGlhbG9nUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IERpYWxvZ1BvcnRhbCA9IERpYWxvZ1ByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERpYWxvZ0Nsb3NlID0gRGlhbG9nUHJpbWl0aXZlLkNsb3NlO1xuXG5leHBvcnQgY29uc3QgRGlhbG9nT3ZlcmxheSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT5cbj4oKHsgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IGRlcHRoID0gUmVhY3QudXNlQ29udGV4dChEaWFsb2dEZXB0aENvbnRleHQpO1xuICBjb25zdCBvdmVybGF5WkluZGV4ID0gNTAgKyAoZGVwdGggLSAxKSAqIDYwO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHN0eWxlPXt7IC4uLnN0eWxlLCB6SW5kZXg6IG92ZXJsYXlaSW5kZXggfX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzgwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufSk7XG5EaWFsb2dPdmVybGF5LmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXkuZGlzcGxheU5hbWU7XG5cbnR5cGUgRGlhbG9nQ29udGVudFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuQ29udGVudD4gJiB7XG4gIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIGRpc2FibGVTY3JvbGw/OiBib29sZWFuO1xuICBvdmVybGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuY29uc3QgRGlhbG9nQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PixcbiAgRGlhbG9nQ29udGVudFByb3BzXG4+KFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgb3ZlcmxheUNsYXNzTmFtZSxcbiAgICAgIHNob3dDbG9zZUJ1dHRvbiA9IHRydWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHN0eWxlLFxuICAgICAgb25Fc2NhcGVLZXlEb3duOiBwcm9wc09uRXNjYXBlS2V5RG93bixcbiAgICAgIC4uLnByb3BzXG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IGRlcHRoID0gUmVhY3QudXNlQ29udGV4dChEaWFsb2dEZXB0aENvbnRleHQpO1xuICAgIGNvbnN0IGNvbnRlbnRaSW5kZXggPSAxMDAgKyAoZGVwdGggLSAxKSAqIDYwO1xuXG4gICAgLyogSGFuZGxlIEVzY2FwZSBrZXkgdG8gcHJldmVudCBjbG9zaW5nIGRpYWxvZyBpZiBhIHRvb2x0aXAgb3IgZHJvcGRvd24gaGFzIGZvY3VzXG4gICAgKHRoaXMgaXMgYSB3b3JrYXJvdW5kIGluIG9yZGVyIHRvIGFjaGlldmUgV0NBRyBjb21wbGlhbmNlIHdoaWNoIHJlcXVpcmVzXG4gICAgdGhhdCBvdXIgdG9vbHRpcHMgYmUgZGlzbWlzc2FibGUgd2l0aCBFc2NhcGUga2V5KSAqL1xuICAgIGNvbnN0IGhhbmRsZUVzY2FwZUtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgICAgICAvLyBDaGVjayBpZiBhY3RpdmUgZWxlbWVudCBpcyBhIHRyaWdnZXIgd2l0aCBhbiBvcGVuIHBvcG92ZXIgKGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCIpXG4gICAgICAgIGlmIChhY3RpdmVFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBhIGRyb3Bkb3duIG1lbnUsIGxpc3Rib3gsIG9yIGNvbWJvYm94IGhhcyBmb2N1cyAoZm9jdXMgaXMgd2l0aGluIGl0KVxuICAgICAgICBjb25zdCBwb3BvdmVyRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICdbcm9sZT1cIm1lbnVcIl0sIFtyb2xlPVwibGlzdGJveFwiXSwgW3JvbGU9XCJjb21ib2JveFwiXScsXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcG9wb3ZlciBvZiBwb3BvdmVyRWxlbWVudHMpIHtcbiAgICAgICAgICBpZiAocG9wb3Zlci5jb250YWlucyhhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBhIHRvb2x0aXAgaGFzIGZvY3VzIChmb2N1cyBpcyB3aXRoaW4gaXQpXG4gICAgICAgIGNvbnN0IHRvb2x0aXBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvb2x0aXAnKTtcbiAgICAgICAgZm9yIChjb25zdCB0b29sdGlwIG9mIHRvb2x0aXBzKSB7XG4gICAgICAgICAgaWYgKHRvb2x0aXAuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHNPbkVzY2FwZUtleURvd24/LihldmVudCk7XG4gICAgICB9LFxuICAgICAgW3Byb3BzT25Fc2NhcGVLZXlEb3duXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEaWFsb2dQb3J0YWw+XG4gICAgICAgIDxEaWFsb2dPdmVybGF5IGNsYXNzTmFtZT17b3ZlcmxheUNsYXNzTmFtZX0gLz5cbiAgICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgc3R5bGU9e3sgLi4uc3R5bGUsIHpJbmRleDogY29udGVudFpJbmRleCB9fVxuICAgICAgICAgIG9uRXNjYXBlS2V5RG93bj17aGFuZGxlRXNjYXBlS2V5RG93bn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ21heC13LTExLzEyIGZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIGdyaWQgbWF4LWgtWzkwdmhdIHctZnVsbCB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIGdhcC00IG92ZXJmbG93LXktYXV0byByb3VuZGVkLTJ4bCBiZy1iYWNrZ3JvdW5kIHAtNiB0ZXh0LXRleHQtcHJpbWFyeSBzaGFkb3ctbGcgZHVyYXRpb24tMjAwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3AtWzQ4JV0gZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLXRvcC1bNDglXScsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAge3Nob3dDbG9zZUJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8RGlhbG9nUHJpbWl0aXZlLkNsb3NlIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTQgdG9wLTQgcm91bmRlZC1zbSBvcGFjaXR5LTcwIHJpbmctcmluZy1wcmltYXJ5IHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpiZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5DbG9zZT5cbiAgICAgICAgICApfVxuICAgICAgICA8L0RpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PlxuICAgICAgPC9EaWFsb2dQb3J0YWw+XG4gICAgKTtcbiAgfSxcbik7XG5EaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERpYWxvZ0hlYWRlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pO1xuRGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0hlYWRlcic7XG5cbmNvbnN0IERpYWxvZ0Zvb3RlciA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1lbmQgc206c3BhY2UteC0yJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuRGlhbG9nRm9vdGVyLmRpc3BsYXlOYW1lID0gJ0RpYWxvZ0Zvb3Rlcic7XG5cbmNvbnN0IERpYWxvZ1RpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlRpdGxlPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuVGl0bGVcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLlRpdGxlLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEaWFsb2dEZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbSB0ZXh0LXRleHQtc2Vjb25kYXJ5JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRpYWxvZ0Rlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID0gRGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBEaWFsb2cgYXMgT0dEaWFsb2csXG4gIERpYWxvZ1BvcnRhbCBhcyBPR0RpYWxvZ1BvcnRhbCxcbiAgRGlhbG9nT3ZlcmxheSBhcyBPR0RpYWxvZ092ZXJsYXksXG4gIERpYWxvZ0Nsb3NlIGFzIE9HRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ1RyaWdnZXIgYXMgT0dEaWFsb2dUcmlnZ2VyLFxuICBEaWFsb2dDb250ZW50IGFzIE9HRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyIGFzIE9HRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dGb290ZXIgYXMgT0dEaWFsb2dGb290ZXIsXG4gIERpYWxvZ1RpdGxlIGFzIE9HRGlhbG9nVGl0bGUsXG4gIERpYWxvZ0Rlc2NyaXB0aW9uIGFzIE9HRGlhbG9nRGVzY3JpcHRpb24sXG59O1xuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uTWFyayA9ICh7IGNsYXNzTmFtZSA9ICcnIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnYm9yZGVyLXRva2VuLWJvcmRlci1tZWRpdW0gdGV4dC10b2tlbi10ZXh0LXRlcnRpYXJ5IG1sLTIgZmxleCBoLTMuNSB3LTMuNSBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciB0ZXh0LVswLjVyZW1dIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZScsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA/XG4gICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgU2xpZGVyUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zbGlkZXInO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBTbGlkZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2xpZGVyUHJpbWl0aXZlLlJvb3Q+ICYge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICAnYXJpYS1kZXNjcmliZWRieSc/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwgeyAnYXJpYS1sYWJlbCc6IHN0cmluZzsgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlciB9XG4gICAgfCB7ICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmc7ICdhcmlhLWxhYmVsJz86IG5ldmVyIH1cbiAgICB8IHsgJ2FyaWEtbGFiZWwnOiBzdHJpbmc7ICdhcmlhLWxhYmVsbGVkYnknOiBzdHJpbmcgfVxuICApO1xuXG5jb25zdCBTbGlkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNsaWRlclByaW1pdGl2ZS5Sb290PiwgU2xpZGVyUHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgb25Eb3VibGVDbGljayxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhRGVzY3JpYmVkQnksXG4gICAgICAuLi5wcm9wc1xuICAgIH0sXG4gICAgcmVmLFxuICApID0+IChcbiAgICA8U2xpZGVyUHJpbWl0aXZlLlJvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgey4uLntcbiAgICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgdG91Y2gtbm9uZSBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXInLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICAgb25Eb3VibGVDbGljayxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFNsaWRlclByaW1pdGl2ZS5UcmFja1xuICAgICAgICB7Li4ueyBjbGFzc05hbWU6ICdyZWxhdGl2ZSBoLTIgdy1mdWxsIGdyb3cgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1zZWNvbmRhcnknIH19XG4gICAgICA+XG4gICAgICAgIDxTbGlkZXJQcmltaXRpdmUuUmFuZ2Ugey4uLnsgY2xhc3NOYW1lOiAnYWJzb2x1dGUgaC1mdWxsIGJnLXByaW1hcnknIH19IC8+XG4gICAgICA8L1NsaWRlclByaW1pdGl2ZS5UcmFjaz5cbiAgICAgIDxTbGlkZXJQcmltaXRpdmUuVGh1bWJcbiAgICAgICAgey4uLntcbiAgICAgICAgICBjbGFzc05hbWU6XG4gICAgICAgICAgICAnYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXByaW1hcnkgYmctYmFja2dyb3VuZCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFyaWFEZXNjcmliZWRCeSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgPC9TbGlkZXJQcmltaXRpdmUuUm9vdD5cbiAgKSxcbik7XG5TbGlkZXIuZGlzcGxheU5hbWUgPSBTbGlkZXJQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU2xpZGVyIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZXBhcmF0b3JQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlcGFyYXRvcic7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlcGFyYXRvclByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZXBhcmF0b3JQcmltaXRpdmUuUm9vdD4gJiB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB9XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJywgZGVjb3JhdGl2ZSA9IHRydWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VwYXJhdG9yUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICB7Li4ucHJvcHN9XG4gICAgey4uLntcbiAgICAgIGRlY29yYXRpdmUsXG4gICAgICBvcmllbnRhdGlvbixcbiAgICAgIGNsYXNzTmFtZTogY24oXG4gICAgICAgICdzaHJpbmstMCBiZy1ib3JkZXItbGlnaHQnLFxuICAgICAgICBvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2gtWzFweF0gdy1mdWxsJyA6ICdoLWZ1bGwgdy1bMXB4XScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICksXG4gICAgfX1cbiAgLz5cbikpO1xuU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VwYXJhdG9yUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFNlcGFyYXRvciB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFyaWFraXQgZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25XaXRoSWNvbiB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgQ29tYm9ib3hQcm9wcyA9IHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvcHRpb25zOiBPcHRpb25XaXRoSWNvbltdIHwgc3RyaW5nW107XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgbGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb25CbHVyOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IElucHV0Q29tYm9ib3g6IFJlYWN0LkZDPENvbWJvYm94UHJvcHM+ID0gKHtcbiAgbGFiZWwsXG4gIGxhYmVsQ2xhc3NOYW1lLFxuICBwbGFjZWhvbGRlciA9ICdTZWxlY3QgYW4gb3B0aW9uJyxcbiAgb3B0aW9ucyxcbiAgY2xhc3NOYW1lLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIG9uQmx1cixcbn0pID0+IHtcbiAgY29uc3QgaXNPcHRpb25PYmplY3QgPSAob3B0aW9uOiB1bmtub3duKTogb3B0aW9uIGlzIE9wdGlvbldpdGhJY29uID0+IHtcbiAgICByZXR1cm4gb3B0aW9uICE9IG51bGwgJiYgdHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb247XG4gIH07XG5cbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUodmFsdWUpO1xuICBjb25zdCBbaXNLZXlib2FyZEZvY3VzLCBzZXRJc0tleWJvYXJkRm9jdXNdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgb25DaGFuZ2UobmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuQ29tYm9ib3hQcm92aWRlciB2YWx1ZT17aW5wdXRWYWx1ZX0gc2V0VmFsdWU9e2hhbmRsZUNoYW5nZX0+XG4gICAgICB7bGFiZWwgIT0gbnVsbCAmJiAoXG4gICAgICAgIDxBcmlha2l0LkNvbWJvYm94TGFiZWxcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKCdtYi0yIGJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC10ZXh0LXByaW1hcnknLCBsYWJlbENsYXNzTmFtZSA/PyAnJyl9XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQXJpYWtpdC5Db21ib2JveExhYmVsPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUnLCBpc0tleWJvYXJkRm9jdXMgPyAncm91bmRlZC1tZCByaW5nLTIgcmluZy1yaW5nLXByaW1hcnknIDogJycpfT5cbiAgICAgICAgPEFyaWFraXQuQ29tYm9ib3hcbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdoLTEwIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyLWxpZ2h0IGJnLXN1cmZhY2UtcHJpbWFyeSBweC0zIHB5LTIgdGV4dC1zbScsXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItdGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlcicsXG4gICAgICAgICAgICAnZm9jdXM6b3V0bGluZS1ub25lJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IGhhbmRsZUNoYW5nZShldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uQmx1cj17KCkgPT4ge1xuICAgICAgICAgICAgc2V0SXNLZXlib2FyZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1cigpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Gb2N1c1Zpc2libGU9eygpID0+IHtcbiAgICAgICAgICAgIHNldElzS2V5Ym9hcmRGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRJc0tleWJvYXJkRm9jdXMoZmFsc2UpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxBcmlha2l0LkNvbWJvYm94UG9wb3ZlclxuICAgICAgICBndXR0ZXI9ezR9XG4gICAgICAgIHNhbWVXaWR0aFxuICAgICAgICBvcGVuPXtpc09wZW59XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldElzT3BlbihmYWxzZSl9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3otNTAgbWF4LWgtNjAgdy1mdWxsIG92ZXJmbG93LWF1dG8gcm91bmRlZC1tZCBiZy1zdXJmYWNlLXByaW1hcnkgcC0xIHNoYWRvdy1sZycsXG4gICAgICAgICAgJ2FuaW1hdGUtaW4gZmFkZS1pbi0wIHpvb20taW4tOTUnLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbjogc3RyaW5nIHwgT3B0aW9uV2l0aEljb24sIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICA8QXJpYWtpdC5Db21ib2JveEl0ZW1cbiAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAncmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZScsXG4gICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5IGhvdmVyOnRleHQtdGV4dC1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgJ2RhdGEtW2FjdGl2ZS1pdGVtXTpiZy1zdXJmYWNlLXRlcnRpYXJ5IGRhdGEtW2FjdGl2ZS1pdGVtXTp0ZXh0LXRleHQtcHJpbWFyeScsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgdmFsdWU9e2lzT3B0aW9uT2JqZWN0KG9wdGlvbikgPyBgJHtvcHRpb24udmFsdWUgPz8gJyd9YCA6IG9wdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNPcHRpb25PYmplY3Qob3B0aW9uKSAmJiBvcHRpb24uaWNvbiAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXItMiBmbGV4LXNocmluay0wXCI+e29wdGlvbi5pY29ufTwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7aXNPcHRpb25PYmplY3Qob3B0aW9uKSA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbn1cbiAgICAgICAgICA8L0FyaWFraXQuQ29tYm9ib3hJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvQXJpYWtpdC5Db21ib2JveFBvcG92ZXI+XG4gICAgPC9Bcmlha2l0LkNvbWJvYm94UHJvdmlkZXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdhbmltYXRlLXB1bHNlIHJvdW5kZWQtbWQgYmctc3VyZmFjZS10ZXJ0aWFyeSBvcGFjaXR5LTUwIGRhcms6b3BhY2l0eS0yNScsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFN3aXRjaFByaW1pdGl2ZXMgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXN3aXRjaCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIEJhc2VTd2l0Y2hQcm9wcyA9IE9taXQ8XG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgJ2FyaWEtbGFiZWwnIHwgJ2FyaWEtbGFiZWxsZWRieSdcbj47XG5cbnR5cGUgU3dpdGNoUHJvcHMgPVxuICB8IChCYXNlU3dpdGNoUHJvcHMgJiB7XG4gICAgICAnYXJpYS1sYWJlbCc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknPzogbmV2ZXI7XG4gICAgfSlcbiAgfCAoQmFzZVN3aXRjaFByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5jb25zdCBTd2l0Y2ggPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sIFN3aXRjaFByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAncGVlciBpbmxpbmUtZmxleCBoLTYgdy0xMSBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci10cmFuc3BhcmVudCB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpiZy1zd2l0Y2gtdW5jaGVja2VkJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHJlZj17cmVmfVxuICAgID5cbiAgICAgIDxTd2l0Y2hQcmltaXRpdmVzLlRodW1iXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzLW5vbmUgYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYmctYmFja2dyb3VuZCBzaGFkb3ctbGcgcmluZy0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTUgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0cmFuc2xhdGUteC0wJyxcbiAgICAgICAgKX1cbiAgICAgIC8+XG4gICAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4gICksXG4pO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmludGVyZmFjZSBUYWJsZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4ge1xuICB1bndyYXBwZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgVGFibGVQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdW53cmFwcGVkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IChcbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbigndy1mdWxsIGNhcHRpb24tYm90dG9tIHRleHQtc20nLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgKTtcblxuICAgIGlmICh1bndyYXBwZWQpIHtcbiAgICAgIHJldHVybiB0YWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIG92ZXJmbG93LWF1dG9cIj57dGFibGVFbGVtZW50fTwvZGl2PjtcbiAgfSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9ICdUYWJsZSc7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ1smX3RyXTpib3JkZXItYicsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSAnVGFibGVIZWFkZXInO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbignWyZfdHI6bGFzdC1jaGlsZF06Ym9yZGVyLTAnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9ICdUYWJsZUJvZHknO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRmb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignYm9yZGVyLXQgYmctbXV0ZWQvNTAgZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6Ym9yZGVyLWItMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9ICdUYWJsZUZvb3Rlcic7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpiZy1tdXRlZCcsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9ICdUYWJsZVJvdyc7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNlbGxFbGVtZW50LFxuICBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2gtMTIgcHgtNCB0ZXh0LWxlZnQgYWxpZ24tbWlkZGxlIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9ICdUYWJsZUhlYWQnO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRkXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncC00IGFsaWduLW1pZGRsZSBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSAnVGFibGVDZWxsJztcblxuY29uc3QgVGFibGVSb3dIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRoXG4gICAgcmVmPXtyZWZ9XG4gICAgc2NvcGU9XCJyb3dcIlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAncC00IHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTAnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5UYWJsZVJvd0hlYWRlci5kaXNwbGF5TmFtZSA9ICdUYWJsZVJvd0hlYWRlcic7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ210LTQgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9ICdUYWJsZUNhcHRpb24nO1xuXG5leHBvcnQge1xuICBUYWJsZSxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVGb290ZXIsXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVSb3csXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVSb3dIZWFkZXIsXG4gIFRhYmxlQ2FwdGlvbixcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBUYWJzUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC10YWJzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IFRhYnMgPSBUYWJzUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRhYnNMaXN0ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5MaXN0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkxpc3Q+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuTGlzdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctc3VyZmFjZS1wcmltYXJ5JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuVGFic0xpc3QuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLkxpc3QuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFRhYnNUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuVHJpZ2dlclxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAnaW5saW5lLWZsZXggbWluLXctWzEwMHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1bMC4xODVyZW1dIHB4LTMgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCB0cmFuc2l0aW9uLWFsbCBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9YWN0aXZlXTpiZy13aGl0ZSBkYXRhLVtzdGF0ZT1hY3RpdmVdOnRleHQtZ3JheS04MDAgZGF0YS1bc3RhdGU9YWN0aXZlXTpzaGFkb3ctc20gZGFyazpkYXRhLVtzdGF0ZT1hY3RpdmVdOmJnLWdyYXktNzAwIGRhcms6ZGF0YS1bc3RhdGU9YWN0aXZlXTp0ZXh0LWdyYXktMjAwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgLz5cbikpO1xuVGFic1RyaWdnZXIuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFRhYnNDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVGFic1ByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUYWJzUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRhYnNQcmltaXRpdmUuQ29udGVudCBjbGFzc05hbWU9e2NuKCdtdC0yIHJvdW5kZWQtbWQgcC02JywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSByZWY9e3JlZn0gLz5cbikpO1xuVGFic0NvbnRlbnQuZGlzcGxheU5hbWUgPSBUYWJzUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRhYnMsIFRhYnNMaXN0LCBUYWJzVHJpZ2dlciwgVGFic0NvbnRlbnQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFggfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBUYWdQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz4gJiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBDYW5jZWxCdXR0b24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIExhYmVsTm9kZT86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb25SZW1vdmU/OiAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBUYWdQcmltaXRpdmVSb290ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgVGFnUHJvcHM+KFxuICAoXG4gICAgeyBDYW5jZWxCdXR0b24sIExhYmVsTm9kZSwgbGFiZWwsIG9uUmVtb3ZlLCBjbGFzc05hbWUgPSAnJywgbGFiZWxDbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSxcbiAgICByZWYsXG4gICkgPT4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZsZXggbWF4LWgtOCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3cteS1oaWRkZW4gcm91bmRlZC0zeGwgYm9yZGVyLTIgYm9yZGVyLWdyZWVuLTYwMCBiZy1ncmVlbi02MDAvMjAgdGV4dC14cyB0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignbWwtMSB3aGl0ZXNwYWNlLXByZS13cmFwIHB4LTIgcHktMScsIGxhYmVsQ2xhc3NOYW1lKX0+XG4gICAgICAgIHtMYWJlbE5vZGUgPyA8PntMYWJlbE5vZGV9IDwvPiA6IG51bGx9XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvZGl2PlxuICAgICAge0NhbmNlbEJ1dHRvblxuICAgICAgICA/IENhbmNlbEJ1dHRvblxuICAgICAgICA6IG9uUmVtb3ZlICYmIChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIG9uUmVtb3ZlKGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNjAwLzUwXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YFJlbW92ZSAke2xhYmVsfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cIm0tWzEuNXB4XSBwLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5cblRhZ1ByaW1pdGl2ZVJvb3QuZGlzcGxheU5hbWUgPSAnVGFnJztcblxuZXhwb3J0IGNvbnN0IFRhZyA9IFJlYWN0Lm1lbW8oVGFnUHJpbWl0aXZlUm9vdCk7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRleHRhcmVhQXV0b3NpemUgZnJvbSAncmVhY3QtdGV4dGFyZWEtYXV0b3NpemUnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0YXJlYVByb3BzIGV4dGVuZHMgUmVhY3QuVGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiB7fVxuXG5jb25zdCBUZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ2ZsZXggaC0yMCB3LWZ1bGwgcmVzaXplLW5vbmUgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktNDAwIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpib3JkZXItZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktNTAgZGFyazpmb2N1czpyaW5nLWdyYXktNDAwIGRhcms6Zm9jdXM6cmluZy1vZmZzZXQtZ3JheS05MDAnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5UZXh0YXJlYS5kaXNwbGF5TmFtZSA9ICdUZXh0YXJlYSc7XG5cbmV4cG9ydCB7IFRleHRhcmVhIH07XG4iLCJpbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0VGV4dGFyZWFBdXRvc2l6ZSBmcm9tICdyZWFjdC10ZXh0YXJlYS1hdXRvc2l6ZSc7XG5pbXBvcnQgdHlwZSB7IFRleHRhcmVhQXV0b3NpemVQcm9wcyB9IGZyb20gJ3JlYWN0LXRleHRhcmVhLWF1dG9zaXplJztcbmltcG9ydCB7IGNoYXREaXJlY3Rpb25BdG9tIH0gZnJvbSAnfi9zdG9yZSc7XG5cbnR5cGUgQmFzZVRleHRhcmVhQXV0b3NpemVQcm9wcyA9IE9taXQ8VGV4dGFyZWFBdXRvc2l6ZVByb3BzLCAnYXJpYS1sYWJlbCcgfCAnYXJpYS1sYWJlbGxlZGJ5Jz47XG5cbmV4cG9ydCB0eXBlIFRleHRhcmVhQXV0b3NpemVQcm9wc1dpdGhBcmlhID1cbiAgfCAoQmFzZVRleHRhcmVhQXV0b3NpemVQcm9wcyAmIHtcbiAgICAgICdhcmlhLWxhYmVsJzogc3RyaW5nO1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc/OiBuZXZlcjtcbiAgICB9KVxuICB8IChCYXNlVGV4dGFyZWFBdXRvc2l6ZVByb3BzICYge1xuICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHN0cmluZztcbiAgICAgICdhcmlhLWxhYmVsJz86IG5ldmVyO1xuICAgIH0pO1xuXG5leHBvcnQgY29uc3QgVGV4dGFyZWFBdXRvc2l6ZSA9IGZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFBdXRvc2l6ZVByb3BzV2l0aEFyaWE+KFxuICAocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IFssIHNldElzUmVyZW5kZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY2hhdERpcmVjdGlvbiA9IHVzZUF0b21WYWx1ZShjaGF0RGlyZWN0aW9uQXRvbSkudG9Mb3dlckNhc2UoKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4gc2V0SXNSZXJlbmRlcmVkKHRydWUpLCBbXSk7XG4gICAgcmV0dXJuIDxSZWFjdFRleHRhcmVhQXV0b3NpemUgZGlyPXtjaGF0RGlyZWN0aW9ufSB7Li4ucHJvcHN9IHJlZj17cmVmfSAvPjtcbiAgfSxcbik7XG4iLCJpbXBvcnQgKiBhcyBSYWRpeFRvYXN0IGZyb20gJ0ByYWRpeC11aS9yZWFjdC10b2FzdCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXZlcml0eSB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnfi9ob29rcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBUb2FzdCgpIHtcbiAgY29uc3QgeyB0b2FzdCwgb25PcGVuQ2hhbmdlIH0gPSB1c2VUb2FzdCgpO1xuICBjb25zdCBzZXZlcml0eUNsYXNzTmFtZSA9IHtcbiAgICAvKiBHb2luZyB1cCBieSAxMDAgdW5pdHMgaW4gdGVybXMgb2YgZGFya25lc3MgKGVnIGJnLWdyZWVuLTUwMCB0byBiZy1ncmVlbi02MDApIGZvclxuICAgICAqIGJnIGNvbG9ycyBwcm9kdWNlcyBjb2xvcnMgdGhhdCBhcmUgdG9vIHZpc3VhbGx5IGRpc3NpbWlsYXIgdG8gTGlicmVDaGF0J3Mgc3RhbmRhcmQgY29sb3IgcGFsZXR0ZS5cbiAgICAgKiBUaGVzZSBjb2xvcnMgd2VyZSBkZXJpdmVkIGJ5IGFkanVzdGluZyB0aGUgdmFsdWVzIGluIHRoZSBIU1YgY29sb3Igc3BhY2UgdXNpbmcgQ0NBXG4gICAgICogdW50aWwgdGhlIDQuNToxIGNvbnRyYXN0IHJhdGlvIHRocmVzaG9sZCB3YXMgbWV0IGFnYWluc3Qgd2hpdGUgdGV4dCB3aGlsZSBtYWludGFpbmluZ1xuICAgICAqIGEgcmVsYXRpdmVseSByZWNvZ25pemFibGUgY29sb3Igc2NoZW1lIGZvciB0b2FzdHMgd2l0aG91dCBjb21wcm9taXNpbmcgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiAqL1xuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5JTkZPXTogJ2JvcmRlci1ncmF5LTUwMCBiZy1ncmF5LTUwMCcsXG4gICAgW05vdGlmaWNhdGlvblNldmVyaXR5LlNVQ0NFU1NdOiAnYm9yZGVyLVsjMDI4NTVFXSBiZy1bIzAyODU1RV0nLFxuICAgIFtOb3RpZmljYXRpb25TZXZlcml0eS5XQVJOSU5HXTogJ2JvcmRlci1bI0M3NTIwOV0gYmctWyNDNzUyMDldJyxcbiAgICBbTm90aWZpY2F0aW9uU2V2ZXJpdHkuRVJST1JdOiAnYm9yZGVyLVsjRTAyRjFGXSBiZy1bI0UwMkYxRl0nLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJhZGl4VG9hc3QuUm9vdFxuICAgICAgb3Blbj17dG9hc3Qub3Blbn1cbiAgICAgIG9uT3BlbkNoYW5nZT17b25PcGVuQ2hhbmdlfVxuICAgICAgY2xhc3NOYW1lPVwidG9hc3Qtcm9vdFwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBoZWlnaHQ6ICc3NHB4JyxcbiAgICAgICAgbWFyZ2luQm90dG9tOiAnMHB4JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgcC0xIHRleHQtY2VudGVyIG1kOnctYXV0byBtZDp0ZXh0LWp1c3RpZnlcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17YGFsZXJ0LXJvb3QgcG9pbnRlci1ldmVudHMtYXV0byBpbmxpbmUtZmxleCBmbGV4LXJvdyBnYXAtMiByb3VuZGVkLW1kIGJvcmRlciBweC0zIHB5LTIgZm9udC1ib2xkIHRleHQtd2hpdGUgJHtcbiAgICAgICAgICAgIHNldmVyaXR5Q2xhc3NOYW1lW3RvYXN0LnNldmVyaXR5XVxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3RvYXN0LnNob3dJY29uICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBmbGV4LXNocmluay0wIGZsZXgtZ3Jvdy0wXCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbi1zbVwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCIgLz5cbiAgICAgICAgICAgICAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCI4XCIgeDI9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjE2XCIgeDI9XCIxMi4wMVwiIHkyPVwiMTZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFJhZGl4VG9hc3QuRGVzY3JpcHRpb24gY2xhc3NOYW1lPVwiZmxleC0xIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1sZWZ0XCI+e3RvYXN0Lm1lc3NhZ2V9PC9kaXY+XG4gICAgICAgICAgPC9SYWRpeFRvYXN0LkRlc2NyaXB0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvUmFkaXhUb2FzdC5Sb290PlxuICApO1xufVxuIiwiaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VJZCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuaW1wb3J0ICcuL1Rvb2x0aXAuY3NzJztcblxuaW50ZXJmYWNlIFRvb2x0aXBBbmNob3JQcm9wcyBleHRlbmRzIEFyaWFraXQuVG9vbHRpcEFuY2hvclByb3BzIHtcbiAgcm9sZT86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlbmFibGVIVE1MPzogYm9vbGVhbjtcbiAgc2lkZT86ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xufVxuXG5leHBvcnQgY29uc3QgVG9vbHRpcEFuY2hvciA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFRvb2x0aXBBbmNob3JQcm9wcz4oZnVuY3Rpb24gVG9vbHRpcEFuY2hvcihcbiAgeyBkZXNjcmlwdGlvbiwgc2lkZSA9ICd0b3AnLCBjbGFzc05hbWUsIHJvbGUsIGVuYWJsZUhUTUwgPSBmYWxzZSwgLi4ucHJvcHMgfSxcbiAgcmVmLFxuKSB7XG4gIGNvbnN0IHRvb2x0aXAgPSBBcmlha2l0LnVzZVRvb2x0aXBTdG9yZSh7IHBsYWNlbWVudDogc2lkZSB9KTtcbiAgY29uc3QgbW91bnRlZCA9IEFyaWFraXQudXNlU3RvcmVTdGF0ZSh0b29sdGlwLCAoc3RhdGUpID0+IHN0YXRlLm1vdW50ZWQpO1xuICBjb25zdCBwbGFjZW1lbnQgPSBBcmlha2l0LnVzZVN0b3JlU3RhdGUodG9vbHRpcCwgKHN0YXRlKSA9PiBzdGF0ZS5wbGFjZW1lbnQpO1xuXG4gIGNvbnN0IHNhbml0aXplciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gRE9NUHVyaWZ5KCk7XG4gICAgaW5zdGFuY2UuYWRkSG9vaygnYWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXMnLCAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUudGFnTmFtZSAmJiBub2RlLnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzYW5pdGl6ZWRIVE1MID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVIVE1MKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc2FuaXRpemVyLnNhbml0aXplKGRlc2NyaXB0aW9uLCB7XG4gICAgICAgIEFMTE9XRURfVEFHUzogWydhJywgJ3N0cm9uZycsICdiJywgJ2VtJywgJ2knLCAnYnInLCAnY29kZSddLFxuICAgICAgICBBTExPV0VEX0FUVFI6IFsnaHJlZicsICdjbGFzcycsICd0YXJnZXQnLCAncmVsJ10sXG4gICAgICAgIEFMTE9XX0RBVEFfQVRUUjogZmFsc2UsXG4gICAgICAgIEFMTE9XX0FSSUFfQVRUUjogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignU2FuaXRpemF0aW9uIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHJldHVybiBkZXNjcmlwdGlvbjtcbiAgICB9XG4gIH0sIFtlbmFibGVIVE1MLCBkZXNjcmlwdGlvbiwgc2FuaXRpemVyXSk7XG5cbiAgY29uc3QgeyB4LCB5IH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBkaXIgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICBzd2l0Y2ggKGRpcikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHsgeDogMCwgeTogLTggfTtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IDggfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiAtOCwgeTogMCB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4geyB4OiA4LCB5OiAwIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAwIH07XG4gICAgfVxuICB9LCBbcGxhY2VtZW50XSk7XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAocm9sZSA9PT0gJ2J1dHRvbicgJiYgZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QXJpYWtpdC5Ub29sdGlwUHJvdmlkZXIgc3RvcmU9e3Rvb2x0aXB9IGhpZGVUaW1lb3V0PXswfT5cbiAgICAgIDxBcmlha2l0LlRvb2x0aXBBbmNob3JcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICBjbGFzc05hbWU9e2NuKCdjdXJzb3ItcG9pbnRlcicsIGNsYXNzTmFtZSl9XG4gICAgICAvPlxuICAgICAgPEFuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAge21vdW50ZWQgPT09IHRydWUgJiYgKFxuICAgICAgICAgIDxBcmlha2l0LlRvb2x0aXBcbiAgICAgICAgICAgIGd1dHRlcj17NH1cbiAgICAgICAgICAgIGFsd2F5c1Zpc2libGVcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgcmVuZGVyPXtcbiAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHgsIHkgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHg6IDAsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHgsIHkgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QXJpYWtpdC5Ub29sdGlwQXJyb3cgLz5cbiAgICAgICAgICAgIHtlbmFibGVIVE1MID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgICAgIF9faHRtbDogc2FuaXRpemVkSFRNTCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Bcmlha2l0LlRvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICA8L0FyaWFraXQuVG9vbHRpcFByb3ZpZGVyPlxuICApO1xufSk7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdCwgQ2hldnJvblJpZ2h0LCBNb3JlSG9yaXpvbnRhbCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgYnV0dG9uVmFyaWFudHMgfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBQYWdpbmF0aW9uID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczwnbmF2Jz4pID0+IChcbiAgPG5hdlxuICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICBhcmlhLWxhYmVsPVwicGFnaW5hdGlvblwiXG4gICAgY2xhc3NOYW1lPXtjbignbXgtYXV0byBmbGV4IHctZnVsbCBqdXN0aWZ5LWNlbnRlcicsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblBhZ2luYXRpb24uZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbic7XG5cbmNvbnN0IFBhZ2luYXRpb25Db250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVUxpc3RFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczwndWwnPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHVsIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMScsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5QYWdpbmF0aW9uQ29udGVudC5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uQ29udGVudCc7XG5cbmNvbnN0IFBhZ2luYXRpb25JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MTElFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczwnbGknPj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8bGkgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJycsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuUGFnaW5hdGlvbkl0ZW0uZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbkl0ZW0nO1xuXG50eXBlIFBhZ2luYXRpb25MaW5rUHJvcHMgPSB7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbn0gJiBQaWNrPEJ1dHRvblByb3BzLCAnc2l6ZSc+ICZcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHM8J2EnPjtcblxuY29uc3QgUGFnaW5hdGlvbkxpbmsgPSAoe1xuICBjbGFzc05hbWUsXG4gIGlzQWN0aXZlID0gZmFsc2UsXG4gIHNpemUgPSAnaWNvbicsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFnaW5hdGlvbkxpbmtQcm9wcykgPT4gKFxuICA8YVxuICAgIGFyaWEtY3VycmVudD17aXNBY3RpdmUgPyAncGFnZScgOiB1bmRlZmluZWR9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIGJ1dHRvblZhcmlhbnRzKHtcbiAgICAgICAgdmFyaWFudDogaXNBY3RpdmUgPyAnb3V0bGluZScgOiAnZ2hvc3QnLFxuICAgICAgICBzaXplLFxuICAgICAgfSksXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW4gfHwgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPlBhZ2UgbGluazwvc3Bhbj59XG4gIDwvYT5cbik7XG5QYWdpbmF0aW9uTGluay5kaXNwbGF5TmFtZSA9ICdQYWdpbmF0aW9uTGluayc7XG5cbmNvbnN0IFBhZ2luYXRpb25QcmV2aW91cyA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uTGluaz4pID0+IChcbiAgPFBhZ2luYXRpb25MaW5rXG4gICAgYXJpYS1sYWJlbD1cIkdvIHRvIHByZXZpb3VzIHBhZ2VcIlxuICAgIHNpemU9XCJkZWZhdWx0XCJcbiAgICBjbGFzc05hbWU9e2NuKCdnYXAtMSBwbC0yLjUnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJoLTQgdy00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICA8c3Bhbj5QcmV2aW91czwvc3Bhbj5cbiAgPC9QYWdpbmF0aW9uTGluaz5cbik7XG5QYWdpbmF0aW9uUHJldmlvdXMuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvblByZXZpb3VzJztcblxuY29uc3QgUGFnaW5hdGlvbk5leHQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uTGluaz4pID0+IChcbiAgPFBhZ2luYXRpb25MaW5rXG4gICAgYXJpYS1sYWJlbD1cIkdvIHRvIG5leHQgcGFnZVwiXG4gICAgc2l6ZT1cImRlZmF1bHRcIlxuICAgIGNsYXNzTmFtZT17Y24oJ2dhcC0xIHByLTIuNScsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4+TmV4dDwvc3Bhbj5cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cImgtNCB3LTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICA8L1BhZ2luYXRpb25MaW5rPlxuKTtcblBhZ2luYXRpb25OZXh0LmRpc3BsYXlOYW1lID0gJ1BhZ2luYXRpb25OZXh0JztcblxuY29uc3QgUGFnaW5hdGlvbkVsbGlwc2lzID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczwnc3Bhbic+KSA9PiAoXG4gIDxzcGFuXG4gICAgYXJpYS1oaWRkZW5cbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGgtOSB3LTkgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8TW9yZUhvcml6b250YWwgY2xhc3NOYW1lPVwiaC00IHctNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPk1vcmUgcGFnZXM8L3NwYW4+XG4gIDwvc3Bhbj5cbik7XG5QYWdpbmF0aW9uRWxsaXBzaXMuZGlzcGxheU5hbWUgPSAnUGFnaW5hdGlvbkVsbGlwc2lzJztcblxuZXhwb3J0IHtcbiAgUGFnaW5hdGlvbixcbiAgUGFnaW5hdGlvbkNvbnRlbnQsXG4gIFBhZ2luYXRpb25FbGxpcHNpcyxcbiAgUGFnaW5hdGlvbkl0ZW0sXG4gIFBhZ2luYXRpb25MaW5rLFxuICBQYWdpbmF0aW9uTmV4dCxcbiAgUGFnaW5hdGlvblByZXZpb3VzLFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFByb2dyZXNzUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcm9ncmVzcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBQcm9ncmVzcyA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByb2dyZXNzUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByb2dyZXNzUHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgdmFsdWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UHJvZ3Jlc3NQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3JlbGF0aXZlIGgtMiB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzIwJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8UHJvZ3Jlc3NQcmltaXRpdmUuSW5kaWNhdG9yXG4gICAgICBjbGFzc05hbWU9XCJoLWZ1bGwgdy1mdWxsIGZsZXgtMSBiZy1wcmltYXJ5IHRyYW5zaXRpb24tYWxsXCJcbiAgICAgIHN0eWxlPXt7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLSR7MTAwIC0gKHZhbHVlIHx8IDApfSUpYCB9fVxuICAgIC8+XG4gIDwvUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdD5cbikpO1xuUHJvZ3Jlc3MuZGlzcGxheU5hbWUgPSBQcm9ncmVzc1ByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQcm9ncmVzcyB9O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgT1RQSW5wdXQsIE9UUElucHV0Q29udGV4dCB9IGZyb20gJ2lucHV0LW90cCc7XG5pbXBvcnQgeyBNaW51cyB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBJbnB1dE9UUCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIE9UUElucHV0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBPVFBJbnB1dD5cbj4oKHsgY2xhc3NOYW1lLCBjb250YWluZXJDbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8T1RQSW5wdXRcbiAgICByZWY9e3JlZn1cbiAgICBjb250YWluZXJDbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGhhcy1bOmRpc2FibGVkXTpvcGFjaXR5LTUwJyxcbiAgICAgIGNvbnRhaW5lckNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNsYXNzTmFtZT17Y24oJ2Rpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5JbnB1dE9UUC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUCc7XG5cbmNvbnN0IElucHV0T1RQR3JvdXAgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPCdkaXYnPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdkaXYnPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlcicsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuSW5wdXRPVFBHcm91cC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUEdyb3VwJztcblxuY29uc3QgSW5wdXRPVFBTbG90ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjwnZGl2Jz4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGl2Jz4gJiB7IGluZGV4OiBudW1iZXIgfVxuPigoeyBpbmRleCwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgaW5wdXRPVFBDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChPVFBJbnB1dENvbnRleHQpO1xuXG4gIGlmICghaW5wdXRPVFBDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dE9UUFNsb3QgbXVzdCBiZSB1c2VkIHdpdGhpbiBhbiBPVFBJbnB1dCcpO1xuICB9XG5cbiAgY29uc3QgeyBjaGFyLCBoYXNGYWtlQ2FyZXQsIGlzQWN0aXZlIH0gPSBpbnB1dE9UUENvbnRleHQuc2xvdHNbaW5kZXhdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAndGV4dC1tZCByZWxhdGl2ZSBmbGV4IGgtMTEgdy0xMSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXkgYm9yZGVyLXIgYm9yZGVyLWlucHV0IHNoYWRvdy1zbSB0cmFuc2l0aW9uLWFsbCBmaXJzdDpyb3VuZGVkLWwteGwgZmlyc3Q6Ym9yZGVyLWwgbGFzdDpyb3VuZGVkLXIteGwnLFxuICAgICAgICBpc0FjdGl2ZSAmJiAnei0xMCByaW5nLTEgcmluZy1yaW5nJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hhcn1cbiAgICAgIHtoYXNGYWtlQ2FyZXQgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1jYXJldC1ibGluayBoLTQgdy1weCBiZy1mb3JlZ3JvdW5kIGR1cmF0aW9uLTEwMDBcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcbklucHV0T1RQU2xvdC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUFNsb3QnO1xuXG5jb25zdCBJbnB1dE9UUFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8J2Rpdic+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2Rpdic+XG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IHJlZj17cmVmfSByb2xlPVwic2VwYXJhdG9yXCIgey4uLnByb3BzfT5cbiAgICA8TWludXMgLz5cbiAgPC9kaXY+XG4pKTtcbklucHV0T1RQU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gJ0lucHV0T1RQU2VwYXJhdG9yJztcblxuZXhwb3J0IHsgSW5wdXRPVFAsIElucHV0T1RQR3JvdXAsIElucHV0T1RQU2xvdCwgSW5wdXRPVFBTZXBhcmF0b3IgfTtcbiIsImltcG9ydCB7IFNlYXJjaCwgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG4vKiogVGhpcyBpcyBhIGdlbmVyaWMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gTWVudSBhbmQgU2VsZWN0IGNvbXBvbmVudHMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE11bHRpU2VhcmNoKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBwbGFjZWhvbGRlcixcbiAgY2xhc3NOYW1lID0gJycsXG59OiB7XG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsO1xuICBvbkNoYW5nZTogKGZpbHRlcjogc3RyaW5nKSA9PiB2b2lkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcblxuICBjb25zdCBvbkNoYW5nZUhhbmRsZXI6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSksXG4gICAgW29uQ2hhbmdlXSxcbiAgKTtcblxuICBjb25zdCBjbGVhclNlYXJjaCA9ICgpID0+IHtcbiAgICBvbkNoYW5nZSgnJyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIH0sIDApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2ZvY3VzOnRvLXN1cmZhY2UtcHJpbWFyeS81MCBncm91cCBzdGlja3kgbGVmdC0wIHRvcC0wIHotMTAgZmxleCBoLTEyIGl0ZW1zLWNlbnRlciBnYXAtMiBiZy1ncmFkaWVudC10by1iIGZyb20tc3VyZmFjZS10ZXJ0aWFyeS1hbHQgZnJvbS02NSUgdG8tdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtdGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCBmb2N1czpiZy1ncmFkaWVudC10by1iIGZvY3VzOmZyb20tc3VyZmFjZS1wcmltYXJ5JyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICA+XG4gICAgICA8U2VhcmNoXG4gICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC10ZXh0LXNlY29uZGFyeS1hbHQgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwXCJcbiAgICAgICAgYXJpYS1oaWRkZW49eyd0cnVlJ31cbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICB2YWx1ZT17dmFsdWUgPz8gJyd9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUhhbmRsZXJ9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtTdHJpbmcocGxhY2Vob2xkZXIgPz8gJ1NlYXJjaC4uLicpfVxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIE1vZGVsXCJcbiAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIHJvdW5kZWQtbWQgYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcHgtMi41IHB5LTIgdGV4dC1zbSBwbGFjZWhvbGRlci10ZXh0LXNlY29uZGFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctcmluZy1wcmltYXJ5XCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgJ3JlbGF0aXZlIGZsZXggaC01IHctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcm91bmRlZC1tZCB0ZXh0LXRleHQtc2Vjb25kYXJ5LWFsdCcsXG4gICAgICAgICAgKHZhbHVlPy5sZW5ndGggPz8gMCkgPyAnY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0xMDAnIDogJ2hpZGRlbicsXG4gICAgICAgICl9XG4gICAgICAgIGFyaWEtbGFiZWw9eydDbGVhciBzZWFyY2gnfVxuICAgICAgICBvbkNsaWNrPXtjbGVhclNlYXJjaH1cbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICA+XG4gICAgICAgIDxYXG4gICAgICAgICAgYXJpYS1oaWRkZW49eyd0cnVlJ31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ3RleHQtdGV4dC1zZWNvbmRhcnktYWx0JyxcbiAgICAgICAgICAgICh2YWx1ZT8ubGVuZ3RoID8/IDApID8gJ2N1cnNvci1wb2ludGVyIG9wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTAnLFxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgYSBtdWx0aVNlYXJjaCBpbnB1dFxuICogQHBhcmFtIG5vZGVcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdEdldFN0cmluZ0tleShub2RlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJykge1xuICAgIC8vIEJVR0ZJWDogRGV0ZWN0IHBzZWRlbyBzZXBhcmF0b3JzIGFuZCBtYWtlIHN1cmUgdGhleSBkb24ndCBhcHBlYXIgaW4gdGhlIGxpc3Qgd2hlbiBmaWx0ZXJpbmcgaXRlbXNcbiAgICAvLyBpdCBtYWtlcyBzdXJlIChmb3IgdGhlIG1vc3QgcGFydCkgdGhhdCB0aGUgbW9kZWwgbmFtZSBzdGFydHMgYW5kIGVuZHMgd2l0aCBkYXNoZXNcbiAgICAvLyBUaGUgbG9uZy10ZXJtIGZpeCBoZXJlIHdvdWxkIGJlIHRvIGVuYWJsZSBzZXBlcmF0b3JzIChtb2RlbCBncm91cGluZ3MpIGJ1dCB0aGVyZSdzIG5vXG4gICAgLy8gZmVhdHVyZSBtb2NrcyBmb3Igc3VjaCBhIHRoaW5nIHlldFxuICAgIGlmIChub2RlLnN0YXJ0c1dpdGgoJy0tLScpICYmIG5vZGUuZW5kc1dpdGgoJy0tLScpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGUudG9VcHBlckNhc2UoKTtcbiAgfVxuICAvLyBUaGlzIHNob3VsZCBiZSBhIG5vb3AsIGJ1dCBpdCdzIGhlcmUgZm9yIHJlZHVuZGFuY3lcbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIEhvb2sgZm9yIGNvbmRpdGlvbmFsbHkgbWFraW5nIGEgbXVsdGktZWxlbWVudCBsaXN0IGNvbXBvbmVudCBpbnRvIGEgc29ydGFibGUgY29tcG9uZW50XG4gKiBSZXR1cm5zIGEgUmVuZGVyTm9kZSBmb3Igc2VhcmNoIGlucHV0IHdoZW4gc2VhcmNoIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlXG4gKiBAcGFyYW0gYXZhaWxhYmxlT3B0aW9uc1xuICogQHBhcmFtIHBsYWNlaG9sZGVyXG4gKiBAcGFyYW0gZ2V0VGV4dEtleU92ZXJyaWRlXG4gKiBAcGFyYW0gY2xhc3NOYW1lIC0gQWRkaXRpb25hbCBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgc2VhcmNoIGNvbnRhaW5lclxuICogQHBhcmFtIGRpc2FibGVkIC0gSWYgdGhlIHNlYXJjaCBzaG91bGQgYmUgZGlzYWJsZWRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNdWx0aVNlYXJjaDxPcHRpb25zVHlwZSBleHRlbmRzIHVua25vd25bXT4oe1xuICBhdmFpbGFibGVPcHRpb25zID0gW10gYXMgdW5rbm93biBhcyBPcHRpb25zVHlwZSxcbiAgcGxhY2Vob2xkZXIsXG4gIGdldFRleHRLZXlPdmVycmlkZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxufToge1xuICBhdmFpbGFibGVPcHRpb25zPzogT3B0aW9uc1R5cGU7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBnZXRUZXh0S2V5T3ZlcnJpZGU/OiAobm9kZTogT3B0aW9uc1R5cGVbMF0pID0+IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59KTogW09wdGlvbnNUeXBlLCBSZWFjdC5SZWFjdE5vZGVdIHtcbiAgY29uc3QgW2ZpbHRlclZhbHVlLCBzZXRGaWx0ZXJWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvLyBXZSBjb25kaXRpb25hbGx5IHNob3cgdGhlIHNlYXJjaCB3aGVuIHRoZXJlJ3MgbW9yZSB0aGFuIDEwIGVsZW1lbnRzIGluIHRoZSBtZW51XG4gIGNvbnN0IHNob3VsZFNob3dTZWFyY2ggPSBhdmFpbGFibGVPcHRpb25zLmxlbmd0aCA+IDEwICYmICFkaXNhYmxlZDtcblxuICAvLyBEZWZpbmUgdGhlIGhlbHBlciBmdW5jdGlvbiB1c2VkIHRvIGVuYWJsZSBzZWFyY2hcbiAgLy8gSWYgdGhpcyBpcyBpbnZhbGlkbHkgZGVzY3JpYmVkLCB3ZSB3aWxsIGFzc3VtZSBkZXZlbG9wZXIgZXJyb3IgLSB0Zi4gYXZvaWQgcmVuZGVyaW5nXG4gIGNvbnN0IGdldFRleHRLZXlIZWxwZXIgPSBnZXRUZXh0S2V5T3ZlcnJpZGUgfHwgZGVmYXVsdEdldFN0cmluZ0tleTtcblxuICAvLyBJdGVyYXRlIHNhaWQgb3B0aW9uc1xuICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gZmlsdGVyVmFsdWUgPz8gJyc7XG4gICAgaWYgKCFzaG91bGRTaG93U2VhcmNoIHx8ICFjdXJyZW50RmlsdGVyIHx8ICFhdmFpbGFibGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgLy8gRG9uJ3QgcmVuZGVyIGlmIGF2YWlsYWJsZSBvcHRpb25zIGFyZW4ndCBwcmVzZW50LCB0aGVyZSdzIG5vIGZpbHRlciBhY3RpdmVcbiAgICAgIHJldHVybiBhdmFpbGFibGVPcHRpb25zO1xuICAgIH1cbiAgICAvLyBGaWx0ZXIgdGhyb3VnaCB0aGUgdmFsdWVzLCB1c2luZyBhIHNpbXBsZSB0ZXh0LWJhc2VkIHNlYXJjaFxuICAgIC8vIG5vdGhpbmcgdG9vIGZhbmN5LCBidXQgd2UgY2FuIGFkZCBhIGJldHRlciBzZWFyY2ggYWxnbyBsYXRlciBpZiB3ZSBuZWVkXG4gICAgY29uc3QgdXBwZXJGaWx0ZXJWYWx1ZSA9IGN1cnJlbnRGaWx0ZXIudG9VcHBlckNhc2UoKTtcblxuICAgIHJldHVybiBhdmFpbGFibGVPcHRpb25zLmZpbHRlcigodmFsdWUpID0+XG4gICAgICBnZXRUZXh0S2V5SGVscGVyKHZhbHVlKS5pbmNsdWRlcyh1cHBlckZpbHRlclZhbHVlKSxcbiAgICApIGFzIE9wdGlvbnNUeXBlO1xuICB9LCBbYXZhaWxhYmxlT3B0aW9ucywgZ2V0VGV4dEtleUhlbHBlciwgZmlsdGVyVmFsdWUsIHNob3VsZFNob3dTZWFyY2hdKTtcblxuICBjb25zdCBvblNlYXJjaENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0RmlsdGVyVmFsdWU6IHN0cmluZykgPT4gc2V0RmlsdGVyVmFsdWUobmV4dEZpbHRlclZhbHVlKSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBzZWFyY2hSZW5kZXIgPSBzaG91bGRTaG93U2VhcmNoID8gKFxuICAgIDxNdWx0aVNlYXJjaFxuICAgICAgdmFsdWU9e2ZpbHRlclZhbHVlfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBvbkNoYW5nZT17b25TZWFyY2hDaGFuZ2V9XG4gICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgLz5cbiAgKSA6IG51bGw7XG5cbiAgcmV0dXJuIFtmaWx0ZXJlZE9wdGlvbnMsIHNlYXJjaFJlbmRlcl07XG59XG4iLCJpbXBvcnQgeyBHcmlwVmVydGljYWwgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0ICogYXMgUmVzaXphYmxlUHJpbWl0aXZlIGZyb20gJ3JlYWN0LXJlc2l6YWJsZS1wYW5lbHMnO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbEdyb3VwID0gKHtcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsR3JvdXA+KSA9PiAoXG4gIDxSZXNpemFibGVQcmltaXRpdmUuUGFuZWxHcm91cFxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaC1mdWxsIHctZnVsbCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmZsZXgtY29sJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbCA9IFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbDtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlID0gKHtcbiAgd2l0aEhhbmRsZSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPiAmIHtcbiAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gIDxSZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGVcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3JlbGF0aXZlIGZsZXggdy1weCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOmluc2V0LXktMCBhZnRlcjpsZWZ0LTEvMiBhZnRlcjp3LTEgYWZ0ZXI6LXRyYW5zbGF0ZS14LTEvMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTpoLXB4IGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6bGVmdC0wIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6aC0xIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6LXRyYW5zbGF0ZS15LTEvMiBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOnRyYW5zbGF0ZS14LTAgWyZbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdPmRpdl06cm90YXRlLTkwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHt3aXRoSGFuZGxlICYmIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiei0xMCBmbGV4IGgtNCB3LTMgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtc20gYm9yZGVyIGJnLWJvcmRlclwiPlxuICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cImgtMi41IHctMi41XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPlxuKTtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlQWx0ID0gKHtcbiAgd2l0aEhhbmRsZSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPiAmIHtcbiAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gIDxSZXNpemFibGVQcmltaXRpdmUuUGFuZWxSZXNpemVIYW5kbGVcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2dyb3VwIHJlbGF0aXZlIGZsZXggdy1weCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYm9yZGVyIGFmdGVyOmFic29sdXRlIGFmdGVyOmluc2V0LXktMCBhZnRlcjpsZWZ0LTEvMiBhZnRlcjp3LTEgYWZ0ZXI6LXRyYW5zbGF0ZS14LTEvMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTEgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTpoLXB4IGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6bGVmdC0wIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6aC0xIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6dy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXI6LXRyYW5zbGF0ZS15LTEvMiBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOnRyYW5zbGF0ZS14LTAgWyZbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdPmRpdl06cm90YXRlLTkwJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHt3aXRoSGFuZGxlICYmIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW52aXNpYmxlIHotMTAgZmxleCBoLTQgdy0zIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGJvcmRlciBiZy1ib3JkZXIgZ3JvdXAtaG92ZXI6dmlzaWJsZSBncm91cC1hY3RpdmU6dmlzaWJsZSBncm91cC1kYXRhLVtyZXNpemUtaGFuZGxlLWFjdGl2ZV06dmlzaWJsZVwiPlxuICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cImgtMi41IHctMi41XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvUmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsUmVzaXplSGFuZGxlPlxuKTtcblxuZXhwb3J0IHsgUmVzaXphYmxlUGFuZWxHcm91cCwgUmVzaXphYmxlUGFuZWwsIFJlc2l6YWJsZUhhbmRsZSwgUmVzaXphYmxlSGFuZGxlQWx0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyBDYXJldFNvcnRJY29uLCBDaGVja0ljb24sIENoZXZyb25Eb3duSWNvbiwgQ2hldnJvblVwSWNvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pY29ucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG4vLyBAdHMtaWdub3JlIC0gUmFkaXggVUkgdHlwZSBjb25mbGljdHMgd2l0aCBSZWFjdCB0eXBlc1xuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbi8vIEB0cy1pZ25vcmUgLSBSYWRpeCBVSSB0eXBlIGNvbmZsaWN0cyB3aXRoIFJlYWN0IHR5cGVzXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBib3JkZXItaW5wdXQgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0yIHRleHQtc20gc2hhZG93LXNtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJvcmRlci1ncmF5LTYwMCBbJj5zcGFuXTpsaW5lLWNsYW1wLTEnLFxuICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2FyZXRTb3J0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvblVwSWNvbiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbERvd25CdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4+KCh7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICdmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd25JY29uIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIGNoaWxkcmVuLCBwb3NpdGlvbiA9ICdwb3BwZXInLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdiZy1wb3BvdmVyIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHJlbGF0aXZlIHotNDAgbWF4LWgtOTYgbWluLXctWzhyZW1dIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0yMDAgc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiBkYXJrOmJvcmRlci1ncmF5LTYwMCcsXG4gICAgICAgIHBvc2l0aW9uID09PSAncG9wcGVyJ1xuICAgICAgICAgID8gJ2RhdGEtW3NpZGU9Ym90dG9tXTp0cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06LXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06dHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06LXRyYW5zbGF0ZS15LTEnXG4gICAgICAgICAgOiAnJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncC0xJyxcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gJ3BvcHBlcidcbiAgICAgICAgICAgID8gJ2gtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHctZnVsbCBtaW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXSdcbiAgICAgICAgICAgIDogJycsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lID0gJycsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncHgtMiBweS0xLjUgdGV4dC1zbSBmb250LXNlbWlib2xkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUgPSAnJywgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3JlbGF0aXZlIGZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC0yIHByLTggdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAnLFxuICAgICAgJ3JvdW5kZWQtbGcgaG92ZXI6YmctZ3JheS0xMDAvNTAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUgPSAnJywgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignLW14LTEgbXktMSBoLXB4IGJnLW11dGVkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0LCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTG9jYWxpemUgfSBmcm9tICd+L2hvb2tzJztcblxuaW50ZXJmYWNlIE9wdGlvbiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmludGVyZmFjZSBSYWRpb1Byb3BzIHtcbiAgb3B0aW9uczogT3B0aW9uW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZnVsbFdpZHRoPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUmFkaW8gPSBtZW1vKGZ1bmN0aW9uIFJhZGlvKHtcbiAgb3B0aW9ucyxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgZnVsbFdpZHRoID0gZmFsc2UsXG59OiBSYWRpb1Byb3BzKSB7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjwoSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsKVtdPihbXSk7XG4gIGNvbnN0IFtpc01vdW50ZWQsIHNldElzTW91bnRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID8/ICcnKTtcbiAgY29uc3QgW2JhY2tncm91bmRTdHlsZSwgc2V0QmFja2dyb3VuZFN0eWxlXSA9IHVzZVN0YXRlPFJlYWN0LkNTU1Byb3BlcnRpZXM+KHt9KTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgb25DaGFuZ2U/LihuZXdWYWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQmFja2dyb3VuZFN0eWxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleCgob3B0KSA9PiBvcHQudmFsdWUgPT09IGN1cnJlbnRWYWx1ZSk7XG4gICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCAmJiBidXR0b25SZWZzLmN1cnJlbnRbc2VsZWN0ZWRJbmRleF0pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQnV0dG9uID0gYnV0dG9uUmVmcy5jdXJyZW50W3NlbGVjdGVkSW5kZXhdO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gc2VsZWN0ZWRCdXR0b24/LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRCdXR0b24gJiYgY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJ1dHRvblJlY3QgPSBzZWxlY3RlZEJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IGJ1dHRvblJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCAtIDQ7XG4gICAgICAgIHNldEJhY2tncm91bmRTdHlsZSh7XG4gICAgICAgICAgd2lkdGg6IGAke2J1dHRvblJlY3Qud2lkdGh9cHhgLFxuICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtvZmZzZXRMZWZ0fXB4KWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2N1cnJlbnRWYWx1ZSwgb3B0aW9uc10pO1xuXG4gIC8vIE1hcmsgYXMgbW91bnRlZCBhZnRlciBkaWFsb2cgYW5pbWF0aW9ucyBzZXR0bGVcbiAgLy8gVGltZW91dCBlbnN1cmVzIHdlIHdhaXQgZm9yIENTUyB0cmFuc2l0aW9ucyB0byBjb21wbGV0ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldElzTW91bnRlZCh0cnVlKTtcbiAgICB9LCA1MCk7XG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9LCBbXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNb3VudGVkKSB7XG4gICAgICB1cGRhdGVCYWNrZ3JvdW5kU3R5bGUoKTtcbiAgICB9XG4gIH0sIFtpc01vdW50ZWQsIHVwZGF0ZUJhY2tncm91bmRTdHlsZV0pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNldEN1cnJlbnRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9LCBbdmFsdWVdKTtcblxuICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy1tdXRlZCBwLTEgb3BhY2l0eS01MFwiXG4gICAgICAgIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHgtNCBweS0yIHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAge2xvY2FsaXplKCdjb21fdWlfbm9fb3B0aW9ucycpfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvcHQpID0+IG9wdC52YWx1ZSA9PT0gY3VycmVudFZhbHVlKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YHJlbGF0aXZlICR7ZnVsbFdpZHRoID8gJ2ZsZXgnIDogJ2lubGluZS1mbGV4J30gaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgYmctbXV0ZWQgcC0xICR7Y2xhc3NOYW1lfWB9XG4gICAgICByb2xlPVwicmFkaW9ncm91cFwiXG4gICAgPlxuICAgICAge3NlbGVjdGVkSW5kZXggPj0gMCAmJiBpc01vdW50ZWQgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC15LTEgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci81MCBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1zbSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1vdXRcIlxuICAgICAgICAgIHN0eWxlPXtiYWNrZ3JvdW5kU3R5bGV9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICByZWY9eyhlbCkgPT4ge1xuICAgICAgICAgICAgYnV0dG9uUmVmcy5jdXJyZW50W2luZGV4XSA9IGVsO1xuICAgICAgICAgIH19XG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cInJhZGlvXCJcbiAgICAgICAgICBhcmlhLWNoZWNrZWQ9e2N1cnJlbnRWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNoYW5nZShvcHRpb24udmFsdWUpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSB6LTEwIGZsZXggaC1bMzRweF0gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgcHgtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyAke1xuICAgICAgICAgICAgY3VycmVudFZhbHVlID09PSBvcHRpb24udmFsdWUgPyAndGV4dC1mb3JlZ3JvdW5kJyA6ICd0ZXh0LWZvcmVncm91bmQnXG4gICAgICAgICAgfSAke2Rpc2FibGVkID8gJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJyA6ICcnfSAke2Z1bGxXaWR0aCA/ICdmbGV4LTEnIDogJyd9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24uaWNvbiAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIHtvcHRpb24uaWNvbn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIndoaXRlc3BhY2Utbm93cmFwXCI+e29wdGlvbi5sYWJlbH08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW87XG4iLCJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBYLCBQbHVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBCdXR0b25IVE1MQXR0cmlidXRlcyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTHVjaWRlSWNvbiB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQmFkZ2VQcm9wc1xuICBleHRlbmRzIE9taXQ8XG4gICAgQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICdvbkFuaW1hdGlvblN0YXJ0JyB8ICdvbkRyYWdTdGFydCcgfCAnb25EcmFnRW5kJyB8ICdvbkRyYWcnXG4gID4ge1xuICBpY29uPzogTHVjaWRlSWNvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNFZGl0aW5nPzogYm9vbGVhbjtcbiAgaXNEcmFnZ2luZz86IGJvb2xlYW47XG4gIGlzQXZhaWxhYmxlOiBib29sZWFuO1xuICBpc0luQ2hhdD86IGJvb2xlYW47XG4gIG9uQmFkZ2VBY3Rpb24/OiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZT86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhZGdlKHtcbiAgaWNvbjogSWNvbixcbiAgbGFiZWwsXG4gIGlkLFxuICBpc0FjdGl2ZSA9IGZhbHNlLFxuICBpc0VkaXRpbmcgPSBmYWxzZSxcbiAgaXNEcmFnZ2luZyA9IGZhbHNlLFxuICBpc0F2YWlsYWJsZSA9IHRydWUsXG4gIGlzSW5DaGF0ID0gZmFsc2UsXG4gIG9uQmFkZ2VBY3Rpb24sXG4gIG9uVG9nZ2xlLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBCYWRnZVByb3BzKSB7XG4gIGNvbnN0IGlzTW92ZWFibGUgPSBpc0VkaXRpbmcgJiYgaXNBdmFpbGFibGU7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBpZCA9PT0gJzEnICYmIGlzSW5DaGF0O1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrOiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gPSAoZSkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNFZGl0aW5nICYmIG9uVG9nZ2xlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgb25Ub2dnbGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0V2hpbGVUYXBTY2FsZSA9ICgpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgcmV0dXJuIDEuMTtcbiAgICB9XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMC45NztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncm91cCByZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSByb3VuZGVkLWZ1bGwgcHgtNCBweS0xLjUnLFxuICAgICAgICAnYm9yZGVyIGJvcmRlci1ib3JkZXItbWVkaXVtIHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1zaGFkb3cnLFxuICAgICAgICAnQGNvbnRhaW5lci1bNjAwcHhdOnctZnVsbCBzaXplLTkgcC0yJyxcbiAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICA/ICdiZy1zdXJmYWNlLWFjdGl2ZSBzaGFkb3ctbWQnXG4gICAgICAgICAgOiAnYmctc3VyZmFjZS1jaGF0IHNoYWRvdy1zbSBob3ZlcjpiZy1zdXJmYWNlLWhvdmVyIGhvdmVyOnNoYWRvdy1tZCcsXG4gICAgICAgICdhY3RpdmU6c2NhbGUtOTUgYWN0aXZlOnNoYWRvdy1pbm5lcicsXG4gICAgICAgIGlzTW92ZWFibGUgJiYgJ2N1cnNvci1tb3ZlJyxcbiAgICAgICAgaXNEaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAgaG92ZXI6c2hhZG93LXNtJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIGFuaW1hdGU9e3tcbiAgICAgICAgc2NhbGU6IGlzRHJhZ2dpbmcgPyAxLjEgOiAxLFxuICAgICAgICBib3hTaGFkb3c6IGlzRHJhZ2dpbmcgPyAnMCAxMHB4IDI1cHggcmdiYSgwLDAsMCwwLjEpJyA6IHVuZGVmaW5lZCxcbiAgICAgIH19XG4gICAgICB3aGlsZVRhcD17eyBzY2FsZTogZ2V0V2hpbGVUYXBTY2FsZSgpIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IHR5cGU6ICd0d2VlbicsIGR1cmF0aW9uOiAwLjEsIGVhc2U6ICdlYXNlT3V0JyB9fVxuICAgICAgey4uLihwcm9wcyBhcyBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgbW90aW9uLmJ1dHRvbj4pfVxuICAgID5cbiAgICAgIHtJY29uICYmIChcbiAgICAgICAgPEljb25cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ0Bjb250YWluZXItWzYwMHB4XTpoLTQgQGNvbnRhaW5lci1bNjAwcHhdOnctNCByZWxhdGl2ZSBoLTUgdy01JyxcbiAgICAgICAgICAgICFsYWJlbCAmJiAnbXgtYXV0bycsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIkBjb250YWluZXItWzYwMHB4XTppbmxpbmUgcmVsYXRpdmUgaGlkZGVuXCI+e2xhYmVsfTwvc3Bhbj5cblxuICAgICAge2lzRWRpdGluZyAmJiAhaXNEcmFnZ2luZyAmJiAoXG4gICAgICAgIDxtb3Rpb24uYnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiQGNvbnRhaW5lci1bNjAwcHhdOmgtNSBAY29udGFpbmVyLVs2MDBweF06dy01IGFic29sdXRlIC1yaWdodC0xIC10b3AtMSBmbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1zdXJmYWNlLXNlY29uZGFyeS1hbHQgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LXNtXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjggfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC44IH19XG4gICAgICAgICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOSB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIG9uQmFkZ2VBY3Rpb24/LigpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7aXNBdmFpbGFibGUgPyA8WCBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz4gOiA8UGx1cyBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz59XG4gICAgICAgIDwvbW90aW9uLmJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9tb3Rpb24uYnV0dG9uPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJjaGl2ZUljb24oeyBjbGFzc05hbWUgPSAnaWNvbi1tZCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMuNjIxODggMy4wNzkxOEMzLjg3NTk3IDIuNTcxIDQuMzk1MzcgMi4yNSA0Ljk2MzUzIDIuMjVIMTMuMDM2NUMxMy42MDQ2IDIuMjUgMTQuMTI0IDIuNTcxIDE0LjM3ODEgMy4wNzkxOEwxNS43NSA1LjgyMjk1VjEzLjVDMTUuNzUgMTQuNzQyNiAxNC43NDI2IDE1Ljc1IDEzLjUgMTUuNzVINC41QzMuMjU3MzYgMTUuNzUgMi4yNSAxNC43NDI2IDIuMjUgMTMuNVY1LjgyMjk1TDMuNjIxODggMy4wNzkxOFpNMTMuMDM2NSAzLjc1SDQuOTYzNTNMNC4yMTM1MyA1LjI1SDEzLjc4NjVMMTMuMDM2NSAzLjc1Wk0xNC4yNSA2Ljc1SDMuNzVWMTMuNUMzLjc1IDEzLjkxNDIgNC4wODU3OSAxNC4yNSA0LjUgMTQuMjVIMTMuNUMxMy45MTQyIDE0LjI1IDE0LjI1IDEzLjkxNDIgMTQuMjUgMTMuNVY2Ljc1Wk02Ljc1IDlDNi43NSA4LjU4NTc5IDcuMDg1NzkgOC4yNSA3LjUgOC4yNUgxMC41QzEwLjkxNDIgOC4yNSAxMS4yNSA4LjU4NTc5IDExLjI1IDlDMTEuMjUgOS40MTQyMSAxMC45MTQyIDkuNzUgMTAuNSA5Ljc1SDcuNUM3LjA4NTc5IDkuNzUgNi43NSA5LjQxNDIxIDYuNzUgOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmxvY2tzKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbignbHVjaWRlIGx1Y2lkZS1ibG9ja3MnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI3XCIgeD1cIjE0XCIgeT1cIjNcIiByeD1cIjFcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMCAyMVY4YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAtMS0xSDNcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBsdWdpbih7IGNsYXNzTmFtZSA9ICcnLCAuLi5wcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTMuMTY0Ljk4YS43LjcgMCAwIDAtMS4zMjggMGwtLjQ3OCAxLjQzNWEuNy43IDAgMCAxLS40NDMuNDQzbC0xLjQzNi40NzhhLjcuNyAwIDAgMCAwIDEuMzI4bDEuNDM2LjQ3OWEuNy43IDAgMCAxIC40NDMuNDQybC40NzggMS40MzZhLjcuNyAwIDAgMCAxLjMyOCAwbC40NzgtMS40MzZhLjcuNyAwIDAgMSAuNDQzLS40NDNsMS40MzYtLjQ3OGEuNy43IDAgMCAwIDAtMS4zMjhsLTEuNDM2LS40NzhhLjcuNyAwIDAgMS0uNDQzLS40NDNMMTMuMTY0Ljk3OVpcIiAvPlxuICAgICAgICA8cGF0aCBkPVwiTTEzLjIzNyAxMC41MzRjLS4yMjgtLjI0NS0uNTEzLS40Ni0uODQ3LS40NmEuODIzLjgyMyAwIDAgMC0uODI4Ljg0OWMuMDQgMS4wNC4xMjggMi4wNjcuMjYzIDMuMDhhLjYxOS42MTkgMCAwIDEtLjUyOC42OTVjLS44NzIuMTIxLTEuNzQ4LjIwOC0yLjYyNi4yNjJhLjguOCAwIDAgMS0uODQ1LS44MDVjMC0uMzI1LjIxLS42MDIuNDUtLjgyLjIzNS0uMjE1LjM3NS0uNDg4LjM3NS0uNzg3IDAtLjY4My0uNzM4LTEuMjM3LTEuNjUtMS4yMzctLjkxMSAwLTEuNjUuNTU0LTEuNjUgMS4yMzcgMCAuMjk0LjEzNy41NjMuMzY0Ljc3NS4yNDUuMjI5LjQ2MS41MTMuNDYxLjg0OGEuODIzLjgyMyAwIDAgMS0uODUuODI5IDMzLjgwOSAzMy44MDkgMCAwIDEtMy4yNjYtLjI3OC42MTkuNjE5IDAgMCAxLS41MzItLjUzMiAzNC4wOTkgMzQuMDk5IDAgMCAxLS4yNzgtMy4yNjcuODIzLjgyMyAwIDAgMSAuODMtLjg1Yy4zMzMgMCAuNjE5LjIxNi44NDYuNDYxLjIxMi4yMjguNDgyLjM2NC43NzYuMzY0LjY4MyAwIDEuMjM3LS43MzggMS4yMzctMS42NSAwLS45MS0uNTU0LTEuNjUtMS4yMzctMS42NS0uMjk5IDAtLjU3Mi4xNDItLjc4Ni4zNzYtLjIxOS4yNC0uNDk2LjQ1LS44MjEuNDVhLjguOCAwIDAgMS0uODA1LS44NDVjLjA1NC0uODg1LjE0Mi0xLjc2LjI2Mi0yLjYyNmEuNjE5LjYxOSAwIDAgMSAuNjk1LS41MjhjMS4wMjIuMTM2IDIuMDUuMjI0IDMuMDguMjYzYS44MjIuODIyIDAgMCAwIC44NS0uODI4YzAtLjMzNC0uMjE3LS42Mi0uNDYyLS44NDctLjIyNy0uMjEyLS4zNjMtLjQ4Mi0uMzYzLS43NzZDNS4zNTIgMS41NTQgNi4wOSAxIDcuMDAyIDFjLjkxIDAgMS42NDkuNTU0IDEuNjQ5IDEuMjM3IDAgLjE3My0uMDEyLjMyNy0uMDI5LjQ3M0M4LjI1OCAzIDggMy40MSA4IDRjMCAxLjUgMS42NjcgMS44MzMgMi41IDIgLjE2Ny44MzMuNSAyLjUgMiAyLjUuNzMyIDAgMS4xODYtLjM5NyAxLjQ3OS0uOWwuMDM0LS4wMDFjLjY4MyAwIDEuMjM3LjczOCAxLjIzNyAxLjY1IDAgLjkxMS0uNTU0IDEuNjUtMS4yMzcgMS42NS0uMjk0IDAtLjU2NC0uMTM3LS43NzYtLjM2NFpcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdQVEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgIHZpZXdCb3g9e2AwIDAgJHt1bml0fSAke3VuaXR9YH1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0zNy41MzI0IDE2Ljg3MDdDMzcuOTgwOCAxNS41MjQxIDM4LjEzNjMgMTQuMDk3NCAzNy45ODg2IDEyLjY4NTlDMzcuODQwOSAxMS4yNzQ0IDM3LjM5MzQgOS45MTA3NiAzNi42NzYgOC42ODYyMkMzNS42MTI2IDYuODM0MDQgMzMuOTg4MiA1LjM2NzYgMzIuMDM3MyA0LjQ5ODVDMzAuMDg2NCAzLjYyOTQxIDI3LjkwOTggMy40MDI1OSAyNS44MjE1IDMuODUwNzhDMjQuODc5NiAyLjc4OTMgMjMuNzIxOSAxLjk0MTI1IDIyLjQyNTcgMS4zNjM0MUMyMS4xMjk1IDAuNzg1NTc1IDE5LjcyNDkgMC40OTEyNjkgMTguMzA1OCAwLjUwMDE5N0MxNi4xNzA4IDAuNDk1MDQ0IDE0LjA4OTMgMS4xNjgwMyAxMi4zNjE0IDIuNDIyMTRDMTAuNjMzNSAzLjY3NjI0IDkuMzQ4NTMgNS40NDY2NiA4LjY5MTcgNy40NzgxNUM3LjMwMDg1IDcuNzYyODYgNS45ODY4NiA4LjM0MTQgNC44Mzc3IDkuMTc1MDVDMy42ODg1NCAxMC4wMDg3IDIuNzMwNzMgMTEuMDc4MiAyLjAyODM5IDEyLjMxMkMwLjk1NjQ2NCAxNC4xNTkxIDAuNDk4OTA1IDE2LjI5ODggMC43MjE2OTggMTguNDIyOEMwLjk0NDQ5MiAyMC41NDY3IDEuODM2MTIgMjIuNTQ0OSAzLjI2OCAyNC4xMjkzQzIuODE5NjYgMjUuNDc1OSAyLjY2NDEzIDI2LjkwMjYgMi44MTE4MiAyOC4zMTQxQzIuOTU5NTEgMjkuNzI1NiAzLjQwNzAxIDMxLjA4OTIgNC4xMjQzNyAzMi4zMTM4QzUuMTg3OTEgMzQuMTY1OSA2LjgxMjMgMzUuNjMyMiA4Ljc2MzIxIDM2LjUwMTNDMTAuNzE0MSAzNy4zNzA0IDEyLjg5MDcgMzcuNTk3MyAxNC45Nzg5IDM3LjE0OTJDMTUuOTIwOCAzOC4yMTA3IDE3LjA3ODYgMzkuMDU4NyAxOC4zNzQ3IDM5LjYzNjZDMTkuNjcwOSA0MC4yMTQ0IDIxLjA3NTUgNDAuNTA4NyAyMi40OTQ2IDQwLjQ5OThDMjQuNjMwNyA0MC41MDU0IDI2LjcxMzMgMzkuODMyMSAyOC40NDE4IDM4LjU3NzJDMzAuMTcwNCAzNy4zMjIzIDMxLjQ1NTYgMzUuNTUwNiAzMi4xMTE5IDMzLjUxNzlDMzMuNTAyNyAzMy4yMzMyIDM0LjgxNjcgMzIuNjU0NyAzNS45NjU5IDMxLjgyMUMzNy4xMTUgMzAuOTg3NCAzOC4wNzI4IDI5LjkxNzggMzguNzc1MiAyOC42ODRDMzkuODQ1OCAyNi44MzcxIDQwLjMwMjMgMjQuNjk3OSA0MC4wNzg5IDIyLjU3NDhDMzkuODU1NiAyMC40NTE3IDM4Ljk2MzkgMTguNDU0NCAzNy41MzI0IDE2Ljg3MDdaTTIyLjQ5NzggMzcuODg0OUMyMC43NDQzIDM3Ljg4NzQgMTkuMDQ1OSAzNy4yNzMzIDE3LjY5OTQgMzYuMTUwMUMxNy43NjAxIDM2LjExNyAxNy44NjY2IDM2LjA1ODYgMTcuOTM2IDM2LjAxNjFMMjUuOTAwNCAzMS40MTU2QzI2LjEwMDMgMzEuMzAxOSAyNi4yNjYzIDMxLjEzNyAyNi4zODEzIDMwLjkzNzhDMjYuNDk2NCAzMC43Mzg2IDI2LjU1NjMgMzAuNTEyNCAyNi41NTQ5IDMwLjI4MjVWMTkuMDU0MkwyOS45MjEzIDIwLjk5OEMyOS45Mzg5IDIxLjAwNjggMjkuOTU0MSAyMS4wMTk4IDI5Ljk2NTYgMjEuMDM1OUMyOS45NzcgMjEuMDUyIDI5Ljk4NDIgMjEuMDcwNyAyOS45ODY3IDIxLjA5MDJWMzAuMzg4OUMyOS45ODQyIDMyLjM3NSAyOS4xOTQ2IDM0LjI3OTEgMjcuNzkwOSAzNS42ODQxQzI2LjM4NzIgMzcuMDg5MiAyNC40ODM4IDM3Ljg4MDYgMjIuNDk3OCAzNy44ODQ5Wk02LjM5MjI3IDMxLjAwNjRDNS41MTM5NyAyOS40ODg4IDUuMTk3NDIgMjcuNzEwNyA1LjQ5ODA0IDI1Ljk4MzJDNS41NTcxOCAyNi4wMTg3IDUuNjYwNDggMjYuMDgxOCA1LjczNDYxIDI2LjEyNDRMMTMuNjk5IDMwLjcyNDhDMTMuODk3NSAzMC44NDA4IDE0LjEyMzMgMzAuOTAyIDE0LjM1MzIgMzAuOTAyQzE0LjU4MyAzMC45MDIgMTQuODA4OCAzMC44NDA4IDE1LjAwNzMgMzAuNzI0OEwyNC43MzEgMjUuMTEwM1YyOC45OTc5QzI0LjczMjEgMjkuMDE3NyAyNC43MjgzIDI5LjAzNzYgMjQuNzE5OSAyOS4wNTU2QzI0LjcxMTUgMjkuMDczNiAyNC42OTg4IDI5LjA4OTMgMjQuNjgyOSAyOS4xMDEyTDE2LjYzMTcgMzMuNzQ5N0MxNC45MDk2IDM0Ljc0MTYgMTIuODY0MyAzNS4wMDk3IDEwLjk0NDcgMzQuNDk1NEM5LjAyNTA2IDMzLjk4MTEgNy4zODc4NSAzMi43MjYzIDYuMzkyMjcgMzEuMDA2NFpNNC4yOTcwNyAxMy42MTk0QzUuMTcxNTYgMTIuMDk5OCA2LjU1Mjc5IDEwLjkzNjQgOC4xOTg4NSAxMC4zMzI3QzguMTk4ODUgMTAuNDAxMyA4LjE5NDkxIDEwLjUyMjggOC4xOTQ5MSAxMC42MDcxVjE5LjgwOEM4LjE5MzUxIDIwLjAzNzggOC4yNTMzNCAyMC4yNjM4IDguMzY4MjMgMjAuNDYyOUM4LjQ4MzEyIDIwLjY2MTkgOC42NDg5MyAyMC44MjY3IDguODQ4NjMgMjAuOTQwNEwxOC41NzIzIDI2LjU1NDJMMTUuMjA2IDI4LjQ5NzlDMTUuMTg5NCAyOC41MDg5IDE1LjE3MDMgMjguNTE1NSAxNS4xNTA1IDI4LjUxNzNDMTUuMTMwNyAyOC41MTkxIDE1LjExMDcgMjguNTE2IDE1LjA5MjQgMjguNTA4Mkw3LjA0MDQ2IDIzLjg1NTdDNS4zMjEzNSAyMi44NjAxIDQuMDY3MTYgMjEuMjIzNSAzLjU1Mjg5IDE5LjMwNDZDMy4wMzg2MiAxNy4zODU4IDMuMzA2MjQgMTUuMzQxMyA0LjI5NzA3IDEzLjYxOTRaTTMxLjk1NSAyMC4wNTU2TDIyLjIzMTIgMTQuNDQxMUwyNS41OTc2IDEyLjQ5ODFDMjUuNjE0MiAxMi40ODcyIDI1LjYzMzMgMTIuNDgwNSAyNS42NTMxIDEyLjQ3ODdDMjUuNjcyOSAxMi40NzY5IDI1LjY5MjggMTIuNDgwMSAyNS43MTExIDEyLjQ4NzlMMzMuNzYzMSAxNy4xMzY0QzM0Ljk5NjcgMTcuODQ5IDM2LjAwMTcgMTguODk4MiAzNi42NjA2IDIwLjE2MTNDMzcuMzE5NCAyMS40MjQ0IDM3LjYwNDcgMjIuODQ5IDM3LjQ4MzIgMjQuMjY4NEMzNy4zNjE3IDI1LjY4NzggMzYuODM4MiAyNy4wNDMyIDM1Ljk3NDMgMjguMTc1OUMzNS4xMTAzIDI5LjMwODYgMzMuOTQxNSAzMC4xNzE3IDMyLjYwNDcgMzAuNjY0MUMzMi42MDQ3IDMwLjU5NDcgMzIuNjA0NyAzMC40NzMzIDMyLjYwNDcgMzAuMzg4OVYyMS4xODhDMzIuNjA2NiAyMC45NTg2IDMyLjU0NzQgMjAuNzMyOCAzMi40MzMyIDIwLjUzMzhDMzIuMzE5IDIwLjMzNDggMzIuMTU0IDIwLjE2OTggMzEuOTU1IDIwLjA1NTZaTTM1LjMwNTUgMTUuMDEyOEMzNS4yNDY0IDE0Ljk3NjUgMzUuMTQzMSAxNC45MTQyIDM1LjA2OSAxNC44NzE3TDI3LjEwNDUgMTAuMjcxMkMyNi45MDYgMTAuMTU1NCAyNi42ODAzIDEwLjA5NDMgMjYuNDUwNCAxMC4wOTQzQzI2LjIyMDYgMTAuMDk0MyAyNS45OTQ4IDEwLjE1NTQgMjUuNzk2MyAxMC4yNzEyTDE2LjA3MjYgMTUuODg1OFYxMS45OTgyQzE2LjA3MTUgMTEuOTc4MyAxNi4wNzUzIDExLjk1ODUgMTYuMDgzNyAxMS45NDA1QzE2LjA5MjEgMTEuOTIyNSAxNi4xMDQ4IDExLjkwNjggMTYuMTIwNyAxMS44OTQ5TDI0LjE3MTkgNy4yNTAyNUMyNS40MDUzIDYuNTM5MDMgMjYuODE1OCA2LjE5Mzc2IDI4LjIzODMgNi4yNTQ4MkMyOS42NjA4IDYuMzE1ODkgMzEuMDM2NCA2Ljc4MDc3IDMyLjIwNDQgNy41OTUwOEMzMy4zNzIzIDguNDA5MzkgMzQuMjg0MiA5LjUzOTQ1IDM0LjgzMzQgMTAuODUzMUMzNS4zODI2IDEyLjE2NjcgMzUuNTQ2NCAxMy42MDk1IDM1LjMwNTUgMTUuMDEyOFpNMTQuMjQyNCAyMS45NDE5TDEwLjg3NTIgMTkuOTk4MUMxMC44NTc2IDE5Ljk4OTMgMTAuODQyMyAxOS45NzYzIDEwLjgzMDkgMTkuOTYwMkMxMC44MTk1IDE5Ljk0NDEgMTAuODEyMiAxOS45MjU0IDEwLjgwOTggMTkuOTA1OFYxMC42MDcxQzEwLjgxMDcgOS4xODI5NSAxMS4yMTczIDcuNzg4NDggMTEuOTgxOSA2LjU4Njk2QzEyLjc0NjYgNS4zODU0NCAxMy44Mzc3IDQuNDI2NTkgMTUuMTI3NSAzLjgyMjY0QzE2LjQxNzMgMy4yMTg2OSAxNy44NTI0IDIuOTk0NjQgMTkuMjY0OSAzLjE3NjdDMjAuNjc3NSAzLjM1ODc2IDIyLjAwODkgMy45Mzk0MSAyMy4xMDM0IDQuODUwNjdDMjMuMDQyNyA0Ljg4Mzc5IDIyLjkzNyA0Ljk0MjE1IDIyLjg2NjggNC45ODQ3M0wxNC45MDI0IDkuNTg1MTdDMTQuNzAyNSA5LjY5ODc4IDE0LjUzNjYgOS44NjM1NiAxNC40MjE1IDEwLjA2MjZDMTQuMzA2NSAxMC4yNjE2IDE0LjI0NjYgMTAuNDg3NyAxNC4yNDc5IDEwLjcxNzVMMTQuMjQyNCAyMS45NDE5Wk0xNi4wNzEgMTcuOTk5MUwyMC40MDE4IDE1LjQ5NzhMMjQuNzMyNSAxNy45OTc1VjIyLjk5ODVMMjAuNDAxOCAyNS40OTgzTDE2LjA3MSAyMi45OTg1VjE3Ljk5OTFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNpemU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBFZGl0SWNvbiA9IFJlYWN0LmZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPigocHJvcHM6IEljb25Qcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lID0gJ2ljb24tbWQnLCBzaXplID0gJzEuMmVtJyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgcmVmPXtyZWZ9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEzLjI5MjkgNC4yOTI5MUMxNS4wNjQxIDIuNTIxNjcgMTcuOTM1OSAyLjUyMTY3IDE5LjcwNzEgNC4yOTI5QzIxLjQ3ODMgNi4wNjQxNCAyMS40NzgzIDguOTM1ODggMTkuNzA3MSAxMC43MDcxTDE4LjcwNzMgMTEuNzA2OUwxMS4xNjAzIDE5LjI1MzlDMTAuNzE4MiAxOS42OTYgMTAuMTQ4OSAxOS45ODkgOS41MzIxOSAyMC4wOTE4TDQuMTY0NCAyMC45ODY0QzMuODQ1ODQgMjEuMDM5NSAzLjUyMTI1IDIwLjkzNTUgMy4yOTI4OSAyMC43MDcxQzMuMDY0NTMgMjAuNDc4OCAyLjk2MDUxIDIwLjE1NDIgMy4wMTM2IDE5LjgzNTZMMy45MDgyNCAxNC40Njc4QzQuMDExMDMgMTMuODUxMSA0LjMwMzk2IDEzLjI4MTggNC43NDYxIDEyLjgzOTdMMTMuMjkyOSA0LjI5MjkxWk0xMyA3LjQxNDIyTDYuMTYwMzEgMTQuMjUzOUM2LjAxMjkzIDE0LjQwMTMgNS45MTUyOSAxNC41OTEgNS44ODEwMiAxNC43OTY2TDUuMjE2NTUgMTguNzgzNUw5LjIwMzM5IDE4LjExOUM5LjQwODk4IDE4LjA4NDcgOS41OTg3MiAxNy45ODcxIDkuNzQ2MSAxNy44Mzk3TDE2LjU4NTggMTFMMTMgNy40MTQyMlpNMTggOS41ODU4TDE0LjQxNDIgNi4wMDAwMUwxNC43MDcxIDUuNzA3MTJDMTUuNjk3MyA0LjcxNjkzIDE3LjMwMjcgNC43MTY5MyAxOC4yOTI5IDUuNzA3MTJDMTkuMjgzMSA2LjY5NzMxIDE5LjI4MzEgOC4zMDI3MiAxOC4yOTI5IDkuMjkyOTFMMTggOS41ODU4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0SWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFJY29uKHsgY2xhc3NOYW1lID0gJ2ljb24tc20nIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk02LjAwNjMzIDUuNUM2LjAyMzIxIDUuNTMzMTkgNi4wNzA0MiA1LjYwMzY2IDYuMTk1MjUgNS43MDkwNkM2LjQyNDU4IDUuOTAyNyA2LjgxNTczIDYuMTIyMTUgNy4zODY1OSA2LjMyNjAzQzguNTE5NiA2LjczMDY3IDEwLjE1MDYgNyAxMiA3QzEzLjg0OTQgNyAxNS40ODA0IDYuNzMwNjcgMTYuNjEzNCA2LjMyNjAzQzE3LjE4NDMgNi4xMjIxNSAxNy41NzU0IDUuOTAyNyAxNy44MDQ4IDUuNzA5MDZDMTcuOTI5NiA1LjYwMzY2IDE3Ljk3NjggNS41MzMxOSAxNy45OTM3IDUuNUMxNy45NzY4IDUuNDY2ODEgMTcuOTI5NiA1LjM5NjM0IDE3LjgwNDggNS4yOTA5NEMxNy41NzU0IDUuMDk3MyAxNy4xODQzIDQuODc3ODUgMTYuNjEzNCA0LjY3Mzk3QzE1LjQ4MDQgNC4yNjkzMyAxMy44NDk0IDQgMTIgNEMxMC4xNTA2IDQgOC41MTk2IDQuMjY5MzMgNy4zODY1OSA0LjY3Mzk3QzYuODE1NzMgNC44Nzc4NSA2LjQyNDU4IDUuMDk3MyA2LjE5NTI1IDUuMjkwOTRDNi4wNzA0MiA1LjM5NjM0IDYuMDIzMjEgNS40NjY4MSA2LjAwNjMzIDUuNVpNMTggNy45MTcyNkMxNy43NzI2IDguMDI0MDMgMTcuNTMzMyA4LjEyMTIzIDE3LjI4NjEgOC4yMDk1MUMxNS44ODU2IDguNzA5NjggMTQuMDE2NiA5IDEyIDlDOS45ODM0MSA5IDguMTE0NCA4LjcwOTY4IDYuNzEzOTIgOC4yMDk1MUM2LjQ2Njc0IDguMTIxMjMgNi4yMjczOCA4LjAyNDAzIDYgNy45MTcyNlYxMS45ODY2QzYuMDA4MTMgMTIuMDA3MyA2LjAzOTMxIDEyLjA2NjEgNi4xNDI1OSAxMi4xNjI0QzYuMzE5NzYgMTIuMzI3NyA2LjYzMTgxIDEyLjUyNTIgNy4xMDYwOSAxMi43MTg5QzguMDQ4MzcgMTMuMTAzOSA5LjQzMDI3IDEzLjM5MzIgMTEuMDUxIDEzLjQ3NkMxMS42MDI2IDEzLjUwNDIgMTIuMDI2OSAxMy45NzQxIDExLjk5ODcgMTQuNTI1N0MxMS45NzA1IDE1LjA3NzMgMTEuNTAwNSAxNS41MDE2IDEwLjk0OSAxNS40NzM0QzkuMTc3NDQgMTUuMzgyOSA3LjU1OTM0IDE1LjA2NDYgNi4zNDk2OSAxNC41NzA0QzYuMjMwOTcgMTQuNTIxOSA2LjExNDE5IDE0LjQ3MDkgNiAxNC40MTczVjE4LjQ4NjZDNi4wMDgxMyAxOC41MDczIDYuMDM5MzEgMTguNTY2MSA2LjE0MjU5IDE4LjY2MjRDNi4zMTk3NiAxOC44Mjc3IDYuNjMxODEgMTkuMDI1MiA3LjEwNjA5IDE5LjIxODlDOC4wNDgzNyAxOS42MDM5IDkuNDMwMjcgMTkuODkzMiAxMS4wNTEgMTkuOTc2QzExLjYwMjYgMjAuMDA0MiAxMi4wMjY5IDIwLjQ3NDEgMTEuOTk4NyAyMS4wMjU3QzExLjk3MDUgMjEuNTc3MyAxMS41MDA1IDIyLjAwMTYgMTAuOTQ5IDIxLjk3MzRDOS4xNzc0NCAyMS44ODI5IDcuNTU5MzQgMjEuNTY0NiA2LjM0OTY5IDIxLjA3MDRDNS43NDgwMSAyMC44MjQ2IDUuMTk2MTEgMjAuNTE0NiA0Ljc3ODMzIDIwLjEyNDlDNC4zNTk0OCAxOS43MzQxIDQgMTkuMTg2NiA0IDE4LjVWNS41QzQgNC43NDYzMSA0LjQzMDQ4IDQuMTYzNDYgNC45MDQ5NCAzLjc2MjgzQzUuMzg0MDUgMy4zNTgyOSA2LjAxODAzIDMuMDM5MDIgNi43MTM5MiAyLjc5MDQ5QzguMTE0NCAyLjI5MDMyIDkuOTgzNDEgMiAxMiAyQzE0LjAxNjYgMiAxNS44ODU2IDIuMjkwMzIgMTcuMjg2MSAyLjc5MDQ5QzE3Ljk4MiAzLjAzOTAyIDE4LjYxNiAzLjM1ODI5IDE5LjA5NTEgMy43NjI4M0MxOS41Njk1IDQuMTYzNDYgMjAgNC43NDYzMSAyMCA1LjVWMTBDMjAgMTAuNTUyMyAxOS41NTIzIDExIDE5IDExQzE4LjQ0NzcgMTEgMTggMTAuNTUyMyAxOCAxMFY3LjkxNzI2Wk0xNy41IDEzQzE4LjA1MjMgMTMgMTguNSAxMy40NDc3IDE4LjUgMTRWMTQuNjcwN0MxOC44NTEgMTQuNzk0OCAxOS4xNzIgMTQuOTgyMyAxOS40NDkyIDE1LjIxOTVMMjAuMDMwOCAxNC44ODM3QzIwLjUwOTEgMTQuNjA3NSAyMS4xMjA3IDE0Ljc3MTQgMjEuMzk2OCAxNS4yNDk3QzIxLjY3MyAxNS43MjggMjEuNTA5MSAxNi4zMzk2IDIxLjAzMDggMTYuNjE1N0wyMC40NDk5IDE2Ljk1MTFDMjAuNDgyOCAxNy4xMjkxIDIwLjUgMTcuMzEyNSAyMC41IDE3LjVDMjAuNSAxNy42ODczIDIwLjQ4MjggMTcuODcwNyAyMC40NSAxOC4wNDg1TDIxLjAzMDggMTguMzgzOEMyMS41MDkxIDE4LjY1OTkgMjEuNjcyOSAxOS4yNzE1IDIxLjM5NjggMTkuNzQ5OEMyMS4xMjA2IDIwLjIyODEgMjAuNTA5MSAyMC4zOTIgMjAuMDMwOCAyMC4xMTU4TDE5LjQ0OTUgMTkuNzgwM0MxOS4xNzIyIDIwLjAxNzYgMTguODUxMSAyMC4yMDUyIDE4LjUgMjAuMzI5M1YyMUMxOC41IDIxLjU1MjMgMTguMDUyMyAyMiAxNy41IDIyQzE2Ljk0NzcgMjIgMTYuNSAyMS41NTIzIDE2LjUgMjFWMjAuMzI5M0MxNi4xNDg5IDIwLjIwNTIgMTUuODI3NyAyMC4wMTc2IDE1LjU1MDQgMTkuNzgwMkwxNC45NjkgMjAuMTE1OUMxNC40OTA3IDIwLjM5MiAxMy44NzkxIDIwLjIyODIgMTMuNjAzIDE5Ljc0OTlDMTMuMzI2OSAxOS4yNzE2IDEzLjQ5MDcgMTguNjYgMTMuOTY5IDE4LjM4MzlMMTQuNTUgMTguMDQ4NEMxNC41MTcyIDE3Ljg3MDYgMTQuNSAxNy42ODczIDE0LjUgMTcuNUMxNC41IDE3LjMxMjcgMTQuNTE3MiAxNy4xMjk0IDE0LjU1IDE2Ljk1MTVMMTMuOTY5MSAxNi42MTYxQzEzLjQ5MDggMTYuMzQgMTMuMzI2OSAxNS43Mjg0IDEzLjYwMzEgMTUuMjUwMUMxMy44NzkyIDE0Ljc3MTggMTQuNDkwOCAxNC42MDggMTQuOTY5MSAxNC44ODQxTDE1LjU1MDQgMTUuMjE5N0MxNS44Mjc4IDE0Ljk4MjQgMTYuMTQ4OSAxNC43OTQ4IDE2LjUgMTQuNjcwN1YxNEMxNi41IDEzLjQ0NzcgMTYuOTQ3NyAxMyAxNy41IDEzWk0xNi42MjQgMTcuMDE3NEMxNi42Mjc0IDE3LjAxMTcgMTYuNjMwOCAxNy4wMDU5IDE2LjYzNDIgMTcuMDAwMUMxNi42Mzc0IDE2Ljk5NDYgMTYuNjQwNSAxNi45ODkgMTYuNjQzNiAxNi45ODM0QzE2LjgxODcgMTYuNjkzNyAxNy4xMzY3IDE2LjUgMTcuNSAxNi41QzE3Ljg2NDUgMTYuNSAxOC4xODM1IDE2LjY5NTEgMTguMzU4MyAxNi45ODY1QzE4LjM2MDcgMTYuOTkwOSAxOC4zNjMyIDE2Ljk5NTMgMTguMzY1OCAxNi45OTk3QzE4LjM2ODUgMTcuMDA0NCAxOC4zNzEzIDE3LjAwOTEgMTguMzc0MSAxNy4wMTM4QzE4LjQ1NDMgMTcuMTU3NyAxOC41IDE3LjMyMzUgMTguNSAxNy41QzE4LjUgMTcuNjczNyAxOC40NTU3IDE3LjgzNzEgMTguMzc3OCAxNy45Nzk0QzE4LjM3MzcgMTcuOTg2MSAxOC4zNjk3IDE3Ljk5MjkgMTguMzY1NyAxNy45OTk4QzE4LjM2MTkgMTguMDA2NCAxOC4zNTgxIDE4LjAxMzEgMTguMzU0NSAxOC4wMTk4QzE4LjE3ODkgMTguMzA3NyAxNy44NjE5IDE4LjUgMTcuNSAxOC41QzE3LjEzNjIgMTguNSAxNi44MTc4IDE4LjMwNTggMTYuNjQyOCAxOC4wMTU0QzE2LjY0IDE4LjAxMDIgMTYuNjM3MSAxOC4wMDUgMTYuNjM0MSAxNy45OTk5QzE2LjYzMSAxNy45OTQ1IDE2LjYyNzggMTcuOTg5MSAxNi42MjQ2IDE3Ljk4MzhDMTYuNTQ1MiAxNy44NDA0IDE2LjUgMTcuNjc1NSAxNi41IDE3LjVDMTYuNSAxNy4zMjUgMTYuNTQ1IDE3LjE2MDUgMTYuNjI0IDE3LjAxNzRaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2lkZWJhcih7IGNsYXNzTmFtZSB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOC44NTcxOSAzSDE1LjE0MjhDMTYuMjI2NiAyLjk5OTk5IDE3LjEwMDcgMi45OTk5OCAxNy44MDg2IDMuMDU3ODJDMTguNTM3NSAzLjExNzM3IDE5LjE3NzcgMy4yNDMxOCAxOS43NyAzLjU0NDk3QzIwLjcxMDggNC4wMjQzMyAyMS40NzU3IDQuNzg5MjQgMjEuOTU1IDUuNzMwMDVDMjIuMjU2OCA2LjMyMjM0IDIyLjM4MjYgNi45NjI1MyAyMi40NDIyIDcuNjkxMzhDMjIuNSA4LjM5OTI1IDIyLjUgOS4yNzMzOSAyMi41IDEwLjM1NzJWMTMuNjQyOEMyMi41IDE0LjcyNjYgMjIuNSAxNS42MDA4IDIyLjQ0MjIgMTYuMzA4NkMyMi4zODI2IDE3LjAzNzUgMjIuMjU2OCAxNy42Nzc3IDIxLjk1NSAxOC4yN0MyMS40NzU3IDE5LjIxMDggMjAuNzEwOCAxOS45NzU3IDE5Ljc3IDIwLjQ1NUMxOS4xNzc3IDIwLjc1NjggMTguNTM3NSAyMC44ODI2IDE3LjgwODYgMjAuOTQyMkMxNy4xMDA4IDIxIDE2LjIyNjYgMjEgMTUuMTQyOCAyMUg4Ljg1NzE3QzcuNzczMzkgMjEgNi44OTkyNSAyMSA2LjE5MTM4IDIwLjk0MjJDNS40NjI1MyAyMC44ODI2IDQuODIyMzQgMjAuNzU2OCA0LjIzMDA1IDIwLjQ1NUMzLjI4OTI0IDE5Ljk3NTcgMi41MjQzMyAxOS4yMTA4IDIuMDQ0OTcgMTguMjdDMS43NDMxOCAxNy42Nzc3IDEuNjE3MzcgMTcuMDM3NSAxLjU1NzgyIDE2LjMwODZDMS40OTk5OCAxNS42MDA3IDEuNDk5OTkgMTQuNzI2NiAxLjUgMTMuNjQyOFYxMC4zNTcyQzEuNDk5OTkgOS4yNzM0MSAxLjQ5OTk4IDguMzk5MjYgMS41NTc4MiA3LjY5MTM4QzEuNjE3MzcgNi45NjI1MyAxLjc0MzE4IDYuMzIyMzQgMi4wNDQ5NyA1LjczMDA1QzIuNTI0MzMgNC43ODkyNCAzLjI4OTI0IDQuMDI0MzMgNC4yMzAwNSAzLjU0NDk3QzQuODIyMzQgMy4yNDMxOCA1LjQ2MjUzIDMuMTE3MzcgNi4xOTEzOCAzLjA1NzgyQzYuODk5MjYgMi45OTk5OCA3Ljc3MzQxIDIuOTk5OTkgOC44NTcxOSAzWk02LjM1NDI0IDUuMDUxMThDNS43NDkwNyA1LjEwMDYyIDUuNDAxMzggNS4xOTI3OSA1LjEzODAzIDUuMzI2OThDNC41NzM1NCA1LjYxNDYgNC4xMTQ2IDYuMDczNTQgMy44MjY5OCA2LjYzODAzQzMuNjkyNzkgNi45MDEzOCAzLjYwMDYyIDcuMjQ5MDcgMy41NTExOCA3Ljg1NDI0QzMuNTAwNzggOC40NzEwOCAzLjUgOS4yNjMzOSAzLjUgMTAuNFYxMy42QzMuNSAxNC43MzY2IDMuNTAwNzggMTUuNTI4OSAzLjU1MTE4IDE2LjE0NThDMy42MDA2MiAxNi43NTA5IDMuNjkyNzkgMTcuMDk4NiAzLjgyNjk4IDE3LjM2MkM0LjExNDYgMTcuOTI2NSA0LjU3MzU0IDE4LjM4NTQgNS4xMzgwMyAxOC42NzNDNS40MDEzOCAxOC44MDcyIDUuNzQ5MDcgMTguODk5NCA2LjM1NDI0IDE4Ljk0ODhDNi45NzEwOCAxOC45OTkyIDcuNzYzMzkgMTkgOC45IDE5SDkuNVY1SDguOUM3Ljc2MzM5IDUgNi45NzEwOCA1LjAwMDc4IDYuMzU0MjQgNS4wNTExOFpNMTEuNSA1VjE5SDE1LjFDMTYuMjM2NiAxOSAxNy4wMjg5IDE4Ljk5OTIgMTcuNjQ1OCAxOC45NDg4QzE4LjI1MDkgMTguODk5NCAxOC41OTg2IDE4LjgwNzIgMTguODYyIDE4LjY3M0MxOS40MjY1IDE4LjM4NTQgMTkuODg1NCAxNy45MjY1IDIwLjE3MyAxNy4zNjJDMjAuMzA3MiAxNy4wOTg2IDIwLjM5OTQgMTYuNzUwOSAyMC40NDg4IDE2LjE0NThDMjAuNDk5MiAxNS41Mjg5IDIwLjUgMTQuNzM2NiAyMC41IDEzLjZWMTAuNEMyMC41IDkuMjYzMzkgMjAuNDk5MiA4LjQ3MTA4IDIwLjQ0ODggNy44NTQyNEMyMC4zOTk0IDcuMjQ5MDcgMjAuMzA3MiA2LjkwMTM4IDIwLjE3MyA2LjYzODAzQzE5Ljg4NTQgNi4wNzM1NCAxOS40MjY1IDUuNjE0NiAxOC44NjIgNS4zMjY5OEMxOC41OTg2IDUuMTkyNzkgMTguMjUwOSA1LjEwMDYyIDE3LjY0NTggNS4wNTExOEMxNy4wMjg5IDUuMDAwNzggMTYuMjM2NiA1IDE1LjEgNUgxMS41Wk01IDguNUM1IDcuOTQ3NzIgNS40NDc3MiA3LjUgNiA3LjVIN0M3LjU1MjI5IDcuNSA4IDcuOTQ3NzIgOCA4LjVDOCA5LjA1MjI5IDcuNTUyMjkgOS41IDcgOS41SDZDNS40NDc3MiA5LjUgNSA5LjA1MjI5IDUgOC41Wk01IDEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN0M3LjU1MjI5IDExIDggMTEuNDQ3NyA4IDEyQzggMTIuNTUyMyA3LjU1MjI5IDEzIDcgMTNINkM1LjQ0NzcyIDEzIDUgMTIuNTUyMyA1IDEyWlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vYmlsZVNpZGViYXIoeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTMgOEMzIDcuNDQ3NzIgMy40NDc3MiA3IDQgN0gyMEMyMC41NTIzIDcgMjEgNy40NDc3MiAyMSA4QzIxIDguNTUyMjggMjAuNTUyMyA5IDIwIDlINEMzLjQ0NzcyIDkgMyA4LjU1MjI4IDMgOFpNMyAxNkMzIDE1LjQ0NzcgMy40NDc3MiAxNSA0IDE1SDE0QzE0LjU1MjMgMTUgMTUgMTUuNDQ3NyAxNSAxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdINEMzLjQ0NzcyIDE3IDMgMTYuNTUyMyAzIDE2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5pbnRlcmZhY2UgU3Bpbm5lclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZztcbiAgYmdPcGFjaXR5PzogbnVtYmVyO1xuICBzcGVlZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3Bpbm5lcih7XG4gIGNsYXNzTmFtZSA9ICdtLWF1dG8nLFxuICBzaXplID0gMjAsXG4gIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gIGJnT3BhY2l0eSA9IDAuMSxcbiAgc3BlZWQgPSAwLjc1LFxufTogU3Bpbm5lclByb3BzKSB7XG4gIGNvbnN0IGNzc1ZhcnMgPSB7XG4gICAgJy0tc3Bpbm5lci1zcGVlZCc6IGAke3NwZWVkfXNgLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJ3NwaW5uZXInKX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHN0eWxlPXtjc3NWYXJzfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPntgXG4gICAgICAgICAgLnNwaW5uZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItcm90YXRlIHZhcigtLXNwaW5uZXItc3BlZWQpIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGtleWZyYW1lcyBzcGlubmVyLXJvdGF0ZSB7XG4gICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIGB9PC9zdHlsZT5cbiAgICAgIDwvZGVmcz5cblxuICAgICAgPGNpcmNsZVxuICAgICAgICBjeD1cIjIwXCJcbiAgICAgICAgY3k9XCIyMFwiXG4gICAgICAgIHI9XCIxNC41XCJcbiAgICAgICAgcGF0aExlbmd0aD1cIjEwMFwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiNVwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgc3Ryb2tlPXtjb2xvcn1cbiAgICAgICAgc3Ryb2tlT3BhY2l0eT17YmdPcGFjaXR5fVxuICAgICAgLz5cbiAgICAgIDxjaXJjbGVcbiAgICAgICAgY3g9XCIyMFwiXG4gICAgICAgIGN5PVwiMjBcIlxuICAgICAgICByPVwiMTQuNVwiXG4gICAgICAgIHBhdGhMZW5ndGg9XCIxMDBcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjVcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZT17Y29sb3J9XG4gICAgICAgIHN0cm9rZURhc2hhcnJheT1cIjI1IDc1XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2xpcGJvYXJkKHsgY2xhc3NOYW1lID0gJ2ljb24tbWQtaGVhdnknLCBzaXplID0gJzFlbScgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNNyA1YTMgMyAwIDAgMSAzLTNoOWEzIDMgMCAwIDEgMyAzdjlhMyAzIDAgMCAxLTMgM2gtMnYyYTMgMyAwIDAgMS0zIDNINWEzIDMgMCAwIDEtMy0zdi05YTMgMyAwIDAgMSAzLTNoMnptMiAyaDVhMyAzIDAgMCAxIDMgM3Y1aDJhMSAxIDAgMCAwIDEtMVY1YTEgMSAwIDAgMC0xLTFoLTlhMSAxIDAgMCAwLTEgMXpNNSA5YTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDlhMSAxIDAgMCAwIDEtMXYtOWExIDEgMCAwIDAtMS0xelwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hlY2tNYXJrKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE4LjA2MzMgNS42NzM3NUMxOC41MTk2IDUuOTg0ODcgMTguNjM3NCA2LjYwNyAxOC4zMjYyIDcuMDYzMzFMMTAuODI2MiAxOC4wNjMzQzEwLjY1ODUgMTguMzA5MyAxMC4zODk4IDE4LjQ2NzggMTAuMDkzNCAxOC40OTU2QzkuNzk2ODggMTguNTIzNCA5LjUwMzQ1IDE4LjQxNzYgOS4yOTI4OSAxOC4yMDcxTDQuNzkyODkgMTMuNzA3MUM0LjQwMjM3IDEzLjMxNjYgNC40MDIzNyAxMi42ODM0IDQuNzkyODkgMTIuMjkyOUM1LjE4MzQyIDExLjkwMjMgNS44MTY1OCAxMS45MDIzIDYuMjA3MTEgMTIuMjkyOUw5Ljg1MzY4IDE1LjkzOTRMMTYuNjczOCA1LjkzNjY0QzE2Ljk4NDkgNS40ODAzMyAxNy42MDcgNS4zNjI2MyAxOC4wNjMzIDUuNjczNzVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDcm9zc0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lLCAnaC00IHctNCcpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bGluZSB4MT1cIjE4XCIgeTE9XCI2XCIgeDI9XCI2XCIgeTI9XCIxOFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dPdXRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tbWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExIDNIN0M1Ljg5NTQzIDMgNSAzLjg5NTQzIDUgNVYxOUM1IDIwLjEwNDYgNS44OTU0MyAyMSA3IDIxSDExXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIwIDEySDExTTIwIDEyTDE2IDE2TTIwIDEyTDE2IDhcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdsdWNpZGUgbHVjaWRlLWJvdCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgOFY0SDhcIiAvPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjEyXCIgeD1cIjRcIiB5PVwiOFwiIHJ4PVwiMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIgMTRoMlwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTIwIDE0aDJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNSAxM3YyXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNOSAxM3YyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExpZ2h0bmluZ0ljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC02IHctNicsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIGQ9XCJNMy43NSAxMy41bDEwLjUtMTEuMjVMMTIgMTAuNWg4LjI1TDkuNzUgMjEuNzUgMTIgMTMuNUgzLjc1elwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXR0YWNobWVudEljb24oeyBjbGFzc05hbWUgPSAnJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOSA3QzkgNC4yMzg1OCAxMS4yMzg2IDIgMTQgMkMxNi43NjE0IDIgMTkgNC4yMzg1OCAxOSA3VjE1QzE5IDE4Ljg2NiAxNS44NjYgMjIgMTIgMjJDOC4xMzQwMSAyMiA1IDE4Ljg2NiA1IDE1VjlDNSA4LjQ0NzcyIDUuNDQ3NzIgOCA2IDhDNi41NTIyOCA4IDcgOC40NDc3MiA3IDlWMTVDNyAxNy43NjE0IDkuMjM4NTggMjAgMTIgMjBDMTQuNzYxNCAyMCAxNyAxNy43NjE0IDE3IDE1VjdDMTcgNS4zNDMxNSAxNS42NTY5IDQgMTQgNEMxMi4zNDMxIDQgMTEgNS4zNDMxNSAxMSA3VjE1QzExIDE1LjU1MjMgMTEuNDQ3NyAxNiAxMiAxNkMxMi41NTIzIDE2IDEzIDE1LjU1MjMgMTMgMTVWOUMxMyA4LjQ0NzcyIDEzLjQ0NzcgOCAxNCA4QzE0LjU1MjMgOCAxNSA4LjQ0NzcyIDE1IDlWMTVDMTUgMTYuNjU2OSAxMy42NTY5IDE4IDEyIDE4QzEwLjM0MzEgMTggOSAxNi42NTY5IDkgMTVWN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWVzc2FnZXNTcXVhcmVkKHsgY2xhc3NOYW1lIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lID8/ICcnLCAnbHVjaWRlIGx1Y2lkZS1tZXNzYWdlcy1zcXVhcmUnKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xNCA5YTIgMiAwIDAgMS0yIDJINmwtNCA0VjRjMC0xLjEuOS0yIDItMmg4YTIgMiAwIDAgMSAyIDJ2NVpcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA5aDJhMiAyIDAgMCAxIDIgMnYxMWwtNC00aC02YTIgMiAwIDAgMS0yLTJ2LTFcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvcEdlbmVyYXRpbmdJY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjIuNVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVnZW5lcmF0ZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NuKCdpY29uLW1kLWhlYXZ5JywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGQ9XCJNMy4wNyAxMC44NzZDMy42MjMgNi40MzYgNy40MSAzIDEyIDNhOS4xNSA5LjE1IDAgMCAxIDYuMDEyIDIuMjU0VjRhMSAxIDAgMSAxIDIgMHY0YTEgMSAwIDAgMS0xIDFIMTVhMSAxIDAgMSAxIDAtMmgxLjk1N0E3LjE1IDcuMTUgMCAwIDAgMTIgNWE3IDcgMCAwIDAtNi45NDYgNi4xMjQgMSAxIDAgMSAxLTEuOTg0LS4yNDhtMTYuOTkyIDEuMTMyYTEgMSAwIDAgMSAuODY4IDEuMTE2QzIwLjM3NyAxNy41NjQgMTYuNTkgMjEgMTIgMjFhOS4xNSA5LjE1IDAgMCAxLTYtMi4yNDRWMjBhMSAxIDAgMSAxLTIgMHYtNGExIDEgMCAwIDEgMS0xaDRhMSAxIDAgMSAxIDAgMkg3LjA0M0E3LjE1IDcuMTUgMCAwIDAgMTIgMTlhNyA3IDAgMCAwIDYuOTQ2LTYuMTI0IDEgMSAwIDAgMSAxLjExNi0uODY4XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb250aW51ZUljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtMyB3LTMgLXJvdGF0ZS0xODAnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMTlcIlxuICAgICAgd2lkdGg9XCIxOVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCIgLz5cbiAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR29vZ2xlSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBpZD1cImdvb2dsZVwiXG4gICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiNmYmJiMDBcIlxuICAgICAgICBkPVwiTTExMy40NyAzMDkuNDA4IDk1LjY0OCAzNzUuOTRsLTY1LjEzOSAxLjM3OEMxMS4wNDIgMzQxLjIxMSAwIDI5OS45IDAgMjU2YzAtNDIuNDUxIDEwLjMyNC04Mi40ODMgMjguNjI0LTExNy43MzJoLjAxNEw4Ni42MyAxNDguOWwyNS40MDQgNTcuNjQ0Yy01LjMxNyAxNS41MDEtOC4yMTUgMzIuMTQxLTguMjE1IDQ5LjQ1Ni4wMDIgMTguNzkyIDMuNDA2IDM2Ljc5NyA5LjY1MSA1My40MDh6XCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiIzUxOGVmOFwiXG4gICAgICAgIGQ9XCJNNTA3LjUyNyAyMDguMTc2QzUxMC40NjcgMjIzLjY2MiA1MTIgMjM5LjY1NSA1MTIgMjU2YzAgMTguMzI4LTEuOTI3IDM2LjIwNi01LjU5OCA1My40NTEtMTIuNDYyIDU4LjY4My00NS4wMjUgMTA5LjkyNS05MC4xMzQgMTQ2LjE4N2wtLjAxNC0uMDE0LTczLjA0NC0zLjcyNy0xMC4zMzgtNjQuNTM1YzI5LjkzMi0xNy41NTQgNTMuMzI0LTQ1LjAyNSA2NS42NDYtNzcuOTExaC0xMzYuODlWMjA4LjE3NmgyNDUuODk5elwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiMyOGI0NDZcIlxuICAgICAgICBkPVwibTQxNi4yNTMgNDU1LjYyNC4wMTQuMDE0QzM3Mi4zOTYgNDkwLjkwMSAzMTYuNjY2IDUxMiAyNTYgNTEyYy05Ny40OTEgMC0xODIuMjUyLTU0LjQ5MS0yMjUuNDkxLTEzNC42ODFsODIuOTYxLTY3LjkxYzIxLjYxOSA1Ny42OTggNzcuMjc4IDk4Ljc3MSAxNDIuNTMgOTguNzcxIDI4LjA0NyAwIDU0LjMyMy03LjU4MiA3Ni44Ny0yMC44MThsODMuMzgzIDY4LjI2MnpcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZjE0MzM2XCJcbiAgICAgICAgZD1cIm00MTkuNDA0IDU4LjkzNi04Mi45MzMgNjcuODk2QzMxMy4xMzYgMTEyLjI0NiAyODUuNTUyIDEwMy44MiAyNTYgMTAzLjgyYy02Ni43MjkgMC0xMjMuNDI5IDQyLjk1Ny0xNDMuOTY1IDEwMi43MjRsLTgzLjM5Ny02OC4yNzZoLS4wMTRDNzEuMjMgNTYuMTIzIDE1Ny4wNiAwIDI1NiAwYzYyLjExNSAwIDExOS4wNjggMjIuMTI2IDE2My40MDQgNTguOTM2elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmFjZWJvb2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCA0MCA0MFwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgIGlkPVwiYVwiXG4gICAgICAgIHgxPXstMjc3LjM3NX1cbiAgICAgICAgeDI9ey0yNzcuMzc1fVxuICAgICAgICB5MT17NDA2LjYwMn1cbiAgICAgICAgeTI9ezQwNy41NzN9XG4gICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDQwIDAgMCAtMzkuNzc3OCAxMTExNS4wMDEgMTYyMTIuMzM0KVwiXG4gICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICA+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MH0gc3RvcENvbG9yPVwiIzAwNjJlMFwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD17MX0gc3RvcENvbG9yPVwiIzE5YWZmZlwiIC8+XG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjYSlcIlxuICAgICAgICBkPVwiTTE2LjcgMzkuOEM3LjIgMzguMSAwIDI5LjkgMCAyMCAwIDkgOSAwIDIwIDBzMjAgOSAyMCAyMGMwIDkuOS03LjIgMTguMS0xNi43IDE5LjhsLTEuMS0uOWgtNC40bC0xLjEuOXpcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIm0yNy44IDI1LjYuOS01LjZoLTUuM3YtMy45YzAtMS42LjYtMi44IDMtMi44SDI5VjguMmMtMS40LS4yLTMtLjQtNC40LS40LTQuNiAwLTcuOCAyLjgtNy44IDcuOFYyMGgtNXY1LjZoNXYxNC4xYzEuMS4yIDIuMi4zIDMuMy4zIDEuMSAwIDIuMi0uMSAzLjMtLjNWMjUuNmg0LjR6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcGVuSURJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCA0NDggNTEyXCJcbiAgICAgIGlkPVwib3BlbmlkXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0yNzEuNSA0MzJsLTY4IDMyQzg4LjUgNDUzLjcgMCAzOTIuNSAwIDMxOC4yYzAtNzEuNSA4Mi41LTEzMSAxOTEuNy0xNDQuM3Y0M2MtNzEuNSAxMi41LTEyNCA1My0xMjQgMTAxLjMgMCA1MSA1OC41IDkzLjMgMTM1LjcgMTAzdi0zNDBsNjgtMzMuMnYzODR6TTQ0OCAyOTFsLTEzMS4zLTI4LjUgMzYuOC0yMC43Yy0xOS41LTExLjUtNDMuNS0yMC03MC0yNC44di00M2M0Ni4yIDUuNSA4Ny43IDE5LjUgMTIwLjMgMzkuM2wzNS0xOS44TDQ0OCAyOTF6XCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHaXRodWJJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZD1cIk0xMiAwYTEyIDEyIDAgMCAwLTMuODQgMjMuMzk5Yy42MDguMTEyLjgzMi0uMjU2LjgzMi0uNTc2di0yLjAxNWMtMy4zOTUuNzM2LTQuMTE1LTEuNjMyLTQuMTE1LTEuNjMyYTMuMjQxIDMuMjQxIDAgMCAwLTEuMzU5LTEuNzkyYy0xLjEwNC0uNzM2LjA2NC0uNzM2LjA2NC0uNzM2YTIuNTY2IDIuNTY2IDAgMCAxIDEuODI0IDEuMjE2YTIuNjM4IDIuNjM4IDAgMCAwIDMuNjE2IDEuMDI0YTIuNjA3IDIuNjA3IDAgMCAxIC43NjgtMS42Yy0yLjY4OC0uMzItNS41MDQtMS4zNDQtNS41MDQtNS45ODRhNC42NzcgNC42NzcgMCAwIDEgMS4yMTYtMy4xNjhhNC4zODMgNC4zODMgMCAwIDEgLjEyOC0zLjEzNnMxLjAyNC0uMzIgMy4zNiAxLjIxNmExMS42NiAxMS42NiAwIDAgMSA2LjExMiAwYzIuMzM2LTEuNTM2IDMuMzYtMS4yMTYgMy4zNi0xLjIxNmE0LjM1NCA0LjM1NCAwIDAgMSAuMTI4IDMuMTM2YTQuNjI4IDQuNjI4IDAgMCAxIDEuMjE2IDMuMTY4YzAgNC42NzItMi44NDggNS42NjQtNS41MzYgNS45NTJhMi44ODEgMi44ODEgMCAwIDEgLjgzMiAyLjI0djMuMzZjMCAuMzIuMjI0LjY3Mi44MzIuNTc2QTEyIDEyIDAgMCAwIDEyIDB6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaXNjb3JkSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTAyNCAxMDI0XCJcbiAgICAgIGlkPVwiZGlzY29yZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTYgdy02XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjUxMlwiIGN5PVwiNTEyXCIgcj1cIjUxMlwiIGZpbGw9XCIjNTg2NWYyXCIgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgZD1cIk02ODkuNDMgMzQ5YTQyMi4yMSA0MjIuMjEgMCAwIDAtMTA0LjIyLTMyLjMyIDEuNTggMS41OCAwIDAgMC0xLjY4Ljc5IDI5NC4xMSAyOTQuMTEgMCAwIDAtMTMgMjYuNjYgMzg5Ljc4IDM4OS43OCAwIDAgMC0xMTcuMDUgMCAyNjkuNzUgMjY5Ljc1IDAgMCAwLTEzLjE4LTI2LjY2IDEuNjQgMS42NCAwIDAgMC0xLjY4LS43OUE0MjEgNDIxIDAgMCAwIDMzNC40NCAzNDlhMS40OSAxLjQ5IDAgMCAwLS42OS41OWMtNjYuMzcgOTkuMTctODQuNTUgMTk1LjktNzUuNjMgMjkxLjQxYTEuNzYgMS43NiAwIDAgMCAuNjcgMS4yIDQyNC41OCA0MjQuNTggMCAwIDAgMTI3Ljg1IDY0LjYzIDEuNjYgMS42NiAwIDAgMCAxLjgtLjU5IDMwMy40NSAzMDMuNDUgMCAwIDAgMjYuMTUtNDIuNTQgMS42MiAxLjYyIDAgMCAwLS44OS0yLjI1IDI3OS42IDI3OS42IDAgMCAxLTM5Ljk0LTE5IDEuNjQgMS42NCAwIDAgMS0uMTYtMi43MmMyLjY4LTIgNS4zNy00LjEgNy45My02LjIyYTEuNTggMS41OCAwIDAgMSAxLjY1LS4yMmM4My43OSAzOC4yNiAxNzQuNTEgMzguMjYgMjU3LjMxIDBhMS41OCAxLjU4IDAgMCAxIDEuNjguMmMyLjU2IDIuMTEgNS4yNSA0LjIzIDggNi4yNGExLjY0IDEuNjQgMCAwIDEtLjE0IDIuNzIgMjYyLjM3IDI2Mi4zNyAwIDAgMS00MCAxOSAxLjYzIDEuNjMgMCAwIDAtLjg3IDIuMjggMzQwLjcyIDM0MC43MiAwIDAgMCAyNi4xMyA0Mi41MiAxLjYyIDEuNjIgMCAwIDAgMS44LjYxIDQyMy4xNyA0MjMuMTcgMCAwIDAgMTI4LTY0LjYzIDEuNjQgMS42NCAwIDAgMCAuNjctMS4xOGMxMC42OC0xMTAuNDQtMTcuODgtMjA2LjM4LTc1LjctMjkxLjQyYTEuMyAxLjMgMCAwIDAtLjYzLS42M3pNNDI3LjA5IDU4Mi44NWMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDIgMjguNDQtMjAuMzcgNTEuNi00NiA1MS42em0xNzAuMTMgMGMtMjUuMjMgMC00Ni0yMy4xNi00Ni01MS42czIwLjM4LTUxLjYgNDYtNTEuNmMyNS44MyAwIDQ2LjQyIDIzLjM2IDQ2IDUxLjYuMDEgMjguNDQtMjAuMTcgNTEuNi00NiA1MS42elwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwbGVJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sU3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDgxNCAxMDAwXCJcbiAgICAgIGlkPVwiYXBwbGVcIlxuICAgICAgY2xhc3NOYW1lPVwiaC02IHctNlwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNzg4LjEgMzQwLjljLTUuOCA0LjUtMTA4LjIgNjIuMi0xMDguMiAxOTAuNSAwIDE0OC40IDEzMC4zIDIwMC45IDEzNC4yIDIwMi4yLS42IDMuMi0yMC43IDcxLjktNjguNyAxNDEuOS00Mi44IDYxLjYtODcuNSAxMjMuMS0xNTUuNSAxMjMuMXMtODUuNS0zOS41LTE2NC0zOS41Yy03Ni41IDAtMTAzLjcgNDAuOC0xNjUuOSA0MC44cy0xMDUuNi01Ny0xNTUuNS0xMjdDNDYuNyA3OTAuNyAwIDY2MyAwIDU0MS44YzAtMTk0LjQgMTI2LjQtMjk3LjUgMjUwLjgtMjk3LjUgNjYuMSAwIDEyMS4yIDQzLjQgMTYyLjcgNDMuNCAzOS41IDAgMTAxLjEtNDYgMTc2LjMtNDYgMjguNSAwIDEzMC45IDIuNiAxOTguMyA5OS4yem0tMjM0LTE4MS41YzMxLjEtMzYuOSA1My4xLTg4LjEgNTMuMS0xMzkuMyAwLTcuMS0uNi0xNC4zLTEuOS0yMC4xLTUwLjYgMS45LTExMC44IDMzLjctMTQ3LjEgNzUuOC0yOC41IDMyLjQtNTUuMSA4My42LTU1LjEgMTM1LjUgMCA3LjggMS4zIDE1LjYgMS45IDE4LjEgMy4yLjYgOC40IDEuMyAxMy42IDEuMyA0NS40IDAgMTAyLjUtMzAuNCAxMzUuNS03MS4zelwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsIi8qKlxuICogU2FtbEljb24gQ29tcG9uZW50XG4gKlxuICogU291cmNlOiBTVkcgUmVwb1xuICogVVJMOiBodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zdmcvNDQ4NTkwL3NhbWxcbiAqICAtIENPTExFQ1RJT046IEhhc2hpY29ycCBMaW5lIEludGVyZmFjZSBJY29uc1xuICogIC0gTElDRU5TRTogTUxQIExpY2Vuc2VcbiAqICAtIEFVVEhPUjogSGFzaGlDb3JwXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhbWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiODAwcHhcIlxuICAgICAgaGVpZ2h0PVwiODAwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtNSB3LTVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8ZyBmaWxsPVwiIzAwMDAwMFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTcuNzU0IDJsLjQ2My40MWMuMzQzLjMwNC42ODcuNjA3IDEuMDI2LjkxNUMxMS40NCA1LjMyIDEzLjMgNy41NjUgMTQuNyAxMC4xNDljLjA3Mi4xMzIuMTM3LjI2OC4yMDIuNDAzbC4wOTguMjAzLS4xMDguMDU3LS4wODEtLjExNS0uMjEtLjI5OS0uMTQ3LS4yMTRjLTEuMDE5LTEuNDc5LTIuMDQtMi45Ni0zLjQ0Mi00LjE0NWE2LjU2MyA2LjU2MyAwIDAwLTEuMzkzLS45MDRjLTEuMDE0LS40ODUtMS45MTYtLjI5MS0yLjY5LjUwNS0uNzM2Ljc1Ny0xLjExOCAxLjY5Ny0xLjQ2MyAyLjY1My0uMDQ1LjEyMy0uMDkyLjI0NS0uMTM5LjM2N2wtLjA4Mi4yMTUtLjE3Mi0uMDU1Yy4xLS4zNDguMTkyLS42OTguMjg0LTEuMDQ5LjIxLS43OTUuNDItMS41OS43MTItMi4zNTYuMzEtLjgxNi43MDItMS42MDMgMS4wOTMtMi4zOS4xNjktLjM0MS4zMzgtLjY4Mi41LTEuMDI1aC4wOTJ6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTguNDQ4IDExLjgyMmMtMS42MjYuNzctNS41NiAxLjU2NC03LjQyNiAxLjM2Qy43MTcgMTEuNTc2IDMuNzEgNC4wNSA1LjE4IDIuOTFsLS4wOTUuMjE4YTQuNjM4IDQuNjM4IDAgMDEtLjEzOC4zMDNsLS4wNjYuMTI5Yy0uNzYgMS40NjItMS41MTkgMi45MjYtMS45MDggNC41M2E3LjQ4MiA3LjQ4MiAwIDAwLS4yMjggMS42ODljLS4wMSAxLjM0LjgyNCAyLjI1MiAyLjIxNyAyLjMwOS42Ny4wMjcgMS4zNDctLjA0MyAyLjAyMy0uMTE0LjI5NC0uMDMuNTg3LS4wNjEuODgtLjA4NC4xMDgtLjAwOC4yMTQtLjAyMS4zNTItLjAzOWwuMjMxLS4wMjh6XCIgLz5cblxuICAgICAgICA8cGF0aCBkPVwiTTMuODI1IDE0Ljc4MWMtLjQ0NS4wMzQtLjg5LjA2OC0xLjMzMy4xMDggNC4wOTcuMzkgOC4wMy0uMjc3IDExLjkxLTEuNjQ0LTEuMjY1LTIuMjMtMi45Ny0zLjk5MS00Ljk1Mi01LjUyMi4wMjYuMDk4LjA4NC4xNjkuMTQxLjIzOWwuMDQ4LjA2Yy4xNy4yMjYuMzQ4LjQ0OC41MjcuNjcuNDA5LjUwOS44MTggMS4wMTggMS4xMjYgMS41NzguNzc4IDEuNDIuMzU2IDIuNjQ4LTEuMTY4IDMuMjk2LTEuMDAyLjQyNy0yLjA5Ny43MTgtMy4xOC44OTItMS4wMy4xNjQtMi4wNzUuMjQzLTMuMTE5LjMyM3pcIiAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY0ljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAxNlwiXG4gICAgICBvdmVyZmxvdz1cInZpc2libGVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdmaWxsLWN1cnJlbnQgdGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxnXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxM3B4KSByb3RhdGVaKDBkZWcpJyxcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICc0Ljc3NXB4IDcuNzM1MDFweCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgc2hhcGVSZW5kZXJpbmc9XCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgICAgICAgIC8vIGZpbGw9XCJyZ2IoMjQsMjQsMjQpXCJcbiAgICAgICAgICBmaWxsT3BhY2l0eT1cIjFcIlxuICAgICAgICAgIGQ9XCIgTTAsMCBDMCwwIDYuMTY3NzA5MzUwNTg1OTM3NSwxNS40NzAwMjIyMDE1MzgwODYgNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiBDNi4xNjc3MDkzNTA1ODU5Mzc1LDE1LjQ3MDAyMjIwMTUzODA4NiA5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgOS41NTAwMDQwMDU0MzIxMjksMTUuNDcwMDIyMjAxNTM4MDg2IEM5LjU1MDAwNDAwNTQzMjEyOSwxNS40NzAwMjIyMDE1MzgwODYgMy4zODIyOTQxNzgwMDkwMzMsMCAzLjM4MjI5NDE3ODAwOTAzMywwIEMzLjM4MjI5NDE3ODAwOTAzMywwIDAsMCAwLDAgQzAsMCAwLDAgMCwwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgICA8Z1xuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogJzcuOTM1cHggNy43MzUwMXB4JyxcbiAgICAgICAgfX1cbiAgICAgICAgb3BhY2l0eT1cIjFcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHNoYXBlUmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICAgICAgICAvLyBmaWxsPVwicmdiKDI0LDI0LDI0KVwiXG4gICAgICAgICAgZmlsbE9wYWNpdHk9XCIxXCJcbiAgICAgICAgICBkPVwiIE01LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNy45MzUwMDI4MDM4MDI0OSwzLjkxMTY5NDI4ODI1Mzc4NCA3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IEM3LjkzNTAwMjgwMzgwMjQ5LDMuOTExNjk0Mjg4MjUzNzg0IDEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSAxMC4wNDU0MDA2MTk1MDY4MzYsOS4zNDgyOTYxNjU0NjYzMDkgQzEwLjA0NTQwMDYxOTUwNjgzNiw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSA1LjgyNDYwNTQ2NDkzNTMwMyw5LjM0ODI5NjE2NTQ2NjMwOSBDNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDkgNS44MjQ2MDU0NjQ5MzUzMDMsOS4zNDgyOTYxNjU0NjYzMDl6IE02LjE2Njc1NTE5OTQzMjM3MywwIEM2LjE2Njc1NTE5OTQzMjM3MywwIDAsMTUuNDcwMDIyMjAxNTM4MDg2IDAsMTUuNDcwMDIyMjAxNTM4MDg2IEMwLDE1LjQ3MDAyMjIwMTUzODA4NiAzLjQ0ODA3NzIwMTg0MzI2MTcsMTUuNDcwMDIyMjAxNTM4MDg2IDMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgQzMuNDQ4MDc3MjAxODQzMjYxNywxNS40NzAwMjIyMDE1MzgwODYgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgNC43MDkyNzg1ODM1MjY2MTEsMTIuMjIxMzAwMTI1MTIyMDcgQzQuNzA5Mjc4NTgzNTI2NjExLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IDExLjE2MDkzNjM1NTU5MDgyLDEyLjIyMTMwMDEyNTEyMjA3IEMxMS4xNjA5MzYzNTU1OTA4MiwxMi4yMjEzMDAxMjUxMjIwNyAxMi40MjE5Mjg0MDU3NjE3MTksMTUuNDcwMDIyMjAxNTM4MDg2IDEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgQzEyLjQyMTkyODQwNTc2MTcxOSwxNS40NzAwMjIyMDE1MzgwODYgMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDE1Ljg3MDAwNTYwNzYwNDk4LDE1LjQ3MDAyMjIwMTUzODA4NiBDMTUuODcwMDA1NjA3NjA0OTgsMTUuNDcwMDIyMjAxNTM4MDg2IDkuNzAzMjUwODg1MDA5NzY2LDAgOS43MDMyNTA4ODUwMDk3NjYsMCBDOS43MDMyNTA4ODUwMDk3NjYsMCA2LjE2Njc1NTE5OTQzMjM3MywwIDYuMTY2NzU1MTk5NDMyMzczLDAgQzYuMTY2NzU1MTk5NDMyMzczLDAgNi4xNjY3NTUxOTk0MzIzNzMsMCA2LjE2Njc1NTE5OTQzMjM3MywwelwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kSWNvbih7IHNpemUgPSAyNCwgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD17JzAgMCAyNCAyNCd9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXdoaXRlIGRhcms6dGV4dC1ibGFjaycsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNyAxMUwxMiA2TDE3IDExTTEyIDE4VjdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaW5rSWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjE4XCJcbiAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9XCJpY29uLW1kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNSA1QzE0LjQ0NzcgNSAxNCA0LjU1MjI4IDE0IDRDMTQgMy40NDc3MiAxNC40NDc3IDMgMTUgM0gyMEMyMC41NTIzIDMgMjEgMy40NDc3MiAyMSA0VjlDMjEgOS41NTIyOCAyMC41NTIzIDEwIDIwIDEwQzE5LjQ0NzcgMTAgMTkgOS41NTIyOCAxOSA5VjYuNDE0MjFMMTMuNzA3MSAxMS43MDcxQzEzLjMxNjYgMTIuMDk3NiAxMi42ODM0IDEyLjA5NzYgMTIuMjkyOSAxMS43MDcxQzExLjkwMjQgMTEuMzE2NiAxMS45MDI0IDEwLjY4MzQgMTIuMjkyOSAxMC4yOTI5TDE3LjU4NTggNUgxNVpNNCA3QzQgNS4zNDMxNSA1LjM0MzE1IDQgNyA0SDEwQzEwLjU1MjMgNCAxMSA0LjQ0NzcyIDExIDVDMTEgNS41NTIyOCAxMC41NTIzIDYgMTAgNkg3QzYuNDQ3NzIgNiA2IDYuNDQ3NzIgNiA3VjE3QzYgMTcuNTUyMyA2LjQ0NzcyIDE4IDcgMThIMTdDMTcuNTUyMyAxOCAxOCAxNy41NTIzIDE4IDE3VjE0QzE4IDEzLjQ0NzcgMTguNDQ3NyAxMyAxOSAxM0MxOS41NTIzIDEzIDIwIDEzLjQ0NzcgMjAgMTRWMTdDMjAgMTguNjU2OSAxOC42NTY5IDIwIDE3IDIwSDdDNS4zNDMxNSAyMCA0IDE4LjY1NjkgNCAxN1Y3WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERvdHNJY29uKHtcbiAgY2xhc3NOYW1lID0gJ2gtNCB3LTQgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXktNTAwJyxcbn06IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxOVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgICA8Y2lyY2xlIGN4PVwiNVwiIGN5PVwiMTJcIiByPVwiMVwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgR2Vhckljb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgR2Vhckljb246IFJlYWN0LkZDPEdlYXJJY29uUHJvcHM+ID0gKHsgY2xhc3NOYW1lID0gJycgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9XCIxN1wiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExLjY0MzkgM0MxMC45MzUyIDMgMTAuMjc5NCAzLjM3NTA4IDkuOTIwMDIgMy45ODU5Nkw5LjQ5NjQ0IDQuNzA2MDVDOC45NjE4NCA1LjYxNDg3IDcuOTg5MzggNi4xNzYzMiA2LjkzNTAxIDYuMTg0ODlMNi4wOTk2NyA2LjE5MTY4QzUuMzkwOTYgNi4xOTc0NCA0LjczODIzIDYuNTc3ODMgNC4zODM4NiA3LjE5MTYxTDQuMDI3NzYgNy44MDg0MUMzLjY3MzM5IDguNDIyMTkgMy42NzAzMiA5LjE3NzY3IDQuMDE5NjkgOS43OTQzTDQuNDMxNTEgMTAuNTIxMkM0Ljk1MTI3IDExLjQzODYgNC45NTEyNyAxMi41NjE1IDQuNDMxNTEgMTMuNDc4OEw0LjAxOTY5IDE0LjIwNTdDMy42NzAzMiAxNC44MjI0IDMuNjczMzkgMTUuNTc3OCA0LjAyNzc2IDE2LjE5MTZMNC4zODM4NiAxNi44MDg0QzQuNzM4MjMgMTcuNDIyMiA1LjM5MDk2IDE3LjgwMjYgNi4wOTk2NiAxNy44MDgzTDYuOTM1MDIgMTcuODE1MUM3Ljk4OTM5IDE3LjgyMzcgOC45NjE4NSAxOC4zODUxIDkuNDk2NDUgMTkuMjk0TDkuOTIwMDIgMjAuMDE0QzEwLjI3OTQgMjAuNjI0OSAxMC45MzUyIDIxIDExLjY0MzkgMjFIMTIuMzU2MUMxMy4wNjQ4IDIxIDEzLjcyMDYgMjAuNjI0OSAxNC4wOCAyMC4wMTRMMTQuNTAzNSAxOS4yOTRDMTUuMDM4MSAxOC4zODUxIDE2LjAxMDYgMTcuODIzNyAxNy4wNjUgMTcuODE1MUwxNy45MDA0IDE3LjgwODNDMTguNjA5MSAxNy44MDI2IDE5LjI2MTggMTcuNDIyMiAxOS42MTYyIDE2LjgwODRMMTkuOTcyMyAxNi4xOTE2QzIwLjMyNjcgMTUuNTc3OCAyMC4zMjk4IDE0LjgyMjQgMTkuOTgwNCAxNC4yMDU3TDE5LjU2ODYgMTMuNDc4OEMxOS4wNDg4IDEyLjU2MTUgMTkuMDQ4OCAxMS40Mzg2IDE5LjU2ODYgMTAuNTIxMkwxOS45ODA0IDkuNzk0M0MyMC4zMjk4IDkuMTc3NjcgMjAuMzI2NyA4LjQyMjE5IDE5Ljk3MjMgNy44MDg0MUwxOS42MTYyIDcuMTkxNjFDMTkuMjYxOCA2LjU3NzgzIDE4LjYwOTEgNi4xOTc0NCAxNy45MDA0IDYuMTkxNjhMMTcuMDY1IDYuMTg0ODlDMTYuMDEwNiA2LjE3NjMyIDE1LjAzODIgNS42MTQ4NyAxNC41MDM2IDQuNzA2MDVMMTQuMDggMy45ODU5NkMxMy43MjA2IDMuMzc1MDggMTMuMDY0OCAzIDEyLjM1NjEgM0gxMS42NDM5WlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMi41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCI+PC9jaXJjbGU+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHZWFySWNvbjtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBpbkljb24oeyB1bnBpbiA9IGZhbHNlIH06IHsgdW5waW4/OiBib29sZWFuIH0pIHtcbiAgaWYgKHVucGluKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzdmdcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTVWMTcuNTU4NUMxNSAxOC40MTkzIDE0LjQ0OTEgMTkuMTgzNiAxMy42MzI1IDE5LjQ1NThMMTMuMTcyNiAxOS42MDkxQzEyLjQ1NCAxOS44NDg3IDExLjY2MTYgMTkuNjYxNiAxMS4xMjYgMTkuMTI2TDQuODc0MDMgMTIuODc0QzQuMzM4MzcgMTIuMzM4NCA0LjE1MTMyIDExLjU0NiA0LjM5MDg4IDEwLjgyNzRMNC41NDQxNSAxMC4zNjc1QzQuODE2MzggOS41NTA4NiA1LjU4MDY2IDkgNi40NDE1MiA5SDlNMTIgNi4yTDEzLjYyNzcgMy45MjExNkMxNC4zNDYxIDIuOTE1NDkgMTUuNzk1NSAyLjc5NTUyIDE2LjY2OTQgMy42Njk0MkwyMC4zMzA2IDcuMzMwNThDMjEuMjA0NSA4LjIwNDQ4IDIxLjA4NDUgOS42NTM5MiAyMC4wNzg4IDEwLjM3MjNMMTggMTEuODU3MVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk04IDE2TDMgMjFcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNNCA0TDIwIDIwXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBjbGFzc05hbWU9XCJpY29uLXNtXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTE3LjQ4NDUgMi44Nzk4QzE2LjE3NzMgMS41NzI1OCAxNC4wMTA3IDEuNzQ1MzQgMTIuOTI3MiAzLjI0MzE4TDkuNzk3NzIgNy41NjkyM0M5LjYwOTQ1IDcuODI5NDggOS4zMDc3NSA3Ljk4MzYgOC45ODY1NCA3Ljk4MzZINi40NDY3M0MzLjc0MDYxIDcuOTgzNiAyLjI3NDE0IDExLjY3NTkgNC4xNjk0OCAxMy41NzEzTDYuNTkxMTYgMTUuOTkzTDIuMjkzMjQgMjAuMjkwOUMxLjkwMjI1IDIwLjY4MTkgMS45MDIyNSAyMS4zMTU4IDIuMjkzMjQgMjEuNzA2OEMyLjY4NDIyIDIyLjA5NzcgMy4zMTgxMiAyMi4wOTc3IDMuNzA5MTEgMjEuNzA2OEw4LjAwNzAzIDE3LjQwODhMMTAuNDI4NyAxOS44MzA1QzEyLjMyNDEgMjEuNzI1OSAxNi4wMTY0IDIwLjI1OTQgMTYuMDE2NCAxNy41NTMzVjE1LjAxMzVDMTYuMDE2NCAxNC42OTIzIDE2LjE3MDUgMTQuMzkwNiAxNi40MzA4IDE0LjIwMjNMMjAuNzU2OCAxMS4wNzI4QzIyLjI1NDcgOS45ODkyNiAyMi40Mjc0IDcuODIyNyAyMS4xMjAyIDYuNTE1NDlMMTcuNDg0NSAyLjg3OThaTTExLjg0NDYgMTguNDE0N0MxMi40OTk0IDE5LjA2OTQgMTQuMDE0MSAxOC40OTI4IDE0LjAxNDEgMTcuNTUzM1YxNS4wMTM1QzE0LjAxNDEgMTQuMDQ5OSAxNC40NzY0IDEzLjE0NDcgMTUuMjU3MiAxMi41OEwxOS41ODMyIDkuNDUwNDdDMjAuMDgyNSA5LjA4OTI4IDIwLjE0MDEgOC4zNjcxIDE5LjcwNDMgNy45MzEzNkwxNi4wNjg2IDQuMjk1NjdDMTUuNjMyOSAzLjg1OTkzIDE0LjkxMDcgMy45MTc1MSAxNC41NDk1IDQuNDE2OEwxMS40MjAxIDguNzQyODVDMTAuODU1MyA5LjUyMzU5IDkuOTUwMTYgOS45ODU5NCA4Ljk4NjU0IDkuOTg1OTRINi40NDY3M0M1LjUwNzIgOS45ODU5NCA0LjkzMDU5IDExLjUwMDYgNS41ODUzNSAxMi4xNTU0TDExLjg0NDYgMTguNDE0N1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG50eXBlIFRyYXNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUcmFzaEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiBUcmFzaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTAuNTU1NSA0QzEwLjA5OSA0IDkuNzAwNTIgNC4zMDkwNiA5LjU4NjkzIDQuNzUxMTRMOS4yOTM4MiA1Ljg5MTlIMTQuNzE1TDE0LjQyMTkgNC43NTExNEMxNC4zMDgzIDQuMzA5MDYgMTMuOTA5OCA0IDEzLjQ1MzMgNEgxMC41NTU1Wk0xNi43Nzk5IDUuODkxOUwxNi4zNTg5IDQuMjUzNDJDMTYuMDE4MiAyLjkyNzE5IDE0LjgyMjYgMiAxMy40NTMzIDJIMTAuNTU1NUM5LjE4NjE2IDIgNy45OTA2MiAyLjkyNzE5IDcuNjQ5ODUgNC4yNTM0Mkw3LjIyODg2IDUuODkxOUg0QzMuNDQ3NzIgNS44OTE5IDMgNi4zMzk2MSAzIDYuODkxOUMzIDcuNDQ0MTggMy40NDc3MiA3Ljg5MTkgNCA3Ljg5MTlINC4xMDA2OUw1LjMxNTQ0IDE5LjMxNzJDNS40Nzc2MyAyMC44NDI3IDYuNzY0NTUgMjIgOC4yOTg2MyAyMkgxNS43MDE0QzE3LjIzNTQgMjIgMTguNTIyNCAyMC44NDI3IDE4LjY4NDYgMTkuMzE3MkwxOS44OTkzIDcuODkxOUgyMEMyMC41NTIzIDcuODkxOSAyMSA3LjQ0NDE4IDIxIDYuODkxOUMyMSA2LjMzOTYxIDIwLjU1MjMgNS44OTE5IDIwIDUuODkxOUgxNi43Nzk5Wk0xNy44ODggNy44OTE5SDYuMTExOTZMNy4zMDQyMyAxOS4xMDU3QzcuMzU4MyAxOS42MTQyIDcuNzg3MjcgMjAgOC4yOTg2MyAyMEgxNS43MDE0QzE2LjIxMjcgMjAgMTYuNjQxNyAxOS42MTQyIDE2LjY5NTggMTkuMTA1N0wxNy44ODggNy44OTE5Wk0xMCAxMEMxMC41NTIzIDEwIDExIDEwLjQ0NzcgMTEgMTFWMTZDMTEgMTYuNTUyMyAxMC41NTIzIDE3IDEwIDE3QzkuNDQ3NzIgMTcgOSAxNi41NTIzIDkgMTZWMTFDOSAxMC40NDc3IDkuNDQ3NzIgMTAgMTAgMTBaTTE0IDEwQzE0LjU1MjMgMTAgMTUgMTAuNDQ3NyAxNSAxMVYxNkMxNSAxNi41NTIzIDE0LjU1MjMgMTcgMTQgMTdDMTMuNDQ3NyAxNyAxMyAxNi41NTIzIDEzIDE2VjExQzEzIDEwLjQ0NzcgMTMuNDQ3NyAxMCAxNCAxMFpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNaW5pbWFsUGx1Z2luKHtcbiAgc2l6ZSxcbiAgY2xhc3NOYW1lID0gJ2ljb24tbWQnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTUuNDY0NiAxOUMxNS4yMjE5IDIwLjY5NjEgMTMuNzYzMiAyMiAxMiAyMkMxMC4yMzY4IDIyIDguNzc4MDYgMjAuNjk2MSA4LjUzNTQ0IDE5SDZDNC4zNDMxNSAxOSAzIDE3LjY1NjkgMyAxNlYxMy41QzMgMTIuOTQ3NyAzLjQ0NzcyIDEyLjUgNCAxMi41SDQuNUM1LjMyODQzIDEyLjUgNiAxMS44Mjg0IDYgMTFDNiAxMC4xNzE2IDUuMzI4NDMgOS41IDQuNSA5LjVINEMzLjQ0NzcyIDkuNSAzIDkuMDUyMjkgMyA4LjVMMyA2QzMgNC4zNDMxNSA0LjM0MzE1IDMgNiAzTDE4IDNDMTkuNjU2OSAzIDIxIDQuMzQzMTUgMjEgNkwyMSAxNkMyMSAxNy42NTY5IDE5LjY1NjkgMTkgMTggMTlIMTUuNDY0NlpNMTIgMjBDMTIuODI4NCAyMCAxMy41IDE5LjMyODQgMTMuNSAxOC41VjE4QzEzLjUgMTcuNDQ3NyAxMy45NDc3IDE3IDE0LjUgMTdIMThDMTguNTUyMyAxNyAxOSAxNi41NTIzIDE5IDE2TDE5IDZDMTkgNS40NDc3MiAxOC41NTIzIDUgMTggNUw2IDVDNS40NDc3MiA1IDUgNS40NDc3MiA1IDZWNy41MzU0NEM2LjY5NjE1IDcuNzc4MDYgOCA5LjIzNjc2IDggMTFDOCAxMi43NjMyIDYuNjk2MTUgMTQuMjIxOSA1IDE0LjQ2NDZMNSAxNkM1IDE2LjU1MjMgNS40NDc3MSAxNyA2IDE3SDkuNUMxMC4wNTIzIDE3IDEwLjUgMTcuNDQ3NyAxMC41IDE4VjE4LjVDMTAuNSAxOS4zMjg0IDExLjE3MTYgMjAgMTIgMjBaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEF6dXJlTWluaW1hbEljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICdoLTQgdy00Jyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUsICcnKX1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJtOC4wNDU4IDAuODE5ODFhMS4xMTk3IDEuMTE5NyAwIDAgMC0xLjA2MDggMC43NjE4NGwtNi43OTEyIDIwLjEyM2ExLjExNzggMS4xMTc4IDAgMCAwIDEuMDU5MiAxLjQ3NTFoNS40NjQ3YTEuMTE5NyAxLjExOTcgMCAwIDAgMS4wNjA4LTAuNzYxNWwxLjM1MjgtNC4wMDg0LTIuMzY4NC0yLjIxMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAxIDAuMzUxOTMtMC44OTIzaDMuMDYzOWwxLjgyMTMtNS4zOTY2LTIuODExMS04LjMyOTRhMS4xMTgxIDEuMTE4MSAwIDAgMC0xLjA1OTUtMC43NjA0OWgtMC4wODM2elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTcuMTE0NyAxNS4zMDdhMC41MTUzNiAwLjUxNTM2IDAgMCAwLTAuMzUxOTMgMC44OTIzbDcuMTU1MiA2LjY3ODJhMS4xMjQ4IDEuMTI0OCAwIDAgMCAwLjc2NzI0IDAuMzAyMzhoMC4yNDE3YTEuMTE4MSAxLjExODEgMCAwIDAgMS4wNTM0LTEuNDc1NWwtMi4xNTkxLTYuMzk3NHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy4wMTUgMS41ODA3YTEuMTE3OCAxLjExNzggMCAwIDAtMS4wNTkzLTAuNzYwNDloLTcuODI1OGExLjExODEgMS4xMTgxIDAgMCAxIDEuMDU5MyAwLjc2MDQ5bDYuNzkxNiAyMC4xMjNhMS4xMTgxIDEuMTE4MSAwIDAgMS0xLjA1OTMgMS40NzU3aDcuODI2MWExLjExODEgMS4xMTgxIDAgMCAwIDEuMDU5LTEuNDc1N3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT3BlbkFJTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnaC00IHctNCcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTM3LjUzMjQgMTYuODcwN0MzNy45ODA4IDE1LjUyNDEgMzguMTM2MyAxNC4wOTc0IDM3Ljk4ODYgMTIuNjg1OUMzNy44NDA5IDExLjI3NDQgMzcuMzkzNCA5LjkxMDc2IDM2LjY3NiA4LjY4NjIyQzM1LjYxMjYgNi44MzQwNCAzMy45ODgyIDUuMzY3NiAzMi4wMzczIDQuNDk4NUMzMC4wODY0IDMuNjI5NDEgMjcuOTA5OCAzLjQwMjU5IDI1LjgyMTUgMy44NTA3OEMyNC44Nzk2IDIuNzg5MyAyMy43MjE5IDEuOTQxMjUgMjIuNDI1NyAxLjM2MzQxQzIxLjEyOTUgMC43ODU1NzUgMTkuNzI0OSAwLjQ5MTI2OSAxOC4zMDU4IDAuNTAwMTk3QzE2LjE3MDggMC40OTUwNDQgMTQuMDg5MyAxLjE2ODAzIDEyLjM2MTQgMi40MjIxNEMxMC42MzM1IDMuNjc2MjQgOS4zNDg1MyA1LjQ0NjY2IDguNjkxNyA3LjQ3ODE1QzcuMzAwODUgNy43NjI4NiA1Ljk4Njg2IDguMzQxNCA0LjgzNzcgOS4xNzUwNUMzLjY4ODU0IDEwLjAwODcgMi43MzA3MyAxMS4wNzgyIDIuMDI4MzkgMTIuMzEyQzAuOTU2NDY0IDE0LjE1OTEgMC40OTg5MDUgMTYuMjk4OCAwLjcyMTY5OCAxOC40MjI4QzAuOTQ0NDkyIDIwLjU0NjcgMS44MzYxMiAyMi41NDQ5IDMuMjY4IDI0LjEyOTNDMi44MTk2NiAyNS40NzU5IDIuNjY0MTMgMjYuOTAyNiAyLjgxMTgyIDI4LjMxNDFDMi45NTk1MSAyOS43MjU2IDMuNDA3MDEgMzEuMDg5MiA0LjEyNDM3IDMyLjMxMzhDNS4xODc5MSAzNC4xNjU5IDYuODEyMyAzNS42MzIyIDguNzYzMjEgMzYuNTAxM0MxMC43MTQxIDM3LjM3MDQgMTIuODkwNyAzNy41OTczIDE0Ljk3ODkgMzcuMTQ5MkMxNS45MjA4IDM4LjIxMDcgMTcuMDc4NiAzOS4wNTg3IDE4LjM3NDcgMzkuNjM2NkMxOS42NzA5IDQwLjIxNDQgMjEuMDc1NSA0MC41MDg3IDIyLjQ5NDYgNDAuNDk5OEMyNC42MzA3IDQwLjUwNTQgMjYuNzEzMyAzOS44MzIxIDI4LjQ0MTggMzguNTc3MkMzMC4xNzA0IDM3LjMyMjMgMzEuNDU1NiAzNS41NTA2IDMyLjExMTkgMzMuNTE3OUMzMy41MDI3IDMzLjIzMzIgMzQuODE2NyAzMi42NTQ3IDM1Ljk2NTkgMzEuODIxQzM3LjExNSAzMC45ODc0IDM4LjA3MjggMjkuOTE3OCAzOC43NzUyIDI4LjY4NEMzOS44NDU4IDI2LjgzNzEgNDAuMzAyMyAyNC42OTc5IDQwLjA3ODkgMjIuNTc0OEMzOS44NTU2IDIwLjQ1MTcgMzguOTYzOSAxOC40NTQ0IDM3LjUzMjQgMTYuODcwN1pNMjIuNDk3OCAzNy44ODQ5QzIwLjc0NDMgMzcuODg3NCAxOS4wNDU5IDM3LjI3MzMgMTcuNjk5NCAzNi4xNTAxQzE3Ljc2MDEgMzYuMTE3IDE3Ljg2NjYgMzYuMDU4NiAxNy45MzYgMzYuMDE2MUwyNS45MDA0IDMxLjQxNTZDMjYuMTAwMyAzMS4zMDE5IDI2LjI2NjMgMzEuMTM3IDI2LjM4MTMgMzAuOTM3OEMyNi40OTY0IDMwLjczODYgMjYuNTU2MyAzMC41MTI0IDI2LjU1NDkgMzAuMjgyNVYxOS4wNTQyTDI5LjkyMTMgMjAuOTk4QzI5LjkzODkgMjEuMDA2OCAyOS45NTQxIDIxLjAxOTggMjkuOTY1NiAyMS4wMzU5QzI5Ljk3NyAyMS4wNTIgMjkuOTg0MiAyMS4wNzA3IDI5Ljk4NjcgMjEuMDkwMlYzMC4zODg5QzI5Ljk4NDIgMzIuMzc1IDI5LjE5NDYgMzQuMjc5MSAyNy43OTA5IDM1LjY4NDFDMjYuMzg3MiAzNy4wODkyIDI0LjQ4MzggMzcuODgwNiAyMi40OTc4IDM3Ljg4NDlaTTYuMzkyMjcgMzEuMDA2NEM1LjUxMzk3IDI5LjQ4ODggNS4xOTc0MiAyNy43MTA3IDUuNDk4MDQgMjUuOTgzMkM1LjU1NzE4IDI2LjAxODcgNS42NjA0OCAyNi4wODE4IDUuNzM0NjEgMjYuMTI0NEwxMy42OTkgMzAuNzI0OEMxMy44OTc1IDMwLjg0MDggMTQuMTIzMyAzMC45MDIgMTQuMzUzMiAzMC45MDJDMTQuNTgzIDMwLjkwMiAxNC44MDg4IDMwLjg0MDggMTUuMDA3MyAzMC43MjQ4TDI0LjczMSAyNS4xMTAzVjI4Ljk5NzlDMjQuNzMyMSAyOS4wMTc3IDI0LjcyODMgMjkuMDM3NiAyNC43MTk5IDI5LjA1NTZDMjQuNzExNSAyOS4wNzM2IDI0LjY5ODggMjkuMDg5MyAyNC42ODI5IDI5LjEwMTJMMTYuNjMxNyAzMy43NDk3QzE0LjkwOTYgMzQuNzQxNiAxMi44NjQzIDM1LjAwOTcgMTAuOTQ0NyAzNC40OTU0QzkuMDI1MDYgMzMuOTgxMSA3LjM4Nzg1IDMyLjcyNjMgNi4zOTIyNyAzMS4wMDY0Wk00LjI5NzA3IDEzLjYxOTRDNS4xNzE1NiAxMi4wOTk4IDYuNTUyNzkgMTAuOTM2NCA4LjE5ODg1IDEwLjMzMjdDOC4xOTg4NSAxMC40MDEzIDguMTk0OTEgMTAuNTIyOCA4LjE5NDkxIDEwLjYwNzFWMTkuODA4QzguMTkzNTEgMjAuMDM3OCA4LjI1MzM0IDIwLjI2MzggOC4zNjgyMyAyMC40NjI5QzguNDgzMTIgMjAuNjYxOSA4LjY0ODkzIDIwLjgyNjcgOC44NDg2MyAyMC45NDA0TDE4LjU3MjMgMjYuNTU0MkwxNS4yMDYgMjguNDk3OUMxNS4xODk0IDI4LjUwODkgMTUuMTcwMyAyOC41MTU1IDE1LjE1MDUgMjguNTE3M0MxNS4xMzA3IDI4LjUxOTEgMTUuMTEwNyAyOC41MTYgMTUuMDkyNCAyOC41MDgyTDcuMDQwNDYgMjMuODU1N0M1LjMyMTM1IDIyLjg2MDEgNC4wNjcxNiAyMS4yMjM1IDMuNTUyODkgMTkuMzA0NkMzLjAzODYyIDE3LjM4NTggMy4zMDYyNCAxNS4zNDEzIDQuMjk3MDcgMTMuNjE5NFpNMzEuOTU1IDIwLjA1NTZMMjIuMjMxMiAxNC40NDExTDI1LjU5NzYgMTIuNDk4MUMyNS42MTQyIDEyLjQ4NzIgMjUuNjMzMyAxMi40ODA1IDI1LjY1MzEgMTIuNDc4N0MyNS42NzI5IDEyLjQ3NjkgMjUuNjkyOCAxMi40ODAxIDI1LjcxMTEgMTIuNDg3OUwzMy43NjMxIDE3LjEzNjRDMzQuOTk2NyAxNy44NDkgMzYuMDAxNyAxOC44OTgyIDM2LjY2MDYgMjAuMTYxM0MzNy4zMTk0IDIxLjQyNDQgMzcuNjA0NyAyMi44NDkgMzcuNDgzMiAyNC4yNjg0QzM3LjM2MTcgMjUuNjg3OCAzNi44MzgyIDI3LjA0MzIgMzUuOTc0MyAyOC4xNzU5QzM1LjExMDMgMjkuMzA4NiAzMy45NDE1IDMwLjE3MTcgMzIuNjA0NyAzMC42NjQxQzMyLjYwNDcgMzAuNTk0NyAzMi42MDQ3IDMwLjQ3MzMgMzIuNjA0NyAzMC4zODg5VjIxLjE4OEMzMi42MDY2IDIwLjk1ODYgMzIuNTQ3NCAyMC43MzI4IDMyLjQzMzIgMjAuNTMzOEMzMi4zMTkgMjAuMzM0OCAzMi4xNTQgMjAuMTY5OCAzMS45NTUgMjAuMDU1NlpNMzUuMzA1NSAxNS4wMTI4QzM1LjI0NjQgMTQuOTc2NSAzNS4xNDMxIDE0LjkxNDIgMzUuMDY5IDE0Ljg3MTdMMjcuMTA0NSAxMC4yNzEyQzI2LjkwNiAxMC4xNTU0IDI2LjY4MDMgMTAuMDk0MyAyNi40NTA0IDEwLjA5NDNDMjYuMjIwNiAxMC4wOTQzIDI1Ljk5NDggMTAuMTU1NCAyNS43OTYzIDEwLjI3MTJMMTYuMDcyNiAxNS44ODU4VjExLjk5ODJDMTYuMDcxNSAxMS45NzgzIDE2LjA3NTMgMTEuOTU4NSAxNi4wODM3IDExLjk0MDVDMTYuMDkyMSAxMS45MjI1IDE2LjEwNDggMTEuOTA2OCAxNi4xMjA3IDExLjg5NDlMMjQuMTcxOSA3LjI1MDI1QzI1LjQwNTMgNi41MzkwMyAyNi44MTU4IDYuMTkzNzYgMjguMjM4MyA2LjI1NDgyQzI5LjY2MDggNi4zMTU4OSAzMS4wMzY0IDYuNzgwNzcgMzIuMjA0NCA3LjU5NTA4QzMzLjM3MjMgOC40MDkzOSAzNC4yODQyIDkuNTM5NDUgMzQuODMzNCAxMC44NTMxQzM1LjM4MjYgMTIuMTY2NyAzNS41NDY0IDEzLjYwOTUgMzUuMzA1NSAxNS4wMTI4Wk0xNC4yNDI0IDIxLjk0MTlMMTAuODc1MiAxOS45OTgxQzEwLjg1NzYgMTkuOTg5MyAxMC44NDIzIDE5Ljk3NjMgMTAuODMwOSAxOS45NjAyQzEwLjgxOTUgMTkuOTQ0MSAxMC44MTIyIDE5LjkyNTQgMTAuODA5OCAxOS45MDU4VjEwLjYwNzFDMTAuODEwNyA5LjE4Mjk1IDExLjIxNzMgNy43ODg0OCAxMS45ODE5IDYuNTg2OTZDMTIuNzQ2NiA1LjM4NTQ0IDEzLjgzNzcgNC40MjY1OSAxNS4xMjc1IDMuODIyNjRDMTYuNDE3MyAzLjIxODY5IDE3Ljg1MjQgMi45OTQ2NCAxOS4yNjQ5IDMuMTc2N0MyMC42Nzc1IDMuMzU4NzYgMjIuMDA4OSAzLjkzOTQxIDIzLjEwMzQgNC44NTA2N0MyMy4wNDI3IDQuODgzNzkgMjIuOTM3IDQuOTQyMTUgMjIuODY2OCA0Ljk4NDczTDE0LjkwMjQgOS41ODUxN0MxNC43MDI1IDkuNjk4NzggMTQuNTM2NiA5Ljg2MzU2IDE0LjQyMTUgMTAuMDYyNkMxNC4zMDY1IDEwLjI2MTYgMTQuMjQ2NiAxMC40ODc3IDE0LjI0NzkgMTAuNzE3NUwxNC4yNDI0IDIxLjk0MTlaTTE2LjA3MSAxNy45OTkxTDIwLjQwMTggMTUuNDk3OEwyNC43MzI1IDE3Ljk5NzVWMjIuOTk4NUwyMC40MDE4IDI1LjQ5ODNMMTYuMDcxIDIyLjk5ODVWMTcuOTk5MVpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hhdEdQVE1pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT1cImx1Y2lkZSBsdWNpZGUtYm90XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEwXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiAvPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI1XCIgcj1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xMiA3djRcIiAvPlxuICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCI4XCIgeTE9XCIxNlwiIHkyPVwiMTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxNlwiIHgyPVwiMTZcIiB5MT1cIjE2XCIgeTI9XCIxNlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTWluaW1hbEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2gtNCB3LTQnLCBjbGFzc05hbWUpfVxuICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwibTE2IDMwLjIzOGMxLjIyOTggMCAyLjIyNTktMC45OTYwOCAyLjIyNTktMi4yMjU5di0xMS40NmMtMC42MzUxMy0wLjU2NDI5LTEuNjU1My0xLjY4MDUtMi4yMjU5LTIuMjUxLTAuNzk4NTggMC44Mzc5My0xLjM1OTkgMS4zNTk5LTIuMjI1OSAyLjI1MXYxMS40NmMwIDEuMjI5OCAwLjk5NjA4IDIuMjI1OSAyLjIyNTkgMi4yMjU5elwiIC8+XG4gICAgICA8cGF0aCBkPVwibTI0Ljg2OCAxNS43NjFjLTAuNjE2OTEtMC42MTY0My0xLjMxMjEtMS4xMDY1LTIuMDUzNi0xLjQ3MDMtNi44MTQ3IDAuMDEwNDY3IDAuMTMzMDQgMC4wMzEwMjYtNi44MTQ3IDAuMDEwNDY3bDkuNTI4NiA5LjUyODZjMC4zOTMyNCAwLjM5MzI0IDEuMDcwMyAwLjIzNzQzIDEuMjM3Mi0wLjI5MTIyIDAuODM4NDEtMi42NTQ0IDAuMjA1ODktNS42NzIzLTEuODk3Ni03Ljc3NzZ6XCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJtNy4xMzE4IDE1Ljc2MWMwLjU5MDItMC41ODk3NSAxLjI1MjEtMS4wNjM5IDEuOTU3NS0xLjQyMjQgNi45MTA3LTAuMDM3NDI3LTAuMTE4MTItMC4wNTcyODggNi45MTA3LTAuMDM3NDI3bC05LjUyODYgOS41Mjg2Yy0wLjM5MzI0IDAuMzkzMjQtMS4wNzAzIDAuMjM3NDMtMS4yMzcyLTAuMjkxMjItMC44Mzg0MS0yLjY1NDMtMC4yMDU4OS01LjY3MjMgMS44OTc2LTcuNzc3NnpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0yNC4xNjIgOC4zNjU1Yy0wLjkzMTY5IDAtMS44Mjg4IDAuMTUwMDktMi42NjkxIDAuNDI3NzItNS40OTI0IDUuNTA3OSAwIDAtNS40OTI0IDUuNTA3OWgxNS4wNjljMC42MTc2NyAwIDEuMDI5NS0wLjY1MjkyIDAuNzQ5MzgtMS4yMDM4LTEuNDMyLTIuODEwMi00LjMyMTktNC43MzE4LTcuNjU3LTQuNzMxOHpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNy41NzUgNC4zMzNjLTAuNjI2MTMgMC42MjYxMy0xLjEzNDMgMS4zMjU3LTEuNTI0OCAyLjA3MTggMS42NzY3IDQuMTE3NCAwLjUzNTE4IDYuMzkwOS0wLjA1MDAzIDcuODk2NGwxMC42NTYtMTAuNjU2YzAuNDM3NzUtMC40Mzc3NSAwLjI2NzEtMS4xOTA4LTAuMzIwOS0xLjM4MTktMy4wMDEyLTAuOTczODItNi40MDMxLTAuMjg3NTEtOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm0xNC40MjUgNC4zMzNjMi42ODIyIDIuNjgyMiAzLjE5OTcgNi43MTI5IDEuNTc0OCA5Ljk2ODJsLTEwLjY1Ni0xMC42NTZjLTAuNDM3NzUtMC40Mzc3NS0wLjI2NzEtMS4xOTA4IDAuMzIwOS0xLjM4MTkgMy4wMDEyLTAuOTczODIgNi40MDMxLTAuMjg3NTEgOC43NjA3IDIuMDcwMXpcIiAvPlxuICAgICAgPHBhdGggZD1cIm03LjgzODUgOC4zNjU1YzAuOTEyMSAwIDEuNzkxIDAuMTQzODUgMi42MTYgMC40MTAzNyA1LjU0NTUgNS41MjUzLTAuMDYxNzczIDAuMDExNjc1IDUuNTQ1NSA1LjUyNTNoLTE1LjA2OWMtMC42MTc2OCAwLTEuMDI5NS0wLjY1MjkyLTAuNzQ5MzgtMS4yMDM4IDEuNDMyLTIuODEwMiA0LjMyMTktNC43MzE4IDcuNjU3LTQuNzMxOHpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFMTUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMTdcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkuNjI2NzQgMTYuMjIwMkg5LjcwNDlDMTAuNDIyNSAxNi4yMjAyIDExLjAwMTYgMTUuNjQxMiAxMS4wMDE2IDE0LjkyMzZWNC4wNDIyNEg4LjMzMDA4VjE0LjkyQzguMzMwMDggMTUuNjM3NiA4LjkwOTE0IDE2LjIyMDIgOS42MjY3NCAxNi4yMjAyWlwiXG4gICAgICAgIGZpbGw9XCIjRjlBQjAwXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjY4MTkgOC4wMjgxM0MxMy4zMjQ5IDYuNjY3NTIgMTEuMjk2NCA2LjM5Mzk4IDkuNjY1NzcgNy4yMDA0TDE1LjA1ODUgMTIuNTkzMUMxNS4yODIzIDEyLjgxNjkgMTUuNjYyNCAxMi43MjgxIDE1Ljc1ODMgMTIuNDI5N0MxNi4yMzA4IDEwLjkyNyAxNS44NzU2IDkuMjE4MjIgMTQuNjgxOSA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjNUJCOTc0XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTQuNjQ5NTMgOC4wMjgxM0M2LjAwNjU5IDYuNjY3NTIgOC4wMzUwNyA2LjM5Mzk4IDkuNjY1NjcgNy4yMDA0TDQuMjcyOTcgMTIuNTkzMUM0LjA0OTE2IDEyLjgxNjkgMy42NjkwNCAxMi43MjgxIDMuNTczMTIgMTIuNDI5N0MzLjEwMDY0IDEwLjkyNyAzLjQ1NTg5IDkuMjE4MjIgNC42NDk1MyA4LjAyODEzWlwiXG4gICAgICAgIGZpbGw9XCIjMTI5RUFGXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE0LjI4NCAzLjg0MzI2QzEyLjEzODMgMy44NDMyNiAxMC4zMTU5IDUuMjUwMDUgOS42NjU3NyA3LjIwMDM4SDE4LjE5MThDMTguNTM5OSA3LjIwMDM4IDE4Ljc3NDQgNi44MzA5MiAxOC42MTQ1IDYuNTE4M0MxNy44MDgxIDQuOTMwMzMgMTYuMTcwNCAzLjg0MzI2IDE0LjI4NCAzLjg0MzI2WlwiXG4gICAgICAgIGZpbGw9XCIjQUY1Q0Y3XCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEwLjU1NzQgMS41NTkwMUM5LjA0MDUzIDMuMDc1OTMgOC43NDU2NyA1LjM2MDE5IDkuNjY1NzcgNy4yMDAzOUwxNS42OTQ0IDEuMTcxNzlDMTUuOTQzIDAuOTIzMTEzIDE1Ljg0MzYgMC40OTY4MTQgMTUuNTEzMiAwLjM5MDIzOUMxMy44MTUxIC0wLjE2MDQgMTEuODg5NiAwLjIyNjgyMiAxMC41NTc0IDEuNTU5MDFaXCJcbiAgICAgICAgZmlsbD1cIiNGRjhCQ0JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNOC43NzQwOCAxLjU1OTAxQzEwLjI5MSAzLjA3NTkzIDEwLjU4NTkgNS4zNjAxOSA5LjY2NTc2IDcuMjAwMzlMMy42MzcxNiAxLjE3MTc5QzMuMzg4NDggMC45MjMxMTMgMy40ODc5NSAwLjQ5NjgxNCAzLjgxODMzIDAuMzkwMjM5QzUuNTE2NDMgLTAuMTYwNCA3LjQ0MTg5IDAuMjI2ODIyIDguNzc0MDggMS41NTkwMVpcIlxuICAgICAgICBmaWxsPVwiI0ZBN0IxN1wiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01LjA0NzUyIDMuODQzMjZDNy4xOTMyMyAzLjg0MzI2IDkuMDE1NjYgNS4yNTAwNSA5LjY2NTc3IDcuMjAwMzhIMS4xMzk3NkMwLjc5MTYxNiA3LjIwMDM4IDAuNTU3MTUgNi44MzA5MiAwLjcxNzAxMyA2LjUxODNDMS41MjM0MyA0LjkzMDMzIDMuMTYxMTQgMy44NDMyNiA1LjA0NzUyIDMuODQzMjZaXCJcbiAgICAgICAgZmlsbD1cIiM0Mjg1RjRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RleUljb24oe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgLy8gd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8vIGhlaWdodD1cIjEwMCVcIlxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKCdkYXJrOmZpbGwtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMiA0LjAwNkMyIDIuODk4IDIuODk3IDIgNC4wMDYgMmg5Ljk4OEMxNS4xMDIgMiAxNiAyLjg5NyAxNiA0LjAwNnY5Ljk4OEEyLjAwNSAyLjAwNSAwIDAgMSAxMy45OTQgMTZINC4wMDZBMi4wMDUgMi4wMDUgMCAwIDEgMiAxMy45OTRWNC4wMDZ6TTEzLjk5MiA5bC4wMDMtLjAwM0wxMC45OTcgNiA5Ljc1IDcuMjQ3IDExLjUwMyA5IDkuNzUgMTAuNzUzIDEwLjk5NyAxMmwyLjk5Ny0yLjk5N0wxMy45OTIgOXptLTkuOTkgMEw0IDguOTk3IDYuOTk3IDZsMS4yNDcgMS4yNDdMNi40OTIgOWwxLjc1MyAxLjc1M0w2Ljk5NyAxMiA0IDkuMDAzIDQuMDAzIDl6XCJcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHZW1pbmlJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcbiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cInVybCgjXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDIpXCJcbiAgICAgICAgZD1cIk05IDE4YzAtMS4yNDUtLjI0LTIuNDE1LS43Mi0zLjUxYTguOTM0IDguOTM0IDAgMDAtMS45MTItMi44NTdBOC45MzQgOC45MzQgMCAwMDMuNTEgOS43MiA4LjY0NiA4LjY0NiAwIDAwMCA5YTguODg2IDguODg2IDAgMDAzLjUxLS42OTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3LTEuOTM2QTguOTM0IDguOTM0IDAgMDA4LjI4IDMuNTFDOC43NiAyLjQxNSA5IDEuMjQ1IDkgMGMwIDEuMjQ1LjIzMiAyLjQxNS42OTcgMy41MWE5LjI0NyA5LjI0NyAwIDAwMS45MzYgMi44NTcgOS4yNDcgOS4yNDcgMCAwMDIuODU3IDEuOTM2QTguODg2IDguODg2IDAgMDAxOCA5Yy0xLjI0NSAwLTIuNDE1LjI0LTMuNTEuNzJhOC45MzQgOC45MzQgMCAwMC0yLjg1NyAxLjkxMiA5LjI0NyA5LjI0NyAwIDAwLTEuOTM1IDIuODU4QTguODg2IDguODg2IDAgMDA5IDE4elwiXG4gICAgICAvPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxyYWRpYWxHcmFkaWVudFxuICAgICAgICAgIGlkPVwiXzRyaWZfcGFpbnQwX3JhZGlhbF84OTdfNDJcIlxuICAgICAgICAgIGN4PVwiMFwiXG4gICAgICAgICAgY3k9XCIwXCJcbiAgICAgICAgICByPVwiMVwiXG4gICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInJvdGF0ZSgxMzUgOSAzLjcyOCkgc2NhbGUoMjUuNDU1OCAxMi43Mjc5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuMzI1XCIgc3RvcENvbG9yPVwiI0ZGRERCN1wiPjwvc3RvcD5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIuNzA2XCIgc3RvcENvbG9yPVwiIzA3NkVGRlwiPjwvc3RvcD5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGVNaW5pbWFsSWNvbih7IGNsYXNzTmFtZSA9ICcnIH06IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCI4MDBweFwiXG4gICAgICBoZWlnaHQ9XCI4MDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC00IHctNCcsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNDczLjE2LDIyMS40OGwtMi4yNi05LjU5SDI2Mi40NnY4OC4yMkgzODdjLTEyLjkzLDYxLjQtNzIuOTMsOTMuNzItMTIxLjk0LDkzLjcyLTM1LjY2LDAtNzMuMjUtMTUtOTguMTMtMzkuMTFhMTQwLjA4LDE0MC4wOCwwLDAsMS00MS44LTk4Ljg4YzAtMzcuMTYsMTYuNy03NC4zMyw0MS05OC43OHM2MS0zOC4xMyw5Ny40OS0zOC4xM2M0MS43OSwwLDcxLjc0LDIyLjE5LDgyLjk0LDMyLjMxbDYyLjY5LTYyLjM2QzM5MC44Niw3Mi43MiwzNDAuMzQsMzIsMjYxLjYsMzJoMGMtNjAuNzUsMC0xMTksMjMuMjctMTYxLjU4LDY1LjcxQzU4LDEzOS41LDM2LjI1LDE5OS45MywzNi4yNSwyNTZTNTYuODMsMzY5LjQ4LDk3LjU1LDQxMS42QzE0MS4wNiw0NTYuNTIsMjAyLjY4LDQ4MCwyNjYuMTMsNDgwYzU3LjczLDAsMTEyLjQ1LTIyLjYyLDE1MS40NS02My42NiwzOC4zNC00MC40LDU4LjE3LTk2LjMsNTguMTctMTU0LjlDNDc1Ljc1LDIzNi43Nyw0NzMuMjcsMjIyLjEyLDQ3My4xNiwyMjEuNDhaXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFudGhyb3BpY01pbmltYWxJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJoLTQgdy00XCJcbiAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0xNy4zMDQgMy41NDcyaC0zLjY3MThsNi42OTU5IDE2LjkwNmgzLjY3MTh6bS0xMC42MDggMC02LjY5NTkgMTYuOTA2aDMuNzQ0MmwxLjM2OTMtMy41NTAyaDcuMDA1MmwxLjM2OTMgMy41NTAyaDMuNzQ0MmwtNi42OTU5LTE2LjkwNnptLTAuMzcxMTQgMTAuMjE2IDIuMjkxNC01Ljk0MTMgMi4yOTE0IDUuOTQxM3pcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgTGlzdGVuaW5nSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaXN0ZW5pbmdJY29uKHsgY2xhc3NOYW1lIH06IExpc3RlbmluZ0ljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMmEzIDMgMCAwIDAtMyAzdjdhMyAzIDAgMCAwIDYgMFY1YTMgMyAwIDAgMC0zLTNaXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlwiIC8+XG4gICAgICA8bGluZSB4MT1cIjEyXCIgeDI9XCIxMlwiIHkxPVwiMTlcIiB5Mj1cIjIyXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZUljb24oeyBjbGFzc05hbWUgPSAnJywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgNC45MDk5QzExIDQuNDc0ODUgMTAuNDgyOCA0LjI0NzM0IDEwLjE2MjEgNC41NDEzMkw2LjY3NTcyIDcuNzM3MkM2LjQ5MTI5IDcuOTA2MjYgNi4yNTAxOSA4LjAwMDA1IDYgOC4wMDAwNUg0QzMuNDQ3NzIgOC4wMDAwNSAzIDguNDQ3NzYgMyA5LjAwMDA1VjE1QzMgMTUuNTUyMyAzLjQ0NzcyIDE2IDQgMTZINkM2LjI1MDE5IDE2IDYuNDkxMjkgMTYuMDkzOCA2LjY3NTcyIDE2LjI2MjlMMTAuMTYyMSAxOS40NTg4QzEwLjQ4MjggMTkuNzUyNyAxMSAxOS41MjUyIDExIDE5LjA5MDJWNC45MDk5Wk04LjgxMDY5IDMuMDY3MDFDMTAuNDE0MiAxLjU5NzE0IDEzIDIuNzM0NjMgMTMgNC45MDk5VjE5LjA5MDJDMTMgMjEuMjY1NSAxMC40MTQyIDIyLjQwMyA4LjgxMDY5IDIwLjkzMzFMNS42MTEwMiAxOEg0QzIuMzQzMTUgMTggMSAxNi42NTY5IDEgMTVWOS4wMDAwNUMxIDcuMzQzMTkgMi4zNDMxNSA2LjAwMDA1IDQgNi4wMDAwNUg1LjYxMTAyTDguODEwNjkgMy4wNjcwMVpNMjAuMzE2NiA2LjM1NjY1QzIwLjgwMTkgNi4wOTMxMyAyMS40MDkgNi4yNzI5NiAyMS42NzI1IDYuNzU4MzNDMjIuNTE5MSA4LjMxNzYgMjIuOTk5NiAxMC4xMDQyIDIyLjk5OTYgMTIuMDAwMUMyMi45OTk2IDEzLjg1MDcgMjIuNTQxOCAxNS41OTc0IDIxLjczMjMgMTcuMTMwMkMyMS40NzQ0IDE3LjYxODUgMjAuODY5NSAxNy44MDU0IDIwLjM4MTEgMTcuNTQ3NUMxOS44OTI3IDE3LjI4OTYgMTkuNzA1OSAxNi42ODQ2IDE5Ljk2MzggMTYuMTk2MkMyMC42MjQ5IDE0Ljk0NDQgMjAuOTk5NiAxMy41MTc1IDIwLjk5OTYgMTIuMDAwMUMyMC45OTk2IDEwLjQ0NTggMjAuNjA2NCA4Ljk4NjI3IDE5LjkxNDkgNy43MTI2MkMxOS42NTE0IDcuMjI3MjYgMTkuODMxMiA2LjYyMDE3IDIwLjMxNjYgNi4zNTY2NVpNMTUuNzk5NCA3LjkwMDQ5QzE2LjI0MSA3LjU2ODggMTYuODY3OSA3LjY1Nzg5IDE3LjE5OTUgOC4wOTk0N0MxOC4wMTU2IDkuMTg1OTMgMTguNDk5NiAxMC41Mzc5IDE4LjQ5OTYgMTIuMDAwMUMxOC40OTk2IDEzLjMxMjcgMTguMTA5NCAxNC41MzcyIDE3LjQzODUgMTUuNTYwNEMxNy4xMzU3IDE2LjAyMjIgMTYuNTE1OCAxNi4xNTExIDE2LjA1MzkgMTUuODQ4M0MxNS41OTIxIDE1LjU0NTUgMTUuNDYzMiAxNC45MjU1IDE1Ljc2NiAxNC40NjM3QzE2LjIyOTggMTMuNzU2NCAxNi40OTk2IDEyLjkxMTMgMTYuNDk5NiAxMi4wMDAxQzE2LjQ5OTYgMTAuOTg1OSAxNi4xNjUzIDEwLjA1MjYgMTUuNjAwNCA5LjMwMDYzQzE1LjI2ODcgOC44NTkwNSAxNS4zNTc4IDguMjMyMTggMTUuNzk5NCA3LjkwMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZvbHVtZU11dGVJY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyWk05LjUgOC41QzguOTQ3NzIgOC41IDguNSA4Ljk0NzcyIDguNSA5LjVWMTQuNUM4LjUgMTUuMDUyMyA4Ljk0NzcyIDE1LjUgOS41IDE1LjVIMTQuNUMxNS4wNTIzIDE1LjUgMTUuNSAxNS4wNTIzIDE1LjUgMTQuNVY5LjVDMTUuNSA4Ljk0NzcyIDE1LjA1MjMgOC41IDE0LjUgOC41SDkuNVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZW5kTWVzc2FnZUljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc20gbS0xIG1kOm0tMFwiXG4gICAgICBzdHlsZT17eyB3aWR0aDogJzFlbScsIGhlaWdodDogJzFlbScsIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnIH19XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNLjUgMS4xNjNBMSAxIDAgMCAxIDEuOTcuMjhsMTIuODY4IDYuODM3YTEgMSAwIDAgMSAwIDEuNzY2TDEuOTY5IDE1LjcyQTEgMSAwIDAgMSAuNSAxNC44MzZWMTAuMzNhMSAxIDAgMCAxIC44MTYtLjk4M0w4LjUgOCAxLjMxNiA2LjY1M0ExIDEgMCAwIDEgLjUgNS42N1YxLjE2M1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVc2VySWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiN1wiIHI9XCI0XCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExvY2tJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPVwibHVjaWRlIGx1Y2lkZS1sb2NrXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjExXCIgeD1cIjNcIiB5PVwiMTFcIiByeD1cIjJcIiByeT1cIjJcIiAvPlxuICAgICAgPHBhdGggZD1cIk03IDExVjdhNSA1IDAgMCAxIDEwIDB2NFwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTmV3Q2hhdEljb24oeyBjbGFzc05hbWUgPSAnJyB9OiB7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbigndGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xNi43OTI5IDIuNzkyODlDMTguMDExOCAxLjU3Mzk0IDE5Ljk4ODIgMS41NzM5NCAyMS4yMDcxIDIuNzkyODlDMjIuNDI2MSA0LjAxMTg0IDIyLjQyNjEgNS45ODgxNSAyMS4yMDcxIDcuMjA3MTFMMTIuNzA3MSAxNS43MDcxQzEyLjUxOTYgMTUuODk0NiAxMi4yNjUyIDE2IDEyIDE2SDlDOC40NDc3MiAxNiA4IDE1LjU1MjMgOCAxNVYxMkM4IDExLjczNDggOC4xMDUzNiAxMS40ODA0IDguMjkyODkgMTEuMjkyOUwxNi43OTI5IDIuNzkyODlaTTE5Ljc5MjkgNC4yMDcxMUMxOS4zNTUgMy43NjkyIDE4LjY0NSAzLjc2OTIgMTguMjA3MSA0LjIwNzFMMTAgMTIuNDE0MlYxNEgxMS41ODU4TDE5Ljc5MjkgNS43OTI4OUMyMC4yMzA4IDUuMzU0OTkgMjAuMjMwOCA0LjY0NTAxIDE5Ljc5MjkgNC4yMDcxMVpNNiA1QzUuNDQ3NzIgNSA1IDUuNDQ3NzEgNSA2VjE4QzUgMTguNTUyMyA1LjQ0NzcyIDE5IDYgMTlIMThDMTguNTUyMyAxOSAxOSAxOC41NTIzIDE5IDE4VjE0QzE5IDEzLjQ0NzcgMTkuNDQ3NyAxMyAyMCAxM0MyMC41NTIzIDEzIDIxIDEzLjQ0NzcgMjEgMTRWMThDMjEgMTkuNjU2OSAxOS42NTY5IDIxIDE4IDIxSDZDNC4zNDMxNSAyMSAzIDE5LjY1NjkgMyAxOFY2QzMgNC4zNDMxNCA0LjM0MzE1IDMgNiAzSDEwQzEwLjU1MjMgMyAxMSAzLjQ0NzcxIDExIDRDMTEgNC41NTIyOCAxMC41NTIzIDUgMTAgNUg2WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGVyaW1lbnRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT1cImljb24tc21cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTkgM0gxNU05IDNWOS4yNzU5QzkgOS43NDM3NyA4LjgzNTk3IDEwLjE5NjggOC41MzY0NCAxMC41NTYzTDQuODUwODUgMTQuOTc5QzQuMzAxMDggMTUuNjM4NyA0IDE2LjQ3MDMgNCAxNy4zMjkxVjE3LjMyOTFDNCAxOS4zNTY1IDUuNjQzNTMgMjEgNy42NzA5NCAyMUgxNi4zMjkxQzE4LjM1NjUgMjEgMjAgMTkuMzU2NSAyMCAxNy4zMjkxVjE3LjMyOTFDMjAgMTYuNDcwMyAxOS42OTg5IDE1LjYzODcgMTkuMTQ5MiAxNC45NzlMMTUuNDYzNiAxMC41NTYzQzE1LjE2NCAxMC4xOTY4IDE1IDkuNzQzNzcgMTUgOS4yNzU5VjNNOSAzSDhNMTUgM0gxNlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNSAxNC43NzRDMTEuNSAxMi44MzkgMTIuMTUgMTYuNzA4OSAxOCAxNFwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHb29nbGUoe1xuICBzaXplID0gMjUsXG4gIGNsYXNzTmFtZSA9ICcnLFxufToge1xuICBzaXplPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHVuaXQgPSAnNDEnO1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHdpZHRoPVwiMjRweFwiXG4gICAgICBoZWlnaHQ9XCIyNHB4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiXG4gICAgICBzdHJva2VXaWR0aD1cIjEuNVwiXG4gICAgICBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSwgJycpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTQ3My4xNiwyMjEuNDhsLTIuMjYtOS41OUgyNjIuNDZ2ODguMjJIMzg3Yy0xMi45Myw2MS40LTcyLjkzLDkzLjcyLTEyMS45NCw5My43Mi0zNS42NiwwLTczLjI1LTE1LTk4LjEzLTM5LjExYTE0MC4wOCwxNDAuMDgsMCwwLDEtNDEuOC05OC44OGMwLTM3LjE2LDE2LjctNzQuMzMsNDEtOTguNzhzNjEtMzguMTMsOTcuNDktMzguMTNjNDEuNzksMCw3MS43NCwyMi4xOSw4Mi45NCwzMi4zMWw2Mi42OS02Mi4zNkMzOTAuODYsNzIuNzIsMzQwLjM0LDMyLDI2MS42LDMyaDBjLTYwLjc1LDAtMTE5LDIzLjI3LTE2MS41OCw2NS43MUM1OCwxMzkuNSwzNi4yNSwxOTkuOTMsMzYuMjUsMjU2UzU2LjgzLDM2OS40OCw5Ny41NSw0MTEuNkMxNDEuMDYsNDU2LjUyLDIwMi42OCw0ODAsMjY2LjEzLDQ4MGM1Ny43MywwLDExMi40NS0yMi42MiwxNTEuNDUtNjMuNjYsMzguMzQtNDAuNCw1OC4xNy05Ni4zLDU4LjE3LTE1NC45QzQ3NS43NSwyMzYuNzcsNDczLjI3LDIyMi4xMiw0NzMuMTYsMjIxLjQ4WlwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmlydGhkYXlJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMzMuMzMgMjkwXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgeG1sbnNYbGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgY2xhc3NOYW1lPXtjbignaC05IHctOScsIGNsYXNzTmFtZSl9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxkZWZzPlxuICAgICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgICBpZD1cImxpbmVhckdyYWRpZW50MTg0MlwiXG4gICAgICAgICAgeDE9XCIxNjMuOTJcIlxuICAgICAgICAgIHgyPVwiMTczLjY2XCJcbiAgICAgICAgICB5MT1cIjIyLjIxMlwiXG4gICAgICAgICAgeTI9XCItNi41Nzg0XCJcbiAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSguMTAzOTEgLjA1MDE0MylcIlxuICAgICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RvcCBzdG9wQ29sb3I9XCIjNjQwYTYyXCIgb2Zmc2V0PVwiMFwiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcENvbG9yPVwiIzg1MjI4M1wiIG9mZnNldD1cIi40OTkxN1wiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcENvbG9yPVwiIzY0MGE2MlwiIG9mZnNldD1cIjFcIiAvPlxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPC9kZWZzPlxuICAgICAgPGc+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgdHJhbnNmb3JtPVwibWF0cml4KC40MzQxNiAuOTAwODQgLS44OTk2NiAuNDM2NiAwIDApXCJcbiAgICAgICAgICBkPVwibTI1OS4yOS0xMjYuMDNhMjMyLjIgMjM3LjU2IDAgMCAxLTE3LjQxMiAyMzEuMzRsLTE5My4zMi0xMzEuNTl6XCJcbiAgICAgICAgICBmaWxsPVwidXJsKCNsaW5lYXJHcmFkaWVudDE4NDIpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICB0cmFuc2Zvcm09XCJtYXRyaXgoLjY5NjcgLjA1MTkyNiAtLjA1MTkyNiAuNjk2NyAzNS41NzggMjMuMTk2KVwiXG4gICAgICAgICAgZD1cIm01MC44MTggMzEuNDE1Yy0xLjQ2NTQgMi40NzQ5LTEwLjgzOCAyLjQxOTUtMTIuOTk3IDQuMzIwNC0yLjE1ODQgMS45MDA5LTMuMjg4IDExLjIwNi01LjkyODIgMTIuMzQ3LTIuNjQwMiAxLjE0MDktMTAuMTkxLTQuNDEzMi0xMy4wNTQtNC4xNDQxLTIuODYzNiAwLjI2OTE3LTkuMjQ2NiA3LjEzMy0xMi4wNTMgNi41MDQxLTIuODA2Ni0wLjYyODg5LTUuNjUwMy05LjU2MDItOC4xMjUyLTExLjAyNi0yLjQ3NDktMS40NjU0LTExLjY3MyAwLjMzNTcyLTEzLjU3NC0xLjgyMjdzMS4wNDgyLTExLjA1Ni0wLjA5MjctMTMuNjk2Yy0xLjE0MDktMi42NDAyLTkuNjQxMi02LjU4OTgtOS45MTA0LTkuNDUzMy0wLjI2OTE3LTIuODYzNiA3LjM0NjMtOC4zMjggNy45NzUyLTExLjEzNSAwLjYyODg5LTIuODA2Ni0zLjkyNjUtMTAuOTk4LTIuNDYxMi0xMy40NzMgMS40NjU0LTIuNDc0OSAxMC44MzgtMi40MTk1IDEyLjk5Ny00LjMyMDQgMi4xNTg0LTEuOTAwOSAzLjI4OC0xMS4yMDYgNS45MjgyLTEyLjM0NyAyLjY0MDItMS4xNDA5IDEwLjE5MSA0LjQxMzIgMTMuMDU0IDQuMTQ0MSAyLjg2MzYtMC4yNjkxNyA5LjI0NjYtNy4xMzMgMTIuMDUzLTYuNTA0MSAyLjgwNjYgMC42Mjg4OSA1LjY1MDMgOS41NjAyIDguMTI1MiAxMS4wMjZzMTEuNjczLTAuMzM1NzIgMTMuNTc0IDEuODIyN2MxLjkwMDkgMi4xNTg0LTEuMDQ4MiAxMS4wNTYgMC4wOTI3IDEzLjY5NiAxLjE0MDkgMi42NDAyIDkuNjQxMiA2LjU4OTggOS45MTA0IDkuNDUzMyAwLjI2OTE3IDIuODYzNS03LjM0NjMgOC4zMjgtNy45NzUyIDExLjEzNS0wLjYyODg5IDIuODA2NiAzLjkyNjUgMTAuOTk4IDIuNDYxMiAxMy40NzN6XCJcbiAgICAgICAgICBmaWxsPVwiI2ZmOWQ3OFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI2YyOTQ3MlwiXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCI0Ljc4NzdcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTcwLjM2XCIgY3k9XCIyMTUuNzZcIiByPVwiMTIuOTAzXCIgZmlsbD1cIiNjZmZmZmZcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJtMjIwLjc3IDE3NC43N2MtODguNTI2IDEwMS4wMy0xOTEuMjEgODUuNzMxLTIwOS41IDgyLjE0Mi0yLjIxMDEtMmUtNSAtMi42Njg2IDAuNDI0MjYtMy40MzcgMi4wMDIxbC0xLjcwNDIgNy41MDI4YzAuMDU2MTk3IDIuMzYwMyAwLjM3NTQ0IDIuNjQyOCAxLjkxMjEgMy41NDA5IDE4LjM5NiAzLjM3NDYgMTMwLjI3IDE5LjQ4OCAyMjMuNDYtODYuODgxIDAuNjQwMTEtMS41MDk1IDAuNDY2NTMtMy4xMzI0LTAuNTkxMzctNC43MzM3bC01LjE1NTgtMy42NDgyYy0xLjU4Ni0wLjg3NDMtMy45NTI0LTAuOTQzMzItNC45ODM3IDAuMDc1MXpcIlxuICAgICAgICAgIGNvbG9yPVwiIzAwMDAwMFwiXG4gICAgICAgICAgZmlsbD1cIiNmZjlkNzhcIlxuICAgICAgICAgIHN0cm9rZT1cIiNmMjk0NzJcIlxuICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMi44OTEzXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGcgZmlsbD1cIiNjZmZmZmZcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNzIuNjg0XCIgY3k9XCI5OS40N1wiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5OS4xNDRcIiBjeT1cIjE3Mi4zMlwiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1OS42MTdcIiBjeT1cIjIxNC43OFwiIHI9XCIxMi45MDNcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMzUuNFwiIGN5PVwiMTE4LjQyXCIgcj1cIjEyLjkwM1wiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSgzOC42NilcIlxuICAgICAgICAgICAgZD1cIm0yNTQuMjEtMS45NjA4YTEyLjkwMyAxMi45MDMgMCAwIDEtNi40ODUyIDExLjE5NCAxMi45MDMgMTIuOTAzIDAgMCAxLTEyLjkzNy0wLjA1ODIgMTIuOTAzIDEyLjkwMyAwIDAgMS02LjM4NDMtMTEuMjUybDEyLjkwMyAwLjExNjF6XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJtMjkuNDc2IDE1OC4xNmExMi45MDMgMTIuOTAzIDAgMCAwLTMuNjU2MiAwLjUyOTNsLTMuMzY5MSAyMy4xODlhMTIuOTAzIDEyLjkwMyAwIDAgMCA3LjAyNTQgMi4wODc5IDEyLjkwMyAxMi45MDMgMCAwIDAgMTIuOTA0LTEyLjkwNCAxMi45MDMgMTIuOTAzIDAgMCAwLTEyLjkwNC0xMi45MDJ6XCIgLz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXNzaXN0YW50SWNvbih7XG4gIGNsYXNzTmFtZSA9ICcnLFxuICBzaXplID0gJzFlbScsXG59OiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbn0pIHtcbiAgY29uc3QgdW5pdCA9IDI0O1xuICBjb25zdCBoZWlnaHQgPSBzaXplO1xuICBjb25zdCB3aWR0aCA9IHNpemU7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICB2aWV3Qm94PXtgMCAwICR7dW5pdH0gJHt1bml0fWB9XG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtdG9rZW4tc2Vjb25kYXJ5IGgtMi8zIHctMi8zJywgY2xhc3NOYW1lKX1cbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiIC8+XG4gICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIiAvPlxuICAgICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiMjIuMDhcIiB4Mj1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGFya2xlcyh7IGNsYXNzTmFtZSA9ICcnLCBzaXplID0gMjQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ljb24tbWQgc2hyaW5rLTAnLCBjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE5LjM5NzUgMS4zNTQ5OEMxOS4zNzQ2IDEuMTUyOTMgMTkuMjAzNyAxLjAwMDIxIDE5LjAwMDQgMUMxOC43OTcxIDAuOTk5NzkzIDE4LjYyNTkgMS4xNTIxNyAxOC42MDI2IDEuMzU0MTdDMTguNDc5OCAyLjQxODk0IDE4LjE2MjcgMy4xNTY5MiAxNy42NTk4IDMuNjU5ODNDMTcuMTU2OSA0LjE2Mjc0IDE2LjQxODkgNC40Nzk4MyAxNS4zNTQyIDQuNjAyNjRDMTUuMTUyMiA0LjYyNTkzIDE0Ljk5OTggNC43OTcwNyAxNSA1LjAwMDQxQzE1LjAwMDIgNS4yMDM3NSAxNS4xNTI5IDUuMzc0NTcgMTUuMzU1IDUuMzk3NDZDMTYuNDAxOSA1LjUxNjA1IDE3LjE1NjIgNS44MzMwNCAxNy42NzE2IDYuMzM5MDZDMTguMTg0NSA2Ljg0MjY5IDE4LjUwNzggNy41Nzk5OCAxOC42MDE2IDguNjM1MzlDMTguNjE5OSA4Ljg0MTk1IDE4Ljc5MzEgOS4wMDAyMyAxOS4wMDA1IDlDMTkuMjA3OCA4Ljk5OTc3IDE5LjM4MDYgOC44NDEwOSAxOS4zOTg1IDguNjM0NUMxOS40ODgzIDcuNTk2NzMgMTkuODExNCA2Ljg0MzI4IDIwLjMyNzMgNi4zMjczNUMyMC44NDMzIDUuODExNDIgMjEuNTk2NyA1LjQ4ODM0IDIyLjYzNDUgNS4zOTg1MUMyMi44NDExIDUuMzgwNjMgMjIuOTk5OCA1LjIwNzgyIDIzIDUuMDAwNDVDMjMuMDAwMiA0Ljc5MzA4IDIyLjg0MiA0LjYxOTkyIDIyLjYzNTQgNC42MDE1N0MyMS41OCA0LjUwNzgyIDIwLjg0MjcgNC4xODQ0NyAyMC4zMzkxIDMuNjcxNTdDMTkuODMzIDMuMTU2MjMgMTkuNTE2IDIuNDAxOTIgMTkuMzk3NSAxLjM1NDk4WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTEgM0MxMS40ODMzIDMgMTEuODk3NCAzLjM0NTYyIDExLjk4MzkgMy44MjExMUMxMi40NjM3IDYuNDYwNDMgMTMuMjc5IDguMjM5ODMgMTQuNTE5NiA5LjQ4MDM5QzE1Ljc2MDIgMTAuNzIxIDE3LjUzOTYgMTEuNTM2MyAyMC4xNzg5IDEyLjAxNjFDMjAuNjU0NCAxMi4xMDI2IDIxIDEyLjUxNjcgMjEgMTNDMjEgMTMuNDgzMyAyMC42NTQ0IDEzLjg5NzQgMjAuMTc4OSAxMy45ODM5QzE3LjUzOTYgMTQuNDYzNyAxNS43NjAyIDE1LjI3OSAxNC41MTk2IDE2LjUxOTZDMTMuMjc5IDE3Ljc2MDIgMTIuNDYzNyAxOS41Mzk2IDExLjk4MzkgMjIuMTc4OUMxMS44OTc0IDIyLjY1NDQgMTEuNDgzMyAyMyAxMSAyM0MxMC41MTY3IDIzIDEwLjEwMjYgMjIuNjU0NCAxMC4wMTYxIDIyLjE3ODlDOS41MzYyNSAxOS41Mzk2IDguNzIwOTYgMTcuNzYwMiA3LjQ4MDM5IDE2LjUxOTZDNi4yMzk4MyAxNS4yNzkgNC40NjA0MyAxNC40NjM3IDEuODIxMTEgMTMuOTgzOUMxLjM0NTYyIDEzLjg5NzQgMSAxMy40ODMzIDEgMTNDMSAxMi41MTY3IDEuMzQ1NjIgMTIuMTAyNiAxLjgyMTExIDEyLjAxNjFDNC40NjA0MyAxMS41MzYzIDYuMjM5ODMgMTAuNzIxIDcuNDgwMzkgOS40ODAzOUM4LjcyMDk2IDguMjM5ODMgOS41MzYyNSA2LjQ2MDQzIDEwLjAxNjEgMy44MjExMUMxMC4xMDI2IDMuMzQ1NjIgMTAuNTE2NyAzIDExIDNaTTUuNjY2MTggMTNDNi45MjQ3IDEzLjUyMjYgNy45OTc4OCAxNC4yMDg3IDguODk0NjEgMTUuMTA1NEM5Ljc5MTM0IDE2LjAwMjEgMTAuNDc3NCAxNy4wNzUzIDExIDE4LjMzMzhDMTEuNTIyNiAxNy4wNzUzIDEyLjIwODcgMTYuMDAyMSAxMy4xMDU0IDE1LjEwNTRDMTQuMDAyMSAxNC4yMDg3IDE1LjA3NTMgMTMuNTIyNiAxNi4zMzM4IDEzQzE1LjA3NTMgMTIuNDc3NCAxNC4wMDIxIDExLjc5MTMgMTMuMTA1NCAxMC44OTQ2QzEyLjIwODcgOS45OTc4OCAxMS41MjI2IDguOTI0NyAxMSA3LjY2NjE4QzEwLjQ3NzQgOC45MjQ3IDkuNzkxMzQgOS45OTc4OCA4Ljg5NDYxIDEwLjg5NDZDNy45OTc4OCAxMS43OTEzIDYuOTI0NyAxMi40Nzc0IDUuNjY2MTggMTNaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzLyc7XG5cbnR5cGUgU3BlZWNoSWNvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGVlY2hJY29uKHsgY2xhc3NOYW1lIH06IFNwZWVjaEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTIgMTB2M1wiIC8+XG4gICAgICA8cGF0aCBkPVwiTTYgNnYxMVwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTEwIDN2MThcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNCA4djdcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xOCA1djEzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMTB2M1wiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJ0eXBlIFNhdmVJY29uUHJvcHMgPSB7XG4gIHNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNhdmVJY29uKHsgc2l6ZSA9ICcxZW0nLCBjbGFzc05hbWUgfTogU2F2ZUljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZpZXdCb3g9XCI2NCA2NCA4OTYgODk2XCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMi41XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTg5My4zIDI5My4zTDczMC43IDEzMC43Yy03LjUtNy41LTE2LjctMTMtMjYuNy0xNlYxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQwek01MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgwelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDaXJjbGVIZWxwSWNvbih7IGNsYXNzTmFtZSA9ICdpY29uLW1kLWhlYXZ5Jywgc2l6ZSA9ICcxZW0nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTIgMTdoLjAxXCIgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJlZHJvY2tJY29uKHtcbiAgc2l6ZSA9IDI1LFxuICBjbGFzc05hbWUgPSAnJyxcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oJ2ZpbGwtY3VycmVudCB0ZXh0LWJsYWNrJywgY2xhc3NOYW1lKX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPGcgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICA8cGF0aCBkPVwiTTEyLDE4LjEzOTcwMTQgTDkuNTc0LDE4Ljk0ODcwMTQgTDguNjI4LDE4LjMxNzcwMTQgTDkuNjU4LDE3Ljk3MzcwMTQgTDkuMzQyLDE3LjAyNTcwMTQgTDcuNTc0LDE3LjYxNDcwMTQgTDcsMTcuMjMyNzAxNCBMNywxNC40OTk3MDE0IEM3LDE0LjMxMDcwMTQgNi44OTMsMTQuMTM3NzAxNCA2LjcyNCwxNC4wNTI3MDE0IEw1LDEzLjE5MDcwMTQgTDUsMTAuODA4NzAxNCBMNi41LDEwLjA1ODcwMTQgTDgsMTAuODA4NzAxNCBMOCwxMi40OTk3MDE0IEM4LDEyLjY4OTcwMTQgOC4xMDcsMTIuODYyNzAxNCA4LjI3NiwxMi45NDc3MDE0IEwxMC4yNzYsMTMuOTQ3NzAxNCBMMTAuNzI0LDEzLjA1MjcwMTQgTDksMTIuMTkwNzAxNCBMOSwxMC44MDg3MDE0IEwxMC43MjQsOS45NDc3MDEzNiBDMTAuODkzLDkuODYyNzAxMzYgMTEsOS42ODk3MDEzNiAxMSw5LjQ5OTcwMTM2IEwxMSw3Ljk5OTcwMTM2IEwxMCw3Ljk5OTcwMTM2IEwxMCw5LjE5MDcwMTM2IEw4LjUsOS45NDA3MDEzNiBMNyw5LjE5MDcwMTM2IEw3LDYuNzY3NzAxMzYgTDgsNi4xMDA3MDEzNiBMOCw3Ljk5OTcwMTM2IEw5LDcuOTk5NzAxMzYgTDksNS40MzQ3MDEzNiBMOS41NzQsNS4wNTE3MDEzNiBMMTIsNS44NjA3MDEzNiBMMTIsMTguMTM5NzAxNCBaIE0xNy41LDE2Ljk5OTcwMTQgQzE3Ljc3NSwxNi45OTk3MDE0IDE4LDE3LjIyMzcwMTQgMTgsMTcuNDk5NzAxNCBDMTgsMTcuNzc1NzAxNCAxNy43NzUsMTcuOTk5NzAxNCAxNy41LDE3Ljk5OTcwMTQgQzE3LjIyNSwxNy45OTk3MDE0IDE3LDE3Ljc3NTcwMTQgMTcsMTcuNDk5NzAxNCBDMTcsMTcuMjIzNzAxNCAxNy4yMjUsMTYuOTk5NzAxNCAxNy41LDE2Ljk5OTcwMTQgTDE3LjUsMTYuOTk5NzAxNCBaIE0xNi41LDUuOTk5NzAxMzYgQzE2Ljc3NSw1Ljk5OTcwMTM2IDE3LDYuMjIzNzAxMzYgMTcsNi40OTk3MDEzNiBDMTcsNi43NzU3MDEzNiAxNi43NzUsNi45OTk3MDEzNiAxNi41LDYuOTk5NzAxMzYgQzE2LjIyNSw2Ljk5OTcwMTM2IDE2LDYuNzc1NzAxMzYgMTYsNi40OTk3MDEzNiBDMTYsNi4yMjM3MDEzNiAxNi4yMjUsNS45OTk3MDEzNiAxNi41LDUuOTk5NzAxMzYgTDE2LjUsNS45OTk3MDEzNiBaIE0xOC41LDExLjk5OTcwMTQgQzE4Ljc3NSwxMS45OTk3MDE0IDE5LDEyLjIyMzcwMTQgMTksMTIuNDk5NzAxNCBDMTksMTIuNzc1NzAxNCAxOC43NzUsMTIuOTk5NzAxNCAxOC41LDEyLjk5OTcwMTQgQzE4LjIyNSwxMi45OTk3MDE0IDE4LDEyLjc3NTcwMTQgMTgsMTIuNDk5NzAxNCBDMTgsMTIuMjIzNzAxNCAxOC4yMjUsMTEuOTk5NzAxNCAxOC41LDExLjk5OTcwMTQgTDE4LjUsMTEuOTk5NzAxNCBaIE0xNy4wOTIsMTIuOTk5NzAxNCBDMTcuMjk5LDEzLjU4MDcwMTQgMTcuODQ5LDEzLjk5OTcwMTQgMTguNSwxMy45OTk3MDE0IEMxOS4zMjcsMTMuOTk5NzAxNCAyMCwxMy4zMjc3MDE0IDIwLDEyLjQ5OTcwMTQgQzIwLDExLjY3MjcwMTQgMTkuMzI3LDEwLjk5OTcwMTQgMTguNSwxMC45OTk3MDE0IEMxNy44NDksMTAuOTk5NzAxNCAxNy4yOTksMTEuNDE5NzAxNCAxNy4wOTIsMTEuOTk5NzAxNCBMMTMsMTEuOTk5NzAxNCBMMTMsOS45OTk3MDEzNiBMMTYuNSw5Ljk5OTcwMTM2IEMxNi43NzYsOS45OTk3MDEzNiAxNyw5Ljc3NjcwMTM2IDE3LDkuNDk5NzAxMzYgTDE3LDcuOTA3NzAxMzYgQzE3LjU4MSw3LjcwMDcwMTM2IDE4LDcuMTUwNzAxMzYgMTgsNi40OTk3MDEzNiBDMTgsNS42NzI3MDEzNiAxNy4zMjcsNC45OTk3MDEzNiAxNi41LDQuOTk5NzAxMzYgQzE1LjY3Myw0Ljk5OTcwMTM2IDE1LDUuNjcyNzAxMzYgMTUsNi40OTk3MDEzNiBDMTUsNy4xNTA3MDEzNiAxNS40MTksNy43MDA3MDEzNiAxNiw3LjkwNzcwMTM2IEwxNiw4Ljk5OTcwMTM2IEwxMyw4Ljk5OTcwMTM2IEwxMyw1LjQ5OTcwMTM2IEMxMyw1LjI4NDcwMTM2IDEyLjg2Miw1LjA5MzcwMTM2IDEyLjY1OCw1LjAyNTcwMTM2IEw5LjY1OCw0LjAyNTcwMTM2IEM5LjUxMSwzLjk3NjcwMTM2IDkuMzUxLDMuOTk4NzAxMzYgOS4yMjMsNC4wODM3MDEzNiBMNi4yMjMsNi4wODM3MDEzNiBDNi4wODQsNi4xNzY3MDEzNiA2LDYuMzMyNzAxMzYgNiw2LjQ5OTcwMTM2IEw2LDkuMTkwNzAxMzYgTDQuMjc2LDEwLjA1MjcwMTQgQzQuMTA3LDEwLjEzNzcwMTQgNCwxMC4zMTA3MDE0IDQsMTAuNDk5NzAxNCBMNCwxMy40OTk3MDE0IEM0LDEzLjY4OTcwMTQgNC4xMDcsMTMuODYyNzAxNCA0LjI3NiwxMy45NDc3MDE0IEw2LDE0LjgwODcwMTQgTDYsMTcuNDk5NzAxNCBDNiwxNy42NjY3MDE0IDYuMDg0LDE3LjgyMzcwMTQgNi4yMjMsMTcuOTE1NzAxNCBMOS4yMjMsMTkuOTE1NzAxNCBDOS4zMDYsMTkuOTcxNzAxNCA5LjQwMiwxOS45OTk3MDE0IDkuNSwxOS45OTk3MDE0IEM5LjU1MywxOS45OTk3MDE0IDkuNjA2LDE5Ljk5MTcwMTQgOS42NTgsMTkuOTczNzAxNCBMMTIuNjU4LDE4Ljk3MzcwMTQgQzEyLjg2MiwxOC45MDY3MDE0IDEzLDE4LjcxNTcwMTQgMTMsMTguNDk5NzAxNCBMMTMsMTUuOTk5NzAxNCBMMTUuMjkzLDE1Ljk5OTcwMTQgTDE2LjE0NiwxNi44NTM3MDE0IEwxNi4xNTksMTYuODQwNzAxNCBDMTYuMDYxLDE3LjA0MDcwMTQgMTYsMTcuMjYyNzAxNCAxNiwxNy40OTk3MDE0IEMxNiwxOC4zMjY3MDE0IDE2LjY3MywxOC45OTk3MDE0IDE3LjUsMTguOTk5NzAxNCBDMTguMzI3LDE4Ljk5OTcwMTQgMTksMTguMzI2NzAxNCAxOSwxNy40OTk3MDE0IEMxOSwxNi42NzI3MDE0IDE4LjMyNywxNS45OTk3MDE0IDE3LjUsMTUuOTk5NzAxNCBDMTcuMjYyLDE1Ljk5OTcwMTQgMTcuMDQsMTYuMDYwNzAxNCAxNi44NDEsMTYuMTU5NzAxNCBMMTYuODU0LDE2LjE0NjcwMTQgTDE1Ljg1NCwxNS4xNDY3MDE0IEMxNS43NiwxNS4wNTI3MDE0IDE1LjYzMywxNC45OTk3MDE0IDE1LjUsMTQuOTk5NzAxNCBMMTMsMTQuOTk5NzAxNCBMMTMsMTIuOTk5NzAxNCBMMTcuMDkyLDEyLjk5OTcwMTQgWlwiIC8+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaHVtYlVwSWNvbih7IGNsYXNzTmFtZSA9ICcnLCBzaXplID0gJzFlbScsIGJvbGQgPSBmYWxzZSB9KSB7XG4gIHJldHVybiBib2xkID8gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEyLjU5MiAyLjUwMzg2QzEyLjgwNDcgMi4xMzAxNCAxMy4yMzE3IDEuOTM1IDEzLjY1MiAyLjAxOTQyQzE1LjU2MjcgMi40MDMxNCAxNi43MjQ2IDQuMzYwNzkgMTYuMTUxNiA2LjIzMDg1TDE1LjMwMyA5TDE3LjAxNDIgOUMxOS42NDA5IDkgMjEuNTQ4NSAxMS41MDc5IDIwLjg1NzQgMTQuMDUyNUwxOS40OTk0IDE5LjA1MjVDMTkuMDI2NyAyMC43OTI3IDE3LjQ1MjYgMjIgMTUuNjU2MiAyMkg5Ljk2NzIxQzguODY5IDIxLjk5NzkgNy45NzkzOSAyMS4xMDMzIDcuOTc5MzkgMjBWOUg4LjMxNzM0QzguNjc0NzIgOSA5LjAwNDcgOC44MDc3MSA5LjE4MjAxIDguNDk2MTNMMTIuNTkyIDIuNTAzODZaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk01Ljk4NzYzIDlDNC4zMzc2MSA5IDMgMTAuMzQzMSAzIDEyVjE5QzMgMjAuNjU2OSA0LjMzNzYxIDIyIDUuOTg3NjMgMjJINi41MjA1NUM2LjE4MTYyIDIxLjQxMTYgNS45ODc2MyAyMC43Mjg2IDUuOTg3NjMgMjBWOVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICkgOiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTIuMTMxOCAyLjUwMzg5QzEyLjMzMjEgMi4xNTMzOCAxMi43MjM1IDEuOTU3NjggMTMuMTI0IDIuMDA3NzVMMTMuNTc3OCAyLjA2NDQ3QzE2LjA0NDkgMi4zNzI4NiAxNy42MzYgNC44MzM1MyAxNi45MDQ4IDcuMjA5OTNMMTYuMzU0IDguOTk5OTlIMTcuMDcyMkMxOS43MDk3IDguOTk5OTkgMjEuNjI1MyAxMS41MDc5IDIwLjkzMTMgMTQuMDUyNUwxOS41Njc3IDE5LjA1MjVDMTkuMDkzMSAyMC43OTI3IDE3LjUxMjQgMjIgMTUuNzA4NiAyMkg2QzQuMzQzMTUgMjIgMyAyMC42NTY4IDMgMTlWMTJDMyAxMC4zNDMxIDQuMzQzMTUgOC45OTk5OSA2IDguOTk5OTlIOEM4LjI1OTUyIDguOTk5OTkgOC40OTkxNCA4Ljg2MDk0IDguNjI3OSA4LjYzNTYxTDEyLjEzMTggMi41MDM4OVpNMTAgMjBIMTUuNzA4NkMxNi42MTA1IDIwIDE3LjQwMDggMTkuMzk2NCAxNy42MzgxIDE4LjUyNjJMMTkuMDAxOCAxMy41MjYyQzE5LjM0ODggMTIuMjUzOSAxOC4zOTEgMTEgMTcuMDcyMiAxMUgxNUMxNC42ODI3IDExIDE0LjM4NDEgMTAuODQ5NCAxNC4xOTU2IDEwLjU5NDFDMTQuMDA3MSAxMC4zMzg4IDEzLjk1MDkgMTAuMDA5MiAxNC4wNDQyIDkuNzA1OTFMMTQuOTkzMiA2LjYyMTc1QzE1LjMzODQgNS40OTk4NCAxNC42NDg0IDQuMzQwMzYgMTMuNTMxOSA0LjA4NDY4TDEwLjM2NDQgOS42Mjc4OUMxMC4wNTIyIDEwLjE3NDIgOS41NjY5MSAxMC41ODU5IDkgMTAuODA5OFYxOUM5IDE5LjU1MjMgOS40NDc3MiAyMCAxMCAyMFpNNyAxMVYxOUM3IDE5LjM1MDYgNy4wNjAxNSAxOS42ODcyIDcuMTcwNzEgMjBINkM1LjQ0NzcyIDIwIDUgMTkuNTUyMyA1IDE5VjEyQzUgMTEuNDQ3NyA1LjQ0NzcyIDExIDYgMTFIN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaHVtYkRvd25JY29uKHsgY2xhc3NOYW1lID0gJycsIHNpemUgPSAnMWVtJywgYm9sZCA9IGZhbHNlIH0pIHtcbiAgcmV0dXJuIGJvbGQgPyAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICB3aWR0aD17c2l6ZX1cbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTEuNDA3OSAyMS40OTYxQzExLjE5NTMgMjEuODY5OCAxMC43NjgzIDIyLjA2NDkgMTAuMzQ4IDIxLjk4MDVDOC40MzczIDIxLjU5NjggNy4yNzU0MSAxOS42MzkxIDcuODQ4NDQgMTcuNzY5MUw4LjY5Njk3IDE0Ljk5OTlMNi45ODU3NyAxNC45OTk5QzQuMzU5MTUgMTQuOTk5OSAyLjQ1MTUxIDEyLjQ5MiAzLjE0MjYyIDkuOTQ3NDdMNC41MDA2MyA0Ljk0NzQ3QzQuOTczMjkgMy4yMDcyMiA2LjU0NzQxIDEuOTk5OTQgOC4zNDM3OCAxLjk5OTk0SDE0LjAzMjhDMTUuMTMxIDIuMDAyMDcgMTYuMDIwNiAyLjg5NjY4IDE2LjAyMDYgMy45OTk5NFYxNC45OTk5SDE1LjY4MjdDMTUuMzI1MyAxNC45OTk5IDE0Ljk5NTMgMTUuMTkyMiAxNC44MTggMTUuNTAzOEwxMS40MDc5IDIxLjQ5NjFaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOC4wMTI0IDE0Ljk5OTlDMTkuNjYyNCAxNC45OTk5IDIxIDEzLjY1NjggMjEgMTEuOTk5OVY0Ljk5OTk0QzIxIDMuMzQzMDggMTkuNjYyNCAxLjk5OTk0IDE4LjAxMjQgMS45OTk5NEgxNy40Nzk0QzE3LjgxODQgMi41ODgyOSAxOC4wMTI0IDMuMjcxMzYgMTguMDEyNCAzLjk5OTk0VjE0Ljk5OTlaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApIDogKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgaGVpZ2h0PXtzaXplfVxuICAgICAgd2lkdGg9e3NpemV9XG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTExLjg3MjcgMjEuNDk2MUMxMS42NzI1IDIxLjg0NjYgMTEuMjgxMSAyMi4wNDIzIDEwLjg4MDUgMjEuOTkyMkwxMC40MjY3IDIxLjkzNTVDNy45NTk1OCAyMS42MjcxIDYuMzY4NTUgMTkuMTY2NSA3LjA5OTc1IDE2Ljc5MDFMNy42NTA1NCAxNUg2LjkzMjI2QzQuMjk0NzYgMTUgMi4zNzkyMyAxMi40OTIxIDMuMDczMiA5Ljk0NzUzTDQuNDM2ODQgNC45NDc1M0M0LjkxMTQ1IDMuMjA3MjggNi40OTIwOSAyIDguMjk1ODkgMkgxOC4wMDQ1QzE5LjY2MTQgMiAyMS4wMDQ1IDMuMzQzMTUgMjEuMDA0NSA1VjEyQzIxLjAwNDUgMTMuNjU2OSAxOS42NjE0IDE1IDE4LjAwNDUgMTVIMTYuMDA0NUMxNS43NDUgMTUgMTUuNTA1NCAxNS4xMzkxIDE1LjM3NjYgMTUuMzY0NEwxMS44NzI3IDIxLjQ5NjFaTTE0LjAwNDUgNEg4LjI5NTg5QzcuMzkzOTkgNCA2LjYwMzY3IDQuNjAzNjQgNi4zNjYzNyA1LjQ3Mzc2TDUuMDAyNzMgMTAuNDczOEM0LjY1NTc0IDExLjc0NiA1LjYxMzUxIDEzIDYuOTMyMjYgMTNIOS4wMDQ1MUM5LjMyMTg1IDEzIDkuNjIwMzYgMTMuMTUwNiA5LjgwODkgMTMuNDA1OUM5Ljk5NzQzIDEzLjY2MTIgMTAuMDUzNiAxMy45OTA4IDkuOTYwMjggMTQuMjk0MUw5LjAxMTMxIDE3LjM3ODJDOC42NjYxIDE4LjUwMDIgOS4zNTYwOCAxOS42NTk2IDEwLjQ3MjYgMTkuOTE1M0wxMy42NDAxIDE0LjM3MjFDMTMuOTUyMyAxMy44MjU4IDE0LjQzNzYgMTMuNDE0MSAxNS4wMDQ1IDEzLjE5MDJWNUMxNS4wMDQ1IDQuNDQ3NzIgMTQuNTU2OCA0IDE0LjAwNDUgNFpNMTcuMDA0NSAxM1Y1QzE3LjAwNDUgNC42NDkzNyAxNi45NDQ0IDQuMzEyNzggMTYuODMzOCA0SDE4LjAwNDVDMTguNTU2OCA0IDE5LjAwNDUgNC40NDc3MiAxOS4wMDQ1IDVWMTJDMTkuMDA0NSAxMi41NTIzIDE4LjU1NjggMTMgMTguMDA0NSAxM0gxNy4wMDQ1WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFhBSWNvbih7IGNsYXNzTmFtZSA9ICcnIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgPlxuICAgICAgPHBhdGggZD1cIm0zLjAwNSA4Ljg1OCA4Ljc4MyAxMi41NDRoMy45MDRMNi45MDggOC44NTh6TTYuOTA1IDE1LjgyNSAzIDIxLjQwMmgzLjkwN2wxLjk1MS0yLjc4OHpNMTYuNTg1IDJsLTYuNzUgOS42NCAxLjk1MyAyLjc5TDIwLjQ5MiAyek0xNy4yOTIgNy45NjV2MTMuNDM3aDMuMlYzLjM5NXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZXJzb25hbGl6YXRpb25JY29uKHsgY2xhc3NOYW1lID0gJycgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17YGljb24tc20gJHtjbGFzc05hbWV9YH1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMiA0QzEwLjM0MzEgNCA5IDUuMzQzMTUgOSA3QzkgOC42NTY4NSAxMC4zNDMxIDEwIDEyIDEwQzEzLjY1NjkgMTAgMTUgOC42NTY4NSAxNSA3QzE1IDUuMzQzMTUgMTMuNjU2OSA0IDEyIDRaTTcgN0M3IDQuMjM4NTggOS4yMzg1OCAyIDEyIDJDMTQuNzYxNCAyIDE3IDQuMjM4NTggMTcgN0MxNyA5Ljc2MTQyIDE0Ljc2MTQgMTIgMTIgMTJDOS4yMzg1OCAxMiA3IDkuNzYxNDIgNyA3Wk0xOS4wMjc3IDE1LjYyNTVDMTguNjg1OSAxNS41NjQ2IDE4LjE5NDEgMTUuNjUzNCAxNy42ODIgMTYuMTgyOUMxNy40OTM2IDE2LjM3NzcgMTcuMjM0MiAxNi40ODc3IDE2Ljk2MzIgMTYuNDg3N0MxNi42OTIyIDE2LjQ4NzcgMTYuNDMyOCAxNi4zNzc3IDE2LjI0NDQgMTYuMTgyOUMxNS43MzIyIDE1LjY1MzQgMTUuMjQwNSAxNS41NjQ2IDE0Ljg5ODcgMTUuNjI1NUMxNC41MzgxIDE1LjY4OTcgMTQuMjE3OSAxNS45Mzg0IDE0LjA2MjMgMTYuMzI3NUMxMy44MDQ4IDE2Ljk3MTMgMTMuOTAxNCAxOC42NjIgMTYuOTYzMiAyMC40NjE3QzIwLjAyNDkgMTguNjYyIDIwLjEyMTYgMTYuOTcxMyAxOS44NjQgMTYuMzI3NUMxOS43MDg0IDE1LjkzODQgMTkuMzg4MiAxNS42ODk3IDE5LjAyNzcgMTUuNjI1NVpNMjEuNzIxIDE1LjU4NDdDMjIuNTc0OCAxNy43MTkxIDIxLjI2NTQgMjAuNDI5IDE3LjQzNyAyMi40ODkyQzE3LjE0MTIgMjIuNjQ4NCAxNi43ODUyIDIyLjY0ODQgMTYuNDg5MyAyMi40ODkyQzEyLjY2MDkgMjAuNDI5MSAxMS4zNTE2IDE3LjcxOTEgMTIuMjA1MyAxNS41ODQ3QzEyLjYxMTcgMTQuNTY4OSAxMy40OTE3IDEzLjg0NDYgMTQuNTQ4MSAxMy42NTY1QzE1LjM1NjcgMTMuNTEyNSAxNi4yMDMyIDEzLjY5MTUgMTYuOTYzMiAxNC4xOTI0QzE3LjcyMzIgMTMuNjkxNSAxOC41Njk3IDEzLjUxMjUgMTkuMzc4MyAxMy42NTY1QzIwLjQzNDcgMTMuODQ0NiAyMS4zMTQ3IDE0LjU2ODkgMjEuNzIxIDE1LjU4NDdaTTkuOTI1OTcgMTQuMjA0OUMxMC4xMzQ1IDE0LjcxNjMgOS44ODkgMTUuMjk5OSA5LjM3NzYgMTUuNTA4NEM3LjA2MTMxIDE2LjQ1MyA1LjUgMTguNTgxMyA1LjUgMjAuOTk5OUM1LjUgMjEuNTUyMiA1LjA1MjI4IDIxLjk5OTkgNC41IDIxLjk5OTlDMy45NDc3MiAyMS45OTk5IDMuNSAyMS41NTIyIDMuNSAyMC45OTk5QzMuNSAxNy42Nzc3IDUuNjQxIDE0Ljg3MjMgOC42MjI0IDEzLjY1NjVDOS4xMzM4IDEzLjQ0OCA5LjcxNzQzIDEzLjY5MzUgOS45MjU5NyAxNC4yMDQ5WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1DUEljb24oeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMTk1XCJcbiAgICAgIGhlaWdodD1cIjE5NVwiXG4gICAgICB2aWV3Qm94PVwiMCAyIDE5NSAxOTVcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yNSA5Ny44NTI4TDkyLjg4MjMgMjkuOTcwNkMxMDIuMjU1IDIwLjU5OCAxMTcuNDUxIDIwLjU5OCAxMjYuODIzIDI5Ljk3MDZWMjkuOTcwNkMxMzYuMTk2IDM5LjM0MzEgMTM2LjE5NiA1NC41MzkxIDEyNi44MjMgNjMuOTExN0w3NS41NTgxIDExNS4xNzdcIlxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTc2LjI2NTMgMTE0LjQ3TDEyNi44MjMgNjMuOTExN0MxMzYuMTk2IDU0LjUzOTEgMTUxLjM5MiA1NC41MzkxIDE2MC43NjUgNjMuOTExN0wxNjEuMTE4IDY0LjI2NTJDMTcwLjQ5MSA3My42Mzc4IDE3MC40OTEgODguODMzOCAxNjEuMTE4IDk4LjIwNjNMOTkuNzI0OCAxNTkuNkM5Ni42MDA2IDE2Mi43MjQgOTYuNjAwNiAxNjcuNzg5IDk5LjcyNDggMTcwLjkxM0wxMTIuMzMxIDE4My41MlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMlwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMTJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZlY3Rvckljb24oeyBjbGFzc05hbWUgfTogeyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNy40NTk5NiAxNC4zNzVDNy40NTk5NiAxMy4zNjE2IDYuNjM4NDQgMTIuNTQgNS42MjUgMTIuNTRDNC42MTE1NiAxMi41NCAzLjc5MDA0IDEzLjM2MTYgMy43OTAwNCAxNC4zNzVDMy43OTAwNCAxNS4zODg0IDQuNjExNTYgMTYuMjEgNS42MjUgMTYuMjFDNi42Mzg0NCAxNi4yMSA3LjQ1OTk2IDE1LjM4ODQgNy40NTk5NiAxNC4zNzVaTTE2LjIxIDE0LjM3NUMxNi4yMSAxMy4zNjE2IDE1LjM4ODQgMTIuNTQgMTQuMzc1IDEyLjU0QzEzLjM2MTYgMTIuNTQgMTIuNTQgMTMuMzYxNiAxMi41NCAxNC4zNzVDMTIuNTQgMTUuMzg4NCAxMy4zNjE2IDE2LjIxIDE0LjM3NSAxNi4yMUMxNS4zODg0IDE2LjIxIDE2LjIxIDE1LjM4ODQgMTYuMjEgMTQuMzc1Wk03LjQ1OTk2IDUuNjI1QzcuNDU5OTYgNC42MTE1NiA2LjYzODQ0IDMuNzkwMDQgNS42MjUgMy43OTAwNEM0LjYxMTU2IDMuNzkwMDQgMy43OTAwNCA0LjYxMTU2IDMuNzkwMDQgNS42MjVDMy43OTAwNCA2LjYzODQ0IDQuNjExNTYgNy40NTk5NiA1LjYyNSA3LjQ1OTk2QzYuNjM4NDQgNy40NTk5NiA3LjQ1OTk2IDYuNjM4NDQgNy40NTk5NiA1LjYyNVpNMTYuMjEgNS42MjVDMTYuMjEgNC42MTE1NiAxNS4zODg0IDMuNzkwMDQgMTQuMzc1IDMuNzkwMDRDMTMuMzYxNiAzLjc5MDA0IDEyLjU0IDQuNjExNTYgMTIuNTQgNS42MjVDMTIuNTQgNi42Mzg0NCAxMy4zNjE2IDcuNDU5OTYgMTQuMzc1IDcuNDU5OTZDMTUuMzg4NCA3LjQ1OTk2IDE2LjIxIDYuNjM4NDQgMTYuMjEgNS42MjVaTTE3LjU0IDE0LjM3NUMxNy41NCAxNi4xMjMgMTYuMTIzIDE3LjU0IDE0LjM3NSAxNy41NEMxMi42MjcgMTcuNTQgMTEuMjEgMTYuMTIzIDExLjIxIDE0LjM3NUMxMS4yMSAxMi42MjcgMTIuNjI3IDExLjIxIDE0LjM3NSAxMS4yMUMxNi4xMjMgMTEuMjEgMTcuNTQgMTIuNjI3IDE3LjU0IDE0LjM3NVpNOC43OTAwNCA1LjYyNUM4Ljc5MDA0IDcuMzcyOTggNy4zNzI5OCA4Ljc5MDA0IDUuNjI1IDguNzkwMDRDMy44NzcwMiA4Ljc5MDA0IDIuNDU5OTYgNy4zNzI5OCAyLjQ1OTk2IDUuNjI1QzIuNDU5OTYgMy44NzcwMiAzLjg3NzAyIDIuNDU5OTYgNS42MjUgMi40NTk5NkM3LjM3Mjk4IDIuNDU5OTYgOC43OTAwNCAzLjg3NzAyIDguNzkwMDQgNS42MjVaTTE3LjU0IDUuNjI1QzE3LjU0IDcuMzcyOTggMTYuMTIzIDguNzkwMDQgMTQuMzc1IDguNzkwMDRDMTMuNzQxNiA4Ljc5MDA0IDEzLjE1MyA4LjYwMTczIDEyLjY1ODIgOC4yODEyNUw4LjI4MTI1IDEyLjY1ODJDOC42MDE3MyAxMy4xNTMgOC43OTAwNCAxMy43NDE2IDguNzkwMDQgMTQuMzc1QzguNzkwMDQgMTYuMTIzIDcuMzcyOTggMTcuNTQgNS42MjUgMTcuNTRDMy44NzcwMiAxNy41NCAyLjQ1OTk2IDE2LjEyMyAyLjQ1OTk2IDE0LjM3NUMyLjQ1OTk2IDEyLjYyNyAzLjg3NzAyIDExLjIxIDUuNjI1IDExLjIxQzYuMjU3OTQgMTEuMjEgNi44NDYyMyAxMS4zOTc3IDcuMzQwODIgMTEuNzE3OEwxMS43MTc4IDcuMzQwODJDMTEuMzk3NyA2Ljg0NjIzIDExLjIxIDYuMjU3OTQgMTEuMjEgNS42MjVDMTEuMjEgMy44NzcwMiAxMi42MjcgMi40NTk5NiAxNC4zNzUgMi40NTk5NkMxNi4xMjMgMi40NTk5NiAxNy41NCAzLjg3NzAyIDE3LjU0IDUuNjI1WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcXVpcmNsZVBsdXNJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBjbGFzc05hbWU9XCJ0ZXh0LTN4bFwiXG4gICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjVcIiB4Mj1cIjEyXCIgeTI9XCIxOVwiIC8+XG4gICAgICA8bGluZSB4MT1cIjVcIiB5MT1cIjEyXCIgeDI9XCIxOVwiIHkyPVwiMTJcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXVkaW9QYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk04IDE1djZcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTMgOHYyMFwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOCAxMHYxNlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMyA2djI0XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTI4IDEydjEyXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RlUGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMjEuMzMzIDIzTDI2LjMzMyAxOEwyMS4zMzMgMTNcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTQuNjY3IDEzTDkuNjY2OTkgMThMMTQuNjY3IDIzXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFRGaWxlIH0gZnJvbSAnbGlicmVjaGF0LWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEZpbGUgfSBmcm9tICd+L2NvbW1vbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpbGVJY29uKHtcbiAgZmlsZSxcbiAgZmlsZVR5cGUsXG59OiB7XG4gIGZpbGU/OiBQYXJ0aWFsPEV4dGVuZGVkRmlsZSB8IFRGaWxlPjtcbiAgZmlsZVR5cGU6IHtcbiAgICBmaWxsOiBzdHJpbmc7XG4gICAgcGF0aHM6IFJlYWN0LkZDO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG59KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDM2IDM2XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIGNsYXNzTmFtZT1cImgtMTAgdy0xMCBmbGV4LXNocmluay0wXCJcbiAgICAgIHdpZHRoPVwiMzZcIlxuICAgICAgaGVpZ2h0PVwiMzZcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cmVjdCB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjZcIiBmaWxsPXtmaWxlVHlwZS5maWxsfSAvPlxuICAgICAgeyhmaWxlPy5bJ3Byb2dyZXNzJ10gPz8gMSkgPj0gMSAmJiA8Pns8ZmlsZVR5cGUucGF0aHMgLz59PC8+fVxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmlsZVBhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE1LjVMMTguODMzIDkuNjY2NjNaXCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE4LjgzMyA5LjY2NjYzVjE1LjVIMjQuNjY2M1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hlZXRQYXRocygpIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNS41IDEwLjVIMTIuMTY2N0MxMS4yNDYyIDEwLjUgMTAuNSAxMS4yNDYyIDEwLjUgMTIuMTY2N1YxMy41VjE4TTE1LjUgMTAuNUgyMy44MzMzQzI0Ljc1MzggMTAuNSAyNS41IDExLjI0NjIgMjUuNSAxMi4xNjY3VjEzLjVWMThNMTUuNSAxMC41VjI1LjVNMTUuNSAyNS41SDE4SDIzLjgzMzNDMjQuNzUzOCAyNS41IDI1LjUgMjQuNzUzOCAyNS41IDIzLjgzMzNWMThNMTUuNSAyNS41SDEyLjE2NjdDMTEuMjQ2MiAyNS41IDEwLjUgMjQuNzUzOCAxMC41IDIzLjgzMzNWMThNMTAuNSAxOEgyNS41XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXh0UGF0aHMoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTkuNjY2MyA5LjY2NjYzSDEyLjk5OTdDMTIuNTU3NiA5LjY2NjYzIDEyLjEzMzcgOS44NDIyMiAxMS44MjEyIDEwLjE1NDhDMTEuNTA4NiAxMC40NjczIDExLjMzMyAxMC44OTEzIDExLjMzMyAxMS4zMzMzVjI0LjY2NjZDMTEuMzMzIDI1LjEwODcgMTEuNTA4NiAyNS41MzI2IDExLjgyMTIgMjUuODQ1MUMxMi4xMzM3IDI2LjE1NzcgMTIuNTU3NiAyNi4zMzMzIDEyLjk5OTcgMjYuMzMzM0gyMi45OTk3QzIzLjQ0MTcgMjYuMzMzMyAyMy44NjU2IDI2LjE1NzcgMjQuMTc4MiAyNS44NDUxQzI0LjQ5MDcgMjUuNTMyNiAyNC42NjYzIDI1LjEwODcgMjQuNjY2MyAyNC42NjY2VjE0LjY2NjZMMTkuNjY2MyA5LjY2NjYzWlwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xOS42NjcgOS42NjY2M1YxNC42NjY2SDI0LjY2N1wiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0yMS4zMzM3IDE4LjgzMzRIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTIxLjMzMzcgMjIuMTY2NkgxNC42NjdcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTYuMzMzNyAxNS41SDE1LjUwMDNIMTQuNjY3XCJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICBzdHJva2VXaWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBWaWRlb1BhdGhzKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogVmlkZW8gY29udGFpbmVyIC0gcm91bmRlZCByZWN0YW5nbGUgKG5vdCBmaWxsZWQpICovfVxuICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiByeD1cIjNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZVdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIHsvKiBQbGF5IGJ1dHRvbiAtIGNlbnRlcmVkIGFuZCBwb2ludGluZyByaWdodCAqL31cbiAgICAgIDxwYXRoIGQ9XCJNMjIgMThsLTYgNHYtOEwyMiAxOHpcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDwvPlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlUG9pbnRJY29uKHsgY2xhc3NOYW1lID0gJycgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTI0IDEzLjVxMCAxLjI0Mi0uNDc1IDIuMzMyLS40NzQgMS4wOS0xLjI4OSAxLjkwNC0uODE0LjgxNS0xLjkwNCAxLjI5LTEuMDkuNDc0LTIuMzMyLjQ3NC0uNzYyIDAtMS41MjMtLjItLjEwNi45OTctLjU1NyAxLjg1OC0uNDUxLjg2Mi0xLjE1NCAxLjQ5NC0uNzA0LjYzMy0xLjYwNi45OS0uOTAyLjM1OC0xLjkxLjM1OC0xLjA5IDAtMi4wNDUtLjQxNi0uOTU1LS40MTYtMS42NjQtMS4xMjUtLjcwOS0uNzA5LTEuMTI1LTEuNjY0UTYgMTkuODQgNiAxOC43NXEwLS4xODguMDE4LS4zNzUuMDE3LS4xODguMDQtLjM3NUguOTk3cS0uNDEgMC0uNzAzLS4yOTNUMCAxNy4wMDRWNi45OTZxMC0uNDEuMjkzLS43MDNULjk5NiA2aDMuNTRxLjE0LTEuMjc3LjcyNi0yLjM3My41ODYtMS4wOTYgMS40ODgtMS45MDRRNy42NTIuOTE0IDguODA3LjQ1NyA5Ljk2IDAgMTEuMjUgMHExLjM5NSAwIDIuNjI1LjUzM1QxNi4wMiAxLjk4cS45MTQuOTE1IDEuNDQ3IDIuMTQ1VDE4IDYuNzVxMCAuMTg4LS4wMTIuMzc1LS4wMTEuMTg4LS4wMzUuMzc1IDEuMjQyIDAgMi4zNDQuNDY5IDEuMTAxLjQ2OCAxLjkyOCAxLjI3Ny44MjYuODA5IDEuMyAxLjkwNFEyNCAxMi4yNDYgMjQgMTMuNXptLTEyLjc1LTEycS0uOTczIDAtMS44NTcuMzQtLjg4NS4zNC0xLjU3Ny45NDMtLjY5MS42MDQtMS4xNTQgMS40M1E2LjIgNS4wMzkgNi4wNiA2aDQuOTQ1cS40MSAwIC43MDMuMjkzdC4yOTMuNzAzdjQuOTQ1bC4yMS0uMDM1cS4yMTItLjc1LjYxLTEuNDI0LjM5OS0uNjczLjk0NC0xLjIxOC41NDUtLjU0NSAxLjIxMy0uOTQ0LjY2OC0uMzk4IDEuNDMtLjYxLjA5My0uNTAzLjA5My0uOTYgMC0xLjA5LS40MTYtMi4wNDUtLjQxNi0uOTU1LTEuMTI1LTEuNjY0LS43MDktLjcwOS0xLjY2NC0xLjEyNVExMi4zNCAxLjUgMTEuMjUgMS41ek02LjExNyAxNS45MDJxLjU0IDAgMS4wNi0uMTExLjUyMi0uMTExLjkzMi0uMzcuNDEtLjI1Ny42NjItLjY3OS4yNTItLjQyMi4yNTItMS4wNTUgMC0uNjMyLS4yNjMtMS4wNTQtLjI2NC0uNDIyLS42NjItLjcwMy0uMzk5LS4yODItLjg1Ni0uNDYzbC0uODU1LS4zNHEtLjM5OS0uMTU4LS42NjItLjMzNC0uMjY0LS4xNzYtLjI2NC0uNDQ1IDAtLjIuMTQtLjMyMy4xNDEtLjEyMy4zMzUtLjE5My4xOTMtLjA3LjQwNC0uMDk0LjIxLS4wMjMuMzUxLS4wMjMuNTk4IDAgMS4wNTUuMTUyLjQ1Ny4xNTMuOTUuNDU3VjguNTQzcS0uMjgyLS4wODItLjUyMi0uMTQtLjI0LS4wNi0uNDc1LS4xLS4yMzQtLjA0MS0uNDg2LS4wNTktLjI1Mi0uMDE3LS41NTctLjAxNy0uNTE1IDAtMS4wNTQuMTE3LS41NC4xMTctLjk3OS4zNzUtLjQ0LjI1OC0uNzE1LjY4LS4yNzUuNDIxLS4yNzUgMS4wMyAwIC41OTguMjYzLjk5Ny4yNjQuMzk4LjY2My42OC4zOTguMjguODU1LjQ3NGwuODU2LjM2M3EuMzk4LjE3LjY2Mi4zNTguMjYzLjE4Ny4yNjMuNDU3IDAgLjIyMi0uMTIzLjM1MS0uMTIzLjEzLS4zMS4yLS4xODguMDctLjM5My4wODctLjIwNS4wMTgtLjM2OS4wMTgtLjcwMyAwLTEuMjQ4LS4yMzQtLjU0NS0uMjM1LTEuMTA3LS42MjF2MS44NzVxMS4xOTUuNDY4IDIuNDcyLjQ2OHpNMTEuMjUgMjIuNXEuNzczIDAgMS40NTMtLjI5M3QxLjE5LS44MDNxLjUxLS41MS44MDgtMS4xOTUuMjk5LS42ODYuMjk5LTEuNDU5IDAtLjY2OC0uMjIzLTEuMjc3LS4yMjItLjYxLS42Mi0xLjA5Ni0uNC0uNDg2LS45NS0uODI2LS41NS0uMzQtMS4yMDctLjQ4djEuOTMzcTAgLjQxLS4yOTMuNzAzdC0uNzAzLjI5M0g3LjU3cS0uMDcuMzc1LS4wNy43NSAwIC43NzMuMjkzIDEuNDU5dC44MDMgMS4xOTVxLjUxLjUxIDEuMTk1LjgwMy42ODYuMjkzIDEuNDU5LjI5M3pNMTggMThxLjkyNiAwIDEuNzQ2LS4zNTIuODItLjM1MSAxLjQzNi0uOTY2LjYxNS0uNjE2Ljk2Ni0xLjQzLjM1Mi0uODE1LjM1Mi0xLjc1MiAwLS45MjYtLjM1Mi0xLjc0Ni0uMzUxLS44Mi0uOTY2LTEuNDM2LS42MTYtLjYxNS0xLjQzNi0uOTY2UTE4LjkyNiA5IDE4IDl0LTEuNzQuMzU3cS0uODE1LjM1OC0xLjQzLjk3M3QtLjk3MyAxLjQzcS0uMzU3LjgxNC0uMzU3IDEuNzQgMCAuMTI5LjAwNi4yNTh0LjAxNy4yNThxLjU1MS4yNyAxLjAyLjY1dC44MzguODU1cS4zNjkuNDc1LjYyNyAxLjAyNi4yNTguNTUuMzg3IDEuMTQ4UTE3LjE4IDE4IDE4IDE4WlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBUVXNlciB9IGZyb20gJ2xpYnJlY2hhdC1kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi9Ta2VsZXRvbic7XG5pbXBvcnQgeyB1c2VBdmF0YXIgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IFVzZXJJY29uIH0gZnJvbSAnfi9zdmdzJztcblxuZXhwb3J0IGludGVyZmFjZSBBdmF0YXJQcm9wcyB7XG4gIHVzZXI/OiBUVXNlcjtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBhbHQ/OiBzdHJpbmc7XG4gIHNob3dEZWZhdWx0V2hlbkVtcHR5PzogYm9vbGVhbjtcbn1cblxuY29uc3QgQXZhdGFyOiBSZWFjdC5GQzxBdmF0YXJQcm9wcz4gPSAoe1xuICB1c2VyLFxuICBzaXplID0gMzIsXG4gIGNsYXNzTmFtZSA9ICcnLFxuICBhbHQsXG4gIHNob3dEZWZhdWx0V2hlbkVtcHR5ID0gdHJ1ZSxcbn0pID0+IHtcbiAgY29uc3QgYXZhdGFyU3JjID0gdXNlQXZhdGFyKHVzZXIpO1xuICBjb25zdCBbaW1hZ2VMb2FkZWQsIHNldEltYWdlTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ltYWdlRXJyb3IsIHNldEltYWdlRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGF2YXRhclNlZWQgPSB1c2VNZW1vKFxuICAgICgpID0+IHVzZXI/LmF2YXRhciB8fCB1c2VyPy51c2VybmFtZSB8fCB1c2VyPy5lbWFpbCB8fCAnJyxcbiAgICBbdXNlcj8uYXZhdGFyLCB1c2VyPy51c2VybmFtZSwgdXNlcj8uZW1haWxdLFxuICApO1xuXG4gIGNvbnN0IGFsdFRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+IGFsdCB8fCBgJHt1c2VyPy5uYW1lIHx8IHVzZXI/LnVzZXJuYW1lIHx8IHVzZXI/LmVtYWlsIHx8ICcnfSdzIGF2YXRhcmAsXG4gICAgW2FsdCwgdXNlcj8ubmFtZSwgdXNlcj8udXNlcm5hbWUsIHVzZXI/LmVtYWlsXSxcbiAgKTtcblxuICBjb25zdCBpbWFnZVNyYyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYXZhdGFyU2VlZCB8fCBpbWFnZUVycm9yKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuICh1c2VyPy5hdmF0YXIgPz8gJycpIHx8IGF2YXRhclNyYyB8fCAnJztcbiAgfSwgW3VzZXI/LmF2YXRhciwgYXZhdGFyU3JjLCBhdmF0YXJTZWVkLCBpbWFnZUVycm9yXSk7XG5cbiAgY29uc3QgaGFuZGxlSW1hZ2VMb2FkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEltYWdlTG9hZGVkKHRydWUpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgaGFuZGxlSW1hZ2VFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJbWFnZUVycm9yKHRydWUpO1xuICAgIHNldEltYWdlTG9hZGVkKGZhbHNlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IERlZmF1bHRBdmF0YXIgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiKDEyMSwgMTM3LCAyNTUpJyxcbiAgICAgICAgICB3aWR0aDogYCR7c2l6ZX1weGAsXG4gICAgICAgICAgaGVpZ2h0OiBgJHtzaXplfXB4YCxcbiAgICAgICAgICBib3hTaGFkb3c6ICdyZ2JhKDI0MCwgMjQ2LCAyNTIsIDAuMSkgMHB4IDBweCAwcHggMXB4JyxcbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIHAtMSB0ZXh0LXRleHQtcHJpbWFyeSAke2NsYXNzTmFtZX1gfVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8VXNlckljb24gLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gICAgW3NpemUsIGNsYXNzTmFtZV0sXG4gICk7XG5cbiAgaWYgKGF2YXRhclNlZWQubGVuZ3RoID09PSAwICYmIHNob3dEZWZhdWx0V2hlbkVtcHR5KSB7XG4gICAgcmV0dXJuIDxEZWZhdWx0QXZhdGFyIC8+O1xuICB9XG5cbiAgaWYgKGF2YXRhclNlZWQubGVuZ3RoID4gMCAmJiAhaW1hZ2VFcnJvcikge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCIgc3R5bGU9e3sgd2lkdGg6IGAke3NpemV9cHhgLCBoZWlnaHQ6IGAke3NpemV9cHhgIH19PlxuICAgICAgICB7IWltYWdlTG9hZGVkICYmIChcbiAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicm91bmRlZC1mdWxsXCIgc3R5bGU9e3sgd2lkdGg6IGAke3NpemV9cHhgLCBoZWlnaHQ6IGAke3NpemV9cHhgIH19IC8+XG4gICAgICAgICl9XG5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICB3aWR0aDogYCR7c2l6ZX1weGAsXG4gICAgICAgICAgICBoZWlnaHQ6IGAke3NpemV9cHhgLFxuICAgICAgICAgICAgZGlzcGxheTogaW1hZ2VMb2FkZWQgPyAnYmxvY2snIDogJ25vbmUnLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1mdWxsICR7Y2xhc3NOYW1lfWB9XG4gICAgICAgICAgc3JjPXtpbWFnZVNyY31cbiAgICAgICAgICBhbHQ9e2FsdFRleHR9XG4gICAgICAgICAgb25Mb2FkPXtoYW5kbGVJbWFnZUxvYWR9XG4gICAgICAgICAgb25FcnJvcj17aGFuZGxlSW1hZ2VFcnJvcn1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAoaW1hZ2VFcnJvciAmJiBzaG93RGVmYXVsdFdoZW5FbXB0eSkge1xuICAgIHJldHVybiA8RGVmYXVsdEF2YXRhciAvPjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXZhdGFyO1xuIiwiaW1wb3J0IHsgc3RhcnRUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VhcmNoIGFzIFNlYXJjaEljb24gfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0ICogYXMgUmFkaXhTZWxlY3QgZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyBDaGVja0ljb24sIENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pY29ucyc7XG5pbXBvcnQge1xuICBDb21ib2JveCxcbiAgQ29tYm9ib3hJdGVtLFxuICBDb21ib2JveExpc3QsXG4gIENvbWJvYm94UHJvdmlkZXIsXG4gIENvbWJvYm94Q2FuY2VsLFxufSBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbldpdGhJY29uIH0gZnJvbSAnfi9jb21tb24nO1xuaW1wb3J0IHsgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUsIFNlbGVjdFNjcm9sbERvd25CdXR0b24gfSBmcm9tICcuL1NlbGVjdCc7XG5pbXBvcnQgeyB1c2VDb21ib2JveCB9IGZyb20gJ34vaG9va3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29tYm9ib3hDb21wb25lbnQoe1xuICBzZWxlY3RlZFZhbHVlLFxuICBkaXNwbGF5VmFsdWUsXG4gIGl0ZW1zLFxuICBzZXRWYWx1ZSxcbiAgYXJpYUxhYmVsLFxuICBzZWFyY2hQbGFjZWhvbGRlcixcbiAgc2VsZWN0UGxhY2Vob2xkZXIsXG4gIGlzQ29sbGFwc2VkLFxuICBTZWxlY3RJY29uLFxufToge1xuICBhcmlhTGFiZWw6IHN0cmluZztcbiAgZGlzcGxheVZhbHVlPzogc3RyaW5nO1xuICBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XG4gIHNlYXJjaFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBzZWxlY3RQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaXRlbXM6IE9wdGlvbldpdGhJY29uW10gfCBzdHJpbmdbXTtcbiAgc2V0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgU2VsZWN0SWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3Qgb3B0aW9uczogT3B0aW9uV2l0aEljb25bXSA9IChpdGVtcyA/PyBbXSkubWFwKChvcHRpb246IHN0cmluZyB8IE9wdGlvbldpdGhJY29uKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4geyBsYWJlbDogb3B0aW9uLCB2YWx1ZTogb3B0aW9uIH07XG4gICAgfVxuICAgIHJldHVybiBvcHRpb247XG4gIH0pO1xuXG4gIGNvbnN0IHsgb3Blbiwgc2V0T3Blbiwgc2V0U2VhcmNoVmFsdWUsIG1hdGNoZXMgfSA9IHVzZUNvbWJvYm94KHtcbiAgICB2YWx1ZTogc2VsZWN0ZWRWYWx1ZSxcbiAgICBvcHRpb25zLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxSYWRpeFNlbGVjdC5Sb290XG4gICAgICB2YWx1ZT17c2VsZWN0ZWRWYWx1ZX1cbiAgICAgIG9uVmFsdWVDaGFuZ2U9e3NldFZhbHVlfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIC8qKiBIYWNreSBmaXggZm9yIHJhZGl4LXVpIEFuZHJvaWQgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpeC11aS9wcmltaXRpdmVzL2lzc3Vlcy8xNjU4ICAqL1xuICAgICAgb25PcGVuQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgIGlmIChvcGVuID09PSB0cnVlKSB7XG4gICAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldE9wZW4oIW9wZW4pO1xuICAgICAgICB9LCA3NSk7XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDb21ib2JveFByb3ZpZGVyXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIHNldE9wZW49e3NldE9wZW59XG4gICAgICAgIHJlc2V0VmFsdWVPbkhpZGVcbiAgICAgICAgaW5jbHVkZXNCYXNlRWxlbWVudD17ZmFsc2V9XG4gICAgICAgIHNldFZhbHVlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2VhcmNoVmFsdWUodmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8U2VsZWN0VHJpZ2dlclxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGdhcC0yIFsmPnNwYW5dOmxpbmUtY2xhbXAtMSBbJj5zcGFuXTpmbGV4IFsmPnNwYW5dOnctZnVsbCBbJj5zcGFuXTppdGVtcy1jZW50ZXIgWyY+c3Bhbl06Z2FwLTEgWyY+c3Bhbl06dHJ1bmNhdGUgWyZfc3ZnXTpoLTQgWyZfc3ZnXTp3LTQgWyZfc3ZnXTpzaHJpbmstMCcsXG4gICAgICAgICAgICBpc0NvbGxhcHNlZFxuICAgICAgICAgICAgICA/ICdmbGV4IGgtOSB3LTkgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMCBbJj5zcGFuXTp3LWF1dG8gWyY+c3ZnXTpoaWRkZW4nXG4gICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAnYmctd2hpdGUgdGV4dC1ibGFjayBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1ncmF5LTUwMCBkYXJrOmJnLWdyYXktODUwIGRhcms6dGV4dC13aGl0ZScsXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj17c2VsZWN0UGxhY2Vob2xkZXJ9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhc3Npc3RhbnQtaXRlbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsXCI+XG4gICAgICAgICAgICAgIHtTZWxlY3RJY29uID8gU2VsZWN0SWNvbiA6IDxDaGV2cm9uRG93bkljb24gLz59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ21sLTInLCBpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJycpfVxuICAgICAgICAgICAgICBzdHlsZT17eyB1c2VyU2VsZWN0OiAnbm9uZScgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVcbiAgICAgICAgICAgICAgICA/IChkaXNwbGF5VmFsdWUgPz8gc2VsZWN0ZWRWYWx1ZSlcbiAgICAgICAgICAgICAgICA6IHNlbGVjdFBsYWNlaG9sZGVyICYmIHNlbGVjdFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvU2VsZWN0VmFsdWU+XG4gICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgPFJhZGl4U2VsZWN0LlBvcnRhbD5cbiAgICAgICAgICA8UmFkaXhTZWxlY3QuQ29udGVudFxuICAgICAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWwgKyAncyd9XG4gICAgICAgICAgICBwb3NpdGlvbj1cInBvcHBlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAnYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCByZWxhdGl2ZSB6LTQwIG1heC1oLVs1MnZoXSBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBzaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yIGRhcms6Ym9yZGVyLWdyYXktNjAwJyxcbiAgICAgICAgICAgICAgJ2RhdGEtW3NpZGU9Ym90dG9tXTp0cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06LXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06dHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06LXRyYW5zbGF0ZS15LTEnLFxuICAgICAgICAgICAgICAnYmctd2hpdGUgZGFyazpiZy1ncmF5LTcwMCcsXG4gICAgICAgICAgICApfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSYWRpeFNlbGVjdC5WaWV3cG9ydCBjbGFzc05hbWU9XCJtYi01IGgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHctZnVsbCBtaW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyb3VwIHN0aWNreSBsZWZ0LTAgdG9wLTAgei0xMCBmbGV4IGgtMTIgaXRlbXMtY2VudGVyIGdhcC0yIGJnLXdoaXRlIHB4LTMgcHktMiB0ZXh0LWJsYWNrIGR1cmF0aW9uLTMwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ncmF5LTUwMCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0zMDAgZGFyazpncm91cC1mb2N1cy13aXRoaW46dGV4dC1ncmF5LTMwMCBkYXJrOmdyb3VwLWhvdmVyOnRleHQtZ3JheS0zMDBcIiAvPlxuICAgICAgICAgICAgICAgIDxDb21ib2JveFxuICAgICAgICAgICAgICAgICAgYXV0b1NlbGVjdFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIHJvdW5kZWQtbWQgYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcHgtMi41IHB5LTIgdGV4dC1zbSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctZ3JheS03MDAvMTAgZGFyazpmb2N1czpyaW5nLWdyYXktMjAwLzEwXCJcbiAgICAgICAgICAgICAgICAgIC8vIEFyaWFraXQncyBDb21ib2JveCBtYW51YWxseSB0cmlnZ2VycyBhIGJsdXIgZXZlbnQgb24gdmlydHVhbGx5XG4gICAgICAgICAgICAgICAgICAvLyBibHVycmVkIGl0ZW1zLCBtYWtpbmcgdGhlbSB3b3JrIGFzIGlmIHRoZXkgaGFkIGFjdHVhbCBET01cbiAgICAgICAgICAgICAgICAgIC8vIGZvY3VzLiBUaGVzZSBibHVyIGV2ZW50cyBtaWdodCBoYXBwZW4gYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgICAgIC8vIGZvY3VzIGV2ZW50cyBpbiB0aGUgY2FwdHVyZSBwaGFzZSwgbGVhZGluZyBSYWRpeCBTZWxlY3QgdG9cbiAgICAgICAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBwb3BvdmVyLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSBSYWRpeCBTZWxlY3QgcmVsaWVzIG9uXG4gICAgICAgICAgICAgICAgICAvLyB0aGUgb3JkZXIgb2YgdGhlc2UgY2FwdHVyZWQgZXZlbnRzIHRvIGRpc2Nlcm4gaWYgdGhlIGZvY3VzIHdhc1xuICAgICAgICAgICAgICAgICAgLy8gb3V0c2lkZSB0aGUgZWxlbWVudC4gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAvLyBvbkludGVyYWN0T3V0c2lkZSBwcm9wIGluIHRoZSBSYWRpeCBTZWxlY3RDb250ZW50IGNvbXBvbmVudCB0b1xuICAgICAgICAgICAgICAgICAgLy8gc3RvcCB0aGlzIGJlaGF2aW9yLCB3ZSBjYW4gdHVybiBvZmYgQXJpYWtpdCdzIGJlaGF2aW9yIGhlcmUuXG4gICAgICAgICAgICAgICAgICBvbkJsdXJDYXB0dXJlPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPENvbWJvYm94Q2FuY2VsXG4gICAgICAgICAgICAgICAgICBoaWRlV2hlbkVtcHR5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleCBoLTUgdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCB0ZXh0LWdyYXktNTAwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCBkYXJrOmdyb3VwLWZvY3VzLXdpdGhpbjp0ZXh0LWdyYXktMzAwIGRhcms6Z3JvdXAtaG92ZXI6dGV4dC1ncmF5LTMwMFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxDb21ib2JveExpc3QgY2xhc3NOYW1lPVwib3ZlcmZsb3cteS1hdXRvIHAtMSBweS0yXCI+XG4gICAgICAgICAgICAgICAge21hdGNoZXMubWFwKCh7IGxhYmVsLCB2YWx1ZSwgaWNvbiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8UmFkaXhTZWxlY3QuSXRlbSBrZXk9e3ZhbHVlfSB2YWx1ZT17YCR7dmFsdWUgPz8gJyd9YH0gYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgICAgPENvbWJvYm94SXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIHJvdW5kZWQtc20gcHktMS41IHBsLTIgcHItOCB0ZXh0LXNtIG91dGxpbmUtbm9uZSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm91bmRlZC1sZyBob3ZlcjpiZy1ncmF5LTEwMC81MCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwJyxcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIC8qKiBIYWNreSBmaXggZm9yIHJhZGl4LXVpIEFuZHJvaWQgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpeC11aS9wcmltaXRpdmVzL2lzc3Vlcy8xNjU4ICAqL1xuICAgICAgICAgICAgICAgICAgICAgIG9uVG91Y2hFbmQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGAke3ZhbHVlID8/ICcnfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTIgZmxleCBoLTMuNSB3LTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpeFNlbGVjdC5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9SYWRpeFNlbGVjdC5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UmFkaXhTZWxlY3QuSXRlbVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0zIGRhcms6dGV4dC13aGl0ZSBbJl9zdmddOmgtNCBbJl9zdmddOnctNCBbJl9zdmddOnNocmluay0wIFsmX3N2Z106dGV4dC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzaXN0YW50LWl0ZW0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpY29uICYmIGljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1JhZGl4U2VsZWN0Lkl0ZW1UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L0NvbWJvYm94SXRlbT5cbiAgICAgICAgICAgICAgICAgIDwvUmFkaXhTZWxlY3QuSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9Db21ib2JveExpc3Q+XG4gICAgICAgICAgICA8L1JhZGl4U2VsZWN0LlZpZXdwb3J0PlxuICAgICAgICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTBcIiAvPlxuICAgICAgICAgIDwvUmFkaXhTZWxlY3QuQ29udGVudD5cbiAgICAgICAgPC9SYWRpeFNlbGVjdC5Qb3J0YWw+XG4gICAgICA8L0NvbWJvYm94UHJvdmlkZXI+XG4gICAgPC9SYWRpeFNlbGVjdC5Sb290PlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFNlbGVjdCBmcm9tICdAYXJpYWtpdC9yZWFjdC9zZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBPcHRpb24gfSBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcbmltcG9ydCAnLi9Ecm9wZG93bi5jc3MnO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25Qcm9wcyB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvcHRpb25zOiAoc3RyaW5nIHwgT3B0aW9uIHwgeyBkaXZpZGVyOiB0cnVlIH0pW107XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc2l6ZUNsYXNzZXM/OiBzdHJpbmc7XG4gIHRlc3RJZD86IHN0cmluZztcbiAgaWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgaWNvbk9ubHk/OiBib29sZWFuO1xuICByZW5kZXJWYWx1ZT86IChvcHRpb246IE9wdGlvbikgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gICdhcmlhLWxhYmVsbGVkYnknPzogc3RyaW5nO1xuICBwb3J0YWw/OiBib29sZWFuO1xufVxuXG5jb25zdCBpc0RpdmlkZXIgPSAoaXRlbTogc3RyaW5nIHwgT3B0aW9uIHwgeyBkaXZpZGVyOiB0cnVlIH0pOiBpdGVtIGlzIHsgZGl2aWRlcjogdHJ1ZSB9ID0+XG4gIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAnZGl2aWRlcicgaW4gaXRlbTtcblxuY29uc3QgaXNPcHRpb24gPSAoaXRlbTogc3RyaW5nIHwgT3B0aW9uIHwgeyBkaXZpZGVyOiB0cnVlIH0pOiBpdGVtIGlzIE9wdGlvbiA9PlxuICB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBpdGVtICYmICdsYWJlbCcgaW4gaXRlbTtcblxuY29uc3QgRHJvcGRvd246IFJlYWN0LkZDPERyb3Bkb3duUHJvcHM+ID0gKHtcbiAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gIGxhYmVsID0gJycsXG4gIG9uQ2hhbmdlLFxuICBvcHRpb25zLFxuICBjbGFzc05hbWUgPSAnJyxcbiAgc2l6ZUNsYXNzZXMsXG4gIHRlc3RJZCA9ICdkcm9wZG93bi1tZW51JyxcbiAgaWNvbixcbiAgaWNvbk9ubHkgPSBmYWxzZSxcbiAgcmVuZGVyVmFsdWUsXG4gIGFyaWFMYWJlbCxcbiAgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LFxuICBwb3J0YWwgPSB0cnVlLFxufSkgPT4ge1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBzZWxlY3RQcm9wcyA9IFNlbGVjdC51c2VTZWxlY3RTdG9yZSh7XG4gICAgdmFsdWU6IHNlbGVjdGVkVmFsdWUsXG4gICAgc2V0VmFsdWU6IGhhbmRsZUNoYW5nZSxcbiAgfSk7XG5cbiAgY29uc3QgZ2V0T3B0aW9uT2JqZWN0ID0gKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkKTogT3B0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAodmFsID09IG51bGwgfHwgdmFsID09PSAnJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgICAgIC5maWx0ZXIoKG8pID0+ICFpc0RpdmlkZXIobykpXG4gICAgICAubWFwKChvKSA9PiAodHlwZW9mIG8gPT09ICdzdHJpbmcnID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG8pKVxuICAgICAgLmZpbmQoKG8pID0+IGlzT3B0aW9uKG8pICYmIG8udmFsdWUgPT09IHZhbCkgYXMgT3B0aW9uIHwgdW5kZWZpbmVkO1xuICB9O1xuXG4gIGNvbnN0IGdldE9wdGlvbkxhYmVsID0gKGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBudWxsIHx8IGN1cnJlbnRWYWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9uID0gZ2V0T3B0aW9uT2JqZWN0KGN1cnJlbnRWYWx1ZSk7XG4gICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IGN1cnJlbnRWYWx1ZTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbigncmVsYXRpdmUnLCBjbGFzc05hbWUpfT5cbiAgICAgIDxTZWxlY3QuU2VsZWN0XG4gICAgICAgIHN0b3JlPXtzZWxlY3RQcm9wc31cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnZm9jdXM6cmluZy1vZmZzZXQtcmluZy1vZmZzZXQgcmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCBweC0zIHB5LTIgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXQgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQgZm9jdXM6cmluZy1yaW5nLXByaW1hcnknLFxuICAgICAgICAgIGljb25Pbmx5ID8gJ2gtZnVsbCB3LTEwJyA6ICd3LWZpdCBnYXAtMicsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICBkYXRhLXRlc3RpZD17dGVzdElkfVxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT17YXJpYUxhYmVsbGVkQnl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAgeyFpY29uT25seSAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJibG9jayB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb24gPSBnZXRPcHRpb25PYmplY3Qoc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRPcHRpb24gJiYgcmVuZGVyVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJWYWx1ZShtYXRjaGVkT3B0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE9wdGlvbkxhYmVsKHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7IWljb25Pbmx5ICYmIDxTZWxlY3QuU2VsZWN0QXJyb3cgLz59XG4gICAgICA8L1NlbGVjdC5TZWxlY3Q+XG4gICAgICA8U2VsZWN0LlNlbGVjdFBvcG92ZXJcbiAgICAgICAgcG9ydGFsPXtwb3J0YWx9XG4gICAgICAgIHN0b3JlPXtzZWxlY3RQcm9wc31cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncG9wb3Zlci11aSB6LTQwJyxcbiAgICAgICAgICBzaXplQ2xhc3NlcyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgJ21heC1oLVs4MHZoXSBvdmVyZmxvdy15LWF1dG8nLFxuICAgICAgICAgICdbcG9pbnRlci1ldmVudHM6YXV0b10nLCAvLyBPdmVycmlkZSBib2R5J3MgcG9pbnRlci1ldmVudHM6bm9uZSB3aGVuIGluIG1vZGFsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtvcHRpb25zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoaXNEaXZpZGVyKGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2BkaXZpZGVyLSR7aW5kZXh9YH0gY2xhc3NOYW1lPVwibXktMSBib3JkZXItdCBib3JkZXItYm9yZGVyLWhlYXZ5XCIgLz47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgb3B0aW9uID0gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyB2YWx1ZTogaXRlbSwgbGFiZWw6IGl0ZW0gfSA6IGl0ZW07XG4gICAgICAgICAgaWYgKCFpc09wdGlvbihvcHRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNlbGVjdC5TZWxlY3RJdGVtXG4gICAgICAgICAgICAgIGtleT17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHZhbHVlPXtTdHJpbmcob3B0aW9uLnZhbHVlKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VsZWN0LWl0ZW1cIlxuICAgICAgICAgICAgICBkYXRhLXRoZW1lPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAge29wdGlvbi5pY29uICE9IG51bGwgJiYgPHNwYW4+e29wdGlvbi5pY29uIGFzIFJlYWN0LlJlYWN0Tm9kZX08L3NwYW4+fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJsb2NrIHRydW5jYXRlXCI+e29wdGlvbi5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWUgPT09IG9wdGlvbi52YWx1ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtbC1hdXRvIHBsLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbi1tZCBibG9jayBncm91cC1ob3ZlcjpoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMlpNMTYuMDc1NSA3LjkzMjE5QzE2LjUyNzIgOC4yNTAwMyAxNi42MzU2IDguODczODMgMTYuMzE3OCA5LjMyNTQ5TDExLjU2NzggMTYuMDc1NUMxMS4zOTMxIDE2LjMyMzcgMTEuMTE1MiAxNi40NzkyIDEwLjgxMjMgMTYuNDk4MUMxMC41MDkzIDE2LjUxNyAxMC4yMTQyIDE2LjM5NzMgMTAuMDEwMSAxNi4xNzI3TDcuNTEwMDYgMTMuNDIyN0M3LjEzODU1IDEzLjAxNCA3LjE2ODY3IDEyLjM4MTYgNy41NzczMyAxMi4wMTAxQzcuOTg1OTggMTEuNjM4NiA4LjYxODQzIDExLjY2ODcgOC45ODk5NCAxMi4wNzczTDEwLjY1MDQgMTMuOTAzOUwxNC42ODIyIDguMTc0NTFDMTUgNy43MjI4NCAxNS42MjM4IDcuNjE0MzYgMTYuMDc1NSA3LjkzMjE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvU2VsZWN0LlNlbGVjdEl0ZW0+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NlbGVjdC5TZWxlY3RQb3BvdmVyPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IFRyYW5zbGF0aW9uS2V5cywgdXNlTG9jYWxpemUgfSBmcm9tICd+L2hvb2tzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmNvbnN0IEFuaW1hdGVkU2VhcmNoSW5wdXQgPSAoe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGlzU2VhcmNoaW5nOiBzZWFyY2hpbmcsXG4gIHBsYWNlaG9sZGVyLFxufToge1xuICB2YWx1ZT86IHN0cmluZztcbiAgb25DaGFuZ2U6IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgaXNTZWFyY2hpbmc/OiBib29sZWFuO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCBpc1NlYXJjaGluZyA9IHNlYXJjaGluZyA9PT0gdHJ1ZTtcbiAgY29uc3QgaGFzVmFsdWUgPSB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICB7LyogSWNvbiBvbiB0aGUgbGVmdCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMyB0b3AtMS8yIHotNTAgLXRyYW5zbGF0ZS15LTEvMlwiPlxuICAgICAgICAgICAgPFNlYXJjaFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgIGBoLTQgdy00IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dGAsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hpbmcgJiYgaGFzVmFsdWUgPyAndGV4dC1ibHVlLTQwMCcgOiAndGV4dC1ncmF5LTUwMCcsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIElucHV0IGZpZWxkICovfVxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17bG9jYWxpemUoJ2NvbV91aV9zZWFyY2gnKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHBlZXIgcmVsYXRpdmUgei0yMCB3LWZ1bGwgcm91bmRlZC1sZyBiZy1zdXJmYWNlLXNlY29uZGFyeSBweS0yIHBsLTEwIG91dGxpbmUtbm9uZSBiYWNrZHJvcC1ibHVyLXNtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCBwbGFjZWhvbGRlcjp0ZXh0LWdyYXktNTAwIGZvY3VzOnJpbmctcmluZ2B9XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHsvKiBHcmFkaWVudCBvdmVybGF5ICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMCB6LTIwIHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNTAwLzIwIHZpYS1wdXJwbGUtNTAwLzIwIHRvLWJsdWUtNTAwLzIwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ29wYWNpdHktMTAwIGJsdXItc20nIDogJ29wYWNpdHktMCBibHVyLW5vbmUnfSBgfVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7LyogQW5pbWF0ZWQgbG9hZGluZyBpbmRpY2F0b3IgKi99XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgYWJzb2x1dGUgcmlnaHQtMyB0b3AtMS8yIHotMjAgLXRyYW5zbGF0ZS15LTEvMiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdzY2FsZS0xMDAgb3BhY2l0eS0xMDAnIDogJ3NjYWxlLTAgb3BhY2l0eS0wJ30gYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtMiB3LTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGFuaW1hdGUtcGluZyByb3VuZGVkLWZ1bGwgYmctYmx1ZS01MDAvNjBcIiAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1mdWxsIGJnLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogT3V0ZXIgZ2xvdyBlZmZlY3QgKi99XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIC1pbnNldC04IC16LTEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTcwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ3NjYWxlLTEwNSBvcGFjaXR5LTEwMCcgOiAnc2NhbGUtMTAwIG9wYWNpdHktMCd9IGB9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YGJnLWdyYWRpZW50LXJhZGlhbCBhYnNvbHV0ZSBpbnNldC0wIGZyb20tYmx1ZS01MDAvMTAgdG8tdHJhbnNwYXJlbnQgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTcwMCBlYXNlLWluLW91dCAke2lzU2VhcmNoaW5nICYmIGhhc1ZhbHVlID8gJ2FuaW1hdGUtcHVsc2Utc2xvdyBvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS0wJ30gYH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS01MDAvNSB2aWEtYmx1ZS01MDAvNSB0by1wdXJwbGUtNTAwLzUgYmx1ci14bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03MDAgZWFzZS1pbi1vdXQgJHtpc1NlYXJjaGluZyAmJiBoYXNWYWx1ZSA/ICdhbmltYXRlLWdyYWRpZW50LXggb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktMCd9IGB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgYWJzb2x1dGUgaW5zZXQtMCAtei0yMCBzY2FsZS0xMDAgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNTAwLzEwIHZpYS1wdXJwbGUtNTAwLzEwIHRvLWJsdWUtNTAwLzEwIG9wYWNpdHktMCBibHVyLXhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCBwZWVyLWZvY3VzOnNjYWxlLTEwNSBwZWVyLWZvY3VzOm9wYWNpdHktMTAwYH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBbmltYXRlZFNlYXJjaElucHV0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VWaXJ0dWFsaXplciB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC12aXJ0dWFsJztcbmltcG9ydCB7XG4gIFJvdyxcbiAgQ29sdW1uRGVmLFxuICBmbGV4UmVuZGVyLFxuICBTb3J0aW5nU3RhdGUsXG4gIHVzZVJlYWN0VGFibGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgVmlzaWJpbGl0eVN0YXRlLFxuICBnZXRTb3J0ZWRSb3dNb2RlbCxcbiAgQ29sdW1uRmlsdGVyc1N0YXRlLFxuICBnZXRGaWx0ZXJlZFJvd01vZGVsLFxufSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBUYWJsZSBhcyBUVGFibGUgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnO1xuaW1wb3J0IHsgVGFibGUsIFRhYmxlUm93LCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciB9IGZyb20gJy4vVGFibGUnO1xuaW1wb3J0IHsgdXNlTWVkaWFRdWVyeSwgdXNlTG9jYWxpemUsIFRyYW5zbGF0aW9uS2V5cyB9IGZyb20gJ34vaG9va3MnO1xuaW1wb3J0IEFuaW1hdGVkU2VhcmNoSW5wdXQgZnJvbSAnLi9BbmltYXRlZFNlYXJjaElucHV0JztcbmltcG9ydCB7IFRyYXNoSWNvbiwgU3Bpbm5lciB9IGZyb20gJ34vc3Zncyc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4vU2tlbGV0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuL0NoZWNrYm94JztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4gPSBDb2x1bW5EZWY8VERhdGEsIFRWYWx1ZT4gJiB7XG4gIG1ldGE/OiB7XG4gICAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBtb2JpbGVTaXplPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIG1pbldpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xufTtcblxuY29uc3QgU2VsZWN0aW9uQ2hlY2tib3ggPSBtZW1vKFxuICAoe1xuICAgIGNoZWNrZWQsXG4gICAgb25DaGFuZ2UsXG4gICAgYXJpYUxhYmVsLFxuICB9OiB7XG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuICB9KSA9PiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICB0YWJJbmRleD17MH1cbiAgICAgIG9uS2V5RG93bj17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICBjbGFzc05hbWU9XCJmbGV4IGgtZnVsbCB3LVszMHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgPlxuICAgICAgPENoZWNrYm94IGNoZWNrZWQ9e2NoZWNrZWR9IG9uQ2hlY2tlZENoYW5nZT17b25DaGFuZ2V9IGFyaWEtbGFiZWw9e2FyaWFMYWJlbH0gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5cblNlbGVjdGlvbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gJ1NlbGVjdGlvbkNoZWNrYm94JztcblxuaW50ZXJmYWNlIERhdGFUYWJsZVByb3BzPFREYXRhLCBUVmFsdWU+IHtcbiAgY29sdW1uczogVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT5bXTtcbiAgZGF0YTogVERhdGFbXTtcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRSb3dzOiBURGF0YVtdKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBmaWx0ZXJDb2x1bW4/OiBzdHJpbmc7XG4gIGRlZmF1bHRTb3J0PzogU29ydGluZ1N0YXRlO1xuICBjb2x1bW5WaXNpYmlsaXR5TWFwPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgaXNGZXRjaGluZ05leHRQYWdlPzogYm9vbGVhbjtcbiAgaGFzTmV4dFBhZ2U/OiBib29sZWFuO1xuICBmZXRjaE5leHRQYWdlPzogKG9wdGlvbnM/OiB1bmtub3duKSA9PiBQcm9taXNlPHVua25vd24+O1xuICBlbmFibGVSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xuICBzaG93Q2hlY2tib3hlcz86IGJvb2xlYW47XG4gIG9uRmlsdGVyQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGZpbHRlclZhbHVlPzogc3RyaW5nO1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBlbmFibGVTZWFyY2g/OiBib29sZWFuO1xufVxuXG5jb25zdCBUYWJsZVJvd0NvbXBvbmVudCA9IDxURGF0YSwgVFZhbHVlPih7XG4gIHJvdyxcbiAgaXNTbWFsbFNjcmVlbixcbiAgb25TZWxlY3Rpb25DaGFuZ2UsXG4gIGluZGV4LFxuICBpc1NlYXJjaGluZyxcbn06IHtcbiAgcm93OiBSb3c8VERhdGE+O1xuICBpc1NtYWxsU2NyZWVuOiBib29sZWFuO1xuICBvblNlbGVjdGlvbkNoYW5nZT86IChyb3dJZDogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaW5kZXg6IG51bWJlcjtcbiAgaXNTZWFyY2hpbmc6IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZVNlbGVjdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgcm93LnRvZ2dsZVNlbGVjdGVkKHZhbHVlKTtcbiAgICAgIG9uU2VsZWN0aW9uQ2hhbmdlPy4ocm93LmlkLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBbcm93LCBvblNlbGVjdGlvbkNoYW5nZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVSb3dcbiAgICAgIGRhdGEtc3RhdGU9e3Jvdy5nZXRJc1NlbGVjdGVkKCkgPyAnc2VsZWN0ZWQnIDogdW5kZWZpbmVkfVxuICAgICAgY2xhc3NOYW1lPVwibW90aW9uLXNhZmU6YW5pbWF0ZS1mYWRlSW4gYm9yZGVyLWIgYm9yZGVyLWJvcmRlci1saWdodCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1vdXQgaG92ZXI6Ymctc3VyZmFjZS1zZWNvbmRhcnlcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYW5pbWF0aW9uRGVsYXk6IGAke2luZGV4ICogMjB9bXNgLFxuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKCR7aXNTZWFyY2hpbmcgPyAnNHB4JyA6ICcwJ30pYCxcbiAgICAgICAgb3BhY2l0eTogaXNTZWFyY2hpbmcgPyAwLjUgOiAxLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCkgPT4ge1xuICAgICAgICBpZiAoY2VsbC5jb2x1bW4uaWQgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUYWJsZUNlbGwga2V5PXtjZWxsLmlkfSBjbGFzc05hbWU9XCJweC0yIHB5LTEgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3Rpb25DaGVja2JveFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVNlbGVjdGlvbn1cbiAgICAgICAgICAgICAgICBhcmlhTGFiZWw9XCJTZWxlY3Qgcm93XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2VsbC5jb2x1bW4uaWQgPT09ICd0aXRsZScpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICBrZXk9e2NlbGwuaWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMCBtYXgtdy0wIHB4LTIgcHktMSBhbGlnbi1taWRkbGUgdGV4dC14cyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgc206cHgtNCBzbTpweS0yIHNtOnRleHQtc21cIlxuICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uU3R5bGUoXG4gICAgICAgICAgICAgICAgY2VsbC5jb2x1bW4uY29sdW1uRGVmIGFzIFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LFxuICAgICAgICAgICAgICAgIGlzU21hbGxTY3JlZW4sXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHNjb3BlPVwicm93XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvdmVyZmxvdy12aXNpYmxlIHRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICB7ZmxleFJlbmRlcihjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCwgY2VsbC5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgIGtleT17Y2VsbC5pZH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMCBtYXgtdy0wIG92ZXJmbG93LXZpc2libGUgcHgtMiBweS0xIGFsaWduLW1pZGRsZSB0ZXh0LXhzIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBzbTpweC00IHNtOnB5LTIgc206dGV4dC1zbVwiXG4gICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uU3R5bGUoXG4gICAgICAgICAgICAgIGNlbGwuY29sdW1uLmNvbHVtbkRlZiBhcyBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPixcbiAgICAgICAgICAgICAgaXNTbWFsbFNjcmVlbixcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvdmVyZmxvdy12aXNpYmxlIHRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAge2ZsZXhSZW5kZXIoY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwsIGNlbGwuZ2V0Q29udGV4dCgpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9UYWJsZVJvdz5cbiAgKTtcbn07XG5cbmNvbnN0IE1lbW9pemVkVGFibGVSb3cgPSBtZW1vKFRhYmxlUm93Q29tcG9uZW50KSBhcyB0eXBlb2YgVGFibGVSb3dDb21wb25lbnQ7XG5cbmZ1bmN0aW9uIGdldENvbHVtblN0eWxlPFREYXRhLCBUVmFsdWU+KFxuICBjb2x1bW46IFRhYmxlQ29sdW1uPFREYXRhLCBUVmFsdWU+LFxuICBpc1NtYWxsU2NyZWVuOiBib29sZWFuLFxuKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGlzU21hbGxTY3JlZW4gPyBjb2x1bW4ubWV0YT8ubW9iaWxlU2l6ZSA6IGNvbHVtbi5tZXRhPy5zaXplLFxuICAgIG1pbldpZHRoOiBjb2x1bW4ubWV0YT8ubWluV2lkdGgsXG4gICAgbWF4V2lkdGg6IGNvbHVtbi5tZXRhPy5zaXplLFxuICB9O1xufVxuXG5jb25zdCBEZWxldGVCdXR0b24gPSBtZW1vKFxuICAoe1xuICAgIG9uRGVsZXRlLFxuICAgIGlzRGVsZXRpbmcsXG4gICAgZGlzYWJsZWQsXG4gICAgaXNTbWFsbFNjcmVlbixcbiAgICBhcmlhTGFiZWwsXG4gIH06IHtcbiAgICBvbkRlbGV0ZT86ICgpID0+IFByb21pc2U8dm9pZD47XG4gICAgaXNEZWxldGluZzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBpc1NtYWxsU2NyZWVuOiBib29sZWFuO1xuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuICB9KSA9PiB7XG4gICAgaWYgKCFvbkRlbGV0ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgb25DbGljaz17b25EZWxldGV9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbignbWluLXctWzQwcHhdIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCcsIGlzU21hbGxTY3JlZW4gJiYgJ3B4LTIgcHktMScpfVxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICA+XG4gICAgICAgIHtpc0RlbGV0aW5nID8gKFxuICAgICAgICAgIDxTcGlubmVyIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxUcmFzaEljb24gY2xhc3NOYW1lPVwic2l6ZS0zLjUgdGV4dC1yZWQtNDAwIHNtOnNpemUtNFwiIC8+XG4gICAgICAgICAgICB7IWlzU21hbGxTY3JlZW4gJiYgPHNwYW4gY2xhc3NOYW1lPVwibWwtMlwiPkRlbGV0ZTwvc3Bhbj59XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YVRhYmxlPFREYXRhLCBUVmFsdWU+KHtcbiAgY29sdW1ucyxcbiAgZGF0YSxcbiAgb25EZWxldGUsXG4gIGZpbHRlckNvbHVtbixcbiAgZGVmYXVsdFNvcnQgPSBbXSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIGlzRmV0Y2hpbmdOZXh0UGFnZSA9IGZhbHNlLFxuICBoYXNOZXh0UGFnZSA9IGZhbHNlLFxuICBmZXRjaE5leHRQYWdlLFxuICBlbmFibGVSb3dTZWxlY3Rpb24gPSB0cnVlLFxuICBzaG93Q2hlY2tib3hlcyA9IHRydWUsXG4gIG9uRmlsdGVyQ2hhbmdlLFxuICBmaWx0ZXJWYWx1ZSxcbiAgaXNMb2FkaW5nLFxuICBlbmFibGVTZWFyY2ggPSB0cnVlLFxufTogRGF0YVRhYmxlUHJvcHM8VERhdGEsIFRWYWx1ZT4pIHtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuICBjb25zdCBpc1NtYWxsU2NyZWVuID0gdXNlTWVkaWFRdWVyeSgnKG1heC13aWR0aDogNzY4cHgpJyk7XG4gIGNvbnN0IHRhYmxlQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICBjb25zdCBbaXNEZWxldGluZywgc2V0SXNEZWxldGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyb3dTZWxlY3Rpb24sIHNldFJvd1NlbGVjdGlvbl0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuICBjb25zdCBbc29ydGluZywgc2V0U29ydGluZ10gPSB1c2VTdGF0ZTxTb3J0aW5nU3RhdGU+KGRlZmF1bHRTb3J0KTtcbiAgY29uc3QgW2NvbHVtbkZpbHRlcnMsIHNldENvbHVtbkZpbHRlcnNdID0gdXNlU3RhdGU8Q29sdW1uRmlsdGVyc1N0YXRlPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5WaXNpYmlsaXR5LCBzZXRDb2x1bW5WaXNpYmlsaXR5XSA9IHVzZVN0YXRlPFZpc2liaWxpdHlTdGF0ZT4oe30pO1xuICBjb25zdCBbc2VhcmNoVGVybSwgc2V0U2VhcmNoVGVybV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZSA/PyAnJyk7XG4gIGNvbnN0IFtpc1NlYXJjaGluZywgc2V0SXNTZWFyY2hpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudCwgc2V0U2VhcmNoUmVzdWx0c0Fubm91bmNlbWVudF0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgY29uc3QgdGFibGVDb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVSb3dTZWxlY3Rpb24gfHwgIXNob3dDaGVja2JveGVzKSB7XG4gICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0Q29sdW1uID0ge1xuICAgICAgaWQ6ICdzZWxlY3QnLFxuICAgICAgaGVhZGVyOiAoeyB0YWJsZSB9OiB7IHRhYmxlOiBUVGFibGU8VERhdGE+IH0pID0+IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtZnVsbCB3LVszMHB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZCgpfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFBhZ2VSb3dzU2VsZWN0ZWQoQm9vbGVhbih2YWx1ZSkpfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCBhbGxcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSxcbiAgICAgIGNlbGw6ICh7IHJvdyB9OiB7IHJvdzogUm93PFREYXRhPiB9KSA9PiAoXG4gICAgICAgIDxTZWxlY3Rpb25DaGVja2JveFxuICAgICAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gcm93LnRvZ2dsZVNlbGVjdGVkKHZhbHVlKX1cbiAgICAgICAgICBhcmlhTGFiZWw9XCJTZWxlY3Qgcm93XCJcbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBtZXRhOiB7IHNpemU6ICc1MHB4JyB9LFxuICAgIH07XG4gICAgcmV0dXJuIFtzZWxlY3RDb2x1bW4sIC4uLmNvbHVtbnNdO1xuICB9LCBbY29sdW1ucywgZW5hYmxlUm93U2VsZWN0aW9uLCBzaG93Q2hlY2tib3hlc10pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgZGF0YSxcbiAgICBjb2x1bW5zOiB0YWJsZUNvbHVtbnMsXG4gICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICBnZXRTb3J0ZWRSb3dNb2RlbDogZ2V0U29ydGVkUm93TW9kZWwoKSxcbiAgICBnZXRGaWx0ZXJlZFJvd01vZGVsOiBnZXRGaWx0ZXJlZFJvd01vZGVsKCksXG4gICAgZW5hYmxlUm93U2VsZWN0aW9uLFxuICAgIGVuYWJsZU11bHRpUm93U2VsZWN0aW9uOiB0cnVlLFxuICAgIHN0YXRlOiB7XG4gICAgICBzb3J0aW5nLFxuICAgICAgY29sdW1uRmlsdGVycyxcbiAgICAgIGNvbHVtblZpc2liaWxpdHksXG4gICAgICByb3dTZWxlY3Rpb24sXG4gICAgfSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6IHNldFNvcnRpbmcsXG4gICAgb25Db2x1bW5GaWx0ZXJzQ2hhbmdlOiBzZXRDb2x1bW5GaWx0ZXJzLFxuICAgIG9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZTogc2V0Q29sdW1uVmlzaWJpbGl0eSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZTogc2V0Um93U2VsZWN0aW9uLFxuICB9KTtcblxuICBjb25zdCB7IHJvd3MgfSA9IHRhYmxlLmdldFJvd01vZGVsKCk7XG5cbiAgY29uc3Qgcm93VmlydHVhbGl6ZXIgPSB1c2VWaXJ0dWFsaXplcih7XG4gICAgY291bnQ6IHJvd3MubGVuZ3RoLFxuICAgIGdldFNjcm9sbEVsZW1lbnQ6ICgpID0+IHRhYmxlQ29udGFpbmVyUmVmLmN1cnJlbnQsXG4gICAgZXN0aW1hdGVTaXplOiB1c2VDYWxsYmFjaygoKSA9PiA0OCwgW10pLFxuICAgIG92ZXJzY2FuOiAxMCxcbiAgfSk7XG5cbiAgY29uc3QgdmlydHVhbFJvd3MgPSByb3dWaXJ0dWFsaXplci5nZXRWaXJ0dWFsSXRlbXMoKTtcbiAgY29uc3QgdG90YWxTaXplID0gcm93VmlydHVhbGl6ZXIuZ2V0VG90YWxTaXplKCk7XG4gIGNvbnN0IHBhZGRpbmdUb3AgPSB2aXJ0dWFsUm93cy5sZW5ndGggPiAwID8gdmlydHVhbFJvd3NbMF0uc3RhcnQgOiAwO1xuICBjb25zdCBwYWRkaW5nQm90dG9tID1cbiAgICB2aXJ0dWFsUm93cy5sZW5ndGggPiAwID8gdG90YWxTaXplIC0gdmlydHVhbFJvd3NbdmlydHVhbFJvd3MubGVuZ3RoIC0gMV0uZW5kIDogMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0YWJsZUNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgIGlmICghc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghaGFzTmV4dFBhZ2UgfHwgaXNGZXRjaGluZ05leHRQYWdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gc2Nyb2xsRWxlbWVudDtcbiAgICAgIGlmIChzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgPD0gY2xpZW50SGVpZ2h0ICogMS41KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gU2FmZWx5IGZldGNoIG5leHQgcGFnZSB3aXRob3V0IGJyZWFraW5nIGlmIGxhc3RQYWdlIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGF3YWl0IGZldGNoTmV4dFBhZ2U/LigpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBmZXRjaCBuZXh0IHBhZ2U6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNjcm9sbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgcmV0dXJuICgpID0+IHNjcm9sbEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgfSwgW2hhc05leHRQYWdlLCBpc0ZldGNoaW5nTmV4dFBhZ2UsIGZldGNoTmV4dFBhZ2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzU2VhcmNoaW5nKHRydWUpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyQ2hhbmdlPy4oc2VhcmNoVGVybSk7XG4gICAgICBzZXRJc1NlYXJjaGluZyhmYWxzZSk7XG4gICAgfSwgMzAwKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9LCBbc2VhcmNoVGVybSwgb25GaWx0ZXJDaGFuZ2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoVGVybS50cmltKCkgfHwgaXNTZWFyY2hpbmcpIHtcbiAgICAgIHNldFNlYXJjaFJlc3VsdHNBbm5vdW5jZW1lbnQoJycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdENvdW50ID0gcm93cy5sZW5ndGg7XG4gICAgY29uc3QgYW5ub3VuY2VtZW50ID1cbiAgICAgIHJlc3VsdENvdW50ID09PSAxXG4gICAgICAgID8gbG9jYWxpemUoJ2NvbV91aV9yZXN1bHRfZm91bmQnIGFzIFRyYW5zbGF0aW9uS2V5cywge1xuICAgICAgICAgICAgY291bnQ6IHJlc3VsdENvdW50LFxuICAgICAgICAgIH0pXG4gICAgICAgIDogbG9jYWxpemUoJ2NvbV91aV9yZXN1bHRzX2ZvdW5kJyBhcyBUcmFuc2xhdGlvbktleXMsIHtcbiAgICAgICAgICAgIGNvdW50OiByZXN1bHRDb3VudCxcbiAgICAgICAgICB9KTtcblxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNlYXJjaFJlc3VsdHNBbm5vdW5jZW1lbnQoYW5ub3VuY2VtZW50KTtcbiAgICB9LCAzMDApO1xuXG4gICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgfSwgW3Jvd3MubGVuZ3RoLCBzZWFyY2hUZXJtLCBpc1NlYXJjaGluZywgbG9jYWxpemVdKTtcblxuICBjb25zdCBoYW5kbGVEZWxldGUgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFvbkRlbGV0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldElzRGVsZXRpbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGl0ZW1zVG9EZWxldGUgPSB0YWJsZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWwoKS5yb3dzLm1hcCgocikgPT4gci5vcmlnaW5hbCk7XG4gICAgICBhd2FpdCBvbkRlbGV0ZShpdGVtc1RvRGVsZXRlKTtcbiAgICAgIHNldFJvd1NlbGVjdGlvbih7fSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzRGVsZXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSwgW29uRGVsZXRlLCB0YWJsZV0pO1xuXG4gIGNvbnN0IGdldFJhbmRvbVdpZHRoID0gKCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDQxMCAtIDE3MCArIDEpKSArIDE3MDtcblxuICBjb25zdCBza2VsZXRvbnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMyB9LCAoXywgaW5kZXgpID0+IHtcbiAgICBjb25zdCByYW5kb21XaWR0aCA9IGdldFJhbmRvbVdpZHRoKCk7XG4gICAgY29uc3QgZmlyc3REYXRhQ29sdW1uSW5kZXggPSB0YWJsZUNvbHVtbnNbMF0/LmlkID09PSAnc2VsZWN0JyA/IDEgOiAwO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxUYWJsZVJvdyBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJtb3Rpb24tc2FmZTphbmltYXRlLWZhZGVJbiBib3JkZXItYiBib3JkZXItYm9yZGVyLWxpZ2h0XCI+XG4gICAgICAgIHt0YWJsZUNvbHVtbnMubWFwKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3R5bGUgPSBnZXRDb2x1bW5TdHlsZShjb2x1bW4gYXMgVGFibGVDb2x1bW48VERhdGEsIFRWYWx1ZT4sIGlzU21hbGxTY3JlZW4pO1xuICAgICAgICAgIGNvbnN0IGlzRmlyc3REYXRhQ29sdW1uID0gY29sdW1uSW5kZXggPT09IGZpcnN0RGF0YUNvbHVtbkluZGV4O1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUYWJsZUNlbGwga2V5PXtjb2x1bW4uaWR9IGNsYXNzTmFtZT1cInB4LTIgcHktMSBzbTpweC00IHNtOnB5LTJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAgICAgICAgICA8U2tlbGV0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTZcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpc0ZpcnN0RGF0YUNvbHVtbiA/IHsgd2lkdGg6IGAke3JhbmRvbVdpZHRofXB4YCB9IDogeyB3aWR0aDogJzEwMCUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvVGFibGVSb3c+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggaC1mdWxsIGZsZXgtY29sIGdhcC00JywgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5cbiAgICAgICAge3NlYXJjaFJlc3VsdHNBbm5vdW5jZW1lbnR9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFRhYmxlIGNvbnRyb2xzICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTIgc206Z2FwLTRcIj5cbiAgICAgICAge2VuYWJsZVJvd1NlbGVjdGlvbiAmJiBzaG93Q2hlY2tib3hlcyAmJiAoXG4gICAgICAgICAgPERlbGV0ZUJ1dHRvblxuICAgICAgICAgICAgb25EZWxldGU9e2hhbmRsZURlbGV0ZX1cbiAgICAgICAgICAgIGlzRGVsZXRpbmc9e2lzRGVsZXRpbmd9XG4gICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbCgpLnJvd3MubGVuZ3RoIHx8IGlzRGVsZXRpbmd9XG4gICAgICAgICAgICBpc1NtYWxsU2NyZWVuPXtpc1NtYWxsU2NyZWVufVxuICAgICAgICAgICAgYXJpYUxhYmVsPXtsb2NhbGl6ZSgnY29tX3VpX2RlbGV0ZV9zZWxlY3RlZF9pdGVtcycpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtmaWx0ZXJDb2x1bW4gIT09IHVuZGVmaW5lZCAmJiB0YWJsZS5nZXRDb2x1bW4oZmlsdGVyQ29sdW1uKSAmJiBlbmFibGVTZWFyY2ggJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleC0xXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZWRTZWFyY2hJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoVGVybX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hUZXJtKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgaXNTZWFyY2hpbmc9e2lzU2VhcmNoaW5nfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBWaXJ0dWFsaXplZCB0YWJsZSAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXt0YWJsZUNvbnRhaW5lclJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncmVsYXRpdmUgbWluLWgtMCBtYXgtdy1mdWxsIGZsZXgtMSBvdmVyZmxvdy14LWF1dG8gb3ZlcmZsb3cteS1hdXRvIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ibGFjay8xMCBkYXJrOmJvcmRlci13aGl0ZS8xMCcsXG4gICAgICAgICAgJ3RyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLW91dCcsXG4gICAgICAgICAgaXNTZWFyY2hpbmcgJiYgJ2JnLXN1cmZhY2Utc2Vjb25kYXJ5LzUwJyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIDxUYWJsZSBjbGFzc05hbWU9XCJ3LWZ1bGwgbWluLXctWzMwMHB4XSB0YWJsZS1maXhlZCBib3JkZXItc2VwYXJhdGUgYm9yZGVyLXNwYWNpbmctMFwiPlxuICAgICAgICAgIDxUYWJsZUhlYWRlciBjbGFzc05hbWU9XCJzdGlja3kgdG9wLTAgei01MCBiZy1zdXJmYWNlLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1ib3JkZXItbGlnaHRcIj5cbiAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4gKFxuICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwid2hpdGVzcGFjZS1ub3dyYXAgYmctc3VyZmFjZS1zZWNvbmRhcnkgcHgtMiBweS0yIHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtdGV4dC1zZWNvbmRhcnkgc206cHgtNFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtnZXRDb2x1bW5TdHlsZShcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZiBhcyBUYWJsZUNvbHVtbjxURGF0YSwgVFZhbHVlPixcbiAgICAgICAgICAgICAgICAgICAgICBpc1NtYWxsU2NyZWVuLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXIuY29sdW1uLmdldFRvZ2dsZVNvcnRpbmdIYW5kbGVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmlzUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICA6IGZsZXhSZW5kZXIoaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLCBoZWFkZXIuZ2V0Q29udGV4dCgpKX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9UYWJsZUhlYWRlcj5cblxuICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICB7cGFkZGluZ1RvcCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPXt7IGhlaWdodDogYCR7cGFkZGluZ1RvcH1weGAgfX0gLz5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtpc0xvYWRpbmcgJiYgc2tlbGV0b25zfVxuXG4gICAgICAgICAgICB7dmlydHVhbFJvd3MubWFwKCh2aXJ0dWFsUm93KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbdmlydHVhbFJvdy5pbmRleF07XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPE1lbW9pemVkVGFibGVSb3dcbiAgICAgICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICAgICAgcm93PXtyb3d9XG4gICAgICAgICAgICAgICAgICBpc1NtYWxsU2NyZWVuPXtpc1NtYWxsU2NyZWVufVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e3ZpcnR1YWxSb3cuaW5kZXh9XG4gICAgICAgICAgICAgICAgICBpc1NlYXJjaGluZz17aXNTZWFyY2hpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuXG4gICAgICAgICAgICB7IXZpcnR1YWxSb3dzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxUYWJsZVJvdyBjbGFzc05hbWU9XCJob3ZlcjpiZy10cmFuc3BhcmVudFwiPlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwgY29sU3Bhbj17Y29sdW1ucy5sZW5ndGh9IGNsYXNzTmFtZT1cInAtNCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgTm8gZGF0YSBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtwYWRkaW5nQm90dG9tID4gMCAmJiAoXG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9e3sgaGVpZ2h0OiBgJHtwYWRkaW5nQm90dG9tfXB4YCB9fSAvPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIExvYWRpbmcgaW5kaWNhdG9yICovfVxuICAgICAgICAgICAgeyhpc0ZldGNoaW5nTmV4dFBhZ2UgfHwgaGFzTmV4dFBhZ2UpICYmIChcbiAgICAgICAgICAgICAgPFRhYmxlUm93IGNsYXNzTmFtZT1cImhvdmVyOmJnLXRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBjb2xTcGFuPXtjb2x1bW5zLmxlbmd0aH0gY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICB7aXNGZXRjaGluZ05leHRQYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTcGlubmVyIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgaGFzTmV4dFBhZ2UgJiYgPGRpdiBjbGFzc05hbWU9XCJoLTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICA8L1RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgeyB1c2VTcHJpbmdzLCBhbmltYXRlZCwgU3ByaW5nQ29uZmlnIH0gZnJvbSAnQHJlYWN0LXNwcmluZy93ZWInO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgU2VnbWVudGVyT3B0aW9ucyB7XG4gIGdyYW51bGFyaXR5PzogJ2dyYXBoZW1lJyB8ICd3b3JkJyB8ICdzZW50ZW5jZSc7XG4gIGxvY2FsZU1hdGNoZXI/OiAnbG9va3VwJyB8ICdiZXN0IGZpdCc7XG59XG5cbmludGVyZmFjZSBTZWdtZW50RGF0YSB7XG4gIHNlZ21lbnQ6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgaW5wdXQ6IHN0cmluZztcbiAgaXNXb3JkTGlrZT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBTZWdtZW50cyB7XG4gIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8U2VnbWVudERhdGE+O1xufVxuXG5pbnRlcmZhY2UgSW50bFNlZ21lbnRlciB7XG4gIHNlZ21lbnQoaW5wdXQ6IHN0cmluZyk6IFNlZ21lbnRzO1xufVxuXG5pbnRlcmZhY2UgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIHtcbiAgbmV3IChsb2NhbGVzPzogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBTZWdtZW50ZXJPcHRpb25zKTogSW50bFNlZ21lbnRlcjtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSW50bCB7XG4gICAgU2VnbWVudGVyOiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFNwbGl0VGV4dFByb3BzIHtcbiAgdGV4dD86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkZWxheT86IG51bWJlcjtcbiAgYW5pbWF0aW9uRnJvbT86IHsgb3BhY2l0eTogbnVtYmVyOyB0cmFuc2Zvcm06IHN0cmluZyB9O1xuICBhbmltYXRpb25Ubz86IHsgb3BhY2l0eTogbnVtYmVyOyB0cmFuc2Zvcm06IHN0cmluZyB9O1xuICBlYXNpbmc/OiBTcHJpbmdDb25maWdbJ2Vhc2luZyddO1xuICB0aHJlc2hvbGQ/OiBudW1iZXI7XG4gIHJvb3RNYXJnaW4/OiBzdHJpbmc7XG4gIHRleHRBbGlnbj86ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJyB8ICdqdXN0aWZ5JyB8ICdzdGFydCcgfCAnZW5kJztcbiAgb25MZXR0ZXJBbmltYXRpb25Db21wbGV0ZT86ICgpID0+IHZvaWQ7XG4gIG9uTGluZUNvdW50Q2hhbmdlPzogKGxpbmVDb3VudDogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5jb25zdCBzcGxpdEdyYXBoZW1lcyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGlmICh0eXBlb2YgSW50bCAhPT0gJ3VuZGVmaW5lZCcgJiYgJ1NlZ21lbnRlcicgaW4gSW50bCkge1xuICAgIGNvbnN0IHNlZ21lbnRlciA9IG5ldyAoSW50bCBhcyB0eXBlb2YgSW50bCAmIHsgU2VnbWVudGVyOiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IgfSkuU2VnbWVudGVyKFxuICAgICAgJ2VuJyxcbiAgICAgIHsgZ3JhbnVsYXJpdHk6ICdncmFwaGVtZScgfSxcbiAgICApO1xuICAgIGNvbnN0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQodGV4dCk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oc2VnbWVudHMpLm1hcCgoczogU2VnbWVudERhdGEpID0+IHMuc2VnbWVudCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFsuLi50ZXh0XTtcbiAgfVxufTtcblxuY29uc3QgU3BsaXRUZXh0OiBSZWFjdC5GQzxTcGxpdFRleHRQcm9wcz4gPSAoe1xuICB0ZXh0ID0gJycsXG4gIGNsYXNzTmFtZSA9ICcnLFxuICBkZWxheSA9IDEwMCxcbiAgYW5pbWF0aW9uRnJvbSA9IHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCw0MHB4LDApJyB9LFxuICBhbmltYXRpb25UbyA9IHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwwLDApJyB9LFxuICBlYXNpbmcgPSAodDogbnVtYmVyKSA9PiB0LFxuICB0aHJlc2hvbGQgPSAwLjEsXG4gIHJvb3RNYXJnaW4gPSAnLTEwMHB4JyxcbiAgdGV4dEFsaWduID0gJ2NlbnRlcicsXG4gIG9uTGV0dGVyQW5pbWF0aW9uQ29tcGxldGUsXG4gIG9uTGluZUNvdW50Q2hhbmdlLFxufSkgPT4ge1xuICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKS5tYXAoc3BsaXRHcmFwaGVtZXMpO1xuICBjb25zdCBsZXR0ZXJzID0gd29yZHMuZmxhdCgpO1xuICBjb25zdCBbaW5WaWV3LCBzZXRJblZpZXddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTFBhcmFncmFwaEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBhbmltYXRlZENvdW50ID0gdXNlUmVmKDApO1xuXG4gIGNvbnN0IFtzcHJpbmdzXSA9IHVzZVNwcmluZ3MoXG4gICAgbGV0dGVycy5sZW5ndGgsXG4gICAgKGkpID0+ICh7XG4gICAgICBmcm9tOiBhbmltYXRpb25Gcm9tLFxuICAgICAgdG86IGluVmlld1xuICAgICAgICA/IGFzeW5jIChuZXh0KSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBuZXh0KGFuaW1hdGlvblRvKTtcbiAgICAgICAgICAgIGFuaW1hdGVkQ291bnQuY3VycmVudCArPSAxO1xuICAgICAgICAgICAgaWYgKGFuaW1hdGVkQ291bnQuY3VycmVudCA9PT0gbGV0dGVycy5sZW5ndGggJiYgb25MZXR0ZXJBbmltYXRpb25Db21wbGV0ZSkge1xuICAgICAgICAgICAgICBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA6IGFuaW1hdGlvbkZyb20sXG4gICAgICBkZWxheTogaSAqIGRlbGF5LFxuICAgICAgY29uZmlnOiB7IGVhc2luZyB9LFxuICAgIH0pLFxuICAgIFtpblZpZXcsIHRleHQsIGRlbGF5LCBhbmltYXRpb25Gcm9tLCBhbmltYXRpb25UbywgZWFzaW5nLCBvbkxldHRlckFuaW1hdGlvbkNvbXBsZXRlXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKFtlbnRyeV0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2V0SW5WaWV3KHRydWUpO1xuICAgICAgICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKHJlZi5jdXJyZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHRocmVzaG9sZCwgcm9vdE1hcmdpbiB9LFxuICAgICk7XG5cbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUocmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIFt0aHJlc2hvbGQsIHJvb3RNYXJnaW5dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCAmJiBpblZpZXcpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSByZWYuY3VycmVudDtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID1cbiAgICAgICAgICBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmxpbmVIZWlnaHQpIHx8XG4gICAgICAgICAgcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5mb250U2l6ZSkgKiAxLjI7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBsaW5lcyA9IE1hdGgucm91bmQoaGVpZ2h0IC8gbGluZUhlaWdodCk7XG5cbiAgICAgICAgaWYgKG9uTGluZUNvdW50Q2hhbmdlKSB7XG4gICAgICAgICAgb25MaW5lQ291bnRDaGFuZ2UobGluZXMpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfSwgW2luVmlldywgdGV4dCwgb25MaW5lQ291bnRDaGFuZ2VdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+e3RleHR9PC9zcGFuPlxuICAgICAgPHBcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17YHNwbGl0LXBhcmVudCBpbmxpbmUgb3ZlcmZsb3ctaGlkZGVuICR7Y2xhc3NOYW1lfWB9XG4gICAgICAgIHN0eWxlPXt7IHRleHRBbGlnbiwgd2hpdGVTcGFjZTogJ25vcm1hbCcsIHdvcmRXcmFwOiAnYnJlYWstd29yZCcgfX1cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAge3dvcmRzLm1hcCgod29yZCwgd29yZEluZGV4KSA9PiAoXG4gICAgICAgICAgPHNwYW4ga2V5PXt3b3JkSW5kZXh9IHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCB3aGl0ZVNwYWNlOiAnbm93cmFwJyB9fT5cbiAgICAgICAgICAgIHt3b3JkLm1hcCgobGV0dGVyLCBsZXR0ZXJJbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9XG4gICAgICAgICAgICAgICAgd29yZHMuc2xpY2UoMCwgd29yZEluZGV4KS5yZWR1Y2UoKGFjYywgdykgPT4gYWNjICsgdy5sZW5ndGgsIDApICsgbGV0dGVySW5kZXg7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8YW5pbWF0ZWQuc3BhblxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtzcHJpbmdzW2luZGV4XX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1ibG9jayB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1vcGFjaXR5IHdpbGwtY2hhbmdlLXRyYW5zZm9ybVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2xldHRlcn1cbiAgICAgICAgICAgICAgICA8L2FuaW1hdGVkLnNwYW4+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIHt3b3JkSW5kZXggPCB3b3Jkcy5sZW5ndGggLSAxICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZS1ibG9jaycsIHdpZHRoOiAnMC4zZW0nIH19PiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApKX1cbiAgICAgIDwvcD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNwbGl0VGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2xsZXJSZW5kZXJQcm9wcywgRmllbGRWYWx1ZXMsIEZpZWxkUGF0aCB9IGZyb20gJ3JlYWN0LWhvb2stZm9ybSc7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gJy4vTGFiZWwnO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICcuL0lucHV0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvcm1JbnB1dDxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuPih7XG4gIGZpZWxkLFxuICBsYWJlbCxcbiAgbGFiZWxDbGFzcyxcbiAgaW5wdXRDbGFzcyxcbiAgY29udGFpbmVyQ2xhc3MsXG4gIGxhYmVsQWRqYWNlbnQsXG4gIHBsYWNlaG9sZGVyID0gJycsXG4gIHR5cGUgPSAnc3RyaW5nJyxcbn06IHtcbiAgZmllbGQ6IENvbnRyb2xsZXJSZW5kZXJQcm9wczxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgbGFiZWw6IHN0cmluZztcbiAgbGFiZWxDbGFzcz86IHN0cmluZztcbiAgaW5wdXRDbGFzcz86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNvbnRhaW5lckNsYXNzPzogc3RyaW5nO1xuICB0eXBlPzogJ3N0cmluZycgfCAnbnVtYmVyJztcbiAgbGFiZWxBZGphY2VudD86IFJlYWN0LlJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblxuICAgIGlmICh0eXBlICE9PSAnbnVtYmVyJykge1xuICAgICAgZmllbGQub25DaGFuZ2UodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIGZpZWxkLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKCFpc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgICAgZmllbGQub25DaGFuZ2UoTnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTInLCBjb250YWluZXJDbGFzcyl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBnYXAtMlwiPlxuICAgICAgICA8TGFiZWxcbiAgICAgICAgICBodG1sRm9yPXtgJHtmaWVsZC5uYW1lfS1pbnB1dGB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbigndGV4dC1sZWZ0IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXRleHQtcHJpbWFyeScsIGxhYmVsQ2xhc3MpfVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICB7bGFiZWxBZGphY2VudH1cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0XG4gICAgICAgIGlkPXtgJHtmaWVsZC5uYW1lfS1pbnB1dGB9XG4gICAgICAgIHZhbHVlPXtmaWVsZC52YWx1ZSA/PyAnJ31cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdmbGV4IGgtMTAgbWF4LWgtMTAgdy1mdWxsIHJlc2l6ZS1ub25lIGJvcmRlci1ub25lIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHB4LTMgcHktMicsXG4gICAgICAgICAgaW5wdXRDbGFzcyxcbiAgICAgICAgKX1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jbGFzcyBQaXhlbCB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIHNwZWVkOiBudW1iZXI7XG4gIHNpemU6IG51bWJlcjtcbiAgc2l6ZVN0ZXA6IG51bWJlcjtcbiAgbWluU2l6ZTogbnVtYmVyO1xuICBtYXhTaXplSW50ZWdlcjogbnVtYmVyO1xuICBtYXhTaXplOiBudW1iZXI7XG4gIGRlbGF5OiBudW1iZXI7XG4gIGNvdW50ZXI6IG51bWJlcjtcbiAgY291bnRlclN0ZXA6IG51bWJlcjtcbiAgaXNJZGxlOiBib29sZWFuO1xuICBpc1JldmVyc2U6IGJvb2xlYW47XG4gIGlzU2hpbW1lcjogYm9vbGVhbjtcbiAgYWN0aXZhdGlvblRocmVzaG9sZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gICAgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgY29sb3I6IHN0cmluZyxcbiAgICBzcGVlZDogbnVtYmVyLFxuICAgIGRlbGF5OiBudW1iZXIsXG4gICAgYWN0aXZhdGlvblRocmVzaG9sZDogbnVtYmVyLFxuICApIHtcbiAgICB0aGlzLndpZHRoID0gY2FudmFzLndpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gY2FudmFzLmhlaWdodDtcbiAgICB0aGlzLmN0eCA9IGNvbnRleHQ7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMuY29sb3IgPSBjb2xvcjtcbiAgICB0aGlzLnNwZWVkID0gdGhpcy5yYW5kb20oMC4xLCAwLjkpICogc3BlZWQ7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLnNpemVTdGVwID0gTWF0aC5yYW5kb20oKSAqIDAuNDtcbiAgICB0aGlzLm1pblNpemUgPSAwLjU7XG4gICAgdGhpcy5tYXhTaXplSW50ZWdlciA9IDI7XG4gICAgdGhpcy5tYXhTaXplID0gdGhpcy5yYW5kb20odGhpcy5taW5TaXplLCB0aGlzLm1heFNpemVJbnRlZ2VyKTtcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICB0aGlzLmNvdW50ZXJTdGVwID0gTWF0aC5yYW5kb20oKSAqIDQgKyAodGhpcy53aWR0aCArIHRoaXMuaGVpZ2h0KSAqIDAuMDE7XG4gICAgdGhpcy5pc0lkbGUgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmV2ZXJzZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNTaGltbWVyID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmF0aW9uVGhyZXNob2xkID0gYWN0aXZhdGlvblRocmVzaG9sZDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZG9tKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47XG4gIH1cblxuICBwcml2YXRlIGRyYXcoKSB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5tYXhTaXplSW50ZWdlciAqIDAuNSAtIHRoaXMuc2l6ZSAqIDAuNTtcbiAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSB0aGlzLmNvbG9yO1xuICAgIHRoaXMuY3R4LmZpbGxSZWN0KHRoaXMueCArIG9mZnNldCwgdGhpcy55ICsgb2Zmc2V0LCB0aGlzLnNpemUsIHRoaXMuc2l6ZSk7XG4gIH1cblxuICBhcHBlYXIoKSB7XG4gICAgdGhpcy5pc0lkbGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jb3VudGVyIDw9IHRoaXMuZGVsYXkpIHtcbiAgICAgIHRoaXMuY291bnRlciArPSB0aGlzLmNvdW50ZXJTdGVwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaXplID49IHRoaXMubWF4U2l6ZSkge1xuICAgICAgdGhpcy5pc1NoaW1tZXIgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1NoaW1tZXIpIHtcbiAgICAgIHRoaXMuc2hpbW1lcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpemUgKz0gdGhpcy5zaXplU3RlcDtcbiAgICB9XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBhcHBlYXJXaXRoUHJvZ3Jlc3MocHJvZ3Jlc3M6IG51bWJlcikge1xuICAgIGNvbnN0IGRpZmYgPSBwcm9ncmVzcyAtIHRoaXMuYWN0aXZhdGlvblRocmVzaG9sZDtcbiAgICBpZiAoZGlmZiA8PSAwKSB7XG4gICAgICB0aGlzLmlzSWRsZSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmNvdW50ZXIgPD0gdGhpcy5kZWxheSkge1xuICAgICAgdGhpcy5jb3VudGVyICs9IHRoaXMuY291bnRlclN0ZXA7XG4gICAgICB0aGlzLmlzSWRsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaXplID49IHRoaXMubWF4U2l6ZSkge1xuICAgICAgdGhpcy5pc1NoaW1tZXIgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1NoaW1tZXIpIHtcbiAgICAgIHRoaXMuc2hpbW1lcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpemUgKz0gdGhpcy5zaXplU3RlcDtcbiAgICB9XG4gICAgdGhpcy5pc0lkbGUgPSBmYWxzZTtcbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIGRpc2FwcGVhcigpIHtcbiAgICB0aGlzLmlzU2hpbW1lciA9IGZhbHNlO1xuICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgaWYgKHRoaXMuc2l6ZSA8PSAwKSB7XG4gICAgICB0aGlzLmlzSWRsZSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2l6ZSAtPSAwLjE7XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBwcml2YXRlIHNoaW1tZXIoKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSA+PSB0aGlzLm1heFNpemUpIHtcbiAgICAgIHRoaXMuaXNSZXZlcnNlID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2l6ZSA8PSB0aGlzLm1pblNpemUpIHtcbiAgICAgIHRoaXMuaXNSZXZlcnNlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc2l6ZSArPSB0aGlzLmlzUmV2ZXJzZSA/IC10aGlzLnNwZWVkIDogdGhpcy5zcGVlZDtcbiAgfVxufVxuXG5jb25zdCBnZXRFZmZlY3RpdmVTcGVlZCA9ICh2YWx1ZTogbnVtYmVyLCByZWR1Y2VkTW90aW9uOiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KFN0cmluZyh2YWx1ZSksIDEwKTtcbiAgY29uc3QgdGhyb3R0bGUgPSAwLjAwMTtcbiAgaWYgKHBhcnNlZCA8PSAwIHx8IHJlZHVjZWRNb3Rpb24pIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAocGFyc2VkID49IDEwMCkge1xuICAgIHJldHVybiAxMDAgKiB0aHJvdHRsZTtcbiAgfVxuICByZXR1cm4gcGFyc2VkICogdGhyb3R0bGU7XG59O1xuXG5jb25zdCBjbGFtcCA9IChuOiBudW1iZXIsIG1pbiA9IDAsIG1heCA9IDEpID0+IE1hdGgubWluKE1hdGgubWF4KG4sIG1pbiksIG1heCk7XG5cbmNvbnN0IFZBUklBTlRTID0ge1xuICBkZWZhdWx0OiB7IGdhcDogNSwgc3BlZWQ6IDM1LCBjb2xvcnM6ICcjZjhmYWZjLCNmMWY1ZjksI2NiZDVlMScsIG5vRm9jdXM6IGZhbHNlIH0sXG4gIGJsdWU6IHsgZ2FwOiAxMCwgc3BlZWQ6IDI1LCBjb2xvcnM6ICcjZTBmMmZlLCM3ZGQzZmMsIzBlYTVlOScsIG5vRm9jdXM6IGZhbHNlIH0sXG4gIHllbGxvdzogeyBnYXA6IDMsIHNwZWVkOiAyMCwgY29sb3JzOiAnI2ZlZjA4YSwjZmRlMDQ3LCNlYWIzMDgnLCBub0ZvY3VzOiBmYWxzZSB9LFxuICBwaW5rOiB7IGdhcDogNiwgc3BlZWQ6IDgwLCBjb2xvcnM6ICcjZmVjZGQzLCNmZGE0YWYsI2UxMWQ0OCcsIG5vRm9jdXM6IHRydWUgfSxcbn0gYXMgY29uc3Q7XG5cbmludGVyZmFjZSBQaXhlbENhcmRQcm9wcyB7XG4gIHZhcmlhbnQ/OiBrZXlvZiB0eXBlb2YgVkFSSUFOVFM7XG4gIGdhcD86IG51bWJlcjtcbiAgc3BlZWQ/OiBudW1iZXI7XG4gIGNvbG9ycz86IHN0cmluZztcbiAgbm9Gb2N1cz86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gIHJhbmRvbW5lc3M/OiBudW1iZXI7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBpeGVsQ2FyZCh7XG4gIHZhcmlhbnQgPSAnZGVmYXVsdCcsXG4gIGdhcCxcbiAgc3BlZWQsXG4gIGNvbG9ycyxcbiAgbm9Gb2N1cyxcbiAgY2xhc3NOYW1lID0gJycsXG4gIHByb2dyZXNzLFxuICByYW5kb21uZXNzID0gMC4zLFxuICB3aWR0aCxcbiAgaGVpZ2h0LFxufTogUGl4ZWxDYXJkUHJvcHMpIHtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgY2FudmFzUmVmID0gdXNlUmVmPEhUTUxDYW52YXNFbGVtZW50PihudWxsKTtcbiAgY29uc3QgcGl4ZWxzUmVmID0gdXNlUmVmPFBpeGVsW10+KFtdKTtcbiAgY29uc3QgYW5pbWF0aW9uUmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgdGltZVByZXZSZWYgPSB1c2VSZWYocGVyZm9ybWFuY2Uubm93KCkpO1xuICBjb25zdCBwcm9ncmVzc1JlZiA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KHByb2dyZXNzKTtcbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IHVzZVJlZihcbiAgICB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzLFxuICApLmN1cnJlbnQ7XG5cbiAgY29uc3QgY2ZnID0gVkFSSUFOVFNbdmFyaWFudF07XG4gIGNvbnN0IGcgPSBnYXAgPz8gY2ZnLmdhcDtcbiAgY29uc3QgcyA9IHNwZWVkID8/IGNmZy5zcGVlZDtcbiAgY29uc3QgcGFsZXR0ZSA9IGNvbG9ycyA/PyBjZmcuY29sb3JzO1xuICBjb25zdCBkaXNhYmxlRm9jdXMgPSBub0ZvY3VzID8/IGNmZy5ub0ZvY3VzO1xuXG4gIGNvbnN0IHVwZGF0ZUNhbnZhc09wYWNpdHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFjYW52YXNSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYW52YXNSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmYWRlU3RhcnQgPSAwLjk7XG4gICAgY29uc3QgYWxwaGEgPVxuICAgICAgcHJvZ3Jlc3NSZWYuY3VycmVudCA+PSBmYWRlU3RhcnQgPyAxIC0gKHByb2dyZXNzUmVmLmN1cnJlbnQgLSBmYWRlU3RhcnQpIC8gMC4xIDogMTtcbiAgICBjYW52YXNSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gU3RyaW5nKGNsYW1wKGFscGhhKSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBhbmltYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKG1ldGhvZDoga2V5b2YgUGl4ZWwpID0+IHtcbiAgICAgIGFuaW1hdGlvblJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IGFuaW1hdGUobWV0aG9kKSk7XG5cbiAgICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgY29uc3QgZWxhcHNlZCA9IG5vdyAtIHRpbWVQcmV2UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZWxhcHNlZCA8IDEwMDAgLyA2MCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aW1lUHJldlJlZi5jdXJyZW50ID0gbm93IC0gKGVsYXBzZWQgJSAoMTAwMCAvIDYwKSk7XG5cbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhc1JlZi5jdXJyZW50Py5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgaWYgKCFjdHggfHwgIWNhbnZhc1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjYW52YXNSZWYuY3VycmVudC53aWR0aCwgY2FudmFzUmVmLmN1cnJlbnQuaGVpZ2h0KTtcblxuICAgICAgbGV0IGlkbGUgPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBwIG9mIHBpeGVsc1JlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09ICdhcHBlYXJXaXRoUHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgaWYgKHByb2dyZXNzUmVmLmN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcC5hcHBlYXJXaXRoUHJvZ3Jlc3MocHJvZ3Jlc3NSZWYuY3VycmVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAuaXNJZGxlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSBkeW5hbWljIGRpc3BhdGNoXG4gICAgICAgICAgcFttZXRob2RdKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwLmlzSWRsZSkge1xuICAgICAgICAgIGlkbGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB1cGRhdGVDYW52YXNPcGFjaXR5KCk7XG4gICAgICBpZiAoaWRsZSkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25SZWYuY3VycmVudCEpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3VwZGF0ZUNhbnZhc09wYWNpdHldLFxuICApO1xuXG4gIGNvbnN0IHN0YXJ0QW5pbSA9IHVzZUNhbGxiYWNrKFxuICAgIChtOiBrZXlvZiBQaXhlbCkgPT4ge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uUmVmLmN1cnJlbnQhKTtcbiAgICAgIGFuaW1hdGlvblJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IGFuaW1hdGUobSkpO1xuICAgIH0sXG4gICAgW2FuaW1hdGVdLFxuICApO1xuXG4gIGNvbnN0IGluaXRQaXhlbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFjb250YWluZXJSZWYuY3VycmVudCB8fCAhY2FudmFzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHdpZHRoOiBjdywgaGVpZ2h0OiBjaCB9ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzUmVmLmN1cnJlbnQuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjYW52YXNSZWYuY3VycmVudC53aWR0aCA9IE1hdGguZmxvb3IoY3cpO1xuICAgIGNhbnZhc1JlZi5jdXJyZW50LmhlaWdodCA9IE1hdGguZmxvb3IoY2gpO1xuXG4gICAgY29uc3QgY29scyA9IHBhbGV0dGUuc3BsaXQoJywnKTtcbiAgICBjb25zdCBweDogUGl4ZWxbXSA9IFtdO1xuXG4gICAgY29uc3QgY3ggPSBjdyAvIDI7XG4gICAgY29uc3QgY3kgPSBjaCAvIDI7XG4gICAgY29uc3QgbWF4RGlzdCA9IE1hdGguaHlwb3QoY3gsIGN5KTtcblxuICAgIGZvciAobGV0IHggPSAwOyB4IDwgY3c7IHggKz0gZykge1xuICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBjaDsgeSArPSBnKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gY29sc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjb2xzLmxlbmd0aCldO1xuICAgICAgICBjb25zdCBkaXN0Tm9ybSA9IE1hdGguaHlwb3QoeCAtIGN4LCB5IC0gY3kpIC8gbWF4RGlzdDtcbiAgICAgICAgY29uc3QgdGhyZXNob2xkID0gY2xhbXAoZGlzdE5vcm0gKiAoMSAtIHJhbmRvbW5lc3MpICsgTWF0aC5yYW5kb20oKSAqIHJhbmRvbW5lc3MpO1xuICAgICAgICBjb25zdCBkZWxheSA9IHJlZHVjZWRNb3Rpb24gPyAwIDogZGlzdE5vcm0gKiBtYXhEaXN0O1xuICAgICAgICBpZiAoIWN0eCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHB4LnB1c2goXG4gICAgICAgICAgbmV3IFBpeGVsKFxuICAgICAgICAgICAgY2FudmFzUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICB4LFxuICAgICAgICAgICAgeSxcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgZ2V0RWZmZWN0aXZlU3BlZWQocywgcmVkdWNlZE1vdGlvbiksXG4gICAgICAgICAgICBkZWxheSxcbiAgICAgICAgICAgIHRocmVzaG9sZCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBwaXhlbHNSZWYuY3VycmVudCA9IHB4O1xuXG4gICAgaWYgKHByb2dyZXNzUmVmLmN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RhcnRBbmltKCdhcHBlYXJXaXRoUHJvZ3Jlc3MnKTtcbiAgICB9XG4gIH0sIFtnLCBwYWxldHRlLCBzLCByYW5kb21uZXNzLCByZWR1Y2VkTW90aW9uLCBzdGFydEFuaW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb2dyZXNzUmVmLmN1cnJlbnQgPSBwcm9ncmVzcztcbiAgICBpZiAocHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RhcnRBbmltKCdhcHBlYXJXaXRoUHJvZ3Jlc3MnKTtcbiAgICB9XG4gIH0sIFtwcm9ncmVzcywgc3RhcnRBbmltXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJvZ3Jlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uUmVmLmN1cnJlbnQhKTtcbiAgICB9XG4gIH0sIFtwcm9ncmVzc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdFBpeGVscygpO1xuICAgIGNvbnN0IG9icyA9IG5ldyBSZXNpemVPYnNlcnZlcihpbml0UGl4ZWxzKTtcbiAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIG9icy5vYnNlcnZlKGNvbnRhaW5lclJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG9icy5kaXNjb25uZWN0KCk7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25SZWYuY3VycmVudCEpO1xuICAgIH07XG4gIH0sIFtpbml0UGl4ZWxzXSk7XG5cbiAgY29uc3QgaG92ZXJJbiA9ICgpID0+IHByb2dyZXNzUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZCAmJiBzdGFydEFuaW0oJ2FwcGVhcicpO1xuICBjb25zdCBob3Zlck91dCA9ICgpID0+IHByb2dyZXNzUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZCAmJiBzdGFydEFuaW0oJ2Rpc2FwcGVhcicpO1xuICBjb25zdCBmb2N1c0luOiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gPSAoZSkgPT4ge1xuICAgIGlmIChcbiAgICAgICFkaXNhYmxlRm9jdXMgJiZcbiAgICAgICFlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSAmJlxuICAgICAgcHJvZ3Jlc3NSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzdGFydEFuaW0oJ2FwcGVhcicpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZm9jdXNPdXQ6IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IChlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVGb2N1cyAmJlxuICAgICAgIWUuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpICYmXG4gICAgICBwcm9ncmVzc1JlZi5jdXJyZW50ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHN0YXJ0QW5pbSgnZGlzYXBwZWFyJyk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBzdHlsZT17e1xuICAgICAgICB3aWR0aDogd2lkdGggfHwgJzEwMCUnLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCB8fCAnMTAwJScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncmVsYXRpdmUgaXNvbGF0ZSBncmlkIHNlbGVjdC1ub25lIHBsYWNlLWl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCBzaGFkb3ctbWQgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIGVhc2UtaW4tb3V0JyxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246ICdjdWJpYy1iZXppZXIoMC41LCAxLCAwLjg5LCAxKScsXG4gICAgICAgIH19XG4gICAgICAgIG9uTW91c2VFbnRlcj17aG92ZXJJbn1cbiAgICAgICAgb25Nb3VzZUxlYXZlPXtob3Zlck91dH1cbiAgICAgICAgb25Gb2N1cz17ZGlzYWJsZUZvY3VzID8gdW5kZWZpbmVkIDogZm9jdXNJbn1cbiAgICAgICAgb25CbHVyPXtkaXNhYmxlRm9jdXMgPyB1bmRlZmluZWQgOiBmb2N1c091dH1cbiAgICAgICAgdGFiSW5kZXg9e2Rpc2FibGVGb2N1cyA/IC0xIDogMH1cbiAgICAgID5cbiAgICAgICAgPGNhbnZhc1xuICAgICAgICAgIHJlZj17Y2FudmFzUmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMCBibG9ja1wiXG4gICAgICAgICAgd2lkdGg9e3dpZHRoICYmIHdpZHRoICE9PSAnYXV0bycgPyBwYXJzZUludChTdHJpbmcod2lkdGgpKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBoZWlnaHQ9e2hlaWdodCAmJiBoZWlnaHQgIT09ICdhdXRvJyA/IHBhcnNlSW50KFN0cmluZyhoZWlnaHQpKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5cbnR5cGUgRmlsZVVwbG9hZFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBoYW5kbGVGaWxlQ2hhbmdlOiAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xufTtcblxuY29uc3QgRmlsZVVwbG9hZCA9IGZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRmlsZVVwbG9hZFByb3BzPihcbiAgKHsgY2hpbGRyZW4sIGhhbmRsZUZpbGVDaGFuZ2UgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVDaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9LFxuKTtcblxuRmlsZVVwbG9hZC5kaXNwbGF5TmFtZSA9ICdGaWxlVXBsb2FkJztcblxuZXhwb3J0IGRlZmF1bHQgRmlsZVVwbG9hZDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgU2VsZWN0LFxuICBTZWxlY3RBcnJvdyxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0SXRlbUNoZWNrLFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0UG9wb3ZlcixcbiAgU2VsZWN0UHJvdmlkZXIsXG59IGZyb20gJ0Bhcmlha2l0L3JlYWN0JztcbmltcG9ydCAnLi9BbmltYXRlUG9wb3Zlci5jc3MnO1xuaW1wb3J0IHsgY24gfSBmcm9tICd+L3V0aWxzJztcblxudHlwZSBNdWx0aVNlbGVjdEl0ZW08VCBleHRlbmRzIHN0cmluZz4gPSBUIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogVCB9O1xuXG5mdW5jdGlvbiBnZXRJdGVtVmFsdWU8VCBleHRlbmRzIHN0cmluZz4oaXRlbTogTXVsdGlTZWxlY3RJdGVtPFQ+KTogVCB7XG4gIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbS52YWx1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0SXRlbUxhYmVsPFQgZXh0ZW5kcyBzdHJpbmc+KGl0ZW06IE11bHRpU2VsZWN0SXRlbTxUPik6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbS5sYWJlbDtcbn1cblxuaW50ZXJmYWNlIE11bHRpU2VsZWN0UHJvcHM8VCBleHRlbmRzIHN0cmluZz4ge1xuICBpdGVtczogTXVsdGlTZWxlY3RJdGVtPFQ+W107XG4gIGxhYmVsPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgb25TZWxlY3RlZFZhbHVlc0NoYW5nZT86ICh2YWx1ZXM6IFRbXSkgPT4gdm9pZDtcbiAgcmVuZGVyU2VsZWN0ZWRWYWx1ZXM/OiAoXG4gICAgdmFsdWVzOiBUW10sXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gICAgaXRlbXM/OiBNdWx0aVNlbGVjdEl0ZW08VD5bXSxcbiAgKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXRlbUNsYXNzTmFtZT86IHN0cmluZztcbiAgbGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdENsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0SWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcG9wb3ZlckNsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0SXRlbXNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdGVkVmFsdWVzOiBUW107XG4gIHNldFNlbGVjdGVkVmFsdWVzOiAodmFsdWVzOiBUW10pID0+IHZvaWQ7XG4gIHJlbmRlckl0ZW1Db250ZW50PzogKFxuICAgIHZhbHVlOiBULFxuICAgIGRlZmF1bHRDb250ZW50OiBSZWFjdC5SZWFjdE5vZGUsXG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbixcbiAgKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXI8VCBleHRlbmRzIHN0cmluZz4oXG4gIHZhbHVlczogVFtdLFxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgaXRlbXM/OiBNdWx0aVNlbGVjdEl0ZW08VD5bXSxcbikge1xuICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBwbGFjZWhvbGRlciB8fCAnU2VsZWN0Li4uJztcbiAgfVxuICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIEZpbmQgdGhlIGl0ZW0gdG8gZ2V0IGl0cyBsYWJlbFxuICAgIGlmIChpdGVtcykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGdldEl0ZW1WYWx1ZShpdGVtKSA9PT0gdmFsdWVzWzBdKTtcbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBnZXRJdGVtTGFiZWwoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXNbMF07XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlcy5sZW5ndGh9IGl0ZW1zIHNlbGVjdGVkYDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTXVsdGlTZWxlY3Q8VCBleHRlbmRzIHN0cmluZz4oe1xuICBpdGVtcyxcbiAgbGFiZWwsXG4gIHBsYWNlaG9sZGVyID0gJ1NlbGVjdC4uLicsXG4gIG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UsXG4gIHJlbmRlclNlbGVjdGVkVmFsdWVzID0gZGVmYXVsdFJlbmRlcixcbiAgY2xhc3NOYW1lLFxuICBzZWxlY3RJY29uLFxuICBpdGVtQ2xhc3NOYW1lLFxuICBsYWJlbENsYXNzTmFtZSxcbiAgc2VsZWN0Q2xhc3NOYW1lLFxuICBwb3BvdmVyQ2xhc3NOYW1lLFxuICBzZWxlY3RJdGVtc0NsYXNzTmFtZSxcbiAgc2VsZWN0ZWRWYWx1ZXMgPSBbXSxcbiAgc2V0U2VsZWN0ZWRWYWx1ZXMsXG4gIHJlbmRlckl0ZW1Db250ZW50LFxufTogTXVsdGlTZWxlY3RQcm9wczxUPikge1xuICBjb25zdCBzZWxlY3RSZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbaXNQb3BvdmVyT3Blbiwgc2V0SXNQb3BvdmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAodmFsdWVzOiBUW10pID0+IHtcbiAgICBzZXRTZWxlY3RlZFZhbHVlcyh2YWx1ZXMpO1xuICAgIGlmIChvblNlbGVjdGVkVmFsdWVzQ2hhbmdlKSB7XG4gICAgICBvblNlbGVjdGVkVmFsdWVzQ2hhbmdlKHZhbHVlcyk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICA8U2VsZWN0UHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICBzZXRWYWx1ZT17aGFuZGxlVmFsdWVDaGFuZ2V9XG4gICAgICAgIG9wZW49e2lzUG9wb3Zlck9wZW59XG4gICAgICAgIHNldE9wZW49e3NldElzUG9wb3Zlck9wZW59XG4gICAgICA+XG4gICAgICAgIHtsYWJlbCAmJiAoXG4gICAgICAgICAgPFNlbGVjdExhYmVsIGNsYXNzTmFtZT17Y24oJ21iLTEgYmxvY2sgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeScsIGxhYmVsQ2xhc3NOYW1lKX0+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9TZWxlY3RMYWJlbD5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIHJlZj17c2VsZWN0UmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHJvdW5kZWQteGwgcHgtMyBweS0yIHRleHQtc20nLFxuICAgICAgICAgICAgJ2JnLXN1cmZhY2UtdGVydGlhcnkgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LXNtIGhvdmVyOmN1cnNvci1wb2ludGVyIGhvdmVyOmJnLXN1cmZhY2UtaG92ZXInLFxuICAgICAgICAgICAgJ291dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctd2hpdGUnLFxuICAgICAgICAgICAgc2VsZWN0Q2xhc3NOYW1lLFxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMCAmJiBzZWxlY3RJdGVtc0NsYXNzTmFtZSAhPSBudWxsICYmIHNlbGVjdEl0ZW1zQ2xhc3NOYW1lLFxuICAgICAgICAgICl9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICA+XG4gICAgICAgICAge3NlbGVjdEljb24gJiYgPHNwYW4+e3NlbGVjdEljb24gYXMgUmVhY3QuSlNYLkVsZW1lbnR9PC9zcGFuPn1cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtci1hdXRvIGhpZGRlbiB0cnVuY2F0ZSBtZDpibG9ja1wiPlxuICAgICAgICAgICAge3JlbmRlclNlbGVjdGVkVmFsdWVzKHNlbGVjdGVkVmFsdWVzLCBwbGFjZWhvbGRlciwgaXRlbXMpfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8U2VsZWN0QXJyb3dcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICdtbC0xIGhpZGRlbiBzdHJva2UtMSB0ZXh0LWJhc2Ugb3BhY2l0eS03NSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgbWQ6YmxvY2snLFxuICAgICAgICAgICAgICBpc1BvcG92ZXJPcGVuICYmICdyb3RhdGUtMTgwJyxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIDxTZWxlY3RQb3BvdmVyXG4gICAgICAgICAgZ3V0dGVyPXs0fVxuICAgICAgICAgIHNhbWVXaWR0aFxuICAgICAgICAgIG1vZGFsXG4gICAgICAgICAgdW5tb3VudE9uSGlkZVxuICAgICAgICAgIGZpbmFsRm9jdXM9e3NlbGVjdFJlZn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2FuaW1hdGUtcG9wb3ZlciB6LTQwIGZsZXggbWF4LWgtWzMwMHB4XScsXG4gICAgICAgICAgICAnZmxleC1jb2wgb3ZlcmZsb3ctYXV0byBvdmVyc2Nyb2xsLWNvbnRhaW4gcm91bmRlZC14bCcsXG4gICAgICAgICAgICAnYmctc3VyZmFjZS1zZWNvbmRhcnkgcHgtMS41IHB5LTEgdGV4dC10ZXh0LXByaW1hcnkgc2hhZG93LWxnJyxcbiAgICAgICAgICAgICdib3JkZXIgYm9yZGVyLWJvcmRlci1saWdodCcsXG4gICAgICAgICAgICAnb3V0bGluZS1ub25lJyxcbiAgICAgICAgICAgIHBvcG92ZXJDbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0SXRlbVZhbHVlKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBnZXRJdGVtTGFiZWwoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Q29udGVudCA9IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbUNoZWNrIGNsYXNzTmFtZT1cIm1yLTAuNSB0ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRydW5jYXRlXCI+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50SXRlbVNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAgICBrZXk9e3ZhbHVlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbGcgcHgtMiBweS0xLjUgaG92ZXI6Y3Vyc29yLXBvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgJ3Njcm9sbC1tLTEgb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICdob3ZlcjpiZy1ibGFjay9bMC4wNzVdIGRhcms6aG92ZXI6Ymctd2hpdGUvMTAnLFxuICAgICAgICAgICAgICAgICAgJ2RhdGEtW2FjdGl2ZS1pdGVtXTpiZy1ibGFjay9bMC4wNzVdIGRhcms6ZGF0YS1bYWN0aXZlLWl0ZW1dOmJnLXdoaXRlLzEwJyxcbiAgICAgICAgICAgICAgICAgICd3LWZ1bGwgbWluLXctMCB0ZXh0LXNtJyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1DbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtyZW5kZXJJdGVtQ29udGVudFxuICAgICAgICAgICAgICAgICAgPyAocmVuZGVySXRlbUNvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgaXNDdXJyZW50SXRlbVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICApIGFzIFJlYWN0LkpTWC5FbGVtZW50KVxuICAgICAgICAgICAgICAgICAgOiAoZGVmYXVsdENvbnRlbnQgYXMgUmVhY3QuSlNYLkVsZW1lbnQpfVxuICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L1NlbGVjdFBvcG92ZXI+XG4gICAgICA8L1NlbGVjdFByb3ZpZGVyPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEFyaWFraXQgZnJvbSAnQGFyaWFraXQvcmVhY3QnO1xuaW1wb3J0IHR5cGUgKiBhcyB0IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5pbXBvcnQgJy4vRHJvcGRvd24uY3NzJztcblxuaW50ZXJmYWNlIERyb3Bkb3duUHJvcHMge1xuICBrZXlQcmVmaXg/OiBzdHJpbmc7XG4gIHRyaWdnZXI6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgaXRlbXM6IHQuTWVudUl0ZW1Qcm9wc1tdO1xuICBpc09wZW46IGJvb2xlYW47XG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpY29uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBpdGVtQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzYW1lV2lkdGg/OiBib29sZWFuO1xuICBhbmNob3I/OiB7IHg6IHN0cmluZzsgeTogc3RyaW5nIH07XG4gIGd1dHRlcj86IG51bWJlcjtcbiAgbW9kYWw/OiBib29sZWFuO1xuICBwb3J0YWw/OiBib29sZWFuO1xuICBwcmVzZXJ2ZVRhYk9yZGVyPzogYm9vbGVhbjtcbiAgZm9jdXNMb29wPzogYm9vbGVhbjtcbiAgbWVudUlkOiBzdHJpbmc7XG4gIG1vdW50QnlTdGF0ZT86IGJvb2xlYW47XG4gIHVubW91bnRPbkhpZGU/OiBib29sZWFuO1xuICBmaW5hbEZvY3VzPzogUmVhY3QuUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn1cblxudHlwZSBNZW51UHJvcHMgPSBPbWl0PFxuICBEcm9wZG93blByb3BzLFxuICAndHJpZ2dlcicgfCAnaXNPcGVuJyB8ICdzZXRJc09wZW4nIHwgJ2ZvY3VzTG9vcCcgfCAnbW91bnRCeVN0YXRlJ1xuPiAmXG4gIEFyaWFraXQuTWVudVByb3BzO1xuXG5jb25zdCBEcm9wZG93blBvcHVwOiBSZWFjdC5GQzxEcm9wZG93blByb3BzPiA9ICh7XG4gIHRyaWdnZXIsXG4gIGlzT3BlbixcbiAgc2V0SXNPcGVuLFxuICBmb2N1c0xvb3AsXG4gIG1vdW50QnlTdGF0ZSxcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgbWVudSA9IEFyaWFraXQudXNlTWVudVN0b3JlKHsgb3BlbjogaXNPcGVuLCBzZXRPcGVuOiBzZXRJc09wZW4sIGZvY3VzTG9vcCB9KTtcbiAgaWYgKG1vdW50QnlTdGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXJpYWtpdC5NZW51UHJvdmlkZXIgc3RvcmU9e21lbnV9PlxuICAgICAgICB7dHJpZ2dlcn1cbiAgICAgICAge2lzT3BlbiAmJiA8TWVudSB7Li4ucHJvcHN9IC8+fVxuICAgICAgPC9Bcmlha2l0Lk1lbnVQcm92aWRlcj5cbiAgICApO1xuICB9XG4gIHJldHVybiAoXG4gICAgPEFyaWFraXQuTWVudVByb3ZpZGVyIHN0b3JlPXttZW51fT5cbiAgICAgIHt0cmlnZ2VyfVxuICAgICAgPE1lbnUgey4uLnByb3BzfSAvPlxuICAgIDwvQXJpYWtpdC5NZW51UHJvdmlkZXI+XG4gICk7XG59O1xuXG5jb25zdCBNZW51OiBSZWFjdC5GQzxNZW51UHJvcHM+ID0gKHtcbiAgaXRlbXMsXG4gIG1lbnVJZCxcbiAga2V5UHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGljb25DbGFzc05hbWUsXG4gIGl0ZW1DbGFzc05hbWUsXG4gIG1vZGFsLFxuICBwb3J0YWwsXG4gIHNhbWVXaWR0aCxcbiAgZ3V0dGVyID0gOCxcbiAgZmluYWxGb2N1cyxcbiAgdW5tb3VudE9uSGlkZSxcbiAgcHJlc2VydmVUYWJPcmRlcixcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgbWVudVN0b3JlID0gQXJpYWtpdC51c2VNZW51U3RvcmUoKTtcbiAgY29uc3QgbWVudSA9IEFyaWFraXQudXNlTWVudUNvbnRleHQoKTtcbiAgcmV0dXJuIChcbiAgICA8QXJpYWtpdC5NZW51XG4gICAgICBpZD17bWVudUlkfVxuICAgICAgbW9kYWw9e21vZGFsfVxuICAgICAgZ3V0dGVyPXtndXR0ZXJ9XG4gICAgICBwb3J0YWw9e3BvcnRhbH1cbiAgICAgIHNhbWVXaWR0aD17c2FtZVdpZHRofVxuICAgICAgZmluYWxGb2N1cz17ZmluYWxGb2N1c31cbiAgICAgIHVubW91bnRPbkhpZGU9e3VubW91bnRPbkhpZGV9XG4gICAgICBwcmVzZXJ2ZVRhYk9yZGVyPXtwcmVzZXJ2ZVRhYk9yZGVyfVxuICAgICAgY2xhc3NOYW1lPXtjbigncG9wb3Zlci11aSB6LTQwJywgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7aXRlbXNcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zaG93ICE9PSBmYWxzZSlcbiAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHN1Ykl0ZW1zIH0gPSBpdGVtO1xuICAgICAgICAgIGlmIChpdGVtLnNlcGFyYXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gPEFyaWFraXQuTWVudVNlcGFyYXRvciBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJteS0xIGgtcHggYm9yZGVyLWJvcmRlci1tZWRpdW1cIiAvPjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN1Ykl0ZW1zICYmIHN1Ykl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxBcmlha2l0Lk1lbnVQcm92aWRlclxuICAgICAgICAgICAgICAgIHN0b3JlPXttZW51U3RvcmV9XG4gICAgICAgICAgICAgICAga2V5PXtgJHtrZXlQcmVmaXggPz8gJyd9JHtpbmRleH0tJHtpdGVtLmlkID8/ICcnfS1wcm92aWRlcmB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8QXJpYWtpdC5NZW51QnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZ3JvdXAgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiByb3VuZGVkLWxnIHB4LTMgcHktMy41IHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnkgb3V0bGluZS1ub25lIGhvdmVyOmJnLXN1cmZhY2UtaG92ZXIgZm9jdXM6Ymctc3VyZmFjZS1ob3ZlciBtZDpweC0yLjUgbWQ6cHktMicsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1DbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2l0ZW0uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICBpZD17aXRlbS5pZH1cbiAgICAgICAgICAgICAgICAgIHJlbmRlcj17aXRlbS5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICByZWY9e2l0ZW0ucmVmfVxuICAgICAgICAgICAgICAgICAgLy8gaGlkZU9uQ2xpY2s9e2l0ZW0uaGlkZU9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAge2l0ZW0uaWNvbiAhPSBudWxsICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NuKCdtci0yIHNpemUtNCcsIGljb25DbGFzc05hbWUpfSBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLmljb259XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxBcmlha2l0Lk1lbnVCdXR0b25BcnJvdyBjbGFzc05hbWU9XCJzdHJva2UtMSB0ZXh0LWJhc2Ugb3BhY2l0eS03NVwiIC8+XG4gICAgICAgICAgICAgICAgPC9Bcmlha2l0Lk1lbnVCdXR0b24+XG4gICAgICAgICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgICAgICAgIGl0ZW1zPXtzdWJJdGVtc31cbiAgICAgICAgICAgICAgICAgIG1lbnVJZD17YCR7bWVudUlkfS0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2tleVByZWZpeCA/PyAnJ30ke2luZGV4fS0ke2l0ZW0uaWQgPz8gJyd9YH1cbiAgICAgICAgICAgICAgICAgIGd1dHRlcj17MTJ9XG4gICAgICAgICAgICAgICAgICBwb3J0YWw9e3RydWV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Bcmlha2l0Lk1lbnVQcm92aWRlcj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBcmlha2l0Lk1lbnVJdGVtXG4gICAgICAgICAgICAgIGtleT17YCR7a2V5UHJlZml4ID8/ICcnfSR7aW5kZXh9LSR7aXRlbS5pZCA/PyAnJ31gfVxuICAgICAgICAgICAgICBpZD17aXRlbS5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAnZ3JvdXAgZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbGcgcHgtMyBweS0zLjUgdGV4dC1zbSB0ZXh0LXRleHQtcHJpbWFyeSBvdXRsaW5lLW5vbmUgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBmb2N1czpiZy1zdXJmYWNlLWhvdmVyIG1kOnB4LTIuNSBtZDpweS0yJyxcbiAgICAgICAgICAgICAgICBpdGVtQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3NOYW1lLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgcmVuZGVyPXtpdGVtLnJlbmRlcn1cbiAgICAgICAgICAgICAgcmVmPXtpdGVtLnJlZn1cbiAgICAgICAgICAgICAgaGlkZU9uQ2xpY2s9e2l0ZW0uaGlkZU9uQ2xpY2t9XG4gICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2l0ZW0uYXJpYUhhc1BvcHVwfVxuICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtpdGVtLmFyaWFDb250cm9sc31cbiAgICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oaWRlT25DbGljayA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVudT8uaGlkZSgpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXRlbS5pY29uICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oJ21yLTIgc2l6ZS00JywgaWNvbkNsYXNzTmFtZSl9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge2l0ZW0uaWNvbn1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICB7aXRlbS5rYmQgIT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJtbC1hdXRvIGhpZGRlbiBmb250LXNhbnMgdGV4dC14cyB0ZXh0LWJsYWNrLzUwIGdyb3VwLWhvdmVyOmlubGluZSBncm91cC1mb2N1czppbmxpbmUgZGFyazp0ZXh0LXdoaXRlLzUwXCI+XG4gICAgICAgICAgICAgICAgICDijJh7aXRlbS5rYmR9XG4gICAgICAgICAgICAgICAgPC9rYmQ+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FyaWFraXQuTWVudUl0ZW0+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgPC9Bcmlha2l0Lk1lbnU+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blBvcHVwO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURlbGF5ZWRSZW5kZXIgfSBmcm9tICd+L2hvb2tzJztcblxuaW50ZXJmYWNlIERlbGF5ZWRSZW5kZXJQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IERlbGF5ZWRSZW5kZXIgPSAoeyBkZWxheSwgY2hpbGRyZW4gfTogRGVsYXllZFJlbmRlclByb3BzKSA9PlxuICB1c2VEZWxheWVkUmVuZGVyKGRlbGF5KSgoKSA9PiBjaGlsZHJlbik7XG5cbmV4cG9ydCBkZWZhdWx0IERlbGF5ZWRSZW5kZXI7XG4iLCJpbXBvcnQgeyBJVGhlbWVSR0IsIElUaGVtZVZhcmlhYmxlcyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgUkdCIHN0cmluZyBmb3JtYXQgKGUuZy4sIFwiMjU1IDI1NSAyNTVcIilcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVSR0IocmdiOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFyZ2IpIHJldHVybiB0cnVlO1xuICBjb25zdCByZ2JSZWdleCA9IC9eKFxcZHsxLDN9KVxccysoXFxkezEsM30pXFxzKyhcXGR7MSwzfSkkLztcbiAgY29uc3QgbWF0Y2ggPSByZ2IubWF0Y2gocmdiUmVnZXgpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWxzZTtcblxuICAvLyBDaGVjayB0aGF0IGVhY2ggdmFsdWUgaXMgYmV0d2VlbiAwLTI1NVxuICBjb25zdCBbLCByLCBnLCBiXSA9IG1hdGNoO1xuICByZXR1cm4gW3IsIGcsIGJdLmV2ZXJ5KCh2YWwpID0+IHtcbiAgICBjb25zdCBudW0gPSBwYXJzZUludCh2YWwsIDEwKTtcbiAgICByZXR1cm4gbnVtID49IDAgJiYgbnVtIDw9IDI1NTtcbiAgfSk7XG59XG5cbi8qKlxuICogTWFwcyB0aGVtZSBSR0IgdmFsdWVzIHRvIENTUyB2YXJpYWJsZXNcbiAqL1xuZnVuY3Rpb24gbWFwVGhlbWUocmdiOiBJVGhlbWVSR0IpOiBQYXJ0aWFsPElUaGVtZVZhcmlhYmxlcz4ge1xuICBjb25zdCB2YXJpYWJsZXM6IFBhcnRpYWw8SVRoZW1lVmFyaWFibGVzPiA9IHt9O1xuXG4gIC8vIE1hcCBlYWNoIFJHQiB2YWx1ZSB0byBpdHMgY29ycmVzcG9uZGluZyBDU1MgdmFyaWFibGVcbiAgY29uc3QgbWFwcGluZ3M6IFJlY29yZDxrZXlvZiBJVGhlbWVSR0IsIGtleW9mIElUaGVtZVZhcmlhYmxlcz4gPSB7XG4gICAgJ3JnYi10ZXh0LXByaW1hcnknOiAnLS10ZXh0LXByaW1hcnknLFxuICAgICdyZ2ItdGV4dC1zZWNvbmRhcnknOiAnLS10ZXh0LXNlY29uZGFyeScsXG4gICAgJ3JnYi10ZXh0LXNlY29uZGFyeS1hbHQnOiAnLS10ZXh0LXNlY29uZGFyeS1hbHQnLFxuICAgICdyZ2ItdGV4dC10ZXJ0aWFyeSc6ICctLXRleHQtdGVydGlhcnknLFxuICAgICdyZ2ItdGV4dC13YXJuaW5nJzogJy0tdGV4dC13YXJuaW5nJyxcbiAgICAncmdiLXJpbmctcHJpbWFyeSc6ICctLXJpbmctcHJpbWFyeScsXG4gICAgJ3JnYi1oZWFkZXItcHJpbWFyeSc6ICctLWhlYWRlci1wcmltYXJ5JyxcbiAgICAncmdiLWhlYWRlci1ob3Zlcic6ICctLWhlYWRlci1ob3ZlcicsXG4gICAgJ3JnYi1oZWFkZXItYnV0dG9uLWhvdmVyJzogJy0taGVhZGVyLWJ1dHRvbi1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWFjdGl2ZSc6ICctLXN1cmZhY2UtYWN0aXZlJyxcbiAgICAncmdiLXN1cmZhY2UtYWN0aXZlLWFsdCc6ICctLXN1cmZhY2UtYWN0aXZlLWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLWhvdmVyJzogJy0tc3VyZmFjZS1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWhvdmVyLWFsdCc6ICctLXN1cmZhY2UtaG92ZXItYWx0JyxcbiAgICAncmdiLXN1cmZhY2UtcHJpbWFyeSc6ICctLXN1cmZhY2UtcHJpbWFyeScsXG4gICAgJ3JnYi1zdXJmYWNlLXByaW1hcnktYWx0JzogJy0tc3VyZmFjZS1wcmltYXJ5LWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLXByaW1hcnktY29udHJhc3QnOiAnLS1zdXJmYWNlLXByaW1hcnktY29udHJhc3QnLFxuICAgICdyZ2Itc3VyZmFjZS1zZWNvbmRhcnknOiAnLS1zdXJmYWNlLXNlY29uZGFyeScsXG4gICAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeS1hbHQnOiAnLS1zdXJmYWNlLXNlY29uZGFyeS1hbHQnLFxuICAgICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeSc6ICctLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeS1hbHQnOiAnLS1zdXJmYWNlLXRlcnRpYXJ5LWFsdCcsXG4gICAgJ3JnYi1zdXJmYWNlLWRpYWxvZyc6ICctLXN1cmZhY2UtZGlhbG9nJyxcbiAgICAncmdiLXN1cmZhY2Utc3VibWl0JzogJy0tc3VyZmFjZS1zdWJtaXQnLFxuICAgICdyZ2Itc3VyZmFjZS1zdWJtaXQtaG92ZXInOiAnLS1zdXJmYWNlLXN1Ym1pdC1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlJzogJy0tc3VyZmFjZS1kZXN0cnVjdGl2ZScsXG4gICAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlLWhvdmVyJzogJy0tc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3ZlcicsXG4gICAgJ3JnYi1zdXJmYWNlLWNoYXQnOiAnLS1zdXJmYWNlLWNoYXQnLFxuICAgICdyZ2ItYm9yZGVyLWxpZ2h0JzogJy0tYm9yZGVyLWxpZ2h0JyxcbiAgICAncmdiLWJvcmRlci1tZWRpdW0nOiAnLS1ib3JkZXItbWVkaXVtJyxcbiAgICAncmdiLWJvcmRlci1tZWRpdW0tYWx0JzogJy0tYm9yZGVyLW1lZGl1bS1hbHQnLFxuICAgICdyZ2ItYm9yZGVyLWhlYXZ5JzogJy0tYm9yZGVyLWhlYXZ5JyxcbiAgICAncmdiLWJvcmRlci14aGVhdnknOiAnLS1ib3JkZXIteGhlYXZ5JyxcbiAgICAncmdiLWJyYW5kLXB1cnBsZSc6ICctLWJyYW5kLXB1cnBsZScsXG4gICAgJ3JnYi1wcmVzZW50YXRpb24nOiAnLS1wcmVzZW50YXRpb24nLFxuXG4gICAgLy8gVXRpbGl0eSBjb2xvcnNcbiAgICAncmdiLWJhY2tncm91bmQnOiAnLS1iYWNrZ3JvdW5kJyxcbiAgICAncmdiLWZvcmVncm91bmQnOiAnLS1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLXByaW1hcnknOiAnLS1wcmltYXJ5JyxcbiAgICAncmdiLXByaW1hcnktZm9yZWdyb3VuZCc6ICctLXByaW1hcnktZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1zZWNvbmRhcnknOiAnLS1zZWNvbmRhcnknLFxuICAgICdyZ2Itc2Vjb25kYXJ5LWZvcmVncm91bmQnOiAnLS1zZWNvbmRhcnktZm9yZWdyb3VuZCcsXG4gICAgJ3JnYi1tdXRlZCc6ICctLW11dGVkJyxcbiAgICAncmdiLW11dGVkLWZvcmVncm91bmQnOiAnLS1tdXRlZC1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLWFjY2VudCc6ICctLWFjY2VudCcsXG4gICAgJ3JnYi1hY2NlbnQtZm9yZWdyb3VuZCc6ICctLWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLWRlc3RydWN0aXZlLWZvcmVncm91bmQnOiAnLS1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kJyxcbiAgICAncmdiLWJvcmRlcic6ICctLWJvcmRlcicsXG4gICAgJ3JnYi1pbnB1dCc6ICctLWlucHV0JyxcbiAgICAncmdiLXJpbmcnOiAnLS1yaW5nJyxcbiAgICAncmdiLWNhcmQnOiAnLS1jYXJkJyxcbiAgICAncmdiLWNhcmQtZm9yZWdyb3VuZCc6ICctLWNhcmQtZm9yZWdyb3VuZCcsXG4gIH07XG5cbiAgT2JqZWN0LmVudHJpZXMobWFwcGluZ3MpLmZvckVhY2goKFtyZ2JLZXksIGNzc1Zhcl0pID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHJnYltyZ2JLZXkgYXMga2V5b2YgSVRoZW1lUkdCXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhcmlhYmxlc1tjc3NWYXJdID0gdmFsdWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgdGhlbWUgdG8gdGhlIGRvY3VtZW50IHJvb3RcbiAqIFNldHMgQ1NTIHZhcmlhYmxlcyBhcyByZ2IoKSB2YWx1ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBDU1NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwbHlUaGVtZSh0aGVtZVJHQj86IElUaGVtZVJHQikge1xuICBpZiAoIXRoZW1lUkdCKSByZXR1cm47XG5cbiAgY29uc3QgdGhlbWVPYmplY3QgPSBtYXBUaGVtZSh0aGVtZVJHQik7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgT2JqZWN0LmVudHJpZXModGhlbWVPYmplY3QpLmZvckVhY2goKFtjc3NWYXIsIHZhbHVlXSkgPT4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVJHQih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIFJHQiB2YWx1ZSBmb3IgJHtjc3NWYXJ9OiAke3ZhbHVlfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgQ1NTIHZhcmlhYmxlIGFzIHJnYigpIHZhbHVlIGZvciBjb21wYXRpYmlsaXR5XG4gICAgLy8gVGhpcyBlbnN1cmVzIGV4aXN0aW5nIENTUyB0aGF0IGV4cGVjdHMgY29sb3IgdmFsdWVzIChub3Qgc3BhY2Utc2VwYXJhdGVkIFJHQikgY29udGludWVzIHRvIHdvcmtcbiAgICByb290LnN0eWxlLnNldFByb3BlcnR5KGNzc1ZhciwgYHJnYigke3ZhbHVlfSlgKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgeyBhdG9tV2l0aFN0b3JhZ2UgfSBmcm9tICdqb3RhaS91dGlscyc7XG5pbXBvcnQgeyBJVGhlbWVSR0IgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogQXRvbSBmb3Igc3RvcmluZyB0aGUgdGhlbWUgbW9kZSAobGlnaHQvZGFyay9zeXN0ZW0pIGluIGxvY2FsU3RvcmFnZVxuICogS2V5OiAnY29sb3ItdGhlbWUnXG4gKi9cbmV4cG9ydCBjb25zdCB0aGVtZU1vZGVBdG9tID0gYXRvbVdpdGhTdG9yYWdlPHN0cmluZz4oJ2NvbG9yLXRoZW1lJywgJ3N5c3RlbScsIHVuZGVmaW5lZCwge1xuICBnZXRPbkluaXQ6IHRydWUsXG59KTtcblxuLyoqXG4gKiBBdG9tIGZvciBzdG9yaW5nIGN1c3RvbSB0aGVtZSBjb2xvcnMgaW4gbG9jYWxTdG9yYWdlXG4gKiBLZXk6ICd0aGVtZS1jb2xvcnMnXG4gKi9cbmV4cG9ydCBjb25zdCB0aGVtZUNvbG9yc0F0b20gPSBhdG9tV2l0aFN0b3JhZ2U8SVRoZW1lUkdCIHwgdW5kZWZpbmVkPihcbiAgJ3RoZW1lLWNvbG9ycycsXG4gIHVuZGVmaW5lZCxcbiAgdW5kZWZpbmVkLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9LFxuKTtcblxuLyoqXG4gKiBBdG9tIGZvciBzdG9yaW5nIHRoZSB0aGVtZSBuYW1lIGluIGxvY2FsU3RvcmFnZVxuICogS2V5OiAndGhlbWUtbmFtZSdcbiAqL1xuZXhwb3J0IGNvbnN0IHRoZW1lTmFtZUF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nIHwgdW5kZWZpbmVkPihcbiAgJ3RoZW1lLW5hbWUnLFxuICB1bmRlZmluZWQsXG4gIHVuZGVmaW5lZCxcbiAge1xuICAgIGdldE9uSW5pdDogdHJ1ZSxcbiAgfSxcbik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBhcHBseVRoZW1lIGZyb20gJy4uL3V0aWxzL2FwcGx5VGhlbWUnO1xuaW1wb3J0IHsgdGhlbWVNb2RlQXRvbSwgdGhlbWVDb2xvcnNBdG9tLCB0aGVtZU5hbWVBdG9tIH0gZnJvbSAnLi4vYXRvbXMvdGhlbWVBdG9tcyc7XG5cbnR5cGUgVGhlbWVDb250ZXh0VHlwZSA9IHtcbiAgdGhlbWU6IHN0cmluZzsgLy8gJ2xpZ2h0JyB8ICdkYXJrJyB8ICdzeXN0ZW0nXG4gIHNldFRoZW1lOiAodGhlbWU6IHN0cmluZykgPT4gdm9pZDtcbiAgdGhlbWVSR0I/OiBJVGhlbWVSR0I7XG4gIHNldFRoZW1lUkdCOiAoY29sb3JzPzogSVRoZW1lUkdCKSA9PiB2b2lkO1xuICB0aGVtZU5hbWU/OiBzdHJpbmc7XG4gIHNldFRoZW1lTmFtZTogKG5hbWU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlc2V0VGhlbWU6ICgpID0+IHZvaWQ7XG59O1xuXG4vLyBFeHBvcnQgVGhlbWVDb250ZXh0IHNvIGl0IGNhbiBiZSBpbXBvcnRlZCBmcm9tIGhvb2tzXG5leHBvcnQgY29uc3QgVGhlbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxUaGVtZUNvbnRleHRUeXBlPih7XG4gIHRoZW1lOiAnc3lzdGVtJyxcbiAgc2V0VGhlbWU6ICgpID0+IHVuZGVmaW5lZCxcbiAgc2V0VGhlbWVSR0I6ICgpID0+IHVuZGVmaW5lZCxcbiAgc2V0VGhlbWVOYW1lOiAoKSA9PiB1bmRlZmluZWQsXG4gIHJlc2V0VGhlbWU6ICgpID0+IHVuZGVmaW5lZCxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRoZW1lUkdCPzogSVRoZW1lUkdCO1xuICB0aGVtZU5hbWU/OiBzdHJpbmc7XG4gIGluaXRpYWxUaGVtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGVtZSBpcyBkYXJrXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RhcmsgPSAodGhlbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBpZiAodGhlbWUgPT09ICdzeXN0ZW0nKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcztcbiAgfVxuICByZXR1cm4gdGhlbWUgPT09ICdkYXJrJztcbn07XG5cbi8qKlxuICogVGhlbWVQcm92aWRlciBjb21wb25lbnQgdGhhdCBoYW5kbGVzIGJvdGggZGFyay9saWdodCBtb2RlIHN3aXRjaGluZ1xuICogYW5kIGR5bmFtaWMgY29sb3IgdGhlbWVzIHZpYSBDU1MgdmFyaWFibGVzIHdpdGggbG9jYWxTdG9yYWdlIHBlcnNpc3RlbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIHRoZW1lUkdCOiBwcm9wVGhlbWVSR0IsXG4gIHRoZW1lTmFtZTogcHJvcFRoZW1lTmFtZSxcbiAgaW5pdGlhbFRoZW1lLFxufTogVGhlbWVQcm92aWRlclByb3BzKSB7XG4gIC8vIFVzZSBqb3RhaSBhdG9tcyBmb3IgcGVyc2lzdGVudCBzdGF0ZVxuICBjb25zdCBbdGhlbWUsIHNldFRoZW1lXSA9IHVzZUF0b20odGhlbWVNb2RlQXRvbSk7XG4gIGNvbnN0IFtzdG9yZWRUaGVtZVJHQiwgc2V0U3RvcmVkVGhlbWVSR0JdID0gdXNlQXRvbSh0aGVtZUNvbG9yc0F0b20pO1xuICBjb25zdCBbc3RvcmVkVGhlbWVOYW1lLCBzZXRTdG9yZWRUaGVtZU5hbWVdID0gdXNlQXRvbSh0aGVtZU5hbWVBdG9tKTtcblxuICAvLyBUcmFjayBpZiBwcm9wcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWRcbiAgY29uc3QgcHJvcHNJbml0aWFsaXplZCA9IHVzZVJlZihmYWxzZSk7XG5cbiAgLy8gSW5pdGlhbGl6ZSBmcm9tIHByb3BzIG9ubHkgb25jZSBvbiBtb3VudFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcHJvcHNJbml0aWFsaXplZC5jdXJyZW50KSB7XG4gICAgICBwcm9wc0luaXRpYWxpemVkLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAvLyBTZXQgaW5pdGlhbCB0aGVtZSBpZiBwcm92aWRlZFxuICAgICAgaWYgKGluaXRpYWxUaGVtZSkge1xuICAgICAgICBzZXRUaGVtZShpbml0aWFsVGhlbWUpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgaW5pdGlhbCB0aGVtZSBjb2xvcnMgaWYgcHJvdmlkZWRcbiAgICAgIGlmIChwcm9wVGhlbWVSR0IpIHtcbiAgICAgICAgc2V0U3RvcmVkVGhlbWVSR0IocHJvcFRoZW1lUkdCKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IGluaXRpYWwgdGhlbWUgbmFtZSBpZiBwcm92aWRlZFxuICAgICAgaWYgKHByb3BUaGVtZU5hbWUpIHtcbiAgICAgICAgc2V0U3RvcmVkVGhlbWVOYW1lKHByb3BUaGVtZU5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2luaXRpYWxUaGVtZSwgcHJvcFRoZW1lUkdCLCBwcm9wVGhlbWVOYW1lLCBzZXRUaGVtZSwgc2V0U3RvcmVkVGhlbWVSR0IsIHNldFN0b3JlZFRoZW1lTmFtZV0pO1xuXG4gIC8vIEFwcGx5IGNsYXNzLWJhc2VkIGRhcmsgbW9kZVxuICBjb25zdCBhcHBseVRoZW1lTW9kZSA9IHVzZUNhbGxiYWNrKChyYXdUaGVtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgZGFya01vZGUgPSBpc0RhcmsocmF3VGhlbWUpO1xuXG4gICAgcm9vdC5jbGFzc0xpc3QucmVtb3ZlKGRhcmtNb2RlID8gJ2xpZ2h0JyA6ICdkYXJrJyk7XG4gICAgcm9vdC5jbGFzc0xpc3QuYWRkKGRhcmtNb2RlID8gJ2RhcmsnIDogJ2xpZ2h0Jyk7XG4gIH0sIFtdKTtcblxuICAvLyBIYW5kbGUgc3lzdGVtIHRoZW1lIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTtcbiAgICBjb25zdCBjaGFuZ2VUaGVtZU9uU3lzdGVtQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoZW1lID09PSAnc3lzdGVtJykge1xuICAgICAgICBhcHBseVRoZW1lTW9kZSgnc3lzdGVtJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1lZGlhUXVlcnkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2hhbmdlVGhlbWVPblN5c3RlbUNoYW5nZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1lZGlhUXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2hhbmdlVGhlbWVPblN5c3RlbUNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW3RoZW1lLCBhcHBseVRoZW1lTW9kZV0pO1xuXG4gIC8vIEFwcGx5IGRhcmsvbGlnaHQgbW9kZSBjbGFzc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFwcGx5VGhlbWVNb2RlKHRoZW1lKTtcbiAgfSwgW3RoZW1lLCBhcHBseVRoZW1lTW9kZV0pO1xuXG4gIC8vIEFwcGx5IGR5bmFtaWMgY29sb3IgdGhlbWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RvcmVkVGhlbWVSR0IpIHtcbiAgICAgIGFwcGx5VGhlbWUoc3RvcmVkVGhlbWVSR0IpO1xuICAgIH1cbiAgfSwgW3N0b3JlZFRoZW1lUkdCXSk7XG5cbiAgLy8gUmVzZXQgdGhlbWUgZnVuY3Rpb25cbiAgY29uc3QgcmVzZXRUaGVtZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUaGVtZSgnc3lzdGVtJyk7XG4gICAgc2V0U3RvcmVkVGhlbWVSR0IodW5kZWZpbmVkKTtcbiAgICBzZXRTdG9yZWRUaGVtZU5hbWUodW5kZWZpbmVkKTtcbiAgICAvLyBSZW1vdmUgYW55IGN1c3RvbSBDU1MgdmFyaWFibGVzXG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjdXN0b21Qcm9wcyA9IEFycmF5LmZyb20ocm9vdC5zdHlsZSkuZmlsdGVyKChwcm9wKSA9PiBwcm9wLnN0YXJ0c1dpdGgoJy0tJykpO1xuICAgIGN1c3RvbVByb3BzLmZvckVhY2goKHByb3ApID0+IHJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkocHJvcCkpO1xuICB9LCBbc2V0VGhlbWUsIHNldFN0b3JlZFRoZW1lUkdCLCBzZXRTdG9yZWRUaGVtZU5hbWVdKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHRoZW1lLFxuICAgICAgc2V0VGhlbWUsXG4gICAgICB0aGVtZVJHQjogc3RvcmVkVGhlbWVSR0IsXG4gICAgICBzZXRUaGVtZVJHQjogc2V0U3RvcmVkVGhlbWVSR0IsXG4gICAgICB0aGVtZU5hbWU6IHN0b3JlZFRoZW1lTmFtZSxcbiAgICAgIHNldFRoZW1lTmFtZTogc2V0U3RvcmVkVGhlbWVOYW1lLFxuICAgICAgcmVzZXRUaGVtZSxcbiAgICB9KSxcbiAgICBbXG4gICAgICB0aGVtZSxcbiAgICAgIHNldFRoZW1lLFxuICAgICAgc3RvcmVkVGhlbWVSR0IsXG4gICAgICBzZXRTdG9yZWRUaGVtZVJHQixcbiAgICAgIHN0b3JlZFRoZW1lTmFtZSxcbiAgICAgIHNldFN0b3JlZFRoZW1lTmFtZSxcbiAgICAgIHJlc2V0VGhlbWUsXG4gICAgXSxcbiAgKTtcblxuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L1RoZW1lQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgdGhlbWUgY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlVGhlbWUgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFRoZW1lUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjtcbiIsImltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEZWZhdWx0IGxpZ2h0IHRoZW1lXG4gKiBSR0IgdmFsdWVzIGV4dHJhY3RlZCBmcm9tIHRoZSBleGlzdGluZyBDU1MgdmFyaWFibGVzXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWU6IElUaGVtZVJHQiA9IHtcbiAgLy8gVGV4dCBjb2xvcnNcbiAgJ3JnYi10ZXh0LXByaW1hcnknOiAnMzMgMzMgMzMnLCAvLyAjMjEyMTIxIChncmF5LTgwMClcbiAgJ3JnYi10ZXh0LXNlY29uZGFyeSc6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLXRleHQtc2Vjb25kYXJ5LWFsdCc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLXRleHQtdGVydGlhcnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcbiAgJ3JnYi10ZXh0LXdhcm5pbmcnOiAnMjQ1IDE1OCAxMScsIC8vICNmNTllMGIgKGFtYmVyLTUwMClcblxuICAvLyBSaW5nIGNvbG9yc1xuICAncmdiLXJpbmctcHJpbWFyeSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuXG4gIC8vIEhlYWRlciBjb2xvcnNcbiAgJ3JnYi1oZWFkZXItcHJpbWFyeSc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLWhlYWRlci1ob3Zlcic6ICcyNDcgMjQ3IDI0OCcsIC8vICNmN2Y3ZjggKGdyYXktNTApXG4gICdyZ2ItaGVhZGVyLWJ1dHRvbi1ob3Zlcic6ICcyNDcgMjQ3IDI0OCcsIC8vICNmN2Y3ZjggKGdyYXktNTApXG5cbiAgLy8gU3VyZmFjZSBjb2xvcnNcbiAgJ3JnYi1zdXJmYWNlLWFjdGl2ZSc6ICcyMzYgMjM2IDIzNicsIC8vICNlY2VjZWMgKGdyYXktMTAwKVxuICAncmdiLXN1cmZhY2UtYWN0aXZlLWFsdCc6ICcyMjcgMjI3IDIyNycsIC8vICNlM2UzZTMgKGdyYXktMjAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXInOiAnMjI3IDIyNyAyMjcnLCAvLyAjZTNlM2UzIChncmF5LTIwMClcbiAgJ3JnYi1zdXJmYWNlLWhvdmVyLWFsdCc6ICcyMDUgMjA1IDIwNScsIC8vICNjZGNkY2QgKGdyYXktMzAwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeSc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1hbHQnOiAnMjQ3IDI0NyAyNDgnLCAvLyAjZjdmN2Y4IChncmF5LTUwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1jb250cmFzdCc6ICcyMzYgMjM2IDIzNicsIC8vICNlY2VjZWMgKGdyYXktMTAwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5JzogJzI0NyAyNDcgMjQ4JywgLy8gI2Y3ZjdmOCAoZ3JheS01MClcbiAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeS1hbHQnOiAnMjI3IDIyNyAyMjcnLCAvLyAjZTNlM2UzIChncmF5LTIwMClcbiAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5JzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2Itc3VyZmFjZS10ZXJ0aWFyeS1hbHQnOiAnMjU1IDI1NSAyNTUnLCAvLyAjZmZmICh3aGl0ZSlcbiAgJ3JnYi1zdXJmYWNlLWRpYWxvZyc6ICcyNTUgMjU1IDI1NScsIC8vICNmZmYgKHdoaXRlKVxuICAncmdiLXN1cmZhY2Utc3VibWl0JzogJzQgMTIwIDg3JywgLy8gIzA0Nzg1NyAoZ3JlZW4tNzAwKVxuICAncmdiLXN1cmZhY2Utc3VibWl0LWhvdmVyJzogJzYgOTUgNzAnLCAvLyAjMDY1ZjQ2IChncmVlbi04MDApXG4gICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZSc6ICcxODUgMjggMjgnLCAvLyAjYjkxYzFjIChyZWQtNzAwKVxuICAncmdiLXN1cmZhY2UtZGVzdHJ1Y3RpdmUtaG92ZXInOiAnMTUzIDI3IDI3JywgLy8gIzk5MWIxYiAocmVkLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWNoYXQnOiAnMjU1IDI1NSAyNTUnLCAvLyAjZmZmICh3aGl0ZSlcblxuICAvLyBCb3JkZXIgY29sb3JzXG4gICdyZ2ItYm9yZGVyLWxpZ2h0JzogJzIyNyAyMjcgMjI3JywgLy8gI2UzZTNlMyAoZ3JheS0yMDApXG4gICdyZ2ItYm9yZGVyLW1lZGl1bSc6ICcyMDUgMjA1IDIwNScsIC8vICNjZGNkY2QgKGdyYXktMzAwKVxuICAncmdiLWJvcmRlci1tZWRpdW0tYWx0JzogJzIwNSAyMDUgMjA1JywgLy8gI2NkY2RjZCAoZ3JheS0zMDApXG4gICdyZ2ItYm9yZGVyLWhlYXZ5JzogJzE1MyAxNTAgMTUwJywgLy8gIzk5OTY5NiAoZ3JheS00MDApXG4gICdyZ2ItYm9yZGVyLXhoZWF2eSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuXG4gIC8vIEJyYW5kIGNvbG9yc1xuICAncmdiLWJyYW5kLXB1cnBsZSc6ICcxNzEgMTA0IDI1NScsIC8vICNhYjY4ZmZcblxuICAvLyBQcmVzZW50YXRpb25cbiAgJ3JnYi1wcmVzZW50YXRpb24nOiAnMjU1IDI1NSAyNTUnLCAvLyAjZmZmICh3aGl0ZSlcblxuICAvLyBVdGlsaXR5IGNvbG9ycyAobWFwcGVkIHRvIGV4aXN0aW5nIGNvbG9ycyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpXG4gICdyZ2ItYmFja2dyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgc3VyZmFjZS1wcmltYXJ5XG4gICdyZ2ItZm9yZWdyb3VuZCc6ICcxNyAxNyAxNycsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG4gICdyZ2ItcHJpbWFyeSc6ICcyMzUgMjM1IDIzNScsIC8vIFNhbWUgYXMgc3VyZmFjZS1hY3RpdmVcbiAgJ3JnYi1wcmltYXJ5LWZvcmVncm91bmQnOiAnMCAwIDAnLCAvLyBTYW1lIGFzIHN1cmZhY2UtcHJpbWFyeS1jb250cmFzdFxuICAncmdiLXNlY29uZGFyeSc6ICcyNDcgMjQ3IDI0OCcsIC8vIFNhbWUgYXMgc3VyZmFjZS1zZWNvbmRhcnlcbiAgJ3JnYi1zZWNvbmRhcnktZm9yZWdyb3VuZCc6ICc2NiA2NiA2NicsIC8vIFNhbWUgYXMgdGV4dC1zZWNvbmRhcnlcbiAgJ3JnYi1tdXRlZCc6ICcyNTAgMjUwIDI1MCcsIC8vIFNhbWUgYXMgc3VyZmFjZS10ZXJ0aWFyeVxuICAncmdiLW11dGVkLWZvcmVncm91bmQnOiAnMTIwIDEyMCAxMjAnLCAvLyBTYW1lIGFzIHRleHQtdGVydGlhcnlcbiAgJ3JnYi1hY2NlbnQnOiAnMjQ1IDI0NSAyNDUnLCAvLyBTYW1lIGFzIHN1cmZhY2UtYWN0aXZlLWFsdFxuICAncmdiLWFjY2VudC1mb3JlZ3JvdW5kJzogJzE3IDE3IDE3JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kJzogJzE3IDE3IDE3JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1ib3JkZXInOiAnMjE1IDIxNSAyMTUnLCAvLyBTYW1lIGFzIGJvcmRlci1tZWRpdW1cbiAgJ3JnYi1pbnB1dCc6ICcyMzAgMjMwIDIzMCcsIC8vIFNhbWUgYXMgYm9yZGVyLWxpZ2h0XG4gICdyZ2ItcmluZyc6ICcxODAgMTgwIDE4MCcsIC8vIFNhbWUgYXMgcmluZy1wcmltYXJ5XG4gICdyZ2ItY2FyZCc6ICcyNDcgMjQ3IDI0OCcsIC8vIFNhbWUgYXMgc3VyZmFjZS1zZWNvbmRhcnlcbiAgJ3JnYi1jYXJkLWZvcmVncm91bmQnOiAnMTcgMTcgMTcnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxufTtcbiIsImltcG9ydCB7IElUaGVtZVJHQiB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEYXJrIHRoZW1lXG4gKiBSR0IgdmFsdWVzIGV4dHJhY3RlZCBmcm9tIHRoZSBleGlzdGluZyBkYXJrIG1vZGUgQ1NTIHZhcmlhYmxlc1xuICovXG5leHBvcnQgY29uc3QgZGFya1RoZW1lOiBJVGhlbWVSR0IgPSB7XG4gIC8vIFRleHQgY29sb3JzXG4gICdyZ2ItdGV4dC1wcmltYXJ5JzogJzIzNiAyMzYgMjM2JywgLy8gI2VjZWNlYyAoZ3JheS0xMDApXG4gICdyZ2ItdGV4dC1zZWNvbmRhcnknOiAnMjA1IDIwNSAyMDUnLCAvLyAjY2RjZGNkIChncmF5LTMwMClcbiAgJ3JnYi10ZXh0LXNlY29uZGFyeS1hbHQnOiAnMTUzIDE1MCAxNTAnLCAvLyAjOTk5Njk2IChncmF5LTQwMClcbiAgJ3JnYi10ZXh0LXRlcnRpYXJ5JzogJzg5IDg5IDg5JywgLy8gIzU5NTk1OSAoZ3JheS01MDApXG4gICdyZ2ItdGV4dC13YXJuaW5nJzogJzI0NSAxNTggMTEnLCAvLyAjZjU5ZTBiIChhbWJlci01MDApXG5cbiAgLy8gUmluZyBjb2xvcnMgKG5vdCBkZWZpbmVkIGluIGRhcmsgbW9kZSwgdXNpbmcgZGVmYXVsdClcbiAgJ3JnYi1yaW5nLXByaW1hcnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcblxuICAvLyBIZWFkZXIgY29sb3JzXG4gICdyZ2ItaGVhZGVyLXByaW1hcnknOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcbiAgJ3JnYi1oZWFkZXItaG92ZXInOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1oZWFkZXItYnV0dG9uLWhvdmVyJzogJzQ3IDQ3IDQ3JywgLy8gIzJmMmYyZiAoZ3JheS03MDApXG5cbiAgLy8gU3VyZmFjZSBjb2xvcnNcbiAgJ3JnYi1zdXJmYWNlLWFjdGl2ZSc6ICc4OSA4OSA4OScsIC8vICM1OTU5NTkgKGdyYXktNTAwKVxuICAncmdiLXN1cmZhY2UtYWN0aXZlLWFsdCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLXN1cmZhY2UtaG92ZXInOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1zdXJmYWNlLWhvdmVyLWFsdCc6ICc2NiA2NiA2NicsIC8vICM0MjQyNDIgKGdyYXktNjAwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeSc6ICcxMyAxMyAxMycsIC8vICMwZDBkMGQgKGdyYXktOTAwKVxuICAncmdiLXN1cmZhY2UtcHJpbWFyeS1hbHQnOiAnMjMgMjMgMjMnLCAvLyAjMTcxNzE3IChncmF5LTg1MClcbiAgJ3JnYi1zdXJmYWNlLXByaW1hcnktY29udHJhc3QnOiAnMjMgMjMgMjMnLCAvLyAjMTcxNzE3IChncmF5LTg1MClcbiAgJ3JnYi1zdXJmYWNlLXNlY29uZGFyeSc6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuICAncmdiLXN1cmZhY2Utc2Vjb25kYXJ5LWFsdCc6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuICAncmdiLXN1cmZhY2UtdGVydGlhcnknOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcbiAgJ3JnYi1zdXJmYWNlLXRlcnRpYXJ5LWFsdCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuICAncmdiLXN1cmZhY2UtZGlhbG9nJzogJzIzIDIzIDIzJywgLy8gIzE3MTcxNyAoZ3JheS04NTApXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQnOiAnNCAxMjAgODcnLCAvLyAjMDQ3ODU3IChncmVlbi03MDApXG4gICdyZ2Itc3VyZmFjZS1zdWJtaXQtaG92ZXInOiAnNiA5NSA3MCcsIC8vICMwNjVmNDYgKGdyZWVuLTgwMClcbiAgJ3JnYi1zdXJmYWNlLWRlc3RydWN0aXZlJzogJzE1MyAyNyAyNycsIC8vICM5OTFiMWIgKHJlZC04MDApXG4gICdyZ2Itc3VyZmFjZS1kZXN0cnVjdGl2ZS1ob3Zlcic6ICcxMjcgMjkgMjknLCAvLyAjN2YxZDFkIChyZWQtOTAwKVxuICAncmdiLXN1cmZhY2UtY2hhdCc6ICc0NyA0NyA0NycsIC8vICMyZjJmMmYgKGdyYXktNzAwKVxuXG4gIC8vIEJvcmRlciBjb2xvcnNcbiAgJ3JnYi1ib3JkZXItbGlnaHQnOiAnNDcgNDcgNDcnLCAvLyAjMmYyZjJmIChncmF5LTcwMClcbiAgJ3JnYi1ib3JkZXItbWVkaXVtJzogJzY2IDY2IDY2JywgLy8gIzQyNDI0MiAoZ3JheS02MDApXG4gICdyZ2ItYm9yZGVyLW1lZGl1bS1hbHQnOiAnNjYgNjYgNjYnLCAvLyAjNDI0MjQyIChncmF5LTYwMClcbiAgJ3JnYi1ib3JkZXItaGVhdnknOiAnODkgODkgODknLCAvLyAjNTk1OTU5IChncmF5LTUwMClcbiAgJ3JnYi1ib3JkZXIteGhlYXZ5JzogJzE1MyAxNTAgMTUwJywgLy8gIzk5OTY5NiAoZ3JheS00MDApXG5cbiAgLy8gQnJhbmQgY29sb3JzXG4gICdyZ2ItYnJhbmQtcHVycGxlJzogJzE3MSAxMDQgMjU1JywgLy8gI2FiNjhmZlxuXG4gIC8vIFByZXNlbnRhdGlvblxuICAncmdiLXByZXNlbnRhdGlvbic6ICczMyAzMyAzMycsIC8vICMyMTIxMjEgKGdyYXktODAwKVxuXG4gIC8vIFV0aWxpdHkgY29sb3JzIChtYXBwZWQgdG8gZXhpc3RpbmcgY29sb3JzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcbiAgJ3JnYi1iYWNrZ3JvdW5kJzogJzMzIDMzIDMzJywgLy8gU2FtZSBhcyBzdXJmYWNlLXByaW1hcnlcbiAgJ3JnYi1mb3JlZ3JvdW5kJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyB0ZXh0LXByaW1hcnlcbiAgJ3JnYi1wcmltYXJ5JzogJzY2IDY2IDY2JywgLy8gU2FtZSBhcyBzdXJmYWNlLWFjdGl2ZVxuICAncmdiLXByaW1hcnktZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgc3VyZmFjZS1wcmltYXJ5LWNvbnRyYXN0XG4gICdyZ2Itc2Vjb25kYXJ5JzogJzQyIDQyIDQyJywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLXNlY29uZGFyeS1mb3JlZ3JvdW5kJzogJzE5MyAxOTMgMTkzJywgLy8gU2FtZSBhcyB0ZXh0LXNlY29uZGFyeVxuICAncmdiLW11dGVkJzogJzU2IDU2IDU2JywgLy8gU2FtZSBhcyBzdXJmYWNlLXRlcnRpYXJ5XG4gICdyZ2ItbXV0ZWQtZm9yZWdyb3VuZCc6ICcxNDAgMTQwIDE0MCcsIC8vIFNhbWUgYXMgdGV4dC10ZXJ0aWFyeVxuICAncmdiLWFjY2VudCc6ICc4MiA4MiA4MicsIC8vIFNhbWUgYXMgc3VyZmFjZS1hY3RpdmUtYWx0XG4gICdyZ2ItYWNjZW50LWZvcmVncm91bmQnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWRlc3RydWN0aXZlLWZvcmVncm91bmQnOiAnMjU1IDI1NSAyNTUnLCAvLyBTYW1lIGFzIHRleHQtcHJpbWFyeVxuICAncmdiLWJvcmRlcic6ICc4MiA4MiA4MicsIC8vIFNhbWUgYXMgYm9yZGVyLW1lZGl1bVxuICAncmdiLWlucHV0JzogJzY2IDY2IDY2JywgLy8gU2FtZSBhcyBib3JkZXItbGlnaHRcbiAgJ3JnYi1yaW5nJzogJzI1NSAyNTUgMjU1JywgLy8gU2FtZSBhcyByaW5nLXByaW1hcnlcbiAgJ3JnYi1jYXJkJzogJzQyIDQyIDQyJywgLy8gU2FtZSBhcyBzdXJmYWNlLXNlY29uZGFyeVxuICAncmdiLWNhcmQtZm9yZWdyb3VuZCc6ICcyNTUgMjU1IDI1NScsIC8vIFNhbWUgYXMgdGV4dC1wcmltYXJ5XG59O1xuIiwiaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTdW4sIE1vb24sIE1vbml0b3IgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgVGhlbWVDb250ZXh0LCBpc0RhcmsgfSBmcm9tICcuLi90aGVtZSc7XG5pbXBvcnQgeyB1c2VMb2NhbGl6ZSB9IGZyb20gJy4uL2hvb2tzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBsYXN0VGhlbWVDaGFuZ2U/OiBudW1iZXI7XG4gIH1cbn1cblxudHlwZSBUaGVtZVR5cGUgPSAnc3lzdGVtJyB8ICdkYXJrJyB8ICdsaWdodCc7XG5cbmNvbnN0IFRoZW1lID0gKHsgdGhlbWUsIG9uQ2hhbmdlIH06IHsgdGhlbWU6IHN0cmluZzsgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkIH0pID0+IHtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuXG4gIGNvbnN0IHRoZW1lSWNvbnM6IFJlY29yZDxUaGVtZVR5cGUsIEpTWC5FbGVtZW50PiA9IHtcbiAgICBzeXN0ZW06IDxNb25pdG9yIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+LFxuICAgIGRhcms6IDxNb29uIGNvbG9yPVwid2hpdGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPixcbiAgICBsaWdodDogPFN1biBhcmlhLWhpZGRlbj1cInRydWVcIiAvPixcbiAgfTtcblxuICBjb25zdCBuZXh0VGhlbWUgPSBpc0RhcmsodGhlbWUpID8gJ2xpZ2h0JyA6ICdkYXJrJztcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleVByZXNzID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChlLmN0cmxLZXkgJiYgZS5zaGlmdEtleSAmJiBlLmtleS50b0xvd2VyQ2FzZSgpID09PSAndCcpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkNoYW5nZShuZXh0VGhlbWUpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlQcmVzcyk7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5UHJlc3MpO1xuICB9LCBbbmV4dFRoZW1lLCBvbkNoYW5nZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1sZyBwLTIgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6Ymctc3VyZmFjZS1ob3ZlciBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctYmx1ZS02MDAgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGRhcms6Zm9jdXMtdmlzaWJsZTpyaW5nLTBcIlxuICAgICAgYXJpYS1sYWJlbD17bG9jYWxpemUoJ2NvbV91aV90b2dnbGVfdGhlbWUnKX1cbiAgICAgIGFyaWEta2V5c2hvcnRjdXRzPVwiQ3RybCtTaGlmdCtUXCJcbiAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25DaGFuZ2UobmV4dFRoZW1lKTtcbiAgICAgIH19XG4gICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIG9uQ2hhbmdlKG5leHRUaGVtZSk7XG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgPlxuICAgICAge3RoZW1lSWNvbnNbdGhlbWUgYXMgVGhlbWVUeXBlXX1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5cbmNvbnN0IFRoZW1lU2VsZWN0b3IgPSAoeyByZXR1cm5UaGVtZU9ubHkgfTogeyByZXR1cm5UaGVtZU9ubHk/OiBib29sZWFuIH0pID0+IHtcbiAgY29uc3QgeyB0aGVtZSwgc2V0VGhlbWUgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgY29uc3QgW2Fubm91bmNlbWVudCwgc2V0QW5ub3VuY2VtZW50XSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZSgpO1xuXG4gIGNvbnN0IGNoYW5nZVRoZW1lID0gdXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdy5sYXN0VGhlbWVDaGFuZ2UgPT09ICdudW1iZXInICYmIG5vdyAtIHdpbmRvdy5sYXN0VGhlbWVDaGFuZ2UgPCA1MDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgd2luZG93Lmxhc3RUaGVtZUNoYW5nZSA9IG5vdztcblxuICAgICAgc2V0VGhlbWUodmFsdWUpO1xuICAgICAgc2V0QW5ub3VuY2VtZW50KFxuICAgICAgICBpc0RhcmsodmFsdWUpXG4gICAgICAgICAgPyBsb2NhbGl6ZSgnY29tX3VpX2RhcmtfdGhlbWVfZW5hYmxlZCcpXG4gICAgICAgICAgOiBsb2NhbGl6ZSgnY29tX3VpX2xpZ2h0X3RoZW1lX2VuYWJsZWQnKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBbc2V0VGhlbWUsIGxvY2FsaXplXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGVtZSA9PT0gJ3N5c3RlbScpIHtcbiAgICAgIGNvbnN0IHByZWZlcnNEYXJrU2NoZW1lID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuICAgICAgc2V0VGhlbWUocHJlZmVyc0RhcmtTY2hlbWUgPyAnZGFyaycgOiAnbGlnaHQnKTtcbiAgICB9XG4gIH0sIFt0aGVtZSwgc2V0VGhlbWVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbm5vdW5jZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHNldEFubm91bmNlbWVudCgnJyksIDEwMDApO1xuICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB9XG4gIH0sIFthbm5vdW5jZW1lbnRdKTtcblxuICBpZiAocmV0dXJuVGhlbWVPbmx5ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIDxUaGVtZSB0aGVtZT17dGhlbWV9IG9uQ2hhbmdlPXtjaGFuZ2VUaGVtZX0gLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgcHQtNiBkYXJrOmJnLWdyYXktOTAwIHNtOnB0LTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIG0tNFwiPlxuICAgICAgICA8VGhlbWUgdGhlbWU9e3RoZW1lfSBvbkNoYW5nZT17Y2hhbmdlVGhlbWV9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICB7YW5ub3VuY2VtZW50fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaGVtZVNlbGVjdG9yO1xuIiwiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaXJjbGVIZWxwSWNvbiB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBIb3ZlckNhcmQsIEhvdmVyQ2FyZFRyaWdnZXIsIEhvdmVyQ2FyZFBvcnRhbCwgSG92ZXJDYXJkQ29udGVudCB9IGZyb20gJy4vSG92ZXJDYXJkJztcbmltcG9ydCB7IEVTaWRlIH0gZnJvbSAnfi9jb21tb24nO1xuXG50eXBlIEluZm9Ib3ZlckNhcmRQcm9wcyA9IHtcbiAgc2lkZT86IEVTaWRlO1xuICB0ZXh0OiBzdHJpbmc7XG59O1xuXG5jb25zdCBJbmZvSG92ZXJDYXJkID0gKHsgc2lkZSwgdGV4dCB9OiBJbmZvSG92ZXJDYXJkUHJvcHMpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxIb3ZlckNhcmQgb3BlbkRlbGF5PXs1MH0gb3Blbj17aXNPcGVufSBvbk9wZW5DaGFuZ2U9e3NldElzT3Blbn0+XG4gICAgICA8SG92ZXJDYXJkVHJpZ2dlclxuICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggY3Vyc29yLWhlbHAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtc20gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmctcHJpbWFyeSBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTJcIlxuICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRJc09wZW4odHJ1ZSl9XG4gICAgICAgIG9uQmx1cj17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgYXJpYS1sYWJlbD17dGV4dH1cbiAgICAgID5cbiAgICAgICAgPENpcmNsZUhlbHBJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC10ZXh0LXRlcnRpYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgIDwvSG92ZXJDYXJkVHJpZ2dlcj5cbiAgICAgIDxIb3ZlckNhcmRQb3J0YWw+XG4gICAgICAgIDxIb3ZlckNhcmRDb250ZW50IHNpZGU9e3NpZGV9IGNsYXNzTmFtZT1cInotWzk5OV0gdy04MFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LWgtWzgwdmhdIHNwYWNlLXktMiBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC10ZXh0LXNlY29uZGFyeVwiPnt0ZXh0fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9Ib3ZlckNhcmRDb250ZW50PlxuICAgICAgPC9Ib3ZlckNhcmRQb3J0YWw+XG4gICAgPC9Ib3ZlckNhcmQ+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbmZvSG92ZXJDYXJkO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2hlY2tib3gsIHVzZVN0b3JlU3RhdGUsIHVzZUNoZWNrYm94U3RvcmUgfSBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMnO1xuXG5jb25zdCBDaGVja2JveEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxJbnB1dEVsZW1lbnQsXG4gIHtcbiAgICBpY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRlZmF1bHRDaGVja2VkPzogYm9vbGVhbjtcbiAgICBpc0NoZWNrZWRDbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgc2V0VmFsdWU/OiAodmFsdWVzOiB7XG4gICAgICBlPzogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD47XG4gICAgICB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZztcbiAgICB9KSA9PiB2b2lkO1xuICB9XG4+KCh7IGljb24sIGxhYmVsLCBzZXRWYWx1ZSwgY2xhc3NOYW1lLCBjaGVja2VkLCBkZWZhdWx0Q2hlY2tlZCwgaXNDaGVja2VkQ2xhc3NOYW1lIH0sIHJlZikgPT4ge1xuICBjb25zdCBjaGVja2JveCA9IHVzZUNoZWNrYm94U3RvcmUoKTtcbiAgY29uc3QgaXNDaGVja2VkID0gdXNlU3RvcmVTdGF0ZShjaGVja2JveCwgKHN0YXRlKSA9PiBzdGF0ZT8udmFsdWUpO1xuICBjb25zdCBvbkNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHR5cGVvZiBpc0NoZWNrZWQgIT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRWYWx1ZT8uKHsgZSwgdmFsdWU6ICFpc0NoZWNrZWQgfSk7XG4gIH07XG5cbiAgLy8gU3luYyB3aXRoIGNvbnRyb2xsZWQgY2hlY2tlZCBwcm9wXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoZWNrZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hlY2tib3guc2V0VmFsdWUoY2hlY2tlZCk7XG4gICAgfVxuICB9LCBbY2hlY2tlZCwgY2hlY2tib3hdKTtcblxuICAvLyBTZXQgaW5pdGlhbCB2YWx1ZSBmcm9tIGRlZmF1bHRDaGVja2VkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRDaGVja2VkICE9PSB1bmRlZmluZWQgJiYgY2hlY2tlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGVja2JveC5zZXRWYWx1ZShkZWZhdWx0Q2hlY2tlZCk7XG4gICAgfVxuICB9LCBbZGVmYXVsdENoZWNrZWQsIGNoZWNrZWQsIGNoZWNrYm94XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc3RvcmU9e2NoZWNrYm94fVxuICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgLy8gQmFzZSBzdHlsaW5nIGZyb20gTXVsdGlTZWxlY3QncyBzZWxlY3RDbGFzc05hbWVcbiAgICAgICAgJ2dyb3VwIHJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMS41JyxcbiAgICAgICAgJ3JvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWJvcmRlci1tZWRpdW0gdGV4dC1zbSBmb250LW1lZGl1bScsXG4gICAgICAgICdzaXplLTkgcC0yIHRyYW5zaXRpb24tYWxsIG1kOnctZnVsbCBtZDpwLTMnLFxuICAgICAgICAnYmctdHJhbnNwYXJlbnQgc2hhZG93LXNtIGhvdmVyOmJnLXN1cmZhY2UtaG92ZXIgaG92ZXI6c2hhZG93LW1kIGFjdGl2ZTpzaGFkb3ctaW5uZXInLFxuXG4gICAgICAgIC8vIENoZWNrZWQgc3RhdGUgc3R5bGluZ1xuICAgICAgICBpc0NoZWNrZWQgJiYgaXNDaGVja2VkQ2xhc3NOYW1lICYmIGlzQ2hlY2tlZENsYXNzTmFtZSxcblxuICAgICAgICAvLyBBZGRpdGlvbmFsIGN1c3RvbSBjbGFzc2VzXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZW5kZXI9ezxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9e2xhYmVsfSAvPn1cbiAgICA+XG4gICAgICB7LyogSWNvbiBpZiBwcm92aWRlZCAqL31cbiAgICAgIHtpY29uICYmIDxzcGFuIGNsYXNzTmFtZT1cImljb24tbWQgdGV4dC10ZXh0LXByaW1hcnlcIj57aWNvbiBhcyBSZWFjdC5KU1guRWxlbWVudH08L3NwYW4+fVxuXG4gICAgICB7LyogU2hvdyB0aGUgbGFiZWwgb24gbGFyZ2VyIHNjcmVlbnMgKi99XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdHJ1bmNhdGUgbWQ6YmxvY2tcIj57bGFiZWx9PC9zcGFuPlxuICAgIDwvQ2hlY2tib3g+XG4gICk7XG59KTtcblxuQ2hlY2tib3hCdXR0b24uZGlzcGxheU5hbWUgPSAnQ2hlY2tib3hCdXR0b24nO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveEJ1dHRvbjtcbiIsImltcG9ydCB7IGZvcndhcmRSZWYsIFJlYWN0Tm9kZSwgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0Rlc2NyaXB0aW9uLFxuICBEaWFsb2dGb290ZXIsXG4gIERpYWxvZ0hlYWRlcixcbiAgRGlhbG9nVGl0bGUsXG59IGZyb20gJy4vRGlhbG9nJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscy8nO1xuXG50eXBlIFNlbGVjdGlvblByb3BzID0ge1xuICBzZWxlY3RIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgc2VsZWN0Q2xhc3Nlcz86IHN0cmluZztcbiAgc2VsZWN0VGV4dD86IHN0cmluZztcbn07XG5cbnR5cGUgRGlhbG9nVGVtcGxhdGVQcm9wcyA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG1haW4/OiBSZWFjdE5vZGU7XG4gIGJ1dHRvbnM/OiBSZWFjdE5vZGU7XG4gIGxlZnRCdXR0b25zPzogUmVhY3ROb2RlO1xuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25Qcm9wcztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGZvb3RlckNsYXNzTmFtZT86IHN0cmluZztcbiAgc2hvd0Nsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgc2hvd0NhbmNlbEJ1dHRvbj86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEaWFsb2dUZW1wbGF0ZSA9IGZvcndhcmRSZWYoKHByb3BzOiBEaWFsb2dUZW1wbGF0ZVByb3BzLCByZWY6IFJlZjxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgY29uc3Qge1xuICAgIHRpdGxlLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIG1haW4sXG4gICAgYnV0dG9ucyxcbiAgICBsZWZ0QnV0dG9ucyxcbiAgICBzZWxlY3Rpb24sXG4gICAgY2xhc3NOYW1lLFxuICAgIGhlYWRlckNsYXNzTmFtZSxcbiAgICBmb290ZXJDbGFzc05hbWUsXG4gICAgc2hvd0Nsb3NlQnV0dG9uLFxuICAgIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgc2VsZWN0SGFuZGxlciwgc2VsZWN0Q2xhc3Nlcywgc2VsZWN0VGV4dCB9ID0gc2VsZWN0aW9uIHx8IHt9O1xuICBjb25zdCBDYW5jZWwgPSAnY2FuY2VsJztcblxuICBjb25zdCBkZWZhdWx0U2VsZWN0ID1cbiAgICAnYmctZ3JheS04MDAgdGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1ncmF5LTcwMCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXJrOmJnLWdyYXktMjAwIGRhcms6dGV4dC1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktMjAwJztcbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nQ29udGVudFxuICAgICAgc2hvd0Nsb3NlQnV0dG9uPXtzaG93Q2xvc2VCdXR0b259XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3NoYWRvdy0yeGwgZGFyazpiZy1ncmF5LTcwMCcsIGNsYXNzTmFtZSB8fCAnJyl9XG4gICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICA+XG4gICAgICA8RGlhbG9nSGVhZGVyIGNsYXNzTmFtZT17Y24oaGVhZGVyQ2xhc3NOYW1lID8/ICcnKX0+XG4gICAgICAgIDxEaWFsb2dUaXRsZSBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIGxlYWRpbmctNiB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTIwMFwiPlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAge2Rlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICA8RGlhbG9nRGVzY3JpcHRpb24gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDBcIj5cbiAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICA8L0RpYWxvZ0Rlc2NyaXB0aW9uPlxuICAgICAgICApfVxuICAgICAgPC9EaWFsb2dIZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTZcIj57bWFpbiA/IG1haW4gOiBudWxsfTwvZGl2PlxuICAgICAgPERpYWxvZ0Zvb3RlciBjbGFzc05hbWU9e2Zvb3RlckNsYXNzTmFtZX0+XG4gICAgICAgIDxkaXY+e2xlZnRCdXR0b25zID8gbGVmdEJ1dHRvbnMgOiBudWxsfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC1hdXRvIGdhcC0zXCI+XG4gICAgICAgICAge3Nob3dDYW5jZWxCdXR0b24gJiYgKFxuICAgICAgICAgICAgPERpYWxvZ0Nsb3NlIGNsYXNzTmFtZT1cImJvcmRlci1ncmF5LTEwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgIHtDYW5jZWx9XG4gICAgICAgICAgICA8L0RpYWxvZ0Nsb3NlPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2J1dHRvbnMgPyBidXR0b25zIDogbnVsbH1cbiAgICAgICAgICB7c2VsZWN0aW9uID8gKFxuICAgICAgICAgICAgPERpYWxvZ0Nsb3NlXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEhhbmRsZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7XG4gICAgICAgICAgICAgICAgc2VsZWN0Q2xhc3NlcyB8fCBkZWZhdWx0U2VsZWN0XG4gICAgICAgICAgICAgIH0gaW5saW5lLWZsZXggaC0xMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBweC00IHB5LTIgdGV4dC1zbWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzZWxlY3RUZXh0fVxuICAgICAgICAgICAgPC9EaWFsb2dDbG9zZT5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0RpYWxvZ0Zvb3Rlcj5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgRGlhbG9nVGVtcGxhdGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgTGFiZWwsXG4gIExpc3Rib3gsXG4gIFRyYW5zaXRpb24sXG4gIExpc3Rib3hCdXR0b24sXG4gIExpc3Rib3hPcHRpb24sXG4gIExpc3Rib3hPcHRpb25zLFxufSBmcm9tICdAaGVhZGxlc3N1aS9yZWFjdCc7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbiwgT3B0aW9uV2l0aEljb24sIERyb3Bkb3duVmFsdWVTZXR0ZXIgfSBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgeyB1c2VNdWx0aVNlYXJjaCB9IGZyb20gJy4vTXVsdGlTZWFyY2gnO1xuaW1wb3J0IHsgQ2hlY2tNYXJrIH0gZnJvbSAnfi9zdmdzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbnR5cGUgU2VsZWN0RHJvcERvd25Qcm9wcyA9IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgT3B0aW9uIHwgT3B0aW9uV2l0aEljb247XG4gIHNldFZhbHVlOiBEcm9wZG93blZhbHVlU2V0dGVyIHwgKCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIGF2YWlsYWJsZVZhbHVlcz86IHN0cmluZ1tdIHwgT3B0aW9uW10gfCBPcHRpb25XaXRoSWNvbltdO1xuICBlbXB0eVRpdGxlPzogYm9vbGVhbjtcbiAgc2hvd0Fib3ZlPzogYm9vbGVhbjtcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcbiAgaWNvblNpZGU/OiAnbGVmdCcgfCAncmlnaHQnO1xuICBvcHRpb25JY29uU2lkZT86ICdsZWZ0JyB8ICdyaWdodCc7XG4gIHJlbmRlck9wdGlvbj86ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY29udGFpbmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBjdXJyZW50VmFsdWVDbGFzcz86IHN0cmluZztcbiAgb3B0aW9uc0xpc3RDbGFzcz86IHN0cmluZztcbiAgb3B0aW9uc0NsYXNzPzogc3RyaW5nO1xuICBzdWJDb250YWluZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHNlYXJjaENsYXNzTmFtZT86IHN0cmluZztcbiAgc2VhcmNoUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHNob3dPcHRpb25JY29uPzogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGdldE9wdGlvblRleHQob3B0aW9uOiBzdHJpbmcgfCBPcHRpb24gfCBPcHRpb25XaXRoSWNvbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBvcHRpb247XG4gIH1cbiAgaWYgKCdsYWJlbCcgaW4gb3B0aW9uKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5sYWJlbCA/PyAnJztcbiAgfVxuICBpZiAoJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICByZXR1cm4gKG9wdGlvbi52YWx1ZSA/PyAnJykgKyAnJztcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIFNlbGVjdERyb3BEb3duKHtcbiAgdGl0bGU6IF90aXRsZSxcbiAgdmFsdWUsXG4gIGRpc2FibGVkLFxuICBzZXRWYWx1ZSxcbiAgYXZhaWxhYmxlVmFsdWVzLFxuICBzaG93QWJvdmUgPSBmYWxzZSxcbiAgc2hvd0xhYmVsID0gdHJ1ZSxcbiAgZW1wdHlUaXRsZSA9IGZhbHNlLFxuICBpY29uU2lkZSA9ICdyaWdodCcsXG4gIG9wdGlvbkljb25TaWRlID0gJ2xlZnQnLFxuICBwbGFjZWhvbGRlcixcbiAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICBvcHRpb25zTGlzdENsYXNzLFxuICBvcHRpb25zQ2xhc3MsXG4gIGN1cnJlbnRWYWx1ZUNsYXNzLFxuICBzdWJDb250YWluZXJDbGFzc05hbWUsXG4gIGNsYXNzTmFtZSxcbiAgcmVuZGVyT3B0aW9uLFxuICBzZWFyY2hDbGFzc05hbWUsXG4gIHNlYXJjaFBsYWNlaG9sZGVyLFxuICBzaG93T3B0aW9uSWNvbiA9IGZhbHNlLFxufTogU2VsZWN0RHJvcERvd25Qcm9wcykge1xuICBjb25zdCB0cmFuc2l0aW9uUHJvcHMgPSB7IGNsYXNzTmFtZTogJ3RvcC1mdWxsIG10LTMnIH07XG4gIGlmIChzaG93QWJvdmUpIHtcbiAgICB0cmFuc2l0aW9uUHJvcHMuY2xhc3NOYW1lID0gJ2JvdHRvbS1mdWxsIG1iLTMnO1xuICB9XG5cbiAgbGV0IHRpdGxlID0gX3RpdGxlO1xuICBpZiAoZW1wdHlUaXRsZSkge1xuICAgIHRpdGxlID0gJyc7XG4gIH1cblxuICBjb25zdCB2YWx1ZXMgPSBhdmFpbGFibGVWYWx1ZXMgPz8gW107XG5cbiAgLy8gRW5hYmxlIHNlYXJjaGFibGUgc2VsZWN0IGlmIGVub3VnaCBpdGVtcyBhcmUgcHJvdmlkZWQuXG4gIGNvbnN0IFtmaWx0ZXJlZFZhbHVlcywgc2VhcmNoUmVuZGVyXSA9IHVzZU11bHRpU2VhcmNoPHN0cmluZ1tdIHwgT3B0aW9uW10+KHtcbiAgICBhdmFpbGFibGVPcHRpb25zOiB2YWx1ZXMsXG4gICAgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLFxuICAgIGdldFRleHRLZXlPdmVycmlkZTogKG9wdGlvbikgPT4gZ2V0T3B0aW9uVGV4dChvcHRpb24pLnRvVXBwZXJDYXNlKCksXG4gICAgY2xhc3NOYW1lOiBzZWFyY2hDbGFzc05hbWUsXG4gICAgZGlzYWJsZWQsXG4gIH0pO1xuICBjb25zdCBoYXNTZWFyY2hSZW5kZXIgPSBzZWFyY2hSZW5kZXIgIT0gbnVsbDtcbiAgY29uc3Qgb3B0aW9ucyA9IGhhc1NlYXJjaFJlbmRlciA/IGZpbHRlcmVkVmFsdWVzIDogdmFsdWVzO1xuICBjb25zdCByZW5kZXJJY29uID0gc2hvd09wdGlvbkljb24gJiYgdmFsdWUgIT0gbnVsbCAmJiAodmFsdWUgYXMgT3B0aW9uV2l0aEljb24pLmljb24gIT0gbnVsbDtcblxuICBjb25zdCBidXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMicsIGNvbnRhaW5lckNsYXNzTmFtZSA/PyAnJyl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdyZWxhdGl2ZSB3LWZ1bGwnLCBzdWJDb250YWluZXJDbGFzc05hbWUgPz8gJycpfT5cbiAgICAgICAgPExpc3Rib3ggdmFsdWU9e3ZhbHVlfSBvbkNoYW5nZT17c2V0VmFsdWV9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICAgICAgeyh7IG9wZW4gfSkgPT4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPExpc3Rib3hCdXR0b25cbiAgICAgICAgICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1kcm9wZG93bi1idXR0b25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3BlbiAmJiBidXR0b25SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlZi5jdXJyZW50LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLWRlZmF1bHQgZmxleC1jb2wgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJsYWNrLzEwIGJnLXdoaXRlIHB5LTIgcGwtMyBwci0xMCB0ZXh0LWxlZnQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGRpc2FibGVkOmJnLXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6YmctZ3JheS03MDAgc206dGV4dC1zbScsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWUgPz8gJycsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtzaG93TGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHRleHQteHMgdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS01MDBcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRsZXNzdWktbGlzdGJveC1sYWJlbC06cjE6XCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1oZWFkbGVzc3VpLXN0YXRlPVwiXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IHctZnVsbCB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAnZmxleCBoLTYgaXRlbXMtY2VudGVyIGdhcC0xIHRydW5jYXRlIHRleHQtc20gdGV4dC1ncmF5LTgwMCBkYXJrOnRleHQtd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICFzaG93TGFiZWwgPyAndGV4dC14cycgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWVDbGFzcyA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgeyFzaG93TGFiZWwgJiYgIWVtcHR5VGl0bGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS01MDBcIj57dGl0bGV9Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge3JlbmRlckljb24gJiYgb3B0aW9uSWNvblNpZGUgIT09ICdyaWdodCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImljb24tbWQgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsodmFsdWUgYXMgT3B0aW9uV2l0aEljb24pLmljb259XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7cmVuZGVySWNvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaWNvbi1tZCBhYnNvbHV0ZSByaWdodC0wIG1yLTggZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsodmFsdWUgYXMgT3B0aW9uV2l0aEljb24pLmljb259XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10ZXh0LXNlY29uZGFyeVwiPntwbGFjZWhvbGRlcn08L3NwYW4+O1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxhYmVsID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHItMlwiPlxuICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LWdyYXktNDAwXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Nob3dBYm92ZSA/IHsgdHJhbnNmb3JtOiAnc2NhbGVZKC0xKScgfSA6IHt9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiNiA5IDEyIDE1IDE4IDlcIj48L3BvbHlsaW5lPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L0xpc3Rib3hCdXR0b24+XG4gICAgICAgICAgICAgIDxUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgc2hvdz17b3Blbn1cbiAgICAgICAgICAgICAgICBhcz1cImRpdlwiXG4gICAgICAgICAgICAgICAgbGVhdmU9XCJ0cmFuc2l0aW9uIGVhc2UtaW4gZHVyYXRpb24tMTAwXCJcbiAgICAgICAgICAgICAgICBsZWF2ZUZyb209XCJvcGFjaXR5LTEwMFwiXG4gICAgICAgICAgICAgICAgbGVhdmVUbz1cIm9wYWNpdHktMFwiXG4gICAgICAgICAgICAgICAgey4uLnRyYW5zaXRpb25Qcm9wc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMaXN0Ym94T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgJ2Fic29sdXRlIHotMTAgbXQtMiBtYXgtaC02MCB3LWZ1bGwgb3ZlcmZsb3ctYXV0byByb3VuZGVkIGJvcmRlciBiZy13aGl0ZSB0ZXh0LXhzIHJpbmctYmxhY2svMTAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnJpbmctd2hpdGUvMjAgbWQ6dy1bMTAwJV0nLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zTGlzdENsYXNzID8/ICcnLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7cmVuZGVyT3B0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgPExpc3Rib3hPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9eydsaXN0Ym94LXJlbmRlci1vcHRpb24nfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCBoLVs0MnB4XSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHBsLTMgcHItOSB0ZXh0LWdyYXktODAwIGhvdmVyOmJnLWdyYXktMjAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0NsYXNzID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyT3B0aW9uKCkgYXMgUmVhY3QuSlNYLkVsZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgIDwvTGlzdGJveE9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7c2VhcmNoUmVuZGVyIGFzIFJlYWN0LkpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAge29wdGlvbnMubWFwKChvcHRpb246IHN0cmluZyB8IE9wdGlvbiwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudExhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IG9wdGlvbiA6IChvcHRpb24ubGFiZWwgPz8gb3B0aW9uLnZhbHVlID8/ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBvcHRpb24gOiAob3B0aW9uLnZhbHVlID8/ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEljb24gPVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKChvcHRpb24uaWNvbiBhcyBSZWFjdC5SZWFjdE5vZGUpID8/IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aXZlVmFsdWU6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCBPcHRpb24gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3RpdmVWYWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVWYWx1ZSA9IGFjdGl2ZVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxMaXN0Ym94T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsoeyBhY3RpdmUgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwIHJlbGF0aXZlIGZsZXggaC1bNDJweF0gY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiBwbC0zIHByLTkgdGV4dC1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTIwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPyAnYmctc3VyZmFjZS1hY3RpdmUgdGV4dC10ZXh0LXByaW1hcnknIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0NsYXNzID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxleCBoLTYgaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtZ3JheS04MDAgZGFyazp0ZXh0LWdyYXktMjAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9PT0gdmFsdWUgPyAnZm9udC1zZW1pYm9sZCcgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaWRlID09PSAnbGVmdCcgPyAnbWwtNCcgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRJY29uICE9IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXItMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uSWNvblNpZGUgPT09ICdyaWdodCcgPyAnYWJzb2x1dGUgcmlnaHQtMCBwci0yJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudExhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50VmFsdWUgPT09IGFjdGl2ZVZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fic29sdXRlIGluc2V0LXktMCBmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LWdyYXktODAwIGRhcms6dGV4dC1ncmF5LTIwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaWRlID09PSAnbGVmdCcgPyAnbGVmdC0wIHBsLTInIDogJ3JpZ2h0LTAgcHItMycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja01hcmsgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9MaXN0Ym94T3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9MaXN0Ym94T3B0aW9ucz5cbiAgICAgICAgICAgICAgPC9UcmFuc2l0aW9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9MaXN0Ym94PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdERyb3BEb3duO1xuIiwiaW1wb3J0ICogYXMgQXJpYWtpdCBmcm9tICdAYXJpYWtpdC9yZWFjdCc7XG5pbXBvcnQgeyBtYXRjaFNvcnRlciB9IGZyb20gJ21hdGNoLXNvcnRlcic7XG5pbXBvcnQgeyBTZWFyY2gsIENoZXZyb25Eb3duIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VSZWYsIG1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlbGVjdFJlbmRlcmVyIH0gZnJvbSAnQGFyaWFraXQvcmVhY3QtY29yZS9zZWxlY3Qvc2VsZWN0LXJlbmRlcmVyJztcbmltcG9ydCB0eXBlIHsgT3B0aW9uV2l0aEljb24gfSBmcm9tICd+L2NvbW1vbic7XG5pbXBvcnQgJy4vQW5pbWF0ZVBvcG92ZXIuY3NzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmludGVyZmFjZSBDb250cm9sQ29tYm9ib3hQcm9wcyB7XG4gIHNlbGVjdGVkVmFsdWU6IHN0cmluZztcbiAgZGlzcGxheVZhbHVlPzogc3RyaW5nO1xuICBpdGVtczogT3B0aW9uV2l0aEljb25bXTtcbiAgc2V0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBhcmlhTGFiZWw6IHN0cmluZztcbiAgc2VhcmNoUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHNlbGVjdFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgU2VsZWN0SWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY29udGFpbmVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBpY29uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93Q2FyYXQ/OiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaWNvblNpZGU/OiAnbGVmdCcgfCAncmlnaHQnO1xuICBzZWxlY3RJZD86IHN0cmluZztcbn1cblxuY29uc3QgUk9XX0hFSUdIVCA9IDM2O1xuXG5mdW5jdGlvbiBDb250cm9sQ29tYm9ib3goe1xuICBzZWxlY3RlZFZhbHVlLFxuICBkaXNwbGF5VmFsdWUsXG4gIGl0ZW1zLFxuICBzZXRWYWx1ZSxcbiAgYXJpYUxhYmVsLFxuICBzZWFyY2hQbGFjZWhvbGRlcixcbiAgc2VsZWN0UGxhY2Vob2xkZXIsXG4gIGNvbnRhaW5lckNsYXNzTmFtZSxcbiAgaXNDb2xsYXBzZWQsXG4gIFNlbGVjdEljb24sXG4gIHNob3dDYXJhdCxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCxcbiAgaWNvbkNsYXNzTmFtZSxcbiAgaWNvblNpZGUgPSAnbGVmdCcsXG4gIHNlbGVjdElkLFxufTogQ29udHJvbENvbWJvYm94UHJvcHMpIHtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtidXR0b25XaWR0aCwgc2V0QnV0dG9uV2lkdGhdID0gdXNlU3RhdGU8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZ2V0SXRlbSA9IChvcHRpb246IE9wdGlvbldpdGhJY29uKSA9PiAoe1xuICAgIGlkOiBgaXRlbS0ke29wdGlvbi52YWx1ZX1gLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGxhYmVsOiBvcHRpb24ubGFiZWwsXG4gICAgaWNvbjogb3B0aW9uLmljb24sXG4gIH0pO1xuXG4gIGNvbnN0IGNvbWJvYm94ID0gQXJpYWtpdC51c2VDb21ib2JveFN0b3JlKHtcbiAgICBkZWZhdWx0SXRlbXM6IGl0ZW1zLm1hcChnZXRJdGVtKSxcbiAgICByZXNldFZhbHVlT25IaWRlOiB0cnVlLFxuICAgIHZhbHVlOiBzZWFyY2hWYWx1ZSxcbiAgICBzZXRWYWx1ZTogc2V0U2VhcmNoVmFsdWUsXG4gIH0pO1xuXG4gIGNvbnN0IHNlbGVjdCA9IEFyaWFraXQudXNlU2VsZWN0U3RvcmUoe1xuICAgIGNvbWJvYm94LFxuICAgIGRlZmF1bHRJdGVtczogaXRlbXMubWFwKGdldEl0ZW0pLFxuICAgIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICAgIHNldFZhbHVlLFxuICB9KTtcblxuICBjb25zdCBtYXRjaGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IG1hdGNoU29ydGVyKGl0ZW1zLCBzZWFyY2hWYWx1ZSwge1xuICAgICAga2V5czogWyd2YWx1ZScsICdsYWJlbCddLFxuICAgICAgYmFzZVNvcnQ6IChhLCBiKSA9PiAoYS5pbmRleCA8IGIuaW5kZXggPyAtMSA6IDEpLFxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zLm1hcChnZXRJdGVtKTtcbiAgfSwgW3NlYXJjaFZhbHVlLCBpdGVtc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblJlZi5jdXJyZW50ICYmICFpc0NvbGxhcHNlZCkge1xuICAgICAgc2V0QnV0dG9uV2lkdGgoYnV0dG9uUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGgpO1xuICAgIH1cbiAgfSwgW2lzQ29sbGFwc2VkXSk7XG5cbiAgY29uc3Qgc2VsZWN0SWNvbkNsYXNzTmFtZSA9IGNuKFxuICAgICdmbGV4IGgtNSB3LTUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGwnLFxuICAgIGljb25DbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IG9wdGlvbkljb25DbGFzc05hbWUgPSBjbihcbiAgICAnbXItMiBmbGV4IGgtNSB3LTUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGwnLFxuICAgIGljb25DbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2ZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xJywgY29udGFpbmVyQ2xhc3NOYW1lKX0+XG4gICAgICA8QXJpYWtpdC5TZWxlY3RMYWJlbCBzdG9yZT17c2VsZWN0fSBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgIHthcmlhTGFiZWx9XG4gICAgICA8L0FyaWFraXQuU2VsZWN0TGFiZWw+XG4gICAgICA8QXJpYWtpdC5TZWxlY3RcbiAgICAgICAgcmVmPXtidXR0b25SZWZ9XG4gICAgICAgIHN0b3JlPXtzZWxlY3R9XG4gICAgICAgIGlkPXtzZWxlY3RJZH1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgYmctc3VyZmFjZS1zZWNvbmRhcnknLFxuICAgICAgICAgICd0ZXh0LXRleHQtcHJpbWFyeSBob3ZlcjpiZy1zdXJmYWNlLXRlcnRpYXJ5JyxcbiAgICAgICAgICAnYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQnLFxuICAgICAgICAgIGlzQ29sbGFwc2VkID8gJ2gtMTAgdy0xMCcgOiAnaC0xMCB3LWZ1bGwgcm91bmRlZC14bCBweC0zIHB5LTIgdGV4dC1zbScsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7U2VsZWN0SWNvbiAhPSBudWxsICYmIGljb25TaWRlID09PSAnbGVmdCcgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzZWxlY3RJY29uQ2xhc3NOYW1lfT57U2VsZWN0SWNvbn08L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc0NvbGxhcHNlZCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXgtZ3JvdyB0cnVuY2F0ZSB0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAge2Rpc3BsYXlWYWx1ZSAhPSBudWxsXG4gICAgICAgICAgICAgICAgPyBkaXNwbGF5VmFsdWUgfHwgc2VsZWN0UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICA6IHNlbGVjdGVkVmFsdWUgfHwgc2VsZWN0UGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7U2VsZWN0SWNvbiAhPSBudWxsICYmIGljb25TaWRlID09PSAncmlnaHQnICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3NlbGVjdEljb25DbGFzc05hbWV9PntTZWxlY3RJY29ufTwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtzaG93Q2FyYXQgJiYgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC10ZXh0LXNlY29uZGFyeVwiIC8+fVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9Bcmlha2l0LlNlbGVjdD5cbiAgICAgIDxBcmlha2l0LlNlbGVjdFBvcG92ZXJcbiAgICAgICAgc3RvcmU9e3NlbGVjdH1cbiAgICAgICAgZ3V0dGVyPXs0fVxuICAgICAgICBwb3J0YWxcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAnYW5pbWF0ZS1wb3BvdmVyIHotNDAgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXItbGlnaHQgYmctc3VyZmFjZS1zZWNvbmRhcnkgc2hhZG93LWxnJyxcbiAgICAgICAgKX1cbiAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGlzQ29sbGFwc2VkID8gJzMwMHB4JyA6IChidXR0b25XaWR0aCA/PyAnMzAwcHgnKSB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB5LTEuNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxTZWFyY2ggY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0zIHRvcC0xLzIgaC00IHctNCAtdHJhbnNsYXRlLXktMS8yIHRleHQtdGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDxBcmlha2l0LkNvbWJvYm94XG4gICAgICAgICAgICAgIHN0b3JlPXtjb21ib2JveH1cbiAgICAgICAgICAgICAgYXV0b1NlbGVjdFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJnLXN1cmZhY2Utc2Vjb25kYXJ5IHB5LTIgcGwtOSBwci0zIHRleHQtc20gdGV4dC10ZXh0LXByaW1hcnkgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC1oLVszMDBweF0gb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgIDxBcmlha2l0LkNvbWJvYm94TGlzdCBzdG9yZT17Y29tYm9ib3h9PlxuICAgICAgICAgICAgPFNlbGVjdFJlbmRlcmVyIHN0b3JlPXtzZWxlY3R9IGl0ZW1zPXttYXRjaGVzfSBpdGVtU2l6ZT17Uk9XX0hFSUdIVH0gb3ZlcnNjYW49ezV9PlxuICAgICAgICAgICAgICB7KHsgdmFsdWUsIGljb24sIGxhYmVsLCAuLi5pdGVtIH0pID0+IChcbiAgICAgICAgICAgICAgICA8QXJpYWtpdC5Db21ib2JveEl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17aXRlbS5pZH1cbiAgICAgICAgICAgICAgICAgIHsuLi5pdGVtfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgJ2ZsZXggdy1mdWxsIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBweC0zIHRleHQtc20nLFxuICAgICAgICAgICAgICAgICAgICAndGV4dC10ZXh0LXByaW1hcnkgaG92ZXI6Ymctc3VyZmFjZS10ZXJ0aWFyeScsXG4gICAgICAgICAgICAgICAgICAgICdkYXRhLVthY3RpdmUtaXRlbV06Ymctc3VyZmFjZS10ZXJ0aWFyeScsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgcmVuZGVyPXs8QXJpYWtpdC5TZWxlY3RJdGVtIHZhbHVlPXt2YWx1ZX0gLz59XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2ljb24gIT0gbnVsbCAmJiBpY29uU2lkZSA9PT0gJ2xlZnQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e29wdGlvbkljb25DbGFzc05hbWV9PntpY29ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXgtZ3JvdyB0cnVuY2F0ZSB0ZXh0LWxlZnRcIj57bGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAge2ljb24gIT0gbnVsbCAmJiBpY29uU2lkZSA9PT0gJ3JpZ2h0JyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtvcHRpb25JY29uQ2xhc3NOYW1lfT57aWNvbn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Bcmlha2l0LkNvbWJvYm94SXRlbT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU2VsZWN0UmVuZGVyZXI+XG4gICAgICAgICAgPC9Bcmlha2l0LkNvbWJvYm94TGlzdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0FyaWFraXQuU2VsZWN0UG9wb3Zlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhDb250cm9sQ29tYm9ib3gpO1xuIiwiaW1wb3J0IHsgZm9yd2FyZFJlZiwgUmVhY3ROb2RlLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBPR0RpYWxvZ1RpdGxlLFxuICBPR0RpYWxvZ0Nsb3NlLFxuICBPR0RpYWxvZ0Zvb3RlcixcbiAgT0dEaWFsb2dIZWFkZXIsXG4gIE9HRGlhbG9nQ29udGVudCxcbiAgT0dEaWFsb2dEZXNjcmlwdGlvbixcbn0gZnJvbSAnLi9PcmlnaW5hbERpYWxvZyc7XG5pbXBvcnQgeyB1c2VMb2NhbGl6ZSB9IGZyb20gJ34vaG9va3MnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJ34vc3Zncyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJ34vdXRpbHMvJztcblxudHlwZSBTZWxlY3Rpb25Qcm9wcyA9IHtcbiAgc2VsZWN0SGFuZGxlcj86ICgpID0+IHZvaWQ7XG4gIHNlbGVjdENsYXNzZXM/OiBzdHJpbmc7XG4gIHNlbGVjdFRleHQ/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG59O1xuXG50eXBlIERpYWxvZ1RlbXBsYXRlUHJvcHMgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBtYWluPzogUmVhY3ROb2RlO1xuICBidXR0b25zPzogUmVhY3ROb2RlO1xuICBsZWZ0QnV0dG9ucz86IFJlYWN0Tm9kZTtcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uUHJvcHM7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb3ZlcmxheUNsYXNzTmFtZT86IHN0cmluZztcbiAgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtYWluQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmb290ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIHNob3dDYW5jZWxCdXR0b24/OiBib29sZWFuO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IE9HRGlhbG9nVGVtcGxhdGUgPSBmb3J3YXJkUmVmKChwcm9wczogRGlhbG9nVGVtcGxhdGVQcm9wcywgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemUoKTtcbiAgY29uc3Qge1xuICAgIHRpdGxlLFxuICAgIG1haW4sXG4gICAgYnV0dG9ucyxcbiAgICBzZWxlY3Rpb24sXG4gICAgY2xhc3NOYW1lLFxuICAgIGxlZnRCdXR0b25zLFxuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgbWFpbkNsYXNzTmFtZSxcbiAgICBoZWFkZXJDbGFzc05hbWUsXG4gICAgZm9vdGVyQ2xhc3NOYW1lLFxuICAgIHNob3dDbG9zZUJ1dHRvbixcbiAgICBvdmVybGF5Q2xhc3NOYW1lLFxuICAgIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgc2VsZWN0SGFuZGxlciwgc2VsZWN0Q2xhc3Nlcywgc2VsZWN0VGV4dCwgaXNMb2FkaW5nIH0gPSBzZWxlY3Rpb24gfHwge307XG5cbiAgY29uc3QgZGVmYXVsdFNlbGVjdCA9XG4gICAgJ2JnLWdyYXktODAwIHRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ3JheS03MDAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazpiZy1ncmF5LTIwMCBkYXJrOnRleHQtZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTIwMCc7XG4gIHJldHVybiAoXG4gICAgPE9HRGlhbG9nQ29udGVudFxuICAgICAgb3ZlcmxheUNsYXNzTmFtZT17b3ZlcmxheUNsYXNzTmFtZX1cbiAgICAgIHNob3dDbG9zZUJ1dHRvbj17c2hvd0Nsb3NlQnV0dG9ufVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKCd3LTExLzEyIGJvcmRlci1ub25lIGJnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kJywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgID5cbiAgICAgIDxPR0RpYWxvZ0hlYWRlciBjbGFzc05hbWU9e2NuKGhlYWRlckNsYXNzTmFtZSA/PyAnJyl9PlxuICAgICAgICA8T0dEaWFsb2dUaXRsZT57dGl0bGV9PC9PR0RpYWxvZ1RpdGxlPlxuICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgIDxPR0RpYWxvZ0Rlc2NyaXB0aW9uIGNsYXNzTmFtZT1cIml0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgICAgIDwvT0dEaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvT0dEaWFsb2dIZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ3B4LTAgcHktMicsIG1haW5DbGFzc05hbWUpfT57bWFpbiAhPSBudWxsID8gbWFpbiA6IG51bGx9PC9kaXY+XG4gICAgICA8T0dEaWFsb2dGb290ZXIgY2xhc3NOYW1lPXtmb290ZXJDbGFzc05hbWV9PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHtsZWZ0QnV0dG9ucyAhPSBudWxsID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIGZsZXggaC1hdXRvIGdhcC0zIG1heC1zbTp3LWZ1bGwgbWF4LXNtOmZsZXgtY29sIHNtOm10LTAgc206ZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAge2xlZnRCdXR0b25zfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC1hdXRvIGdhcC0zIG1heC1zbTp3LWZ1bGwgbWF4LXNtOmZsZXgtY29sIHNtOmZsZXgtcm93XCI+XG4gICAgICAgICAge3Nob3dDYW5jZWxCdXR0b24gJiYgKFxuICAgICAgICAgICAgPE9HRGlhbG9nQ2xvc2UgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIGFyaWEtbGFiZWw9e2xvY2FsaXplKCdjb21fdWlfY2FuY2VsJyl9PlxuICAgICAgICAgICAgICAgIHtsb2NhbGl6ZSgnY29tX3VpX2NhbmNlbCcpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvT0dEaWFsb2dDbG9zZT5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtidXR0b25zICE9IG51bGwgPyBidXR0b25zIDogbnVsbH1cbiAgICAgICAgICB7c2VsZWN0aW9uID8gKFxuICAgICAgICAgICAgPE9HRGlhbG9nQ2xvc2VcbiAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0SGFuZGxlcn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtcbiAgICAgICAgICAgICAgICBzZWxlY3RDbGFzc2VzID8/IGRlZmF1bHRTZWxlY3RcbiAgICAgICAgICAgICAgfSBmbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyLW5vbmUgcHgtNCBweS0yIHRleHQtc20gZGlzYWJsZWQ6b3BhY2l0eS04MCBtYXgtc206b3JkZXItZmlyc3QgbWF4LXNtOnctZnVsbCBzbTpvcmRlci1ub25lYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzTG9hZGluZyA9PT0gdHJ1ZSA/IChcbiAgICAgICAgICAgICAgICA8U3Bpbm5lciBjbGFzc05hbWU9XCJzaXplLTQgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgKHNlbGVjdFRleHQgYXMgUmVhY3QuSlNYLkVsZW1lbnQpXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L09HRGlhbG9nQ2xvc2U+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9PR0RpYWxvZ0Zvb3Rlcj5cbiAgICA8L09HRGlhbG9nQ29udGVudD5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBPR0RpYWxvZ1RlbXBsYXRlO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICcuL0lucHV0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnfi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIElucHV0V2l0aERyb3Bkb3duUHJvcHMgPSBSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+ICYge1xuICBvcHRpb25zOiBzdHJpbmdbXTtcbiAgb25TZWxlY3Q/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmNvbnN0IElucHV0V2l0aERyb3Bkb3duID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBJbnB1dFdpdGhEcm9wZG93blByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCBvcHRpb25zLCBvblNlbGVjdCwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgocHJvcHMudmFsdWUgYXMgc3RyaW5nKSB8fCAnJyk7XG4gICAgY29uc3QgW2hpZ2hsaWdodGVkSW5kZXgsIHNldEhpZ2hsaWdodGVkSW5kZXhdID0gUmVhY3QudXNlU3RhdGUoLTEpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoLTEpO1xuICAgICAgaWYgKG9uU2VsZWN0KSB7XG4gICAgICAgIG9uU2VsZWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xuICAgICAgICBwcm9wcy5vbkNoYW5nZSh7IHRhcmdldDogeyB2YWx1ZSB9IH0gYXMgUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVJbnB1dENoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcbiAgICAgICAgcHJvcHMub25DaGFuZ2UoZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoIWlzT3Blbikge1xuICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRIaWdobGlnaHRlZEluZGV4KChwcmV2SW5kZXgpID0+XG4gICAgICAgICAgICAgIHByZXZJbmRleCA8IG9wdGlvbnMubGVuZ3RoIC0gMSA/IHByZXZJbmRleCArIDEgOiBwcmV2SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoKHByZXZJbmRleCkgPT4gKHByZXZJbmRleCA+IDAgPyBwcmV2SW5kZXggLSAxIDogMCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmIChpc09wZW4gJiYgaGlnaGxpZ2h0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGhhbmRsZVNlbGVjdChvcHRpb25zW2hpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoLTEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50ICYmICFpbnB1dFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCgtMSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHJlZj17aW5wdXRSZWZ9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVJbnB1dENoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJkcm9wZG93bi1saXN0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2JnLXN1cmZhY2Utc2Vjb25kYXJ5JywgY2xhc3NOYW1lID8/ICcnKX1cbiAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXRlcnRpYXJ5IGFic29sdXRlIGluc2V0LXktMCByaWdodC0wIGZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgcHgtMiBob3Zlcjp0ZXh0LXNlY29uZGFyeSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMSBmb2N1cy12aXNpYmxlOnJpbmctcmluZy1wcmltYXJ5XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2lzT3BlbiA/ICdDbG9zZSBkcm9wZG93bicgOiAnT3BlbiBkcm9wZG93bid9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTUgdy01XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICBkPVwiTTE5IDlsLTcgNy03LTdcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tbGlzdFwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB6LTEwIG10LTEgbWF4LWgtNjAgdy1mdWxsIG92ZXJmbG93LWF1dG8gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlci1tZWRpdW0gYmctc3VyZmFjZS1zZWNvbmRhcnkgc2hhZG93LWxnIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctcmluZy1wcmltYXJ5XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgJ2N1cnNvci1wb2ludGVyIHJvdW5kZWQtbWQgcHgtMyBweS0yJyxcbiAgICAgICAgICAgICAgICAgICdmb2N1czpiZy1zdXJmYWNlLXRlcnRpYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXJpbmctcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gaGlnaGxpZ2h0ZWRJbmRleFxuICAgICAgICAgICAgICAgICAgICA/ICdiZy1zdXJmYWNlLWFjdGl2ZSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtc2Vjb25kYXJ5IGhvdmVyOmJnLXN1cmZhY2UtdGVydGlhcnknLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0KG9wdGlvbil9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9LFxuKTtcblxuSW5wdXRXaXRoRHJvcGRvd24uZGlzcGxheU5hbWUgPSAnSW5wdXRXaXRoRHJvcGRvd24nO1xuXG5leHBvcnQgZGVmYXVsdCBJbnB1dFdpdGhEcm9wZG93bjtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVFNob3dUb2FzdCB9IGZyb20gJ34vY29tbW9uJztcbmltcG9ydCB1c2VUb2FzdCBmcm9tICd+L2hvb2tzL3VzZVRvYXN0JztcblxudHlwZSBUb2FzdENvbnRleHRUeXBlID0ge1xuICBzaG93VG9hc3Q6ICh7IG1lc3NhZ2UsIHNldmVyaXR5LCBzaG93SWNvbiwgZHVyYXRpb24gfTogVFNob3dUb2FzdCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBUb2FzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0PFRvYXN0Q29udGV4dFR5cGU+KHtcbiAgc2hvd1RvYXN0OiAoKSA9PiAoe30pLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUb2FzdENvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KFRvYXN0Q29udGV4dCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRvYXN0UHJvdmlkZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB7IHNob3dUb2FzdCB9ID0gdXNlVG9hc3QoKTtcblxuICByZXR1cm4gPFRvYXN0Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBzaG93VG9hc3QgfX0+e2NoaWxkcmVufTwvVG9hc3RDb250ZXh0LlByb3ZpZGVyPjtcbn1cbiJdLCJuYW1lcyI6WyJfanN4IiwiX2pzeHMiLCJEaWFsb2ciLCJEaWFsb2dUcmlnZ2VyIiwiRGlhbG9nUG9ydGFsIiwiRGlhbG9nT3ZlcmxheSIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dIZWFkZXIiLCJEaWFsb2dGb290ZXIiLCJEaWFsb2dUaXRsZSIsIkRpYWxvZ0Rlc2NyaXB0aW9uIiwiRGlhbG9nQ2xvc2UiLCJSZWFjdCIsIkNoZWNrSWNvbiIsIl9GcmFnbWVudCIsIlJhZGl4U2VsZWN0IiwiU2VhcmNoSWNvbiIsIlNlbGVjdCIsIlNlbGVjdExhYmVsIiwiU2VsZWN0SXRlbSIsIkNpcmNsZUhlbHBJY29uIiwiQ2hlY2tib3giLCJMYWJlbCIsIk9HRGlhbG9nQ29udGVudCIsIk9HRGlhbG9nSGVhZGVyIiwiT0dEaWFsb2dUaXRsZSIsIk9HRGlhbG9nRGVzY3JpcHRpb24iLCJPR0RpYWxvZ0Zvb3RlciIsIk9HRGlhbG9nQ2xvc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7TUFJYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQW9CLEtBQVk7QUFDcEQsSUFBQSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7O0FDTmEsTUFBQSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEtBQUk7QUFDM0MsSUFBQSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZTtBQUNyQyxJQUFBLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0IsUUFBUSxJQUFJO0FBQ1YsUUFBQSxLQUFLLElBQUk7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRDtBQUNGLFFBQUEsS0FBSyxJQUFJO1lBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDM0Q7QUFDRixRQUFBLEtBQUssTUFBTTtZQUNULElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZEO0FBQ0YsUUFBQSxLQUFLLElBQUk7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRDtB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
|