@sidekick-coder/zenith-kit 0.1.0 → 0.3.0
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/cli/commands/build.js +8 -2
- package/commands/release.js +1 -1
- package/dist/client/chunk-0Lt9GpW0.mjs +1 -0
- package/dist/client/index.d.mts +698 -52
- package/dist/client/index.mjs +2 -2
- package/dist/components/ClientOnly.vue.d.ts +16 -0
- package/dist/components/ColorPicker.vue.d.ts +82 -0
- package/dist/components/ColorWheel.vue.d.ts +11 -0
- package/dist/components/Component.vue.d.ts +28 -0
- package/dist/components/DashboardAddWidgetDrawer.vue.d.ts +26 -0
- package/dist/components/DashboardBody.vue.d.ts +13 -0
- package/dist/components/DashboardDrawer.vue.d.ts +35 -0
- package/dist/components/DashboardGridUnitInput.vue.d.ts +67 -0
- package/dist/components/DashboardWidget.vue.d.ts +18 -0
- package/dist/components/DashboardWidgetActionSetting.vue.d.ts +64 -0
- package/dist/components/DatePicker.vue.d.ts +62 -0
- package/dist/components/DialogForm.vue.d.ts +83 -0
- package/dist/components/FileUploader.vue.d.ts +135 -0
- package/dist/components/FormAutoFieldList.vue.d.ts +27 -0
- package/dist/components/FormAutocomplete.vue.d.ts +119 -0
- package/dist/components/FormColorPicker.vue.d.ts +59 -0
- package/dist/components/FormDatePicker.vue.d.ts +50 -0
- package/dist/components/FormFilePicker.vue.d.ts +89 -0
- package/dist/components/FormFileUploader.vue.d.ts +96 -0
- package/dist/components/FormImageUploader.vue.d.ts +115 -0
- package/dist/components/FormJsonInput.vue.d.ts +40 -0
- package/dist/components/FormSelect.vue.d.ts +60 -0
- package/dist/components/FormStringListInput.vue.d.ts +50 -0
- package/dist/components/FormSwitch.vue.d.ts +41 -0
- package/dist/components/FormTextField.vue.d.ts +123 -0
- package/dist/components/FormTextarea.vue.d.ts +41 -0
- package/dist/components/Icon.vue.d.ts +16 -0
- package/dist/components/Image.vue.d.ts +24 -0
- package/dist/components/JsonInput.vue.d.ts +64 -0
- package/dist/components/Logo.vue.d.ts +4 -0
- package/dist/components/LogoIcon.vue.d.ts +7 -0
- package/dist/components/ObjectInspect.vue.d.ts +64 -0
- package/dist/components/PageCrud.vue.d.ts +68 -0
- package/dist/components/PageSubtitle.vue.d.ts +26 -0
- package/dist/components/PageTable.vue.d.ts +14 -0
- package/dist/components/PageTitle.vue.d.ts +26 -0
- package/dist/components/StringListInput.vue.d.ts +43 -0
- package/dist/components/TextField.vue.d.ts +146 -0
- package/dist/components/UserMenu.vue.d.ts +21 -0
- package/dist/components/ZAlert.vue.d.ts +39 -0
- package/dist/components/ZAlertButton.vue.d.ts +80 -0
- package/dist/components/ZButton.vue.d.ts +95 -0
- package/dist/components/ZDataTable.vue.d.ts +53 -0
- package/dist/components/ZDataTablePagination.vue.d.ts +28 -0
- package/dist/components/ZDialogForm.vue.d.ts +76 -0
- package/dist/components/ZPagination.vue.d.ts +16 -0
- package/dist/components/ZSelect.vue.d.ts +189 -0
- package/dist/components/ZSwitch.vue.d.ts +25 -0
- package/dist/components/ZTextarea.vue.d.ts +31 -0
- package/dist/components/index.d.ts +681 -0
- package/dist/components/index.es.js +54764 -53506
- package/dist/components/styles.css +94 -1
- package/dist/components/ui/accordion/Accordion.vue.d.ts +20 -0
- package/dist/components/ui/accordion/AccordionContent.vue.d.ts +18 -0
- package/dist/components/ui/accordion/AccordionItem.vue.d.ts +18 -0
- package/dist/components/ui/accordion/AccordionTrigger.vue.d.ts +20 -0
- package/dist/components/ui/accordion/index.d.ts +4 -0
- package/dist/components/ui/alert/Alert.vue.d.ts +19 -0
- package/dist/components/ui/alert/AlertDescription.vue.d.ts +17 -0
- package/dist/components/ui/alert/AlertTitle.vue.d.ts +17 -0
- package/dist/components/ui/alert/index.d.ts +9 -0
- package/dist/components/ui/alert-dialog/AlertDialog.vue.d.ts +19 -0
- package/dist/components/ui/alert-dialog/AlertDialogAction.vue.d.ts +18 -0
- package/dist/components/ui/alert-dialog/AlertDialogCancel.vue.d.ts +18 -0
- package/dist/components/ui/alert-dialog/AlertDialogContent.vue.d.ts +32 -0
- package/dist/components/ui/alert-dialog/AlertDialogDescription.vue.d.ts +18 -0
- package/dist/components/ui/alert-dialog/AlertDialogFooter.vue.d.ts +17 -0
- package/dist/components/ui/alert-dialog/AlertDialogHeader.vue.d.ts +17 -0
- package/dist/components/ui/alert-dialog/AlertDialogTitle.vue.d.ts +18 -0
- package/dist/components/ui/alert-dialog/AlertDialogTrigger.vue.d.ts +15 -0
- package/dist/components/ui/alert-dialog/index.d.ts +9 -0
- package/dist/components/ui/aspect-ratio/AspectRatio.vue.d.ts +15 -0
- package/dist/components/ui/aspect-ratio/index.d.ts +1 -0
- package/dist/components/ui/avatar/Avatar.vue.d.ts +17 -0
- package/dist/components/ui/avatar/AvatarFallback.vue.d.ts +18 -0
- package/dist/components/ui/avatar/AvatarImage.vue.d.ts +15 -0
- package/dist/components/ui/avatar/index.d.ts +3 -0
- package/dist/components/ui/badge/Badge.vue.d.ts +20 -0
- package/dist/components/ui/badge/index.d.ts +7 -0
- package/dist/components/ui/breadcrumb/Breadcrumb.vue.d.ts +17 -0
- package/dist/components/ui/breadcrumb/BreadcrumbEllipsis.vue.d.ts +17 -0
- package/dist/components/ui/breadcrumb/BreadcrumbItem.vue.d.ts +17 -0
- package/dist/components/ui/breadcrumb/BreadcrumbLink.vue.d.ts +20 -0
- package/dist/components/ui/breadcrumb/BreadcrumbList.vue.d.ts +17 -0
- package/dist/components/ui/breadcrumb/BreadcrumbPage.vue.d.ts +17 -0
- package/dist/components/ui/breadcrumb/BreadcrumbSeparator.vue.d.ts +17 -0
- package/dist/components/ui/breadcrumb/index.d.ts +7 -0
- package/dist/components/ui/button/Button.vue.d.ts +23 -0
- package/dist/components/ui/button/index.d.ts +8 -0
- package/dist/components/ui/calendar/Calendar.vue.d.ts +14 -0
- package/dist/components/ui/calendar/CalendarCell.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarCellTrigger.vue.d.ts +20 -0
- package/dist/components/ui/calendar/CalendarGrid.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarGridBody.vue.d.ts +15 -0
- package/dist/components/ui/calendar/CalendarGridHead.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarGridRow.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarHeadCell.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarHeader.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarHeading.vue.d.ts +19 -0
- package/dist/components/ui/calendar/CalendarNextButton.vue.d.ts +18 -0
- package/dist/components/ui/calendar/CalendarPrevButton.vue.d.ts +18 -0
- package/dist/components/ui/calendar/index.d.ts +12 -0
- package/dist/components/ui/card/Card.vue.d.ts +18 -0
- package/dist/components/ui/card/CardAction.vue.d.ts +17 -0
- package/dist/components/ui/card/CardContent.vue.d.ts +17 -0
- package/dist/components/ui/card/CardDescription.vue.d.ts +17 -0
- package/dist/components/ui/card/CardFooter.vue.d.ts +17 -0
- package/dist/components/ui/card/CardHeader.vue.d.ts +17 -0
- package/dist/components/ui/card/CardTitle.vue.d.ts +17 -0
- package/dist/components/ui/card/index.d.ts +7 -0
- package/dist/components/ui/carousel/Carousel.vue.d.ts +39 -0
- package/dist/components/ui/carousel/CarouselContent.vue.d.ts +15 -0
- package/dist/components/ui/carousel/CarouselItem.vue.d.ts +15 -0
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +23 -0
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +23 -0
- package/dist/components/ui/carousel/index.d.ts +7 -0
- package/dist/components/ui/carousel/interface.d.ts +19 -0
- package/dist/components/ui/carousel/useCarousel.d.ts +22 -0
- package/dist/components/ui/checkbox/Checkbox.vue.d.ts +22 -0
- package/dist/components/ui/checkbox/index.d.ts +1 -0
- package/dist/components/ui/collapsible/Collapsible.vue.d.ts +21 -0
- package/dist/components/ui/collapsible/CollapsibleContent.vue.d.ts +15 -0
- package/dist/components/ui/collapsible/CollapsibleTrigger.vue.d.ts +15 -0
- package/dist/components/ui/collapsible/index.d.ts +3 -0
- package/dist/components/ui/combobox/Combobox.vue.d.ts +30 -0
- package/dist/components/ui/combobox/ComboboxAnchor.vue.d.ts +18 -0
- package/dist/components/ui/combobox/ComboboxEmpty.vue.d.ts +18 -0
- package/dist/components/ui/combobox/ComboboxGroup.vue.d.ts +19 -0
- package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +22 -0
- package/dist/components/ui/combobox/ComboboxItem.vue.d.ts +22 -0
- package/dist/components/ui/combobox/ComboboxItemIndicator.vue.d.ts +18 -0
- package/dist/components/ui/combobox/ComboboxList.vue.d.ts +36 -0
- package/dist/components/ui/combobox/ComboboxSeparator.vue.d.ts +18 -0
- package/dist/components/ui/combobox/ComboboxTrigger.vue.d.ts +18 -0
- package/dist/components/ui/combobox/ComboboxViewport.vue.d.ts +18 -0
- package/dist/components/ui/combobox/index.d.ts +11 -0
- package/dist/components/ui/command/Command.vue.d.ts +36 -0
- package/dist/components/ui/command/CommandDialog.vue.d.ts +26 -0
- package/dist/components/ui/command/CommandEmpty.vue.d.ts +18 -0
- package/dist/components/ui/command/CommandGroup.vue.d.ts +19 -0
- package/dist/components/ui/command/CommandInput.vue.d.ts +8 -0
- package/dist/components/ui/command/CommandItem.vue.d.ts +22 -0
- package/dist/components/ui/command/CommandList.vue.d.ts +18 -0
- package/dist/components/ui/command/CommandSeparator.vue.d.ts +18 -0
- package/dist/components/ui/command/CommandShortcut.vue.d.ts +17 -0
- package/dist/components/ui/command/index.d.ts +90 -0
- package/dist/components/ui/context-menu/ContextMenu.vue.d.ts +19 -0
- package/dist/components/ui/context-menu/ContextMenuCheckboxItem.vue.d.ts +24 -0
- package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +30 -0
- package/dist/components/ui/context-menu/ContextMenuGroup.vue.d.ts +15 -0
- package/dist/components/ui/context-menu/ContextMenuItem.vue.d.ts +26 -0
- package/dist/components/ui/context-menu/ContextMenuLabel.vue.d.ts +19 -0
- package/dist/components/ui/context-menu/ContextMenuRadioGroup.vue.d.ts +19 -0
- package/dist/components/ui/context-menu/ContextMenuRadioItem.vue.d.ts +22 -0
- package/dist/components/ui/context-menu/ContextMenuSeparator.vue.d.ts +8 -0
- package/dist/components/ui/context-menu/ContextMenuShortcut.vue.d.ts +17 -0
- package/dist/components/ui/context-menu/ContextMenuSub.vue.d.ts +19 -0
- package/dist/components/ui/context-menu/ContextMenuSubContent.vue.d.ts +34 -0
- package/dist/components/ui/context-menu/ContextMenuSubTrigger.vue.d.ts +19 -0
- package/dist/components/ui/context-menu/ContextMenuTrigger.vue.d.ts +15 -0
- package/dist/components/ui/context-menu/index.d.ts +14 -0
- package/dist/components/ui/dialog/Dialog.vue.d.ts +19 -0
- package/dist/components/ui/dialog/DialogClose.vue.d.ts +15 -0
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +33 -0
- package/dist/components/ui/dialog/DialogDescription.vue.d.ts +18 -0
- package/dist/components/ui/dialog/DialogFooter.vue.d.ts +17 -0
- package/dist/components/ui/dialog/DialogHeader.vue.d.ts +17 -0
- package/dist/components/ui/dialog/DialogOverlay.vue.d.ts +18 -0
- package/dist/components/ui/dialog/DialogScrollContent.vue.d.ts +32 -0
- package/dist/components/ui/dialog/DialogTitle.vue.d.ts +18 -0
- package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +15 -0
- package/dist/components/ui/dialog/index.d.ts +10 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +31 -0
- package/dist/components/ui/drawer/DrawerClose.vue.d.ts +15 -0
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +32 -0
- package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +18 -0
- package/dist/components/ui/drawer/DrawerFooter.vue.d.ts +17 -0
- package/dist/components/ui/drawer/DrawerHeader.vue.d.ts +17 -0
- package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +8 -0
- package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +18 -0
- package/dist/components/ui/drawer/DrawerTrigger.vue.d.ts +15 -0
- package/dist/components/ui/drawer/index.d.ts +9 -0
- package/dist/components/ui/dropdown-menu/DropdownMenu.vue.d.ts +19 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts +24 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +32 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuGroup.vue.d.ts +15 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuItem.vue.d.ts +22 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuLabel.vue.d.ts +19 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue.d.ts +19 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuRadioItem.vue.d.ts +22 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSeparator.vue.d.ts +8 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuShortcut.vue.d.ts +17 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSub.vue.d.ts +19 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +34 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue.d.ts +19 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuTrigger.vue.d.ts +15 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +15 -0
- package/dist/components/ui/form/FormControl.vue.d.ts +14 -0
- package/dist/components/ui/form/FormDescription.vue.d.ts +17 -0
- package/dist/components/ui/form/FormItem.vue.d.ts +17 -0
- package/dist/components/ui/form/FormLabel.vue.d.ts +18 -0
- package/dist/components/ui/form/FormMessage.vue.d.ts +7 -0
- package/dist/components/ui/form/index.d.ts +7 -0
- package/dist/components/ui/form/injectionKeys.d.ts +2 -0
- package/dist/components/ui/form/useFormField.d.ts +12 -0
- package/dist/components/ui/hover-card/HoverCard.vue.d.ts +19 -0
- package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +20 -0
- package/dist/components/ui/hover-card/HoverCardTrigger.vue.d.ts +15 -0
- package/dist/components/ui/hover-card/index.d.ts +3 -0
- package/dist/components/ui/input/Input.vue.d.ts +13 -0
- package/dist/components/ui/input/index.d.ts +1 -0
- package/dist/components/ui/label/Label.vue.d.ts +18 -0
- package/dist/components/ui/label/index.d.ts +1 -0
- package/dist/components/ui/menubar/Menubar.vue.d.ts +22 -0
- package/dist/components/ui/menubar/MenubarCheckboxItem.vue.d.ts +24 -0
- package/dist/components/ui/menubar/MenubarContent.vue.d.ts +22 -0
- package/dist/components/ui/menubar/MenubarGroup.vue.d.ts +15 -0
- package/dist/components/ui/menubar/MenubarItem.vue.d.ts +24 -0
- package/dist/components/ui/menubar/MenubarLabel.vue.d.ts +19 -0
- package/dist/components/ui/menubar/MenubarMenu.vue.d.ts +15 -0
- package/dist/components/ui/menubar/MenubarRadioGroup.vue.d.ts +19 -0
- package/dist/components/ui/menubar/MenubarRadioItem.vue.d.ts +22 -0
- package/dist/components/ui/menubar/MenubarSeparator.vue.d.ts +8 -0
- package/dist/components/ui/menubar/MenubarShortcut.vue.d.ts +17 -0
- package/dist/components/ui/menubar/MenubarSub.vue.d.ts +22 -0
- package/dist/components/ui/menubar/MenubarSubContent.vue.d.ts +34 -0
- package/dist/components/ui/menubar/MenubarSubTrigger.vue.d.ts +19 -0
- package/dist/components/ui/menubar/MenubarTrigger.vue.d.ts +18 -0
- package/dist/components/ui/menubar/index.d.ts +15 -0
- package/dist/components/ui/navigation-menu/NavigationMenu.vue.d.ts +25 -0
- package/dist/components/ui/navigation-menu/NavigationMenuContent.vue.d.ts +28 -0
- package/dist/components/ui/navigation-menu/NavigationMenuIndicator.vue.d.ts +8 -0
- package/dist/components/ui/navigation-menu/NavigationMenuItem.vue.d.ts +18 -0
- package/dist/components/ui/navigation-menu/NavigationMenuLink.vue.d.ts +26 -0
- package/dist/components/ui/navigation-menu/NavigationMenuList.vue.d.ts +18 -0
- package/dist/components/ui/navigation-menu/NavigationMenuTrigger.vue.d.ts +18 -0
- package/dist/components/ui/navigation-menu/NavigationMenuViewport.vue.d.ts +8 -0
- package/dist/components/ui/navigation-menu/index.d.ts +10 -0
- package/dist/components/ui/number-field/NumberField.vue.d.ts +22 -0
- package/dist/components/ui/number-field/NumberFieldContent.vue.d.ts +17 -0
- package/dist/components/ui/number-field/NumberFieldDecrement.vue.d.ts +18 -0
- package/dist/components/ui/number-field/NumberFieldIncrement.vue.d.ts +18 -0
- package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +7 -0
- package/dist/components/ui/number-field/index.d.ts +5 -0
- package/dist/components/ui/pagination/Pagination.vue.d.ts +22 -0
- package/dist/components/ui/pagination/PaginationContent.vue.d.ts +18 -0
- package/dist/components/ui/pagination/PaginationEllipsis.vue.d.ts +18 -0
- package/dist/components/ui/pagination/PaginationFirst.vue.d.ts +22 -0
- package/dist/components/ui/pagination/PaginationItem.vue.d.ts +23 -0
- package/dist/components/ui/pagination/PaginationLast.vue.d.ts +22 -0
- package/dist/components/ui/pagination/PaginationNext.vue.d.ts +22 -0
- package/dist/components/ui/pagination/PaginationPrevious.vue.d.ts +22 -0
- package/dist/components/ui/pagination/index.d.ts +8 -0
- package/dist/components/ui/pin-input/PinInput.vue.d.ts +24 -0
- package/dist/components/ui/pin-input/PinInputGroup.vue.d.ts +18 -0
- package/dist/components/ui/pin-input/PinInputSeparator.vue.d.ts +15 -0
- package/dist/components/ui/pin-input/PinInputSlot.vue.d.ts +8 -0
- package/dist/components/ui/pin-input/index.d.ts +4 -0
- package/dist/components/ui/popover/Popover.vue.d.ts +19 -0
- package/dist/components/ui/popover/PopoverAnchor.vue.d.ts +15 -0
- package/dist/components/ui/popover/PopoverContent.vue.d.ts +35 -0
- package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +15 -0
- package/dist/components/ui/popover/index.d.ts +4 -0
- package/dist/components/ui/progress/Progress.vue.d.ts +10 -0
- package/dist/components/ui/progress/index.d.ts +1 -0
- package/dist/components/ui/radio-group/RadioGroup.vue.d.ts +22 -0
- package/dist/components/ui/radio-group/RadioGroupItem.vue.d.ts +8 -0
- package/dist/components/ui/radio-group/index.d.ts +2 -0
- package/dist/components/ui/range-calendar/RangeCalendar.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarCell.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarCellTrigger.vue.d.ts +20 -0
- package/dist/components/ui/range-calendar/RangeCalendarGrid.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarGridBody.vue.d.ts +15 -0
- package/dist/components/ui/range-calendar/RangeCalendarGridHead.vue.d.ts +15 -0
- package/dist/components/ui/range-calendar/RangeCalendarGridRow.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarHeadCell.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarHeader.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarHeading.vue.d.ts +19 -0
- package/dist/components/ui/range-calendar/RangeCalendarNextButton.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/RangeCalendarPrevButton.vue.d.ts +18 -0
- package/dist/components/ui/range-calendar/index.d.ts +12 -0
- package/dist/components/ui/resizable/ResizableHandle.vue.d.ts +13 -0
- package/dist/components/ui/resizable/ResizablePanel.vue.d.ts +23 -0
- package/dist/components/ui/resizable/ResizablePanelGroup.vue.d.ts +22 -0
- package/dist/components/ui/resizable/index.d.ts +3 -0
- package/dist/components/ui/scroll-area/ScrollArea.vue.d.ts +18 -0
- package/dist/components/ui/scroll-area/ScrollBar.vue.d.ts +10 -0
- package/dist/components/ui/scroll-area/index.d.ts +2 -0
- package/dist/components/ui/select/Select.vue.d.ts +22 -0
- package/dist/components/ui/select/SelectContent.vue.d.ts +32 -0
- package/dist/components/ui/select/SelectGroup.vue.d.ts +15 -0
- package/dist/components/ui/select/SelectItem.vue.d.ts +18 -0
- package/dist/components/ui/select/SelectItemText.vue.d.ts +15 -0
- package/dist/components/ui/select/SelectLabel.vue.d.ts +18 -0
- package/dist/components/ui/select/SelectScrollDownButton.vue.d.ts +18 -0
- package/dist/components/ui/select/SelectScrollUpButton.vue.d.ts +18 -0
- package/dist/components/ui/select/SelectSeparator.vue.d.ts +8 -0
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +21 -0
- package/dist/components/ui/select/SelectValue.vue.d.ts +15 -0
- package/dist/components/ui/select/index.d.ts +11 -0
- package/dist/components/ui/separator/index.d.ts +1 -0
- package/dist/components/ui/sheet/Sheet.vue.d.ts +19 -0
- package/dist/components/ui/sheet/SheetClose.vue.d.ts +15 -0
- package/dist/components/ui/sheet/SheetContent.vue.d.ts +35 -0
- package/dist/components/ui/sheet/SheetDescription.vue.d.ts +18 -0
- package/dist/components/ui/sheet/SheetFooter.vue.d.ts +17 -0
- package/dist/components/ui/sheet/SheetHeader.vue.d.ts +17 -0
- package/dist/components/ui/sheet/SheetOverlay.vue.d.ts +18 -0
- package/dist/components/ui/sheet/SheetTitle.vue.d.ts +18 -0
- package/dist/components/ui/sheet/SheetTrigger.vue.d.ts +15 -0
- package/dist/components/ui/sheet/index.d.ts +8 -0
- package/dist/components/ui/sidebar/Sidebar.vue.d.ts +23 -0
- package/dist/components/ui/sidebar/SidebarContent.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarFooter.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarGroup.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarGroupAction.vue.d.ts +18 -0
- package/dist/components/ui/sidebar/SidebarGroupContent.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarGroupLabel.vue.d.ts +18 -0
- package/dist/components/ui/sidebar/SidebarHeader.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarInput.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarInset.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarMenu.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarMenuAction.vue.d.ts +21 -0
- package/dist/components/ui/sidebar/SidebarMenuBadge.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarMenuButton.vue.d.ts +25 -0
- package/dist/components/ui/sidebar/SidebarMenuButtonChild.vue.d.ts +26 -0
- package/dist/components/ui/sidebar/SidebarMenuItem.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarMenuSkeleton.vue.d.ts +8 -0
- package/dist/components/ui/sidebar/SidebarMenuSub.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarMenuSubButton.vue.d.ts +23 -0
- package/dist/components/ui/sidebar/SidebarMenuSubItem.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarProvider.vue.d.ts +26 -0
- package/dist/components/ui/sidebar/SidebarRail.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarSeparator.vue.d.ts +17 -0
- package/dist/components/ui/sidebar/SidebarTrigger.vue.d.ts +7 -0
- package/dist/components/ui/sidebar/index.d.ts +38 -0
- package/dist/components/ui/sidebar/utils.d.ts +56 -0
- package/dist/components/ui/skeleton/Skeleton.vue.d.ts +7 -0
- package/dist/components/ui/skeleton/index.d.ts +1 -0
- package/dist/components/ui/slider/Slider.vue.d.ts +14 -0
- package/dist/components/ui/slider/index.d.ts +1 -0
- package/dist/components/ui/sonner/Sonner.vue.d.ts +5 -0
- package/dist/components/ui/sonner/index.d.ts +1 -0
- package/dist/components/ui/stepper/Stepper.vue.d.ts +22 -0
- package/dist/components/ui/stepper/StepperDescription.vue.d.ts +18 -0
- package/dist/components/ui/stepper/StepperIndicator.vue.d.ts +18 -0
- package/dist/components/ui/stepper/StepperItem.vue.d.ts +18 -0
- package/dist/components/ui/stepper/StepperSeparator.vue.d.ts +8 -0
- package/dist/components/ui/stepper/StepperTitle.vue.d.ts +18 -0
- package/dist/components/ui/stepper/StepperTrigger.vue.d.ts +18 -0
- package/dist/components/ui/stepper/index.d.ts +7 -0
- package/dist/components/ui/switch/Switch.vue.d.ts +22 -0
- package/dist/components/ui/switch/index.d.ts +1 -0
- package/dist/components/ui/table/Table.vue.d.ts +18 -0
- package/dist/components/ui/table/TableBody.vue.d.ts +17 -0
- package/dist/components/ui/table/TableCaption.vue.d.ts +17 -0
- package/dist/components/ui/table/TableCell.vue.d.ts +17 -0
- package/dist/components/ui/table/TableEmpty.vue.d.ts +20 -0
- package/dist/components/ui/table/TableFooter.vue.d.ts +17 -0
- package/dist/components/ui/table/TableHead.vue.d.ts +17 -0
- package/dist/components/ui/table/TableHeader.vue.d.ts +17 -0
- package/dist/components/ui/table/TableRow.vue.d.ts +17 -0
- package/dist/components/ui/table/index.d.ts +9 -0
- package/dist/components/ui/table/utils.d.ts +3 -0
- package/dist/components/ui/tabs/TabsContent.vue.d.ts +18 -0
- package/dist/components/ui/tabs/TabsList.vue.d.ts +18 -0
- package/dist/components/ui/tabs/TabsTrigger.vue.d.ts +18 -0
- package/dist/components/ui/tabs/index.d.ts +4 -0
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +28 -0
- package/dist/components/ui/tags-input/TagsInputInput.vue.d.ts +8 -0
- package/dist/components/ui/tags-input/TagsInputItem.vue.d.ts +18 -0
- package/dist/components/ui/tags-input/TagsInputItemDelete.vue.d.ts +18 -0
- package/dist/components/ui/tags-input/TagsInputItemText.vue.d.ts +8 -0
- package/dist/components/ui/tags-input/index.d.ts +5 -0
- package/dist/components/ui/textarea/Textarea.vue.d.ts +13 -0
- package/dist/components/ui/textarea/index.d.ts +1 -0
- package/dist/components/ui/toggle/Toggle.vue.d.ts +29 -0
- package/dist/components/ui/toggle/index.d.ts +8 -0
- package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +27 -0
- package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +23 -0
- package/dist/components/ui/toggle-group/index.d.ts +2 -0
- package/dist/components/ui/tooltip/Tooltip.vue.d.ts +19 -0
- package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +26 -0
- package/dist/components/ui/tooltip/TooltipProvider.vue.d.ts +17 -0
- package/dist/components/ui/tooltip/TooltipTrigger.vue.d.ts +15 -0
- package/dist/components/ui/tooltip/index.d.ts +4 -0
- package/dist/server/index.d.mts +438 -188
- package/dist/server/index.mjs +4 -4
- package/dist/shared/index.d.mts +495 -31
- package/dist/shared/index.mjs +2 -2
- package/eslint.config.mts +4 -0
- package/legacy/client/components/AlertButton.vue +1 -1
- package/legacy/client/layouts/AdminLayout.vue +3 -0
- package/package.json +39 -8
- package/tsconfig.client.json +15 -9
- package/tsdown.config.ts +3 -0
- package/vite/createViteConfig.js +5 -0
- package/vite.config.ts +31 -31
- package/vitest.config.ts +35 -0
package/dist/server/index.d.mts
CHANGED
|
@@ -12,11 +12,14 @@ import { S3Client } from "@aws-sdk/client-s3";
|
|
|
12
12
|
import * as _$undici from "undici";
|
|
13
13
|
import { RequestInit } from "undici";
|
|
14
14
|
import dotenv from "dotenv";
|
|
15
|
-
import {
|
|
15
|
+
import express, { CookieOptions, Request as Request$1, Response as Response$1 } from "express";
|
|
16
|
+
import cors from "cors";
|
|
16
17
|
import * as _$kysely from "kysely";
|
|
17
18
|
import { ColumnType, CreateTableBuilder as CreateTableBuilder$1, ExpressionBuilder as ExpressionBuilder$1, ExpressionWrapper, Generated, Insertable, Kysely, SelectQueryBuilder, Selectable, Updateable } from "kysely";
|
|
18
|
-
import
|
|
19
|
+
import supertest, { Test } from "supertest";
|
|
20
|
+
import { Job } from "node-schedule";
|
|
19
21
|
import { ResolvableHead } from "@unhead/vue";
|
|
22
|
+
import { Server } from "http";
|
|
20
23
|
import { ChildProcess } from "node:child_process";
|
|
21
24
|
import { Token, UserEntity } from "@sidekick-coder/zenith-kit/shared";
|
|
22
25
|
|
|
@@ -68,6 +71,7 @@ declare class ContainerService {
|
|
|
68
71
|
set(payload: EntryKey, value: any): this;
|
|
69
72
|
has(payload: EntryKey): boolean;
|
|
70
73
|
get<T>(payload: EntryKey): T;
|
|
74
|
+
unset(payload: EntryKey): void;
|
|
71
75
|
singleton<T>(classConstructor: Constructor$1<T>): T;
|
|
72
76
|
load(entries: Record<any, any>): void;
|
|
73
77
|
proxy<T = unknown>(key: EntryKey): T;
|
|
@@ -85,11 +89,17 @@ declare class LoggerService {
|
|
|
85
89
|
}
|
|
86
90
|
//#endregion
|
|
87
91
|
//#region src/shared/services/EmmitterService.d.ts
|
|
92
|
+
interface EmmitterListenerOptions {
|
|
93
|
+
event: string;
|
|
94
|
+
}
|
|
95
|
+
interface EmmitterListener {
|
|
96
|
+
(data: any, options: EmmitterListenerOptions): void;
|
|
97
|
+
}
|
|
88
98
|
interface EmmitterHandler {
|
|
89
99
|
id: string;
|
|
90
100
|
event: string;
|
|
91
|
-
listener:
|
|
92
|
-
originalListener?:
|
|
101
|
+
listener: EmmitterListener;
|
|
102
|
+
originalListener?: EmmitterListener;
|
|
93
103
|
}
|
|
94
104
|
interface OnOptions {
|
|
95
105
|
id?: string;
|
|
@@ -104,9 +114,9 @@ interface EmmitterServiceOptions {
|
|
|
104
114
|
}
|
|
105
115
|
declare class EmmitterService$1<Events extends Record<string, any> = Record<string, any>> {
|
|
106
116
|
static __container_entry_key: string;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
117
|
+
handlers: EmmitterHandler[];
|
|
118
|
+
debug: boolean;
|
|
119
|
+
logger: LoggerService;
|
|
110
120
|
constructor(options?: EmmitterServiceOptions);
|
|
111
121
|
static create<Events extends Record<string, any> = Record<string, any>>(options?: EmmitterServiceOptions): EmmitterService$1<Events>;
|
|
112
122
|
setDebug(debug: boolean): void;
|
|
@@ -119,7 +129,7 @@ declare class EmmitterService$1<Events extends Record<string, any> = Record<stri
|
|
|
119
129
|
onDebounce(event: string, listener: (args: any) => void, options?: OnDebounceOptions): EmmitterHandler;
|
|
120
130
|
onAnyOf<K extends keyof Events>(events: K[], listener: (args: Events[K]) => void, options?: OnOptions): EmmitterHandler[];
|
|
121
131
|
onAnyOf(events: string[], listener: (args: any) => void, options?: OnOptions): EmmitterHandler[];
|
|
122
|
-
off(event: string, listener:
|
|
132
|
+
off(event: string, listener: EmmitterHandler['listener']): void;
|
|
123
133
|
emit<K extends keyof Events>(event: K, args: Events[K]): void;
|
|
124
134
|
emit(event: string, args?: any): void;
|
|
125
135
|
emitAndWait<K extends keyof Events>(event: K, args: Events[K]): Promise<void>;
|
|
@@ -175,6 +185,7 @@ declare class LifecycleService$1 {
|
|
|
175
185
|
logger: LoggerService;
|
|
176
186
|
debug: boolean;
|
|
177
187
|
constructor(data?: LifecycleServiceOptions);
|
|
188
|
+
setOnError(handler: Required<LifecycleServiceOptions>['onError']): void;
|
|
178
189
|
onError(error: Error, context: {
|
|
179
190
|
hookId: string;
|
|
180
191
|
method: LifecycleMethod;
|
|
@@ -184,6 +195,7 @@ declare class LifecycleService$1 {
|
|
|
184
195
|
add(...payload: (LifecycleHook | Constructor<LifecycleHook>)[]): void;
|
|
185
196
|
emitMethod(method: LifecycleMethod, options?: ListOptions$1): Promise<void>;
|
|
186
197
|
emit(payload: LifecycleMethod | LifecycleMethod[], options?: ListOptions$1): Promise<void>;
|
|
198
|
+
on(method: LifecycleMethod, handler: () => Promise<void>): void;
|
|
187
199
|
register(options?: ListOptions$1): Promise<void>;
|
|
188
200
|
load(options?: ListOptions$1): Promise<void>;
|
|
189
201
|
boot(options?: ListOptions$1): Promise<void>;
|
|
@@ -639,6 +651,7 @@ declare class CliWrapperService {
|
|
|
639
651
|
interface ConfigFSServiceOptions {
|
|
640
652
|
directory?: string;
|
|
641
653
|
format?: 'json' | 'yml';
|
|
654
|
+
formatOptions?: Record<string, any>;
|
|
642
655
|
debug?: boolean;
|
|
643
656
|
logger?: LoggerService;
|
|
644
657
|
}
|
|
@@ -646,6 +659,7 @@ declare class ConfigFSService extends ConfigService {
|
|
|
646
659
|
logger: LoggerService;
|
|
647
660
|
debug: boolean;
|
|
648
661
|
format: 'json' | 'yml';
|
|
662
|
+
formatOptions: Record<string, any>;
|
|
649
663
|
directory: string;
|
|
650
664
|
constructor(options?: ConfigFSServiceOptions);
|
|
651
665
|
write(entry: string, data: any): Promise<void>;
|
|
@@ -675,6 +689,7 @@ declare const envSchema: v.LooseObjectSchema<{
|
|
|
675
689
|
readonly ZENITH_CONFIG_DRIVER: v.OptionalSchema<v.PicklistSchema<["fs", "s3"], undefined>, "fs">;
|
|
676
690
|
readonly ZENITH_CONFIG_FS_PATH: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
677
691
|
readonly ZENITH_CONFIG_FS_FORMAT: v.OptionalSchema<v.PicklistSchema<["json", "yml"], undefined>, "json">;
|
|
692
|
+
readonly ZENITH_CONFIG_FS_FORMAT_OPTIONS: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, Record<string, any>>]>, "">;
|
|
678
693
|
readonly ZENITH_CONFIG_S3_BUCKET: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
679
694
|
readonly ZENITH_CONFIG_S3_REGION: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
680
695
|
readonly ZENITH_CONFIG_S3_ACCESS_KEY_ID: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -687,6 +702,7 @@ declare const envSchema: v.LooseObjectSchema<{
|
|
|
687
702
|
//#endregion
|
|
688
703
|
//#region src/server/services/EnvService.d.ts
|
|
689
704
|
declare class EnvService {
|
|
705
|
+
static __container_entry_key: string;
|
|
690
706
|
private env;
|
|
691
707
|
private files;
|
|
692
708
|
static create(): EnvService;
|
|
@@ -904,23 +920,6 @@ declare class DriveService {
|
|
|
904
920
|
}): void;
|
|
905
921
|
}
|
|
906
922
|
//#endregion
|
|
907
|
-
//#region src/server/entities/MigrationEntity.d.ts
|
|
908
|
-
interface MigrationEntiyData {
|
|
909
|
-
name: string;
|
|
910
|
-
source: string | null;
|
|
911
|
-
filename: string;
|
|
912
|
-
executedAt: Date | null;
|
|
913
|
-
}
|
|
914
|
-
declare class MigrationEntity {
|
|
915
|
-
name: string;
|
|
916
|
-
source: string | null;
|
|
917
|
-
filename: string;
|
|
918
|
-
executedAt: Date | null;
|
|
919
|
-
constructor(data: MigrationEntiyData);
|
|
920
|
-
up(db: Kysely<any>): Promise<void>;
|
|
921
|
-
down(db: Kysely<any>): Promise<void>;
|
|
922
|
-
}
|
|
923
|
-
//#endregion
|
|
924
923
|
//#region src/server/entities/CookieMapEntity.d.ts
|
|
925
924
|
declare class CookieMapEntity extends CookieMapEntity$1 {
|
|
926
925
|
request: Request$1;
|
|
@@ -966,6 +965,185 @@ declare class PageRequestContextEntity {
|
|
|
966
965
|
setConfigValue(key: string, value: any): void;
|
|
967
966
|
}
|
|
968
967
|
//#endregion
|
|
968
|
+
//#region src/server/repositories/DatabaseRepository.d.ts
|
|
969
|
+
interface Pagination<T = any> {
|
|
970
|
+
items: T[];
|
|
971
|
+
page: number;
|
|
972
|
+
per_page: number;
|
|
973
|
+
total: number;
|
|
974
|
+
total_pages: number;
|
|
975
|
+
}
|
|
976
|
+
interface FindManyOptions {
|
|
977
|
+
limit?: number;
|
|
978
|
+
offset?: number;
|
|
979
|
+
orderBy?: string | string[];
|
|
980
|
+
orderDirection?: 'asc' | 'desc' | ('asc' | 'desc')[];
|
|
981
|
+
}
|
|
982
|
+
interface PaginateOptions$1 {
|
|
983
|
+
page?: number;
|
|
984
|
+
limit?: number;
|
|
985
|
+
orderBy?: FindManyOptions['orderBy'];
|
|
986
|
+
orderDirection?: FindManyOptions['orderDirection'];
|
|
987
|
+
}
|
|
988
|
+
interface DeleteManyOptions {
|
|
989
|
+
limit?: number;
|
|
990
|
+
}
|
|
991
|
+
declare class DatabaseRepository<TEntity = Record<string, any>, TPrimaryKey = any, TOptions = Record<string, any>> {
|
|
992
|
+
protected db: Kysely<any>;
|
|
993
|
+
protected table: string;
|
|
994
|
+
protected primaryKey: string;
|
|
995
|
+
autoCreatedAt: boolean;
|
|
996
|
+
autoUpdatedAt: boolean;
|
|
997
|
+
constructor(db: Kysely<any>, table: string, primaryKey: string);
|
|
998
|
+
query(options?: {
|
|
999
|
+
qb?: any;
|
|
1000
|
+
} & TOptions): any;
|
|
1001
|
+
count(options?: Record<string, any>): Promise<number>;
|
|
1002
|
+
findMany(options?: FindManyOptions & TOptions): Promise<TEntity[]>;
|
|
1003
|
+
findOne(options?: TOptions): Promise<TEntity | null>;
|
|
1004
|
+
findById(id: TPrimaryKey, options?: TOptions): Promise<TEntity | null>;
|
|
1005
|
+
findByIdOrFail(id: TPrimaryKey, options?: TOptions): Promise<NonNullable<Awaited<TEntity>>>;
|
|
1006
|
+
paginate(options?: PaginateOptions$1 & TOptions): Promise<Pagination>;
|
|
1007
|
+
protected beforeCreate(data: Partial<TEntity>): Promise<Partial<TEntity>>;
|
|
1008
|
+
protected afterCreate(data: TEntity): Promise<void>;
|
|
1009
|
+
create(data: Partial<TEntity>): Promise<TEntity>;
|
|
1010
|
+
protected beforeCreateMany(data: Partial<TEntity>[]): Promise<Partial<TEntity>[]>;
|
|
1011
|
+
protected afterCreateMany(data: TEntity[]): Promise<TEntity[]>;
|
|
1012
|
+
createMany(data: Partial<TEntity>[]): Promise<any[]>;
|
|
1013
|
+
protected beforeUpdate(data: Partial<TEntity>, id: TPrimaryKey): Promise<Partial<TEntity>>;
|
|
1014
|
+
protected afterUpdate(data: TEntity): Promise<TEntity>;
|
|
1015
|
+
updateById(id: TPrimaryKey, data: Partial<TEntity>): Promise<void>;
|
|
1016
|
+
protected beforeDelete(id: TPrimaryKey): Promise<void>;
|
|
1017
|
+
protected afterDelete(id: TPrimaryKey): Promise<void>;
|
|
1018
|
+
deleteById(id: TPrimaryKey): Promise<void>;
|
|
1019
|
+
protected beforeDeleteMany(options?: DeleteManyOptions & TOptions): (DeleteManyOptions & TOptions) | undefined;
|
|
1020
|
+
protected afterDeleteMany(options?: DeleteManyOptions & TOptions): Promise<void> | void;
|
|
1021
|
+
deleteMany(options?: DeleteManyOptions & TOptions): Promise<void>;
|
|
1022
|
+
}
|
|
1023
|
+
//#endregion
|
|
1024
|
+
//#region src/server/repositories/UserRepository.d.ts
|
|
1025
|
+
interface UserRepositoryQueryOptions {
|
|
1026
|
+
id?: number | number[];
|
|
1027
|
+
search?: string;
|
|
1028
|
+
email?: string;
|
|
1029
|
+
username?: string;
|
|
1030
|
+
showDeleted?: boolean;
|
|
1031
|
+
}
|
|
1032
|
+
interface UserRepositoryEvents {
|
|
1033
|
+
'user:created': {
|
|
1034
|
+
user: UserEntity$1;
|
|
1035
|
+
};
|
|
1036
|
+
'user:updated': {
|
|
1037
|
+
user: UserEntity$1;
|
|
1038
|
+
};
|
|
1039
|
+
'user:deleted': {
|
|
1040
|
+
user: UserEntity$1;
|
|
1041
|
+
};
|
|
1042
|
+
}
|
|
1043
|
+
declare class UserRepository extends DatabaseRepository<UserEntity$1, number, UserRepositoryQueryOptions> {
|
|
1044
|
+
static __container_entry_key: string;
|
|
1045
|
+
autoCreatedAt: boolean;
|
|
1046
|
+
autoUpdatedAt: boolean;
|
|
1047
|
+
constructor(db: DatabaseRepository['db']);
|
|
1048
|
+
hashUserPasswordIfDefined(data: Partial<UserEntity$1>): Promise<void>;
|
|
1049
|
+
protected beforeCreate(data: Partial<UserEntity$1>): Promise<Partial<UserEntity$1>>;
|
|
1050
|
+
protected beforeCreateMany(data: Partial<UserEntity$1>[]): Promise<Partial<UserEntity$1>[]>;
|
|
1051
|
+
protected beforeUpdate(data: Partial<UserEntity$1>): Promise<Partial<UserEntity$1>>;
|
|
1052
|
+
protected afterCreate(data: UserEntity$1): Promise<void>;
|
|
1053
|
+
query(options?: UserRepositoryQueryOptions): any;
|
|
1054
|
+
}
|
|
1055
|
+
//#endregion
|
|
1056
|
+
//#region src/server/entities/MigrationEntity.d.ts
|
|
1057
|
+
interface MigrationEntiyData {
|
|
1058
|
+
name: string;
|
|
1059
|
+
source: string | null;
|
|
1060
|
+
filename: string;
|
|
1061
|
+
executedAt: Date | null;
|
|
1062
|
+
}
|
|
1063
|
+
declare class MigrationEntity {
|
|
1064
|
+
name: string;
|
|
1065
|
+
source: string | null;
|
|
1066
|
+
filename: string;
|
|
1067
|
+
executedAt: Date | null;
|
|
1068
|
+
constructor(data: MigrationEntiyData);
|
|
1069
|
+
up(db: Kysely<any>): Promise<void>;
|
|
1070
|
+
down(db: Kysely<any>): Promise<void>;
|
|
1071
|
+
}
|
|
1072
|
+
//#endregion
|
|
1073
|
+
//#region src/server/services/MigratorService.d.ts
|
|
1074
|
+
interface MigrationSource {
|
|
1075
|
+
id: string;
|
|
1076
|
+
directory: string;
|
|
1077
|
+
}
|
|
1078
|
+
interface Migration {
|
|
1079
|
+
name: string;
|
|
1080
|
+
source: string | null;
|
|
1081
|
+
filename: string;
|
|
1082
|
+
executedAt: Date | null;
|
|
1083
|
+
}
|
|
1084
|
+
interface ListFilters$1 {
|
|
1085
|
+
source?: string;
|
|
1086
|
+
name?: string | string[];
|
|
1087
|
+
}
|
|
1088
|
+
interface MigrationResult {
|
|
1089
|
+
name: string;
|
|
1090
|
+
filename: string;
|
|
1091
|
+
source: string | null;
|
|
1092
|
+
result: 'success' | 'failed';
|
|
1093
|
+
error?: any;
|
|
1094
|
+
}
|
|
1095
|
+
interface MigratorServiceOptions {
|
|
1096
|
+
sources: MigrationSource[];
|
|
1097
|
+
db: Kysely<any>;
|
|
1098
|
+
debug?: boolean;
|
|
1099
|
+
emmitter?: EmmitterService$1;
|
|
1100
|
+
logger?: LoggerService;
|
|
1101
|
+
}
|
|
1102
|
+
interface MigratorServiceEvents {
|
|
1103
|
+
'migrator:before-migrate': {
|
|
1104
|
+
migrations: MigrationEntity[];
|
|
1105
|
+
};
|
|
1106
|
+
'migrator:after-migrate': {
|
|
1107
|
+
migrations: MigrationEntity[];
|
|
1108
|
+
};
|
|
1109
|
+
'migrator:before-rollback': {
|
|
1110
|
+
migrations: MigrationEntity[];
|
|
1111
|
+
};
|
|
1112
|
+
'migrator:after-rollback': {
|
|
1113
|
+
migrations: MigrationEntity[];
|
|
1114
|
+
};
|
|
1115
|
+
}
|
|
1116
|
+
declare class MigratorService {
|
|
1117
|
+
static __container_entry_key: string;
|
|
1118
|
+
debug: boolean;
|
|
1119
|
+
emmitter: EmmitterService$1;
|
|
1120
|
+
logger: LoggerService;
|
|
1121
|
+
db: Kysely<any>;
|
|
1122
|
+
sources: MigrationSource[];
|
|
1123
|
+
constructor(options: MigratorServiceOptions);
|
|
1124
|
+
addSource(source: MigrationSource): void;
|
|
1125
|
+
private ensureMigrationsTable;
|
|
1126
|
+
listSource(source: MigrationSource): Promise<MigrationEntity[]>;
|
|
1127
|
+
list(filters?: ListFilters$1): Promise<MigrationEntity[]>;
|
|
1128
|
+
private migrateUp;
|
|
1129
|
+
private migrateDown;
|
|
1130
|
+
private migrateFile;
|
|
1131
|
+
private rollbackFile;
|
|
1132
|
+
migrate(filters?: ListFilters$1 & {
|
|
1133
|
+
steps?: number;
|
|
1134
|
+
}): Promise<MigrationResult[]>;
|
|
1135
|
+
rollback(filters?: ListFilters$1 & {
|
|
1136
|
+
steps?: number;
|
|
1137
|
+
}): Promise<MigrationResult[]>;
|
|
1138
|
+
up(steps?: number, filters?: ListFilters$1): Promise<MigrationResult[]>;
|
|
1139
|
+
down(steps?: number, filters?: ListFilters$1): Promise<MigrationResult[]>;
|
|
1140
|
+
latest(filters?: ListFilters$1): Promise<MigrationResult[]>;
|
|
1141
|
+
latestOrFail(filters?: ListFilters$1): Promise<MigrationResult[]>;
|
|
1142
|
+
fresh(filters?: ListFilters$1 & {
|
|
1143
|
+
steps?: number;
|
|
1144
|
+
}): Promise<MigrationResult[]>;
|
|
1145
|
+
}
|
|
1146
|
+
//#endregion
|
|
969
1147
|
//#region src/server/entities/AclEntity.d.ts
|
|
970
1148
|
declare class Acl extends AclEntity {
|
|
971
1149
|
authorize(action: string, subject: any, object?: Record<string, any>): void;
|
|
@@ -983,9 +1161,8 @@ interface HttpContext {
|
|
|
983
1161
|
method: string;
|
|
984
1162
|
params: Record<string, string>;
|
|
985
1163
|
query: Record<string, string | string[]>;
|
|
986
|
-
body: any
|
|
987
|
-
cookie:
|
|
988
|
-
upload: any;
|
|
1164
|
+
body: Record<string, any>;
|
|
1165
|
+
cookie: CookieMapEntity$1;
|
|
989
1166
|
acl: Acl;
|
|
990
1167
|
request: Request;
|
|
991
1168
|
response: Response;
|
|
@@ -1076,7 +1253,6 @@ declare class RouterService<C = {}> extends RouterService_base {
|
|
|
1076
1253
|
group(): RouterService<C>;
|
|
1077
1254
|
resolve(method: string, path: string): Route | null;
|
|
1078
1255
|
execute(route: Route, initialCtx: any): Promise<any>;
|
|
1079
|
-
matchPath(routePath: string, requestPath: string): boolean;
|
|
1080
1256
|
clear(): void;
|
|
1081
1257
|
list(): Route[];
|
|
1082
1258
|
load(options?: LoadOptions): Promise<void>;
|
|
@@ -1170,7 +1346,7 @@ interface SeederSource {
|
|
|
1170
1346
|
id: string;
|
|
1171
1347
|
directory: string;
|
|
1172
1348
|
}
|
|
1173
|
-
interface ListFilters
|
|
1349
|
+
interface ListFilters {
|
|
1174
1350
|
source?: string | string[];
|
|
1175
1351
|
name?: string | string[];
|
|
1176
1352
|
}
|
|
@@ -1206,45 +1382,15 @@ declare class SeeederService {
|
|
|
1206
1382
|
constructor(options: SeederServiceOptions);
|
|
1207
1383
|
addSource(source: SeederSource): void;
|
|
1208
1384
|
listSource(source: SeederSource): Promise<SeederEntity[]>;
|
|
1209
|
-
list(filters?: ListFilters
|
|
1385
|
+
list(filters?: ListFilters): Promise<SeederEntity[]>;
|
|
1210
1386
|
runSeeder(seeder: SeederEntity): Promise<SeederResult>;
|
|
1211
|
-
run(filters?: ListFilters
|
|
1387
|
+
run(filters?: ListFilters & {
|
|
1212
1388
|
steps?: number;
|
|
1213
1389
|
}): Promise<SeederResult[]>;
|
|
1214
1390
|
}
|
|
1215
1391
|
//#endregion
|
|
1216
1392
|
//#region src/server/contracts/EventContract.d.ts
|
|
1217
|
-
interface EventContract extends SeederEvents, RouterEvents, CliEvents, SchedulerEvents {
|
|
1218
|
-
'migrator:before-migrate': {
|
|
1219
|
-
migrations: MigrationEntity[];
|
|
1220
|
-
};
|
|
1221
|
-
'migrator:after-migrate': {
|
|
1222
|
-
migrations: MigrationEntity[];
|
|
1223
|
-
};
|
|
1224
|
-
'migrator:before-rollback': {
|
|
1225
|
-
migrations: MigrationEntity[];
|
|
1226
|
-
};
|
|
1227
|
-
'migrator:after-rollback': {
|
|
1228
|
-
migrations: MigrationEntity[];
|
|
1229
|
-
};
|
|
1230
|
-
'user:before-create': {
|
|
1231
|
-
user: UserEntity$1;
|
|
1232
|
-
};
|
|
1233
|
-
'user:after-create': {
|
|
1234
|
-
user: UserEntity$1;
|
|
1235
|
-
};
|
|
1236
|
-
'user:before-update': {
|
|
1237
|
-
user: UserEntity$1;
|
|
1238
|
-
};
|
|
1239
|
-
'user:after-update': {
|
|
1240
|
-
user: UserEntity$1;
|
|
1241
|
-
};
|
|
1242
|
-
'user:before-delete': {
|
|
1243
|
-
user: UserEntity$1;
|
|
1244
|
-
};
|
|
1245
|
-
'user:after-delete': {
|
|
1246
|
-
user: UserEntity$1;
|
|
1247
|
-
};
|
|
1393
|
+
interface EventContract extends SeederEvents, RouterEvents, CliEvents, SchedulerEvents, MigratorServiceEvents, UserRepositoryEvents {
|
|
1248
1394
|
'page:request:start': PageRequestContextEntity;
|
|
1249
1395
|
'page:request:before-render': PageRequestContextEntity;
|
|
1250
1396
|
'page:request:after-render': PageRequestContextEntity;
|
|
@@ -1287,6 +1433,78 @@ declare class EncryptService {
|
|
|
1287
1433
|
verifyUrl(encryptedKey: string): any;
|
|
1288
1434
|
}
|
|
1289
1435
|
//#endregion
|
|
1436
|
+
//#region src/server/services/ExceptionService.d.ts
|
|
1437
|
+
interface ExceptionServiceOptions {
|
|
1438
|
+
ignoreCodeErrors?: number[];
|
|
1439
|
+
logger?: LoggerService;
|
|
1440
|
+
env?: EnvService;
|
|
1441
|
+
}
|
|
1442
|
+
declare class ExceptionService {
|
|
1443
|
+
static __container_entry_key: string;
|
|
1444
|
+
ignoreCodeErrors: number[];
|
|
1445
|
+
logger: LoggerService;
|
|
1446
|
+
env: EnvService;
|
|
1447
|
+
constructor(options?: ExceptionServiceOptions);
|
|
1448
|
+
handle(error: Error, response: Response$1): Response$1<any, Record<string, any>>;
|
|
1449
|
+
}
|
|
1450
|
+
//#endregion
|
|
1451
|
+
//#region src/server/services/HasherService.d.ts
|
|
1452
|
+
declare class HasherService {
|
|
1453
|
+
static __container_entry_key: string;
|
|
1454
|
+
hash(value: string): Promise<string>;
|
|
1455
|
+
compare(a: string, b: string): Promise<boolean>;
|
|
1456
|
+
}
|
|
1457
|
+
//#endregion
|
|
1458
|
+
//#region src/server/services/HttpService.d.ts
|
|
1459
|
+
interface HttpServiceOptions {
|
|
1460
|
+
debug?: boolean;
|
|
1461
|
+
router?: RouterService;
|
|
1462
|
+
logger?: LoggerService;
|
|
1463
|
+
exception?: ExceptionService;
|
|
1464
|
+
emmitter?: EmmitterService$1;
|
|
1465
|
+
env?: EnvService;
|
|
1466
|
+
origins?: string[];
|
|
1467
|
+
}
|
|
1468
|
+
declare class HttpService {
|
|
1469
|
+
static __container_entry_key: string;
|
|
1470
|
+
app: express.Application;
|
|
1471
|
+
server: Server | null;
|
|
1472
|
+
router: RouterService;
|
|
1473
|
+
exception: ExceptionService;
|
|
1474
|
+
logger: LoggerService;
|
|
1475
|
+
emmitter: EmmitterService$1;
|
|
1476
|
+
env: EnvService;
|
|
1477
|
+
debug: boolean;
|
|
1478
|
+
onUnhandlerRouted: ((req: express.Request, res: express.Response) => void) | null;
|
|
1479
|
+
constructor(options: HttpServiceOptions);
|
|
1480
|
+
getExpressApp(): express.Application;
|
|
1481
|
+
cors(options: cors.CorsOptions): void;
|
|
1482
|
+
use: express.Application['use'];
|
|
1483
|
+
routes(): void;
|
|
1484
|
+
parser(req: express.Request, res: express.Response, next: express.NextFunction): void;
|
|
1485
|
+
execute(url: URL, request: express.Request, response: express.Response, route: Route): Promise<void>;
|
|
1486
|
+
start(): void;
|
|
1487
|
+
stop(): Promise<void>;
|
|
1488
|
+
}
|
|
1489
|
+
//#endregion
|
|
1490
|
+
//#region src/server/services/HttpTesterService.d.ts
|
|
1491
|
+
interface HttpTesterServiceOptions {
|
|
1492
|
+
http: HttpService;
|
|
1493
|
+
}
|
|
1494
|
+
declare class HttpTesterService {
|
|
1495
|
+
static __container_entry_key: string;
|
|
1496
|
+
http: HttpService;
|
|
1497
|
+
request: supertest.SuperTest<supertest.Test>;
|
|
1498
|
+
headers: Record<string, string>;
|
|
1499
|
+
cookies: Record<string, string>;
|
|
1500
|
+
constructor(options: HttpTesterServiceOptions);
|
|
1501
|
+
create(request: Test): Test;
|
|
1502
|
+
get(url: string): Test;
|
|
1503
|
+
post(url: string, body?: any): Test;
|
|
1504
|
+
loginByUser(user: UserEntity$1): Promise<void>;
|
|
1505
|
+
loginByUsername(username: string): Promise<void>;
|
|
1506
|
+
}
|
|
1507
|
+
//#endregion
|
|
1290
1508
|
//#region src/server/services/LifecycleService.d.ts
|
|
1291
1509
|
declare class LifecycleService extends LifecycleService$1 {
|
|
1292
1510
|
addDirectory(dirname: string): Promise<void>;
|
|
@@ -1294,7 +1512,7 @@ declare class LifecycleService extends LifecycleService$1 {
|
|
|
1294
1512
|
//#endregion
|
|
1295
1513
|
//#region src/server/contracts/DatabaseContract.d.ts
|
|
1296
1514
|
interface SoftDeleteTable {
|
|
1297
|
-
deleted_at?: ColumnType<Date, string | undefined,
|
|
1515
|
+
deleted_at?: ColumnType<Date | string | null, Date | string | undefined, Date | string | null>;
|
|
1298
1516
|
}
|
|
1299
1517
|
interface TimestampTable {
|
|
1300
1518
|
created_at: ColumnType<Date, string | undefined, never>;
|
|
@@ -1482,66 +1700,6 @@ declare class MetadataService {
|
|
|
1482
1700
|
all(): Promise<Record<string, any>>;
|
|
1483
1701
|
}
|
|
1484
1702
|
//#endregion
|
|
1485
|
-
//#region src/server/services/MigratorService.d.ts
|
|
1486
|
-
interface MigrationSource {
|
|
1487
|
-
id: string;
|
|
1488
|
-
directory: string;
|
|
1489
|
-
}
|
|
1490
|
-
interface Migration {
|
|
1491
|
-
name: string;
|
|
1492
|
-
source: string | null;
|
|
1493
|
-
filename: string;
|
|
1494
|
-
executedAt: Date | null;
|
|
1495
|
-
}
|
|
1496
|
-
interface ListFilters {
|
|
1497
|
-
source?: string;
|
|
1498
|
-
name?: string | string[];
|
|
1499
|
-
}
|
|
1500
|
-
interface MigrationResult {
|
|
1501
|
-
name: string;
|
|
1502
|
-
filename: string;
|
|
1503
|
-
source: string | null;
|
|
1504
|
-
result: 'success' | 'failed';
|
|
1505
|
-
error?: any;
|
|
1506
|
-
}
|
|
1507
|
-
interface MigratorServiceOptions {
|
|
1508
|
-
sources: MigrationSource[];
|
|
1509
|
-
db: Kysely<any>;
|
|
1510
|
-
debug?: boolean;
|
|
1511
|
-
emmitter?: EmmitterService$1;
|
|
1512
|
-
logger?: LoggerService;
|
|
1513
|
-
}
|
|
1514
|
-
declare class MigratorService {
|
|
1515
|
-
static __container_entry_key: string;
|
|
1516
|
-
debug: boolean;
|
|
1517
|
-
emmitter: EmmitterService$1;
|
|
1518
|
-
logger: LoggerService;
|
|
1519
|
-
db: Kysely<any>;
|
|
1520
|
-
sources: MigrationSource[];
|
|
1521
|
-
constructor(options: MigratorServiceOptions);
|
|
1522
|
-
addSource(source: MigrationSource): void;
|
|
1523
|
-
private ensureMigrationsTable;
|
|
1524
|
-
listSource(source: MigrationSource): Promise<MigrationEntity[]>;
|
|
1525
|
-
list(filters?: ListFilters): Promise<MigrationEntity[]>;
|
|
1526
|
-
private migrateUp;
|
|
1527
|
-
private migrateDown;
|
|
1528
|
-
private migrateFile;
|
|
1529
|
-
private rollbackFile;
|
|
1530
|
-
migrate(filters?: ListFilters & {
|
|
1531
|
-
steps?: number;
|
|
1532
|
-
}): Promise<MigrationResult[]>;
|
|
1533
|
-
rollback(filters?: ListFilters & {
|
|
1534
|
-
steps?: number;
|
|
1535
|
-
}): Promise<MigrationResult[]>;
|
|
1536
|
-
up(steps?: number, filters?: ListFilters): Promise<MigrationResult[]>;
|
|
1537
|
-
down(steps?: number, filters?: ListFilters): Promise<MigrationResult[]>;
|
|
1538
|
-
latest(filters?: ListFilters): Promise<MigrationResult[]>;
|
|
1539
|
-
latestOrFail(filters?: ListFilters): Promise<MigrationResult[]>;
|
|
1540
|
-
fresh(filters?: ListFilters & {
|
|
1541
|
-
steps?: number;
|
|
1542
|
-
}): Promise<MigrationResult[]>;
|
|
1543
|
-
}
|
|
1544
|
-
//#endregion
|
|
1545
1703
|
//#region src/server/services/PluginIpcClient.d.ts
|
|
1546
1704
|
type IpcMessage<T = any> = {
|
|
1547
1705
|
id: string;
|
|
@@ -1736,50 +1894,6 @@ declare class ShellService {
|
|
|
1736
1894
|
executeCommandWithOutput(bin: string, args: string[], options?: CommandOptions): Promise<string>;
|
|
1737
1895
|
}
|
|
1738
1896
|
//#endregion
|
|
1739
|
-
//#region src/server/repositories/DatabaseRepository.d.ts
|
|
1740
|
-
interface Pagination<T = any> {
|
|
1741
|
-
items: T[];
|
|
1742
|
-
page: number;
|
|
1743
|
-
per_page: number;
|
|
1744
|
-
total: number;
|
|
1745
|
-
total_pages: number;
|
|
1746
|
-
}
|
|
1747
|
-
interface FindManyOptions {
|
|
1748
|
-
limit?: number;
|
|
1749
|
-
offset?: number;
|
|
1750
|
-
orderBy?: string | string[];
|
|
1751
|
-
orderDirection?: 'asc' | 'desc' | ('asc' | 'desc')[];
|
|
1752
|
-
}
|
|
1753
|
-
interface PaginateOptions$1 {
|
|
1754
|
-
page?: number;
|
|
1755
|
-
limit?: number;
|
|
1756
|
-
orderBy?: FindManyOptions['orderBy'];
|
|
1757
|
-
orderDirection?: FindManyOptions['orderDirection'];
|
|
1758
|
-
}
|
|
1759
|
-
interface DeleteManyOptions {
|
|
1760
|
-
limit?: number;
|
|
1761
|
-
}
|
|
1762
|
-
declare class DatabaseRepository<TEntity = Record<string, any>, TPrimaryKey = any, TOptions = Record<string, any>> {
|
|
1763
|
-
protected db: Kysely<any>;
|
|
1764
|
-
protected table: string;
|
|
1765
|
-
protected primaryKey: string;
|
|
1766
|
-
constructor(db: Kysely<any>, table: string, primaryKey: string);
|
|
1767
|
-
query(options?: {
|
|
1768
|
-
qb?: any;
|
|
1769
|
-
} & TOptions): any;
|
|
1770
|
-
count(options?: Record<string, any>): Promise<number>;
|
|
1771
|
-
findMany(options?: FindManyOptions & TOptions): Promise<TEntity[]>;
|
|
1772
|
-
findOne(options?: TOptions): Promise<TEntity | null>;
|
|
1773
|
-
findById(id: TPrimaryKey, options?: TOptions): Promise<TEntity | null>;
|
|
1774
|
-
findByIdOrFail(id: TPrimaryKey, options?: TOptions): Promise<NonNullable<Awaited<TEntity>>>;
|
|
1775
|
-
paginate(options?: PaginateOptions$1 & TOptions): Promise<Pagination>;
|
|
1776
|
-
create(data: Partial<TEntity>): Promise<any>;
|
|
1777
|
-
createMany(data: Partial<TEntity>[]): Promise<any[]>;
|
|
1778
|
-
updateById(id: TPrimaryKey, data: Partial<TEntity>): Promise<void>;
|
|
1779
|
-
deleteById(id: TPrimaryKey): Promise<void>;
|
|
1780
|
-
deleteMany(options?: DeleteManyOptions & TOptions): Promise<void>;
|
|
1781
|
-
}
|
|
1782
|
-
//#endregion
|
|
1783
1897
|
//#region src/server/repositories/ConfigRepository.d.ts
|
|
1784
1898
|
declare class ConfigRepository<TEntity = Record<string, any>, TOptions = Record<string, any>> {
|
|
1785
1899
|
protected config: ConfigService;
|
|
@@ -1898,6 +2012,11 @@ interface TokenRepositoryQueryOptions {
|
|
|
1898
2012
|
search?: string;
|
|
1899
2013
|
type?: string | string[];
|
|
1900
2014
|
}
|
|
2015
|
+
interface TokenRepositoryGenerateOptions {
|
|
2016
|
+
user_id: number;
|
|
2017
|
+
type?: string;
|
|
2018
|
+
expires_in_hours?: number;
|
|
2019
|
+
}
|
|
1901
2020
|
declare const TokenRepository_base: Constructor & Constructor<IRepositoryTypes<{
|
|
1902
2021
|
id: number;
|
|
1903
2022
|
name: string | null;
|
|
@@ -1909,20 +2028,17 @@ declare const TokenRepository_base: Constructor & Constructor<IRepositoryTypes<{
|
|
|
1909
2028
|
expires_at: string;
|
|
1910
2029
|
}, number, TokenRepositoryQueryOptions>> & Constructor<{}> & typeof DatabaseRepository;
|
|
1911
2030
|
declare class TokenRepository extends TokenRepository_base {
|
|
2031
|
+
autoCreatedAt: boolean;
|
|
2032
|
+
autoUpdatedAt: boolean;
|
|
1912
2033
|
constructor(db: DatabaseRepository['db']);
|
|
1913
2034
|
query(options?: TokenRepositoryQueryOptions): any;
|
|
1914
2035
|
findByToken(token: string): Promise<Token$1 | null>;
|
|
2036
|
+
generate(options: TokenRepositoryGenerateOptions): Promise<Record<string, any>>;
|
|
1915
2037
|
}
|
|
1916
2038
|
//#endregion
|
|
1917
|
-
//#region src/server/
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
username?: string;
|
|
1921
|
-
id?: number;
|
|
1922
|
-
}
|
|
1923
|
-
declare class UserRepository extends DatabaseRepository<UserTable, string, UserRepositoryQueryOptions> {
|
|
1924
|
-
constructor(db: DatabaseRepository['db']);
|
|
1925
|
-
query(options?: UserRepositoryQueryOptions): any;
|
|
2039
|
+
//#region src/server/gateways/DatabaseGateway.d.ts
|
|
2040
|
+
declare class DatabaseGateway<DB> extends Kysely<DB> {
|
|
2041
|
+
static __container_entry_key: string;
|
|
1926
2042
|
}
|
|
1927
2043
|
//#endregion
|
|
1928
2044
|
//#region src/server/gateways/DriveFSGateway.d.ts
|
|
@@ -2002,8 +2118,7 @@ declare function Metadata<Table extends keyof DatabaseContract>(metasTable: Tabl
|
|
|
2002
2118
|
} & TBase;
|
|
2003
2119
|
//#endregion
|
|
2004
2120
|
//#region src/server/facades/database.d.ts
|
|
2005
|
-
declare const
|
|
2006
|
-
declare const database: Kysely<DatabaseContract>;
|
|
2121
|
+
declare const database: DatabaseGateway<DatabaseContract>;
|
|
2007
2122
|
//#endregion
|
|
2008
2123
|
//#region src/server/queries/common.d.ts
|
|
2009
2124
|
type SelectFrom<T extends keyof DatabaseContract> = ReturnType<typeof database.selectFrom<T>> | SelectQueryBuilder<DatabaseContract, T, any>;
|
|
@@ -2183,9 +2298,18 @@ declare const emmitter: EmmitterService$1<Record<string, any>>;
|
|
|
2183
2298
|
//#region src/server/facades/encrypt.d.ts
|
|
2184
2299
|
declare const encrypt: EncryptService;
|
|
2185
2300
|
//#endregion
|
|
2301
|
+
//#region src/server/facades/env.d.ts
|
|
2302
|
+
declare const env: EnvService;
|
|
2303
|
+
//#endregion
|
|
2186
2304
|
//#region src/server/facades/filesRepository.d.ts
|
|
2187
2305
|
declare const fileRepository: FileRepository;
|
|
2188
2306
|
//#endregion
|
|
2307
|
+
//#region src/server/facades/hasher.d.ts
|
|
2308
|
+
declare const hasher: HasherService;
|
|
2309
|
+
//#endregion
|
|
2310
|
+
//#region src/server/facades/http.d.ts
|
|
2311
|
+
declare const http: HttpService;
|
|
2312
|
+
//#endregion
|
|
2189
2313
|
//#region src/server/facades/logger.d.ts
|
|
2190
2314
|
declare const logger: LoggerService;
|
|
2191
2315
|
//#endregion
|
|
@@ -2225,7 +2349,7 @@ interface LoaderRecord<T = Record<string, any>> {
|
|
|
2225
2349
|
}
|
|
2226
2350
|
declare function defineLoader<T = Record<string, any>>(loader: Loader<T>): Loader<T>;
|
|
2227
2351
|
//#endregion
|
|
2228
|
-
//#region src/server/loaders/
|
|
2352
|
+
//#region src/server/loaders/hasManyThroughLoader.d.ts
|
|
2229
2353
|
type KeyOrFunction<T> = keyof T | ((entity: T) => any);
|
|
2230
2354
|
interface HasManyThroughLoaderOptions<TEntity extends Record<string, any> = Record<string, any>, TPivotEntity extends Record<string, any> = Record<string, any>, TTargetEntity extends Record<string, any> = Record<string, any>> {
|
|
2231
2355
|
key: string;
|
|
@@ -2243,6 +2367,15 @@ interface HasManyThroughLoaderOptions<TEntity extends Record<string, any> = Reco
|
|
|
2243
2367
|
declare function loadHasManyThrough<TEntity extends Record<string, any> = Record<string, any>, TPivotEntity extends Record<string, any> = Record<string, any>, TTargetEntity extends Record<string, any> = Record<string, any>>(payload: any | any[], options: HasManyThroughLoaderOptions<TEntity, TPivotEntity, TTargetEntity>): Promise<void>;
|
|
2244
2368
|
declare function createHasManyThroughLoader<TEntity extends Record<string, any> = Record<string, any>, TPivotEntity extends Record<string, any> = Record<string, any>, TTargetEntity extends Record<string, any> = Record<string, any>>(options: HasManyThroughLoaderOptions<TEntity, TPivotEntity, TTargetEntity>): Loader<TEntity>;
|
|
2245
2369
|
//#endregion
|
|
2370
|
+
//#region src/server/loaders/permissionLoader.d.ts
|
|
2371
|
+
interface PermissionLoaderOptions {
|
|
2372
|
+
assignableType: string | ((e: any) => string);
|
|
2373
|
+
assignableId: string | ((e: any) => string);
|
|
2374
|
+
targetKey?: string;
|
|
2375
|
+
}
|
|
2376
|
+
declare function loadPermissions<T extends Record<string, any>>(payload: T | T[], options?: PermissionLoaderOptions): Promise<void>;
|
|
2377
|
+
declare function createPermissionLoader<T extends Record<string, any>>(options?: PermissionLoaderOptions): Loader<T>;
|
|
2378
|
+
//#endregion
|
|
2246
2379
|
//#region src/server/entities/DriveConfigEntity.d.ts
|
|
2247
2380
|
declare const DriveConfig_base: typeof DriveConfig$1 & {
|
|
2248
2381
|
new (...args: any[]): {};
|
|
@@ -2308,7 +2441,7 @@ declare const File_base: typeof FileEntity & {
|
|
|
2308
2441
|
id?: number | undefined;
|
|
2309
2442
|
created_at?: string | undefined;
|
|
2310
2443
|
updated_at?: string | undefined;
|
|
2311
|
-
deleted_at?: string |
|
|
2444
|
+
deleted_at?: string | Date | undefined;
|
|
2312
2445
|
}): Promise<T>;
|
|
2313
2446
|
createMany<T>(this: new () => T, values: (object & {
|
|
2314
2447
|
drive: string;
|
|
@@ -2321,12 +2454,12 @@ declare const File_base: typeof FileEntity & {
|
|
|
2321
2454
|
id?: number | undefined;
|
|
2322
2455
|
created_at?: string | undefined;
|
|
2323
2456
|
updated_at?: string | undefined;
|
|
2324
|
-
deleted_at?: string |
|
|
2457
|
+
deleted_at?: string | Date | undefined;
|
|
2325
2458
|
})[]): Promise<T[]>;
|
|
2326
2459
|
update<T>(this: new () => T, o: ModelUpdateOptions<"files">): Promise<T>;
|
|
2327
2460
|
updateById<T>(this: new () => T, id: any, values: {
|
|
2328
2461
|
id?: number | undefined;
|
|
2329
|
-
deleted_at?: null | undefined;
|
|
2462
|
+
deleted_at?: string | Date | null | undefined;
|
|
2330
2463
|
drive?: string | undefined;
|
|
2331
2464
|
mimetype?: string | undefined;
|
|
2332
2465
|
client_name?: string | undefined;
|
|
@@ -2393,7 +2526,7 @@ declare const FileMeta_base: typeof FileMeta$1 & {
|
|
|
2393
2526
|
value?: string | null | undefined;
|
|
2394
2527
|
created_at?: string | undefined;
|
|
2395
2528
|
updated_at?: string | undefined;
|
|
2396
|
-
deleted_at?: string |
|
|
2529
|
+
deleted_at?: string | Date | undefined;
|
|
2397
2530
|
}): Promise<T>;
|
|
2398
2531
|
createMany<T>(this: new () => T, values: (object & {
|
|
2399
2532
|
name: string;
|
|
@@ -2403,15 +2536,15 @@ declare const FileMeta_base: typeof FileMeta$1 & {
|
|
|
2403
2536
|
value?: string | null | undefined;
|
|
2404
2537
|
created_at?: string | undefined;
|
|
2405
2538
|
updated_at?: string | undefined;
|
|
2406
|
-
deleted_at?: string |
|
|
2539
|
+
deleted_at?: string | Date | undefined;
|
|
2407
2540
|
})[]): Promise<T[]>;
|
|
2408
2541
|
update<T>(this: new () => T, o: ModelUpdateOptions<"file_metas">): Promise<T>;
|
|
2409
2542
|
updateById<T>(this: new () => T, id: any, values: {
|
|
2410
2543
|
id?: number | undefined;
|
|
2411
2544
|
value?: string | null | undefined;
|
|
2412
2545
|
name?: string | undefined;
|
|
2546
|
+
deleted_at?: string | Date | null | undefined;
|
|
2413
2547
|
file_id?: number | undefined;
|
|
2414
|
-
deleted_at?: null | undefined;
|
|
2415
2548
|
}, options?: {
|
|
2416
2549
|
debug?: boolean;
|
|
2417
2550
|
} | undefined): Promise<T>;
|
|
@@ -2509,6 +2642,123 @@ declare module 'kysely' {
|
|
|
2509
2642
|
}
|
|
2510
2643
|
}
|
|
2511
2644
|
//#endregion
|
|
2645
|
+
//#region src/server/relations/BaseRelation.d.ts
|
|
2646
|
+
declare class BaseRelation {
|
|
2647
|
+
load(entities: any[]): Promise<void>;
|
|
2648
|
+
}
|
|
2649
|
+
//#endregion
|
|
2650
|
+
//#region src/server/relations/BelongsToRelation.d.ts
|
|
2651
|
+
interface BelongsToOptions {
|
|
2652
|
+
table: string;
|
|
2653
|
+
tableKey: string;
|
|
2654
|
+
targetTable: string;
|
|
2655
|
+
targetKey: string;
|
|
2656
|
+
property: string;
|
|
2657
|
+
serialize?: (row: any) => any;
|
|
2658
|
+
}
|
|
2659
|
+
declare class BelongsTo extends BaseRelation {
|
|
2660
|
+
table: string;
|
|
2661
|
+
tableKey: string;
|
|
2662
|
+
targetTable: string;
|
|
2663
|
+
targetKey: string;
|
|
2664
|
+
property: string;
|
|
2665
|
+
serialize: (row: any) => any;
|
|
2666
|
+
constructor(options: BelongsToOptions);
|
|
2667
|
+
load(entities: any[]): Promise<void>;
|
|
2668
|
+
}
|
|
2669
|
+
//#endregion
|
|
2670
|
+
//#region src/server/relations/BelongsToFileRelation.d.ts
|
|
2671
|
+
declare class LoadFileMetas extends BaseRelation {
|
|
2672
|
+
fileKey: string;
|
|
2673
|
+
property: string;
|
|
2674
|
+
constructor(fileKey?: string, property?: string);
|
|
2675
|
+
load(entities: any[]): Promise<void>;
|
|
2676
|
+
}
|
|
2677
|
+
declare class LoadFileUrl extends BaseRelation {
|
|
2678
|
+
fileKey: string;
|
|
2679
|
+
property: string;
|
|
2680
|
+
constructor(fileKey?: string, property?: string);
|
|
2681
|
+
load(entities: any[]): Promise<void>;
|
|
2682
|
+
}
|
|
2683
|
+
declare class BelongsToFile extends BelongsTo {
|
|
2684
|
+
constructor(property?: string, targetKey?: string);
|
|
2685
|
+
url(property?: string): LoadFileUrl;
|
|
2686
|
+
metas(property?: string): LoadFileMetas;
|
|
2687
|
+
}
|
|
2688
|
+
//#endregion
|
|
2689
|
+
//#region src/server/relations/BelongsToUserRelation.d.ts
|
|
2690
|
+
declare class BelongsToUser extends BelongsTo {
|
|
2691
|
+
constructor();
|
|
2692
|
+
}
|
|
2693
|
+
//#endregion
|
|
2694
|
+
//#region src/server/relations/HasManyRelation.d.ts
|
|
2695
|
+
interface HasManyOptions {
|
|
2696
|
+
table: keyof DatabaseContract;
|
|
2697
|
+
tableKey: string;
|
|
2698
|
+
targetTable: keyof DatabaseContract;
|
|
2699
|
+
targetKey: string;
|
|
2700
|
+
property: string;
|
|
2701
|
+
serialize?: (row: any) => any;
|
|
2702
|
+
after?: (rows: any[]) => Promise<any>;
|
|
2703
|
+
}
|
|
2704
|
+
declare class HasMany {
|
|
2705
|
+
table: string;
|
|
2706
|
+
tableKey: string;
|
|
2707
|
+
targetTable: string;
|
|
2708
|
+
targetKey: string;
|
|
2709
|
+
property: string;
|
|
2710
|
+
serialize: (row: any) => any;
|
|
2711
|
+
after: (rows: any[]) => Promise<any>;
|
|
2712
|
+
constructor(options: HasManyOptions);
|
|
2713
|
+
load(entities: any[]): Promise<void>;
|
|
2714
|
+
}
|
|
2715
|
+
//#endregion
|
|
2716
|
+
//#region src/server/relations/HasMetasRelation.d.ts
|
|
2717
|
+
interface HasMetasOptions {
|
|
2718
|
+
table: keyof DatabaseContract;
|
|
2719
|
+
tableKey: string;
|
|
2720
|
+
targetTable: keyof DatabaseContract;
|
|
2721
|
+
targetKey: string;
|
|
2722
|
+
property: string;
|
|
2723
|
+
}
|
|
2724
|
+
declare class HasMetas {
|
|
2725
|
+
table: string;
|
|
2726
|
+
tableKey: string;
|
|
2727
|
+
targetTable: string;
|
|
2728
|
+
targetKey: string;
|
|
2729
|
+
property: string;
|
|
2730
|
+
constructor(options: HasMetasOptions);
|
|
2731
|
+
load(entities: any[]): Promise<void>;
|
|
2732
|
+
}
|
|
2733
|
+
//#endregion
|
|
2734
|
+
//#region src/server/relations/hasManyThroughRelation.d.ts
|
|
2735
|
+
interface HasManyThroughOptions {
|
|
2736
|
+
table: keyof DatabaseContract;
|
|
2737
|
+
tableKey: string;
|
|
2738
|
+
targetTable: keyof DatabaseContract;
|
|
2739
|
+
targetKey: string;
|
|
2740
|
+
pivotTable: keyof DatabaseContract;
|
|
2741
|
+
pivotSourceKey: string;
|
|
2742
|
+
pivotTargetKey: string;
|
|
2743
|
+
property: string;
|
|
2744
|
+
serialize?: (row: any) => any;
|
|
2745
|
+
after?: (rows: any[]) => Promise<any>;
|
|
2746
|
+
}
|
|
2747
|
+
declare class HasManyThrough extends BaseRelation {
|
|
2748
|
+
table: string;
|
|
2749
|
+
tableKey: string;
|
|
2750
|
+
targetTable: string;
|
|
2751
|
+
targetKey: string;
|
|
2752
|
+
pivotTable: string;
|
|
2753
|
+
pivotSourceKey: string;
|
|
2754
|
+
pivotTargetKey: string;
|
|
2755
|
+
property: string;
|
|
2756
|
+
serialize: (row: any) => any;
|
|
2757
|
+
after: (rows: any[]) => Promise<any>;
|
|
2758
|
+
constructor(options: HasManyThroughOptions);
|
|
2759
|
+
load(entities: any[]): Promise<void>;
|
|
2760
|
+
}
|
|
2761
|
+
//#endregion
|
|
2512
2762
|
//#region src/server/middlewares/AuthMiddleware.d.ts
|
|
2513
2763
|
type AuthMiddlewareContext = {
|
|
2514
2764
|
user: UserEntity;
|
|
@@ -2594,5 +2844,5 @@ declare function importAll(directory: string, options?: Options): Promise<Record
|
|
|
2594
2844
|
//#region src/server/utils/importOne.d.ts
|
|
2595
2845
|
declare function importOne(filenames: string[]): Promise<any>;
|
|
2596
2846
|
//#endregion
|
|
2597
|
-
export { Acl as AclEntity, AddOptions, AuthMiddleware, AuthMiddlewareContext, AuthSilenceMiddleware, AuthSilenceMiddlewareContext, AuthorizationContext, AuthorizationMiddleware, AuthorizePermission, AuthorizePermissionPayload, CliCommand, CliEvents, CliService, ArteTesterService as CliTesterService, CliWrapperService, ConfigFSService, ConfigFSServiceOptions, ConfigManagerOptions, ConfigManagerService, ConfigModel, ConfigRepository, ConfigS3Service, CookieMapEntity, CountOptions, CreateOptions, DatabaseContract, DatabaseKysely, DatabaseRepository, DatabaseRepositoryInferMixin, DeleteFrom, DeleteManyOptions, DestroyOptions, DownloadService, DownloadedFetchOptions, DriveBaseGateway, DriveConfig as DriveConfigEntity, DriveContract, DriveFSConfig, DriveFS as DriveFSGateway, DriveS3 as DriveS3Gateway, DriveService, DriveUploadUrlOptions, DriveUrlOptions, EmailTemplateMetaTable, EmailTemplateTable, EmmitterService, EncryptService, EnvService, EventContract, ExpressionBuilder, File as FileEntity, FileMeta as FileMetaEntity, FileMetaTable, FileRepository, FileRepositoryQueryOptions, FileTable, FindManyOptions, FindOneOptions, FirstOrCreateOptions, GitBranchRepository, GitBranchRepositoryOptions, GitCommitListOptions, GitCommitListResult, GitCommitRepository, GitCommitRepositoryOptions, GitGateway, GitGatewayOptions, GitRepoInfo, HandleResult, HasManyThroughLoaderOptions, HttpContext, HttpMethod, IRepositoryTypes, InsertFrom, IpcMessage, JobTable, LifecycleService, ListOptions, Loader, LoaderRecord, Metadafilter, Metadata as MetadataMixin, MetadataQueryPayload, MetadataQueryService, MetadataService, Middleware, MiddlewareHandleResult, Migration, MigrationEntity, MigrationEntiyData, MigrationSource, MigrationsTable, MigratorService, MigratorServiceOptions, ModelConfig as ModelConfigMixin, ModelCountOptions, ModelCreateOptions, ModelDestroyOptions, ModelEntity, ModelFindOptions, ModelFirstOrCreateOptions, ModelListOptions, ModelMixin, ModelPaginateOptions, ModelUpdateOptions, ModelUpdateOrCreateOptions, Module as ModuleEntity, OauthAccountTable, OauthTokenTable, ObjectOptions, PageRequestContextEntity, PageRequestContextEntityOptions, PaginateResult, Pagination, PermissionAssignmentRepository, PermissionAssignmentRepositoryQueryOptions, PermissionAssignmentTable, PermissionRepository, PermissionRepositoryQueryOptions, PermissionTable, PluginEntity, PluginEntryEntity, PluginIpcClient, PluginIpcHost, PluginRouter, Redirect, Relation as RelationsMixin, Request, ResourceMethod, Response, RoleTable, RouteDefinition, Route as RouteEntity, RouteHandler, RouteReply, RouteRequest, RouteResponsePayload, RouterEvents, RouterFileBaseRoutingService, RouterRegisterEntry, RouterRegister as RouterRegisterService, RouterResourceConfig as RouterResourceConfigService, RouterResourceOptions, RouterResourceService, RouterService, RoutineEntity, RoutineEntityOptions, RoutineHandler, S3DriveConfig, SchedulerEvents, SchedulerService, SchedulerServiceOptions, SeederEntity, SeederEntiyData, SeederEvents, SeederResult, SeeederService as SeederService, SeederServiceOptions, SeederSource, SelectBuilder, SelectFrom, SerializableResult, SerializeOptions, ShellService, ShellServiceOptions, SoftDeleteOptions, SoftDeleteResult, TableColumn, TokenRepository, TokenRepositoryQueryOptions, TokenTable, UpdateFrom, UpdateOptions, UpdateOrCreateOptions, UploadSessionTable, UploadUrlOptions, UrlOptions, UserMetaTable, UserRepository, UserRepositoryQueryOptions, UserRoleTable, UserTable, addCreatedColumn, addSoftDeleteColumn, addTimestampColumns, addUpdatedColumn, basePath, config, _default as container, count, create, createDefault, createHasManyThroughLoader, createLoaderFactory, createMysql, cuid, database, defineHandler, defineLoader, deleted, destroy, download, drive, emmitter, encrypt, exists, fileRepository as filesRepository, findOne, findOneOrFail, firstOrCreate, generateIndexFile, importAll, importFiles, importGlob, importOne,
|
|
2598
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci91dGlscy9wcmludFRhYmxlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3V0aWxzL2NvbXBvc2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zY2hlbWFzL3Blcm1pc3Npb25Bc3NpZ25tZW50U2NoZW1hLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NjaGVtYXMvcGVybWlzc2lvblNjaGVtYS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zY2hlbWFzL3Rva2VuU2NoZW1hLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL21peGlucy9Ib29rc01peGluLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1Blcm1pc3Npb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvQWNsRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0Nvb2tpZU1hcEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Ecml2ZUNvbmZpZ0VudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Ecml2ZUVudHJ5RW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0ZpbGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvRmlsZU1ldGFFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvR2l0QnJhbmNoRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0dpdENvbW1pdEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Nb2R1bGVNYW5pZmVzdEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Nb2R1bGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUGFnaW5hdGlvbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9QbHVnaW5FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUm9sZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0NsaVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvQ2xpVGVzdGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9DbGlXcmFwcGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Db25maWdGU1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2NoZW1hcy9lbnZTY2hlbWEuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvRW52U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Db25maWdNYW5hZ2VyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9nYXRld2F5cy9Ecml2ZUJhc2VHYXRld2F5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2dhdGV3YXlzL0RyaXZlUzNHYXRld2F5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0NvbmZpZ1MzU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Eb3dubG9hZFNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0RyaXZlQ29udHJhY3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvRHJpdmVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL01pZ3JhdGlvbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9Db29raWVNYXBFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvUGFnZVJlcXVlc3RDb250ZXh0RW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0FjbEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9jb250cmFjdHMvSHR0cENvbnRleHRDb250cmFjdC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvUm91dGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUm91dGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9Sb3V0aW5lRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1NjaGVkdWxlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvU2VlZGVyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1NlZWRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0V2ZW50Q29udHJhY3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvRW1taXR0ZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0VuY3J5cHRTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0xpZmVjeWNsZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvTWV0YWRhdGFRdWVyeVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvTWV0YWRhdGFTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL01pZ3JhdG9yU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9QbHVnaW5JcGNDbGllbnQuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUGx1Z2luSXBjSG9zdC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9QbHVnaW5Sb3V0ZXIuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUm91dGVyRmlsZUJhc2VSb3V0aW5nU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Sb3V0ZXJSZWdpc3RlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUm91dGVyUmVzb3VyY2VTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL21peGlucy9Nb2RlbENvbmZpZ01peGluLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1JvdXRlclJlc291cmNlQ29uZmlnU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9TaGVsbFNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvQ29uZmlnUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvRmlsZVJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVwb3NpdG9yaWVzL0dpdEJyYW5jaFJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVwb3NpdG9yaWVzL0dpdENvbW1pdFJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVwb3NpdG9yaWVzL1Blcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvUGVybWlzc2lvblJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvbWl4aW5zL0RhdGFiYXNlUmVwb3NpdG9yeUluZmVyTWl4aW4uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVwb3NpdG9yaWVzL1Rva2VuUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvVXNlclJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZ2F0ZXdheXMvRHJpdmVGU0dhdGV3YXkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZ2F0ZXdheXMvR2l0R2F0ZXdheS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taXhpbnMvTWV0YWRhdGFNaXhpbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL2RhdGFiYXNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvY29tbW9uLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvdXBkYXRlT3JDcmVhdGUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9saXN0LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvcGFnaW5hdGUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9jb3VudC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2NyZWF0ZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL3VwZGF0ZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2Rlc3Ryb3kuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9maXJzdE9yQ3JlYXRlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvZmluZE9uZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taXhpbnMvUmVsYXRpb25zTWl4aW4uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9jb25maWcuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9jb250YWluZXIuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9kb3dubG9hZC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL2RyaXZlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvZW1taXR0ZXIuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9lbmNyeXB0LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvZmlsZXNSZXBvc2l0b3J5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvbG9nZ2VyLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvbWlncmF0b3IuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9wZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9wZXJtaXNzaW9uUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL3JvdXRlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL3NjaGVkdWxlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL3NoZWxsLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvdG9rZW5SZXBvc2l0b3J5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvdXNlclJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0t5c2VseUNvbnRyYWN0LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2RlZmluZUxvYWRlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9sb2FkZXJzL2NyZWF0ZUhhc01hbnlUaHJvdWdoTG9hZGVyLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0RyaXZlQ29uZmlnRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0ZpbGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvRmlsZU1ldGFFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvTW9kdWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL1BsdWdpbkVudHJ5RW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL1BsdWdpbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2V4aXN0cy5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2luY3JlbWVudGFsLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvc29mdERlbGV0ZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL3RpbWVzdGFtcC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taWRkbGV3YXJlcy9BdXRoTWlkZGxld2FyZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taWRkbGV3YXJlcy9BdXRoU2lsZW5jZU1pZGRsZXdhcmUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvbWlkZGxld2FyZXMvQXV0aG9yaXphdGlvbk1pZGRsZXdhcmUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvdXRpbHMvYmFzZVBhdGguZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvdXRpbHMvY3JlYXRlTG9hZGVyRmFjdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci91dGlscy9jdWlkLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2RlZmluZUhhbmRsZXIuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvdXRpbHMvZ2VuZXJhdGVJbmRleEZpbGUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvdXRpbHMvaW1wb3J0QWxsLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2ltcG9ydE9uZS5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW4ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZyB8ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpO1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIHJlYWxXaWR0aD86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0T3B0aW9ucyB7XG4gICAga2V5V2lkdGg/OiBudW1iZXI7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwcmludE9iamVjdChvdXRwdXQ/OiBhbnksIG9wdGlvbnM/OiBPYmplY3RPcHRpb25zKTogdm9pZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHByaW50VGFibGUoaXRlbXM6IGFueVtdLCBjb2x1bW5zPzogVGFibGVDb2x1bW5bXSk6IHZvaWQ7XG4iLCJpbnRlcmZhY2UgRW50cnkge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBhbnk7XG4gICAgc291cmNlOiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgZW50cmllczogTWFwPHN0cmluZywgRW50cnk+O1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgbGlzdCgpOiBFbnRyeVtdO1xuICAgIHBhcnNlVmFsdWUodmFsdWU6IGFueSk6IGFueTtcbiAgICBsb2FkRnJvbVJlY29yZChyZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgbG9hZEZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZ2V0PFQgPSBhbnkgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBUO1xuICAgIGdldE9uZTxUID0gYW55IHwgdW5kZWZpbmVkPihrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzogYW55KTogVDtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoa2V5OiBzdHJpbmcpOiB2b2lkO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG4gICAgZHVtcCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuZXhwb3J0IHt9O1xuIiwidHlwZSBDb25zdHJ1Y3RvcjxUID0gb2JqZWN0PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG50eXBlIEVudHJ5S2V5ID0gc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWluZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGVudHJpZXM7XG4gICAgbG9hZEZyb21SZWNvcmQocmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgZ2V0S2V5O1xuICAgIHNldChwYXlsb2FkOiBFbnRyeUtleSwgdmFsdWU6IGFueSk6IHRoaXM7XG4gICAgaGFzKHBheWxvYWQ6IEVudHJ5S2V5KTogYm9vbGVhbjtcbiAgICBnZXQ8VD4ocGF5bG9hZDogRW50cnlLZXkpOiBUO1xuICAgIHNpbmdsZXRvbjxUPihjbGFzc0NvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPik6IFQ7XG4gICAgbG9hZChlbnRyaWVzOiBSZWNvcmQ8YW55LCBhbnk+KTogdm9pZDtcbiAgICBwcm94eTxUID0gdW5rbm93bj4oa2V5OiBFbnRyeUtleSk6IFQ7XG4gICAga2V5cygpOiBFbnRyeUtleVtdO1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcgfCBFcnJvciwgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgY2hpbGQob3B0aW9uczogYW55KTogTG9nZ2VyU2VydmljZTtcbn1cbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJy4vTG9nZ2VyU2VydmljZS50cyc7XG5pbnRlcmZhY2UgRW1taXR0ZXJIYW5kbGVyIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuICAgIG9yaWdpbmFsTGlzdGVuZXI/OiAoLi4uYXJnczogYW55W10pID0+IGFueTtcbn1cbmludGVyZmFjZSBPbk9wdGlvbnMge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHVuaXF1ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgT25EZWJvdW5jZU9wdGlvbnMgZXh0ZW5kcyBPbk9wdGlvbnMge1xuICAgIGRlYm91bmNlPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBFbW1pdHRlclNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtbWl0dGVyU2VydmljZTxFdmVudHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBwcml2YXRlIGhhbmRsZXJzO1xuICAgIHByaXZhdGUgZGVidWc7XG4gICAgcHJpdmF0ZSBsb2dnZXI7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IEVtbWl0dGVyU2VydmljZU9wdGlvbnMpO1xuICAgIHN0YXRpYyBjcmVhdGU8RXZlbnRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KG9wdGlvbnM/OiBFbW1pdHRlclNlcnZpY2VPcHRpb25zKTogRW1taXR0ZXJTZXJ2aWNlPEV2ZW50cz47XG4gICAgc2V0RGVidWcoZGVidWc6IGJvb2xlYW4pOiB2b2lkO1xuICAgIHNldExvZ2dlcihsb2dnZXI6IExvZ2dlclNlcnZpY2UpOiB2b2lkO1xuICAgIG9uPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbmNlPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbmNlKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoYXJnczogYW55KSA9PiB2b2lkLCBvcHRpb25zPzogT25PcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uRGVib3VuY2U8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnQ6IEssIGxpc3RlbmVyOiAoYXJnczogRXZlbnRzW0tdKSA9PiB2b2lkLCBvcHRpb25zPzogT25EZWJvdW5jZU9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25EZWJvdW5jZShldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uRGVib3VuY2VPcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uQW55T2Y8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnRzOiBLW10sIGxpc3RlbmVyOiAoYXJnczogRXZlbnRzW0tdKSA9PiB2b2lkLCBvcHRpb25zPzogT25PcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgb25BbnlPZihldmVudHM6IHN0cmluZ1tdLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIG9mZihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogRnVuY3Rpb24pOiB2b2lkO1xuICAgIGVtaXQ8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnQ6IEssIGFyZ3M6IEV2ZW50c1tLXSk6IHZvaWQ7XG4gICAgZW1pdChldmVudDogc3RyaW5nLCBhcmdzPzogYW55KTogdm9pZDtcbiAgICBlbWl0QW5kV2FpdDxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgYXJnczogRXZlbnRzW0tdKTogUHJvbWlzZTx2b2lkPjtcbiAgICBlbWl0QW5kV2FpdChldmVudDogc3RyaW5nLCBhcmdzPzogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgICBsaXN0KCk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIGxpc3RCeUV2ZW50KGV2ZW50OiBzdHJpbmcpOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICByZW1vdmUocGF5bG9hZDogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG4gICAgaGFzSGFuZGxlcnMoKTogYm9vbGVhbjtcbn1cbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIExpZmVjeWNsZUhvb2sge1xuICAgIGhvb2tfaWQ6IHN0cmluZztcbiAgICBob29rX2FsaWFzZXM/OiBzdHJpbmdbXTtcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBzdWJob29rcz86IExpZmVjeWNsZUhvb2tbXTtcbiAgICByZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBib290KCk6IFByb21pc2U8dm9pZD47XG4gICAgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIHJlZ2lzdGVyICovXG4gICAgb25SZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiBAZGVwcmVjYXRlZCBVc2UgbG9hZCAqL1xuICAgIG9uTG9hZCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiBAZGVwcmVjYXRlZCBVc2UgYm9vdCAqL1xuICAgIG9uQm9vdCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiBAZGVwcmVjYXRlZCBVc2Ugc2h1dGRvd24gKi9cbiAgICBvblNodXRkb3duKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IFVuaW9uVG9JbnRlcnNlY3Rpb24gfSBmcm9tICcuL3R5cGluZy50cyc7XG5leHBvcnQgdHlwZSBBbnlDbGFzcyA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcbmV4cG9ydCB0eXBlIENvbnN0cnVjdG9yPFQgPSB7fT4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuZXhwb3J0IHR5cGUgTWl4aW48VD4gPSAoYmFzZTogQ29uc3RydWN0b3IpID0+IENvbnN0cnVjdG9yPFQ+O1xuLyoqXG4gKiBDb21wb3NlcyBtdWx0aXBsZSBtaXhpbnMgaW50byBhIHNpbmdsZSBjbGFzcyB0aGF0IGNhbiBiZSBleHRlbmRlZC5cbiAqIEFsbG93cyBmb3IgbXVsdGlwbGUgaW5oZXJpdGFuY2UtbGlrZSBiZWhhdmlvciBieSBhcHBseWluZyBtaXhpbnMgc2VxdWVudGlhbGx5LlxuICpcbiAqIEBwYXJhbSBtaXhpbnMgLSBBcnJheSBvZiBtaXhpbiBmdW5jdGlvbnMgdG8gY29tcG9zZVxuICogQHJldHVybnMgQSBjbGFzcyBjb25zdHJ1Y3RvciB0aGF0IGluY2x1ZGVzIGFsbCBtaXhpbiBmdW5jdGlvbmFsaXR5XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFVzZXIgZXh0ZW5kcyBjb21wb3NlKFRpbWVzdGFtcCwgU29mdERlbGV0ZSkge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoKVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY29tcG9zZTxNIGV4dGVuZHMgQXJyYXk8KGJhc2U6IENvbnN0cnVjdG9yPGFueT4pID0+IENvbnN0cnVjdG9yPGFueT4+PiguLi5taXhpbnM6IE0pOiBVbmlvblRvSW50ZXJzZWN0aW9uPFJldHVyblR5cGU8TVtudW1iZXJdPj47XG4vKipcbiAqIEFsdGVybmF0aXZlIGNvbXBvc2UgZnVuY3Rpb24gdGhhdCBzdGFydHMgd2l0aCBhIGJhc2UgY2xhc3NcbiAqXG4gKiBAcGFyYW0gYmFzZUNsYXNzIC0gVGhlIGJhc2UgY2xhc3MgdG8gc3RhcnQgd2l0aFxuICogQHBhcmFtIG1peGlucyAtIEFycmF5IG9mIG1peGluIGZ1bmN0aW9ucyB0byBhcHBseVxuICogQHJldHVybnMgQSBjbGFzcyBjb25zdHJ1Y3RvciB0aGF0IGV4dGVuZHMgdGhlIGJhc2UgY2xhc3Mgd2l0aCBhbGwgbWl4aW4gZnVuY3Rpb25hbGl0eVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIGV4dGVuZHMgY29tcG9zZVdpdGgoQmFzZUVudGl0eSwgVGltZXN0YW1wLCBTb2Z0RGVsZXRlKSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAqICAgICBzdXBlcigpXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjb21wb3NlV2l0aDxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yLCBNIGV4dGVuZHMgQXJyYXk8KGJhc2U6IENvbnN0cnVjdG9yKSA9PiBDb25zdHJ1Y3Rvcjxhbnk+Pj4oYmFzZUNsYXNzOiBUQmFzZSwgLi4ubWl4aW5zOiBNKTogVEJhc2UgJiBVbmlvblRvSW50ZXJzZWN0aW9uPFJldHVyblR5cGU8TVtudW1iZXJdPj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBtaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPihTb3VyY2U6IFRCYXNlKTogPFRUYXJnZXQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oVGFyZ2V0OiBUVGFyZ2V0KSA9PiBUVGFyZ2V0ICYgVEJhc2U7XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcuL0xvZ2dlclNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgTGlmZWN5Y2xlSG9vayBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2sudHMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG50eXBlIExpZmVjeWNsZU1ldGhvZCA9ICdyZWdpc3RlcicgfCAnbG9hZCcgfCAnYm9vdCcgfCAnc2h1dGRvd24nO1xuaW50ZXJmYWNlIExpc3RPcHRpb25zIHtcbiAgICBpbmNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgZXhjbHVkZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucyB7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGhvb2tzPzogTWFwPHN0cmluZywgTGlmZWN5Y2xlSG9vaz47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBvbkVycm9yPzogKGVycm9yOiBFcnJvciwgY29udGV4dDoge1xuICAgICAgICBob29rSWQ6IHN0cmluZztcbiAgICAgICAgbWV0aG9kOiBMaWZlY3ljbGVNZXRob2Q7XG4gICAgfSkgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpZmVjeWNsZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBob29rczogTWFwPHN0cmluZywgTGlmZWN5Y2xlSG9vaz47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucyk7XG4gICAgb25FcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ6IHtcbiAgICAgICAgaG9va0lkOiBzdHJpbmc7XG4gICAgICAgIG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kO1xuICAgIH0pOiB2b2lkO1xuICAgIG1hcEFsaWFzZXMoYXJnczogc3RyaW5nW10pOiBzdHJpbmdbXTtcbiAgICBsaXN0KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IExpZmVjeWNsZUhvb2tbXTtcbiAgICBhZGQoLi4ucGF5bG9hZDogKExpZmVjeWNsZUhvb2sgfCBDb25zdHJ1Y3RvcjxMaWZlY3ljbGVIb29rPilbXSk6IHZvaWQ7XG4gICAgZW1pdE1ldGhvZChtZXRob2Q6IExpZmVjeWNsZU1ldGhvZCwgb3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBlbWl0KHBheWxvYWQ6IExpZmVjeWNsZU1ldGhvZCB8IExpZmVjeWNsZU1ldGhvZFtdLCBvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHJlZ2lzdGVyKG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZChvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGJvb3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzaHV0ZG93bihvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGNsZWFyKCk6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgKiBhcyB2IGZyb20gJ3ZhbGlib3QnO1xuZXhwb3J0IHR5cGUgUGVybWlzc2lvbkFzc2lnbm1lbnQgPSB2LkluZmVyT3V0cHV0PHR5cGVvZiBwZXJtaXNzaW9uQXNzaWdubWVudFNjaGVtYT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBwZXJtaXNzaW9uQXNzaWdubWVudFNjaGVtYTogdi5PYmplY3RTY2hlbWE8e1xuICAgIHJlYWRvbmx5IGlkOiB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHBlcm1pc3Npb25faWQ6IHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgYXNzaWduYWJsZV90eXBlOiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGFzc2lnbmFibGVfaWQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgY3JlYXRlZF9hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSB1cGRhdGVkX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xufSwgdW5kZWZpbmVkPjtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uID0gdi5JbmZlck91dHB1dDx0eXBlb2YgcGVybWlzc2lvblNjaGVtYT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBwZXJtaXNzaW9uU2NoZW1hOiB2Lk9iamVjdFNjaGVtYTx7XG4gICAgcmVhZG9ubHkgaWQ6IHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgbmFtZTogdi5OdWxsYWJsZVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiB2Lk51bGxhYmxlU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgYWN0aW9uOiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHN1YmplY3Q6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgY29uZGl0aW9uczogdi5OdWxsYWJsZVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGNyZWF0ZWRfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBleHBpcmVzX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xufSwgdW5kZWZpbmVkPjtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgdHlwZSBUb2tlbiA9IHYuSW5mZXJPdXRwdXQ8dHlwZW9mIHRva2VuU2NoZW1hPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHRva2VuU2NoZW1hOiB2Lk9iamVjdFNjaGVtYTx7XG4gICAgcmVhZG9ubHkgaWQ6IHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgbmFtZTogdi5OdWxsYWJsZVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHR5cGU6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdXNlcl9pZDogdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSB0b2tlbjogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBjcmVhdGVkX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHVwZGF0ZWRfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgZXhwaXJlc19hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbn0sIHVuZGVmaW5lZD47XG4iLCJpbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXIge1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGVtaXRIb29rKGNvbnN0cnVjdG9yOiBhbnksIGV2ZW50OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIG9uSG9vayhjb25zdHJ1Y3RvcjogYW55LCBldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZDtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIEhvb2tzU3RhdGljPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KEJhc2U6IFRCYXNlKToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7fTtcbiAgICBsaXN0ZW5lcnM6IEFycmF5PCguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD47XG4gICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgZW1pdChldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59ICYgVEJhc2U7XG5leHBvcnQgZGVjbGFyZSBuYW1lc3BhY2UgSG9va3NTdGF0aWMge1xuICAgIHZhciBlbWl0OiB0eXBlb2YgZW1pdEhvb2s7XG4gICAgdmFyIG9uOiB0eXBlb2Ygb25Ib29rO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9va3M8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oQmFzZTogVEJhc2UpOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbGlzdGVuZXJzOiBMaXN0ZW5lcltdO1xuICAgICAgICBvbihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZDtcbiAgICAgICAgb2ZmKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBlbWl0KGV2ZW50OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcbiAgICAgICAgZW1pdEFzeW5jKGV2ZW50OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbiAgICB9O1xufSAmIFRCYXNlO1xuIiwiZGVjbGFyZSBjb25zdCBQZXJtaXNzaW9uRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVybWlzc2lvbkVudGl0eSBleHRlbmRzIFBlcm1pc3Npb25FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgb3JpZ2luOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIGNvbmRpdGlvbnM6IHN0cmluZyB8IG51bGwgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGdldCBlZGl0YWJsZSgpOiBib29sZWFuO1xuICAgIGdldCBwYXJzZWRDb25kaXRpb25zKCk6IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IGRlZmluZUFiaWxpdHkgfSBmcm9tICdAY2FzbC9hYmlsaXR5JztcbmltcG9ydCBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWNsRW50aXR5IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgYWJpbGl0eTogUmV0dXJuVHlwZTx0eXBlb2YgZGVmaW5lQWJpbGl0eT47XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QWNsRW50aXR5Pik7XG4gICAgY2FuKGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuICAgIGNhbm5vdChhY3Rpb246IHN0cmluZywgc3ViamVjdDogYW55LCBvYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbjtcbiAgICBzdWJqZWN0KHN1YmplY3Q6IHN0cmluZywgb2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiAmIGltcG9ydChcIkBjYXNsL2FiaWxpdHlcIikuRm9yY2VkU3ViamVjdDxzdHJpbmc+O1xufVxuIiwiZXhwb3J0IGludGVyZmFjZSBDb29raWVNYXBFbnRpdHlPcHRpb25zIHtcbiAgICBjb29raWVzPzogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb29raWVNYXBFbnRpdHkge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBjb29raWVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHByZWZpeDogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBDb29raWVNYXBFbnRpdHlPcHRpb25zKTtcbiAgICBsb2FkKGNvb2tpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBNYXA8c3RyaW5nLCBzdHJpbmc+KTogdm9pZDtcbiAgICBnZXQobmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbDtcbiAgICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgVFlQRVM6ICgpID0+ICh7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogYW55O1xuICAgIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgY29uZmlnX2ZpZWxkczoge1xuICAgICAgICBkaXJlY3Rvcnk6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIGFjY2Vzc0tleUlkPzogdW5kZWZpbmVkO1xuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk/OiB1bmRlZmluZWQ7XG4gICAgICAgIGJ1Y2tldD86IHVuZGVmaW5lZDtcbiAgICAgICAgcmVnaW9uPzogdW5kZWZpbmVkO1xuICAgICAgICBwcmVmaXg/OiB1bmRlZmluZWQ7XG4gICAgICAgIGVuZHBvaW50PzogdW5kZWZpbmVkO1xuICAgIH07XG59IHwge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogYW55O1xuICAgIGNvbmZpZ19maWVsZHM6IHtcbiAgICAgICAgYWNjZXNzS2V5SWQ6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgIGhpbnQ6IGFueTtcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICAgIGJ1Y2tldDoge1xuICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICB9O1xuICAgICAgICByZWdpb246IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgIGhpbnQ6IGFueTtcbiAgICAgICAgfTtcbiAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIGRpcmVjdG9yeT86IHVuZGVmaW5lZDtcbiAgICB9O1xufSlbXTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlQ29uZmlnIHtcbiAgICBzdGF0aWMgZ2V0IFRZUEVTKCk6ICh7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgICAgIGNvbmZpZ19maWVsZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeToge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGFueTtcbiAgICAgICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWNjZXNzS2V5SWQ/OiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXk/OiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBidWNrZXQ/OiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZWdpb24/OiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBwcmVmaXg/OiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBlbmRwb2ludD86IHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICB9IHwge1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbjogYW55O1xuICAgICAgICBjb25maWdfZmllbGRzOiB7XG4gICAgICAgICAgICBhY2Nlc3NLZXlJZDoge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgICAgIGhpbnQ6IGFueTtcbiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnVja2V0OiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVnaW9uOiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgICAgIGhpbnQ6IGFueTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkaXJlY3Rvcnk/OiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgfSlbXTtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgaXNfZGVmYXVsdDogYm9vbGVhbjtcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29uc3RydWN0b3IoZGF0YTogRHJpdmVDb25maWcpO1xuICAgIGdldCBjb25maWdfZmllbGRzKCk6IHt9O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJpdmVFbnRyeSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHBhdGg6IHN0cmluZztcbiAgICB0eXBlOiAnZmlsZScgfCAnZGlyZWN0b3J5JztcbiAgICBtZXRhczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEcml2ZUVudHJ5KTtcbn1cbiIsImRlY2xhcmUgY29uc3QgRmlsZUVudGl0eV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZUVudGl0eSBleHRlbmRzIEZpbGVFbnRpdHlfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBkcml2ZTogc3RyaW5nO1xuICAgIG1pbWV0eXBlOiBzdHJpbmc7XG4gICAgcHVycG9zZTogc3RyaW5nO1xuICAgIGNsaWVudF9uYW1lOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBwdWJsaWM6IGJvb2xlYW47XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIG1ldGFzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBpc0ltYWdlKCk6IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iLCJkZWNsYXJlIGNvbnN0IEZpbGVNZXRhX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgfTtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZGVsZXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlTWV0YSBleHRlbmRzIEZpbGVNZXRhX2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgZmlsZV9pZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEdpdEJyYW5jaEVudGl0eSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHJlbW90ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBpc19jdXJyZW50OiBib29sZWFuO1xuICAgIGlzX3JlbW90ZTogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBHaXRCcmFuY2hFbnRpdHkpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2l0Q29tbWl0RW50aXR5IHtcbiAgICBoYXNoOiBzdHJpbmc7XG4gICAgc2hvcnRfaGFzaDogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBib2R5OiBzdHJpbmc7XG4gICAgYXV0aG9yX25hbWU6IHN0cmluZztcbiAgICBhdXRob3JfZW1haWw6IHN0cmluZztcbiAgICBkYXRlOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoZGF0YTogR2l0Q29tbWl0RW50aXR5KTtcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlTWFuaWZlc3RCdWlsZEltcG9ydCB7XG4gICAgZnJvbTogc3RyaW5nO1xuICAgIHRvPzogc3RyaW5nO1xuICAgIHR5cGU6ICdnbG9iYWxfaW1wb3J0Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlTWFuaWZlc3RCdWlsZCB7XG4gICAgaW1wb3J0cz86IE1vZHVsZU1hbmlmZXN0QnVpbGRJbXBvcnRbXTtcbn1cbmRlY2xhcmUgY29uc3QgTW9kdWxlTWFuaWZlc3RfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2R1bGVNYW5pZmVzdCBleHRlbmRzIE1vZHVsZU1hbmlmZXN0X2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGF1dGhvcj86IHN0cmluZztcbiAgICBkZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGJ1aWxkPzogTW9kdWxlTWFuaWZlc3RCdWlsZDtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSBNb2R1bGVNYW5pZmVzdCBmcm9tICcuL01vZHVsZU1hbmlmZXN0RW50aXR5LnRzJztcbmltcG9ydCBMaWZlY3ljbGVIb29rIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTGlmZWN5Y2xlSG9vay50cyc7XG5pbnRlcmZhY2UgTW9kdWxlVXBncmFkZUluZm8ge1xuICAgIHNvdXJjZTogJ2dpdCcgfCAnemlwJztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5kZWNsYXJlIGNvbnN0IE1vZHVsZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3Rvcjx7fT4gJiB0eXBlb2YgTGlmZWN5Y2xlSG9vaztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZSBleHRlbmRzIE1vZHVsZV9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGRlcGVuZGVuY2llczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBidWlsZDogTW9kdWxlTWFuaWZlc3RbJ2J1aWxkJ107XG4gICAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgdXBncmFkZV9pbmZvPzogTW9kdWxlVXBncmFkZUluZm87XG4gICAgc2V0RGF0YShkYXRhOiBQYXJ0aWFsPE1vZHVsZSB8IE1vZHVsZU1hbmlmZXN0Pik6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBQYWdpbmF0aW9uRW50aXR5PFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgaXRlbXM6IFRbXTtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBwZXJfcGFnZTogbnVtYmVyO1xuICAgIHRvdGFsX3BhZ2VzOiBudW1iZXI7XG4gICAgY29uc3RydWN0b3IoZGF0YTogUGFydGlhbDxQYWdpbmF0aW9uRW50aXR5Pik7XG4gICAgc3RhdGljIGZyb208VCA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHBheWxvYWQ6IFBhcnRpYWw8UGFnaW5hdGlvbkVudGl0eTxUPj4pOiBQYWdpbmF0aW9uRW50aXR5PFQ+O1xufVxuIiwiZGVjbGFyZSBjb25zdCBQbHVnaW5FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYWxpYXNlczogc3RyaW5nW107XG4gICAgdmVyc2lvbl9jaGFubmVsOiBzdHJpbmc7XG4gICAgdmVyc2lvbl9hdmFpbGFibGVfY2hhbm5lbHM6IHN0cmluZ1tdO1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBjb25zdCBSb2xlX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgfTtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZGVsZXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb2xlIGV4dGVuZHMgUm9sZV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIFBlcm1pc3Npb24gZnJvbSAnLi9QZXJtaXNzaW9uRW50aXR5LnRzJztcbmltcG9ydCB0eXBlIFJvbGUgZnJvbSAnLi9Sb2xlRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgVXNlckVudGl0eV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlckVudGl0eSBleHRlbmRzIFVzZXJFbnRpdHlfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIHZlcmlmaWVkX2F0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uW107XG4gICAgcm9sZXM/OiBSb2xlW107XG4gICAgZ2V0IGluaXRpYWxzKCk6IHN0cmluZztcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgcHJpbnRUYWJsZSwgcHJpbnRPYmplY3QgfSBmcm9tICcuLi91dGlscy9wcmludFRhYmxlLnRzJztcbmltcG9ydCB7IEVtbWl0dGVyU2VydmljZSwgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuaW1wb3J0ICogYXMgaW5xdWlyZXIgZnJvbSAnQGlucXVpcmVyL3Byb21wdHMnO1xuZXhwb3J0IGludGVyZmFjZSBDbGlFdmVudHMge1xuICAgICdjbGk6cmVnaXN0ZXJlZCc6IHtcbiAgICAgICAgY2xpOiBDbGlTZXJ2aWNlO1xuICAgIH07XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDbGlDb21tYW5kIGV4dGVuZHMgQ29tbWFuZGVyQ29tbWFuZCB7XG4gICAgX19pc19jbGlfY29tbWFuZDogYm9vbGVhbjtcbiAgICB0YWJsZTogdHlwZW9mIHByaW50VGFibGU7XG4gICAgb2JqZWN0OiB0eXBlb2YgcHJpbnRPYmplY3Q7XG4gICAgY29sb3JzOiBjaGFsay5DaGFsayAmIGNoYWxrLkNoYWxrRnVuY3Rpb24gJiB7XG4gICAgICAgIHN1cHBvcnRzQ29sb3I6IGNoYWxrLkNvbG9yU3VwcG9ydCB8IGZhbHNlO1xuICAgICAgICBMZXZlbDogY2hhbGsuTGV2ZWw7XG4gICAgICAgIENvbG9yOiAoXCJibGFja1wiIHwgXCJyZWRcIiB8IFwiZ3JlZW5cIiB8IFwieWVsbG93XCIgfCBcImJsdWVcIiB8IFwibWFnZW50YVwiIHwgXCJjeWFuXCIgfCBcIndoaXRlXCIgfCBcImdyYXlcIiB8IFwiZ3JleVwiIHwgXCJibGFja0JyaWdodFwiIHwgXCJyZWRCcmlnaHRcIiB8IFwiZ3JlZW5CcmlnaHRcIiB8IFwieWVsbG93QnJpZ2h0XCIgfCBcImJsdWVCcmlnaHRcIiB8IFwibWFnZW50YUJyaWdodFwiIHwgXCJjeWFuQnJpZ2h0XCIgfCBcIndoaXRlQnJpZ2h0XCIpIHwgKFwiYmdCbGFja1wiIHwgXCJiZ1JlZFwiIHwgXCJiZ0dyZWVuXCIgfCBcImJnWWVsbG93XCIgfCBcImJnQmx1ZVwiIHwgXCJiZ01hZ2VudGFcIiB8IFwiYmdDeWFuXCIgfCBcImJnV2hpdGVcIiB8IFwiYmdHcmF5XCIgfCBcImJnR3JleVwiIHwgXCJiZ0JsYWNrQnJpZ2h0XCIgfCBcImJnUmVkQnJpZ2h0XCIgfCBcImJnR3JlZW5CcmlnaHRcIiB8IFwiYmdZZWxsb3dCcmlnaHRcIiB8IFwiYmdCbHVlQnJpZ2h0XCIgfCBcImJnTWFnZW50YUJyaWdodFwiIHwgXCJiZ0N5YW5CcmlnaHRcIiB8IFwiYmdXaGl0ZUJyaWdodFwiKTtcbiAgICAgICAgRm9yZWdyb3VuZENvbG9yOiBcImJsYWNrXCIgfCBcInJlZFwiIHwgXCJncmVlblwiIHwgXCJ5ZWxsb3dcIiB8IFwiYmx1ZVwiIHwgXCJtYWdlbnRhXCIgfCBcImN5YW5cIiB8IFwid2hpdGVcIiB8IFwiZ3JheVwiIHwgXCJncmV5XCIgfCBcImJsYWNrQnJpZ2h0XCIgfCBcInJlZEJyaWdodFwiIHwgXCJncmVlbkJyaWdodFwiIHwgXCJ5ZWxsb3dCcmlnaHRcIiB8IFwiYmx1ZUJyaWdodFwiIHwgXCJtYWdlbnRhQnJpZ2h0XCIgfCBcImN5YW5CcmlnaHRcIiB8IFwid2hpdGVCcmlnaHRcIjtcbiAgICAgICAgQmFja2dyb3VuZENvbG9yOiBcImJnQmxhY2tcIiB8IFwiYmdSZWRcIiB8IFwiYmdHcmVlblwiIHwgXCJiZ1llbGxvd1wiIHwgXCJiZ0JsdWVcIiB8IFwiYmdNYWdlbnRhXCIgfCBcImJnQ3lhblwiIHwgXCJiZ1doaXRlXCIgfCBcImJnR3JheVwiIHwgXCJiZ0dyZXlcIiB8IFwiYmdCbGFja0JyaWdodFwiIHwgXCJiZ1JlZEJyaWdodFwiIHwgXCJiZ0dyZWVuQnJpZ2h0XCIgfCBcImJnWWVsbG93QnJpZ2h0XCIgfCBcImJnQmx1ZUJyaWdodFwiIHwgXCJiZ01hZ2VudGFCcmlnaHRcIiB8IFwiYmdDeWFuQnJpZ2h0XCIgfCBcImJnV2hpdGVCcmlnaHRcIjtcbiAgICAgICAgTW9kaWZpZXJzOiBcInJlc2V0XCIgfCBcImJvbGRcIiB8IFwiZGltXCIgfCBcIml0YWxpY1wiIHwgXCJ1bmRlcmxpbmVcIiB8IFwiaW52ZXJzZVwiIHwgXCJoaWRkZW5cIiB8IFwic3RyaWtldGhyb3VnaFwiIHwgXCJ2aXNpYmxlXCI7XG4gICAgICAgIHN0ZGVycjogY2hhbGsuQ2hhbGsgJiB7XG4gICAgICAgICAgICBzdXBwb3J0c0NvbG9yOiBjaGFsay5Db2xvclN1cHBvcnQgfCBmYWxzZTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGlucXVpcmVyOiB0eXBlb2YgaW5xdWlyZXI7XG4gICAgbmVlZHM6IFNldDxzdHJpbmc+O1xuICAgIG5lZWQoLi4uYXJnczogc3RyaW5nW10pOiB0aGlzO1xuICAgIGNyZWF0ZUNvbW1hbmQobmFtZT86IHN0cmluZyk6IENsaUNvbW1hbmQ7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGlTZXJ2aWNlIGV4dGVuZHMgQ2xpQ29tbWFuZCB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGRpcnM6IFNldDxzdHJpbmc+O1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBlbW1pdHRlcjogRW1taXR0ZXJTZXJ2aWNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIHN0YXRpYyBjcmVhdGUobmFtZT86IHN0cmluZyk6IENsaVNlcnZpY2U7XG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyU2VydmljZSk6IHRoaXM7XG4gICAgc2V0RGVidWcoZGVidWc6IGJvb2xlYW4pOiB0aGlzO1xuICAgIHNldEVtbWl0dGVyKGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2UpOiB0aGlzO1xuICAgIGNyZWF0ZUNvbW1hbmQobmFtZT86IHN0cmluZyk6IENsaVNlcnZpY2U7XG4gICAgYWRkRGlyKGRpcjogc3RyaW5nKTogdGhpcztcbiAgICBsb2FkRGlyKGRpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dGhpcz47XG59XG4iLCJpbXBvcnQgQ2xpU2VydmljZSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL0NsaVNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJ0ZVRlc3RlclNlcnZpY2UgZXh0ZW5kcyBDbGlTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIGFkZChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGV4ZWN1dGUoYXJnczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IGNwIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpV3JhcHBlclNlcnZpY2Uge1xuICAgIHByb2Nlc3M6IGNwLkNoaWxkUHJvY2VzcyB8IG51bGw7XG4gICAgYXBwQmFzZVBhdGg6IHN0cmluZztcbiAgICBlbnY6IE1hcDxzdHJpbmcsIGFueT47XG4gICAgYXJnczogc3RyaW5nW107XG4gICAgY29uZmlnQXJndW1lbnRzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGNvbmZpZ0ZpbGVzOiBzdHJpbmdbXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgc3RhdGljIGNyZWF0ZSgpOiBDbGlXcmFwcGVyU2VydmljZTtcbiAgICBzZXRCYXNlUGF0aChwYXRoOiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldERlYnVnKGRlYnVnOiBib29sZWFuKTogdGhpcztcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKTogdGhpcztcbiAgICBhZGRDb25maWdBcmd1bWVudChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHRoaXM7XG4gICAgYWRkQ29uZmlnRmlsZSguLi5maWxlUGF0aHM6IHN0cmluZ1tdKTogdGhpcztcbiAgICBhZGRFbnYoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB0aGlzO1xuICAgIGxvYWRDb25maWdBcmd1bWVudHMoKTogdm9pZDtcbiAgICBsb2FkQ29uZmlnRmlsZXMoKTogdm9pZDtcbiAgICBsb2FkRW52aXJvbm1lbnQoKTogdm9pZDtcbiAgICBsb2FkQXJndW1lbnRzKGFyZ3M/OiBzdHJpbmdbXSk6IHZvaWQ7XG4gICAga2lsbChjb2RlPzogbnVtYmVyKTogdm9pZDtcbiAgICBydW4oYXJncz86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCBDb25maWdTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvQ29uZmlnU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ZTU2VydmljZU9wdGlvbnMge1xuICAgIGRpcmVjdG9yeT86IHN0cmluZztcbiAgICBmb3JtYXQ/OiAnanNvbicgfCAneW1sJztcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ0ZTU2VydmljZSBleHRlbmRzIENvbmZpZ1NlcnZpY2Uge1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBmb3JtYXQ6ICdqc29uJyB8ICd5bWwnO1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDb25maWdGU1NlcnZpY2VPcHRpb25zKTtcbiAgICB3cml0ZShlbnRyeTogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHdyaXRlU3luYyhlbnRyeTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkO1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBwcml2YXRlIHBhcnNlS2V5O1xuICAgIHNldChmdWxsS2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoZnVsbEtleTogc3RyaW5nKTogdm9pZDtcbn1cbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgdHlwZSBFbnZTY2hlbWEgPSB2LkluZmVyT3V0cHV0PHR5cGVvZiBlbnZTY2hlbWE+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZW52U2NoZW1hOiB2Lkxvb3NlT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBOT0RFX0VOVjogdi5PcHRpb25hbFNjaGVtYTx2LlVuaW9uU2NoZW1hPFt2LkxpdGVyYWxTY2hlbWE8XCJkZXZlbG9wbWVudFwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJwcm9kdWN0aW9uXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcInRlc3RcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIFwiZGV2ZWxvcG1lbnRcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0JBU0VfUEFUSDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBaRU5JVEhfU1RPUkFHRV9QQVRIOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0FQUF9VUkw6IHYuT3B0aW9uYWxTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX1BPUlQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBudW1iZXI+XT4sIFwiMzAwMFwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfSE9TVDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCBcIjAuMC4wLjBcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0xPR19MRVZFTDogdi5PcHRpb25hbFNjaGVtYTx2LlBpY2tsaXN0U2NoZW1hPFtcImVycm9yXCIsIFwid2FyblwiLCBcImluZm9cIiwgXCJkZWJ1Z1wiXSwgdW5kZWZpbmVkPiwgXCJpbmZvXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9MSUZFQ1lDTEVfREVCVUc6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwidHJ1ZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJmYWxzZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCIxXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcIjBcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPFwiMFwiIHwgXCIxXCIgfCBcInRydWVcIiB8IFwiZmFsc2VcIiwgYm9vbGVhbj4sIHYuQm9vbGVhblNjaGVtYTx1bmRlZmluZWQ+XT4sIFwiZmFsc2VcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NMSUVOVF9DT05GSUc6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+LCBcIlwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj5dPiwgXCJcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19BUkdVTUVOVFM6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+LCBcIlwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHX0ZJTEVTOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZywgc3RyaW5nW10+XT4sIFwiXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfREVCVUc6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwidHJ1ZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJmYWxzZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCIxXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcIjBcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPFwiMFwiIHwgXCIxXCIgfCBcInRydWVcIiB8IFwiZmFsc2VcIiwgYm9vbGVhbj4sIHYuQm9vbGVhblNjaGVtYTx1bmRlZmluZWQ+XT4sIFwiZmFsc2VcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19EUklWRVI6IHYuT3B0aW9uYWxTY2hlbWE8di5QaWNrbGlzdFNjaGVtYTxbXCJmc1wiLCBcInMzXCJdLCB1bmRlZmluZWQ+LCBcImZzXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfRlNfUEFUSDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfRlNfRk9STUFUOiB2Lk9wdGlvbmFsU2NoZW1hPHYuUGlja2xpc3RTY2hlbWE8W1wianNvblwiLCBcInltbFwiXSwgdW5kZWZpbmVkPiwgXCJqc29uXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfUzNfQlVDS0VUOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19TM19SRUdJT046IHYuT3B0aW9uYWxTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHX1MzX0FDQ0VTU19LRVlfSUQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHX1MzX1NFQ1JFVF9BQ0NFU1NfS0VZOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19TM19TRVNTSU9OX1RPS0VOOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19TM19FTkRQT0lOVDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfUzNfUFJFRklYOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIFwiXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9QTFVHSU5TX0RJUlM6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBzdHJpbmdbXT5dPiwgXCJcIj47XG59LCB1bmRlZmluZWQ+O1xuIiwiaW1wb3J0IGRvdGVudiBmcm9tICdkb3RlbnYnO1xuaW1wb3J0IHR5cGUgeyBFbnZTY2hlbWEgfSBmcm9tICcjc2VydmVyL3NjaGVtYXMvZW52U2NoZW1hLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudlNlcnZpY2Uge1xuICAgIHByaXZhdGUgZW52O1xuICAgIHByaXZhdGUgZmlsZXM7XG4gICAgc3RhdGljIGNyZWF0ZSgpOiBFbnZTZXJ2aWNlO1xuICAgIHN0YXRpYyBkb3RFbnZDb25maWcob3B0aW9ucz86IGRvdGVudi5Eb3RlbnZDb25maWdPcHRpb25zKTogZG90ZW52LkRvdGVudkNvbmZpZ091dHB1dDtcbiAgICBzZXRGaWxlcyhmaWxlczogc3RyaW5nW10pOiB0aGlzO1xuICAgIGFkZEZpbGUoZmlsZTogc3RyaW5nKTogdGhpcztcbiAgICBsb2FkKCk6IHRoaXM7XG4gICAgZ2V0IHByb2R1Y3Rpb24oKTogYm9vbGVhbjtcbiAgICBnZXQgZGV2ZWxvcG1lbnQoKTogYm9vbGVhbjtcbiAgICBnZXQgdGVzdCgpOiBib29sZWFuO1xuICAgIGhhczxLIGV4dGVuZHMga2V5b2YgRW52U2NoZW1hPihrZXk6IEspOiBib29sZWFuO1xuICAgIGdldDxLIGV4dGVuZHMga2V5b2YgRW52U2NoZW1hPihrZXk6IEssIGRlZmF1bHRWYWx1ZT86IGFueSk6IEVudlNjaGVtYVtLXTtcbiAgICBzZXQ8SyBleHRlbmRzIGtleW9mIEVudlNjaGVtYT4oa2V5OiBLLCB2YWx1ZTogRW52U2NoZW1hW0tdKTogdm9pZDtcbn1cbiIsImltcG9ydCB7IHR5cGUgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuaW1wb3J0IENvbmZpZ1NlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Db25maWdTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIEVudlNlcnZpY2UgZnJvbSAnLi9FbnZTZXJ2aWNlLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTWFuYWdlck9wdGlvbnMge1xuICAgIGVudjogRW52U2VydmljZTtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgc2lsZW50PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ01hbmFnZXJTZXJ2aWNlIHtcbiAgICBlbnY6IEVudlNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIHNpbGVudDogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb25maWdNYW5hZ2VyT3B0aW9ucyk7XG4gICAgc3RhdGljIGNyZWF0ZShvcHRpb25zOiBDb25maWdNYW5hZ2VyT3B0aW9ucyk6IENvbmZpZ01hbmFnZXJTZXJ2aWNlO1xuICAgIHByaXZhdGUgbG9hZFMzQ29uZmlnO1xuICAgIHByaXZhdGUgbG9hZEZTQ29uZmlnO1xuICAgIGxvYWRDb25maWdGcm9tRW52KHNlcnZpY2U6IENvbmZpZ1NlcnZpY2UpOiB2b2lkO1xuICAgIGxvYWRDb25maWdGcm9tRmlsZShzZXJ2aWNlOiBDb25maWdTZXJ2aWNlLCBmaWxlOiBzdHJpbmcpOiB2b2lkO1xuICAgIGxvYWRDb25maWdGcm9tRmlsZXMoc2VydmljZTogQ29uZmlnU2VydmljZSwgZmlsZXM6IHN0cmluZ1tdKTogdm9pZDtcbiAgICBsb2FkKCk6IFByb21pc2U8Q29uZmlnU2VydmljZT47XG59XG4iLCJpbXBvcnQgbXMgZnJvbSAnbXMnO1xuaW1wb3J0IHR5cGUgRHJpdmVFbnRyeSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0RyaXZlRW50cnlFbnRpdHkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBVcmxPcHRpb25zIHtcbiAgICBleHBpcmVzPzogbXMuU3RyaW5nVmFsdWU7XG59XG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFVybE9wdGlvbnMge1xuICAgIGV4cGlyZXM/OiBtcy5TdHJpbmdWYWx1ZTtcbiAgICBtaW1lX3R5cGVzPzogc3RyaW5nW107XG4gICAgbWF4X3NpemU/OiBudW1iZXI7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZUJhc2VHYXRld2F5IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29uc3RydWN0b3IoZGF0YTogUGljazxEcml2ZUJhc2VHYXRld2F5LCAnaWQnIHwgJ25hbWUnIHwgJ2Rlc2NyaXB0aW9uJyB8ICdjb25maWcnPik7XG4gICAgbGlzdChmb2xkZXI/OiBzdHJpbmcpOiBQcm9taXNlPERyaXZlRW50cnlbXT47XG4gICAgZmluZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxEcml2ZUVudHJ5PjtcbiAgICBleGlzdHMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj47XG4gICAgcmVhZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbiAgICByZWFkU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT47XG4gICAgd3JpdGUoZmlsZW5hbWU6IHN0cmluZywgZGF0YTogVWludDhBcnJheSk6IFByb21pc2U8dm9pZD47XG4gICAgd3JpdGVTdHJlYW0oZmlsZW5hbWU6IHN0cmluZywgc3RyZWFtOiBOb2RlSlMuUmVhZGFibGVTdHJlYW0pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlbGV0ZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICB1cmwoZmlsZW5hbWU6IHN0cmluZywgb3B0aW9ucz86IFVybE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4gICAgdXBsb2FkVXJsKGZpbGVuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBVcGxvYWRVcmxPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuIiwiaW1wb3J0IHsgUzNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHR5cGUgeyBJbmZlck91dHB1dCB9IGZyb20gJ3ZhbGlib3QnO1xuaW1wb3J0IEJhc2VEcml2ZSBmcm9tICcjc2VydmVyL2dhdGV3YXlzL0RyaXZlQmFzZUdhdGV3YXkudHMnO1xuZGVjbGFyZSBjb25zdCBzY2hlbWE6IGltcG9ydChcInZhbGlib3RcIikuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBidWNrZXQ6IGltcG9ydChcInZhbGlib3RcIikuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW2ltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuTWluTGVuZ3RoQWN0aW9uPHN0cmluZywgMSwgdW5kZWZpbmVkPl0+O1xuICAgIHJlYWRvbmx5IHJlZ2lvbjogaW1wb3J0KFwidmFsaWJvdFwiKS5PcHRpb25hbFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGFjY2Vzc0tleUlkOiBpbXBvcnQoXCJ2YWxpYm90XCIpLlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFtpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCBpbXBvcnQoXCJ2YWxpYm90XCIpLk1pbkxlbmd0aEFjdGlvbjxzdHJpbmcsIDEsIHVuZGVmaW5lZD5dPjtcbiAgICByZWFkb25seSBzZWNyZXRBY2Nlc3NLZXk6IGltcG9ydChcInZhbGlib3RcIikuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW2ltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuTWluTGVuZ3RoQWN0aW9uPHN0cmluZywgMSwgdW5kZWZpbmVkPl0+O1xuICAgIHJlYWRvbmx5IHNlc3Npb25Ub2tlbjogaW1wb3J0KFwidmFsaWJvdFwiKS5PcHRpb25hbFNjaGVtYTxpbXBvcnQoXCJ2YWxpYm90XCIpLlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGVuZHBvaW50OiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgcHJlZml4OiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG59LCB1bmRlZmluZWQ+O1xuZXhwb3J0IHR5cGUgUzNEcml2ZUNvbmZpZyA9IEluZmVyT3V0cHV0PHR5cGVvZiBzY2hlbWE+O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJpdmVTMyBleHRlbmRzIEJhc2VEcml2ZSB7XG4gICAgcHJpdmF0ZSBzY2hlbWE7XG4gICAgcHJpdmF0ZSBfY2xpZW50PztcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBQaWNrPEJhc2VEcml2ZSwgJ2lkJyB8ICduYW1lJyB8ICdkZXNjcmlwdGlvbicgfCAnY29uZmlnJz4pO1xuICAgIGdldCB2YWxpZCgpOiBib29sZWFuO1xuICAgIHByaXZhdGUgY2hlY2tWYWxpZDtcbiAgICBwcm90ZWN0ZWQgZ2V0IGJ1Y2tldCgpOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGdldCBwcmVmaXgoKTogc3RyaW5nO1xuICAgIHByaXZhdGUgZ2V0S2V5O1xuICAgIHByb3RlY3RlZCBnZXQgY2xpZW50KCk6IFMzQ2xpZW50O1xuICAgIGV4aXN0czogQmFzZURyaXZlWydleGlzdHMnXTtcbiAgICBsaXN0OiBCYXNlRHJpdmVbJ2xpc3QnXTtcbiAgICBmaW5kOiBCYXNlRHJpdmVbJ2ZpbmQnXTtcbiAgICBta2RpcihfZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgcmVhZDogQmFzZURyaXZlWydyZWFkJ107XG4gICAgcmVhZFN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICAgIHdyaXRlOiBCYXNlRHJpdmVbJ3dyaXRlJ107XG4gICAgd3JpdGVTdHJlYW0oZmlsZW5hbWU6IHN0cmluZywgc3RyZWFtOiBOb2RlSlMuUmVhZGFibGVTdHJlYW0pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlbGV0ZTogQmFzZURyaXZlWydkZWxldGUnXTtcbiAgICB1cmw6IEJhc2VEcml2ZVsndXJsJ107XG4gICAgdXBsb2FkVXJsOiBCYXNlRHJpdmVbJ3VwbG9hZFVybCddO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IENvbmZpZ1NlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Db25maWdTZXJ2aWNlLnRzJztcbmltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5pbXBvcnQgUzNEcml2ZSBmcm9tICcjc2VydmVyL2dhdGV3YXlzL0RyaXZlUzNHYXRld2F5LnRzJztcbmltcG9ydCB0eXBlIHsgUzNEcml2ZUNvbmZpZyB9IGZyb20gJyNzZXJ2ZXIvZ2F0ZXdheXMvRHJpdmVTM0dhdGV3YXkudHMnO1xuaW50ZXJmYWNlIEluaXRpT3B0aW9ucyBleHRlbmRzIE9taXQ8UzNEcml2ZUNvbmZpZywgJ25hbWUnIHwgJ2Rlc2NyaXB0aW9uJz4ge1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ1MzU2VydmljZSBleHRlbmRzIENvbmZpZ1NlcnZpY2Uge1xuICAgIHByZWZpeDogc3RyaW5nO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBkcml2ZTogUzNEcml2ZTtcbiAgICBidWNrZXQ6IHN0cmluZztcbiAgICByZWdpb246IHN0cmluZztcbiAgICBlbmRwb2ludD86IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJbml0aU9wdGlvbnMpO1xuICAgIHByaXZhdGUgcGFyc2VLZXk7XG4gICAgbG9hZCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNldChmdWxsS2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoZnVsbEtleTogc3RyaW5nKTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgUmVxdWVzdEluaXQgfSBmcm9tICd1bmRpY2knO1xuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZGVkRmV0Y2hPcHRpb25zIGV4dGVuZHMgUmVxdWVzdEluaXQge1xuICAgIHByb3h5Pzogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRG93bmxvYWRTZXJ2aWNlIHtcbiAgICBmZXRjaCh1cmw6IHN0cmluZywgb3B0aW9ucz86IERvd25sb2FkZWRGZXRjaE9wdGlvbnMpOiBQcm9taXNlPGltcG9ydChcInVuZGljaVwiKS5SZXNwb25zZT47XG4gICAgc3RyZWFtKHVybDogc3RyaW5nLCBvcHRpb25zPzogRG93bmxvYWRlZEZldGNoT3B0aW9ucyk6IFByb21pc2U8e1xuICAgICAgICBzdHJlYW06IE5vZGVKUy5SZWFkYWJsZVN0cmVhbTtcbiAgICAgICAgY29udGVudFR5cGU6IHN0cmluZztcbiAgICB9Pjtcbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhZFN0cmVhbSB9IGZyb20gJ2ZzJztcbmltcG9ydCB0eXBlIG1zIGZyb20gJ21zJztcbmltcG9ydCB0eXBlIERyaXZlRW50cnkgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9Ecml2ZUVudHJ5RW50aXR5LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRHJpdmVVcmxPcHRpb25zIHtcbiAgICBleHBpcmVzPzogbXMuU3RyaW5nVmFsdWU7XG59XG5leHBvcnQgaW50ZXJmYWNlIERyaXZlVXBsb2FkVXJsT3B0aW9ucyB7XG4gICAgZXhwaXJlcz86IG1zLlN0cmluZ1ZhbHVlO1xuICAgIG1pbWVfdHlwZXM/OiBzdHJpbmdbXTtcbiAgICBtYXhfc2l6ZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRHJpdmVDb250cmFjdCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlzdChmb2xkZXI/OiBzdHJpbmcpOiBQcm9taXNlPERyaXZlRW50cnlbXT47XG4gICAgZmluZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxEcml2ZUVudHJ5PjtcbiAgICBleGlzdHMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj47XG4gICAgcmVhZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbiAgICB3cml0ZShmaWxlbmFtZTogc3RyaW5nLCBkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTx2b2lkPjtcbiAgICB3cml0ZVN0cmVhbShmaWxlbmFtZTogc3RyaW5nLCBzdHJlYW06IE5vZGVKUy5SZWFkYWJsZVN0cmVhbSk6IFByb21pc2U8dm9pZD47XG4gICAgZGVsZXRlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVybChmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zPzogRHJpdmVVcmxPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIHVwbG9hZFVybChmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zPzogRHJpdmVVcGxvYWRVcmxPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIHJlYWRTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT47XG59XG4iLCJpbXBvcnQgRHJpdmVFbnRyeSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0RyaXZlRW50cnlFbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgeyBEcml2ZVVybE9wdGlvbnMgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9Ecml2ZUNvbnRyYWN0LnRzJztcbmltcG9ydCBCYXNlRHJpdmUgZnJvbSAnI3NlcnZlci9nYXRld2F5cy9Ecml2ZUJhc2VHYXRld2F5LnRzJztcbmltcG9ydCB0eXBlIExvZ2dlclNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLnRzJztcbmludGVyZmFjZSBWYWxpZGF0ZVVwbG9hZE9wdGlvbnMge1xuICAgIG1pbWVfdHlwZXM6IHN0cmluZztcbiAgICBtYXhTaXplPzogbnVtYmVyO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJpdmVTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgZ2F0ZXdheXM6IE1hcDxzdHJpbmcsIHR5cGVvZiBCYXNlRHJpdmU+O1xuICAgIGRyaXZlczogTWFwPHN0cmluZywgQmFzZURyaXZlPjtcbiAgICBzZWxlY3RlZD86IHN0cmluZztcbiAgICBkZWZhdWx0RHJpdmU/OiBzdHJpbmc7XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGdldCBjdXJyZW50KCk6IEJhc2VEcml2ZSB8IHVuZGVmaW5lZDtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxEcml2ZVNlcnZpY2U+KTtcbiAgICBsaXN0RHJpdmVzKCk6IHtcbiAgICAgICAgZGVmYXVsdDogYm9vbGVhbjtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIH1bXTtcbiAgICBnZXQobmFtZT86IHN0cmluZyk6IEJhc2VEcml2ZTtcbiAgICB1c2UobmFtZT86IHN0cmluZyk6IERyaXZlU2VydmljZTtcbiAgICBsaXN0KGZvbGRlcj86IHN0cmluZyk6IFByb21pc2U8RHJpdmVFbnRyeVtdPjtcbiAgICBmaW5kKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPERyaXZlRW50cnk+O1xuICAgIGV4aXN0cyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICByZWFkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuICAgIHJlYWRTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPjtcbiAgICByZWFkQXNUZXh0KGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG4gICAgd3JpdGUoZmlsZW5hbWU6IHN0cmluZywgcGF5bG9hZDogVWludDhBcnJheSB8IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTx2b2lkPjtcbiAgICB3cml0ZVN0cmVhbShmaWxlbmFtZTogc3RyaW5nLCBzdHJlYW06IE5vZGVKUy5SZWFkYWJsZVN0cmVhbSk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgYSBVUkwgZm9yIGEgZmlsZSBpbiB0aGUgZHJpdmUuXG4gICAgICogQHBhcmFtIHBheWxvYWQgIEZpbGUgaW5zdGFuY2UsIEZpbGUgSUQsIERyaXZlRW50cnkgaW5zdGFuY2Ugb3IgZmlsZW5hbWUgc3RyaW5nXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICB1cmwoZmlsZW5hbWU6IHN0cmluZywgb3B0aW9ucz86IERyaXZlVXJsT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICB1cGxvYWRVcmwoZmlsZW5hbWU6IHN0cmluZywgb3B0aW9ucz86IERyaXZlVXJsT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBVcGxvYWQgYSBmaWxlIGZyb20gdGhlIGxvY2FsIGZpbGVzeXN0ZW0gdG8gdGhlIGRyaXZlLlxuICAgICAqIEBwYXJhbSBzb3VyY2UgZmlsZW5hbWUgaW4gbG9jYWwgZmlsZXN5c3RlbVxuICAgICAqIEBwYXJhbSBkZXN0aW5hdGlvblxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgdXBsb2FkKHNvdXJjZTogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBEb3dubG9hZCBhIGZpbGUgZnJvbSB0aGUgZHJpdmUgdG8gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIGZpbGVuYW1lIGluIHRoZSBkcml2ZVxuICAgICAqIEBwYXJhbSBkZXN0aW5hdGlvblxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZG93bmxvYWQoZmlsZW5hbWU6IHN0cmluZywgZGVzdGluYXRpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgZGVsZXRlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBjcmVhdGVEZWZhdWx0RHJpdmVzKCk6IFByb21pc2U8dm9pZD47XG4gICAgdmFsaWRhdGVVcGxvYWQob3B0aW9uczogVmFsaWRhdGVVcGxvYWRPcHRpb25zLCBmaWxlOiB7XG4gICAgICAgIG1pbWV0eXBlOiBzdHJpbmc7XG4gICAgICAgIHNpemU6IG51bWJlcjtcbiAgICB9KTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgS3lzZWx5IH0gZnJvbSBcImt5c2VseVwiO1xuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb25FbnRpeURhdGEge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBleGVjdXRlZEF0OiBEYXRlIHwgbnVsbDtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pZ3JhdGlvbkVudGl0eSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNvdXJjZTogc3RyaW5nIHwgbnVsbDtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIGV4ZWN1dGVkQXQ6IERhdGUgfCBudWxsO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IE1pZ3JhdGlvbkVudGl5RGF0YSk7XG4gICAgdXAoZGI6IEt5c2VseTxhbnk+KTogUHJvbWlzZTx2b2lkPjtcbiAgICBkb3duKGRiOiBLeXNlbHk8YW55Pik6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlLCBDb29raWVPcHRpb25zIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgQmFzZSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0Nvb2tpZU1hcEVudGl0eS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb29raWVNYXBFbnRpdHkgZXh0ZW5kcyBCYXNlIHtcbiAgICByZXF1ZXN0OiBSZXF1ZXN0O1xuICAgIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICBjb25zdHJ1Y3RvcihyZXF1ZXN0OiBSZXF1ZXN0LCByZXNwb25zZTogUmVzcG9uc2UpO1xuICAgIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBDb29raWVPcHRpb25zKTogdm9pZDtcbn1cbiIsImltcG9ydCBDb29raWVNYXBFbnRpdHkgZnJvbSBcIiNzZXJ2ZXIvZW50aXRpZXMvQ29va2llTWFwRW50aXR5LnRzXCI7XG5pbXBvcnQgQ29udGFpbmVyU2VydmljZSBmcm9tIFwiI3NoYXJlZC9zZXJ2aWNlcy9Db250YWluZXJTZXJ2aWNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7IFJlc29sdmFibGVIZWFkIH0gZnJvbSAnQHVuaGVhZC92dWUnO1xuaW1wb3J0IENvbmZpZ1NlcnZpY2UgZnJvbSBcIiNzaGFyZWQvc2VydmljZXMvQ29uZmlnU2VydmljZS50c1wiO1xuZXhwb3J0IGludGVyZmFjZSBQYWdlUmVxdWVzdENvbnRleHRFbnRpdHlPcHRpb25zIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICByZXF1ZXN0OiBSZXF1ZXN0O1xuICAgIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICBzdGF0ZT86IE1hcDxzdHJpbmcsIGFueT47XG4gICAgbm9kZUNvbnRhaW5lcj86IENvbnRhaW5lclNlcnZpY2U7XG4gICAgbm9kZUNvbmZpZz86IENvbmZpZ1NlcnZpY2U7XG4gICAgbm9kZVN0YXRlPzogTWFwPHN0cmluZywgYW55PjtcbiAgICBicm93c2VyQ29udGFpbmVyPzogQ29udGFpbmVyU2VydmljZTtcbiAgICBicm93c2VyQ29uZmlnPzogQ29uZmlnU2VydmljZTtcbiAgICBicm93c2VyU3RhdGU/OiBNYXA8c3RyaW5nLCBhbnk+O1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFnZVJlcXVlc3RDb250ZXh0RW50aXR5IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICByZXF1ZXN0OiBSZXF1ZXN0O1xuICAgIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICBjb29raWVzOiBDb29raWVNYXBFbnRpdHk7XG4gICAgaGVhZDogUmVzb2x2YWJsZUhlYWRbXTtcbiAgICBub2RlQ29udGFpbmVyOiBDb250YWluZXJTZXJ2aWNlO1xuICAgIG5vZGVDb25maWc6IENvbmZpZ1NlcnZpY2U7XG4gICAgbm9kZVN0YXRlOiBNYXA8c3RyaW5nLCBhbnk+O1xuICAgIGJyb3dzZXJDb250YWluZXI6IENvbnRhaW5lclNlcnZpY2U7XG4gICAgYnJvd3NlckNvbmZpZzogQ29uZmlnU2VydmljZTtcbiAgICBicm93c2VyU3RhdGU6IE1hcDxzdHJpbmcsIGFueT47XG4gICAgY29uc3RydWN0b3IoZGF0YTogUGFnZVJlcXVlc3RDb250ZXh0RW50aXR5T3B0aW9ucyk7XG4gICAgc2V0QnJvd3NlclN0YXRlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICBzZXROb2RlU3RhdGUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldFN0YXRlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICBzZXRCcm93c2VyQ29udGFpbmVyVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldE5vZGVDb250YWluZXJWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gICAgc2V0Q29udGFpbmVyVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldEJyb3dzZXJDb25maWdWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gICAgc2V0Tm9kZUNvbmZpZ1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICBzZXRDb25maWdWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG59XG4iLCJpbXBvcnQgQmFzZUFjbCBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0FjbEVudGl0eS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBY2wgZXh0ZW5kcyBCYXNlQWNsIHtcbiAgICBhdXRob3JpemUoYWN0aW9uOiBzdHJpbmcsIHN1YmplY3Q6IGFueSwgb2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG59XG4iLCJpbXBvcnQgdHlwZSBBY2wgZnJvbSAnI3NlcnZlci9lbnRpdGllcy9BY2xFbnRpdHkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDb250ZXh0IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbiAgICBib2R5OiBhbnk7XG4gICAgY29va2llOiBhbnk7XG4gICAgdXBsb2FkOiBhbnk7XG4gICAgYWNsOiBBY2w7XG4gICAgcmVxdWVzdDogUmVxdWVzdDtcbiAgICByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBIdHRwQ29udGV4dCB9IGZyb20gXCIuL0h0dHBDb250ZXh0Q29udHJhY3RcIjtcbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3Qge1xuICAgIHJlZGlyZWN0OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBIYW5kbGVSZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgUmVkaXJlY3QgfCB2b2lkO1xuZXhwb3J0IGludGVyZmFjZSBNaWRkbGV3YXJlIHtcbiAgICBoYW5kbGUoY3R4OiBhbnkpOiBIYW5kbGVSZXN1bHQgfCBQcm9taXNlPEhhbmRsZVJlc3VsdD47XG59XG50eXBlIEV4dHJhY3RNaWRkbGV3YXJlQ29udGV4dDxNIGV4dGVuZHMgTWlkZGxld2FyZT4gPSBBd2FpdGVkPFJldHVyblR5cGU8TVsnaGFuZGxlJ10+PiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPyBBd2FpdGVkPFJldHVyblR5cGU8TVsnaGFuZGxlJ10+PiA6IHt9O1xudHlwZSBQcm9jZXNzTWlkZGxld2FyZUFycmF5PFQgZXh0ZW5kcyByZWFkb25seSBNaWRkbGV3YXJlW10+ID0gVCBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCBleHRlbmRzIE1pZGRsZXdhcmUsIC4uLmluZmVyIFJlc3QgZXh0ZW5kcyByZWFkb25seSBNaWRkbGV3YXJlW11dID8gRXh0cmFjdE1pZGRsZXdhcmVDb250ZXh0PEZpcnN0PiAmIFByb2Nlc3NNaWRkbGV3YXJlQXJyYXk8UmVzdD4gOiB7fTtcbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmVIYW5kbGVSZXN1bHQ8VCBleHRlbmRzIHJlYWRvbmx5IE1pZGRsZXdhcmVbXSA9IHJlYWRvbmx5IE1pZGRsZXdhcmVbXT4gPSBQcm9jZXNzTWlkZGxld2FyZUFycmF5PFQ+O1xuZXhwb3J0IGludGVyZmFjZSBIYW5kbGVyPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgKGN0eDogSHR0cENvbnRleHQgJiBUKTogUHJvbWlzZTxhbnk+IHwgYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBIYW5kbGVyLCBNaWRkbGV3YXJlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QudHMnO1xudHlwZSBSb3V0ZU1ldGhvZCA9ICdnZXQnIHwgJ0dFVCcgfCAncG9zdCcgfCAnUE9TVCcgfCAncHV0JyB8ICdQVVQnIHwgJ3BhdGNoJyB8ICdQQVRDSCcgfCAnZGVsZXRlJyB8ICdERUxFVEUnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGUge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBtZXRob2Q6IFJvdXRlTWV0aG9kO1xuICAgIGhhbmRsZXI6IEhhbmRsZXI8YW55PiB8IG51bGw7XG4gICAgbWlkZGxld2FyZXM6IE1pZGRsZXdhcmVbXTtcbiAgICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8Um91dGU+KTtcbiAgICBzdGF0aWMgcGFyYW1zKHJvdXRlUGF0aDogc3RyaW5nLCByZXF1ZXN0UGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBzdGF0aWMgcXVlcnkocmVxdWVzdFBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgdG9KU09OKCk6IHtcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBtZXRob2Q6IFJvdXRlTWV0aG9kO1xuICAgICAgICBtaWRkbGV3YXJlczogc3RyaW5nW107XG4gICAgICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgICB9O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IFJvdXRlIGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvUm91dGVFbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlSGFuZGxlUmVzdWx0IH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QudHMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xudHlwZSBSb3V0ZUNvbnRleHQgPSAnZ2xvYmFsJyB8ICdncm91cCcgfCAncm91dGUnO1xuaW50ZXJmYWNlIE1pZGRsZXdhcmVSZWdpc3RlciB7XG4gICAgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgICBjb250ZXh0OiBSb3V0ZUNvbnRleHQ7XG59XG5pbnRlcmZhY2UgTG9hZE9wdGlvbnMge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyRXZlbnRzIHtcbiAgICAncm91dGVyOnJlZ2lzdGVyZWQnOiB7XG4gICAgICAgIHJvdXRlcjogUm91dGVyU2VydmljZTtcbiAgICB9O1xuICAgICdyb3V0ZXI6bG9hZGVkJzoge1xuICAgICAgICByb3V0ZXI6IFJvdXRlclNlcnZpY2U7XG4gICAgfTtcbn1cbmRlY2xhcmUgY29uc3QgUm91dGVyU2VydmljZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbGlzdGVuZXJzOiBpbXBvcnQoXCIjc2hhcmVkL2luZGV4LnRzXCIpLkxpc3RlbmVyW107XG4gICAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xuICAgICAgICBlbWl0QXN5bmMoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG59ICYgaW1wb3J0KFwiI3NoYXJlZC9pbmRleC50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdXRlclNlcnZpY2U8QyA9IHt9PiBleHRlbmRzIFJvdXRlclNlcnZpY2VfYmFzZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHJvdXRlczogUm91dGVbXTtcbiAgICBtaWRkbGV3YXJlczogTWlkZGxld2FyZVJlZ2lzdGVyW107XG4gICAgcHJlZml4ZXM6IHN0cmluZ1tdO1xuICAgIGdyb3VwczogUm91dGVyU2VydmljZTxhbnk+W107XG4gICAgZ3JvdXBQcmVmaXhlczogc3RyaW5nW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPFJvdXRlclNlcnZpY2U8Qz4+KTtcbiAgICB1c2U8VCBleHRlbmRzIE1pZGRsZXdhcmU+KG1pZGRsZXdhcmU6IFQsIGNvbnRleHQ/OiBSb3V0ZUNvbnRleHQpOiBSb3V0ZXJTZXJ2aWNlPEMgJiBNaWRkbGV3YXJlSGFuZGxlUmVzdWx0PFt0eXBlb2YgbWlkZGxld2FyZV0+PjtcbiAgICBwcmVmaXgocHJlZml4OiBzdHJpbmcpOiB0aGlzO1xuICAgIG1ha2VQYXRoKGFyZ3M6IHN0cmluZyk6IHN0cmluZztcbiAgICBhZGQocGF5bG9hZDogUGljazxSb3V0ZSwgJ3BhdGgnIHwgJ21ldGhvZCcgfCAnaGFuZGxlcic+KTogdm9pZDtcbiAgICBnZXQocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBIYW5kbGVyPEM+KTogdm9pZDtcbiAgICBwb3N0KHBhdGg6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcjxDPik6IHZvaWQ7XG4gICAgcHV0KHBhdGg6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcjxDPik6IHZvaWQ7XG4gICAgcGF0Y2gocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBIYW5kbGVyPEM+KTogdm9pZDtcbiAgICBtYW55KG1ldGhvZHM6IFJvdXRlWydtZXRob2QnXVtdLCBwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IEhhbmRsZXI8Qz4pOiB2b2lkO1xuICAgIGRlbGV0ZShwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IEhhbmRsZXI8Qz4pOiB2b2lkO1xuICAgIGdyb3VwKCk6IFJvdXRlclNlcnZpY2U8Qz47XG4gICAgcmVzb2x2ZShtZXRob2Q6IHN0cmluZywgcGF0aDogc3RyaW5nKTogUm91dGUgfCBudWxsO1xuICAgIGV4ZWN1dGUocm91dGU6IFJvdXRlLCBpbml0aWFsQ3R4OiBhbnkpOiBQcm9taXNlPGFueT47XG4gICAgbWF0Y2hQYXRoKHJvdXRlUGF0aDogc3RyaW5nLCByZXF1ZXN0UGF0aDogc3RyaW5nKTogYm9vbGVhbjtcbiAgICBjbGVhcigpOiB2b2lkO1xuICAgIGxpc3QoKTogUm91dGVbXTtcbiAgICBsb2FkKG9wdGlvbnM/OiBMb2FkT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZFN5bmMob3B0aW9ucz86IExvYWRPcHRpb25zKTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IEpvYiB9IGZyb20gJ25vZGUtc2NoZWR1bGUnO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5lSGFuZGxlciB7XG4gICAgKCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5lRW50aXR5T3B0aW9ucyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjcm9uOiBzdHJpbmc7XG4gICAgaGFuZGxlcj86IFJvdXRpbmVIYW5kbGVyO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGluZUVudGl0eSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjcm9uOiBzdHJpbmc7XG4gICAgam9iPzogSm9iO1xuICAgIHN0YXRpYyBjcmVhdGUoKTogUm91dGluZUVudGl0eTtcbiAgICBoYW5kbGU6IFJvdXRpbmVIYW5kbGVyO1xuICAgIHNldElkKGlkOiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldENyb24oY3Jvbjogc3RyaW5nKTogdGhpcztcbiAgICBzZXRIYW5kbGVyKGhhbmRsZXI6IFJvdXRpbmVIYW5kbGVyKTogdGhpcztcbn1cbiIsImltcG9ydCBSb3V0aW5lRW50aXR5IGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvUm91dGluZUVudGl0eS50cyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnI3NoYXJlZC9pbmRleC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIEFkZE9wdGlvbnMge1xuICAgIGlkPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJTZXJ2aWNlT3B0aW9ucyB7XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlckV2ZW50cyB7XG4gICAgJ3NjaGVkdWxlcjpyZWdpc3RlcmVkJzoge1xuICAgICAgICBzY2hlZHVsZXI6IFNjaGVkdWxlclNlcnZpY2U7XG4gICAgfTtcbiAgICAnc2NoZWR1bGVyOmxvYWRlZCc6IHtcbiAgICAgICAgc2NoZWR1bGVyOiBTY2hlZHVsZXJTZXJ2aWNlO1xuICAgIH07XG4gICAgJ3NjaGVkdWxlcjpib290ZWQnOiB7XG4gICAgICAgIHNjaGVkdWxlcjogU2NoZWR1bGVyU2VydmljZTtcbiAgICB9O1xuICAgICdzY2hlZHVsZXI6c2h1dGRvd25lZCc6IHtcbiAgICAgICAgc2NoZWR1bGVyOiBTY2hlZHVsZXJTZXJ2aWNlO1xuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2hlZHVsZXJTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgcm91dGluZXM6IFJvdXRpbmVFbnRpdHlbXTtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgZGlyczogc3RyaW5nW107XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IFNjaGVkdWxlclNlcnZpY2VPcHRpb25zKTtcbiAgICBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBTY2hlZHVsZXJTZXJ2aWNlT3B0aW9ucyk6IFNjaGVkdWxlclNlcnZpY2U7XG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyU2VydmljZSk6IHZvaWQ7XG4gICAgc2V0RGVidWcoZGVidWc6IGJvb2xlYW4pOiB2b2lkO1xuICAgIGFkZERpcihkaXI6IHN0cmluZyk6IHZvaWQ7XG4gICAgYWRkKHJvdXRpbmU6IE9taXQ8Um91dGluZUVudGl0eSwgJ2pvYic+KTogdm9pZDtcbiAgICByZW1vdmUoaWQ6IFJvdXRpbmVFbnRpdHlbJ2lkJ10gfCBSb3V0aW5lRW50aXR5WydpZCddW10pOiB2b2lkO1xuICAgIGxvYWRGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWREaXJlY3RvcnkoZGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBoYXMoaWQ6IFJvdXRpbmVFbnRpdHlbJ2lkJ10pOiBib29sZWFuO1xuICAgIHN0YXJ0Um91dGluZShpZDogUm91dGluZUVudGl0eVsnaWQnXSk6IFByb21pc2U8dm9pZD47XG4gICAgYWRkQW5kU3RhcnQocm91dGluZTogT21pdDxSb3V0aW5lRW50aXR5LCAnam9iJz4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIHN0b3BSb3V0aW5lKGlkOiBSb3V0aW5lRW50aXR5WydpZCddKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzdG9wQW5kUmVtb3ZlKGlkOiBSb3V0aW5lRW50aXR5WydpZCddKTogUHJvbWlzZTx2b2lkPjtcbiAgICBib290KCk6IFByb21pc2U8dm9pZD47XG4gICAgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsaXN0KCk6IFJvdXRpbmVFbnRpdHlbXTtcbn1cbiIsImltcG9ydCB0eXBlIHsgS3lzZWx5IH0gZnJvbSBcImt5c2VseVwiO1xuZXhwb3J0IGludGVyZmFjZSBTZWVkZXJFbnRpeURhdGEge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlZWRlckVudGl0eSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNvdXJjZTogc3RyaW5nIHwgbnVsbDtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFNlZWRlckVudGl5RGF0YSk7XG4gICAgcnVuKGRiOiBLeXNlbHk8YW55Pik6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgRW1taXR0ZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvRW1taXR0ZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSB7IEt5c2VseSB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgU2VlZGVyRW50aXR5IGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvU2VlZGVyRW50aXR5LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgU2VlZGVyU291cmNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaXN0RmlsdGVycyB7XG4gICAgc291cmNlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgbmFtZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWVkZXJSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIHNvdXJjZTogc3RyaW5nIHwgbnVsbDtcbiAgICByZXN1bHQ6ICdzdWNjZXNzJyB8ICdmYWlsZWQnO1xuICAgIGVycm9yPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWVkZXJFdmVudHMge1xuICAgICdzZWVkZXI6YmVmb3JlLXJ1bic6IHtcbiAgICAgICAgc2VlZGVyczogc3RyaW5nW107XG4gICAgfTtcbiAgICAnc2VlZGVyOmFmdGVyLXJ1bic6IHtcbiAgICAgICAgc2VlZGVyczogc3RyaW5nW107XG4gICAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VlZGVyU2VydmljZU9wdGlvbnMge1xuICAgIGRiOiBLeXNlbHk8YW55PjtcbiAgICBzb3VyY2VzPzogU2VlZGVyU291cmNlW107XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGVtbWl0dGVyPzogRW1taXR0ZXJTZXJ2aWNlO1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWVlZGVyU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRiOiBLeXNlbHk8YW55PjtcbiAgICBzb3VyY2VzOiBTZWVkZXJTb3VyY2VbXTtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTZWVkZXJTZXJ2aWNlT3B0aW9ucyk7XG4gICAgYWRkU291cmNlKHNvdXJjZTogU2VlZGVyU291cmNlKTogdm9pZDtcbiAgICBsaXN0U291cmNlKHNvdXJjZTogU2VlZGVyU291cmNlKTogUHJvbWlzZTxTZWVkZXJFbnRpdHlbXT47XG4gICAgbGlzdChmaWx0ZXJzPzogTGlzdEZpbHRlcnMpOiBQcm9taXNlPFNlZWRlckVudGl0eVtdPjtcbiAgICBydW5TZWVkZXIoc2VlZGVyOiBTZWVkZXJFbnRpdHkpOiBQcm9taXNlPFNlZWRlclJlc3VsdD47XG4gICAgcnVuKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8U2VlZGVyUmVzdWx0W10+O1xufVxuIiwiaW1wb3J0IHR5cGUgTWlncmF0aW9uRW50aXR5IGZyb20gXCIjc2VydmVyL2VudGl0aWVzL01pZ3JhdGlvbkVudGl0eS50c1wiO1xuaW1wb3J0IHR5cGUgUGFnZVJlcXVlc3RDb250ZXh0RW50aXR5IGZyb20gXCIjc2VydmVyL2VudGl0aWVzL1BhZ2VSZXF1ZXN0Q29udGV4dEVudGl0eS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDbGlFdmVudHMgfSBmcm9tIFwiI3NlcnZlci9zZXJ2aWNlcy9DbGlTZXJ2aWNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFJvdXRlckV2ZW50cyB9IGZyb20gXCIjc2VydmVyL3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHNcIjtcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyRXZlbnRzIH0gZnJvbSBcIiNzZXJ2ZXIvc2VydmljZXMvU2NoZWR1bGVyU2VydmljZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBTZWVkZXJFdmVudHMgfSBmcm9tIFwiI3NlcnZlci9zZXJ2aWNlcy9TZWVkZXJTZXJ2aWNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJFbnRpdHkgfSBmcm9tIFwiI3NoYXJlZC9pbmRleC50c1wiO1xuZXhwb3J0IGludGVyZmFjZSBFdmVudENvbnRyYWN0IGV4dGVuZHMgU2VlZGVyRXZlbnRzLCBSb3V0ZXJFdmVudHMsIENsaUV2ZW50cywgU2NoZWR1bGVyRXZlbnRzIHtcbiAgICAnbWlncmF0b3I6YmVmb3JlLW1pZ3JhdGUnOiB7XG4gICAgICAgIG1pZ3JhdGlvbnM6IE1pZ3JhdGlvbkVudGl0eVtdO1xuICAgIH07XG4gICAgJ21pZ3JhdG9yOmFmdGVyLW1pZ3JhdGUnOiB7XG4gICAgICAgIG1pZ3JhdGlvbnM6IE1pZ3JhdGlvbkVudGl0eVtdO1xuICAgIH07XG4gICAgJ21pZ3JhdG9yOmJlZm9yZS1yb2xsYmFjayc6IHtcbiAgICAgICAgbWlncmF0aW9uczogTWlncmF0aW9uRW50aXR5W107XG4gICAgfTtcbiAgICAnbWlncmF0b3I6YWZ0ZXItcm9sbGJhY2snOiB7XG4gICAgICAgIG1pZ3JhdGlvbnM6IE1pZ3JhdGlvbkVudGl0eVtdO1xuICAgIH07XG4gICAgJ3VzZXI6YmVmb3JlLWNyZWF0ZSc6IHtcbiAgICAgICAgdXNlcjogVXNlckVudGl0eTtcbiAgICB9O1xuICAgICd1c2VyOmFmdGVyLWNyZWF0ZSc6IHtcbiAgICAgICAgdXNlcjogVXNlckVudGl0eTtcbiAgICB9O1xuICAgICd1c2VyOmJlZm9yZS11cGRhdGUnOiB7XG4gICAgICAgIHVzZXI6IFVzZXJFbnRpdHk7XG4gICAgfTtcbiAgICAndXNlcjphZnRlci11cGRhdGUnOiB7XG4gICAgICAgIHVzZXI6IFVzZXJFbnRpdHk7XG4gICAgfTtcbiAgICAndXNlcjpiZWZvcmUtZGVsZXRlJzoge1xuICAgICAgICB1c2VyOiBVc2VyRW50aXR5O1xuICAgIH07XG4gICAgJ3VzZXI6YWZ0ZXItZGVsZXRlJzoge1xuICAgICAgICB1c2VyOiBVc2VyRW50aXR5O1xuICAgIH07XG4gICAgJ3BhZ2U6cmVxdWVzdDpzdGFydCc6IFBhZ2VSZXF1ZXN0Q29udGV4dEVudGl0eTtcbiAgICAncGFnZTpyZXF1ZXN0OmJlZm9yZS1yZW5kZXInOiBQYWdlUmVxdWVzdENvbnRleHRFbnRpdHk7XG4gICAgJ3BhZ2U6cmVxdWVzdDphZnRlci1yZW5kZXInOiBQYWdlUmVxdWVzdENvbnRleHRFbnRpdHk7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2VFbW1pdHRlclNlcnZpY2UgZnJvbSBcIi4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9FbW1pdHRlclNlcnZpY2VcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRDb250cmFjdCB9IGZyb20gJy4uL2NvbnRyYWN0cy9FdmVudENvbnRyYWN0JztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtbWl0dGVyU2VydmljZSBleHRlbmRzIEJhc2VFbW1pdHRlclNlcnZpY2U8RXZlbnRDb250cmFjdD4ge1xufVxuIiwiaW1wb3J0IG1zIGZyb20gJ21zJztcbmltcG9ydCBFbnZTZXJ2aWNlIGZyb20gJy4vRW52U2VydmljZSc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW50ZXJmYWNlIFVSTE9wdGlvbnMge1xuICAgIGRhdGE/OiBhbnk7XG4gICAgZXhwaXJlcz86IG1zLlN0cmluZ1ZhbHVlO1xuICAgIGV4cGlyZUF0PzogbnVtYmVyIHwgRGF0ZTtcbn1cbmludGVyZmFjZSBFbmNyeXB0U2VydmljZU9wdGlvbnMge1xuICAgIGtleT86IHN0cmluZztcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBlbnY/OiBFbnZTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jcnlwdFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBlbnY6IEVudlNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxnb3JpdGhtO1xuICAgIHByaXZhdGUga2V5O1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEVuY3J5cHRTZXJ2aWNlT3B0aW9ucyk7XG4gICAgc3RhdGljIGNyZWF0ZShvcHRpb25zOiBFbmNyeXB0U2VydmljZU9wdGlvbnMpOiBFbmNyeXB0U2VydmljZTtcbiAgICBzZXREZWJ1ZyhkZWJ1ZzogYm9vbGVhbik6IHZvaWQ7XG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyU2VydmljZSk6IHZvaWQ7XG4gICAgc2V0RW52KGVudjogRW52U2VydmljZSk6IHZvaWQ7XG4gICAgc2V0S2V5KGtleTogc3RyaW5nKTogdm9pZDtcbiAgICBlbmNyeXB0KHRleHQ6IHN0cmluZyk6IHN0cmluZztcbiAgICBkZWNyeXB0KG9wdGlvbnM6IHN0cmluZyk6IHN0cmluZztcbiAgICBlbmNyeXB0T2JqZWN0KG9iajogYW55KTogc3RyaW5nO1xuICAgIGRlY3J5cHRPYmplY3Q8VD4oZW5jcnlwdGVkU3RyaW5nOiBzdHJpbmcpOiBUO1xuICAgIHVybChwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBVUkxPcHRpb25zKTogc3RyaW5nO1xuICAgIHZlcmlmeVVybChlbmNyeXB0ZWRLZXk6IHN0cmluZyk6IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlTGlmZWN5Y2xlU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xpZmVjeWNsZVNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZWN5Y2xlU2VydmljZSBleHRlbmRzIEJhc2VMaWZlY3ljbGVTZXJ2aWNlIHtcbiAgICBhZGREaXJlY3RvcnkoZGlybmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB0eXBlIHsgQ29sdW1uVHlwZSwgR2VuZXJhdGVkIH0gZnJvbSAna3lzZWx5JztcbmV4cG9ydCBpbnRlcmZhY2UgU29mdERlbGV0ZVRhYmxlIHtcbiAgICBkZWxldGVkX2F0PzogQ29sdW1uVHlwZTxEYXRlLCBzdHJpbmcgfCB1bmRlZmluZWQsIG5ldmVyPiB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRpbWVzdGFtcFRhYmxlIHtcbiAgICBjcmVhdGVkX2F0OiBDb2x1bW5UeXBlPERhdGUsIHN0cmluZyB8IHVuZGVmaW5lZCwgbmV2ZXI+O1xuICAgIHVwZGF0ZWRfYXQ6IENvbHVtblR5cGU8RGF0ZSwgc3RyaW5nIHwgdW5kZWZpbmVkLCBuZXZlcj47XG59XG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvbnNUYWJsZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG1vZHVsZTogc3RyaW5nIHwgbnVsbDtcbiAgICBleGVjdXRlZF9hdDogQ29sdW1uVHlwZTxEYXRlLCBzdHJpbmcgfCB1bmRlZmluZWQsIG5ldmVyPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUsIFNvZnREZWxldGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICB2ZXJpZmllZF9hdD86IERhdGUgfCBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyTWV0YVRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUsIFNvZnREZWxldGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRva2VuVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBleHBpcmVzX2F0OiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb2xlVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFVzZXJSb2xlVGFibGUge1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICByb2xlX2lkOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25UYWJsZSBleHRlbmRzIFRpbWVzdGFtcFRhYmxlLCBTb2Z0RGVsZXRlVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgb3JpZ2luOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIGNvbmRpdGlvbnM6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25Bc3NpZ25tZW50VGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICBwZXJtaXNzaW9uX2lkOiBudW1iZXI7XG4gICAgYXNzaWduYWJsZV90eXBlOiBzdHJpbmc7XG4gICAgYXNzaWduYWJsZV9pZDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSwgU29mdERlbGV0ZVRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgZHJpdmU6IHN0cmluZztcbiAgICBtaW1ldHlwZTogc3RyaW5nO1xuICAgIGNsaWVudF9uYW1lOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgcHVibGljOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlTWV0YVRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUsIFNvZnREZWxldGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIGZpbGVfaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFNlc3Npb25UYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICBtaW1lX3R5cGVzOiBzdHJpbmc7XG4gICAgbWF4X3NpemU6IG51bWJlcjtcbiAgICBleHBpcmVzX2F0OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEpvYlRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcXVldWVfaWQ6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdpbl9wcm9ncmVzcycgfCAnY29tcGxldGVkJyB8ICdmYWlsZWQnO1xuICAgIGRhdGE6IHN0cmluZyB8IG51bGw7XG4gICAgcmVzdWx0OiBzdHJpbmcgfCBudWxsO1xuICAgIGVycm9yOiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGludGVyZmFjZSBFbWFpbFRlbXBsYXRlVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSwgU29mdERlbGV0ZVRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN1YmplY3Q6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbiAgICBib2R5OiBzdHJpbmcgfCBudWxsO1xuICAgIGVuZ2luZTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxUZW1wbGF0ZU1ldGFUYWJsZSBleHRlbmRzIFRpbWVzdGFtcFRhYmxlLCBTb2Z0RGVsZXRlVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICB0ZW1wbGF0ZV9pZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBPYXV0aEFjY291bnRUYWJsZSBleHRlbmRzIFRpbWVzdGFtcFRhYmxlLCBTb2Z0RGVsZXRlVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICB1c2VyX2lkOiBudW1iZXI7XG4gICAgcHJvdmlkZXI6IHN0cmluZztcbiAgICBwcm92aWRlcl91c2VyX2lkOiBzdHJpbmc7XG4gICAgcHJvdmlkZXJfdXNlcl9lbWFpbDogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2F1dGhUb2tlblRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgdXNlcl9pZDogbnVtYmVyIHwgbnVsbDtcbiAgICBwcm92aWRlcjogc3RyaW5nIHwgbnVsbDtcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIGV4cGlyZXNfYXQ6IHN0cmluZztcbiAgICBtZXRhZGF0YTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNvbnRyYWN0IHtcbiAgICB1c2VyczogVXNlclRhYmxlO1xuICAgIHVzZXJfbWV0YXM6IFVzZXJNZXRhVGFibGU7XG4gICAgdG9rZW5zOiBUb2tlblRhYmxlO1xuICAgIG1pZ3JhdGlvbnM6IE1pZ3JhdGlvbnNUYWJsZTtcbiAgICBmaWxlczogRmlsZVRhYmxlO1xuICAgIGZpbGVfbWV0YXM6IEZpbGVNZXRhVGFibGU7XG4gICAgZmlsZV91cGxvYWRfc2Vzc2lvbnM6IFVwbG9hZFNlc3Npb25UYWJsZTtcbiAgICByb2xlczogUm9sZVRhYmxlO1xuICAgIHVzZXJfcm9sZXM6IFVzZXJSb2xlVGFibGU7XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25UYWJsZTtcbiAgICBwZXJtaXNzaW9uc19hc3NpZ25tZW50czogUGVybWlzc2lvbkFzc2lnbm1lbnRUYWJsZTtcbiAgICBqb2JzOiBKb2JUYWJsZTtcbiAgICBlbWFpbF90ZW1wbGF0ZXM6IEVtYWlsVGVtcGxhdGVUYWJsZTtcbiAgICBlbWFpbF90ZW1wbGF0ZV9tZXRhczogRW1haWxUZW1wbGF0ZU1ldGFUYWJsZTtcbiAgICBvYXV0aF9hY2NvdW50czogT2F1dGhBY2NvdW50VGFibGU7XG4gICAgb2F1dGhfdG9rZW5zOiBPYXV0aFRva2VuVGFibGU7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IEV4cHJlc3Npb25CdWlsZGVyIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGFmaWx0ZXIge1xuICAgIGVxPzogc3RyaW5nO1xuICAgIG5lcT86IHN0cmluZztcbiAgICBsaWtlPzogc3RyaW5nO1xuICAgIG5saWtlPzogc3RyaW5nO1xuICAgIGluPzogc3RyaW5nW107XG4gICAgbmluPzogc3RyaW5nW107XG4gICAgZ3Q/OiBzdHJpbmc7XG4gICAgZ3RlPzogc3RyaW5nO1xuICAgIGx0Pzogc3RyaW5nO1xuICAgIGx0ZT86IHN0cmluZztcbiAgICBpc19udWxsPzogYm9vbGVhbjtcbiAgICBleGlzdHM/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YVF1ZXJ5UGF5bG9hZCB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgTWV0YWRhZmlsdGVyO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YWRhdGFRdWVyeVNlcnZpY2U8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiB7XG4gICAgcHJpdmF0ZSBwYXlsb2FkO1xuICAgIHByaXZhdGUgdGFibGU7XG4gICAgcHJpdmF0ZSBmb3JlaWduS2V5O1xuICAgIHByaXZhdGUgcGFyZW50S2V5O1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWQ6IE1ldGFkYXRhUXVlcnlQYXlsb2FkLCB0YWJsZTogVCwgZm9yZWlnbktleToga2V5b2YgRGF0YWJhc2VbVF0sIHBhcmVudEtleT86IHN0cmluZyk7XG4gICAgZ2V0IG5lZWRXaGVyZUluKCk6IGJvb2xlYW47XG4gICAgZ2V0IG5lZWRXaGVyZU5vdEluKCk6IGJvb2xlYW47XG4gICAgYXBwbHkoZGJRdWVyeTogYW55KTogYW55O1xuICAgIHByaXZhdGUgYnVpbGRSb3dDb25kaXRpb25zO1xuICAgIHdoZXJlSW46IDxEQlF1ZXJ5PihlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiBEQlF1ZXJ5O1xuICAgIHdoZXJlTm90SW46IDxEQlF1ZXJ5PihlYjogRXhwcmVzc2lvbkJ1aWxkZXI8YW55LCBhbnk+KSA9PiBEQlF1ZXJ5O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YWRhdGFTZXJ2aWNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHRhYmxlOiBzdHJpbmc7XG4gICAgZm9yZWlnbktleTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWQ6IFBpY2s8TWV0YWRhdGFTZXJ2aWNlLCAndGFibGUnIHwgJ2ZvcmVpZ25LZXknIHwgJ2lkJz4pO1xuICAgIHN0YXRpYyBwYXJzZSh2YWx1ZTogYW55KTogYW55O1xuICAgIHN0YXRpYyBmbGF0dGVuKGl0ZW1zOiBBcnJheTx7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgdmFsdWU6IGFueTtcbiAgICB9Pik6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZ2V0PFQgPSBhbnk+KG5hbWU6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD47XG4gICAgZ2V0PFQgPSBhbnk+KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogUHJvbWlzZTxUPjtcbiAgICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgICBsaXN0KCk6IFByb21pc2U8QXJyYXk8e1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBhbnk7XG4gICAgfT4+O1xuICAgIGFsbCgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xufVxuIiwiaW1wb3J0IEVtbWl0dGVyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS50cyc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgeyBLeXNlbHkgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IE1pZ3JhdGlvbkVudGl0eSBmcm9tICcjc2VydmVyL2VudGl0aWVzL01pZ3JhdGlvbkVudGl0eS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvblNvdXJjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0aW9uIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc291cmNlOiBzdHJpbmcgfCBudWxsO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgZXhlY3V0ZWRBdDogRGF0ZSB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIExpc3RGaWx0ZXJzIHtcbiAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuaW50ZXJmYWNlIE1pZ3JhdGlvblJlc3VsdCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgc291cmNlOiBzdHJpbmcgfCBudWxsO1xuICAgIHJlc3VsdDogJ3N1Y2Nlc3MnIHwgJ2ZhaWxlZCc7XG4gICAgZXJyb3I/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdG9yU2VydmljZU9wdGlvbnMge1xuICAgIHNvdXJjZXM6IE1pZ3JhdGlvblNvdXJjZVtdO1xuICAgIGRiOiBLeXNlbHk8YW55PjtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgZW1taXR0ZXI/OiBFbW1pdHRlclNlcnZpY2U7XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pZ3JhdG9yU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRiOiBLeXNlbHk8YW55PjtcbiAgICBzb3VyY2VzOiBNaWdyYXRpb25Tb3VyY2VbXTtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNaWdyYXRvclNlcnZpY2VPcHRpb25zKTtcbiAgICBhZGRTb3VyY2Uoc291cmNlOiBNaWdyYXRpb25Tb3VyY2UpOiB2b2lkO1xuICAgIHByaXZhdGUgZW5zdXJlTWlncmF0aW9uc1RhYmxlO1xuICAgIGxpc3RTb3VyY2Uoc291cmNlOiBNaWdyYXRpb25Tb3VyY2UpOiBQcm9taXNlPE1pZ3JhdGlvbkVudGl0eVtdPjtcbiAgICBsaXN0KGZpbHRlcnM/OiBMaXN0RmlsdGVycyk6IFByb21pc2U8TWlncmF0aW9uRW50aXR5W10+O1xuICAgIHByaXZhdGUgbWlncmF0ZVVwO1xuICAgIHByaXZhdGUgbWlncmF0ZURvd247XG4gICAgcHJpdmF0ZSBtaWdyYXRlRmlsZTtcbiAgICBwcml2YXRlIHJvbGxiYWNrRmlsZTtcbiAgICBtaWdyYXRlKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xuICAgIHJvbGxiYWNrKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xuICAgIHVwKHN0ZXBzPzogbnVtYmVyLCBmaWx0ZXJzPzogTGlzdEZpbHRlcnMpOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdFtdPjtcbiAgICBkb3duKHN0ZXBzPzogbnVtYmVyLCBmaWx0ZXJzPzogTGlzdEZpbHRlcnMpOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdFtdPjtcbiAgICBsYXRlc3QoZmlsdGVycz86IExpc3RGaWx0ZXJzKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHRbXT47XG4gICAgbGF0ZXN0T3JGYWlsKGZpbHRlcnM/OiBMaXN0RmlsdGVycyk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xuICAgIGZyZXNoKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IHR5cGUgSXBjTWVzc2FnZTxUID0gYW55PiA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgZGF0YTogVDtcbn07XG50eXBlIElwY0xpc3RlbmVyPFQgPSBhbnk+ID0gKGRhdGE6IFQpID0+IHZvaWQ7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBQbHVnaW5JcGNDbGllbnQge1xuICAgIHByaXZhdGUgbGlzdGVuZXJzO1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgb248VCA9IGFueT4oZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IElwY0xpc3RlbmVyPFQ+KTogdm9pZDtcbiAgICBvZmY8VCA9IGFueT4oZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IElwY0xpc3RlbmVyPFQ+KTogdm9pZDtcbiAgICBlbWl0PFQgPSBhbnk+KGV2ZW50OiBzdHJpbmcsIGRhdGE/OiBUKTogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xudHlwZSBJcGNMaXN0ZW5lcjxUID0gYW55PiA9IChkYXRhOiBUKSA9PiB2b2lkO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgUGx1Z2luSXBjSG9zdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZDtcbiAgICBwcml2YXRlIGxpc3RlbmVycztcbiAgICBjb25zdHJ1Y3RvcihjaGlsZDogQ2hpbGRQcm9jZXNzKTtcbiAgICBvbjxUID0gYW55PihldmVudDogc3RyaW5nLCBjYWxsYmFjazogSXBjTGlzdGVuZXI8VD4pOiB2b2lkO1xuICAgIG9mZjxUID0gYW55PihldmVudDogc3RyaW5nLCBjYWxsYmFjazogSXBjTGlzdGVuZXI8VD4pOiB2b2lkO1xuICAgIGVtaXQ8VCA9IGFueT4oZXZlbnQ6IHN0cmluZywgZGF0YT86IFQpOiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBQbHVnaW5JcGNDbGllbnQgfSBmcm9tICcuL1BsdWdpbklwY0NsaWVudC50cyc7XG5leHBvcnQgdHlwZSBIdHRwTWV0aG9kID0gJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJztcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVEZWZpbml0aW9uIHtcbiAgICBtZXRob2Q6IEh0dHBNZXRob2Q7XG4gICAgcGF0aDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVJlcXVlc3Qge1xuICAgIHJlcXVlc3RJZDogc3RyaW5nO1xuICAgIG1ldGhvZDogSHR0cE1ldGhvZDtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgYm9keT86IGFueTtcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVSZXNwb25zZVBheWxvYWQge1xuICAgIHJlcXVlc3RJZDogc3RyaW5nO1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIGJvZHk/OiBhbnk7XG4gICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlUmVwbHkge1xuICAgIHN0YXR1cyhjb2RlOiBudW1iZXIpOiBSb3V0ZVJlcGx5O1xuICAgIHNlbmQoYm9keT86IGFueSk6IHZvaWQ7XG59XG5leHBvcnQgdHlwZSBSb3V0ZUhhbmRsZXIgPSAocmVxOiBSb3V0ZVJlcXVlc3QsIHJlcGx5OiBSb3V0ZVJlcGx5KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFBsdWdpblJvdXRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ7XG4gICAgcHJpdmF0ZSByb3V0ZXM7XG4gICAgY29uc3RydWN0b3IoY2xpZW50OiBQbHVnaW5JcGNDbGllbnQpO1xuICAgIHByaXZhdGUgZGlzcGF0Y2g7XG4gICAgcHJpdmF0ZSByZWdpc3RlcjtcbiAgICBnZXQocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBSb3V0ZUhhbmRsZXIpOiB2b2lkO1xuICAgIHBvc3QocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBSb3V0ZUhhbmRsZXIpOiB2b2lkO1xuICAgIHB1dChwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IFJvdXRlSGFuZGxlcik6IHZvaWQ7XG4gICAgcGF0Y2gocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBSb3V0ZUhhbmRsZXIpOiB2b2lkO1xuICAgIGRlbGV0ZShwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IFJvdXRlSGFuZGxlcik6IHZvaWQ7XG59XG4iLCJpbXBvcnQgdHlwZSBSb3V0ZXIgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3V0ZXJGaWxlQmFzZVJvdXRpbmdTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGRpcmVjdG9yeTtcbiAgICBwcml2YXRlIHByZWZpeDtcbiAgICBwcml2YXRlIG1vZHVsZT87XG4gICAgcHJpdmF0ZSByb3V0ZXI7XG4gICAgcHJpdmF0ZSBsb2dnZXI7XG4gICAgcHJpdmF0ZSByb3V0ZXM7XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgc2V0RGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nKTogdGhpcztcbiAgICBzZXRQcmVmaXgocHJlZml4OiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldFJvdXRlcihyb3V0ZXI6IFJvdXRlcik6IHRoaXM7XG4gICAgc2V0TW9kdWxlKG1vZHVsZTogc3RyaW5nKTogdGhpcztcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKTogdGhpcztcbiAgICBzZXREZWJ1ZyhkZWJ1ZzogYm9vbGVhbik6IHRoaXM7XG4gICAgc3RhdGljIGNyZWF0ZShkaXJlY3Rvcnk6IHN0cmluZyk6IFJvdXRlckZpbGVCYXNlUm91dGluZ1NlcnZpY2U7XG4gICAgbG9hZEZpbGVzKCk6IFByb21pc2U8dm9pZD47XG4gICAgcmVnaXN0ZXJSb3V0ZXMoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgUm91dGVyU2VydmljZSBmcm9tICcuL1JvdXRlclNlcnZpY2UudHMnO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXJSZWdpc3RlckVudHJ5IHtcbiAgICBmaWxlcGF0aDogc3RyaW5nO1xuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGVyUmVnaXN0ZXI8QyA9IHt9PiBleHRlbmRzIFJvdXRlclNlcnZpY2U8Qz4ge1xuICAgIGZpbGVzOiBNYXA8c3RyaW5nLCBSb3V0ZXJSZWdpc3RlckVudHJ5PjtcbiAgICBkaXJzOiBNYXA8c3RyaW5nLCBSb3V0ZXJSZWdpc3RlckVudHJ5PjtcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZXI/OiBQYXJ0aWFsPFJvdXRlclNlcnZpY2U8Qz4+KTtcbiAgICBhZGRGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG4gICAgYWRkRGlyKGRpcm5hbWU6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICBwcml2YXRlIGxvYWRGaWxlO1xuICAgIHByaXZhdGUgbG9hZERpcjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgdHlwZSBSb3V0ZXIgZnJvbSAnLi9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL1JvdXRlckNvbnRyYWN0LnRzJztcbmltcG9ydCB0eXBlIHsgSHR0cENvbnRleHQgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9IdHRwQ29udGV4dENvbnRyYWN0LnRzJztcbmV4cG9ydCB0eXBlIFJlc291cmNlTWV0aG9kID0gJ2luZGV4JyB8ICdzaG93JyB8ICdzdG9yZScgfCAndXBkYXRlJyB8ICdkZXN0cm95JztcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyUmVzb3VyY2VPcHRpb25zIHtcbiAgICBtaWRkbGV3YXJlPzogUGFydGlhbDxSZWNvcmQ8UmVzb3VyY2VNZXRob2QgfCAnYWxsJywgTWlkZGxld2FyZT4+O1xuICAgIGV4Y2VwdD86IFJlc291cmNlTWV0aG9kW107XG59XG5kZWNsYXJlIGNvbnN0IFJvdXRlclJlc291cmNlU2VydmljZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbGlzdGVuZXJzOiBpbXBvcnQoXCIjc2hhcmVkL21peGlucy9Ib29rc01peGluLnRzXCIpLkxpc3RlbmVyW107XG4gICAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xuICAgICAgICBlbWl0QXN5bmMoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGVyUmVzb3VyY2VTZXJ2aWNlIGV4dGVuZHMgUm91dGVyUmVzb3VyY2VTZXJ2aWNlX2Jhc2Uge1xuICAgIHByaXZhdGUgb3B0aW9ucztcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzogUm91dGVyUmVzb3VyY2VPcHRpb25zKTtcbiAgICBpbmRleChjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTxhbnk+O1xuICAgIHNob3coY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8YW55PjtcbiAgICBzdG9yZShjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTxhbnk+O1xuICAgIHVwZGF0ZShjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTxhbnk+O1xuICAgIGRlc3Ryb3koY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8YW55PjtcbiAgICBwcml2YXRlIHdyYXA7XG4gICAgcmVnaXN0ZXIocm91dGVyOiBSb3V0ZXIpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG5leHBvcnQgdHlwZSBDb25maWdNb2RlbCA9IFJldHVyblR5cGU8UmV0dXJuVHlwZTx0eXBlb2YgTW9kZWxDb25maWc+PjtcbmludGVyZmFjZSBPcHRpb25zIHtcbiAgICByZWFkb25seT86IGJvb2xlYW47XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNb2RlbENvbmZpZyhrZXk6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbnMpOiA8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oQmFzZTogVEJhc2UpID0+IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge307XG4gICAgX19pc0NvbmZpZ01vZGVsOiBib29sZWFuO1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCByb3c6IGFueSk6IFByb21pc2U8VD47XG4gICAgbGlzdDxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogUHJvbWlzZTxUW10+O1xuICAgIGZpbmQ8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+O1xuICAgIGZpbmRPckZhaWw8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8VD47XG4gICAgY3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGl0ZW06IFQgJiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8dm9pZD47XG4gICAgdXBkYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGlkOiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVwZGF0ZU9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlc3Ryb3k8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59ICYgVEJhc2U7XG5leHBvcnQge307XG4iLCJpbXBvcnQgUm91dGVyUmVzb3VyY2VTZXJ2aWNlIGZyb20gJy4vUm91dGVyUmVzb3VyY2VTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIHsgUm91dGVyUmVzb3VyY2VPcHRpb25zIH0gZnJvbSAnLi9Sb3V0ZXJSZXNvdXJjZVNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgeyBIdHRwQ29udGV4dCB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0h0dHBDb250ZXh0Q29udHJhY3QudHMnO1xuaW1wb3J0IHR5cGUgeyBDb25maWdNb2RlbCB9IGZyb20gJyNzZXJ2ZXIvbWl4aW5zL01vZGVsQ29uZmlnTWl4aW4udHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGVyUmVzb3VyY2VDb25maWcgZXh0ZW5kcyBSb3V0ZXJSZXNvdXJjZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgbW9kZWw7XG4gICAgY29uc3RydWN0b3IobW9kZWw6IENvbmZpZ01vZGVsLCBvcHRpb25zPzogUm91dGVyUmVzb3VyY2VPcHRpb25zKTtcbiAgICBpbmRleChjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTx7XG4gICAgICAgIHBhZ2U6IG51bWJlcjtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgdG90YWxfcGFnZXM6IG51bWJlcjtcbiAgICAgICAgaXRlbXM6IHt9W107XG4gICAgfT47XG4gICAgc2hvdyhjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTx7fT47XG4gICAgc3RvcmUoY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8e1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT47XG4gICAgdXBkYXRlKGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlc3Ryb3koY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8e1xuICAgICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIH0+O1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLnRzJztcbmludGVyZmFjZSBDb21tYW5kT3B0aW9ucyB7XG4gICAgY3dkPzogc3RyaW5nO1xuICAgIGVudj86IE5vZGVKUy5Qcm9jZXNzRW52O1xuICAgIHNoZWxsPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxTZXJ2aWNlT3B0aW9ucyB7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGVsbFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IFNoZWxsU2VydmljZU9wdGlvbnMpO1xuICAgIC8qKlxuICAgICAqIEV4ZWN1dGUgYSBzaGVsbCBjb21tYW5kIGFuZCByZXR1cm4gYSBwcm9taXNlXG4gICAgICovXG4gICAgY29tbWFuZChiaW46IHN0cmluZywgYXJnczogc3RyaW5nW10sIG9wdGlvbnM/OiBDb21tYW5kT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqXG4gICAgICogRXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmQgYW5kIHJldHVybiB0aGUgb3V0cHV0IGFzIGEgc3RyaW5nXG4gICAgICovXG4gICAgZXhlY3V0ZUNvbW1hbmRXaXRoT3V0cHV0KGJpbjogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9ucz86IENvbW1hbmRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBLeXNlbHkgfSBmcm9tICdreXNlbHknO1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uPFQgPSBhbnk+IHtcbiAgICBpdGVtczogVFtdO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBwZXJfcGFnZTogbnVtYmVyO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgdG90YWxfcGFnZXM6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmluZE1hbnlPcHRpb25zIHtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgb3JkZXJCeT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIG9yZGVyRGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYycgfCAoJ2FzYycgfCAnZGVzYycpW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlT3B0aW9ucyB7XG4gICAgcGFnZT86IG51bWJlcjtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBvcmRlckJ5PzogRmluZE1hbnlPcHRpb25zWydvcmRlckJ5J107XG4gICAgb3JkZXJEaXJlY3Rpb24/OiBGaW5kTWFueU9wdGlvbnNbJ29yZGVyRGlyZWN0aW9uJ107XG59XG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZU1hbnlPcHRpb25zIHtcbiAgICBsaW1pdD86IG51bWJlcjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlUmVwb3NpdG9yeTxURW50aXR5ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFByaW1hcnlLZXkgPSBhbnksIFRPcHRpb25zID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHByb3RlY3RlZCBkYjogS3lzZWx5PGFueT47XG4gICAgcHJvdGVjdGVkIHRhYmxlOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHByaW1hcnlLZXk6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihkYjogS3lzZWx5PGFueT4sIHRhYmxlOiBzdHJpbmcsIHByaW1hcnlLZXk6IHN0cmluZyk7XG4gICAgcXVlcnkob3B0aW9ucz86IHtcbiAgICAgICAgcWI/OiBhbnk7XG4gICAgfSAmIFRPcHRpb25zKTogYW55O1xuICAgIGNvdW50KG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTxudW1iZXI+O1xuICAgIGZpbmRNYW55KG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnMgJiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eVtdPjtcbiAgICBmaW5kT25lKG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eSB8IG51bGw+O1xuICAgIGZpbmRCeUlkKGlkOiBUUHJpbWFyeUtleSwgb3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5IHwgbnVsbD47XG4gICAgZmluZEJ5SWRPckZhaWwoaWQ6IFRQcmltYXJ5S2V5LCBvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPE5vbk51bGxhYmxlPEF3YWl0ZWQ8VEVudGl0eT4+PjtcbiAgICBwYWdpbmF0ZShvcHRpb25zPzogUGFnaW5hdGVPcHRpb25zICYgVE9wdGlvbnMpOiBQcm9taXNlPFBhZ2luYXRpb24+O1xuICAgIGNyZWF0ZShkYXRhOiBQYXJ0aWFsPFRFbnRpdHk+KTogUHJvbWlzZTxhbnk+O1xuICAgIGNyZWF0ZU1hbnkoZGF0YTogUGFydGlhbDxURW50aXR5PltdKTogUHJvbWlzZTxhbnlbXT47XG4gICAgdXBkYXRlQnlJZChpZDogVFByaW1hcnlLZXksIGRhdGE6IFBhcnRpYWw8VEVudGl0eT4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlbGV0ZUJ5SWQoaWQ6IFRQcmltYXJ5S2V5KTogUHJvbWlzZTx2b2lkPjtcbiAgICBkZWxldGVNYW55KG9wdGlvbnM/OiBEZWxldGVNYW55T3B0aW9ucyAmIFRPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB0eXBlIENvbmZpZ1NlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Db25maWdTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGlvbiwgRmluZE1hbnlPcHRpb25zLCBQYWdpbmF0ZU9wdGlvbnMsIERlbGV0ZU1hbnlPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvRGF0YWJhc2VSZXBvc2l0b3J5LnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ1JlcG9zaXRvcnk8VEVudGl0eSA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRPcHRpb25zID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHByb3RlY3RlZCBjb25maWc6IENvbmZpZ1NlcnZpY2U7XG4gICAgcHJvdGVjdGVkIGtleTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBwcmltYXJ5S2V5OiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWdTZXJ2aWNlLCBrZXk6IHN0cmluZywgcHJpbWFyeUtleT86IHN0cmluZyk7XG4gICAgcHJvdGVjdGVkIGdldEl0ZW1zKCk6IFRFbnRpdHlbXTtcbiAgICBwcm90ZWN0ZWQgc2V0SXRlbXMoaXRlbXM6IFRFbnRpdHlbXSk6IHZvaWQ7XG4gICAgcXVlcnkob3B0aW9ucz86IFRPcHRpb25zKTogVEVudGl0eVtdO1xuICAgIGNvdW50KG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPjtcbiAgICBmaW5kTWFueShvcHRpb25zPzogRmluZE1hbnlPcHRpb25zICYgVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHlbXT47XG4gICAgZmluZE9uZShvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHkgfCBudWxsPjtcbiAgICBmaW5kQnlJZChpZDogc3RyaW5nLCBvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHkgfCBudWxsPjtcbiAgICBmaW5kQnlJZE9yRmFpbChpZDogc3RyaW5nLCBvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHk+O1xuICAgIHBhZ2luYXRlKG9wdGlvbnM/OiBQYWdpbmF0ZU9wdGlvbnMgJiBUT3B0aW9ucyk6IFByb21pc2U8UGFnaW5hdGlvbjxURW50aXR5Pj47XG4gICAgY3JlYXRlKGRhdGE6IFBhcnRpYWw8VEVudGl0eT4pOiBQcm9taXNlPFRFbnRpdHk+O1xuICAgIGNyZWF0ZU1hbnkoZGF0YTogUGFydGlhbDxURW50aXR5PltdKTogUHJvbWlzZTxURW50aXR5W10+O1xuICAgIHVwZGF0ZUJ5SWQoaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxURW50aXR5Pik6IFByb21pc2U8VEVudGl0eT47XG4gICAgZGVsZXRlQnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICBkZWxldGVNYW55KG9wdGlvbnM/OiBEZWxldGVNYW55T3B0aW9ucyAmIFRPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCBEYXRhYmFzZVJlcG9zaXRvcnkgZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvRGF0YWJhc2VSZXBvc2l0b3J5LnRzJztcbmltcG9ydCB0eXBlIHsgTWV0YWRhdGFRdWVyeVBheWxvYWQgfSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL01ldGFkYXRhUXVlcnlTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIEZpbGVFbnRpdHkgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9GaWxlRW50aXR5LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVJlcG9zaXRvcnlRdWVyeU9wdGlvbnMge1xuICAgIGlkPzogbnVtYmVyIHwgbnVtYmVyW107XG4gICAgc2VhcmNoPzogc3RyaW5nO1xuICAgIHB1cnBvc2U/OiBzdHJpbmdbXTtcbiAgICBjbGllbnRfbmFtZT86IHN0cmluZ1tdO1xuICAgIG1ldGFzPzogTWV0YWRhdGFRdWVyeVBheWxvYWQ7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlUmVwb3NpdG9yeSBleHRlbmRzIERhdGFiYXNlUmVwb3NpdG9yeTxGaWxlRW50aXR5LCBGaWxlRW50aXR5WydpZCddLCBGaWxlUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucz4ge1xuICAgIGNvbnN0cnVjdG9yKGRiOiBEYXRhYmFzZVJlcG9zaXRvcnlbJ2RiJ10pO1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiBGaWxlUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucyk6IGFueTtcbn1cbiIsImltcG9ydCBTaGVsbFNlcnZpY2UgZnJvbSBcIiNzZXJ2ZXIvc2VydmljZXMvU2hlbGxTZXJ2aWNlLnRzXCI7XG5pbXBvcnQgR2l0QnJhbmNoRW50aXR5IGZyb20gXCIjc2hhcmVkL2VudGl0aWVzL0dpdEJyYW5jaEVudGl0eS50c1wiO1xuZXhwb3J0IGludGVyZmFjZSBHaXRCcmFuY2hSZXBvc2l0b3J5T3B0aW9ucyB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgc2hlbGw/OiBTaGVsbFNlcnZpY2U7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHaXRCcmFuY2hSZXBvc2l0b3J5IHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICBzaGVsbDogU2hlbGxTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEdpdEJyYW5jaFJlcG9zaXRvcnlPcHRpb25zKTtcbiAgICBsaXN0KCk6IFByb21pc2U8R2l0QnJhbmNoRW50aXR5W10+O1xuICAgIGZldGNoKG9wdGlvbnM6IHtcbiAgICAgICAgcmVtb3RlOiBzdHJpbmc7XG4gICAgICAgIGJyYW5jaDogc3RyaW5nO1xuICAgICAgICBsb2NhbE5hbWU/OiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgU2hlbGxTZXJ2aWNlIGZyb20gXCIjc2VydmVyL3NlcnZpY2VzL1NoZWxsU2VydmljZS50c1wiO1xuaW1wb3J0IEdpdENvbW1pdEVudGl0eSBmcm9tIFwiI3NoYXJlZC9lbnRpdGllcy9HaXRDb21taXRFbnRpdHkudHNcIjtcbmV4cG9ydCBpbnRlcmZhY2UgR2l0Q29tbWl0UmVwb3NpdG9yeU9wdGlvbnMge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIHNoZWxsPzogU2hlbGxTZXJ2aWNlO1xufVxuZXhwb3J0IGludGVyZmFjZSBHaXRDb21taXRMaXN0T3B0aW9ucyB7XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gICAgY3Vyc29yPzogc3RyaW5nO1xuICAgIGJyYW5jaGVzPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIEdpdENvbW1pdExpc3RSZXN1bHQge1xuICAgIGl0ZW1zOiBHaXRDb21taXRFbnRpdHlbXTtcbiAgICBjdXJzb3JfcHJldmlvdXM6IHN0cmluZyB8IG51bGw7XG4gICAgY3Vyc29yX2N1cnJlbnQ6IHN0cmluZyB8IG51bGw7XG4gICAgY3Vyc29yX25leHQ6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHaXRDb21taXRSZXBvc2l0b3J5IHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICBzaGVsbDogU2hlbGxTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEdpdENvbW1pdFJlcG9zaXRvcnlPcHRpb25zKTtcbiAgICBsaXN0KG9wdGlvbnM/OiBHaXRDb21taXRMaXN0T3B0aW9ucyk6IFByb21pc2U8R2l0Q29tbWl0TGlzdFJlc3VsdD47XG4gICAgY2hlY2tvdXQoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCBEYXRhYmFzZVJlcG9zaXRvcnkgZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvRGF0YWJhc2VSZXBvc2l0b3J5LnRzJztcbmltcG9ydCB0eXBlIHsgUGVybWlzc2lvbkFzc2lnbm1lbnQgfSBmcm9tICcjc2hhcmVkL3NjaGVtYXMvcGVybWlzc2lvbkFzc2lnbm1lbnRTY2hlbWEudHMnO1xuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnlRdWVyeU9wdGlvbnMge1xuICAgIGlkPzogbnVtYmVyIHwgbnVtYmVyW107XG4gICAgcGVybWlzc2lvbklkPzogbnVtYmVyIHwgbnVtYmVyW107XG4gICAgYXNzaWduYWJsZUlkPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgYXNzaWduYWJsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeSBleHRlbmRzIERhdGFiYXNlUmVwb3NpdG9yeTxQZXJtaXNzaW9uQXNzaWdubWVudCwgUGVybWlzc2lvbkFzc2lnbm1lbnRbJ2lkJ10sIFBlcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucz4ge1xuICAgIGNvbnN0cnVjdG9yKGRiOiBEYXRhYmFzZVJlcG9zaXRvcnlbJ2RiJ10pO1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiBQZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnlRdWVyeU9wdGlvbnMpOiBhbnk7XG59XG4iLCJpbXBvcnQgRGF0YWJhc2VSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb24gfSBmcm9tICcjc2hhcmVkL3NjaGVtYXMvcGVybWlzc2lvblNjaGVtYS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25SZXBvc2l0b3J5UXVlcnlPcHRpb25zIHtcbiAgICBpZD86IG51bWJlciB8IG51bWJlcltdO1xuICAgIHNlYXJjaD86IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlcm1pc3Npb25SZXBvc2l0b3J5IGV4dGVuZHMgRGF0YWJhc2VSZXBvc2l0b3J5PFBlcm1pc3Npb24sIFBlcm1pc3Npb25bJ2lkJ10sIFBlcm1pc3Npb25SZXBvc2l0b3J5UXVlcnlPcHRpb25zPiB7XG4gICAgY29uc3RydWN0b3IoZGI6IERhdGFiYXNlUmVwb3NpdG9yeVsnZGInXSk7XG4gICAgcXVlcnkob3B0aW9ucz86IFBlcm1pc3Npb25SZXBvc2l0b3J5UXVlcnlPcHRpb25zKTogYW55O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBGaW5kTWFueU9wdGlvbnMsIFBhZ2luYXRlT3B0aW9ucywgUGFnaW5hdGlvbiB9IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgSVJlcG9zaXRvcnlUeXBlczxURW50aXR5ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFByaW1hcnlLZXlUeXBlID0gYW55LCBUT3B0aW9ucyA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb3VudChvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj47XG4gICAgZmluZE1hbnkob3B0aW9ucz86IFRPcHRpb25zICYgRmluZE1hbnlPcHRpb25zKTogUHJvbWlzZTxURW50aXR5W10+O1xuICAgIGZpbmRCeUlkKGlkOiBUUHJpbWFyeUtleVR5cGUsIG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eSB8IG51bGw+O1xuICAgIGZpbmRCeUlkT3JGYWlsKGlkOiBUUHJpbWFyeUtleVR5cGUsIG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eT47XG4gICAgcGFnaW5hdGUob3B0aW9ucz86IFRPcHRpb25zICYgUGFnaW5hdGVPcHRpb25zKTogUHJvbWlzZTxQYWdpbmF0aW9uPjtcbiAgICBjcmVhdGUoZGF0YTogUGFydGlhbDxURW50aXR5Piwgb3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5PjtcbiAgICBjcmVhdGVNYW55KGRhdGE6IFBhcnRpYWw8VEVudGl0eT5bXSwgb3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5W10+O1xuICAgIGRlbGV0ZUJ5SWQoaWQ6IFRQcmltYXJ5S2V5VHlwZSk6IFByb21pc2U8dm9pZD47XG4gICAgZGVzdHJveU1hbnkob3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFiYXNlUmVwb3NpdG9yeUluZmVyTWl4aW48VEVudGl0eSA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRQcmltYXJ5S2V5VHlwZSA9IGFueSwgVE9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PigpOiA8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oQmFzZTogVEJhc2UpID0+IFRCYXNlICYgQ29uc3RydWN0b3I8SVJlcG9zaXRvcnlUeXBlczxURW50aXR5LCBUUHJpbWFyeUtleVR5cGUsIFRPcHRpb25zPj47XG4iLCJpbXBvcnQgRGF0YWJhc2VSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSAnI3NoYXJlZC9zY2hlbWFzL3Rva2VuU2NoZW1hLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZXBvc2l0b3J5UXVlcnlPcHRpb25zIHtcbiAgICBpZD86IG51bWJlciB8IG51bWJlcltdO1xuICAgIHNlYXJjaD86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5kZWNsYXJlIGNvbnN0IFRva2VuUmVwb3NpdG9yeV9iYXNlOiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2luZGV4LnRzXCIpLkNvbnN0cnVjdG9yICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9pbmRleC50c1wiKS5Db25zdHJ1Y3RvcjxpbXBvcnQoXCIjc2VydmVyL21peGlucy9EYXRhYmFzZVJlcG9zaXRvcnlJbmZlck1peGluLnRzXCIpLklSZXBvc2l0b3J5VHlwZXM8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRfYXQ6IHN0cmluZztcbiAgICBleHBpcmVzX2F0OiBzdHJpbmc7XG59LCBudW1iZXIsIFRva2VuUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucz4+ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9pbmRleC50c1wiKS5Db25zdHJ1Y3Rvcjx7fT4gJiB0eXBlb2YgRGF0YWJhc2VSZXBvc2l0b3J5O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5SZXBvc2l0b3J5IGV4dGVuZHMgVG9rZW5SZXBvc2l0b3J5X2Jhc2Uge1xuICAgIGNvbnN0cnVjdG9yKGRiOiBEYXRhYmFzZVJlcG9zaXRvcnlbJ2RiJ10pO1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiBUb2tlblJlcG9zaXRvcnlRdWVyeU9wdGlvbnMpOiBhbnk7XG4gICAgZmluZEJ5VG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8VG9rZW4gfCBudWxsPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgVXNlclRhYmxlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbXBvcnQgRGF0YWJhc2VSZXBvc2l0b3J5IGZyb20gJy4vRGF0YWJhc2VSZXBvc2l0b3J5JztcbmV4cG9ydCBpbnRlcmZhY2UgVXNlclJlcG9zaXRvcnlRdWVyeU9wdGlvbnMge1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIGlkPzogbnVtYmVyO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlclJlcG9zaXRvcnkgZXh0ZW5kcyBEYXRhYmFzZVJlcG9zaXRvcnk8VXNlclRhYmxlLCBzdHJpbmcsIFVzZXJSZXBvc2l0b3J5UXVlcnlPcHRpb25zPiB7XG4gICAgY29uc3RydWN0b3IoZGI6IERhdGFiYXNlUmVwb3NpdG9yeVsnZGInXSk7XG4gICAgcXVlcnkob3B0aW9ucz86IFVzZXJSZXBvc2l0b3J5UXVlcnlPcHRpb25zKTogYW55O1xufVxuIiwiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBCYXNlRHJpdmUgZnJvbSAnI3NlcnZlci9nYXRld2F5cy9Ecml2ZUJhc2VHYXRld2F5LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRHJpdmVGU0NvbmZpZyB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZUZTIGV4dGVuZHMgQmFzZURyaXZlIHtcbiAgICBwcml2YXRlIHNjaGVtYTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBQaWNrPEJhc2VEcml2ZSwgJ2lkJyB8ICduYW1lJyB8ICdkZXNjcmlwdGlvbicgfCAnY29uZmlnJz4pO1xuICAgIGdldCB2YWxpZCgpOiBib29sZWFuO1xuICAgIHByaXZhdGUgY2hlY2tWYWxpZDtcbiAgICBwcm90ZWN0ZWQgZ2V0IHJvb3RQYXRoKCk6IHN0cmluZztcbiAgICBleGlzdHM6IEJhc2VEcml2ZVsnZXhpc3RzJ107XG4gICAgbGlzdDogQmFzZURyaXZlWydsaXN0J107XG4gICAgZmluZDogQmFzZURyaXZlWydmaW5kJ107XG4gICAgbWtkaXIoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgcmVhZDogQmFzZURyaXZlWydyZWFkJ107XG4gICAgcmVhZFN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxmcy5SZWFkU3RyZWFtPjtcbiAgICB3cml0ZTogQmFzZURyaXZlWyd3cml0ZSddO1xuICAgIHdyaXRlU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIHN0cmVhbTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtKTogUHJvbWlzZTx2b2lkPjtcbiAgICBkZWxldGU6IEJhc2VEcml2ZVsnZGVsZXRlJ107XG4gICAgdXJsOiBCYXNlRHJpdmVbJ3VybCddO1xuICAgIHVwbG9hZFVybDogQmFzZURyaXZlWyd1cGxvYWRVcmwnXTtcbn1cbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBTaGVsbFNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9TaGVsbFNlcnZpY2UudHMnO1xuZXhwb3J0IGludGVyZmFjZSBHaXRSZXBvSW5mbyB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgaGVhZDogc3RyaW5nIHwgbnVsbDtcbiAgICBzaG9ydEhhc2g6IHN0cmluZztcbiAgICBpc0RldGFjaGVkSGVhZDogYm9vbGVhbjtcbiAgICByZW1vdGVzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2l0R2F0ZXdheU9wdGlvbnMge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIHNzaEtleT86IHN0cmluZztcbiAgICBzc2hLZXlGaWxlPzogc3RyaW5nO1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG4gICAgc2hlbGw/OiBTaGVsbFNlcnZpY2U7XG4gICAgZGVidWc/OiBib29sZWFuO1xufVxuaW50ZXJmYWNlIEdpdEdhdGV3YXlFeGVjdXRlT3B0aW9ucyB7XG4gICAgYXJnczogc3RyaW5nO1xuICAgIGN3ZD86IHN0cmluZztcbiAgICBzc2hLZXk/OiBzdHJpbmc7XG4gICAgc3NoS2V5RmlsZT86IHN0cmluZztcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xuICAgIHNoZWxsPzogU2hlbGxTZXJ2aWNlO1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEdpdEdhdGV3YXkge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3dkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3NoS2V5PztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNzaEtleUZpbGU/O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVidWc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGVsbDtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBHaXRHYXRld2F5T3B0aW9ucyk7XG4gICAgc3RhdGljIGV4ZWN1dGUob3B0aW9uczogR2l0R2F0ZXdheUV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIHN0YXRpYyBjbG9uZShyZXBvVXJsOiBzdHJpbmcsIHRhcmdldERpcjogc3RyaW5nLCBvcHRpb25zOiBPbWl0PEdpdEdhdGV3YXlPcHRpb25zLCAnY3dkJz4pOiBQcm9taXNlPEdpdEdhdGV3YXk+O1xuICAgIHJ1bihhcmdzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG4gICAgdHJ5UnVuKGFyZ3M6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gICAgY2hlY2tvdXQocmVmOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG4gICAgZmV0Y2hBbGwoKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIHB1bGwoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBnZXRJbmZvKCk6IFByb21pc2U8R2l0UmVwb0luZm8+O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHZhbHVlVG9TdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1ldGFkYXRhPFRhYmxlIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+KG1ldGFzVGFibGU6IFRhYmxlLCBmb3JlaWduS2V5OiBrZXlvZiBEYXRhYmFzZVtUYWJsZV0pOiA8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oQmFzZTogVEJhc2UpID0+IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBnZXQ8VCA9IGFueT4obmFtZTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPjtcbiAgICAgICAgZ2V0PFQgPSBhbnk+KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogUHJvbWlzZTxUPjtcbiAgICAgICAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IFByb21pc2U8dm9pZD47XG4gICAgfTtcbn0gJiBUQmFzZTtcbiIsImltcG9ydCB0eXBlIHsgS3lzZWx5IH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qga2V5ID0gXCJkYXRhYmFzZVwiO1xuZGVjbGFyZSBjb25zdCBkYXRhYmFzZTogS3lzZWx5PERhdGFiYXNlQ29udHJhY3Q+O1xuZXhwb3J0IGRlZmF1bHQgZGF0YWJhc2U7XG4iLCJpbXBvcnQgdHlwZSB7IFNlbGVjdGFibGUsIFNlbGVjdFF1ZXJ5QnVpbGRlciwgRXhwcmVzc2lvbkJ1aWxkZXIgYXMgS0V4cHJlc3Npb25CdWlsZGVyIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCBkYiBmcm9tICcjc2VydmVyL2ZhY2FkZXMvZGF0YWJhc2UudHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgdHlwZSBTZWxlY3RGcm9tPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBSZXR1cm5UeXBlPHR5cGVvZiBkYi5zZWxlY3RGcm9tPFQ+PiB8IFNlbGVjdFF1ZXJ5QnVpbGRlcjxEYXRhYmFzZSwgVCwgYW55PjtcbmV4cG9ydCB0eXBlIEluc2VydEZyb208VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IFJldHVyblR5cGU8dHlwZW9mIGRiLmluc2VydEludG88VD4+O1xuZXhwb3J0IHR5cGUgVXBkYXRlRnJvbTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gUmV0dXJuVHlwZTx0eXBlb2YgZGIudXBkYXRlVGFibGU8VD4+O1xuZXhwb3J0IHR5cGUgRGVsZXRlRnJvbTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gUmV0dXJuVHlwZTx0eXBlb2YgZGIuZGVsZXRlRnJvbTxUPj47XG5leHBvcnQgdHlwZSBTZWxlY3RCdWlsZGVyPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBTZWxlY3RRdWVyeUJ1aWxkZXI8RGF0YWJhc2UsIFQsIFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+PjtcbmV4cG9ydCB0eXBlIEV4cHJlc3Npb25CdWlsZGVyPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBLRXhwcmVzc2lvbkJ1aWxkZXI8RGF0YWJhc2UsIFQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgbm93OiAoKSA9PiBpbXBvcnQoXCJreXNlbHlcIikuUmF3QnVpbGRlcjxzdHJpbmc+O1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4ge1xuICAgIHNlcmlhbGl6ZT86IChyb3c6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+KSA9PiBhbnk7XG59XG5leHBvcnQgdHlwZSBTZXJpYWxpemFibGVSZXN1bHQ8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgU2VyaWFsaXplT3B0aW9uczxUPiB8IHVuZGVmaW5lZD4gPSBPIGV4dGVuZHMgdW5kZWZpbmVkID8gU2VsZWN0YWJsZTxEYXRhYmFzZVtUXT4gOiBPIGV4dGVuZHMge1xuICAgIHNlcmlhbGl6ZTogKHJvdzogU2VsZWN0YWJsZTxEYXRhYmFzZVtUXT4pID0+IGluZmVyIFI7XG59ID8gUiA6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+O1xuIiwiaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uQnVpbGRlciwgRXhwcmVzc2lvbldyYXBwZXIsIEluc2VydGFibGUgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RGcm9tLCBTZXJpYWxpemFibGVSZXN1bHQsIFNlcmlhbGl6ZU9wdGlvbnMsIFVwZGF0ZUZyb20gfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlT3JDcmVhdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gZXh0ZW5kcyBTZXJpYWxpemVPcHRpb25zPFQ+IHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgd2hlcmU/OiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPikgPT4gRXhwcmVzc2lvbldyYXBwZXI8RGF0YWJhc2UsIFQsIGFueT47XG4gICAgc2VsZWN0PzogKHFiOiBTZWxlY3RGcm9tPFQ+KSA9PiBTZWxlY3RGcm9tPFQ+O1xuICAgIHVwZGF0ZT86IChxYjogVXBkYXRlRnJvbTxUPikgPT4gVXBkYXRlRnJvbTxUPjtcbiAgICB2YWx1ZXM6IEluc2VydGFibGU8RGF0YWJhc2VbVF0+IHwgSW5zZXJ0YWJsZTxEYXRhYmFzZVtUXT5bXTtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVwZGF0ZU9yQ3JlYXRlPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIFVwZGF0ZU9yQ3JlYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxTZXJpYWxpemFibGVSZXN1bHQ8VCwgTz4+O1xuIiwiaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uQnVpbGRlciwgRXhwcmVzc2lvbldyYXBwZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RGcm9tLCBTZXJpYWxpemVPcHRpb25zLCBTZXJpYWxpemFibGVSZXN1bHQgfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiBleHRlbmRzIFNlcmlhbGl6ZU9wdGlvbnM8VD4ge1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgd2hlcmU/OiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPikgPT4gRXhwcmVzc2lvbldyYXBwZXI8RGF0YWJhc2UsIFQsIGFueT47XG4gICAgcXVlcnk/OiAocWI6IFNlbGVjdEZyb208VD4pID0+IFNlbGVjdEZyb208VD47XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBsaXN0PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIExpc3RPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPltdPjtcbiIsImltcG9ydCB0eXBlIHsgRXhwcmVzc2lvbkJ1aWxkZXIsIEV4cHJlc3Npb25XcmFwcGVyLCBTZWxlY3RhYmxlIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgU2VsZWN0RnJvbSB9IGZyb20gJy4vY29tbW9uLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9QYWdpbmF0aW9uRW50aXR5LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4ge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBwYWdlPzogbnVtYmVyO1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9yZGVyQnk/OiBEYXRhYmFzZVtUXSB8IChrZXlvZiBEYXRhYmFzZVtUXSlbXTtcbiAgICBvcmRlckRlc2M/OiAoJ2FzYycgfCAnZGVzYycpIHwgKCdhc2MnIHwgJ2Rlc2MnKVtdO1xuICAgIHdoZXJlPzogKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxEYXRhYmFzZSwgVD4pID0+IEV4cHJlc3Npb25XcmFwcGVyPERhdGFiYXNlLCBULCBhbnk+O1xuICAgIHNlcmlhbGl6ZT86IChyb3c6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+KSA9PiBhbnk7XG4gICAgcXVlcnk/OiAocWI6IFNlbGVjdEZyb208VD4pID0+IGFueTtcbn1cbmV4cG9ydCB0eXBlIFBhZ2luYXRlUmVzdWx0PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIFBhZ2luYXRlT3B0aW9uczxUPiB8IHVuZGVmaW5lZD4gPSBPIGV4dGVuZHMgdW5kZWZpbmVkID8gU2VsZWN0YWJsZTxEYXRhYmFzZVtUXT4gOiBPIGV4dGVuZHMge1xuICAgIHNlcmlhbGl6ZTogKHJvdzogU2VsZWN0YWJsZTxEYXRhYmFzZVtUXT4pID0+IGluZmVyIFI7XG59ID8gUiA6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcGFnaW5hdGU8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgUGFnaW5hdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFBhZ2luYXRpb248UGFnaW5hdGVSZXN1bHQ8VCwgTz4+PjtcbiIsImltcG9ydCB0eXBlIHsgU2VsZWN0RnJvbSB9IGZyb20gJy4vY29tbW9uLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuZXhwb3J0IGludGVyZmFjZSBDb3VudE9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiB7XG4gICAgcXVlcnk/OiAocWI6IFNlbGVjdEZyb208VD4pID0+IFNlbGVjdEZyb208VD47XG4gICAgZGVidWc/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY291bnQ8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgQ291bnRPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPG51bWJlcj47XG4iLCJpbXBvcnQgdHlwZSB7IEluc2VydGFibGUgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBTZXJpYWxpemFibGVSZXN1bHQsIFNlcmlhbGl6ZU9wdGlvbnMgfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IGV4dGVuZHMgU2VyaWFsaXplT3B0aW9uczxUPiB7XG4gICAgdmFsdWVzOiBJbnNlcnRhYmxlPERhdGFiYXNlW1RdPjtcbiAgICBwcmltYXJ5S2V5Pzogc3RyaW5nO1xuICAgIG5vcm1hbGl6ZT86IGJvb2xlYW4gfCAoKHZhbHVlOiBhbnkpID0+IGFueSk7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIENyZWF0ZU9wdGlvbnM8VD4+KHRhYmxlOiBULCBvcHRpb25zPzogTyk6IFByb21pc2U8U2VyaWFsaXphYmxlUmVzdWx0PFQsIE8+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZU15c3FsPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIENyZWF0ZU9wdGlvbnM8VD4+KHRhYmxlOiBULCBvcHRpb25zPzogTyk6IFByb21pc2U8U2VyaWFsaXphYmxlUmVzdWx0PFQsIE8+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBDcmVhdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPGltcG9ydChcImt5c2VseVwiKS5EcmFpbk91dGVyR2VuZXJpYzx7IFtLXzEgaW4gKERhdGFiYXNlW1RdIGV4dGVuZHMgaW5mZXIgVF8xID8geyBbSyBpbiBrZXlvZiBUXzFdOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0VHlwZTxUXzFbS10+IGV4dGVuZHMgaW5mZXIgVF8yID8gVF8yIGV4dGVuZHMgaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFR5cGU8VF8xW0tdPiA/IFRfMiBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBLIDogbmV2ZXIgOiBuZXZlcjsgfSA6IG5ldmVyKVtrZXlvZiBEYXRhYmFzZVtUXV1dOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0VHlwZTxEYXRhYmFzZVtUXVtLXzFdPjsgfT4+O1xuIiwiaW1wb3J0IHR5cGUgeyBVcGRhdGVhYmxlLCBFeHByZXNzaW9uQnVpbGRlciwgRXhwcmVzc2lvbldyYXBwZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBVcGRhdGVGcm9tLCBTZXJpYWxpemFibGVSZXN1bHQsIFNlcmlhbGl6ZU9wdGlvbnMgfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IGV4dGVuZHMgU2VyaWFsaXplT3B0aW9uczxUPiB7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIHZhbHVlczogVXBkYXRlYWJsZTxEYXRhYmFzZVtUXT47XG4gICAgbm9ybWFsaXplPzogYm9vbGVhbiB8ICgodmFsdWU6IGFueSkgPT4gYW55KTtcbiAgICB3aGVyZT86IChxYjogRXhwcmVzc2lvbkJ1aWxkZXI8RGF0YWJhc2UsIFQ+KSA9PiBFeHByZXNzaW9uV3JhcHBlcjxEYXRhYmFzZSwgVCwgYW55PjtcbiAgICBxdWVyeT86IChxYjogVXBkYXRlRnJvbTxUPikgPT4gVXBkYXRlRnJvbTxUPjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVwZGF0ZURlZmF1bHQ8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgVXBkYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxTZXJpYWxpemFibGVSZXN1bHQ8VCwgTz5bXT47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1cGRhdGVNeXNxbDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBVcGRhdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPltdPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVwZGF0ZTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBVcGRhdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPGltcG9ydChcImt5c2VseVwiKS5EcmFpbk91dGVyR2VuZXJpYzx7IFtLXzEgaW4gKERhdGFiYXNlW1RdIGV4dGVuZHMgaW5mZXIgVF8xID8geyBbSyBpbiBrZXlvZiBUXzFdOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0VHlwZTxUXzFbS10+IGV4dGVuZHMgaW5mZXIgVF8yID8gVF8yIGV4dGVuZHMgaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFR5cGU8VF8xW0tdPiA/IFRfMiBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBLIDogbmV2ZXIgOiBuZXZlcjsgfSA6IG5ldmVyKVtrZXlvZiBEYXRhYmFzZVtUXV1dOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0VHlwZTxEYXRhYmFzZVtUXVtLXzFdPjsgfT5bXT47XG4iLCJpbXBvcnQgdHlwZSB7IEV4cHJlc3Npb25XcmFwcGVyLCBFeHByZXNzaW9uQnVpbGRlciB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmltcG9ydCBkYiBmcm9tICcjc2VydmVyL2ZhY2FkZXMvZGF0YWJhc2UudHMnO1xudHlwZSBEZWxldGVGcm9tPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBSZXR1cm5UeXBlPHR5cGVvZiBkYi5kZWxldGVGcm9tPFQ+PjtcbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJveU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiB7XG4gICAgcXVlcnk/OiAocWI6IERlbGV0ZUZyb208VD4pID0+IERlbGV0ZUZyb208VD47XG4gICAgd2hlcmU/OiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPikgPT4gRXhwcmVzc2lvbldyYXBwZXI8RGF0YWJhc2UsIFQsIGFueT47XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBkZXN0cm95PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIERlc3Ryb3lPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPHZvaWQ+O1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uQnVpbGRlciwgRXhwcmVzc2lvbldyYXBwZXIsIEluc2VydGFibGUgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RGcm9tLCBTZXJpYWxpemFibGVSZXN1bHQsIFNlcmlhbGl6ZU9wdGlvbnMgfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3RPckNyZWF0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiBleHRlbmRzIFNlcmlhbGl6ZU9wdGlvbnM8VD4ge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBzZWxlY3Q/OiAocWI6IFNlbGVjdEZyb208VD4pID0+IFNlbGVjdEZyb208VD47XG4gICAgd2hlcmU/OiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPikgPT4gRXhwcmVzc2lvbldyYXBwZXI8RGF0YWJhc2UsIFQsIGFueT47XG4gICAgdmFsdWVzOiBJbnNlcnRhYmxlPERhdGFiYXNlW1RdPiB8IEluc2VydGFibGU8RGF0YWJhc2VbVF0+W107XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBmaXJzdE9yQ3JlYXRlPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIEZpcnN0T3JDcmVhdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPj47XG4iLCJpbXBvcnQgdHlwZSB7IEV4cHJlc3Npb25CdWlsZGVyLCBFeHByZXNzaW9uV3JhcHBlciB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdEZyb20sIFNlcmlhbGl6YWJsZVJlc3VsdCwgU2VyaWFsaXplT3B0aW9ucyB9IGZyb20gJy4vY29tbW9uLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuZXhwb3J0IGludGVyZmFjZSBGaW5kT25lT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IGV4dGVuZHMgU2VyaWFsaXplT3B0aW9uczxUPiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBxdWVyeT86IChxYjogU2VsZWN0RnJvbTxUPikgPT4gU2VsZWN0RnJvbTxUPjtcbiAgICB3aGVyZT86IChxYjogRXhwcmVzc2lvbkJ1aWxkZXI8RGF0YWJhc2UsIFQ+KSA9PiBFeHByZXNzaW9uV3JhcHBlcjxEYXRhYmFzZSwgVCwgYW55Pjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGZpbmRPbmU8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgRmluZE9uZU9wdGlvbnM8VD4+KHRhYmxlOiBULCBvcHRpb25zPzogTyk6IFByb21pc2U8U2VyaWFsaXphYmxlUmVzdWx0PFQsIE8+IHwgbnVsbD47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBmaW5kT25lT3JGYWlsPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIEZpbmRPbmVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPE5vbk51bGxhYmxlPEF3YWl0ZWQ8U2VyaWFsaXphYmxlUmVzdWx0PFQsIE8+Pj4+O1xuIiwiaW1wb3J0IHR5cGUgeyBVcGRhdGVPckNyZWF0ZU9wdGlvbnMgfSBmcm9tICcjc2VydmVyL3F1ZXJpZXMvdXBkYXRlT3JDcmVhdGUudHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbXBvcnQgdHlwZSB7IExpc3RPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL2xpc3QudHMnO1xuaW1wb3J0IHR5cGUgeyBQYWdpbmF0ZU9wdGlvbnMgfSBmcm9tICcjc2VydmVyL3F1ZXJpZXMvcGFnaW5hdGUudHMnO1xuaW1wb3J0IHR5cGUgeyBDb3VudE9wdGlvbnMgfSBmcm9tICcjc2VydmVyL3F1ZXJpZXMvY291bnQudHMnO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL2NyZWF0ZS50cyc7XG5pbXBvcnQgdHlwZSB7IFVwZGF0ZU9wdGlvbnMgfSBmcm9tICcjc2VydmVyL3F1ZXJpZXMvdXBkYXRlLnRzJztcbmltcG9ydCB0eXBlIHsgRGVzdHJveU9wdGlvbnMgfSBmcm9tICcjc2VydmVyL3F1ZXJpZXMvZGVzdHJveS50cyc7XG5pbXBvcnQgdHlwZSB7IEZpcnN0T3JDcmVhdGVPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL2ZpcnN0T3JDcmVhdGUudHMnO1xuaW1wb3J0IHR5cGUgeyBGaW5kT25lT3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvcXVlcmllcy9maW5kT25lLnRzJztcbmltcG9ydCB0eXBlIFBhZ2luYXRpb24gZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9QYWdpbmF0aW9uRW50aXR5LnRzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHMnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RRdWVyeUJ1aWxkZXIgfSBmcm9tICdreXNlbHknO1xuZXhwb3J0IHR5cGUgTW9kZWxMaXN0T3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gT21pdDxMaXN0T3B0aW9uczxUPiwgJ3NlcmlhbGl6ZSc+O1xuZXhwb3J0IHR5cGUgTW9kZWxGaW5kT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gT21pdDxGaW5kT25lT3B0aW9uczxUPiwgJ3NlcmlhbGl6ZScgfCAnb3JkZXJCeSc+O1xuZXhwb3J0IHR5cGUgTW9kZWxQYWdpbmF0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IE9taXQ8UGFnaW5hdGVPcHRpb25zPFQ+LCAnc2VyaWFsaXplJz47XG5leHBvcnQgdHlwZSBNb2RlbENvdW50T3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gQ291bnRPcHRpb25zPFQ+O1xuZXhwb3J0IHR5cGUgTW9kZWxDcmVhdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBPbWl0PENyZWF0ZU9wdGlvbnM8VD4sICdzZXJpYWxpemUnPjtcbmV4cG9ydCB0eXBlIE1vZGVsVXBkYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gT21pdDxVcGRhdGVPcHRpb25zPFQ+LCAnc2VyaWFsaXplJz47XG5leHBvcnQgdHlwZSBNb2RlbERlc3Ryb3lPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBEZXN0cm95T3B0aW9uczxUPjtcbmV4cG9ydCB0eXBlIE1vZGVsRmlyc3RPckNyZWF0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IE9taXQ8Rmlyc3RPckNyZWF0ZU9wdGlvbnM8VD4sICdzZXJpYWxpemUnPjtcbmV4cG9ydCB0eXBlIE1vZGVsVXBkYXRlT3JDcmVhdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBPbWl0PFVwZGF0ZU9yQ3JlYXRlT3B0aW9uczxUPiwgJ3NlcmlhbGl6ZSc+O1xuZXhwb3J0IHR5cGUgTW9kZWxFbnRpdHkgPSBSZXR1cm5UeXBlPFJldHVyblR5cGU8dHlwZW9mIE1vZGVsTWl4aW48YW55Pj4+O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTW9kZWxNaXhpbjxUYWJsZSBleHRlbmRzIGtleW9mIERhdGFiYXNlPih0YWJsZTogVGFibGUsIHByaW1hcnlLZXk/OiBrZXlvZiBEYXRhYmFzZVtUYWJsZV0pOiA8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oQmFzZTogVEJhc2UpID0+IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBzYXZlKCk6IFByb21pc2U8dm9pZD47XG4gICAgICAgIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgc29mdERlbGV0ZSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG4gICAgX19tb2RlbDoge1xuICAgICAgICB0YWJsZTogVGFibGU7XG4gICAgICAgIHByaW1hcnlLZXk6IGtleW9mIERhdGFiYXNlW1RhYmxlXTtcbiAgICB9O1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgcm93OiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIHNlbGVjdCgpOiBTZWxlY3RRdWVyeUJ1aWxkZXI8RGF0YWJhc2UsIFRhYmxlLCBhbnk+O1xuICAgIHBhZ2luYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogTW9kZWxQYWdpbmF0ZU9wdGlvbnM8VGFibGU+KTogUHJvbWlzZTxQYWdpbmF0aW9uPFQ+PjtcbiAgICBsaXN0PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogTW9kZWxMaXN0T3B0aW9uczxUYWJsZT4pOiBQcm9taXNlPFRbXT47XG4gICAgZmluZE9uZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IE1vZGVsRmluZE9wdGlvbnM8VGFibGU+KTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPjtcbiAgICBmaW5kT25lT3JGYWlsPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogTW9kZWxGaW5kT3B0aW9uczxUYWJsZT4pOiBQcm9taXNlPFQ+O1xuICAgIGZpbmQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPFQgfCBudWxsPjtcbiAgICBmaW5kT3JGYWlsPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55KTogUHJvbWlzZTxUPjtcbiAgICBmaW5kQnk8VD4odGhpczogbmV3ICgpID0+IFQsIGNvbHVtbjoga2V5b2YgRGF0YWJhc2VbVGFibGVdLCB2YWx1ZTogYW55KTogUHJvbWlzZTxUPjtcbiAgICBmaW5kQnlPckZhaWw8VD4odGhpczogbmV3ICgpID0+IFQsIGNvbHVtbjoga2V5b2YgRGF0YWJhc2VbVGFibGVdLCB2YWx1ZTogYW55KTogUHJvbWlzZTxUPjtcbiAgICBleGlzdHM8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBNb2RlbExpc3RPcHRpb25zPFRhYmxlPik6IFByb21pc2U8Ym9vbGVhbj47XG4gICAgY291bnQ8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBNb2RlbENvdW50T3B0aW9uczxUYWJsZT4pOiBQcm9taXNlPG51bWJlcj47XG4gICAgY3JlYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBwYXlsb2FkOiBNb2RlbENyZWF0ZU9wdGlvbnM8VGFibGU+W1widmFsdWVzXCJdKTogUHJvbWlzZTxUPjtcbiAgICBjcmVhdGVNYW55PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCB2YWx1ZXM6IEFycmF5PE1vZGVsQ3JlYXRlT3B0aW9uczxUYWJsZT5bXCJ2YWx1ZXNcIl0+KTogUHJvbWlzZTxUW10+O1xuICAgIHVwZGF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbzogTW9kZWxVcGRhdGVPcHRpb25zPFRhYmxlPik6IFByb21pc2U8VD47XG4gICAgdXBkYXRlQnlJZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSwgdmFsdWVzOiBNb2RlbFVwZGF0ZU9wdGlvbnM8VGFibGU+W1widmFsdWVzXCJdLCBvcHRpb25zPzoge1xuICAgICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgfSk6IFByb21pc2U8VD47XG4gICAgZGVzdHJveTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IE1vZGVsRGVzdHJveU9wdGlvbnM8VGFibGU+KTogUHJvbWlzZTx2b2lkPjtcbiAgICBmaXJzdE9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvOiBNb2RlbEZpcnN0T3JDcmVhdGVPcHRpb25zPFRhYmxlPik6IFQ7XG4gICAgdXBkYXRlT3JDcmVhdGU8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgbzogTW9kZWxVcGRhdGVPckNyZWF0ZU9wdGlvbnM8VGFibGU+KTogVDtcbiAgICBkZXN0cm95QnlJZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSk6IFByb21pc2U8dm9pZD47XG59ICYgVEJhc2U7XG4iLCJpbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbmludGVyZmFjZSBSZWxhdGlvbiB7XG4gICAgbG9hZChlbnRpdGllczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVsYXRpb248UiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPj4ocmVsYXRpb25zOiBSKTogPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KEJhc2U6IFRCYXNlKSA9PiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHt9O1xuICAgIGxvYWQ8VD4odGhpczogbmV3ICgpID0+IFQsIGVudGl0aWVzOiBUIHwgVFtdLCBuYW1lczoga2V5b2YgUiB8IChrZXlvZiBSKVtdKTogUHJvbWlzZTx2b2lkPjtcbn0gJiBUQmFzZTtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCBDb25maWdTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvQ29uZmlnU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGNvbmZpZzogQ29uZmlnU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGNvbmZpZztcbiIsImltcG9ydCBDb250YWluZXJTZXJ2aWNlIGZyb20gXCIjc2hhcmVkL3NlcnZpY2VzL0NvbnRhaW5lclNlcnZpY2UudHNcIjtcbmRlY2xhcmUgY29uc3QgX2RlZmF1bHQ6IENvbnRhaW5lclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBfZGVmYXVsdDtcbiIsImltcG9ydCBEb3dubG9hZFNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9Eb3dubG9hZFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBkb3dubG9hZDogRG93bmxvYWRTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgZG93bmxvYWQ7XG4iLCJpbXBvcnQgRHJpdmVTZXJ2aWNlIGZyb20gJyNzZXJ2ZXIvc2VydmljZXMvRHJpdmVTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgZHJpdmU6IERyaXZlU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGRyaXZlO1xuIiwiaW1wb3J0IHsgRW1taXR0ZXJTZXJ2aWNlIH0gZnJvbSAnI3NoYXJlZC9pbmRleC50cyc7XG5kZWNsYXJlIGNvbnN0IGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5leHBvcnQgZGVmYXVsdCBlbW1pdHRlcjtcbiIsImltcG9ydCBFbmNyeXB0U2VydmljZSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL0VuY3J5cHRTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgZW5jcnlwdDogRW5jcnlwdFNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBlbmNyeXB0O1xuIiwiaW1wb3J0IEZpbGVSZXBvc2l0b3J5IGZyb20gXCIjc2VydmVyL3JlcG9zaXRvcmllcy9GaWxlUmVwb3NpdG9yeS50c1wiO1xuZGVjbGFyZSBjb25zdCBmaWxlUmVwb3NpdG9yeTogRmlsZVJlcG9zaXRvcnk7XG5leHBvcnQgZGVmYXVsdCBmaWxlUmVwb3NpdG9yeTtcbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiIsImltcG9ydCBNaWdyYXRvclNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9NaWdyYXRvclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBtaWdyYXRvcjogTWlncmF0b3JTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgbWlncmF0b3I7XG4iLCJpbXBvcnQgUGVybWlzc2lvbkFzc2lnbm1lbnRSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL1Blcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeS50cyc7XG5kZWNsYXJlIGNvbnN0IHBlcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeTogUGVybWlzc2lvbkFzc2lnbm1lbnRSZXBvc2l0b3J5O1xuZXhwb3J0IGRlZmF1bHQgcGVybWlzc2lvbkFzc2lnbm1lbnRSZXBvc2l0b3J5O1xuIiwiaW1wb3J0IFBlcm1pc3Npb25SZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL1Blcm1pc3Npb25SZXBvc2l0b3J5LnRzJztcbmRlY2xhcmUgY29uc3QgcGVybWlzc2lvblJlcG9zaXRvcnk6IFBlcm1pc3Npb25SZXBvc2l0b3J5O1xuZXhwb3J0IGRlZmF1bHQgcGVybWlzc2lvblJlcG9zaXRvcnk7XG4iLCJpbXBvcnQgdHlwZSB7IEh0dHBDb250ZXh0IH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvSHR0cENvbnRleHRDb250cmFjdC50cyc7XG5pbXBvcnQgUm91dGVyU2VydmljZSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCByb3V0ZXI6IFJvdXRlclNlcnZpY2U8SHR0cENvbnRleHQ+O1xuZXhwb3J0IGRlZmF1bHQgcm91dGVyO1xuIiwiaW1wb3J0IFNjaGVkdWxlclNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9TY2hlZHVsZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3Qgc2NoZWR1bGVyOiBTY2hlZHVsZXJTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgc2NoZWR1bGVyO1xuIiwiaW1wb3J0IFNoZWxsU2VydmljZSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL1NoZWxsU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IHNoZWxsOiBTaGVsbFNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBzaGVsbDtcbiIsImltcG9ydCBUb2tlblJlcG9zaXRvcnkgZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvVG9rZW5SZXBvc2l0b3J5LnRzJztcbmRlY2xhcmUgY29uc3QgdG9rZW5SZXBvc2l0b3J5OiBUb2tlblJlcG9zaXRvcnk7XG5leHBvcnQgZGVmYXVsdCB0b2tlblJlcG9zaXRvcnk7XG4iLCJpbXBvcnQgVXNlclJlcG9zaXRvcnkgZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvVXNlclJlcG9zaXRvcnkudHMnO1xuZGVjbGFyZSBjb25zdCB1c2VyUmVwb3NpdG9yeTogVXNlclJlcG9zaXRvcnk7XG5leHBvcnQgZGVmYXVsdCB1c2VyUmVwb3NpdG9yeTtcbiIsImltcG9ydCB0eXBlIHsgS3lzZWx5IH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCB9IGZyb20gJy4vRGF0YWJhc2VDb250cmFjdCc7XG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlS3lzZWx5IGV4dGVuZHMgS3lzZWx5PERhdGFiYXNlQ29udHJhY3Q+IHtcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgbG9hZChlbnRpdGllczogVFtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyUmVjb3JkPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgW2tleTogc3RyaW5nXTogTG9hZGVyPFQ+O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZGVmaW5lTG9hZGVyPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+Pihsb2FkZXI6IExvYWRlcjxUPik6IExvYWRlcjxUPjtcbiIsInR5cGUgS2V5T3JGdW5jdGlvbjxUPiA9IGtleW9mIFQgfCAoKGVudGl0eTogVCkgPT4gYW55KTtcbmV4cG9ydCBpbnRlcmZhY2UgSGFzTWFueVRocm91Z2hMb2FkZXJPcHRpb25zPFRFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFBpdm90RW50aXR5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRUYXJnZXRFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHBpdm90OiB7XG4gICAgICAgIHNvdXJjZUtleTogS2V5T3JGdW5jdGlvbjxURW50aXR5PjtcbiAgICAgICAgdGFyZ2V0S2V5OiBLZXlPckZ1bmN0aW9uPFRQaXZvdEVudGl0eT47XG4gICAgICAgIGZpbmRFbnRpdGllcyhpZHM6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPFRQaXZvdEVudGl0eVtdPjtcbiAgICB9O1xuICAgIHRhcmdldDoge1xuICAgICAgICBzb3VyY2VLZXk6IEtleU9yRnVuY3Rpb248VFBpdm90RW50aXR5PjtcbiAgICAgICAgdGFyZ2V0S2V5OiBLZXlPckZ1bmN0aW9uPFRUYXJnZXRFbnRpdHk+O1xuICAgICAgICBmaW5kRW50aXRpZXMoaWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTxUVGFyZ2V0RW50aXR5W10+O1xuICAgIH07XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBsb2FkSGFzTWFueVRocm91Z2g8VEVudGl0eSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBUUGl2b3RFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFRhcmdldEVudGl0eSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihwYXlsb2FkOiBhbnkgfCBhbnlbXSwgb3B0aW9uczogSGFzTWFueVRocm91Z2hMb2FkZXJPcHRpb25zPFRFbnRpdHksIFRQaXZvdEVudGl0eSwgVFRhcmdldEVudGl0eT4pOiBQcm9taXNlPHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlSGFzTWFueVRocm91Z2hMb2FkZXI8VEVudGl0eSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBUUGl2b3RFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFRhcmdldEVudGl0eSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zOiBIYXNNYW55VGhyb3VnaExvYWRlck9wdGlvbnM8VEVudGl0eSwgVFBpdm90RW50aXR5LCBUVGFyZ2V0RW50aXR5Pik6IGltcG9ydChcIiNzZXJ2ZXIvdXRpbHMvZGVmaW5lTG9hZGVyLnRzXCIpLkxvYWRlcjxURW50aXR5PjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRHJpdmVDb25maWdFbnRpdHkudHMnO1xuZGVjbGFyZSBjb25zdCBEcml2ZUNvbmZpZ19iYXNlOiB0eXBlb2YgQmFzZSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge307XG4gICAgX19pc0NvbmZpZ01vZGVsOiBib29sZWFuO1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCByb3c6IGFueSk6IFByb21pc2U8VD47XG4gICAgbGlzdDxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogUHJvbWlzZTxUW10+O1xuICAgIGZpbmQ8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+O1xuICAgIGZpbmRPckZhaWw8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8VD47XG4gICAgY3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGl0ZW06IFQgJiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8dm9pZD47XG4gICAgdXBkYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGlkOiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVwZGF0ZU9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlc3Ryb3k8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJpdmVDb25maWcgZXh0ZW5kcyBEcml2ZUNvbmZpZ19iYXNlIHtcbiAgICBzdGF0aWMgc2VyaWFsaXplPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIHJvdzogYW55KTogUHJvbWlzZTxUPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRmlsZUVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IERyaXZlVXJsT3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RyaXZlQ29udHJhY3QudHMnO1xuaW50ZXJmYWNlIFVSTENhY2hlIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBleHBpcmVzOiBudW1iZXI7XG59XG5kZWNsYXJlIGNvbnN0IEZpbGVfYmFzZTogdHlwZW9mIEJhc2UgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbGlzdGVuZXJzOiBpbXBvcnQoXCIjc2hhcmVkL21peGlucy9Ib29rc01peGluLnRzXCIpLkxpc3RlbmVyW107XG4gICAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xuICAgICAgICBlbWl0QXN5bmMoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIHNhdmUoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICBzb2Z0RGVsZXRlKCk6IFByb21pc2U8dm9pZD47XG4gICAgfTtcbiAgICBfX21vZGVsOiB7XG4gICAgICAgIHRhYmxlOiBcImZpbGVzXCI7XG4gICAgICAgIHByaW1hcnlLZXk6IGtleW9mIGltcG9ydChcIi4uL2luZGV4LnRzXCIpLkZpbGVUYWJsZTtcbiAgICB9O1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgcm93OiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIHNlbGVjdCgpOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0UXVlcnlCdWlsZGVyPGltcG9ydChcIi4uL2luZGV4LnRzXCIpLkRhdGFiYXNlQ29udHJhY3QsIFwiZmlsZXNcIiwgYW55PjtcbiAgICBwYWdpbmF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxQYWdpbmF0ZU9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8aW1wb3J0KFwiLi4vLi4vc2hhcmVkL2luZGV4LnRzXCIpLlBhZ2luYXRpb25FbnRpdHk8VD4+O1xuICAgIGxpc3Q8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsTGlzdE9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFtdPjtcbiAgICBmaW5kT25lPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbEZpbmRPcHRpb25zPFwiZmlsZXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAgIGZpbmRPbmVPckZhaWw8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRmluZE9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8VD47XG4gICAgZmluZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSk6IFByb21pc2U8VCB8IG51bGw+O1xuICAgIGZpbmRPckZhaWw8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGZpbmRCeTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgY29sdW1uOiBrZXlvZiBpbXBvcnQoXCIuLi9pbmRleC50c1wiKS5GaWxlVGFibGUsIHZhbHVlOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGZpbmRCeU9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgY29sdW1uOiBrZXlvZiBpbXBvcnQoXCIuLi9pbmRleC50c1wiKS5GaWxlVGFibGUsIHZhbHVlOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGV4aXN0czxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxMaXN0T3B0aW9uczxcImZpbGVzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICBjb3VudDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxDb3VudE9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8bnVtYmVyPjtcbiAgICBjcmVhdGU8VD4odGhpczogbmV3ICgpID0+IFQsIHBheWxvYWQ6IG9iamVjdCAmIHtcbiAgICAgICAgZHJpdmU6IHN0cmluZztcbiAgICAgICAgbWltZXR5cGU6IHN0cmluZztcbiAgICAgICAgY2xpZW50X25hbWU6IHN0cmluZztcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICBwdWJsaWM6IGJvb2xlYW47XG4gICAgfSAmIHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIH0pOiBQcm9taXNlPFQ+O1xuICAgIGNyZWF0ZU1hbnk8VD4odGhpczogbmV3ICgpID0+IFQsIHZhbHVlczogKG9iamVjdCAmIHtcbiAgICAgICAgZHJpdmU6IHN0cmluZztcbiAgICAgICAgbWltZXR5cGU6IHN0cmluZztcbiAgICAgICAgY2xpZW50X25hbWU6IHN0cmluZztcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICBwdWJsaWM6IGJvb2xlYW47XG4gICAgfSAmIHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIH0pW10pOiBQcm9taXNlPFRbXT47XG4gICAgdXBkYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvOiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsVXBkYXRlT3B0aW9uczxcImZpbGVzXCI+KTogUHJvbWlzZTxUPjtcbiAgICB1cGRhdGVCeUlkPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55LCB2YWx1ZXM6IHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICBkcml2ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbWltZXR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNsaWVudF9uYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBmaWxlbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcHVycG9zZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcHVibGljPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICB9LCBvcHRpb25zPzoge1xuICAgICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgfSB8IHVuZGVmaW5lZCk6IFByb21pc2U8VD47XG4gICAgZGVzdHJveTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxEZXN0cm95T3B0aW9uczxcImZpbGVzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPjtcbiAgICBmaXJzdE9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvOiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRmlyc3RPckNyZWF0ZU9wdGlvbnM8XCJmaWxlc1wiPik6IFQ7XG4gICAgdXBkYXRlT3JDcmVhdGU8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgbzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbFVwZGF0ZU9yQ3JlYXRlT3B0aW9uczxcImZpbGVzXCI+KTogVDtcbiAgICBkZXN0cm95QnlJZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSk6IFByb21pc2U8dm9pZD47XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7fTtcbiAgICBsb2FkPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBlbnRpdGllczogVCB8IFRbXSwgbmFtZXM6IFwibWV0YXNcIiB8IFwibWV0YXNcIltdKTogUHJvbWlzZTx2b2lkPjtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZ2V0PFQgPSBhbnk+KG5hbWU6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD47XG4gICAgICAgIGdldDxUID0gYW55PihuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCk6IFByb21pc2U8VD47XG4gICAgICAgIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZSBleHRlbmRzIEZpbGVfYmFzZSB7XG4gICAgc3RhdGljIGNhY2hlOiBNYXA8c3RyaW5nLCBVUkxDYWNoZT47XG4gICAgc3RhdGljIGhhcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICBzdGF0aWMgZmluZEJ5RmlsZW5hbWUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZSB8IHVuZGVmaW5lZD47XG4gICAgcmVhZFN0cmVhbSgpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT47XG4gICAgcmVhZCgpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPj47XG4gICAgbG9hZFVybChvcHRpb25zPzogRHJpdmVVcmxPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzdGF0aWMgbG9hZFVybHMoaXRlbXM6IEZpbGVbXSwgb3B0aW9ucz86IERyaXZlVXJsT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgc3RhdGljIGxvYWRNZXRhcyhpdGVtczogRmlsZVtdKTogUHJvbWlzZTx2b2lkPjtcbiAgICBkZWxldGVGcm9tRHJpdmUoKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlTWV0YSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0ZpbGVNZXRhRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgRmlsZU1ldGFfYmFzZTogdHlwZW9mIEJhc2VNZXRhICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIHNhdmUoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICBzb2Z0RGVsZXRlKCk6IFByb21pc2U8dm9pZD47XG4gICAgfTtcbiAgICBfX21vZGVsOiB7XG4gICAgICAgIHRhYmxlOiBcImZpbGVfbWV0YXNcIjtcbiAgICAgICAgcHJpbWFyeUtleToga2V5b2YgaW1wb3J0KFwiLi5cIikuRmlsZU1ldGFUYWJsZTtcbiAgICB9O1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgcm93OiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIHNlbGVjdCgpOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0UXVlcnlCdWlsZGVyPGltcG9ydChcIi4uXCIpLkRhdGFiYXNlQ29udHJhY3QsIFwiZmlsZV9tZXRhc1wiLCBhbnk+O1xuICAgIHBhZ2luYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbFBhZ2luYXRlT3B0aW9uczxcImZpbGVfbWV0YXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPGltcG9ydChcIi4uLy4uL3NoYXJlZFwiKS5QYWdpbmF0aW9uRW50aXR5PFQ+PjtcbiAgICBsaXN0PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbExpc3RPcHRpb25zPFwiZmlsZV9tZXRhc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFtdPjtcbiAgICBmaW5kT25lPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbEZpbmRPcHRpb25zPFwiZmlsZV9tZXRhc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD47XG4gICAgZmluZE9uZU9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxGaW5kT3B0aW9uczxcImZpbGVfbWV0YXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPFQ+O1xuICAgIGZpbmQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPFQgfCBudWxsPjtcbiAgICBmaW5kT3JGYWlsPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55KTogUHJvbWlzZTxUPjtcbiAgICBmaW5kQnk8VD4odGhpczogbmV3ICgpID0+IFQsIGNvbHVtbjoga2V5b2YgaW1wb3J0KFwiLi5cIikuRmlsZU1ldGFUYWJsZSwgdmFsdWU6IGFueSk6IFByb21pc2U8VD47XG4gICAgZmluZEJ5T3JGYWlsPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBjb2x1bW46IGtleW9mIGltcG9ydChcIi4uXCIpLkZpbGVNZXRhVGFibGUsIHZhbHVlOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGV4aXN0czxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxMaXN0T3B0aW9uczxcImZpbGVfbWV0YXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIGNvdW50PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbENvdW50T3B0aW9uczxcImZpbGVfbWV0YXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPG51bWJlcj47XG4gICAgY3JlYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBwYXlsb2FkOiBvYmplY3QgJiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgZmlsZV9pZDogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICAgIGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICB2YWx1ZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIH0pOiBQcm9taXNlPFQ+O1xuICAgIGNyZWF0ZU1hbnk8VD4odGhpczogbmV3ICgpID0+IFQsIHZhbHVlczogKG9iamVjdCAmIHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBmaWxlX2lkOiBudW1iZXI7XG4gICAgfSAmIHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIHZhbHVlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgY3JlYXRlZF9hdD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdXBkYXRlZF9hdD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZGVsZXRlZF9hdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgfSlbXSk6IFByb21pc2U8VFtdPjtcbiAgICB1cGRhdGU8VD4odGhpczogbmV3ICgpID0+IFQsIG86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxVcGRhdGVPcHRpb25zPFwiZmlsZV9tZXRhc1wiPik6IFByb21pc2U8VD47XG4gICAgdXBkYXRlQnlJZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSwgdmFsdWVzOiB7XG4gICAgICAgIGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICB2YWx1ZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZpbGVfaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBudWxsIHwgdW5kZWZpbmVkO1xuICAgIH0sIG9wdGlvbnM/OiB7XG4gICAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICB9IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxUPjtcbiAgICBkZXN0cm95PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbERlc3Ryb3lPcHRpb25zPFwiZmlsZV9tZXRhc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD47XG4gICAgZmlyc3RPckNyZWF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbEZpcnN0T3JDcmVhdGVPcHRpb25zPFwiZmlsZV9tZXRhc1wiPik6IFQ7XG4gICAgdXBkYXRlT3JDcmVhdGU8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgbzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbFVwZGF0ZU9yQ3JlYXRlT3B0aW9uczxcImZpbGVfbWV0YXNcIj4pOiBUO1xuICAgIGRlc3Ryb3lCeUlkPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55KTogUHJvbWlzZTx2b2lkPjtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlTWV0YSBleHRlbmRzIEZpbGVNZXRhX2Jhc2Uge1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgR2l0R2F0ZXdheSB9IGZyb20gJyNzZXJ2ZXIvZ2F0ZXdheXMvR2l0R2F0ZXdheS50cyc7XG5pbXBvcnQgQmFzZSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL01vZHVsZUVudGl0eS50cyc7XG5pbXBvcnQgc2hlbGwgZnJvbSAnI3NlcnZlci9mYWNhZGVzL3NoZWxsLnRzJztcbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xuICAgIGdldCBnaXQoKTogR2l0R2F0ZXdheTtcbiAgICBtYWtlUGF0aCguLi5wYXJ0czogc3RyaW5nW10pOiBzdHJpbmc7XG4gICAgc3RhdGljUGF0aCguLi5wYXJ0czogc3RyaW5nW10pOiBzdHJpbmc7XG4gICAgY29tbWFuZDogdHlwZW9mIHNoZWxsLmNvbW1hbmQ7XG4gICAgbG9hZCgpOiB2b2lkO1xuICAgIGZpbmRDbGllbnRFbnRyeXBvaW50RmlsZW5hbWUoY29udGV4dD86ICdkZXYnIHwgJ25vZGUnIHwgJ2Jyb3dzZXInKTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBjb25maWcgZnJvbSAnI3NlcnZlci9mYWNhZGVzL2NvbmZpZy50cyc7XG5pbXBvcnQgeyBHaXRHYXRld2F5IH0gZnJvbSAnI3NlcnZlci9nYXRld2F5cy9HaXRHYXRld2F5LnRzJztcbmltcG9ydCBHaXRCcmFuY2hSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0dpdEJyYW5jaFJlcG9zaXRvcnkudHMnO1xuaW1wb3J0IEdpdENvbW1pdFJlcG9zaXRvcnkgZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvR2l0Q29tbWl0UmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgQmFzZSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL1BsdWdpbkVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IFBsdWdpbkVudHJ5RW50aXR5X2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luRW50cnlFbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRyeUVudGl0eV9iYXNlIHtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgICBtYWtlUGF0aCguLi5wYXJ0czogc3RyaW5nW10pOiBzdHJpbmc7XG4gICAgc2V0OiB0eXBlb2YgY29uZmlnLnNldDtcbiAgICBnZXQ6IHR5cGVvZiBjb25maWcuZ2V0O1xuICAgIGdldCBnaXQoKTogR2l0R2F0ZXdheTtcbiAgICBnZXQgY29tbWl0cygpOiBHaXRDb21taXRSZXBvc2l0b3J5O1xuICAgIGdldCBicmFuY2hlcygpOiBHaXRCcmFuY2hSZXBvc2l0b3J5O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IFBsdWdpbkVudHJ5RW50aXR5IGZyb20gJy4vUGx1Z2luRW50cnlFbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZXJFdmVudHMgfSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHMnO1xuaW50ZXJmYWNlIEFkZEFwaUZvbGRlck9wdGlvbnMge1xuICAgIHByZWZpeD86IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkVudGl0eSBleHRlbmRzIFBsdWdpbkVudHJ5RW50aXR5IHtcbiAgICBhcGlGb2xkZXJzOiBNYXA8c3RyaW5nLCBBZGRBcGlGb2xkZXJPcHRpb25zPjtcbiAgICBhcGlEaXJlY3RvcmllczogU2V0PHN0cmluZz47XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBzdGF0aWNQYXRoKC4uLnBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZztcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgb25Sb3V0ZXJSZWdpc3RlcmVkKGN0eDogUm91dGVyRXZlbnRzWydyb3V0ZXI6cmVnaXN0ZXJlZCddKTogUHJvbWlzZTx2b2lkPjtcbiAgICBhZGRBcGlGb2xkZXIoZGlyZWN0b3J5OiBzdHJpbmcsIG9wdGlvbnM/OiBBZGRBcGlGb2xkZXJPcHRpb25zKTogdm9pZDtcbiAgICBhZGRSb3V0ZXJGb2xkZXIoZGlyZWN0b3J5OiBzdHJpbmcpOiB2b2lkO1xuICAgIHN0YXRpYyBmcm9tUGx1Z2luRGlzY292ZXJFbnRpdHk8VD4odGhpczogbmV3ICgpID0+IFQsIGVudGl0eTogUGx1Z2luRW50cnlFbnRpdHkpOiBUO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXN0T3B0aW9ucyB9IGZyb20gJy4vbGlzdC50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGV4aXN0czxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBMaXN0T3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxib29sZWFuPjtcbiIsImRlY2xhcmUgbW9kdWxlICdreXNlbHknIHtcbiAgICBpbnRlcmZhY2UgQ3JlYXRlVGFibGVCdWlsZGVyPFRCIGV4dGVuZHMgc3RyaW5nLCBDIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+IHtcbiAgICAgICAgYWRkSWRDb2x1bW48Q04gZXh0ZW5kcyBzdHJpbmcgPSAnaWQnPihjb2w/OiBDTik6IENyZWF0ZVRhYmxlQnVpbGRlcjxUQiwgQyB8IENOPjtcbiAgICB9XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBDcmVhdGVUYWJsZUJ1aWxkZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBDb2x1bW5UeXBlLCBFeHByZXNzaW9uQnVpbGRlciB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGFibGUgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHsgbm93IH0gZnJvbSAnLi9jb21tb24udHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbXBvcnQgZGIgZnJvbSAnI3NlcnZlci9mYWNhZGVzL2RhdGFiYXNlLnRzJztcbnR5cGUgV2hlcmVDYXBhYmxlPFFCPiA9IHtcbiAgICB3aGVyZTogKC4uLmFyZ3M6IGFueVtdKSA9PiBRQjtcbn07XG50eXBlIFVwZGF0ZUZyb208VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IFJldHVyblR5cGU8dHlwZW9mIGRiLnVwZGF0ZVRhYmxlPFQ+PjtcbmV4cG9ydCBpbnRlcmZhY2UgU29mdERlbGV0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiB7XG4gICAgc2VyaWFsaXplPzogKHJvdzogU2VsZWN0YWJsZTxEYXRhYmFzZVtUXT4pID0+IGFueTtcbiAgICBxdWVyeTogKHFiOiBVcGRhdGVGcm9tPFQ+KSA9PiBVcGRhdGVGcm9tPFQ+O1xufVxuZXhwb3J0IHR5cGUgU29mdERlbGV0ZVJlc3VsdDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBTb2Z0RGVsZXRlT3B0aW9uczxUPiB8IHVuZGVmaW5lZD4gPSBPIGV4dGVuZHMgdW5kZWZpbmVkID8gU2VsZWN0YWJsZTxEYXRhYmFzZVtUXT5bXSA6IE8gZXh0ZW5kcyB7XG4gICAgc2VyaWFsaXplOiAocm93OiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPikgPT4gaW5mZXIgUjtcbn0gPyBSW10gOiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPltdO1xuZXhwb3J0IGludGVyZmFjZSBTb2Z0RGVsZXRlVGFibGUge1xuICAgIGRlbGV0ZWRfYXQ6IENvbHVtblR5cGU8RGF0ZSB8IG51bGwsIG5ldmVyIHwgbnVsbCB8IFJldHVyblR5cGU8dHlwZW9mIG5vdz4sIHN0cmluZyB8IG51bGwgfCBSZXR1cm5UeXBlPHR5cGVvZiBub3c+Pjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHdoZXJlTm90RGVsZXRlZDxRQiBleHRlbmRzIFdoZXJlQ2FwYWJsZTxRQj4+KHFiOiBRQik6IFFCO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdW5kZWxldGVkKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pOiBpbXBvcnQoXCJreXNlbHlcIikuRXhwcmVzc2lvbldyYXBwZXI8YW55LCBhbnksIGltcG9ydChcImt5c2VseVwiKS5TcWxCb29sPjtcbmV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSB1bmRlbGV0ZWQge1xuICAgIHZhciBjb2x1bW46IChjb2w6IHN0cmluZykgPT4gKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IGltcG9ydChcImt5c2VseVwiKS5FeHByZXNzaW9uV3JhcHBlcjxhbnksIGFueSwgaW1wb3J0KFwia3lzZWx5XCIpLlNxbEJvb2w+O1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgZGVsZXRlZDogKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IGltcG9ydChcImt5c2VseVwiKS5FeHByZXNzaW9uV3JhcHBlcjxhbnksIGFueSwgaW1wb3J0KFwia3lzZWx5XCIpLlNxbEJvb2w+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgYWRkU29mdERlbGV0ZUNvbHVtbjogKGN0YjogQ3JlYXRlVGFibGVCdWlsZGVyPGFueSwgYW55PikgPT4gQ3JlYXRlVGFibGVCdWlsZGVyPGFueSwgYW55PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHNvZnREZWxldGU8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgU29mdERlbGV0ZU9wdGlvbnM8VD4+KHRhYmxlOiBULCBvcHRpb25zPzogTyk6IFByb21pc2U8U29mdERlbGV0ZVJlc3VsdDxULCBPPj47XG5kZWNsYXJlIG1vZHVsZSAna3lzZWx5JyB7XG4gICAgaW50ZXJmYWNlIENyZWF0ZVRhYmxlQnVpbGRlcjxUQiBleHRlbmRzIHN0cmluZywgQyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPiB7XG4gICAgICAgIGFkZFNvZnREZWxldGVDb2x1bW4oKTogQ3JlYXRlVGFibGVCdWlsZGVyPFRCLCBDIHwgJ2RlbGV0ZWRfYXQnPjtcbiAgICB9XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBDcmVhdGVUYWJsZUJ1aWxkZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBDb2x1bW5UeXBlIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB7IG5vdyB9IGZyb20gJy4vY29tbW9uLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgVGltZXN0YW1wVGFibGUge1xuICAgIGNyZWF0ZWRfYXQ6IENvbHVtblR5cGU8RGF0ZSwgc3RyaW5nIHwgdW5kZWZpbmVkLCBuZXZlcj47XG4gICAgdXBkYXRlZF9hdDogQ29sdW1uVHlwZTxEYXRlLCBzdHJpbmcgfCB1bmRlZmluZWQsIERhdGUgfCBzdHJpbmcgfCBSZXR1cm5UeXBlPHR5cGVvZiBub3c+Pjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGFkZENyZWF0ZWRDb2x1bW46IChjdGI6IENyZWF0ZVRhYmxlQnVpbGRlcjxhbnksIGFueT4pID0+IENyZWF0ZVRhYmxlQnVpbGRlcjxhbnksIGFueT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhZGRVcGRhdGVkQ29sdW1uOiAoY3RiOiBDcmVhdGVUYWJsZUJ1aWxkZXI8YW55LCBhbnk+KSA9PiBDcmVhdGVUYWJsZUJ1aWxkZXI8YW55LCBhbnk+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgYWRkVGltZXN0YW1wQ29sdW1uczogKGN0YjogQ3JlYXRlVGFibGVCdWlsZGVyPGFueSwgYW55PikgPT4gQ3JlYXRlVGFibGVCdWlsZGVyPGFueSwgYW55PjtcbmRlY2xhcmUgbW9kdWxlICdreXNlbHknIHtcbiAgICBpbnRlcmZhY2UgQ3JlYXRlVGFibGVCdWlsZGVyPFRCIGV4dGVuZHMgc3RyaW5nLCBDIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+IHtcbiAgICAgICAgYWRkVGltZXN0YW1wQ29sdW1ucygpOiBDcmVhdGVUYWJsZUJ1aWxkZXI8VEIsIEMgfCAnY3JlYXRlZF9hdCcgfCAndXBkYXRlZF9hdCc+O1xuICAgICAgICBhZGRDcmVhdGVkQ29sdW1uKCk6IENyZWF0ZVRhYmxlQnVpbGRlcjxUQiwgQyB8ICdjcmVhdGVkX2F0Jz47XG4gICAgICAgIGFkZFVwZGF0ZWRDb2x1bW4oKTogQ3JlYXRlVGFibGVCdWlsZGVyPFRCLCBDIHwgJ3VwZGF0ZWRfYXQnPjtcbiAgICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFRva2VuLCBVc2VyRW50aXR5IH0gZnJvbSAnQHNpZGVraWNrLWNvZGVyL3plbml0aC1raXQvc2hhcmVkJztcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL1JvdXRlckNvbnRyYWN0LnRzJztcbmV4cG9ydCB0eXBlIEF1dGhNaWRkbGV3YXJlQ29udGV4dCA9IHtcbiAgICB1c2VyOiBVc2VyRW50aXR5O1xuICAgIHRva2VuOiBUb2tlbjtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdXRoTWlkZGxld2FyZSBpbXBsZW1lbnRzIE1pZGRsZXdhcmUge1xuICAgIGhhbmRsZShjdHg6IGFueSk6IFByb21pc2U8QXV0aE1pZGRsZXdhcmVDb250ZXh0Pjtcbn1cbiIsImltcG9ydCB0eXBlIHsgVG9rZW4gfSBmcm9tICdAc2lkZWtpY2stY29kZXIvemVuaXRoLWtpdC9zaGFyZWQnO1xuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QudHMnO1xuaW1wb3J0IHR5cGUgVXNlciBmcm9tICcjc2hhcmVkL2VudGl0aWVzL1VzZXJFbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgeyBIdHRwQ29udGV4dCB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0h0dHBDb250ZXh0Q29udHJhY3QudHMnO1xuZXhwb3J0IHR5cGUgQXV0aFNpbGVuY2VNaWRkbGV3YXJlQ29udGV4dCA9IHtcbiAgICB1c2VyPzogVXNlcjtcbiAgICB0b2tlbj86IFRva2VuO1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGhTaWxlbmNlTWlkZGxld2FyZSBpbXBsZW1lbnRzIE1pZGRsZXdhcmUge1xuICAgIGhhbmRsZShjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTxBdXRoU2lsZW5jZU1pZGRsZXdhcmVDb250ZXh0Pjtcbn1cbiIsImltcG9ydCB0eXBlIHsgQXV0aFNpbGVuY2VNaWRkbGV3YXJlQ29udGV4dCB9IGZyb20gJy4vQXV0aFNpbGVuY2VNaWRkbGV3YXJlLnRzJztcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSwgTWlkZGxld2FyZUhhbmRsZVJlc3VsdCB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL1JvdXRlckNvbnRyYWN0LnRzJztcbmltcG9ydCBBY2wgZnJvbSAnI3NlcnZlci9lbnRpdGllcy9BY2xFbnRpdHkudHMnO1xuZXhwb3J0IHR5cGUgQXV0aG9yaXphdGlvbkNvbnRleHQgPSBNaWRkbGV3YXJlSGFuZGxlUmVzdWx0PFtBdXRob3JpemF0aW9uTWlkZGxld2FyZV0+O1xuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemVQZXJtaXNzaW9uUGF5bG9hZCB7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgcmVzb3VyY2U6IHN0cmluZztcbiAgICBjb25kaXRpb25zPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEF1dGhvcml6ZVBlcm1pc3Npb24gaW1wbGVtZW50cyBNaWRkbGV3YXJlIHtcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zO1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWQ6IEF1dGhvcml6ZVBlcm1pc3Npb25QYXlsb2FkIHwgQXV0aG9yaXplUGVybWlzc2lvblBheWxvYWRbXSk7XG4gICAgaGFuZGxlKGN0eDogQXV0aG9yaXphdGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aG9yaXphdGlvbk1pZGRsZXdhcmUgaW1wbGVtZW50cyBNaWRkbGV3YXJlIHtcbiAgICBoYW5kbGUoY3R4OiBBdXRoU2lsZW5jZU1pZGRsZXdhcmVDb250ZXh0KTogUHJvbWlzZTx7XG4gICAgICAgIGFjbDogQWNsO1xuICAgIH0+O1xuICAgIHN0YXRpYyBjcmVhdGUocGF5bG9hZDogQXV0aG9yaXplUGVybWlzc2lvblBheWxvYWQgfCBBdXRob3JpemVQZXJtaXNzaW9uUGF5bG9hZFtdKTogQXV0aG9yaXplUGVybWlzc2lvbjtcbn1cbiIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGJhc2VQYXRoKC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gc3RvcmFnZVBhdGgoLi4uYXJnczogc3RyaW5nW10pOiBzdHJpbmc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiByZWxhdGl2ZVRvQmFzZVBhdGgoLi4uYXJnczogc3RyaW5nW10pOiBzdHJpbmc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB0bXBQYXRoKC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nO1xuIiwiaW1wb3J0IHR5cGUgeyBMb2FkZXJSZWNvcmQgfSBmcm9tICcuL2RlZmluZUxvYWRlci50cyc7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVMb2FkZXJGYWN0b3J5PEUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PiwgUiBleHRlbmRzIExvYWRlclJlY29yZDxFPiA9IExvYWRlclJlY29yZDxFPj4obG9hZGVyczogUik6IHtcbiAgICBrZXlzOiAoa2V5b2YgUilbXTtcbiAgICBsb2FkZXJzOiBSO1xuICAgIGxvYWQ6IChlbnRpdGllczogRSB8IEVbXSwgbmFtZXM6IGtleW9mIFIgfCAoa2V5b2YgUilbXSkgPT4gUHJvbWlzZTx2b2lkPjtcbn07XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjdWlkKCk6IHN0cmluZztcbiIsImltcG9ydCB0eXBlIHsgSHR0cENvbnRleHQgfSBmcm9tIFwiI3NlcnZlci9jb250cmFjdHMvSHR0cENvbnRleHRDb250cmFjdC50c1wiO1xuZXhwb3J0IGludGVyZmFjZSBIYW5kbGVyIHtcbiAgICAoY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8YW55PiB8ICgoKSA9PiBhbnkpO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZGVmaW5lSGFuZGxlcihoYW5kbGVyOiBIYW5kbGVyKTogSGFuZGxlcjtcbiIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGdlbmVyYXRlSW5kZXhGaWxlKG9wdGlvbnM6IGFueSk6IHZvaWQ7XG4iLCJpbnRlcmZhY2UgT3B0aW9ucyB7XG4gICAgY2FjaGU/OiBib29sZWFuO1xuICAgIG9uQmVmb3JlSW1wb3J0PzogKGN0eDoge1xuICAgICAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIH0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIG9uQWZ0ZXJJbXBvcnQ/OiAoY3R4OiB7XG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgICAgIG1vZHVsZTogYW55O1xuICAgIH0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIG9uRXJyb3I/OiAoY3R4OiB7XG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgICAgIGVycm9yOiBFcnJvcjtcbiAgICB9KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBleGNsdWRlPzogc3RyaW5nW107XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBpbXBvcnRGaWxlcyhmaWxlczogc3RyaW5nW10sIG9wdGlvbnM/OiBPcHRpb25zKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGltcG9ydEdsb2IocGF0dGVybjogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBpbXBvcnRBbGwoZGlyZWN0b3J5OiBzdHJpbmcsIG9wdGlvbnM/OiBPcHRpb25zKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGltcG9ydE9uZShmaWxlbmFtZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFB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RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNMOUMsSUFBQSxnQkFBb0I7Q0FBQztPQUFBO0VBQUE7RUFBYztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNFbkMsSUFBVyxjQUFjO0NBQUM7RUFBSyxNQUFHLENBQUcsRUFBRTtDQUFFO0VBQUM7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LFFBQUEsY0FBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RkLElBQUEsYUFBZTtDQUFBO09BQU0sQ0FBQSxRQUFXLFdBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQ2hDLElBQUksa0JBQWtCO0NBQUM7RUFBRyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxhQUFVO0NBQUk7T0FBVyxDQUFDLFFBQVEsZ0JBQWdCO0NBQUU7RUFBQztFQUFHO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksa0JBQWM7Q0FBRztFQUFLLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGFBQVU7Q0FBQTtPQUFhLENBQUMsZ0JBQWM7Q0FBRTtFQUFDO0VBQUc7RUFBQTtFQUFTO0VBQUc7RUFBQTtDQUFBOzs7O0FDRjVELElBQUEsa0JBQXFCO0NBQUE7T0FBQSxDQUFBLGdCQUFnQjtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQXJDLElBQUEsa0JBQXFCO0NBQUE7T0FBQSxDQUFBLGdCQUFnQjtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQ3JDLElBQVUsNEJBQU07Q0FBQTtPQUFBLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDaEIsSUFBUyxzQkFBTTtDQUFBO09BQUEsQ0FBQSwwQkFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDZixJQUFJLHNCQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDekIsSUFBQSxpQkFBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RBLElBQUksb0JBQW9CO0NBQUM7T0FBQSxFQUFBO0NBQUEsQ0FBQSxJQUFBLEdBQUE7Q0FBQTtBQUN6QixJQUFJLGdCQUFjO0NBQUM7RUFBRyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3RCLElBQUEsV0FBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNMQSxJQUFBLG1CQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQXFCO0VBQUE7RUFBcUI7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0MvRCxJQUFJLG9CQUFvQjtDQUFDO0VBQUMsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxpQkFBZTtDQUFDO09BQVUsQ0FBQSxrQkFBa0I7Q0FBQTtFQUFBO0VBQVM7RUFBRztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksWUFBWTtDQUFDO0VBQUssTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksT0FBSTtDQUFBO09BQVksQ0FBQSxVQUFVO0NBQU07RUFBQztFQUFFO0VBQU07RUFBRztFQUFBO0NBQUE7Ozs7QUNDaEQsSUFBSSxrQkFBa0I7Q0FBQztFQUFHLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGVBQVU7Q0FBSTtPQUFXO0VBQUM7RUFBTTtFQUFZO0VBQU07RUFBTTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQzVELElBQU8sWUFBVTtDQUFBO09BQVUsQ0FBQSxXQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzNCLElBQVMsYUFBYTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN0QixJQUFJLGFBQVM7Q0FBQTtPQUFVO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNOdkIsSUFBQSxvQkFBcUI7Q0FBQTtPQUFBO0VBQUE7RUFBa0I7RUFBUTtFQUFXO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0MxRCxJQUFBLG9CQUFxQjtDQUFBO09BQUE7RUFBQSxHQUFpQjtFQUFDO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBdkMsSUFBTyx5QkFBVTtDQUFBO09BQXVCLENBQUEsY0FBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDeEMsSUFBSSxrQkFBa0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGdEIsSUFBVyxZQUFZO0NBQUM7T0FBRSxDQUFBLFdBQW1CLEVBQUEsWUFBVTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN2RCxJQUFPLFlBQWM7Q0FBQTtPQUFhO0VBQUEsRUFBQTtFQUFrQixFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0FwRCxJQUFBLGFBQWU7Q0FBQTtFQUFNLE1BQUE7RUFBQTtFQUFXLE9BQUE7RUFBQSxPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7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RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNEQSxJQUFBLHdCQUFVO0NBQUE7T0FBc0IsRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDaEMsSUFBSSxlQUFZO0NBQUE7T0FBTTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE9BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsT0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFB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QUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN0QixJQUFJLGdCQUFlO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNSbkIsSUFBTyxpQkFBVTtDQUFBO09BQWUsQ0FBQSxRQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDaEMsSUFBUSx1QkFBb0I7Q0FBQTtPQUFBLENBQUEsZUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzVCLElBQUEsZ0JBQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RBLElBQU8sYUFBVTtDQUFBO09BQVcsRUFBQTtDQUFBLENBQUEsR0FBQTtDQUFBO0FBQzVCLElBQVMsMEJBQU07Q0FBQTtPQUFBLENBQUEsY0FBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNmLElBQUEsa0JBQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNBLElBQUEsbUJBQWlCO0NBQUE7T0FBQTtFQUFBO0VBQXdCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtF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QUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ2pCdEMsSUFBTyxlQUFVO0NBQUE7T0FBYSxFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzlCLElBQVMsdUJBQU07Q0FBQTtPQUFBLENBQUEsYUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDZixJQUFJLHVCQUFZO0NBQUE7RUFBQSxTQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0poQixJQUFBLGtCQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQWdCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VB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QUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNDdEIsSUFBQSx1QkFBcUI7Q0FBQTtPQUFBO0VBQUE7RUFBNkI7RUFBc0I7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSHhFLElBQUEsaUJBQVU7Q0FBQTtPQUFlLENBQUEsT0FBQSxXQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN6QixJQUFVLHNCQUFNO0NBQUE7T0FBQSxDQUFBLGNBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDaEIsSUFBSSxlQUFhO0NBQUE7T0FBVTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGM0IsSUFBTyxhQUFVO0NBQUE7RUFBWSxNQUFHLENBQUcsRUFBRTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3JDLElBQVcsa0JBQUc7Q0FBQTtPQUFBLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNkLElBQVUsb0JBQU07Q0FBQTtPQUFBLENBQUEsaUJBQUEsZ0JBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDaEIsSUFBSSxvQkFBZ0I7Q0FBQTtPQUFBLEVBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUNwQixJQUFJLHFCQUFhO0NBQUE7RUFBQSxTQUFBLGFBQUEsYUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNIakIsSUFBQSxtQkFBcUI7Q0FBQTtFQUFBLFNBQWlCLGFBQVU7RUFBQTtFQUFPO0VBQWE7RUFBWTtFQUFrQjtFQUFHO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFB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QUEsR0FBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RuQixJQUFPLGNBQVU7Q0FBQTtFQUFjLE1BQUE7RUFBQTtFQUFjO0VBQUE7RUFBVTtFQUFRO0VBQW1CO0VBQUM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuRixJQUFXLE9BQU87Q0FBQTtFQUFBLEdBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBbEIsSUFBTyxrQkFBVTtDQUFBO0VBQWtCLE1BQUE7RUFBQTtFQUFjO0VBQVU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDM0QsSUFBVyxpQkFBUTtDQUFBO0VBQUEsR0FBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuQixJQUFXLFdBQU07Q0FBQTtFQUFBLEdBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSmpCLElBQU8sZUFBVTtDQUFBO0VBQWUsTUFBQTtFQUFBO0VBQWM7RUFBQTtFQUFVO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN4RCxJQUFXLFFBQU07Q0FBQTtFQUFBLEdBQVksTUFBTTtFQUFBO0VBQVc7RUFBRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNDaEQsSUFBVyxnQkFBWTtDQUFBO0VBQVUsTUFBRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuQyxJQUFJLGdCQUFtQjtDQUFBO0VBQUEsR0FBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN2QixJQUFJLGNBQXFCO0NBQUM7RUFBRSxHQUFPLE1BQU07RUFBQztFQUFLO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQy9DLElBQUEsU0FBQTtDQUFBO0VBQUEsR0FBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxTQUFBO0VBQUE7RUFBQTtFQUFBLFNBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxTQUFBO0VBQUEsU0FBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNIQSxJQUFXLGdCQUFRO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25CLElBQVcsZ0JBQVk7Q0FBQTtFQUFXLEdBQUMsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7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QUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUN0QmhLLElBQUEsV0FBVTtD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O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2YsSUFBVyxxQkFBQTtDQUFBO0VBQUEsU0FBQSxjQUFBLGtCQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDWCxJQUFRLDZCQUFnQztDQUFDO0VBQUEsU0FBQSxjQUFBLGtCQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Z6QyxJQUFJLG1CQUFtQjtDQUFDO0VBQUksTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzVCLElBQUksY0FBQTtDQUFlO0VBQUUsTUFBTztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNLNUIsSUFBSSxXQUFJO0NBQUE7T0FBbUIsRUFBQztDQUFBLENBQUEsSUFBTyxHQUFBO0NBQUE7QUFDbkMsSUFBSSxZQUFZO0NBQUM7RUFBQyxNQUFRO0VBQUE7RUFBUTtFQUFpQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLFNBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuRSxJQUFJLE9BQU87Q0FBQztPQUFPO0VBQUE7RUFBUTtFQUFZO0VBQVE7RUFBTztFQUFTLE9BQUs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0pwRSxJQUFJLGdCQUFDO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsU0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFB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
|
|
2847
|
+
export { Acl as AclEntity, AddOptions, AuthMiddleware, AuthMiddlewareContext, AuthSilenceMiddleware, AuthSilenceMiddlewareContext, AuthorizationContext, AuthorizationMiddleware, AuthorizePermission, AuthorizePermissionPayload, BaseRelation, BelongsToFile as BelongsToFileRelation, BelongsTo as BelongsToRelation, BelongsToUser as BelongsToUserRelation, CliCommand, CliEvents, CliService, ArteTesterService as CliTesterService, CliWrapperService, ConfigFSService, ConfigFSServiceOptions, ConfigManagerOptions, ConfigManagerService, ConfigModel, ConfigRepository, ConfigS3Service, CookieMapEntity, CountOptions, CreateOptions, DatabaseContract, DatabaseGateway, DatabaseKysely, DatabaseRepository, DatabaseRepositoryInferMixin, DeleteFrom, DeleteManyOptions, DestroyOptions, DownloadService, DownloadedFetchOptions, DriveBaseGateway, DriveConfig as DriveConfigEntity, DriveContract, DriveFSConfig, DriveFS as DriveFSGateway, DriveS3 as DriveS3Gateway, DriveService, DriveUploadUrlOptions, DriveUrlOptions, EmailTemplateMetaTable, EmailTemplateTable, EmmitterService, EncryptService, EnvService, EventContract, ExceptionService, ExceptionServiceOptions, ExpressionBuilder, File as FileEntity, FileMeta as FileMetaEntity, FileMetaTable, FileRepository, FileRepositoryQueryOptions, FileTable, FindManyOptions, FindOneOptions, FirstOrCreateOptions, GitBranchRepository, GitBranchRepositoryOptions, GitCommitListOptions, GitCommitListResult, GitCommitRepository, GitCommitRepositoryOptions, GitGateway, GitGatewayOptions, GitRepoInfo, HandleResult, HasMany as HasManyRelation, HasManyThroughLoaderOptions, HasMetas as HasMetasRelation, HasherService, HttpContext, HttpMethod, HttpService, HttpServiceOptions, HttpTesterService, HttpTesterServiceOptions, IRepositoryTypes, InsertFrom, IpcMessage, JobTable, LifecycleService, ListOptions, LoadFileMetas, LoadFileUrl, Loader, LoaderRecord, Metadafilter, Metadata as MetadataMixin, MetadataQueryPayload, MetadataQueryService, MetadataService, Middleware, MiddlewareHandleResult, Migration, MigrationEntity, MigrationEntiyData, MigrationSource, MigrationsTable, MigratorService, MigratorServiceEvents, MigratorServiceOptions, ModelConfig as ModelConfigMixin, ModelCountOptions, ModelCreateOptions, ModelDestroyOptions, ModelEntity, ModelFindOptions, ModelFirstOrCreateOptions, ModelListOptions, ModelMixin, ModelPaginateOptions, ModelUpdateOptions, ModelUpdateOrCreateOptions, Module as ModuleEntity, OauthAccountTable, OauthTokenTable, ObjectOptions, PageRequestContextEntity, PageRequestContextEntityOptions, PaginateResult, Pagination, PermissionAssignmentRepository, PermissionAssignmentRepositoryQueryOptions, PermissionAssignmentTable, PermissionRepository, PermissionRepositoryQueryOptions, PermissionTable, PluginEntity, PluginEntryEntity, PluginIpcClient, PluginIpcHost, PluginRouter, Redirect, Relation as RelationsMixin, Request, ResourceMethod, Response, RoleTable, RouteDefinition, Route as RouteEntity, RouteHandler, RouteReply, RouteRequest, RouteResponsePayload, RouterEvents, RouterFileBaseRoutingService, RouterRegisterEntry, RouterRegister as RouterRegisterService, RouterResourceConfig as RouterResourceConfigService, RouterResourceOptions, RouterResourceService, RouterService, RoutineEntity, RoutineEntityOptions, RoutineHandler, S3DriveConfig, SchedulerEvents, SchedulerService, SchedulerServiceOptions, SeederEntity, SeederEntiyData, SeederEvents, SeederResult, SeeederService as SeederService, SeederServiceOptions, SeederSource, SelectBuilder, SelectFrom, SerializableResult, SerializeOptions, ShellService, ShellServiceOptions, SoftDeleteOptions, SoftDeleteResult, TableColumn, TokenRepository, TokenRepositoryGenerateOptions, TokenRepositoryQueryOptions, TokenTable, UpdateFrom, UpdateOptions, UpdateOrCreateOptions, UploadSessionTable, UploadUrlOptions, UrlOptions, UserMetaTable, UserRepository, UserRepositoryEvents, UserRepositoryQueryOptions, UserRoleTable, UserTable, addCreatedColumn, addSoftDeleteColumn, addTimestampColumns, addUpdatedColumn, basePath, config, _default as container, count, create, createDefault, createHasManyThroughLoader, createLoaderFactory, createMysql, createPermissionLoader, cuid, database, defineHandler, defineLoader, deleted, destroy, download, drive, emmitter, encrypt, env, exists, fileRepository as filesRepository, findOne, findOneOrFail, firstOrCreate, generateIndexFile, HasManyThrough as hasManyThroughRelation, hasher, http, importAll, importFiles, importGlob, importOne, list, loadHasManyThrough, loadPermissions, logger, migrator, now, paginate, permissionAssignmentRepository, permissionRepository, printObject, printTable, relativeToBasePath, router, scheduler, shell, softDelete, storagePath, tmpPath, tokenRepository, undeleted, update, updateDefault, updateMysql, updateOrCreate, userRepository, valueToString, whereNotDeleted };
|
|
2848
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci91dGlscy9wcmludFRhYmxlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3V0aWxzL2NvbXBvc2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zY2hlbWFzL3Blcm1pc3Npb25Bc3NpZ25tZW50U2NoZW1hLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NjaGVtYXMvcGVybWlzc2lvblNjaGVtYS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zY2hlbWFzL3Rva2VuU2NoZW1hLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL21peGlucy9Ib29rc01peGluLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1Blcm1pc3Npb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvQWNsRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0Nvb2tpZU1hcEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Ecml2ZUNvbmZpZ0VudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Ecml2ZUVudHJ5RW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0ZpbGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvRmlsZU1ldGFFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvR2l0QnJhbmNoRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0dpdENvbW1pdEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Nb2R1bGVNYW5pZmVzdEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Nb2R1bGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUGFnaW5hdGlvbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9QbHVnaW5FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUm9sZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0NsaVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvQ2xpVGVzdGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9DbGlXcmFwcGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Db25maWdGU1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2NoZW1hcy9lbnZTY2hlbWEuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvRW52U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Db25maWdNYW5hZ2VyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9nYXRld2F5cy9Ecml2ZUJhc2VHYXRld2F5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2dhdGV3YXlzL0RyaXZlUzNHYXRld2F5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0NvbmZpZ1MzU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Eb3dubG9hZFNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0RyaXZlQ29udHJhY3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvRHJpdmVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0Nvb2tpZU1hcEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9QYWdlUmVxdWVzdENvbnRleHRFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvVXNlclJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvTWlncmF0aW9uRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL01pZ3JhdG9yU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9BY2xFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0h0dHBDb250ZXh0Q29udHJhY3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL1JvdXRlckNvbnRyYWN0LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL1JvdXRlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1JvdXRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvUm91dGluZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9TY2hlZHVsZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL1NlZWRlckVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9TZWVkZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2NvbnRyYWN0cy9FdmVudENvbnRyYWN0LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9FbmNyeXB0U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9FeGNlcHRpb25TZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL0hhc2hlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvSHR0cFNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvSHR0cFRlc3RlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9NZXRhZGF0YVF1ZXJ5U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9NZXRhZGF0YVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUGx1Z2luSXBjQ2xpZW50LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1BsdWdpbklwY0hvc3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUGx1Z2luUm91dGVyLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1JvdXRlckZpbGVCYXNlUm91dGluZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvUm91dGVyUmVnaXN0ZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3NlcnZpY2VzL1JvdXRlclJlc291cmNlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taXhpbnMvTW9kZWxDb25maWdNaXhpbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9zZXJ2aWNlcy9Sb3V0ZXJSZXNvdXJjZUNvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvc2VydmljZXMvU2hlbGxTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3JlcG9zaXRvcmllcy9Db25maWdSZXBvc2l0b3J5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3JlcG9zaXRvcmllcy9GaWxlUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvR2l0QnJhbmNoUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvR2l0Q29tbWl0UmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvUGVybWlzc2lvbkFzc2lnbm1lbnRSZXBvc2l0b3J5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3JlcG9zaXRvcmllcy9QZXJtaXNzaW9uUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9taXhpbnMvRGF0YWJhc2VSZXBvc2l0b3J5SW5mZXJNaXhpbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZXBvc2l0b3JpZXMvVG9rZW5SZXBvc2l0b3J5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2dhdGV3YXlzL0RhdGFiYXNlR2F0ZXdheS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9nYXRld2F5cy9Ecml2ZUZTR2F0ZXdheS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9nYXRld2F5cy9HaXRHYXRld2F5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL21peGlucy9NZXRhZGF0YU1peGluLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvZGF0YWJhc2UuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9jb21tb24uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy91cGRhdGVPckNyZWF0ZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2xpc3QuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9wYWdpbmF0ZS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2NvdW50LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvY3JlYXRlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvdXBkYXRlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3F1ZXJpZXMvZGVzdHJveS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL2ZpcnN0T3JDcmVhdGUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9maW5kT25lLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL21peGlucy9Nb2RlbE1peGluLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL21peGlucy9SZWxhdGlvbnNNaXhpbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL2NvbmZpZy5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL2NvbnRhaW5lci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL2Rvd25sb2FkLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvZHJpdmUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9lbW1pdHRlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL2VuY3J5cHQuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9lbnYuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9maWxlc1JlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9oYXNoZXIuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9odHRwLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvbG9nZ2VyLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvbWlncmF0b3IuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9wZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvZmFjYWRlcy9wZXJtaXNzaW9uUmVwb3NpdG9yeS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL3JvdXRlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL3NjaGVkdWxlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9mYWNhZGVzL3NoZWxsLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvdG9rZW5SZXBvc2l0b3J5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2ZhY2FkZXMvdXNlclJlcG9zaXRvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvY29udHJhY3RzL0t5c2VseUNvbnRyYWN0LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2RlZmluZUxvYWRlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9sb2FkZXJzL2hhc01hbnlUaHJvdWdoTG9hZGVyLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2xvYWRlcnMvcGVybWlzc2lvbkxvYWRlci5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9Ecml2ZUNvbmZpZ0VudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9GaWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0ZpbGVNZXRhRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL01vZHVsZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9QbHVnaW5FbnRyeUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9QbHVnaW5FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9leGlzdHMuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy9pbmNyZW1lbnRhbC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9xdWVyaWVzL3NvZnREZWxldGUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcXVlcmllcy90aW1lc3RhbXAuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVsYXRpb25zL0Jhc2VSZWxhdGlvbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZWxhdGlvbnMvQmVsb25nc1RvUmVsYXRpb24uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVsYXRpb25zL0JlbG9uZ3NUb0ZpbGVSZWxhdGlvbi5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci9yZWxhdGlvbnMvQmVsb25nc1RvVXNlclJlbGF0aW9uLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3JlbGF0aW9ucy9IYXNNYW55UmVsYXRpb24uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVsYXRpb25zL0hhc01ldGFzUmVsYXRpb24uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvcmVsYXRpb25zL2hhc01hbnlUaHJvdWdoUmVsYXRpb24uZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvbWlkZGxld2FyZXMvQXV0aE1pZGRsZXdhcmUuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvbWlkZGxld2FyZXMvQXV0aFNpbGVuY2VNaWRkbGV3YXJlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL21pZGRsZXdhcmVzL0F1dGhvcml6YXRpb25NaWRkbGV3YXJlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2Jhc2VQYXRoLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2NyZWF0ZUxvYWRlckZhY3RvcnkuZC50cyIsIi4uLy4uL3NyYy9zZXJ2ZXIvdXRpbHMvY3VpZC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci91dGlscy9kZWZpbmVIYW5kbGVyLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2dlbmVyYXRlSW5kZXhGaWxlLmQudHMiLCIuLi8uLi9zcmMvc2VydmVyL3V0aWxzL2ltcG9ydEFsbC5kLnRzIiwiLi4vLi4vc3JjL3NlcnZlci91dGlscy9pbXBvcnRPbmUuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmcgfCAoKGl0ZW06IGFueSkgPT4gc3RyaW5nKTtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICByZWFsV2lkdGg/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdE9wdGlvbnMge1xuICAgIGtleVdpZHRoPzogbnVtYmVyO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcHJpbnRPYmplY3Qob3V0cHV0PzogYW55LCBvcHRpb25zPzogT2JqZWN0T3B0aW9ucyk6IHZvaWQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwcmludFRhYmxlKGl0ZW1zOiBhbnlbXSwgY29sdW1ucz86IFRhYmxlQ29sdW1uW10pOiB2b2lkO1xuIiwiaW50ZXJmYWNlIEVudHJ5IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xuICAgIHNvdXJjZTogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGVudHJpZXM6IE1hcDxzdHJpbmcsIEVudHJ5PjtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIGxpc3QoKTogRW50cnlbXTtcbiAgICBwYXJzZVZhbHVlKHZhbHVlOiBhbnkpOiBhbnk7XG4gICAgbG9hZEZyb21SZWNvcmQocmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzb3VyY2U/OiBzdHJpbmcpOiB2b2lkO1xuICAgIGxvYWRGcm9tRW50cmllcyhlbnRyaWVzOiBbc3RyaW5nLCBhbnldW10sIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdG9SZWNvcmQoKTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuO1xuICAgIGdldDxUID0gYW55IHwgdW5kZWZpbmVkPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogVDtcbiAgICBnZXRPbmU8VCA9IGFueSB8IHVuZGVmaW5lZD4oa2V5czogc3RyaW5nW10sIGRlZmF1bHRWYWx1ZT86IGFueSk6IFQ7XG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBzb3VyY2U/OiBzdHJpbmcpOiB2b2lkO1xuICAgIHVuc2V0KGtleTogc3RyaW5nKTogdm9pZDtcbiAgICBjbGVhcigpOiB2b2lkO1xuICAgIGR1bXAoKTogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbmV4cG9ydCB7fTtcbiIsInR5cGUgQ29uc3RydWN0b3I8VCA9IG9iamVjdD4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xudHlwZSBFbnRyeUtleSA9IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBlbnRyaWVzO1xuICAgIGxvYWRGcm9tUmVjb3JkKHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG4gICAgdG9SZWNvcmQoKTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIGdldEtleTtcbiAgICBzZXQocGF5bG9hZDogRW50cnlLZXksIHZhbHVlOiBhbnkpOiB0aGlzO1xuICAgIGhhcyhwYXlsb2FkOiBFbnRyeUtleSk6IGJvb2xlYW47XG4gICAgZ2V0PFQ+KHBheWxvYWQ6IEVudHJ5S2V5KTogVDtcbiAgICB1bnNldChwYXlsb2FkOiBFbnRyeUtleSk6IHZvaWQ7XG4gICAgc2luZ2xldG9uPFQ+KGNsYXNzQ29uc3RydWN0b3I6IENvbnN0cnVjdG9yPFQ+KTogVDtcbiAgICBsb2FkKGVudHJpZXM6IFJlY29yZDxhbnksIGFueT4pOiB2b2lkO1xuICAgIHByb3h5PFQgPSB1bmtub3duPihrZXk6IEVudHJ5S2V5KTogVDtcbiAgICBrZXlzKCk6IEVudHJ5S2V5W107XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZyB8IEVycm9yLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBjaGlsZChvcHRpb25zOiBhbnkpOiBMb2dnZXJTZXJ2aWNlO1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi9Mb2dnZXJTZXJ2aWNlLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRW1taXR0ZXJMaXN0ZW5lck9wdGlvbnMge1xuICAgIGV2ZW50OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEVtbWl0dGVyTGlzdGVuZXIge1xuICAgIChkYXRhOiBhbnksIG9wdGlvbnM6IEVtbWl0dGVyTGlzdGVuZXJPcHRpb25zKTogdm9pZDtcbn1cbmludGVyZmFjZSBFbW1pdHRlckhhbmRsZXIge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZXZlbnQ6IHN0cmluZztcbiAgICBsaXN0ZW5lcjogRW1taXR0ZXJMaXN0ZW5lcjtcbiAgICBvcmlnaW5hbExpc3RlbmVyPzogRW1taXR0ZXJMaXN0ZW5lcjtcbn1cbmludGVyZmFjZSBPbk9wdGlvbnMge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHVuaXF1ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgT25EZWJvdW5jZU9wdGlvbnMgZXh0ZW5kcyBPbk9wdGlvbnMge1xuICAgIGRlYm91bmNlPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBFbW1pdHRlclNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtbWl0dGVyU2VydmljZTxFdmVudHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBoYW5kbGVyczogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBFbW1pdHRlclNlcnZpY2VPcHRpb25zKTtcbiAgICBzdGF0aWMgY3JlYXRlPEV2ZW50cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zPzogRW1taXR0ZXJTZXJ2aWNlT3B0aW9ucyk6IEVtbWl0dGVyU2VydmljZTxFdmVudHM+O1xuICAgIHNldERlYnVnKGRlYnVnOiBib29sZWFuKTogdm9pZDtcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKTogdm9pZDtcbiAgICBvbjxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgbGlzdGVuZXI6IChhcmdzOiBFdmVudHNbS10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25jZTxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgbGlzdGVuZXI6IChhcmdzOiBFdmVudHNbS10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25jZShldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbkRlYm91bmNlPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uRGVib3VuY2VPcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uRGVib3VuY2UoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbkRlYm91bmNlT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbkFueU9mPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50czogS1tdLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIG9uQW55T2YoZXZlbnRzOiBzdHJpbmdbXSwgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IEVtbWl0dGVySGFuZGxlclsnbGlzdGVuZXInXSk6IHZvaWQ7XG4gICAgZW1pdDxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgYXJnczogRXZlbnRzW0tdKTogdm9pZDtcbiAgICBlbWl0KGV2ZW50OiBzdHJpbmcsIGFyZ3M/OiBhbnkpOiB2b2lkO1xuICAgIGVtaXRBbmRXYWl0PEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBhcmdzOiBFdmVudHNbS10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGVtaXRBbmRXYWl0KGV2ZW50OiBzdHJpbmcsIGFyZ3M/OiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxpc3QoKTogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgbGlzdEJ5RXZlbnQoZXZlbnQ6IHN0cmluZyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIHJlbW92ZShwYXlsb2FkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQ7XG4gICAgY2xlYXIoKTogdm9pZDtcbiAgICBoYXNIYW5kbGVycygpOiBib29sZWFuO1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZWN5Y2xlSG9vayB7XG4gICAgaG9va19pZDogc3RyaW5nO1xuICAgIGhvb2tfYWxpYXNlcz86IHN0cmluZ1tdO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIHN1Ymhvb2tzPzogTGlmZWN5Y2xlSG9va1tdO1xuICAgIHJlZ2lzdGVyKCk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGJvb3QoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiBAZGVwcmVjYXRlZCBVc2UgcmVnaXN0ZXIgKi9cbiAgICBvblJlZ2lzdGVyKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSBsb2FkICovXG4gICAgb25Mb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSBib290ICovXG4gICAgb25Cb290KCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSBzaHV0ZG93biAqL1xuICAgIG9uU2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB0eXBlIHsgVW5pb25Ub0ludGVyc2VjdGlvbiB9IGZyb20gJy4vdHlwaW5nLnRzJztcbmV4cG9ydCB0eXBlIEFueUNsYXNzID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VCA9IHt9PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG5leHBvcnQgdHlwZSBNaXhpbjxUPiA9IChiYXNlOiBDb25zdHJ1Y3RvcikgPT4gQ29uc3RydWN0b3I8VD47XG4vKipcbiAqIENvbXBvc2VzIG11bHRpcGxlIG1peGlucyBpbnRvIGEgc2luZ2xlIGNsYXNzIHRoYXQgY2FuIGJlIGV4dGVuZGVkLlxuICogQWxsb3dzIGZvciBtdWx0aXBsZSBpbmhlcml0YW5jZS1saWtlIGJlaGF2aW9yIGJ5IGFwcGx5aW5nIG1peGlucyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHBhcmFtIG1peGlucyAtIEFycmF5IG9mIG1peGluIGZ1bmN0aW9ucyB0byBjb21wb3NlXG4gKiBAcmV0dXJucyBBIGNsYXNzIGNvbnN0cnVjdG9yIHRoYXQgaW5jbHVkZXMgYWxsIG1peGluIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIGNvbXBvc2UoVGltZXN0YW1wLCBTb2Z0RGVsZXRlKSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAqICAgICBzdXBlcigpXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjb21wb3NlPE0gZXh0ZW5kcyBBcnJheTwoYmFzZTogQ29uc3RydWN0b3I8YW55PikgPT4gQ29uc3RydWN0b3I8YW55Pj4+KC4uLm1peGluczogTSk6IFVuaW9uVG9JbnRlcnNlY3Rpb248UmV0dXJuVHlwZTxNW251bWJlcl0+Pjtcbi8qKlxuICogQWx0ZXJuYXRpdmUgY29tcG9zZSBmdW5jdGlvbiB0aGF0IHN0YXJ0cyB3aXRoIGEgYmFzZSBjbGFzc1xuICpcbiAqIEBwYXJhbSBiYXNlQ2xhc3MgLSBUaGUgYmFzZSBjbGFzcyB0byBzdGFydCB3aXRoXG4gKiBAcGFyYW0gbWl4aW5zIC0gQXJyYXkgb2YgbWl4aW4gZnVuY3Rpb25zIHRvIGFwcGx5XG4gKiBAcmV0dXJucyBBIGNsYXNzIGNvbnN0cnVjdG9yIHRoYXQgZXh0ZW5kcyB0aGUgYmFzZSBjbGFzcyB3aXRoIGFsbCBtaXhpbiBmdW5jdGlvbmFsaXR5XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFVzZXIgZXh0ZW5kcyBjb21wb3NlV2l0aChCYXNlRW50aXR5LCBUaW1lc3RhbXAsIFNvZnREZWxldGUpIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZykge1xuICogICAgIHN1cGVyKClcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvbXBvc2VXaXRoPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3IsIE0gZXh0ZW5kcyBBcnJheTwoYmFzZTogQ29uc3RydWN0b3IpID0+IENvbnN0cnVjdG9yPGFueT4+PihiYXNlQ2xhc3M6IFRCYXNlLCAuLi5taXhpbnM6IE0pOiBUQmFzZSAmIFVuaW9uVG9JbnRlcnNlY3Rpb248UmV0dXJuVHlwZTxNW251bWJlcl0+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIG1peGluPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KFNvdXJjZTogVEJhc2UpOiA8VFRhcmdldCBleHRlbmRzIENvbnN0cnVjdG9yPihUYXJnZXQ6IFRUYXJnZXQpID0+IFRUYXJnZXQgJiBUQmFzZTtcbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJy4vTG9nZ2VyU2VydmljZS50cyc7XG5pbXBvcnQgTGlmZWN5Y2xlSG9vayBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2sudHMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG50eXBlIExpZmVjeWNsZU1ldGhvZCA9ICdyZWdpc3RlcicgfCAnbG9hZCcgfCAnYm9vdCcgfCAnc2h1dGRvd24nO1xuaW50ZXJmYWNlIExpc3RPcHRpb25zIHtcbiAgICBpbmNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgZXhjbHVkZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucyB7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGhvb2tzPzogTWFwPHN0cmluZywgTGlmZWN5Y2xlSG9vaz47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBvbkVycm9yPzogKGVycm9yOiBFcnJvciwgY29udGV4dDoge1xuICAgICAgICBob29rSWQ6IHN0cmluZztcbiAgICAgICAgbWV0aG9kOiBMaWZlY3ljbGVNZXRob2Q7XG4gICAgfSkgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpZmVjeWNsZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBob29rczogTWFwPHN0cmluZywgTGlmZWN5Y2xlSG9vaz47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucyk7XG4gICAgc2V0T25FcnJvcihoYW5kbGVyOiBSZXF1aXJlZDxMaWZlY3ljbGVTZXJ2aWNlT3B0aW9ucz5bJ29uRXJyb3InXSk6IHZvaWQ7XG4gICAgb25FcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ6IHtcbiAgICAgICAgaG9va0lkOiBzdHJpbmc7XG4gICAgICAgIG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kO1xuICAgIH0pOiB2b2lkO1xuICAgIG1hcEFsaWFzZXMoYXJnczogc3RyaW5nW10pOiBzdHJpbmdbXTtcbiAgICBsaXN0KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IExpZmVjeWNsZUhvb2tbXTtcbiAgICBhZGQoLi4ucGF5bG9hZDogKExpZmVjeWNsZUhvb2sgfCBDb25zdHJ1Y3RvcjxMaWZlY3ljbGVIb29rPilbXSk6IHZvaWQ7XG4gICAgZW1pdE1ldGhvZChtZXRob2Q6IExpZmVjeWNsZU1ldGhvZCwgb3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBlbWl0KHBheWxvYWQ6IExpZmVjeWNsZU1ldGhvZCB8IExpZmVjeWNsZU1ldGhvZFtdLCBvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIG9uKG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kLCBoYW5kbGVyOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZDtcbiAgICByZWdpc3RlcihvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBib290KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgc2h1dGRvd24ob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBjbGVhcigpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25Bc3NpZ25tZW50ID0gdi5JbmZlck91dHB1dDx0eXBlb2YgcGVybWlzc2lvbkFzc2lnbm1lbnRTY2hlbWE+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcGVybWlzc2lvbkFzc2lnbm1lbnRTY2hlbWE6IHYuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBpZDogdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBwZXJtaXNzaW9uX2lkOiB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGFzc2lnbmFibGVfdHlwZTogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBhc3NpZ25hYmxlX2lkOiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGNyZWF0ZWRfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbn0sIHVuZGVmaW5lZD47XG4iLCJpbXBvcnQgKiBhcyB2IGZyb20gJ3ZhbGlib3QnO1xuZXhwb3J0IHR5cGUgUGVybWlzc2lvbiA9IHYuSW5mZXJPdXRwdXQ8dHlwZW9mIHBlcm1pc3Npb25TY2hlbWE+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcGVybWlzc2lvblNjaGVtYTogdi5PYmplY3RTY2hlbWE8e1xuICAgIHJlYWRvbmx5IGlkOiB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IG5hbWU6IHYuTnVsbGFibGVTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBkZXNjcmlwdGlvbjogdi5OdWxsYWJsZVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGFjdGlvbjogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBzdWJqZWN0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGNvbmRpdGlvbnM6IHYuTnVsbGFibGVTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBjcmVhdGVkX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHVwZGF0ZWRfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgZXhwaXJlc19hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbn0sIHVuZGVmaW5lZD47XG4iLCJpbXBvcnQgKiBhcyB2IGZyb20gJ3ZhbGlib3QnO1xuZXhwb3J0IHR5cGUgVG9rZW4gPSB2LkluZmVyT3V0cHV0PHR5cGVvZiB0b2tlblNjaGVtYT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB0b2tlblNjaGVtYTogdi5PYmplY3RTY2hlbWE8e1xuICAgIHJlYWRvbmx5IGlkOiB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IG5hbWU6IHYuTnVsbGFibGVTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSB0eXBlOiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHVzZXJfaWQ6IHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdG9rZW46IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgY3JlYXRlZF9hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSB1cGRhdGVkX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGV4cGlyZXNfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG59LCB1bmRlZmluZWQ+O1xuIiwiaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIExpc3RlbmVyIHtcbiAgICBldmVudDogc3RyaW5nO1xuICAgIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQ7XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBlbWl0SG9vayhjb25zdHJ1Y3RvcjogYW55LCBldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBvbkhvb2soY29uc3RydWN0b3I6IGFueSwgZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBIb29rc1N0YXRpYzxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPihCYXNlOiBUQmFzZSk6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge307XG4gICAgbGlzdGVuZXJzOiBBcnJheTwoLi4uYXJnczogYW55W10pID0+IHZvaWQ+O1xuICAgIG9uKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xufSAmIFRCYXNlO1xuZXhwb3J0IGRlY2xhcmUgbmFtZXNwYWNlIEhvb2tzU3RhdGljIHtcbiAgICB2YXIgZW1pdDogdHlwZW9mIGVtaXRIb29rO1xuICAgIHZhciBvbjogdHlwZW9mIG9uSG9vaztcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvb2tzPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KEJhc2U6IFRCYXNlKToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGxpc3RlbmVyczogTGlzdGVuZXJbXTtcbiAgICAgICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIG9mZihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZDtcbiAgICAgICAgZW1pdChldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XG4gICAgICAgIGVtaXRBc3luYyhldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG4gICAgfTtcbn0gJiBUQmFzZTtcbiIsImRlY2xhcmUgY29uc3QgUGVybWlzc2lvbkVudGl0eV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlcm1pc3Npb25FbnRpdHkgZXh0ZW5kcyBQZXJtaXNzaW9uRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIG9yaWdpbjogc3RyaW5nO1xuICAgIHN1YmplY3Q6IHN0cmluZztcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICBjb25kaXRpb25zOiBzdHJpbmcgfCBudWxsIHwgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbjtcbiAgICBnZXQgcGFyc2VkQ29uZGl0aW9ucygpOiBhbnk7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBkZWZpbmVBYmlsaXR5IH0gZnJvbSAnQGNhc2wvYWJpbGl0eSc7XG5pbXBvcnQgUGVybWlzc2lvbiBmcm9tICcuL1Blcm1pc3Npb25FbnRpdHkudHMnO1xuaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFjbEVudGl0eSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGFiaWxpdHk6IFJldHVyblR5cGU8dHlwZW9mIGRlZmluZUFiaWxpdHk+O1xuICAgIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEFjbEVudGl0eT4pO1xuICAgIGNhbihhY3Rpb246IHN0cmluZywgc3ViamVjdDogYW55LCBvYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbjtcbiAgICBjYW5ub3QoYWN0aW9uOiBzdHJpbmcsIHN1YmplY3Q6IGFueSwgb2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW47XG4gICAgc3ViamVjdChzdWJqZWN0OiBzdHJpbmcsIG9iamVjdDogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4gJiBpbXBvcnQoXCJAY2FzbC9hYmlsaXR5XCIpLkZvcmNlZFN1YmplY3Q8c3RyaW5nPjtcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgQ29va2llTWFwRW50aXR5T3B0aW9ucyB7XG4gICAgY29va2llcz86IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgcHJlZml4Pzogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29va2llTWFwRW50aXR5IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgY29va2llczogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcmVmaXg6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogQ29va2llTWFwRW50aXR5T3B0aW9ucyk7XG4gICAgbG9hZChjb29raWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgTWFwPHN0cmluZywgc3RyaW5nPik6IHZvaWQ7XG4gICAgZ2V0KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGw7XG4gICAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQ7XG4gICAgdG9SZWNvcmQoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0IFRZUEVTOiAoKSA9PiAoe1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbGFiZWw6IGFueTtcbiAgICBkZXNjcmlwdGlvbjogYW55O1xuICAgIGNvbmZpZ19maWVsZHM6IHtcbiAgICAgICAgZGlyZWN0b3J5OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYW55O1xuICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICB9O1xuICAgICAgICBhY2Nlc3NLZXlJZD86IHVuZGVmaW5lZDtcbiAgICAgICAgc2VjcmV0QWNjZXNzS2V5PzogdW5kZWZpbmVkO1xuICAgICAgICBidWNrZXQ/OiB1bmRlZmluZWQ7XG4gICAgICAgIHJlZ2lvbj86IHVuZGVmaW5lZDtcbiAgICAgICAgcHJlZml4PzogdW5kZWZpbmVkO1xuICAgICAgICBlbmRwb2ludD86IHVuZGVmaW5lZDtcbiAgICB9O1xufSB8IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IGFueTtcbiAgICBjb25maWdfZmllbGRzOiB7XG4gICAgICAgIGFjY2Vzc0tleUlkOiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICAgIHNlY3JldEFjY2Vzc0tleToge1xuICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgICBidWNrZXQ6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgIGhpbnQ6IGFueTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVnaW9uOiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICB9O1xuICAgICAgICBlbmRwb2ludDoge1xuICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICB9O1xuICAgICAgICBkaXJlY3Rvcnk/OiB1bmRlZmluZWQ7XG4gICAgfTtcbn0pW107XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZUNvbmZpZyB7XG4gICAgc3RhdGljIGdldCBUWVBFUygpOiAoe1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICBkZXNjcmlwdGlvbjogYW55O1xuICAgICAgICBjb25maWdfZmllbGRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkPzogdW5kZWZpbmVkO1xuICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5PzogdW5kZWZpbmVkO1xuICAgICAgICAgICAgYnVja2V0PzogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmVnaW9uPzogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcHJlZml4PzogdW5kZWZpbmVkO1xuICAgICAgICAgICAgZW5kcG9pbnQ/OiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgfSB8IHtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgZGVzY3JpcHRpb246IGFueTtcbiAgICAgICAgY29uZmlnX2ZpZWxkczoge1xuICAgICAgICAgICAgYWNjZXNzS2V5SWQ6IHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsYWJlbDogYW55O1xuICAgICAgICAgICAgICAgIGhpbnQ6IGFueTtcbiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJ1Y2tldDoge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlZ2lvbjoge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhbnk7XG4gICAgICAgICAgICAgICAgaGludDogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFueTtcbiAgICAgICAgICAgICAgICBoaW50OiBhbnk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGlyZWN0b3J5PzogdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgIH0pW107XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGlzX2RlZmF1bHQ6IGJvb2xlYW47XG4gICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERyaXZlQ29uZmlnKTtcbiAgICBnZXQgY29uZmlnX2ZpZWxkcygpOiB7fTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlRW50cnkge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdHlwZTogJ2ZpbGUnIHwgJ2RpcmVjdG9yeSc7XG4gICAgbWV0YXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29uc3RydWN0b3IoZGF0YTogRHJpdmVFbnRyeSk7XG59XG4iLCJkZWNsYXJlIGNvbnN0IEZpbGVFbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICB9O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBkZWxldGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVFbnRpdHkgZXh0ZW5kcyBGaWxlRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgZHJpdmU6IHN0cmluZztcbiAgICBtaW1ldHlwZTogc3RyaW5nO1xuICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICBjbGllbnRfbmFtZTogc3RyaW5nO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljOiBib29sZWFuO1xuICAgIHVybD86IHN0cmluZztcbiAgICBtZXRhcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaXNJbWFnZSgpOiBib29sZWFuO1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBjb25zdCBGaWxlTWV0YV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZU1ldGEgZXh0ZW5kcyBGaWxlTWV0YV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGZpbGVfaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBHaXRCcmFuY2hFbnRpdHkge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICByZW1vdGU6IHN0cmluZyB8IG51bGw7XG4gICAgaXNfY3VycmVudDogYm9vbGVhbjtcbiAgICBpc19yZW1vdGU6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoZGF0YTogR2l0QnJhbmNoRW50aXR5KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEdpdENvbW1pdEVudGl0eSB7XG4gICAgaGFzaDogc3RyaW5nO1xuICAgIHNob3J0X2hhc2g6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgYm9keTogc3RyaW5nO1xuICAgIGF1dGhvcl9uYW1lOiBzdHJpbmc7XG4gICAgYXV0aG9yX2VtYWlsOiBzdHJpbmc7XG4gICAgZGF0ZTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEdpdENvbW1pdEVudGl0eSk7XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIE1vZHVsZU1hbmlmZXN0QnVpbGRJbXBvcnQge1xuICAgIGZyb206IHN0cmluZztcbiAgICB0bz86IHN0cmluZztcbiAgICB0eXBlOiAnZ2xvYmFsX2ltcG9ydCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZU1hbmlmZXN0QnVpbGQge1xuICAgIGltcG9ydHM/OiBNb2R1bGVNYW5pZmVzdEJ1aWxkSW1wb3J0W107XG59XG5kZWNsYXJlIGNvbnN0IE1vZHVsZU1hbmlmZXN0X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlTWFuaWZlc3QgZXh0ZW5kcyBNb2R1bGVNYW5pZmVzdF9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBhdXRob3I/OiBzdHJpbmc7XG4gICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBidWlsZD86IE1vZHVsZU1hbmlmZXN0QnVpbGQ7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgTW9kdWxlTWFuaWZlc3QgZnJvbSAnLi9Nb2R1bGVNYW5pZmVzdEVudGl0eS50cyc7XG5pbXBvcnQgTGlmZWN5Y2xlSG9vayBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0xpZmVjeWNsZUhvb2sudHMnO1xuaW50ZXJmYWNlIE1vZHVsZVVwZ3JhZGVJbmZvIHtcbiAgICBzb3VyY2U6ICdnaXQnIHwgJ3ppcCc7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZGVjbGFyZSBjb25zdCBNb2R1bGVfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I8e30+ICYgdHlwZW9mIExpZmVjeWNsZUhvb2s7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2R1bGUgZXh0ZW5kcyBNb2R1bGVfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgYnVpbGQ6IE1vZHVsZU1hbmlmZXN0WydidWlsZCddO1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xuICAgIHVwZ3JhZGVfaW5mbz86IE1vZHVsZVVwZ3JhZGVJbmZvO1xuICAgIHNldERhdGEoZGF0YTogUGFydGlhbDxNb2R1bGUgfCBNb2R1bGVNYW5pZmVzdD4pOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFnaW5hdGlvbkVudGl0eTxUID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGl0ZW1zOiBUW107XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYWdlOiBudW1iZXI7XG4gICAgcGVyX3BhZ2U6IG51bWJlcjtcbiAgICB0b3RhbF9wYWdlczogbnVtYmVyO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFBhcnRpYWw8UGFnaW5hdGlvbkVudGl0eT4pO1xuICAgIHN0YXRpYyBmcm9tPFQgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihwYXlsb2FkOiBQYXJ0aWFsPFBhZ2luYXRpb25FbnRpdHk8VD4+KTogUGFnaW5hdGlvbkVudGl0eTxUPjtcbn1cbiIsImRlY2xhcmUgY29uc3QgUGx1Z2luRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luRW50aXR5IGV4dGVuZHMgUGx1Z2luRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGFsaWFzZXM6IHN0cmluZ1tdO1xuICAgIHZlcnNpb25fY2hhbm5lbDogc3RyaW5nO1xuICAgIHZlcnNpb25fYXZhaWxhYmxlX2NoYW5uZWxzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCB7fTtcbiIsImRlY2xhcmUgY29uc3QgUm9sZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9sZSBleHRlbmRzIFJvbGVfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSBSb2xlIGZyb20gJy4vUm9sZUVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IFVzZXJFbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICB9O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBkZWxldGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXJFbnRpdHkgZXh0ZW5kcyBVc2VyRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbiAgICB2ZXJpZmllZF9hdD86IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIHBlcm1pc3Npb25zPzogUGVybWlzc2lvbltdO1xuICAgIHJvbGVzPzogUm9sZVtdO1xuICAgIGdldCBpbml0aWFscygpOiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBDb21tYW5kIGFzIENvbW1hbmRlckNvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IHByaW50VGFibGUsIHByaW50T2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvcHJpbnRUYWJsZS50cyc7XG5pbXBvcnQgeyBFbW1pdHRlclNlcnZpY2UsIExvZ2dlclNlcnZpY2UgfSBmcm9tICcjc2hhcmVkL2luZGV4LnRzJztcbmltcG9ydCAqIGFzIGlucXVpcmVyIGZyb20gJ0BpbnF1aXJlci9wcm9tcHRzJztcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpRXZlbnRzIHtcbiAgICAnY2xpOnJlZ2lzdGVyZWQnOiB7XG4gICAgICAgIGNsaTogQ2xpU2VydmljZTtcbiAgICB9O1xufVxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ2xpQ29tbWFuZCBleHRlbmRzIENvbW1hbmRlckNvbW1hbmQge1xuICAgIF9faXNfY2xpX2NvbW1hbmQ6IGJvb2xlYW47XG4gICAgdGFibGU6IHR5cGVvZiBwcmludFRhYmxlO1xuICAgIG9iamVjdDogdHlwZW9mIHByaW50T2JqZWN0O1xuICAgIGNvbG9yczogY2hhbGsuQ2hhbGsgJiBjaGFsay5DaGFsa0Z1bmN0aW9uICYge1xuICAgICAgICBzdXBwb3J0c0NvbG9yOiBjaGFsay5Db2xvclN1cHBvcnQgfCBmYWxzZTtcbiAgICAgICAgTGV2ZWw6IGNoYWxrLkxldmVsO1xuICAgICAgICBDb2xvcjogKFwiYmxhY2tcIiB8IFwicmVkXCIgfCBcImdyZWVuXCIgfCBcInllbGxvd1wiIHwgXCJibHVlXCIgfCBcIm1hZ2VudGFcIiB8IFwiY3lhblwiIHwgXCJ3aGl0ZVwiIHwgXCJncmF5XCIgfCBcImdyZXlcIiB8IFwiYmxhY2tCcmlnaHRcIiB8IFwicmVkQnJpZ2h0XCIgfCBcImdyZWVuQnJpZ2h0XCIgfCBcInllbGxvd0JyaWdodFwiIHwgXCJibHVlQnJpZ2h0XCIgfCBcIm1hZ2VudGFCcmlnaHRcIiB8IFwiY3lhbkJyaWdodFwiIHwgXCJ3aGl0ZUJyaWdodFwiKSB8IChcImJnQmxhY2tcIiB8IFwiYmdSZWRcIiB8IFwiYmdHcmVlblwiIHwgXCJiZ1llbGxvd1wiIHwgXCJiZ0JsdWVcIiB8IFwiYmdNYWdlbnRhXCIgfCBcImJnQ3lhblwiIHwgXCJiZ1doaXRlXCIgfCBcImJnR3JheVwiIHwgXCJiZ0dyZXlcIiB8IFwiYmdCbGFja0JyaWdodFwiIHwgXCJiZ1JlZEJyaWdodFwiIHwgXCJiZ0dyZWVuQnJpZ2h0XCIgfCBcImJnWWVsbG93QnJpZ2h0XCIgfCBcImJnQmx1ZUJyaWdodFwiIHwgXCJiZ01hZ2VudGFCcmlnaHRcIiB8IFwiYmdDeWFuQnJpZ2h0XCIgfCBcImJnV2hpdGVCcmlnaHRcIik7XG4gICAgICAgIEZvcmVncm91bmRDb2xvcjogXCJibGFja1wiIHwgXCJyZWRcIiB8IFwiZ3JlZW5cIiB8IFwieWVsbG93XCIgfCBcImJsdWVcIiB8IFwibWFnZW50YVwiIHwgXCJjeWFuXCIgfCBcIndoaXRlXCIgfCBcImdyYXlcIiB8IFwiZ3JleVwiIHwgXCJibGFja0JyaWdodFwiIHwgXCJyZWRCcmlnaHRcIiB8IFwiZ3JlZW5CcmlnaHRcIiB8IFwieWVsbG93QnJpZ2h0XCIgfCBcImJsdWVCcmlnaHRcIiB8IFwibWFnZW50YUJyaWdodFwiIHwgXCJjeWFuQnJpZ2h0XCIgfCBcIndoaXRlQnJpZ2h0XCI7XG4gICAgICAgIEJhY2tncm91bmRDb2xvcjogXCJiZ0JsYWNrXCIgfCBcImJnUmVkXCIgfCBcImJnR3JlZW5cIiB8IFwiYmdZZWxsb3dcIiB8IFwiYmdCbHVlXCIgfCBcImJnTWFnZW50YVwiIHwgXCJiZ0N5YW5cIiB8IFwiYmdXaGl0ZVwiIHwgXCJiZ0dyYXlcIiB8IFwiYmdHcmV5XCIgfCBcImJnQmxhY2tCcmlnaHRcIiB8IFwiYmdSZWRCcmlnaHRcIiB8IFwiYmdHcmVlbkJyaWdodFwiIHwgXCJiZ1llbGxvd0JyaWdodFwiIHwgXCJiZ0JsdWVCcmlnaHRcIiB8IFwiYmdNYWdlbnRhQnJpZ2h0XCIgfCBcImJnQ3lhbkJyaWdodFwiIHwgXCJiZ1doaXRlQnJpZ2h0XCI7XG4gICAgICAgIE1vZGlmaWVyczogXCJyZXNldFwiIHwgXCJib2xkXCIgfCBcImRpbVwiIHwgXCJpdGFsaWNcIiB8IFwidW5kZXJsaW5lXCIgfCBcImludmVyc2VcIiB8IFwiaGlkZGVuXCIgfCBcInN0cmlrZXRocm91Z2hcIiB8IFwidmlzaWJsZVwiO1xuICAgICAgICBzdGRlcnI6IGNoYWxrLkNoYWxrICYge1xuICAgICAgICAgICAgc3VwcG9ydHNDb2xvcjogY2hhbGsuQ29sb3JTdXBwb3J0IHwgZmFsc2U7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBpbnF1aXJlcjogdHlwZW9mIGlucXVpcmVyO1xuICAgIG5lZWRzOiBTZXQ8c3RyaW5nPjtcbiAgICBuZWVkKC4uLmFyZ3M6IHN0cmluZ1tdKTogdGhpcztcbiAgICBjcmVhdGVDb21tYW5kKG5hbWU/OiBzdHJpbmcpOiBDbGlDb21tYW5kO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpU2VydmljZSBleHRlbmRzIENsaUNvbW1hbmQge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBkaXJzOiBTZXQ8c3RyaW5nPjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgZW1taXR0ZXI6IEVtbWl0dGVyU2VydmljZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBzdGF0aWMgY3JlYXRlKG5hbWU/OiBzdHJpbmcpOiBDbGlTZXJ2aWNlO1xuICAgIHNldExvZ2dlcihsb2dnZXI6IExvZ2dlclNlcnZpY2UpOiB0aGlzO1xuICAgIHNldERlYnVnKGRlYnVnOiBib29sZWFuKTogdGhpcztcbiAgICBzZXRFbW1pdHRlcihlbW1pdHRlcjogRW1taXR0ZXJTZXJ2aWNlKTogdGhpcztcbiAgICBjcmVhdGVDb21tYW5kKG5hbWU/OiBzdHJpbmcpOiBDbGlTZXJ2aWNlO1xuICAgIGFkZERpcihkaXI6IHN0cmluZyk6IHRoaXM7XG4gICAgbG9hZERpcihkaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZCgpOiBQcm9taXNlPHRoaXM+O1xufVxuIiwiaW1wb3J0IENsaVNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9DbGlTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFydGVUZXN0ZXJTZXJ2aWNlIGV4dGVuZHMgQ2xpU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBhZGQocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICBleGVjdXRlKGFyZ3M6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCBjcCBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcjc2hhcmVkL2luZGV4LnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsaVdyYXBwZXJTZXJ2aWNlIHtcbiAgICBwcm9jZXNzOiBjcC5DaGlsZFByb2Nlc3MgfCBudWxsO1xuICAgIGFwcEJhc2VQYXRoOiBzdHJpbmc7XG4gICAgZW52OiBNYXA8c3RyaW5nLCBhbnk+O1xuICAgIGFyZ3M6IHN0cmluZ1tdO1xuICAgIGNvbmZpZ0FyZ3VtZW50czogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgICBjb25maWdGaWxlczogc3RyaW5nW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIHN0YXRpYyBjcmVhdGUoKTogQ2xpV3JhcHBlclNlcnZpY2U7XG4gICAgc2V0QmFzZVBhdGgocGF0aDogc3RyaW5nKTogdGhpcztcbiAgICBzZXREZWJ1ZyhkZWJ1ZzogYm9vbGVhbik6IHRoaXM7XG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyU2VydmljZSk6IHRoaXM7XG4gICAgYWRkQ29uZmlnQXJndW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB0aGlzO1xuICAgIGFkZENvbmZpZ0ZpbGUoLi4uZmlsZVBhdGhzOiBzdHJpbmdbXSk6IHRoaXM7XG4gICAgYWRkRW52KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdGhpcztcbiAgICBsb2FkQ29uZmlnQXJndW1lbnRzKCk6IHZvaWQ7XG4gICAgbG9hZENvbmZpZ0ZpbGVzKCk6IHZvaWQ7XG4gICAgbG9hZEVudmlyb25tZW50KCk6IHZvaWQ7XG4gICAgbG9hZEFyZ3VtZW50cyhhcmdzPzogc3RyaW5nW10pOiB2b2lkO1xuICAgIGtpbGwoY29kZT86IG51bWJlcik6IHZvaWQ7XG4gICAgcnVuKGFyZ3M/OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgQ29uZmlnU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdGU1NlcnZpY2VPcHRpb25zIHtcbiAgICBkaXJlY3Rvcnk/OiBzdHJpbmc7XG4gICAgZm9ybWF0PzogJ2pzb24nIHwgJ3ltbCc7XG4gICAgZm9ybWF0T3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWdGU1NlcnZpY2UgZXh0ZW5kcyBDb25maWdTZXJ2aWNlIHtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgZm9ybWF0OiAnanNvbicgfCAneW1sJztcbiAgICBmb3JtYXRPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDb25maWdGU1NlcnZpY2VPcHRpb25zKTtcbiAgICB3cml0ZShlbnRyeTogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHdyaXRlU3luYyhlbnRyeTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkO1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBwcml2YXRlIHBhcnNlS2V5O1xuICAgIHNldChmdWxsS2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoZnVsbEtleTogc3RyaW5nKTogdm9pZDtcbn1cbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgdHlwZSBFbnZTY2hlbWEgPSB2LkluZmVyT3V0cHV0PHR5cGVvZiBlbnZTY2hlbWE+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZW52U2NoZW1hOiB2Lkxvb3NlT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBOT0RFX0VOVjogdi5PcHRpb25hbFNjaGVtYTx2LlVuaW9uU2NoZW1hPFt2LkxpdGVyYWxTY2hlbWE8XCJkZXZlbG9wbWVudFwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJwcm9kdWN0aW9uXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcInRlc3RcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIFwiZGV2ZWxvcG1lbnRcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0JBU0VfUEFUSDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBaRU5JVEhfU1RPUkFHRV9QQVRIOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0FQUF9VUkw6IHYuT3B0aW9uYWxTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX1BPUlQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBudW1iZXI+XT4sIFwiMzAwMFwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfSE9TVDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCBcIjAuMC4wLjBcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0xPR19MRVZFTDogdi5PcHRpb25hbFNjaGVtYTx2LlBpY2tsaXN0U2NoZW1hPFtcImVycm9yXCIsIFwid2FyblwiLCBcImluZm9cIiwgXCJkZWJ1Z1wiXSwgdW5kZWZpbmVkPiwgXCJpbmZvXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9MSUZFQ1lDTEVfREVCVUc6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwidHJ1ZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJmYWxzZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCIxXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcIjBcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPFwiMFwiIHwgXCIxXCIgfCBcInRydWVcIiB8IFwiZmFsc2VcIiwgYm9vbGVhbj4sIHYuQm9vbGVhblNjaGVtYTx1bmRlZmluZWQ+XT4sIFwiZmFsc2VcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NMSUVOVF9DT05GSUc6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+LCBcIlwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj5dPiwgXCJcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19BUkdVTUVOVFM6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+LCBcIlwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHX0ZJTEVTOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZywgc3RyaW5nW10+XT4sIFwiXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfREVCVUc6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwidHJ1ZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCJmYWxzZVwiLCB1bmRlZmluZWQ+LCB2LkxpdGVyYWxTY2hlbWE8XCIxXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcIjBcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPFwiMFwiIHwgXCIxXCIgfCBcInRydWVcIiB8IFwiZmFsc2VcIiwgYm9vbGVhbj4sIHYuQm9vbGVhblNjaGVtYTx1bmRlZmluZWQ+XT4sIFwiZmFsc2VcIj47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19EUklWRVI6IHYuT3B0aW9uYWxTY2hlbWE8di5QaWNrbGlzdFNjaGVtYTxbXCJmc1wiLCBcInMzXCJdLCB1bmRlZmluZWQ+LCBcImZzXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfRlNfUEFUSDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfRlNfRk9STUFUOiB2Lk9wdGlvbmFsU2NoZW1hPHYuUGlja2xpc3RTY2hlbWE8W1wianNvblwiLCBcInltbFwiXSwgdW5kZWZpbmVkPiwgXCJqc29uXCI+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfRlNfRk9STUFUX09QVElPTlM6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pl0+LCBcIlwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHX1MzX0JVQ0tFVDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfUzNfUkVHSU9OOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19TM19BQ0NFU1NfS0VZX0lEOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgWkVOSVRIX0NPTkZJR19TM19TRUNSRVRfQUNDRVNTX0tFWTogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfUzNfU0VTU0lPTl9UT0tFTjogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IFpFTklUSF9DT05GSUdfUzNfRU5EUE9JTlQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBaRU5JVEhfQ09ORklHX1MzX1BSRUZJWDogdi5PcHRpb25hbFNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCBcIlwiPjtcbiAgICByZWFkb25seSBaRU5JVEhfUExVR0lOU19ESVJTOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZywgc3RyaW5nW10+XT4sIFwiXCI+O1xufSwgdW5kZWZpbmVkPjtcbiIsImltcG9ydCBkb3RlbnYgZnJvbSAnZG90ZW52JztcbmltcG9ydCB0eXBlIHsgRW52U2NoZW1hIH0gZnJvbSAnI3NlcnZlci9zY2hlbWFzL2VudlNjaGVtYS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBlbnY7XG4gICAgcHJpdmF0ZSBmaWxlcztcbiAgICBzdGF0aWMgY3JlYXRlKCk6IEVudlNlcnZpY2U7XG4gICAgc3RhdGljIGRvdEVudkNvbmZpZyhvcHRpb25zPzogZG90ZW52LkRvdGVudkNvbmZpZ09wdGlvbnMpOiBkb3RlbnYuRG90ZW52Q29uZmlnT3V0cHV0O1xuICAgIHNldEZpbGVzKGZpbGVzOiBzdHJpbmdbXSk6IHRoaXM7XG4gICAgYWRkRmlsZShmaWxlOiBzdHJpbmcpOiB0aGlzO1xuICAgIGxvYWQoKTogdGhpcztcbiAgICBnZXQgcHJvZHVjdGlvbigpOiBib29sZWFuO1xuICAgIGdldCBkZXZlbG9wbWVudCgpOiBib29sZWFuO1xuICAgIGdldCB0ZXN0KCk6IGJvb2xlYW47XG4gICAgaGFzPEsgZXh0ZW5kcyBrZXlvZiBFbnZTY2hlbWE+KGtleTogSyk6IGJvb2xlYW47XG4gICAgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBFbnZTY2hlbWE+KGtleTogSywgZGVmYXVsdFZhbHVlPzogYW55KTogRW52U2NoZW1hW0tdO1xuICAgIHNldDxLIGV4dGVuZHMga2V5b2YgRW52U2NoZW1hPihrZXk6IEssIHZhbHVlOiBFbnZTY2hlbWFbS10pOiB2b2lkO1xufVxuIiwiaW1wb3J0IHsgdHlwZSBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnI3NoYXJlZC9pbmRleC50cyc7XG5pbXBvcnQgQ29uZmlnU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgRW52U2VydmljZSBmcm9tICcuL0VudlNlcnZpY2UudHMnO1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdNYW5hZ2VyT3B0aW9ucyB7XG4gICAgZW52OiBFbnZTZXJ2aWNlO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBzaWxlbnQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uZmlnTWFuYWdlclNlcnZpY2Uge1xuICAgIGVudjogRW52U2VydmljZTtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgc2lsZW50OiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbmZpZ01hbmFnZXJPcHRpb25zKTtcbiAgICBzdGF0aWMgY3JlYXRlKG9wdGlvbnM6IENvbmZpZ01hbmFnZXJPcHRpb25zKTogQ29uZmlnTWFuYWdlclNlcnZpY2U7XG4gICAgcHJpdmF0ZSBsb2FkUzNDb25maWc7XG4gICAgcHJpdmF0ZSBsb2FkRlNDb25maWc7XG4gICAgbG9hZENvbmZpZ0Zyb21FbnYoc2VydmljZTogQ29uZmlnU2VydmljZSk6IHZvaWQ7XG4gICAgbG9hZENvbmZpZ0Zyb21GaWxlKHNlcnZpY2U6IENvbmZpZ1NlcnZpY2UsIGZpbGU6IHN0cmluZyk6IHZvaWQ7XG4gICAgbG9hZENvbmZpZ0Zyb21GaWxlcyhzZXJ2aWNlOiBDb25maWdTZXJ2aWNlLCBmaWxlczogc3RyaW5nW10pOiB2b2lkO1xuICAgIGxvYWQoKTogUHJvbWlzZTxDb25maWdTZXJ2aWNlPjtcbn1cbiIsImltcG9ydCBtcyBmcm9tICdtcyc7XG5pbXBvcnQgdHlwZSBEcml2ZUVudHJ5IGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRHJpdmVFbnRyeUVudGl0eS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFVybE9wdGlvbnMge1xuICAgIGV4cGlyZXM/OiBtcy5TdHJpbmdWYWx1ZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkVXJsT3B0aW9ucyB7XG4gICAgZXhwaXJlcz86IG1zLlN0cmluZ1ZhbHVlO1xuICAgIG1pbWVfdHlwZXM/OiBzdHJpbmdbXTtcbiAgICBtYXhfc2l6ZT86IG51bWJlcjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlQmFzZUdhdGV3YXkge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBQaWNrPERyaXZlQmFzZUdhdGV3YXksICdpZCcgfCAnbmFtZScgfCAnZGVzY3JpcHRpb24nIHwgJ2NvbmZpZyc+KTtcbiAgICBsaXN0KGZvbGRlcj86IHN0cmluZyk6IFByb21pc2U8RHJpdmVFbnRyeVtdPjtcbiAgICBmaW5kKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPERyaXZlRW50cnk+O1xuICAgIGV4aXN0cyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICByZWFkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuICAgIHJlYWRTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPjtcbiAgICB3cml0ZShmaWxlbmFtZTogc3RyaW5nLCBkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTx2b2lkPjtcbiAgICB3cml0ZVN0cmVhbShmaWxlbmFtZTogc3RyaW5nLCBzdHJlYW06IE5vZGVKUy5SZWFkYWJsZVN0cmVhbSk6IFByb21pc2U8dm9pZD47XG4gICAgZGVsZXRlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVybChmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zPzogVXJsT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICB1cGxvYWRVcmwoZmlsZW5hbWU6IHN0cmluZywgb3B0aW9ucz86IFVwbG9hZFVybE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG4iLCJpbXBvcnQgeyBTM0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQgdHlwZSB7IEluZmVyT3V0cHV0IH0gZnJvbSAndmFsaWJvdCc7XG5pbXBvcnQgQmFzZURyaXZlIGZyb20gJyNzZXJ2ZXIvZ2F0ZXdheXMvRHJpdmVCYXNlR2F0ZXdheS50cyc7XG5kZWNsYXJlIGNvbnN0IHNjaGVtYTogaW1wb3J0KFwidmFsaWJvdFwiKS5PYmplY3RTY2hlbWE8e1xuICAgIHJlYWRvbmx5IGJ1Y2tldDogaW1wb3J0KFwidmFsaWJvdFwiKS5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgaW1wb3J0KFwidmFsaWJvdFwiKS5NaW5MZW5ndGhBY3Rpb248c3RyaW5nLCAxLCB1bmRlZmluZWQ+XT47XG4gICAgcmVhZG9ubHkgcmVnaW9uOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgYWNjZXNzS2V5SWQ6IGltcG9ydChcInZhbGlib3RcIikuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW2ltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIGltcG9ydChcInZhbGlib3RcIikuTWluTGVuZ3RoQWN0aW9uPHN0cmluZywgMSwgdW5kZWZpbmVkPl0+O1xuICAgIHJlYWRvbmx5IHNlY3JldEFjY2Vzc0tleTogaW1wb3J0KFwidmFsaWJvdFwiKS5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbaW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgaW1wb3J0KFwidmFsaWJvdFwiKS5NaW5MZW5ndGhBY3Rpb248c3RyaW5nLCAxLCB1bmRlZmluZWQ+XT47XG4gICAgcmVhZG9ubHkgc2Vzc2lvblRva2VuOiBpbXBvcnQoXCJ2YWxpYm90XCIpLk9wdGlvbmFsU2NoZW1hPGltcG9ydChcInZhbGlib3RcIikuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IGltcG9ydChcInZhbGlib3RcIikuT3B0aW9uYWxTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBwcmVmaXg6IGltcG9ydChcInZhbGlib3RcIikuT3B0aW9uYWxTY2hlbWE8aW1wb3J0KFwidmFsaWJvdFwiKS5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbn0sIHVuZGVmaW5lZD47XG5leHBvcnQgdHlwZSBTM0RyaXZlQ29uZmlnID0gSW5mZXJPdXRwdXQ8dHlwZW9mIHNjaGVtYT47XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZVMzIGV4dGVuZHMgQmFzZURyaXZlIHtcbiAgICBwcml2YXRlIHNjaGVtYTtcbiAgICBwcml2YXRlIF9jbGllbnQ/O1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFBpY2s8QmFzZURyaXZlLCAnaWQnIHwgJ25hbWUnIHwgJ2Rlc2NyaXB0aW9uJyB8ICdjb25maWcnPik7XG4gICAgZ2V0IHZhbGlkKCk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjaGVja1ZhbGlkO1xuICAgIHByb3RlY3RlZCBnZXQgYnVja2V0KCk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZ2V0IHByZWZpeCgpOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBnZXRLZXk7XG4gICAgcHJvdGVjdGVkIGdldCBjbGllbnQoKTogUzNDbGllbnQ7XG4gICAgZXhpc3RzOiBCYXNlRHJpdmVbJ2V4aXN0cyddO1xuICAgIGxpc3Q6IEJhc2VEcml2ZVsnbGlzdCddO1xuICAgIGZpbmQ6IEJhc2VEcml2ZVsnZmluZCddO1xuICAgIG1rZGlyKF9maWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICByZWFkOiBCYXNlRHJpdmVbJ3JlYWQnXTtcbiAgICByZWFkU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gICAgd3JpdGU6IEJhc2VEcml2ZVsnd3JpdGUnXTtcbiAgICB3cml0ZVN0cmVhbShmaWxlbmFtZTogc3RyaW5nLCBzdHJlYW06IE5vZGVKUy5SZWFkYWJsZVN0cmVhbSk6IFByb21pc2U8dm9pZD47XG4gICAgZGVsZXRlOiBCYXNlRHJpdmVbJ2RlbGV0ZSddO1xuICAgIHVybDogQmFzZURyaXZlWyd1cmwnXTtcbiAgICB1cGxvYWRVcmw6IEJhc2VEcml2ZVsndXBsb2FkVXJsJ107XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQ29uZmlnU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHMnO1xuaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBTM0RyaXZlIGZyb20gJyNzZXJ2ZXIvZ2F0ZXdheXMvRHJpdmVTM0dhdGV3YXkudHMnO1xuaW1wb3J0IHR5cGUgeyBTM0RyaXZlQ29uZmlnIH0gZnJvbSAnI3NlcnZlci9nYXRld2F5cy9Ecml2ZVMzR2F0ZXdheS50cyc7XG5pbnRlcmZhY2UgSW5pdGlPcHRpb25zIGV4dGVuZHMgT21pdDxTM0RyaXZlQ29uZmlnLCAnbmFtZScgfCAnZGVzY3JpcHRpb24nPiB7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uZmlnUzNTZXJ2aWNlIGV4dGVuZHMgQ29uZmlnU2VydmljZSB7XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGRyaXZlOiBTM0RyaXZlO1xuICAgIGJ1Y2tldDogc3RyaW5nO1xuICAgIHJlZ2lvbjogc3RyaW5nO1xuICAgIGVuZHBvaW50Pzogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEluaXRpT3B0aW9ucyk7XG4gICAgcHJpdmF0ZSBwYXJzZUtleTtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgc2V0KGZ1bGxLZXk6IHN0cmluZywgdmFsdWU6IGFueSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB1bnNldChmdWxsS2V5OiBzdHJpbmcpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SW5pdCB9IGZyb20gJ3VuZGljaSc7XG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkZWRGZXRjaE9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0SW5pdCB7XG4gICAgcHJveHk/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3dubG9hZFNlcnZpY2Uge1xuICAgIGZldGNoKHVybDogc3RyaW5nLCBvcHRpb25zPzogRG93bmxvYWRlZEZldGNoT3B0aW9ucyk6IFByb21pc2U8aW1wb3J0KFwidW5kaWNpXCIpLlJlc3BvbnNlPjtcbiAgICBzdHJlYW0odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBEb3dubG9hZGVkRmV0Y2hPcHRpb25zKTogUHJvbWlzZTx7XG4gICAgICAgIHN0cmVhbTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtO1xuICAgICAgICBjb250ZW50VHlwZTogc3RyaW5nO1xuICAgIH0+O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFkU3RyZWFtIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHR5cGUgbXMgZnJvbSAnbXMnO1xuaW1wb3J0IHR5cGUgRHJpdmVFbnRyeSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0RyaXZlRW50cnlFbnRpdHkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBEcml2ZVVybE9wdGlvbnMge1xuICAgIGV4cGlyZXM/OiBtcy5TdHJpbmdWYWx1ZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRHJpdmVVcGxvYWRVcmxPcHRpb25zIHtcbiAgICBleHBpcmVzPzogbXMuU3RyaW5nVmFsdWU7XG4gICAgbWltZV90eXBlcz86IHN0cmluZ1tdO1xuICAgIG1heF9zaXplPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBEcml2ZUNvbnRyYWN0IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsaXN0KGZvbGRlcj86IHN0cmluZyk6IFByb21pc2U8RHJpdmVFbnRyeVtdPjtcbiAgICBmaW5kKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPERyaXZlRW50cnk+O1xuICAgIGV4aXN0cyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICByZWFkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuICAgIHdyaXRlKGZpbGVuYW1lOiBzdHJpbmcsIGRhdGE6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHdyaXRlU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIHN0cmVhbTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtKTogUHJvbWlzZTx2b2lkPjtcbiAgICBkZWxldGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgdXJsKGZpbGVuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBEcml2ZVVybE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4gICAgdXBsb2FkVXJsKGZpbGVuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBEcml2ZVVwbG9hZFVybE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4gICAgcmVhZFN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZWFkU3RyZWFtPjtcbn1cbiIsImltcG9ydCBEcml2ZUVudHJ5IGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRHJpdmVFbnRyeUVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IERyaXZlVXJsT3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RyaXZlQ29udHJhY3QudHMnO1xuaW1wb3J0IEJhc2VEcml2ZSBmcm9tICcjc2VydmVyL2dhdGV3YXlzL0RyaXZlQmFzZUdhdGV3YXkudHMnO1xuaW1wb3J0IHR5cGUgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW50ZXJmYWNlIFZhbGlkYXRlVXBsb2FkT3B0aW9ucyB7XG4gICAgbWltZV90eXBlczogc3RyaW5nO1xuICAgIG1heFNpemU/OiBudW1iZXI7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBnYXRld2F5czogTWFwPHN0cmluZywgdHlwZW9mIEJhc2VEcml2ZT47XG4gICAgZHJpdmVzOiBNYXA8c3RyaW5nLCBCYXNlRHJpdmU+O1xuICAgIHNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGRlZmF1bHREcml2ZT86IHN0cmluZztcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgZ2V0IGN1cnJlbnQoKTogQmFzZURyaXZlIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPERyaXZlU2VydmljZT4pO1xuICAgIGxpc3REcml2ZXMoKToge1xuICAgICAgICBkZWZhdWx0OiBib29sZWFuO1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgfVtdO1xuICAgIGdldChuYW1lPzogc3RyaW5nKTogQmFzZURyaXZlO1xuICAgIHVzZShuYW1lPzogc3RyaW5nKTogRHJpdmVTZXJ2aWNlO1xuICAgIGxpc3QoZm9sZGVyPzogc3RyaW5nKTogUHJvbWlzZTxEcml2ZUVudHJ5W10+O1xuICAgIGZpbmQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RHJpdmVFbnRyeT47XG4gICAgZXhpc3RzKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIHJlYWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8VWludDhBcnJheT47XG4gICAgcmVhZFN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+O1xuICAgIHJlYWRBc1RleHQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICB3cml0ZShmaWxlbmFtZTogc3RyaW5nLCBwYXlsb2FkOiBVaW50OEFycmF5IHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIHdyaXRlU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIHN0cmVhbTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBhIFVSTCBmb3IgYSBmaWxlIGluIHRoZSBkcml2ZS5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAgRmlsZSBpbnN0YW5jZSwgRmlsZSBJRCwgRHJpdmVFbnRyeSBpbnN0YW5jZSBvciBmaWxlbmFtZSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHVybChmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zPzogRHJpdmVVcmxPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIHVwbG9hZFVybChmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zPzogRHJpdmVVcmxPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFVwbG9hZCBhIGZpbGUgZnJvbSB0aGUgbG9jYWwgZmlsZXN5c3RlbSB0byB0aGUgZHJpdmUuXG4gICAgICogQHBhcmFtIHNvdXJjZSBmaWxlbmFtZSBpbiBsb2NhbCBmaWxlc3lzdGVtXG4gICAgICogQHBhcmFtIGRlc3RpbmF0aW9uXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICB1cGxvYWQoc291cmNlOiBzdHJpbmcsIGRlc3RpbmF0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIERvd25sb2FkIGEgZmlsZSBmcm9tIHRoZSBkcml2ZSB0byB0aGUgbG9jYWwgZmlsZXN5c3RlbS5cbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgZmlsZW5hbWUgaW4gdGhlIGRyaXZlXG4gICAgICogQHBhcmFtIGRlc3RpbmF0aW9uXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBkb3dubG9hZChmaWxlbmFtZTogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICBkZWxldGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGNyZWF0ZURlZmF1bHREcml2ZXMoKTogUHJvbWlzZTx2b2lkPjtcbiAgICB2YWxpZGF0ZVVwbG9hZChvcHRpb25zOiBWYWxpZGF0ZVVwbG9hZE9wdGlvbnMsIGZpbGU6IHtcbiAgICAgICAgbWltZXR5cGU6IHN0cmluZztcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgIH0pOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSwgQ29va2llT3B0aW9ucyB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IEJhc2UgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9Db29raWVNYXBFbnRpdHkudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29va2llTWFwRW50aXR5IGV4dGVuZHMgQmFzZSB7XG4gICAgcmVxdWVzdDogUmVxdWVzdDtcbiAgICByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgY29uc3RydWN0b3IocmVxdWVzdDogUmVxdWVzdCwgcmVzcG9uc2U6IFJlc3BvbnNlKTtcbiAgICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBvcHRpb25zPzogQ29va2llT3B0aW9ucyk6IHZvaWQ7XG59XG4iLCJpbXBvcnQgQ29va2llTWFwRW50aXR5IGZyb20gXCIjc2VydmVyL2VudGl0aWVzL0Nvb2tpZU1hcEVudGl0eS50c1wiO1xuaW1wb3J0IENvbnRhaW5lclNlcnZpY2UgZnJvbSBcIiNzaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZhYmxlSGVhZCB9IGZyb20gJ0B1bmhlYWQvdnVlJztcbmltcG9ydCBDb25maWdTZXJ2aWNlIGZyb20gXCIjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHNcIjtcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVJlcXVlc3RDb250ZXh0RW50aXR5T3B0aW9ucyB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcmVxdWVzdDogUmVxdWVzdDtcbiAgICByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgc3RhdGU/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICAgIG5vZGVDb250YWluZXI/OiBDb250YWluZXJTZXJ2aWNlO1xuICAgIG5vZGVDb25maWc/OiBDb25maWdTZXJ2aWNlO1xuICAgIG5vZGVTdGF0ZT86IE1hcDxzdHJpbmcsIGFueT47XG4gICAgYnJvd3NlckNvbnRhaW5lcj86IENvbnRhaW5lclNlcnZpY2U7XG4gICAgYnJvd3NlckNvbmZpZz86IENvbmZpZ1NlcnZpY2U7XG4gICAgYnJvd3NlclN0YXRlPzogTWFwPHN0cmluZywgYW55Pjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhZ2VSZXF1ZXN0Q29udGV4dEVudGl0eSB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcmVxdWVzdDogUmVxdWVzdDtcbiAgICByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgY29va2llczogQ29va2llTWFwRW50aXR5O1xuICAgIGhlYWQ6IFJlc29sdmFibGVIZWFkW107XG4gICAgbm9kZUNvbnRhaW5lcjogQ29udGFpbmVyU2VydmljZTtcbiAgICBub2RlQ29uZmlnOiBDb25maWdTZXJ2aWNlO1xuICAgIG5vZGVTdGF0ZTogTWFwPHN0cmluZywgYW55PjtcbiAgICBicm93c2VyQ29udGFpbmVyOiBDb250YWluZXJTZXJ2aWNlO1xuICAgIGJyb3dzZXJDb25maWc6IENvbmZpZ1NlcnZpY2U7XG4gICAgYnJvd3NlclN0YXRlOiBNYXA8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFBhZ2VSZXF1ZXN0Q29udGV4dEVudGl0eU9wdGlvbnMpO1xuICAgIHNldEJyb3dzZXJTdGF0ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gICAgc2V0Tm9kZVN0YXRlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICBzZXRTdGF0ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gICAgc2V0QnJvd3NlckNvbnRhaW5lclZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICBzZXROb2RlQ29udGFpbmVyVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldENvbnRhaW5lclZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICBzZXRCcm93c2VyQ29uZmlnVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAgIHNldE5vZGVDb25maWdWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gICAgc2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBLeXNlbHkgfSBmcm9tICdreXNlbHknO1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uPFQgPSBhbnk+IHtcbiAgICBpdGVtczogVFtdO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBwZXJfcGFnZTogbnVtYmVyO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgdG90YWxfcGFnZXM6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmluZE1hbnlPcHRpb25zIHtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgb3JkZXJCeT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIG9yZGVyRGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYycgfCAoJ2FzYycgfCAnZGVzYycpW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlT3B0aW9ucyB7XG4gICAgcGFnZT86IG51bWJlcjtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBvcmRlckJ5PzogRmluZE1hbnlPcHRpb25zWydvcmRlckJ5J107XG4gICAgb3JkZXJEaXJlY3Rpb24/OiBGaW5kTWFueU9wdGlvbnNbJ29yZGVyRGlyZWN0aW9uJ107XG59XG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZU1hbnlPcHRpb25zIHtcbiAgICBsaW1pdD86IG51bWJlcjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlUmVwb3NpdG9yeTxURW50aXR5ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFByaW1hcnlLZXkgPSBhbnksIFRPcHRpb25zID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHByb3RlY3RlZCBkYjogS3lzZWx5PGFueT47XG4gICAgcHJvdGVjdGVkIHRhYmxlOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHByaW1hcnlLZXk6IHN0cmluZztcbiAgICBhdXRvQ3JlYXRlZEF0OiBib29sZWFuO1xuICAgIGF1dG9VcGRhdGVkQXQ6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoZGI6IEt5c2VseTxhbnk+LCB0YWJsZTogc3RyaW5nLCBwcmltYXJ5S2V5OiBzdHJpbmcpO1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiB7XG4gICAgICAgIHFiPzogYW55O1xuICAgIH0gJiBUT3B0aW9ucyk6IGFueTtcbiAgICBjb3VudChvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPjtcbiAgICBmaW5kTWFueShvcHRpb25zPzogRmluZE1hbnlPcHRpb25zICYgVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHlbXT47XG4gICAgZmluZE9uZShvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHkgfCBudWxsPjtcbiAgICBmaW5kQnlJZChpZDogVFByaW1hcnlLZXksIG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eSB8IG51bGw+O1xuICAgIGZpbmRCeUlkT3JGYWlsKGlkOiBUUHJpbWFyeUtleSwgb3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxOb25OdWxsYWJsZTxBd2FpdGVkPFRFbnRpdHk+Pj47XG4gICAgcGFnaW5hdGUob3B0aW9ucz86IFBhZ2luYXRlT3B0aW9ucyAmIFRPcHRpb25zKTogUHJvbWlzZTxQYWdpbmF0aW9uPjtcbiAgICBwcm90ZWN0ZWQgYmVmb3JlQ3JlYXRlKGRhdGE6IFBhcnRpYWw8VEVudGl0eT4pOiBQcm9taXNlPFBhcnRpYWw8VEVudGl0eT4+O1xuICAgIHByb3RlY3RlZCBhZnRlckNyZWF0ZShkYXRhOiBURW50aXR5KTogUHJvbWlzZTx2b2lkPjtcbiAgICBjcmVhdGUoZGF0YTogUGFydGlhbDxURW50aXR5Pik6IFByb21pc2U8VEVudGl0eT47XG4gICAgcHJvdGVjdGVkIGJlZm9yZUNyZWF0ZU1hbnkoZGF0YTogUGFydGlhbDxURW50aXR5PltdKTogUHJvbWlzZTxQYXJ0aWFsPFRFbnRpdHk+W10+O1xuICAgIHByb3RlY3RlZCBhZnRlckNyZWF0ZU1hbnkoZGF0YTogVEVudGl0eVtdKTogUHJvbWlzZTxURW50aXR5W10+O1xuICAgIGNyZWF0ZU1hbnkoZGF0YTogUGFydGlhbDxURW50aXR5PltdKTogUHJvbWlzZTxhbnlbXT47XG4gICAgcHJvdGVjdGVkIGJlZm9yZVVwZGF0ZShkYXRhOiBQYXJ0aWFsPFRFbnRpdHk+LCBpZDogVFByaW1hcnlLZXkpOiBQcm9taXNlPFBhcnRpYWw8VEVudGl0eT4+O1xuICAgIHByb3RlY3RlZCBhZnRlclVwZGF0ZShkYXRhOiBURW50aXR5KTogUHJvbWlzZTxURW50aXR5PjtcbiAgICB1cGRhdGVCeUlkKGlkOiBUUHJpbWFyeUtleSwgZGF0YTogUGFydGlhbDxURW50aXR5Pik6IFByb21pc2U8dm9pZD47XG4gICAgcHJvdGVjdGVkIGJlZm9yZURlbGV0ZShpZDogVFByaW1hcnlLZXkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHByb3RlY3RlZCBhZnRlckRlbGV0ZShpZDogVFByaW1hcnlLZXkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlbGV0ZUJ5SWQoaWQ6IFRQcmltYXJ5S2V5KTogUHJvbWlzZTx2b2lkPjtcbiAgICBwcm90ZWN0ZWQgYmVmb3JlRGVsZXRlTWFueShvcHRpb25zPzogRGVsZXRlTWFueU9wdGlvbnMgJiBUT3B0aW9ucyk6IChEZWxldGVNYW55T3B0aW9ucyAmIFRPcHRpb25zKSB8IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgYWZ0ZXJEZWxldGVNYW55KG9wdGlvbnM/OiBEZWxldGVNYW55T3B0aW9ucyAmIFRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gICAgZGVsZXRlTWFueShvcHRpb25zPzogRGVsZXRlTWFueU9wdGlvbnMgJiBUT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IFVzZXJFbnRpdHkgfSBmcm9tICcjc2hhcmVkL2luZGV4LnRzJztcbmltcG9ydCBEYXRhYmFzZVJlcG9zaXRvcnkgZnJvbSAnLi9EYXRhYmFzZVJlcG9zaXRvcnknO1xuZXhwb3J0IGludGVyZmFjZSBVc2VyUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucyB7XG4gICAgaWQ/OiBudW1iZXIgfCBudW1iZXJbXTtcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgc2hvd0RlbGV0ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyUmVwb3NpdG9yeUV2ZW50cyB7XG4gICAgJ3VzZXI6Y3JlYXRlZCc6IHtcbiAgICAgICAgdXNlcjogVXNlckVudGl0eTtcbiAgICB9O1xuICAgICd1c2VyOnVwZGF0ZWQnOiB7XG4gICAgICAgIHVzZXI6IFVzZXJFbnRpdHk7XG4gICAgfTtcbiAgICAndXNlcjpkZWxldGVkJzoge1xuICAgICAgICB1c2VyOiBVc2VyRW50aXR5O1xuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVc2VyUmVwb3NpdG9yeSBleHRlbmRzIERhdGFiYXNlUmVwb3NpdG9yeTxVc2VyRW50aXR5LCBudW1iZXIsIFVzZXJSZXBvc2l0b3J5UXVlcnlPcHRpb25zPiB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGF1dG9DcmVhdGVkQXQ6IGJvb2xlYW47XG4gICAgYXV0b1VwZGF0ZWRBdDogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihkYjogRGF0YWJhc2VSZXBvc2l0b3J5WydkYiddKTtcbiAgICBoYXNoVXNlclBhc3N3b3JkSWZEZWZpbmVkKGRhdGE6IFBhcnRpYWw8VXNlckVudGl0eT4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIHByb3RlY3RlZCBiZWZvcmVDcmVhdGUoZGF0YTogUGFydGlhbDxVc2VyRW50aXR5Pik6IFByb21pc2U8UGFydGlhbDxVc2VyRW50aXR5Pj47XG4gICAgcHJvdGVjdGVkIGJlZm9yZUNyZWF0ZU1hbnkoZGF0YTogUGFydGlhbDxVc2VyRW50aXR5PltdKTogUHJvbWlzZTxQYXJ0aWFsPFVzZXJFbnRpdHk+W10+O1xuICAgIHByb3RlY3RlZCBiZWZvcmVVcGRhdGUoZGF0YTogUGFydGlhbDxVc2VyRW50aXR5Pik6IFByb21pc2U8UGFydGlhbDxVc2VyRW50aXR5Pj47XG4gICAgcHJvdGVjdGVkIGFmdGVyQ3JlYXRlKGRhdGE6IFVzZXJFbnRpdHkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiBVc2VyUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucyk6IGFueTtcbn1cbiIsImltcG9ydCB0eXBlIHsgS3lzZWx5IH0gZnJvbSBcImt5c2VseVwiO1xuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb25FbnRpeURhdGEge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBleGVjdXRlZEF0OiBEYXRlIHwgbnVsbDtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pZ3JhdGlvbkVudGl0eSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNvdXJjZTogc3RyaW5nIHwgbnVsbDtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIGV4ZWN1dGVkQXQ6IERhdGUgfCBudWxsO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IE1pZ3JhdGlvbkVudGl5RGF0YSk7XG4gICAgdXAoZGI6IEt5c2VseTxhbnk+KTogUHJvbWlzZTx2b2lkPjtcbiAgICBkb3duKGRiOiBLeXNlbHk8YW55Pik6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgRW1taXR0ZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvRW1taXR0ZXJTZXJ2aWNlLnRzJztcbmltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSB7IEt5c2VseSB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgTWlncmF0aW9uRW50aXR5IGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvTWlncmF0aW9uRW50aXR5LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0aW9uU291cmNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb24ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBleGVjdXRlZEF0OiBEYXRlIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEZpbHRlcnMge1xuICAgIHNvdXJjZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5pbnRlcmZhY2UgTWlncmF0aW9uUmVzdWx0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgcmVzdWx0OiAnc3VjY2VzcycgfCAnZmFpbGVkJztcbiAgICBlcnJvcj86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0b3JTZXJ2aWNlT3B0aW9ucyB7XG4gICAgc291cmNlczogTWlncmF0aW9uU291cmNlW107XG4gICAgZGI6IEt5c2VseTxhbnk+O1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBlbW1pdHRlcj86IEVtbWl0dGVyU2VydmljZTtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xufVxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRvclNlcnZpY2VFdmVudHMge1xuICAgICdtaWdyYXRvcjpiZWZvcmUtbWlncmF0ZSc6IHtcbiAgICAgICAgbWlncmF0aW9uczogTWlncmF0aW9uRW50aXR5W107XG4gICAgfTtcbiAgICAnbWlncmF0b3I6YWZ0ZXItbWlncmF0ZSc6IHtcbiAgICAgICAgbWlncmF0aW9uczogTWlncmF0aW9uRW50aXR5W107XG4gICAgfTtcbiAgICAnbWlncmF0b3I6YmVmb3JlLXJvbGxiYWNrJzoge1xuICAgICAgICBtaWdyYXRpb25zOiBNaWdyYXRpb25FbnRpdHlbXTtcbiAgICB9O1xuICAgICdtaWdyYXRvcjphZnRlci1yb2xsYmFjayc6IHtcbiAgICAgICAgbWlncmF0aW9uczogTWlncmF0aW9uRW50aXR5W107XG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pZ3JhdG9yU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRiOiBLeXNlbHk8YW55PjtcbiAgICBzb3VyY2VzOiBNaWdyYXRpb25Tb3VyY2VbXTtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNaWdyYXRvclNlcnZpY2VPcHRpb25zKTtcbiAgICBhZGRTb3VyY2Uoc291cmNlOiBNaWdyYXRpb25Tb3VyY2UpOiB2b2lkO1xuICAgIHByaXZhdGUgZW5zdXJlTWlncmF0aW9uc1RhYmxlO1xuICAgIGxpc3RTb3VyY2Uoc291cmNlOiBNaWdyYXRpb25Tb3VyY2UpOiBQcm9taXNlPE1pZ3JhdGlvbkVudGl0eVtdPjtcbiAgICBsaXN0KGZpbHRlcnM/OiBMaXN0RmlsdGVycyk6IFByb21pc2U8TWlncmF0aW9uRW50aXR5W10+O1xuICAgIHByaXZhdGUgbWlncmF0ZVVwO1xuICAgIHByaXZhdGUgbWlncmF0ZURvd247XG4gICAgcHJpdmF0ZSBtaWdyYXRlRmlsZTtcbiAgICBwcml2YXRlIHJvbGxiYWNrRmlsZTtcbiAgICBtaWdyYXRlKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xuICAgIHJvbGxiYWNrKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xuICAgIHVwKHN0ZXBzPzogbnVtYmVyLCBmaWx0ZXJzPzogTGlzdEZpbHRlcnMpOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdFtdPjtcbiAgICBkb3duKHN0ZXBzPzogbnVtYmVyLCBmaWx0ZXJzPzogTGlzdEZpbHRlcnMpOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdFtdPjtcbiAgICBsYXRlc3QoZmlsdGVycz86IExpc3RGaWx0ZXJzKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHRbXT47XG4gICAgbGF0ZXN0T3JGYWlsKGZpbHRlcnM/OiBMaXN0RmlsdGVycyk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xuICAgIGZyZXNoKGZpbHRlcnM/OiBMaXN0RmlsdGVycyAmIHtcbiAgICAgICAgc3RlcHM/OiBudW1iZXI7XG4gICAgfSk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0W10+O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2VBY2wgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9BY2xFbnRpdHkudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWNsIGV4dGVuZHMgQmFzZUFjbCB7XG4gICAgYXV0aG9yaXplKGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkO1xufVxuIiwiaW1wb3J0IHR5cGUgQWNsIGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvQWNsRW50aXR5LnRzJztcbmltcG9ydCB0eXBlIHsgQ29va2llTWFwRW50aXR5IH0gZnJvbSAnI3NoYXJlZC9pbmRleC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3Qge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2Uge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENvbnRleHQge1xuICAgIHVybDogc3RyaW5nO1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuICAgIGJvZHk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29va2llOiBDb29raWVNYXBFbnRpdHk7XG4gICAgYWNsOiBBY2w7XG4gICAgcmVxdWVzdDogUmVxdWVzdDtcbiAgICByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBIdHRwQ29udGV4dCB9IGZyb20gXCIuL0h0dHBDb250ZXh0Q29udHJhY3RcIjtcbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3Qge1xuICAgIHJlZGlyZWN0OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBIYW5kbGVSZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgUmVkaXJlY3QgfCB2b2lkO1xuZXhwb3J0IGludGVyZmFjZSBNaWRkbGV3YXJlIHtcbiAgICBoYW5kbGUoY3R4OiBhbnkpOiBIYW5kbGVSZXN1bHQgfCBQcm9taXNlPEhhbmRsZVJlc3VsdD47XG59XG50eXBlIEV4dHJhY3RNaWRkbGV3YXJlQ29udGV4dDxNIGV4dGVuZHMgTWlkZGxld2FyZT4gPSBBd2FpdGVkPFJldHVyblR5cGU8TVsnaGFuZGxlJ10+PiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPyBBd2FpdGVkPFJldHVyblR5cGU8TVsnaGFuZGxlJ10+PiA6IHt9O1xudHlwZSBQcm9jZXNzTWlkZGxld2FyZUFycmF5PFQgZXh0ZW5kcyByZWFkb25seSBNaWRkbGV3YXJlW10+ID0gVCBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCBleHRlbmRzIE1pZGRsZXdhcmUsIC4uLmluZmVyIFJlc3QgZXh0ZW5kcyByZWFkb25seSBNaWRkbGV3YXJlW11dID8gRXh0cmFjdE1pZGRsZXdhcmVDb250ZXh0PEZpcnN0PiAmIFByb2Nlc3NNaWRkbGV3YXJlQXJyYXk8UmVzdD4gOiB7fTtcbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmVIYW5kbGVSZXN1bHQ8VCBleHRlbmRzIHJlYWRvbmx5IE1pZGRsZXdhcmVbXSA9IHJlYWRvbmx5IE1pZGRsZXdhcmVbXT4gPSBQcm9jZXNzTWlkZGxld2FyZUFycmF5PFQ+O1xuZXhwb3J0IGludGVyZmFjZSBIYW5kbGVyPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgKGN0eDogSHR0cENvbnRleHQgJiBUKTogUHJvbWlzZTxhbnk+IHwgYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBIYW5kbGVyLCBNaWRkbGV3YXJlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QudHMnO1xudHlwZSBSb3V0ZU1ldGhvZCA9ICdnZXQnIHwgJ0dFVCcgfCAncG9zdCcgfCAnUE9TVCcgfCAncHV0JyB8ICdQVVQnIHwgJ3BhdGNoJyB8ICdQQVRDSCcgfCAnZGVsZXRlJyB8ICdERUxFVEUnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGUge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBtZXRob2Q6IFJvdXRlTWV0aG9kO1xuICAgIGhhbmRsZXI6IEhhbmRsZXI8YW55PiB8IG51bGw7XG4gICAgbWlkZGxld2FyZXM6IE1pZGRsZXdhcmVbXTtcbiAgICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8Um91dGU+KTtcbiAgICBzdGF0aWMgcGFyYW1zKHJvdXRlUGF0aDogc3RyaW5nLCByZXF1ZXN0UGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBzdGF0aWMgcXVlcnkocmVxdWVzdFBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgdG9KU09OKCk6IHtcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBtZXRob2Q6IFJvdXRlTWV0aG9kO1xuICAgICAgICBtaWRkbGV3YXJlczogc3RyaW5nW107XG4gICAgICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgICB9O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IFJvdXRlIGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvUm91dGVFbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlSGFuZGxlUmVzdWx0IH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QudHMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xudHlwZSBSb3V0ZUNvbnRleHQgPSAnZ2xvYmFsJyB8ICdncm91cCcgfCAncm91dGUnO1xuaW50ZXJmYWNlIE1pZGRsZXdhcmVSZWdpc3RlciB7XG4gICAgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgICBjb250ZXh0OiBSb3V0ZUNvbnRleHQ7XG59XG5pbnRlcmZhY2UgTG9hZE9wdGlvbnMge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyRXZlbnRzIHtcbiAgICAncm91dGVyOnJlZ2lzdGVyZWQnOiB7XG4gICAgICAgIHJvdXRlcjogUm91dGVyU2VydmljZTtcbiAgICB9O1xuICAgICdyb3V0ZXI6bG9hZGVkJzoge1xuICAgICAgICByb3V0ZXI6IFJvdXRlclNlcnZpY2U7XG4gICAgfTtcbn1cbmRlY2xhcmUgY29uc3QgUm91dGVyU2VydmljZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbGlzdGVuZXJzOiBpbXBvcnQoXCIjc2hhcmVkL2luZGV4LnRzXCIpLkxpc3RlbmVyW107XG4gICAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xuICAgICAgICBlbWl0QXN5bmMoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG59ICYgaW1wb3J0KFwiI3NoYXJlZC9pbmRleC50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdXRlclNlcnZpY2U8QyA9IHt9PiBleHRlbmRzIFJvdXRlclNlcnZpY2VfYmFzZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHJvdXRlczogUm91dGVbXTtcbiAgICBtaWRkbGV3YXJlczogTWlkZGxld2FyZVJlZ2lzdGVyW107XG4gICAgcHJlZml4ZXM6IHN0cmluZ1tdO1xuICAgIGdyb3VwczogUm91dGVyU2VydmljZTxhbnk+W107XG4gICAgZ3JvdXBQcmVmaXhlczogc3RyaW5nW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPFJvdXRlclNlcnZpY2U8Qz4+KTtcbiAgICB1c2U8VCBleHRlbmRzIE1pZGRsZXdhcmU+KG1pZGRsZXdhcmU6IFQsIGNvbnRleHQ/OiBSb3V0ZUNvbnRleHQpOiBSb3V0ZXJTZXJ2aWNlPEMgJiBNaWRkbGV3YXJlSGFuZGxlUmVzdWx0PFt0eXBlb2YgbWlkZGxld2FyZV0+PjtcbiAgICBwcmVmaXgocHJlZml4OiBzdHJpbmcpOiB0aGlzO1xuICAgIG1ha2VQYXRoKGFyZ3M6IHN0cmluZyk6IHN0cmluZztcbiAgICBhZGQocGF5bG9hZDogUGljazxSb3V0ZSwgJ3BhdGgnIHwgJ21ldGhvZCcgfCAnaGFuZGxlcic+KTogdm9pZDtcbiAgICBnZXQocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBIYW5kbGVyPEM+KTogdm9pZDtcbiAgICBwb3N0KHBhdGg6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcjxDPik6IHZvaWQ7XG4gICAgcHV0KHBhdGg6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcjxDPik6IHZvaWQ7XG4gICAgcGF0Y2gocGF0aDogc3RyaW5nLCBoYW5kbGVyOiBIYW5kbGVyPEM+KTogdm9pZDtcbiAgICBtYW55KG1ldGhvZHM6IFJvdXRlWydtZXRob2QnXVtdLCBwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IEhhbmRsZXI8Qz4pOiB2b2lkO1xuICAgIGRlbGV0ZShwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IEhhbmRsZXI8Qz4pOiB2b2lkO1xuICAgIGdyb3VwKCk6IFJvdXRlclNlcnZpY2U8Qz47XG4gICAgcmVzb2x2ZShtZXRob2Q6IHN0cmluZywgcGF0aDogc3RyaW5nKTogUm91dGUgfCBudWxsO1xuICAgIGV4ZWN1dGUocm91dGU6IFJvdXRlLCBpbml0aWFsQ3R4OiBhbnkpOiBQcm9taXNlPGFueT47XG4gICAgY2xlYXIoKTogdm9pZDtcbiAgICBsaXN0KCk6IFJvdXRlW107XG4gICAgbG9hZChvcHRpb25zPzogTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWRTeW5jKG9wdGlvbnM/OiBMb2FkT3B0aW9ucyk6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBKb2IgfSBmcm9tICdub2RlLXNjaGVkdWxlJztcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZUhhbmRsZXIge1xuICAgICgpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZUVudGl0eU9wdGlvbnMge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY3Jvbjogc3RyaW5nO1xuICAgIGhhbmRsZXI/OiBSb3V0aW5lSGFuZGxlcjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdXRpbmVFbnRpdHkge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY3Jvbjogc3RyaW5nO1xuICAgIGpvYj86IEpvYjtcbiAgICBzdGF0aWMgY3JlYXRlKCk6IFJvdXRpbmVFbnRpdHk7XG4gICAgaGFuZGxlOiBSb3V0aW5lSGFuZGxlcjtcbiAgICBzZXRJZChpZDogc3RyaW5nKTogdGhpcztcbiAgICBzZXRDcm9uKGNyb246IHN0cmluZyk6IHRoaXM7XG4gICAgc2V0SGFuZGxlcihoYW5kbGVyOiBSb3V0aW5lSGFuZGxlcik6IHRoaXM7XG59XG4iLCJpbXBvcnQgUm91dGluZUVudGl0eSBmcm9tICcjc2VydmVyL2VudGl0aWVzL1JvdXRpbmVFbnRpdHkudHMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuZXhwb3J0IGludGVyZmFjZSBBZGRPcHRpb25zIHtcbiAgICBpZD86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVyU2VydmljZU9wdGlvbnMge1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG4gICAgZGVidWc/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJFdmVudHMge1xuICAgICdzY2hlZHVsZXI6cmVnaXN0ZXJlZCc6IHtcbiAgICAgICAgc2NoZWR1bGVyOiBTY2hlZHVsZXJTZXJ2aWNlO1xuICAgIH07XG4gICAgJ3NjaGVkdWxlcjpsb2FkZWQnOiB7XG4gICAgICAgIHNjaGVkdWxlcjogU2NoZWR1bGVyU2VydmljZTtcbiAgICB9O1xuICAgICdzY2hlZHVsZXI6Ym9vdGVkJzoge1xuICAgICAgICBzY2hlZHVsZXI6IFNjaGVkdWxlclNlcnZpY2U7XG4gICAgfTtcbiAgICAnc2NoZWR1bGVyOnNodXRkb3duZWQnOiB7XG4gICAgICAgIHNjaGVkdWxlcjogU2NoZWR1bGVyU2VydmljZTtcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NoZWR1bGVyU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHJvdXRpbmVzOiBSb3V0aW5lRW50aXR5W107XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGRpcnM6IHN0cmluZ1tdO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBTY2hlZHVsZXJTZXJ2aWNlT3B0aW9ucyk7XG4gICAgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogU2NoZWR1bGVyU2VydmljZU9wdGlvbnMpOiBTY2hlZHVsZXJTZXJ2aWNlO1xuICAgIHNldExvZ2dlcihsb2dnZXI6IExvZ2dlclNlcnZpY2UpOiB2b2lkO1xuICAgIHNldERlYnVnKGRlYnVnOiBib29sZWFuKTogdm9pZDtcbiAgICBhZGREaXIoZGlyOiBzdHJpbmcpOiB2b2lkO1xuICAgIGFkZChyb3V0aW5lOiBPbWl0PFJvdXRpbmVFbnRpdHksICdqb2InPik6IHZvaWQ7XG4gICAgcmVtb3ZlKGlkOiBSb3V0aW5lRW50aXR5WydpZCddIHwgUm91dGluZUVudGl0eVsnaWQnXVtdKTogdm9pZDtcbiAgICBsb2FkRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkRGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgaGFzKGlkOiBSb3V0aW5lRW50aXR5WydpZCddKTogYm9vbGVhbjtcbiAgICBzdGFydFJvdXRpbmUoaWQ6IFJvdXRpbmVFbnRpdHlbJ2lkJ10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGFkZEFuZFN0YXJ0KHJvdXRpbmU6IE9taXQ8Um91dGluZUVudGl0eSwgJ2pvYic+KTogUHJvbWlzZTx2b2lkPjtcbiAgICBzdG9wUm91dGluZShpZDogUm91dGluZUVudGl0eVsnaWQnXSk6IFByb21pc2U8dm9pZD47XG4gICAgc3RvcEFuZFJlbW92ZShpZDogUm91dGluZUVudGl0eVsnaWQnXSk6IFByb21pc2U8dm9pZD47XG4gICAgYm9vdCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD47XG4gICAgbGlzdCgpOiBSb3V0aW5lRW50aXR5W107XG59XG4iLCJpbXBvcnQgdHlwZSB7IEt5c2VseSB9IGZyb20gXCJreXNlbHlcIjtcbmV4cG9ydCBpbnRlcmZhY2UgU2VlZGVyRW50aXlEYXRhIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc291cmNlOiBzdHJpbmcgfCBudWxsO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWVkZXJFbnRpdHkge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBTZWVkZXJFbnRpeURhdGEpO1xuICAgIHJ1bihkYjogS3lzZWx5PGFueT4pOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IEVtbWl0dGVyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0VtbWl0dGVyU2VydmljZS50cyc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgeyBLeXNlbHkgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IFNlZWRlckVudGl0eSBmcm9tICcjc2VydmVyL2VudGl0aWVzL1NlZWRlckVudGl0eS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFNlZWRlclNvdXJjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEZpbHRlcnMge1xuICAgIHNvdXJjZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIG5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VlZGVyUmVzdWx0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gICAgcmVzdWx0OiAnc3VjY2VzcycgfCAnZmFpbGVkJztcbiAgICBlcnJvcj86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VlZGVyRXZlbnRzIHtcbiAgICAnc2VlZGVyOmJlZm9yZS1ydW4nOiB7XG4gICAgICAgIHNlZWRlcnM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgJ3NlZWRlcjphZnRlci1ydW4nOiB7XG4gICAgICAgIHNlZWRlcnM6IHN0cmluZ1tdO1xuICAgIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlZWRlclNlcnZpY2VPcHRpb25zIHtcbiAgICBkYjogS3lzZWx5PGFueT47XG4gICAgc291cmNlcz86IFNlZWRlclNvdXJjZVtdO1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBlbW1pdHRlcj86IEVtbWl0dGVyU2VydmljZTtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VlZWRlclNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBlbW1pdHRlcjogRW1taXR0ZXJTZXJ2aWNlO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBkYjogS3lzZWx5PGFueT47XG4gICAgc291cmNlczogU2VlZGVyU291cmNlW107XG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogU2VlZGVyU2VydmljZU9wdGlvbnMpO1xuICAgIGFkZFNvdXJjZShzb3VyY2U6IFNlZWRlclNvdXJjZSk6IHZvaWQ7XG4gICAgbGlzdFNvdXJjZShzb3VyY2U6IFNlZWRlclNvdXJjZSk6IFByb21pc2U8U2VlZGVyRW50aXR5W10+O1xuICAgIGxpc3QoZmlsdGVycz86IExpc3RGaWx0ZXJzKTogUHJvbWlzZTxTZWVkZXJFbnRpdHlbXT47XG4gICAgcnVuU2VlZGVyKHNlZWRlcjogU2VlZGVyRW50aXR5KTogUHJvbWlzZTxTZWVkZXJSZXN1bHQ+O1xuICAgIHJ1bihmaWx0ZXJzPzogTGlzdEZpbHRlcnMgJiB7XG4gICAgICAgIHN0ZXBzPzogbnVtYmVyO1xuICAgIH0pOiBQcm9taXNlPFNlZWRlclJlc3VsdFtdPjtcbn1cbiIsImltcG9ydCB0eXBlIFBhZ2VSZXF1ZXN0Q29udGV4dEVudGl0eSBmcm9tIFwiI3NlcnZlci9lbnRpdGllcy9QYWdlUmVxdWVzdENvbnRleHRFbnRpdHkudHNcIjtcbmltcG9ydCB0eXBlIHsgVXNlclJlcG9zaXRvcnlFdmVudHMgfSBmcm9tIFwiI3NlcnZlci9yZXBvc2l0b3JpZXMvVXNlclJlcG9zaXRvcnkudHNcIjtcbmltcG9ydCB0eXBlIHsgQ2xpRXZlbnRzIH0gZnJvbSBcIiNzZXJ2ZXIvc2VydmljZXMvQ2xpU2VydmljZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBNaWdyYXRvclNlcnZpY2VFdmVudHMgfSBmcm9tIFwiI3NlcnZlci9zZXJ2aWNlcy9NaWdyYXRvclNlcnZpY2UudHNcIjtcbmltcG9ydCB0eXBlIHsgUm91dGVyRXZlbnRzIH0gZnJvbSBcIiNzZXJ2ZXIvc2VydmljZXMvUm91dGVyU2VydmljZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFdmVudHMgfSBmcm9tIFwiI3NlcnZlci9zZXJ2aWNlcy9TY2hlZHVsZXJTZXJ2aWNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNlZWRlckV2ZW50cyB9IGZyb20gXCIjc2VydmVyL3NlcnZpY2VzL1NlZWRlclNlcnZpY2UudHNcIjtcbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRDb250cmFjdCBleHRlbmRzIFNlZWRlckV2ZW50cywgUm91dGVyRXZlbnRzLCBDbGlFdmVudHMsIFNjaGVkdWxlckV2ZW50cywgTWlncmF0b3JTZXJ2aWNlRXZlbnRzLCBVc2VyUmVwb3NpdG9yeUV2ZW50cyB7XG4gICAgJ3BhZ2U6cmVxdWVzdDpzdGFydCc6IFBhZ2VSZXF1ZXN0Q29udGV4dEVudGl0eTtcbiAgICAncGFnZTpyZXF1ZXN0OmJlZm9yZS1yZW5kZXInOiBQYWdlUmVxdWVzdENvbnRleHRFbnRpdHk7XG4gICAgJ3BhZ2U6cmVxdWVzdDphZnRlci1yZW5kZXInOiBQYWdlUmVxdWVzdENvbnRleHRFbnRpdHk7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2VFbW1pdHRlclNlcnZpY2UgZnJvbSBcIi4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9FbW1pdHRlclNlcnZpY2VcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRDb250cmFjdCB9IGZyb20gJy4uL2NvbnRyYWN0cy9FdmVudENvbnRyYWN0JztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtbWl0dGVyU2VydmljZSBleHRlbmRzIEJhc2VFbW1pdHRlclNlcnZpY2U8RXZlbnRDb250cmFjdD4ge1xufVxuIiwiaW1wb3J0IG1zIGZyb20gJ21zJztcbmltcG9ydCBFbnZTZXJ2aWNlIGZyb20gJy4vRW52U2VydmljZSc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW50ZXJmYWNlIFVSTE9wdGlvbnMge1xuICAgIGRhdGE/OiBhbnk7XG4gICAgZXhwaXJlcz86IG1zLlN0cmluZ1ZhbHVlO1xuICAgIGV4cGlyZUF0PzogbnVtYmVyIHwgRGF0ZTtcbn1cbmludGVyZmFjZSBFbmNyeXB0U2VydmljZU9wdGlvbnMge1xuICAgIGtleT86IHN0cmluZztcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBlbnY/OiBFbnZTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jcnlwdFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBlbnY6IEVudlNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxnb3JpdGhtO1xuICAgIHByaXZhdGUga2V5O1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEVuY3J5cHRTZXJ2aWNlT3B0aW9ucyk7XG4gICAgc3RhdGljIGNyZWF0ZShvcHRpb25zOiBFbmNyeXB0U2VydmljZU9wdGlvbnMpOiBFbmNyeXB0U2VydmljZTtcbiAgICBzZXREZWJ1ZyhkZWJ1ZzogYm9vbGVhbik6IHZvaWQ7XG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyU2VydmljZSk6IHZvaWQ7XG4gICAgc2V0RW52KGVudjogRW52U2VydmljZSk6IHZvaWQ7XG4gICAgc2V0S2V5KGtleTogc3RyaW5nKTogdm9pZDtcbiAgICBlbmNyeXB0KHRleHQ6IHN0cmluZyk6IHN0cmluZztcbiAgICBkZWNyeXB0KG9wdGlvbnM6IHN0cmluZyk6IHN0cmluZztcbiAgICBlbmNyeXB0T2JqZWN0KG9iajogYW55KTogc3RyaW5nO1xuICAgIGRlY3J5cHRPYmplY3Q8VD4oZW5jcnlwdGVkU3RyaW5nOiBzdHJpbmcpOiBUO1xuICAgIHVybChwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBVUkxPcHRpb25zKTogc3RyaW5nO1xuICAgIHZlcmlmeVVybChlbmNyeXB0ZWRLZXk6IHN0cmluZyk6IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcjc2hhcmVkL2luZGV4LnRzJztcbmltcG9ydCBFbnZTZXJ2aWNlIGZyb20gJy4vRW52U2VydmljZSc7XG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvblNlcnZpY2VPcHRpb25zIHtcbiAgICBpZ25vcmVDb2RlRXJyb3JzPzogbnVtYmVyW107XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBlbnY/OiBFbnZTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhjZXB0aW9uU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGlnbm9yZUNvZGVFcnJvcnM6IG51bWJlcltdO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBlbnY6IEVudlNlcnZpY2U7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IEV4Y2VwdGlvblNlcnZpY2VPcHRpb25zKTtcbiAgICBoYW5kbGUoZXJyb3I6IEVycm9yLCByZXNwb25zZTogUmVzcG9uc2UpOiBSZXNwb25zZTxhbnksIFJlY29yZDxzdHJpbmcsIGFueT4+O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGFzaGVyU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGhhc2godmFsdWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICBjb21wYXJlKGE6IHN0cmluZywgYjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbn1cbiIsImltcG9ydCB0eXBlIHsgU2VydmVyIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCBjb3JzIGZyb20gJ2NvcnMnO1xuaW1wb3J0IFJvdXRlciBmcm9tICcuL1JvdXRlclNlcnZpY2UudHMnO1xuaW1wb3J0IEV4Y2VwdGlvblNlcnZpY2UgZnJvbSAnLi9FeGNlcHRpb25TZXJ2aWNlLnRzJztcbmltcG9ydCBSb3V0ZSBmcm9tICcjc2VydmVyL2VudGl0aWVzL1JvdXRlRW50aXR5LnRzJztcbmltcG9ydCB7IEVtbWl0dGVyU2VydmljZSwgTG9nZ2VyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuaW1wb3J0IEVudlNlcnZpY2UgZnJvbSAnLi9FbnZTZXJ2aWNlLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cFNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgcm91dGVyPzogUm91dGVyO1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG4gICAgZXhjZXB0aW9uPzogRXhjZXB0aW9uU2VydmljZTtcbiAgICBlbW1pdHRlcj86IEVtbWl0dGVyU2VydmljZTtcbiAgICBlbnY/OiBFbnZTZXJ2aWNlO1xuICAgIG9yaWdpbnM/OiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgYXBwOiBleHByZXNzLkFwcGxpY2F0aW9uO1xuICAgIHNlcnZlcjogU2VydmVyIHwgbnVsbDtcbiAgICByb3V0ZXI6IFJvdXRlcjtcbiAgICBleGNlcHRpb246IEV4Y2VwdGlvblNlcnZpY2U7XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGVtbWl0dGVyOiBFbW1pdHRlclNlcnZpY2U7XG4gICAgZW52OiBFbnZTZXJ2aWNlO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIG9uVW5oYW5kbGVyUm91dGVkOiAoKHJlcTogZXhwcmVzcy5SZXF1ZXN0LCByZXM6IGV4cHJlc3MuUmVzcG9uc2UpID0+IHZvaWQpIHwgbnVsbDtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBIdHRwU2VydmljZU9wdGlvbnMpO1xuICAgIGdldEV4cHJlc3NBcHAoKTogZXhwcmVzcy5BcHBsaWNhdGlvbjtcbiAgICBjb3JzKG9wdGlvbnM6IGNvcnMuQ29yc09wdGlvbnMpOiB2b2lkO1xuICAgIHVzZTogZXhwcmVzcy5BcHBsaWNhdGlvblsndXNlJ107XG4gICAgcm91dGVzKCk6IHZvaWQ7XG4gICAgcGFyc2VyKHJlcTogZXhwcmVzcy5SZXF1ZXN0LCByZXM6IGV4cHJlc3MuUmVzcG9uc2UsIG5leHQ6IGV4cHJlc3MuTmV4dEZ1bmN0aW9uKTogdm9pZDtcbiAgICBleGVjdXRlKHVybDogVVJMLCByZXF1ZXN0OiBleHByZXNzLlJlcXVlc3QsIHJlc3BvbnNlOiBleHByZXNzLlJlc3BvbnNlLCByb3V0ZTogUm91dGUpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHN0YXJ0KCk6IHZvaWQ7XG4gICAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IHsgVXNlckVudGl0eSB9IGZyb20gXCIjc2hhcmVkL2luZGV4LnRzXCI7XG5pbXBvcnQgdHlwZSBIdHRwU2VydmljZSBmcm9tIFwiLi9IdHRwU2VydmljZVwiO1xuaW1wb3J0IHN1cGVydGVzdCwgeyB0eXBlIFRlc3QgfSBmcm9tICdzdXBlcnRlc3QnO1xuZXhwb3J0IGludGVyZmFjZSBIdHRwVGVzdGVyU2VydmljZU9wdGlvbnMge1xuICAgIGh0dHA6IEh0dHBTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cFRlc3RlclNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBodHRwOiBIdHRwU2VydmljZTtcbiAgICByZXF1ZXN0OiBzdXBlcnRlc3QuU3VwZXJUZXN0PHN1cGVydGVzdC5UZXN0PjtcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGNvb2tpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSHR0cFRlc3RlclNlcnZpY2VPcHRpb25zKTtcbiAgICBjcmVhdGUocmVxdWVzdDogVGVzdCk6IFRlc3Q7XG4gICAgZ2V0KHVybDogc3RyaW5nKTogVGVzdDtcbiAgICBwb3N0KHVybDogc3RyaW5nLCBib2R5PzogYW55KTogVGVzdDtcbiAgICBsb2dpbkJ5VXNlcih1c2VyOiBVc2VyRW50aXR5KTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2dpbkJ5VXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgQmFzZUxpZmVjeWNsZVNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9MaWZlY3ljbGVTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpZmVjeWNsZVNlcnZpY2UgZXh0ZW5kcyBCYXNlTGlmZWN5Y2xlU2VydmljZSB7XG4gICAgYWRkRGlyZWN0b3J5KGRpcm5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IENvbHVtblR5cGUsIEdlbmVyYXRlZCB9IGZyb20gJ2t5c2VseSc7XG5leHBvcnQgaW50ZXJmYWNlIFNvZnREZWxldGVUYWJsZSB7XG4gICAgZGVsZXRlZF9hdD86IENvbHVtblR5cGU8RGF0ZSB8IHN0cmluZyB8IG51bGwsIERhdGUgfCBzdHJpbmcgfCB1bmRlZmluZWQsIERhdGUgfCBzdHJpbmcgfCBudWxsPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGltZXN0YW1wVGFibGUge1xuICAgIGNyZWF0ZWRfYXQ6IENvbHVtblR5cGU8RGF0ZSwgc3RyaW5nIHwgdW5kZWZpbmVkLCBuZXZlcj47XG4gICAgdXBkYXRlZF9hdDogQ29sdW1uVHlwZTxEYXRlLCBzdHJpbmcgfCB1bmRlZmluZWQsIG5ldmVyPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0aW9uc1RhYmxlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbW9kdWxlOiBzdHJpbmcgfCBudWxsO1xuICAgIGV4ZWN1dGVkX2F0OiBDb2x1bW5UeXBlPERhdGUsIHN0cmluZyB8IHVuZGVmaW5lZCwgbmV2ZXI+O1xufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSwgU29mdERlbGV0ZVRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIHZlcmlmaWVkX2F0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFVzZXJNZXRhVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSwgU29mdERlbGV0ZVRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5UYWJsZSBleHRlbmRzIFRpbWVzdGFtcFRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGV4cGlyZXNfYXQ6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJvbGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclJvbGVUYWJsZSB7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIHJvbGVfaWQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvblRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUsIFNvZnREZWxldGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBvcmlnaW46IHN0cmluZztcbiAgICBzdWJqZWN0OiBzdHJpbmc7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgY29uZGl0aW9uczogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbkFzc2lnbm1lbnRUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIHBlcm1pc3Npb25faWQ6IG51bWJlcjtcbiAgICBhc3NpZ25hYmxlX3R5cGU6IHN0cmluZztcbiAgICBhc3NpZ25hYmxlX2lkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVUYWJsZSBleHRlbmRzIFRpbWVzdGFtcFRhYmxlLCBTb2Z0RGVsZXRlVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICBkcml2ZTogc3RyaW5nO1xuICAgIG1pbWV0eXBlOiBzdHJpbmc7XG4gICAgY2xpZW50X25hbWU6IHN0cmluZztcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICBwdWJsaWM6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVNZXRhVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSwgU29mdERlbGV0ZVRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgZmlsZV9pZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkU2Vzc2lvblRhYmxlIHtcbiAgICBpZDogR2VuZXJhdGVkPG51bWJlcj47XG4gICAgcHVycG9zZTogc3RyaW5nO1xuICAgIG1pbWVfdHlwZXM6IHN0cmluZztcbiAgICBtYXhfc2l6ZTogbnVtYmVyO1xuICAgIGV4cGlyZXNfYXQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSm9iVGFibGUgZXh0ZW5kcyBUaW1lc3RhbXBUYWJsZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBxdWV1ZV9pZDogc3RyaW5nO1xuICAgIHN0YXR1czogJ3BlbmRpbmcnIHwgJ2luX3Byb2dyZXNzJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCc7XG4gICAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICByZXN1bHQ6IHN0cmluZyB8IG51bGw7XG4gICAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsVGVtcGxhdGVUYWJsZSBleHRlbmRzIFRpbWVzdGFtcFRhYmxlLCBTb2Z0RGVsZXRlVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGJvZHk6IHN0cmluZyB8IG51bGw7XG4gICAgZW5naW5lOiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGludGVyZmFjZSBFbWFpbFRlbXBsYXRlTWV0YVRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUsIFNvZnREZWxldGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIHRlbXBsYXRlX2lkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9hdXRoQWNjb3VudFRhYmxlIGV4dGVuZHMgVGltZXN0YW1wVGFibGUsIFNvZnREZWxldGVUYWJsZSB7XG4gICAgaWQ6IEdlbmVyYXRlZDxudW1iZXI+O1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICBwcm92aWRlcjogc3RyaW5nO1xuICAgIHByb3ZpZGVyX3VzZXJfaWQ6IHN0cmluZztcbiAgICBwcm92aWRlcl91c2VyX2VtYWlsOiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGludGVyZmFjZSBPYXV0aFRva2VuVGFibGUge1xuICAgIGlkOiBHZW5lcmF0ZWQ8bnVtYmVyPjtcbiAgICB1c2VyX2lkOiBudW1iZXIgfCBudWxsO1xuICAgIHByb3ZpZGVyOiBzdHJpbmcgfCBudWxsO1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgZXhwaXJlc19hdDogc3RyaW5nO1xuICAgIG1ldGFkYXRhOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29udHJhY3Qge1xuICAgIHVzZXJzOiBVc2VyVGFibGU7XG4gICAgdXNlcl9tZXRhczogVXNlck1ldGFUYWJsZTtcbiAgICB0b2tlbnM6IFRva2VuVGFibGU7XG4gICAgbWlncmF0aW9uczogTWlncmF0aW9uc1RhYmxlO1xuICAgIGZpbGVzOiBGaWxlVGFibGU7XG4gICAgZmlsZV9tZXRhczogRmlsZU1ldGFUYWJsZTtcbiAgICBmaWxlX3VwbG9hZF9zZXNzaW9uczogVXBsb2FkU2Vzc2lvblRhYmxlO1xuICAgIHJvbGVzOiBSb2xlVGFibGU7XG4gICAgdXNlcl9yb2xlczogVXNlclJvbGVUYWJsZTtcbiAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvblRhYmxlO1xuICAgIHBlcm1pc3Npb25zX2Fzc2lnbm1lbnRzOiBQZXJtaXNzaW9uQXNzaWdubWVudFRhYmxlO1xuICAgIGpvYnM6IEpvYlRhYmxlO1xuICAgIGVtYWlsX3RlbXBsYXRlczogRW1haWxUZW1wbGF0ZVRhYmxlO1xuICAgIGVtYWlsX3RlbXBsYXRlX21ldGFzOiBFbWFpbFRlbXBsYXRlTWV0YVRhYmxlO1xuICAgIG9hdXRoX2FjY291bnRzOiBPYXV0aEFjY291bnRUYWJsZTtcbiAgICBvYXV0aF90b2tlbnM6IE9hdXRoVG9rZW5UYWJsZTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgRXhwcmVzc2lvbkJ1aWxkZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYWZpbHRlciB7XG4gICAgZXE/OiBzdHJpbmc7XG4gICAgbmVxPzogc3RyaW5nO1xuICAgIGxpa2U/OiBzdHJpbmc7XG4gICAgbmxpa2U/OiBzdHJpbmc7XG4gICAgaW4/OiBzdHJpbmdbXTtcbiAgICBuaW4/OiBzdHJpbmdbXTtcbiAgICBndD86IHN0cmluZztcbiAgICBndGU/OiBzdHJpbmc7XG4gICAgbHQ/OiBzdHJpbmc7XG4gICAgbHRlPzogc3RyaW5nO1xuICAgIGlzX251bGw/OiBib29sZWFuO1xuICAgIGV4aXN0cz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhUXVlcnlQYXlsb2FkIHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBNZXRhZGFmaWx0ZXI7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRhZGF0YVF1ZXJ5U2VydmljZTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IHtcbiAgICBwcml2YXRlIHBheWxvYWQ7XG4gICAgcHJpdmF0ZSB0YWJsZTtcbiAgICBwcml2YXRlIGZvcmVpZ25LZXk7XG4gICAgcHJpdmF0ZSBwYXJlbnRLZXk7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZDogTWV0YWRhdGFRdWVyeVBheWxvYWQsIHRhYmxlOiBULCBmb3JlaWduS2V5OiBrZXlvZiBEYXRhYmFzZVtUXSwgcGFyZW50S2V5Pzogc3RyaW5nKTtcbiAgICBnZXQgbmVlZFdoZXJlSW4oKTogYm9vbGVhbjtcbiAgICBnZXQgbmVlZFdoZXJlTm90SW4oKTogYm9vbGVhbjtcbiAgICBhcHBseShkYlF1ZXJ5OiBhbnkpOiBhbnk7XG4gICAgcHJpdmF0ZSBidWlsZFJvd0NvbmRpdGlvbnM7XG4gICAgd2hlcmVJbjogPERCUXVlcnk+KGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IERCUXVlcnk7XG4gICAgd2hlcmVOb3RJbjogPERCUXVlcnk+KGViOiBFeHByZXNzaW9uQnVpbGRlcjxhbnksIGFueT4pID0+IERCUXVlcnk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRhZGF0YVNlcnZpY2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICBmb3JlaWduS2V5OiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZDogUGljazxNZXRhZGF0YVNlcnZpY2UsICd0YWJsZScgfCAnZm9yZWlnbktleScgfCAnaWQnPik7XG4gICAgc3RhdGljIHBhcnNlKHZhbHVlOiBhbnkpOiBhbnk7XG4gICAgc3RhdGljIGZsYXR0ZW4oaXRlbXM6IEFycmF5PHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogYW55O1xuICAgIH0+KTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBnZXQ8VCA9IGFueT4obmFtZTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPjtcbiAgICBnZXQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiBQcm9taXNlPFQ+O1xuICAgIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxpc3QoKTogUHJvbWlzZTxBcnJheTx7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgdmFsdWU6IGFueTtcbiAgICB9Pj47XG4gICAgYWxsKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG59XG4iLCJleHBvcnQgdHlwZSBJcGNNZXNzYWdlPFQgPSBhbnk+ID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZXZlbnQ6IHN0cmluZztcbiAgICBkYXRhOiBUO1xufTtcbnR5cGUgSXBjTGlzdGVuZXI8VCA9IGFueT4gPSAoZGF0YTogVCkgPT4gdm9pZDtcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFBsdWdpbklwY0NsaWVudCB7XG4gICAgcHJpdmF0ZSBsaXN0ZW5lcnM7XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBvbjxUID0gYW55PihldmVudDogc3RyaW5nLCBjYWxsYmFjazogSXBjTGlzdGVuZXI8VD4pOiB2b2lkO1xuICAgIG9mZjxUID0gYW55PihldmVudDogc3RyaW5nLCBjYWxsYmFjazogSXBjTGlzdGVuZXI8VD4pOiB2b2lkO1xuICAgIGVtaXQ8VCA9IGFueT4oZXZlbnQ6IHN0cmluZywgZGF0YT86IFQpOiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG50eXBlIElwY0xpc3RlbmVyPFQgPSBhbnk+ID0gKGRhdGE6IFQpID0+IHZvaWQ7XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBQbHVnaW5JcGNIb3N0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoaWxkO1xuICAgIHByaXZhdGUgbGlzdGVuZXJzO1xuICAgIGNvbnN0cnVjdG9yKGNoaWxkOiBDaGlsZFByb2Nlc3MpO1xuICAgIG9uPFQgPSBhbnk+KGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiBJcGNMaXN0ZW5lcjxUPik6IHZvaWQ7XG4gICAgb2ZmPFQgPSBhbnk+KGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiBJcGNMaXN0ZW5lcjxUPik6IHZvaWQ7XG4gICAgZW1pdDxUID0gYW55PihldmVudDogc3RyaW5nLCBkYXRhPzogVCk6IHN0cmluZztcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IFBsdWdpbklwY0NsaWVudCB9IGZyb20gJy4vUGx1Z2luSXBjQ2xpZW50LnRzJztcbmV4cG9ydCB0eXBlIEh0dHBNZXRob2QgPSAnR0VUJyB8ICdQT1NUJyB8ICdQVVQnIHwgJ1BBVENIJyB8ICdERUxFVEUnO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZURlZmluaXRpb24ge1xuICAgIG1ldGhvZDogSHR0cE1ldGhvZDtcbiAgICBwYXRoOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlUmVxdWVzdCB7XG4gICAgcmVxdWVzdElkOiBzdHJpbmc7XG4gICAgbWV0aG9kOiBIdHRwTWV0aG9kO1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBib2R5PzogYW55O1xuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVJlc3BvbnNlUGF5bG9hZCB7XG4gICAgcmVxdWVzdElkOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBudW1iZXI7XG4gICAgYm9keT86IGFueTtcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVSZXBseSB7XG4gICAgc3RhdHVzKGNvZGU6IG51bWJlcik6IFJvdXRlUmVwbHk7XG4gICAgc2VuZChib2R5PzogYW55KTogdm9pZDtcbn1cbmV4cG9ydCB0eXBlIFJvdXRlSGFuZGxlciA9IChyZXE6IFJvdXRlUmVxdWVzdCwgcmVwbHk6IFJvdXRlUmVwbHkpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgUGx1Z2luUm91dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDtcbiAgICBwcml2YXRlIHJvdXRlcztcbiAgICBjb25zdHJ1Y3RvcihjbGllbnQ6IFBsdWdpbklwY0NsaWVudCk7XG4gICAgcHJpdmF0ZSBkaXNwYXRjaDtcbiAgICBwcml2YXRlIHJlZ2lzdGVyO1xuICAgIGdldChwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IFJvdXRlSGFuZGxlcik6IHZvaWQ7XG4gICAgcG9zdChwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IFJvdXRlSGFuZGxlcik6IHZvaWQ7XG4gICAgcHV0KHBhdGg6IHN0cmluZywgaGFuZGxlcjogUm91dGVIYW5kbGVyKTogdm9pZDtcbiAgICBwYXRjaChwYXRoOiBzdHJpbmcsIGhhbmRsZXI6IFJvdXRlSGFuZGxlcik6IHZvaWQ7XG4gICAgZGVsZXRlKHBhdGg6IHN0cmluZywgaGFuZGxlcjogUm91dGVIYW5kbGVyKTogdm9pZDtcbn1cbiIsImltcG9ydCB0eXBlIFJvdXRlciBmcm9tICcjc2VydmVyL3NlcnZpY2VzL1JvdXRlclNlcnZpY2UudHMnO1xuaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Mb2dnZXJTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdXRlckZpbGVCYXNlUm91dGluZ1NlcnZpY2Uge1xuICAgIHByaXZhdGUgZGlyZWN0b3J5O1xuICAgIHByaXZhdGUgcHJlZml4O1xuICAgIHByaXZhdGUgbW9kdWxlPztcbiAgICBwcml2YXRlIHJvdXRlcjtcbiAgICBwcml2YXRlIGxvZ2dlcjtcbiAgICBwcml2YXRlIHJvdXRlcztcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBzZXREaXJlY3RvcnkoZGlyZWN0b3J5OiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldFByZWZpeChwcmVmaXg6IHN0cmluZyk6IHRoaXM7XG4gICAgc2V0Um91dGVyKHJvdXRlcjogUm91dGVyKTogdGhpcztcbiAgICBzZXRNb2R1bGUobW9kdWxlOiBzdHJpbmcpOiB0aGlzO1xuICAgIHNldExvZ2dlcihsb2dnZXI6IExvZ2dlclNlcnZpY2UpOiB0aGlzO1xuICAgIHNldERlYnVnKGRlYnVnOiBib29sZWFuKTogdGhpcztcbiAgICBzdGF0aWMgY3JlYXRlKGRpcmVjdG9yeTogc3RyaW5nKTogUm91dGVyRmlsZUJhc2VSb3V0aW5nU2VydmljZTtcbiAgICBsb2FkRmlsZXMoKTogUHJvbWlzZTx2b2lkPjtcbiAgICByZWdpc3RlclJvdXRlcygpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCBSb3V0ZXJTZXJ2aWNlIGZyb20gJy4vUm91dGVyU2VydmljZS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlclJlZ2lzdGVyRW50cnkge1xuICAgIGZpbGVwYXRoOiBzdHJpbmc7XG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3V0ZXJSZWdpc3RlcjxDID0ge30+IGV4dGVuZHMgUm91dGVyU2VydmljZTxDPiB7XG4gICAgZmlsZXM6IE1hcDxzdHJpbmcsIFJvdXRlclJlZ2lzdGVyRW50cnk+O1xuICAgIGRpcnM6IE1hcDxzdHJpbmcsIFJvdXRlclJlZ2lzdGVyRW50cnk+O1xuICAgIGNvbnN0cnVjdG9yKHJvdXRlcj86IFBhcnRpYWw8Um91dGVyU2VydmljZTxDPj4pO1xuICAgIGFkZEZpbGUoZmlsZW5hbWU6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICBhZGREaXIoZGlybmFtZTogc3RyaW5nLCBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkO1xuICAgIHByaXZhdGUgbG9hZEZpbGU7XG4gICAgcHJpdmF0ZSBsb2FkRGlyO1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiIsImltcG9ydCB0eXBlIFJvdXRlciBmcm9tICcuL1JvdXRlclNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvUm91dGVyQ29udHJhY3QudHMnO1xuaW1wb3J0IHR5cGUgeyBIdHRwQ29udGV4dCB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0h0dHBDb250ZXh0Q29udHJhY3QudHMnO1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VNZXRob2QgPSAnaW5kZXgnIHwgJ3Nob3cnIHwgJ3N0b3JlJyB8ICd1cGRhdGUnIHwgJ2Rlc3Ryb3knO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXJSZXNvdXJjZU9wdGlvbnMge1xuICAgIG1pZGRsZXdhcmU/OiBQYXJ0aWFsPFJlY29yZDxSZXNvdXJjZU1ldGhvZCB8ICdhbGwnLCBNaWRkbGV3YXJlPj47XG4gICAgZXhjZXB0PzogUmVzb3VyY2VNZXRob2RbXTtcbn1cbmRlY2xhcmUgY29uc3QgUm91dGVyUmVzb3VyY2VTZXJ2aWNlX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBsaXN0ZW5lcnM6IGltcG9ydChcIiNzaGFyZWQvbWl4aW5zL0hvb2tzTWl4aW4udHNcIikuTGlzdGVuZXJbXTtcbiAgICAgICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIG9mZihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZDtcbiAgICAgICAgZW1pdChldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XG4gICAgICAgIGVtaXRBc3luYyhldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG4gICAgfTtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3V0ZXJSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBSb3V0ZXJSZXNvdXJjZVNlcnZpY2VfYmFzZSB7XG4gICAgcHJpdmF0ZSBvcHRpb25zO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBSb3V0ZXJSZXNvdXJjZU9wdGlvbnMpO1xuICAgIGluZGV4KGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPGFueT47XG4gICAgc2hvdyhjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTxhbnk+O1xuICAgIHN0b3JlKGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPGFueT47XG4gICAgdXBkYXRlKGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPGFueT47XG4gICAgZGVzdHJveShjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTxhbnk+O1xuICAgIHByaXZhdGUgd3JhcDtcbiAgICByZWdpc3Rlcihyb3V0ZXI6IFJvdXRlcik6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbmV4cG9ydCB0eXBlIENvbmZpZ01vZGVsID0gUmV0dXJuVHlwZTxSZXR1cm5UeXBlPHR5cGVvZiBNb2RlbENvbmZpZz4+O1xuaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vZGVsQ29uZmlnKGtleTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IDxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPihCYXNlOiBUQmFzZSkgPT4ge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7fTtcbiAgICBfX2lzQ29uZmlnTW9kZWw6IGJvb2xlYW47XG4gICAgc2VyaWFsaXplPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIHJvdzogYW55KTogUHJvbWlzZTxUPjtcbiAgICBsaXN0PFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBQcm9taXNlPFRbXT47XG4gICAgZmluZDxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCBpZDogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD47XG4gICAgZmluZE9yRmFpbDxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCBpZDogc3RyaW5nKTogUHJvbWlzZTxUPjtcbiAgICBjcmVhdGU8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaXRlbTogVCAmIHtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTx2b2lkPjtcbiAgICB1cGRhdGU8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZywgZGF0YTogVCk6IFByb21pc2U8dm9pZD47XG4gICAgdXBkYXRlT3JDcmVhdGU8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxUPik6IFByb21pc2U8dm9pZD47XG4gICAgZGVzdHJveTxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCBpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn0gJiBUQmFzZTtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCBSb3V0ZXJSZXNvdXJjZVNlcnZpY2UgZnJvbSAnLi9Sb3V0ZXJSZXNvdXJjZVNlcnZpY2UudHMnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZXJSZXNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL1JvdXRlclJlc291cmNlU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSB7IEh0dHBDb250ZXh0IH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvSHR0cENvbnRleHRDb250cmFjdC50cyc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ01vZGVsIH0gZnJvbSAnI3NlcnZlci9taXhpbnMvTW9kZWxDb25maWdNaXhpbi50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3V0ZXJSZXNvdXJjZUNvbmZpZyBleHRlbmRzIFJvdXRlclJlc291cmNlU2VydmljZSB7XG4gICAgcHJpdmF0ZSBtb2RlbDtcbiAgICBjb25zdHJ1Y3Rvcihtb2RlbDogQ29uZmlnTW9kZWwsIG9wdGlvbnM/OiBSb3V0ZXJSZXNvdXJjZU9wdGlvbnMpO1xuICAgIGluZGV4KGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPHtcbiAgICAgICAgcGFnZTogbnVtYmVyO1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICB0b3RhbF9wYWdlczogbnVtYmVyO1xuICAgICAgICBpdGVtczoge31bXTtcbiAgICB9PjtcbiAgICBzaG93KGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPHt9PjtcbiAgICBzdG9yZShjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTx7XG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9PjtcbiAgICB1cGRhdGUoY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8dm9pZD47XG4gICAgZGVzdHJveShjdHg6IEh0dHBDb250ZXh0KTogUHJvbWlzZTx7XG4gICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgfT47XG59XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW50ZXJmYWNlIENvbW1hbmRPcHRpb25zIHtcbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgZW52PzogTm9kZUpTLlByb2Nlc3NFbnY7XG4gICAgc2hlbGw/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBTaGVsbFNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNoZWxsU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzogU2hlbGxTZXJ2aWNlT3B0aW9ucyk7XG4gICAgLyoqXG4gICAgICogRXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmQgYW5kIHJldHVybiBhIHByb21pc2VcbiAgICAgKi9cbiAgICBjb21tYW5kKGJpbjogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9ucz86IENvbW1hbmRPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBFeGVjdXRlIGEgc2hlbGwgY29tbWFuZCBhbmQgcmV0dXJuIHRoZSBvdXRwdXQgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgICBleGVjdXRlQ29tbWFuZFdpdGhPdXRwdXQoYmluOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zPzogQ29tbWFuZE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSBDb25maWdTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvQ29uZmlnU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBhZ2luYXRpb24sIEZpbmRNYW55T3B0aW9ucywgUGFnaW5hdGVPcHRpb25zLCBEZWxldGVNYW55T3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWdSZXBvc2l0b3J5PFRFbnRpdHkgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBUT3B0aW9ucyA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBDb25maWdTZXJ2aWNlO1xuICAgIHByb3RlY3RlZCBrZXk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcHJpbWFyeUtleTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnU2VydmljZSwga2V5OiBzdHJpbmcsIHByaW1hcnlLZXk/OiBzdHJpbmcpO1xuICAgIHByb3RlY3RlZCBnZXRJdGVtcygpOiBURW50aXR5W107XG4gICAgcHJvdGVjdGVkIHNldEl0ZW1zKGl0ZW1zOiBURW50aXR5W10pOiB2b2lkO1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiBUT3B0aW9ucyk6IFRFbnRpdHlbXTtcbiAgICBjb3VudChvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj47XG4gICAgZmluZE1hbnkob3B0aW9ucz86IEZpbmRNYW55T3B0aW9ucyAmIFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5W10+O1xuICAgIGZpbmRPbmUob3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5IHwgbnVsbD47XG4gICAgZmluZEJ5SWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5IHwgbnVsbD47XG4gICAgZmluZEJ5SWRPckZhaWwoaWQ6IHN0cmluZywgb3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxURW50aXR5PjtcbiAgICBwYWdpbmF0ZShvcHRpb25zPzogUGFnaW5hdGVPcHRpb25zICYgVE9wdGlvbnMpOiBQcm9taXNlPFBhZ2luYXRpb248VEVudGl0eT4+O1xuICAgIGNyZWF0ZShkYXRhOiBQYXJ0aWFsPFRFbnRpdHk+KTogUHJvbWlzZTxURW50aXR5PjtcbiAgICBjcmVhdGVNYW55KGRhdGE6IFBhcnRpYWw8VEVudGl0eT5bXSk6IFByb21pc2U8VEVudGl0eVtdPjtcbiAgICB1cGRhdGVCeUlkKGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VEVudGl0eT4pOiBQcm9taXNlPFRFbnRpdHk+O1xuICAgIGRlbGV0ZUJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgZGVsZXRlTWFueShvcHRpb25zPzogRGVsZXRlTWFueU9wdGlvbnMgJiBUT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgRGF0YWJhc2VSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgdHlwZSB7IE1ldGFkYXRhUXVlcnlQYXlsb2FkIH0gZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9NZXRhZGF0YVF1ZXJ5U2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSBGaWxlRW50aXR5IGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRmlsZUVudGl0eS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVSZXBvc2l0b3J5UXVlcnlPcHRpb25zIHtcbiAgICBpZD86IG51bWJlciB8IG51bWJlcltdO1xuICAgIHNlYXJjaD86IHN0cmluZztcbiAgICBwdXJwb3NlPzogc3RyaW5nW107XG4gICAgY2xpZW50X25hbWU/OiBzdHJpbmdbXTtcbiAgICBtZXRhcz86IE1ldGFkYXRhUXVlcnlQYXlsb2FkO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZVJlcG9zaXRvcnkgZXh0ZW5kcyBEYXRhYmFzZVJlcG9zaXRvcnk8RmlsZUVudGl0eSwgRmlsZUVudGl0eVsnaWQnXSwgRmlsZVJlcG9zaXRvcnlRdWVyeU9wdGlvbnM+IHtcbiAgICBjb25zdHJ1Y3RvcihkYjogRGF0YWJhc2VSZXBvc2l0b3J5WydkYiddKTtcbiAgICBxdWVyeShvcHRpb25zPzogRmlsZVJlcG9zaXRvcnlRdWVyeU9wdGlvbnMpOiBhbnk7XG59XG4iLCJpbXBvcnQgU2hlbGxTZXJ2aWNlIGZyb20gXCIjc2VydmVyL3NlcnZpY2VzL1NoZWxsU2VydmljZS50c1wiO1xuaW1wb3J0IEdpdEJyYW5jaEVudGl0eSBmcm9tIFwiI3NoYXJlZC9lbnRpdGllcy9HaXRCcmFuY2hFbnRpdHkudHNcIjtcbmV4cG9ydCBpbnRlcmZhY2UgR2l0QnJhbmNoUmVwb3NpdG9yeU9wdGlvbnMge1xuICAgIGN3ZDogc3RyaW5nO1xuICAgIHNoZWxsPzogU2hlbGxTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2l0QnJhbmNoUmVwb3NpdG9yeSB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgc2hlbGw6IFNoZWxsU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBHaXRCcmFuY2hSZXBvc2l0b3J5T3B0aW9ucyk7XG4gICAgbGlzdCgpOiBQcm9taXNlPEdpdEJyYW5jaEVudGl0eVtdPjtcbiAgICBmZXRjaChvcHRpb25zOiB7XG4gICAgICAgIHJlbW90ZTogc3RyaW5nO1xuICAgICAgICBicmFuY2g6IHN0cmluZztcbiAgICAgICAgbG9jYWxOYW1lPzogc3RyaW5nO1xuICAgIH0pOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IFNoZWxsU2VydmljZSBmcm9tIFwiI3NlcnZlci9zZXJ2aWNlcy9TaGVsbFNlcnZpY2UudHNcIjtcbmltcG9ydCBHaXRDb21taXRFbnRpdHkgZnJvbSBcIiNzaGFyZWQvZW50aXRpZXMvR2l0Q29tbWl0RW50aXR5LnRzXCI7XG5leHBvcnQgaW50ZXJmYWNlIEdpdENvbW1pdFJlcG9zaXRvcnlPcHRpb25zIHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICBzaGVsbD86IFNoZWxsU2VydmljZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2l0Q29tbWl0TGlzdE9wdGlvbnMge1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIGN1cnNvcj86IHN0cmluZztcbiAgICBicmFuY2hlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBHaXRDb21taXRMaXN0UmVzdWx0IHtcbiAgICBpdGVtczogR2l0Q29tbWl0RW50aXR5W107XG4gICAgY3Vyc29yX3ByZXZpb3VzOiBzdHJpbmcgfCBudWxsO1xuICAgIGN1cnNvcl9jdXJyZW50OiBzdHJpbmcgfCBudWxsO1xuICAgIGN1cnNvcl9uZXh0OiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2l0Q29tbWl0UmVwb3NpdG9yeSB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgc2hlbGw6IFNoZWxsU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBHaXRDb21taXRSZXBvc2l0b3J5T3B0aW9ucyk7XG4gICAgbGlzdChvcHRpb25zPzogR2l0Q29tbWl0TGlzdE9wdGlvbnMpOiBQcm9taXNlPEdpdENvbW1pdExpc3RSZXN1bHQ+O1xuICAgIGNoZWNrb3V0KGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG4iLCJpbXBvcnQgRGF0YWJhc2VSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL0RhdGFiYXNlUmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25Bc3NpZ25tZW50IH0gZnJvbSAnI3NoYXJlZC9zY2hlbWFzL3Blcm1pc3Npb25Bc3NpZ25tZW50U2NoZW1hLnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbkFzc2lnbm1lbnRSZXBvc2l0b3J5UXVlcnlPcHRpb25zIHtcbiAgICBpZD86IG51bWJlciB8IG51bWJlcltdO1xuICAgIHBlcm1pc3Npb25JZD86IG51bWJlciB8IG51bWJlcltdO1xuICAgIGFzc2lnbmFibGVJZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIGFzc2lnbmFibGVUeXBlPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnkgZXh0ZW5kcyBEYXRhYmFzZVJlcG9zaXRvcnk8UGVybWlzc2lvbkFzc2lnbm1lbnQsIFBlcm1pc3Npb25Bc3NpZ25tZW50WydpZCddLCBQZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnlRdWVyeU9wdGlvbnM+IHtcbiAgICBjb25zdHJ1Y3RvcihkYjogRGF0YWJhc2VSZXBvc2l0b3J5WydkYiddKTtcbiAgICBxdWVyeShvcHRpb25zPzogUGVybWlzc2lvbkFzc2lnbm1lbnRSZXBvc2l0b3J5UXVlcnlPcHRpb25zKTogYW55O1xufVxuIiwiaW1wb3J0IERhdGFiYXNlUmVwb3NpdG9yeSBmcm9tICcjc2VydmVyL3JlcG9zaXRvcmllcy9EYXRhYmFzZVJlcG9zaXRvcnkudHMnO1xuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9uIH0gZnJvbSAnI3NoYXJlZC9zY2hlbWFzL3Blcm1pc3Npb25TY2hlbWEudHMnO1xuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucyB7XG4gICAgaWQ/OiBudW1iZXIgfCBudW1iZXJbXTtcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZXJtaXNzaW9uUmVwb3NpdG9yeSBleHRlbmRzIERhdGFiYXNlUmVwb3NpdG9yeTxQZXJtaXNzaW9uLCBQZXJtaXNzaW9uWydpZCddLCBQZXJtaXNzaW9uUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucz4ge1xuICAgIGNvbnN0cnVjdG9yKGRiOiBEYXRhYmFzZVJlcG9zaXRvcnlbJ2RiJ10pO1xuICAgIHF1ZXJ5KG9wdGlvbnM/OiBQZXJtaXNzaW9uUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucyk6IGFueTtcbn1cbiIsImltcG9ydCB0eXBlIHsgRmluZE1hbnlPcHRpb25zLCBQYWdpbmF0ZU9wdGlvbnMsIFBhZ2luYXRpb24gfSBmcm9tICcjc2VydmVyL3JlcG9zaXRvcmllcy9EYXRhYmFzZVJlcG9zaXRvcnkudHMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIElSZXBvc2l0b3J5VHlwZXM8VEVudGl0eSA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRQcmltYXJ5S2V5VHlwZSA9IGFueSwgVE9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY291bnQob3B0aW9ucz86IFRPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+O1xuICAgIGZpbmRNYW55KG9wdGlvbnM/OiBUT3B0aW9ucyAmIEZpbmRNYW55T3B0aW9ucyk6IFByb21pc2U8VEVudGl0eVtdPjtcbiAgICBmaW5kQnlJZChpZDogVFByaW1hcnlLZXlUeXBlLCBvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHkgfCBudWxsPjtcbiAgICBmaW5kQnlJZE9yRmFpbChpZDogVFByaW1hcnlLZXlUeXBlLCBvcHRpb25zPzogVE9wdGlvbnMpOiBQcm9taXNlPFRFbnRpdHk+O1xuICAgIHBhZ2luYXRlKG9wdGlvbnM/OiBUT3B0aW9ucyAmIFBhZ2luYXRlT3B0aW9ucyk6IFByb21pc2U8UGFnaW5hdGlvbj47XG4gICAgY3JlYXRlKGRhdGE6IFBhcnRpYWw8VEVudGl0eT4sIG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eT47XG4gICAgY3JlYXRlTWFueShkYXRhOiBQYXJ0aWFsPFRFbnRpdHk+W10sIG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8VEVudGl0eVtdPjtcbiAgICBkZWxldGVCeUlkKGlkOiBUUHJpbWFyeUtleVR5cGUpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlc3Ryb3lNYW55KG9wdGlvbnM/OiBUT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXRhYmFzZVJlcG9zaXRvcnlJbmZlck1peGluPFRFbnRpdHkgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBUUHJpbWFyeUtleVR5cGUgPSBhbnksIFRPcHRpb25zID0gUmVjb3JkPHN0cmluZywgYW55Pj4oKTogPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KEJhc2U6IFRCYXNlKSA9PiBUQmFzZSAmIENvbnN0cnVjdG9yPElSZXBvc2l0b3J5VHlwZXM8VEVudGl0eSwgVFByaW1hcnlLZXlUeXBlLCBUT3B0aW9ucz4+O1xuIiwiaW1wb3J0IERhdGFiYXNlUmVwb3NpdG9yeSBmcm9tICcjc2VydmVyL3JlcG9zaXRvcmllcy9EYXRhYmFzZVJlcG9zaXRvcnkudHMnO1xuaW1wb3J0IHR5cGUgeyBUb2tlbiB9IGZyb20gJyNzaGFyZWQvc2NoZW1hcy90b2tlblNjaGVtYS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucyB7XG4gICAgaWQ/OiBudW1iZXIgfCBudW1iZXJbXTtcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBUb2tlblJlcG9zaXRvcnlHZW5lcmF0ZU9wdGlvbnMge1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIGV4cGlyZXNfaW5faG91cnM/OiBudW1iZXI7XG59XG5kZWNsYXJlIGNvbnN0IFRva2VuUmVwb3NpdG9yeV9iYXNlOiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2luZGV4LnRzXCIpLkNvbnN0cnVjdG9yICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9pbmRleC50c1wiKS5Db25zdHJ1Y3RvcjxpbXBvcnQoXCIjc2VydmVyL21peGlucy9EYXRhYmFzZVJlcG9zaXRvcnlJbmZlck1peGluLnRzXCIpLklSZXBvc2l0b3J5VHlwZXM8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRfYXQ6IHN0cmluZztcbiAgICBleHBpcmVzX2F0OiBzdHJpbmc7XG59LCBudW1iZXIsIFRva2VuUmVwb3NpdG9yeVF1ZXJ5T3B0aW9ucz4+ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9pbmRleC50c1wiKS5Db25zdHJ1Y3Rvcjx7fT4gJiB0eXBlb2YgRGF0YWJhc2VSZXBvc2l0b3J5O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5SZXBvc2l0b3J5IGV4dGVuZHMgVG9rZW5SZXBvc2l0b3J5X2Jhc2Uge1xuICAgIGF1dG9DcmVhdGVkQXQ6IGJvb2xlYW47XG4gICAgYXV0b1VwZGF0ZWRBdDogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihkYjogRGF0YWJhc2VSZXBvc2l0b3J5WydkYiddKTtcbiAgICBxdWVyeShvcHRpb25zPzogVG9rZW5SZXBvc2l0b3J5UXVlcnlPcHRpb25zKTogYW55O1xuICAgIGZpbmRCeVRva2VuKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPFRva2VuIHwgbnVsbD47XG4gICAgZ2VuZXJhdGUob3B0aW9uczogVG9rZW5SZXBvc2l0b3J5R2VuZXJhdGVPcHRpb25zKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IEt5c2VseSB9IGZyb20gXCJreXNlbHlcIjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlR2F0ZXdheTxEQj4gZXh0ZW5kcyBLeXNlbHk8REI+IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG59XG4iLCJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IEJhc2VEcml2ZSBmcm9tICcjc2VydmVyL2dhdGV3YXlzL0RyaXZlQmFzZUdhdGV3YXkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBEcml2ZUZTQ29uZmlnIHtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlRlMgZXh0ZW5kcyBCYXNlRHJpdmUge1xuICAgIHByaXZhdGUgc2NoZW1hO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFBpY2s8QmFzZURyaXZlLCAnaWQnIHwgJ25hbWUnIHwgJ2Rlc2NyaXB0aW9uJyB8ICdjb25maWcnPik7XG4gICAgZ2V0IHZhbGlkKCk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjaGVja1ZhbGlkO1xuICAgIHByb3RlY3RlZCBnZXQgcm9vdFBhdGgoKTogc3RyaW5nO1xuICAgIGV4aXN0czogQmFzZURyaXZlWydleGlzdHMnXTtcbiAgICBsaXN0OiBCYXNlRHJpdmVbJ2xpc3QnXTtcbiAgICBmaW5kOiBCYXNlRHJpdmVbJ2ZpbmQnXTtcbiAgICBta2RpcihmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICByZWFkOiBCYXNlRHJpdmVbJ3JlYWQnXTtcbiAgICByZWFkU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGZzLlJlYWRTdHJlYW0+O1xuICAgIHdyaXRlOiBCYXNlRHJpdmVbJ3dyaXRlJ107XG4gICAgd3JpdGVTdHJlYW0oZmlsZW5hbWU6IHN0cmluZywgc3RyZWFtOiBOb2RlSlMuUmVhZGFibGVTdHJlYW0pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlbGV0ZTogQmFzZURyaXZlWydkZWxldGUnXTtcbiAgICB1cmw6IEJhc2VEcml2ZVsndXJsJ107XG4gICAgdXBsb2FkVXJsOiBCYXNlRHJpdmVbJ3VwbG9hZFVybCddO1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuaW1wb3J0IFNoZWxsU2VydmljZSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL1NoZWxsU2VydmljZS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIEdpdFJlcG9JbmZvIHtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgICBoZWFkOiBzdHJpbmcgfCBudWxsO1xuICAgIHNob3J0SGFzaDogc3RyaW5nO1xuICAgIGlzRGV0YWNoZWRIZWFkOiBib29sZWFuO1xuICAgIHJlbW90ZXM6IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBHaXRHYXRld2F5T3B0aW9ucyB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgc3NoS2V5Pzogc3RyaW5nO1xuICAgIHNzaEtleUZpbGU/OiBzdHJpbmc7XG4gICAgbG9nZ2VyPzogTG9nZ2VyU2VydmljZTtcbiAgICBzaGVsbD86IFNoZWxsU2VydmljZTtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgR2l0R2F0ZXdheUV4ZWN1dGVPcHRpb25zIHtcbiAgICBhcmdzOiBzdHJpbmc7XG4gICAgY3dkPzogc3RyaW5nO1xuICAgIHNzaEtleT86IHN0cmluZztcbiAgICBzc2hLZXlGaWxlPzogc3RyaW5nO1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG4gICAgc2hlbGw/OiBTaGVsbFNlcnZpY2U7XG4gICAgZGVidWc/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgR2l0R2F0ZXdheSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjd2Q7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzc2hLZXk/O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3NoS2V5RmlsZT87XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJ1ZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNoZWxsO1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEdpdEdhdGV3YXlPcHRpb25zKTtcbiAgICBzdGF0aWMgZXhlY3V0ZShvcHRpb25zOiBHaXRHYXRld2F5RXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4gICAgc3RhdGljIGNsb25lKHJlcG9Vcmw6IHN0cmluZywgdGFyZ2V0RGlyOiBzdHJpbmcsIG9wdGlvbnM6IE9taXQ8R2l0R2F0ZXdheU9wdGlvbnMsICdjd2QnPik6IFByb21pc2U8R2l0R2F0ZXdheT47XG4gICAgcnVuKGFyZ3M6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICB0cnlSdW4oYXJnczogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgICBjaGVja291dChyZWY6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICBmZXRjaEFsbCgpOiBQcm9taXNlPHN0cmluZz47XG4gICAgcHVsbCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGdldEluZm8oKTogUHJvbWlzZTxHaXRSZXBvSW5mbz47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdmFsdWVUb1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWV0YWRhdGE8VGFibGUgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4obWV0YXNUYWJsZTogVGFibGUsIGZvcmVpZ25LZXk6IGtleW9mIERhdGFiYXNlW1RhYmxlXSk6IDxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPihCYXNlOiBUQmFzZSkgPT4ge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGdldDxUID0gYW55PihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAgICAgICBnZXQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiBQcm9taXNlPFQ+O1xuICAgICAgICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgICB9O1xufSAmIFRCYXNlO1xuIiwiaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbXBvcnQgRGF0YWJhc2VHYXRld2F5IGZyb20gJyNzZXJ2ZXIvZ2F0ZXdheXMvRGF0YWJhc2VHYXRld2F5LnRzJztcbmRlY2xhcmUgY29uc3QgZGF0YWJhc2U6IERhdGFiYXNlR2F0ZXdheTxEYXRhYmFzZUNvbnRyYWN0PjtcbmV4cG9ydCBkZWZhdWx0IGRhdGFiYXNlO1xuIiwiaW1wb3J0IHR5cGUgeyBTZWxlY3RhYmxlLCBTZWxlY3RRdWVyeUJ1aWxkZXIsIEV4cHJlc3Npb25CdWlsZGVyIGFzIEtFeHByZXNzaW9uQnVpbGRlciB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgZGIgZnJvbSAnI3NlcnZlci9mYWNhZGVzL2RhdGFiYXNlLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuZXhwb3J0IHR5cGUgU2VsZWN0RnJvbTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gUmV0dXJuVHlwZTx0eXBlb2YgZGIuc2VsZWN0RnJvbTxUPj4gfCBTZWxlY3RRdWVyeUJ1aWxkZXI8RGF0YWJhc2UsIFQsIGFueT47XG5leHBvcnQgdHlwZSBJbnNlcnRGcm9tPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBSZXR1cm5UeXBlPHR5cGVvZiBkYi5pbnNlcnRJbnRvPFQ+PjtcbmV4cG9ydCB0eXBlIFVwZGF0ZUZyb208VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IFJldHVyblR5cGU8dHlwZW9mIGRiLnVwZGF0ZVRhYmxlPFQ+PjtcbmV4cG9ydCB0eXBlIERlbGV0ZUZyb208VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IFJldHVyblR5cGU8dHlwZW9mIGRiLmRlbGV0ZUZyb208VD4+O1xuZXhwb3J0IHR5cGUgU2VsZWN0QnVpbGRlcjxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gU2VsZWN0UXVlcnlCdWlsZGVyPERhdGFiYXNlLCBULCBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPj47XG5leHBvcnQgdHlwZSBFeHByZXNzaW9uQnVpbGRlcjxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gS0V4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IG5vdzogKCkgPT4gaW1wb3J0KFwia3lzZWx5XCIpLlJhd0J1aWxkZXI8c3RyaW5nPjtcbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IHtcbiAgICBzZXJpYWxpemU/OiAocm93OiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPikgPT4gYW55O1xufVxuZXhwb3J0IHR5cGUgU2VyaWFsaXphYmxlUmVzdWx0PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIFNlcmlhbGl6ZU9wdGlvbnM8VD4gfCB1bmRlZmluZWQ+ID0gTyBleHRlbmRzIHVuZGVmaW5lZCA/IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+IDogTyBleHRlbmRzIHtcbiAgICBzZXJpYWxpemU6IChyb3c6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+KSA9PiBpbmZlciBSO1xufSA/IFIgOiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPjtcbiIsImltcG9ydCB0eXBlIHsgRXhwcmVzc2lvbkJ1aWxkZXIsIEV4cHJlc3Npb25XcmFwcGVyLCBJbnNlcnRhYmxlIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgU2VsZWN0RnJvbSwgU2VyaWFsaXphYmxlUmVzdWx0LCBTZXJpYWxpemVPcHRpb25zLCBVcGRhdGVGcm9tIH0gZnJvbSAnLi9jb21tb24udHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZU9yQ3JlYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IGV4dGVuZHMgU2VyaWFsaXplT3B0aW9uczxUPiB7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIHdoZXJlPzogKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxEYXRhYmFzZSwgVD4pID0+IEV4cHJlc3Npb25XcmFwcGVyPERhdGFiYXNlLCBULCBhbnk+O1xuICAgIHNlbGVjdD86IChxYjogU2VsZWN0RnJvbTxUPikgPT4gU2VsZWN0RnJvbTxUPjtcbiAgICB1cGRhdGU/OiAocWI6IFVwZGF0ZUZyb208VD4pID0+IFVwZGF0ZUZyb208VD47XG4gICAgdmFsdWVzOiBJbnNlcnRhYmxlPERhdGFiYXNlW1RdPiB8IEluc2VydGFibGU8RGF0YWJhc2VbVF0+W107XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1cGRhdGVPckNyZWF0ZTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBVcGRhdGVPckNyZWF0ZU9wdGlvbnM8VD4+KHRhYmxlOiBULCBvcHRpb25zPzogTyk6IFByb21pc2U8U2VyaWFsaXphYmxlUmVzdWx0PFQsIE8+PjtcbiIsImltcG9ydCB0eXBlIHsgRXhwcmVzc2lvbkJ1aWxkZXIsIEV4cHJlc3Npb25XcmFwcGVyIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgU2VsZWN0RnJvbSwgU2VyaWFsaXplT3B0aW9ucywgU2VyaWFsaXphYmxlUmVzdWx0IH0gZnJvbSAnLi9jb21tb24udHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIExpc3RPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gZXh0ZW5kcyBTZXJpYWxpemVPcHRpb25zPFQ+IHtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIHdoZXJlPzogKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxEYXRhYmFzZSwgVD4pID0+IEV4cHJlc3Npb25XcmFwcGVyPERhdGFiYXNlLCBULCBhbnk+O1xuICAgIHF1ZXJ5PzogKHFiOiBTZWxlY3RGcm9tPFQ+KSA9PiBTZWxlY3RGcm9tPFQ+O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gbGlzdDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBMaXN0T3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxTZXJpYWxpemFibGVSZXN1bHQ8VCwgTz5bXT47XG4iLCJpbXBvcnQgdHlwZSB7IEV4cHJlc3Npb25CdWlsZGVyLCBFeHByZXNzaW9uV3JhcHBlciwgU2VsZWN0YWJsZSB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdEZyb20gfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvUGFnaW5hdGlvbkVudGl0eS50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgcGFnZT86IG51bWJlcjtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBvcmRlckJ5PzogRGF0YWJhc2VbVF0gfCAoa2V5b2YgRGF0YWJhc2VbVF0pW107XG4gICAgb3JkZXJEZXNjPzogKCdhc2MnIHwgJ2Rlc2MnKSB8ICgnYXNjJyB8ICdkZXNjJylbXTtcbiAgICB3aGVyZT86IChxYjogRXhwcmVzc2lvbkJ1aWxkZXI8RGF0YWJhc2UsIFQ+KSA9PiBFeHByZXNzaW9uV3JhcHBlcjxEYXRhYmFzZSwgVCwgYW55PjtcbiAgICBzZXJpYWxpemU/OiAocm93OiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPikgPT4gYW55O1xuICAgIHF1ZXJ5PzogKHFiOiBTZWxlY3RGcm9tPFQ+KSA9PiBhbnk7XG59XG5leHBvcnQgdHlwZSBQYWdpbmF0ZVJlc3VsdDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBQYWdpbmF0ZU9wdGlvbnM8VD4gfCB1bmRlZmluZWQ+ID0gTyBleHRlbmRzIHVuZGVmaW5lZCA/IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+IDogTyBleHRlbmRzIHtcbiAgICBzZXJpYWxpemU6IChyb3c6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+KSA9PiBpbmZlciBSO1xufSA/IFIgOiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHBhZ2luYXRlPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIFBhZ2luYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxQYWdpbmF0aW9uPFBhZ2luYXRlUmVzdWx0PFQsIE8+Pj47XG4iLCJpbXBvcnQgdHlwZSB7IFNlbGVjdEZyb20gfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4ge1xuICAgIHF1ZXJ5PzogKHFiOiBTZWxlY3RGcm9tPFQ+KSA9PiBTZWxlY3RGcm9tPFQ+O1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvdW50PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIENvdW50T3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxudW1iZXI+O1xuIiwiaW1wb3J0IHR5cGUgeyBJbnNlcnRhYmxlIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlUmVzdWx0LCBTZXJpYWxpemVPcHRpb25zIH0gZnJvbSAnLi9jb21tb24udHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiBleHRlbmRzIFNlcmlhbGl6ZU9wdGlvbnM8VD4ge1xuICAgIHZhbHVlczogSW5zZXJ0YWJsZTxEYXRhYmFzZVtUXT47XG4gICAgcHJpbWFyeUtleT86IHN0cmluZztcbiAgICBub3JtYWxpemU/OiBib29sZWFuIHwgKCh2YWx1ZTogYW55KSA9PiBhbnkpO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBDcmVhdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVNeXNxbDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBDcmVhdGVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGU8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgQ3JlYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxpbXBvcnQoXCJreXNlbHlcIikuRHJhaW5PdXRlckdlbmVyaWM8eyBbS18xIGluIChEYXRhYmFzZVtUXSBleHRlbmRzIGluZmVyIFRfMSA/IHsgW0sgaW4ga2V5b2YgVF8xXTogaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFR5cGU8VF8xW0tdPiBleHRlbmRzIGluZmVyIFRfMiA/IFRfMiBleHRlbmRzIGltcG9ydChcImt5c2VseVwiKS5TZWxlY3RUeXBlPFRfMVtLXT4gPyBUXzIgZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogSyA6IG5ldmVyIDogbmV2ZXI7IH0gOiBuZXZlcilba2V5b2YgRGF0YWJhc2VbVF1dXTogaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFR5cGU8RGF0YWJhc2VbVF1bS18xXT47IH0+PjtcbiIsImltcG9ydCB0eXBlIHsgVXBkYXRlYWJsZSwgRXhwcmVzc2lvbkJ1aWxkZXIsIEV4cHJlc3Npb25XcmFwcGVyIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgVXBkYXRlRnJvbSwgU2VyaWFsaXphYmxlUmVzdWx0LCBTZXJpYWxpemVPcHRpb25zIH0gZnJvbSAnLi9jb21tb24udHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiBleHRlbmRzIFNlcmlhbGl6ZU9wdGlvbnM8VD4ge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICB2YWx1ZXM6IFVwZGF0ZWFibGU8RGF0YWJhc2VbVF0+O1xuICAgIG5vcm1hbGl6ZT86IGJvb2xlYW4gfCAoKHZhbHVlOiBhbnkpID0+IGFueSk7XG4gICAgd2hlcmU/OiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPikgPT4gRXhwcmVzc2lvbldyYXBwZXI8RGF0YWJhc2UsIFQsIGFueT47XG4gICAgcXVlcnk/OiAocWI6IFVwZGF0ZUZyb208VD4pID0+IFVwZGF0ZUZyb208VD47XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1cGRhdGVEZWZhdWx0PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIFVwZGF0ZU9wdGlvbnM8VD4+KHRhYmxlOiBULCBvcHRpb25zPzogTyk6IFByb21pc2U8U2VyaWFsaXphYmxlUmVzdWx0PFQsIE8+W10+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdXBkYXRlTXlzcWw8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgVXBkYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxTZXJpYWxpemFibGVSZXN1bHQ8VCwgTz5bXT47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1cGRhdGU8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlLCBPIGV4dGVuZHMgVXBkYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxpbXBvcnQoXCJreXNlbHlcIikuRHJhaW5PdXRlckdlbmVyaWM8eyBbS18xIGluIChEYXRhYmFzZVtUXSBleHRlbmRzIGluZmVyIFRfMSA/IHsgW0sgaW4ga2V5b2YgVF8xXTogaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFR5cGU8VF8xW0tdPiBleHRlbmRzIGluZmVyIFRfMiA/IFRfMiBleHRlbmRzIGltcG9ydChcImt5c2VseVwiKS5TZWxlY3RUeXBlPFRfMVtLXT4gPyBUXzIgZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogSyA6IG5ldmVyIDogbmV2ZXI7IH0gOiBuZXZlcilba2V5b2YgRGF0YWJhc2VbVF1dXTogaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFR5cGU8RGF0YWJhc2VbVF1bS18xXT47IH0+W10+O1xuIiwiaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uV3JhcHBlciwgRXhwcmVzc2lvbkJ1aWxkZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbXBvcnQgZGIgZnJvbSAnI3NlcnZlci9mYWNhZGVzL2RhdGFiYXNlLnRzJztcbnR5cGUgRGVsZXRlRnJvbTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gUmV0dXJuVHlwZTx0eXBlb2YgZGIuZGVsZXRlRnJvbTxUPj47XG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4ge1xuICAgIHF1ZXJ5PzogKHFiOiBEZWxldGVGcm9tPFQ+KSA9PiBEZWxldGVGcm9tPFQ+O1xuICAgIHdoZXJlPzogKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxEYXRhYmFzZSwgVD4pID0+IEV4cHJlc3Npb25XcmFwcGVyPERhdGFiYXNlLCBULCBhbnk+O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZGVzdHJveTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBEZXN0cm95T3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgRXhwcmVzc2lvbkJ1aWxkZXIsIEV4cHJlc3Npb25XcmFwcGVyLCBJbnNlcnRhYmxlIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgU2VsZWN0RnJvbSwgU2VyaWFsaXphYmxlUmVzdWx0LCBTZXJpYWxpemVPcHRpb25zIH0gZnJvbSAnLi9jb21tb24udHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5leHBvcnQgaW50ZXJmYWNlIEZpcnN0T3JDcmVhdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gZXh0ZW5kcyBTZXJpYWxpemVPcHRpb25zPFQ+IHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgc2VsZWN0PzogKHFiOiBTZWxlY3RGcm9tPFQ+KSA9PiBTZWxlY3RGcm9tPFQ+O1xuICAgIHdoZXJlPzogKHFiOiBFeHByZXNzaW9uQnVpbGRlcjxEYXRhYmFzZSwgVD4pID0+IEV4cHJlc3Npb25XcmFwcGVyPERhdGFiYXNlLCBULCBhbnk+O1xuICAgIHZhbHVlczogSW5zZXJ0YWJsZTxEYXRhYmFzZVtUXT4gfCBJbnNlcnRhYmxlPERhdGFiYXNlW1RdPltdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZmlyc3RPckNyZWF0ZTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBGaXJzdE9yQ3JlYXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxTZXJpYWxpemFibGVSZXN1bHQ8VCwgTz4+O1xuIiwiaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uQnVpbGRlciwgRXhwcmVzc2lvbldyYXBwZXIgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RGcm9tLCBTZXJpYWxpemFibGVSZXN1bHQsIFNlcmlhbGl6ZU9wdGlvbnMgfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmV4cG9ydCBpbnRlcmZhY2UgRmluZE9uZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiBleHRlbmRzIFNlcmlhbGl6ZU9wdGlvbnM8VD4ge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcXVlcnk/OiAocWI6IFNlbGVjdEZyb208VD4pID0+IFNlbGVjdEZyb208VD47XG4gICAgd2hlcmU/OiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPERhdGFiYXNlLCBUPikgPT4gRXhwcmVzc2lvbldyYXBwZXI8RGF0YWJhc2UsIFQsIGFueT47XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBmaW5kT25lPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIEZpbmRPbmVPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPiB8IG51bGw+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZmluZE9uZU9yRmFpbDxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBGaW5kT25lT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxOb25OdWxsYWJsZTxBd2FpdGVkPFNlcmlhbGl6YWJsZVJlc3VsdDxULCBPPj4+PjtcbiIsImltcG9ydCB0eXBlIHsgVXBkYXRlT3JDcmVhdGVPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL3VwZGF0ZU9yQ3JlYXRlLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuaW1wb3J0IHR5cGUgeyBMaXN0T3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvcXVlcmllcy9saXN0LnRzJztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL3BhZ2luYXRlLnRzJztcbmltcG9ydCB0eXBlIHsgQ291bnRPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL2NvdW50LnRzJztcbmltcG9ydCB0eXBlIHsgQ3JlYXRlT3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvcXVlcmllcy9jcmVhdGUudHMnO1xuaW1wb3J0IHR5cGUgeyBVcGRhdGVPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL3VwZGF0ZS50cyc7XG5pbXBvcnQgdHlwZSB7IERlc3Ryb3lPcHRpb25zIH0gZnJvbSAnI3NlcnZlci9xdWVyaWVzL2Rlc3Ryb3kudHMnO1xuaW1wb3J0IHR5cGUgeyBGaXJzdE9yQ3JlYXRlT3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvcXVlcmllcy9maXJzdE9yQ3JlYXRlLnRzJztcbmltcG9ydCB0eXBlIHsgRmluZE9uZU9wdGlvbnMgfSBmcm9tICcjc2VydmVyL3F1ZXJpZXMvZmluZE9uZS50cyc7XG5pbXBvcnQgdHlwZSBQYWdpbmF0aW9uIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvUGFnaW5hdGlvbkVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0UXVlcnlCdWlsZGVyIH0gZnJvbSAna3lzZWx5JztcbmV4cG9ydCB0eXBlIE1vZGVsTGlzdE9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IE9taXQ8TGlzdE9wdGlvbnM8VD4sICdzZXJpYWxpemUnPjtcbmV4cG9ydCB0eXBlIE1vZGVsRmluZE9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IE9taXQ8RmluZE9uZU9wdGlvbnM8VD4sICdzZXJpYWxpemUnIHwgJ29yZGVyQnknPjtcbmV4cG9ydCB0eXBlIE1vZGVsUGFnaW5hdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBPbWl0PFBhZ2luYXRlT3B0aW9uczxUPiwgJ3NlcmlhbGl6ZSc+O1xuZXhwb3J0IHR5cGUgTW9kZWxDb3VudE9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IENvdW50T3B0aW9uczxUPjtcbmV4cG9ydCB0eXBlIE1vZGVsQ3JlYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gT21pdDxDcmVhdGVPcHRpb25zPFQ+LCAnc2VyaWFsaXplJz47XG5leHBvcnQgdHlwZSBNb2RlbFVwZGF0ZU9wdGlvbnM8VCBleHRlbmRzIGtleW9mIERhdGFiYXNlPiA9IE9taXQ8VXBkYXRlT3B0aW9uczxUPiwgJ3NlcmlhbGl6ZSc+O1xuZXhwb3J0IHR5cGUgTW9kZWxEZXN0cm95T3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gRGVzdHJveU9wdGlvbnM8VD47XG5leHBvcnQgdHlwZSBNb2RlbEZpcnN0T3JDcmVhdGVPcHRpb25zPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4gPSBPbWl0PEZpcnN0T3JDcmVhdGVPcHRpb25zPFQ+LCAnc2VyaWFsaXplJz47XG5leHBvcnQgdHlwZSBNb2RlbFVwZGF0ZU9yQ3JlYXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gT21pdDxVcGRhdGVPckNyZWF0ZU9wdGlvbnM8VD4sICdzZXJpYWxpemUnPjtcbmV4cG9ydCB0eXBlIE1vZGVsRW50aXR5ID0gUmV0dXJuVHlwZTxSZXR1cm5UeXBlPHR5cGVvZiBNb2RlbE1peGluPGFueT4+PjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vZGVsTWl4aW48VGFibGUgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZT4odGFibGU6IFRhYmxlLCBwcmltYXJ5S2V5Pzoga2V5b2YgRGF0YWJhc2VbVGFibGVdKTogPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KEJhc2U6IFRCYXNlKSA9PiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICBkZXN0cm95KCk6IFByb21pc2U8dm9pZD47XG4gICAgICAgIHNvZnREZWxldGUoKTogUHJvbWlzZTx2b2lkPjtcbiAgICB9O1xuICAgIF9fbW9kZWw6IHtcbiAgICAgICAgdGFibGU6IFRhYmxlO1xuICAgICAgICBwcmltYXJ5S2V5OiBrZXlvZiBEYXRhYmFzZVtUYWJsZV07XG4gICAgfTtcbiAgICBzZXJpYWxpemU8VD4odGhpczogbmV3ICgpID0+IFQsIHJvdzogYW55KTogUHJvbWlzZTxUPjtcbiAgICBzZWxlY3QoKTogU2VsZWN0UXVlcnlCdWlsZGVyPERhdGFiYXNlLCBUYWJsZSwgYW55PjtcbiAgICBwYWdpbmF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IE1vZGVsUGFnaW5hdGVPcHRpb25zPFRhYmxlPik6IFByb21pc2U8UGFnaW5hdGlvbjxUPj47XG4gICAgbGlzdDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IE1vZGVsTGlzdE9wdGlvbnM8VGFibGU+KTogUHJvbWlzZTxUW10+O1xuICAgIGZpbmRPbmU8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBNb2RlbEZpbmRPcHRpb25zPFRhYmxlPik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD47XG4gICAgZmluZE9uZU9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IE1vZGVsRmluZE9wdGlvbnM8VGFibGU+KTogUHJvbWlzZTxUPjtcbiAgICBmaW5kPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55KTogUHJvbWlzZTxUIHwgbnVsbD47XG4gICAgZmluZE9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSk6IFByb21pc2U8VD47XG4gICAgZmluZEJ5PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBjb2x1bW46IGtleW9mIERhdGFiYXNlW1RhYmxlXSwgdmFsdWU6IGFueSk6IFByb21pc2U8VD47XG4gICAgZmluZEJ5T3JGYWlsPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBjb2x1bW46IGtleW9mIERhdGFiYXNlW1RhYmxlXSwgdmFsdWU6IGFueSk6IFByb21pc2U8VD47XG4gICAgZXhpc3RzPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogTW9kZWxMaXN0T3B0aW9uczxUYWJsZT4pOiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIGNvdW50PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogTW9kZWxDb3VudE9wdGlvbnM8VGFibGU+KTogUHJvbWlzZTxudW1iZXI+O1xuICAgIGNyZWF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgcGF5bG9hZDogTW9kZWxDcmVhdGVPcHRpb25zPFRhYmxlPltcInZhbHVlc1wiXSk6IFByb21pc2U8VD47XG4gICAgY3JlYXRlTWFueTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgdmFsdWVzOiBBcnJheTxNb2RlbENyZWF0ZU9wdGlvbnM8VGFibGU+W1widmFsdWVzXCJdPik6IFByb21pc2U8VFtdPjtcbiAgICB1cGRhdGU8VD4odGhpczogbmV3ICgpID0+IFQsIG86IE1vZGVsVXBkYXRlT3B0aW9uczxUYWJsZT4pOiBQcm9taXNlPFQ+O1xuICAgIHVwZGF0ZUJ5SWQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnksIHZhbHVlczogTW9kZWxVcGRhdGVPcHRpb25zPFRhYmxlPltcInZhbHVlc1wiXSwgb3B0aW9ucz86IHtcbiAgICAgICAgZGVidWc/OiBib29sZWFuO1xuICAgIH0pOiBQcm9taXNlPFQ+O1xuICAgIGRlc3Ryb3k8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBNb2RlbERlc3Ryb3lPcHRpb25zPFRhYmxlPik6IFByb21pc2U8dm9pZD47XG4gICAgZmlyc3RPckNyZWF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbzogTW9kZWxGaXJzdE9yQ3JlYXRlT3B0aW9uczxUYWJsZT4pOiBUO1xuICAgIHVwZGF0ZU9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIG86IE1vZGVsVXBkYXRlT3JDcmVhdGVPcHRpb25zPFRhYmxlPik6IFQ7XG4gICAgZGVzdHJveUJ5SWQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufSAmIFRCYXNlO1xuIiwiaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gJyNzaGFyZWQvdXRpbHMvY29tcG9zZS50cyc7XG5pbnRlcmZhY2UgUmVsYXRpb24ge1xuICAgIGxvYWQoZW50aXRpZXM6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlbGF0aW9uPFIgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbj4+KHJlbGF0aW9uczogUik6IDxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPihCYXNlOiBUQmFzZSkgPT4ge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7fTtcbiAgICBsb2FkPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBlbnRpdGllczogVCB8IFRbXSwgbmFtZXM6IGtleW9mIFIgfCAoa2V5b2YgUilbXSk6IFByb21pc2U8dm9pZD47XG59ICYgVEJhc2U7XG5leHBvcnQge307XG4iLCJpbXBvcnQgQ29uZmlnU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBjb25maWc6IENvbmZpZ1NlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBjb25maWc7XG4iLCJpbXBvcnQgQ29udGFpbmVyU2VydmljZSBmcm9tIFwiI3NoYXJlZC9zZXJ2aWNlcy9Db250YWluZXJTZXJ2aWNlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IF9kZWZhdWx0OiBDb250YWluZXJTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgX2RlZmF1bHQ7XG4iLCJpbXBvcnQgRG93bmxvYWRTZXJ2aWNlIGZyb20gJyNzZXJ2ZXIvc2VydmljZXMvRG93bmxvYWRTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgZG93bmxvYWQ6IERvd25sb2FkU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGRvd25sb2FkO1xuIiwiaW1wb3J0IERyaXZlU2VydmljZSBmcm9tICcjc2VydmVyL3NlcnZpY2VzL0RyaXZlU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGRyaXZlOiBEcml2ZVNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBkcml2ZTtcbiIsImltcG9ydCB7IEVtbWl0dGVyU2VydmljZSB9IGZyb20gJyNzaGFyZWQvaW5kZXgudHMnO1xuZGVjbGFyZSBjb25zdCBlbW1pdHRlcjogRW1taXR0ZXJTZXJ2aWNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuZXhwb3J0IGRlZmF1bHQgZW1taXR0ZXI7XG4iLCJpbXBvcnQgRW5jcnlwdFNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9FbmNyeXB0U2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGVuY3J5cHQ6IEVuY3J5cHRTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgZW5jcnlwdDtcbiIsImltcG9ydCBFbnZTZXJ2aWNlIGZyb20gXCIjc2VydmVyL3NlcnZpY2VzL0VudlNlcnZpY2UudHNcIjtcbmRlY2xhcmUgY29uc3QgZW52OiBFbnZTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgZW52O1xuIiwiaW1wb3J0IEZpbGVSZXBvc2l0b3J5IGZyb20gXCIjc2VydmVyL3JlcG9zaXRvcmllcy9GaWxlUmVwb3NpdG9yeS50c1wiO1xuZGVjbGFyZSBjb25zdCBmaWxlUmVwb3NpdG9yeTogRmlsZVJlcG9zaXRvcnk7XG5leHBvcnQgZGVmYXVsdCBmaWxlUmVwb3NpdG9yeTtcbiIsImltcG9ydCBIYXNoZXJTZXJ2aWNlIGZyb20gJyNzZXJ2ZXIvc2VydmljZXMvSGFzaGVyU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGhhc2hlcjogSGFzaGVyU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGhhc2hlcjtcbiIsImltcG9ydCBIdHRwU2VydmljZSBmcm9tIFwiI3NlcnZlci9zZXJ2aWNlcy9IdHRwU2VydmljZS50c1wiO1xuZGVjbGFyZSBjb25zdCBodHRwOiBIdHRwU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGh0dHA7XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iLCJpbXBvcnQgTWlncmF0b3JTZXJ2aWNlIGZyb20gJyNzZXJ2ZXIvc2VydmljZXMvTWlncmF0b3JTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgbWlncmF0b3I6IE1pZ3JhdG9yU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IG1pZ3JhdG9yO1xuIiwiaW1wb3J0IFBlcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeSBmcm9tICcjc2VydmVyL3JlcG9zaXRvcmllcy9QZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnkudHMnO1xuZGVjbGFyZSBjb25zdCBwZXJtaXNzaW9uQXNzaWdubWVudFJlcG9zaXRvcnk6IFBlcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeTtcbmV4cG9ydCBkZWZhdWx0IHBlcm1pc3Npb25Bc3NpZ25tZW50UmVwb3NpdG9yeTtcbiIsImltcG9ydCBQZXJtaXNzaW9uUmVwb3NpdG9yeSBmcm9tICcjc2VydmVyL3JlcG9zaXRvcmllcy9QZXJtaXNzaW9uUmVwb3NpdG9yeS50cyc7XG5kZWNsYXJlIGNvbnN0IHBlcm1pc3Npb25SZXBvc2l0b3J5OiBQZXJtaXNzaW9uUmVwb3NpdG9yeTtcbmV4cG9ydCBkZWZhdWx0IHBlcm1pc3Npb25SZXBvc2l0b3J5O1xuIiwiaW1wb3J0IHR5cGUgeyBIdHRwQ29udGV4dCB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0h0dHBDb250ZXh0Q29udHJhY3QudHMnO1xuaW1wb3J0IFJvdXRlclNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3Qgcm91dGVyOiBSb3V0ZXJTZXJ2aWNlPEh0dHBDb250ZXh0PjtcbmV4cG9ydCBkZWZhdWx0IHJvdXRlcjtcbiIsImltcG9ydCBTY2hlZHVsZXJTZXJ2aWNlIGZyb20gJyNzZXJ2ZXIvc2VydmljZXMvU2NoZWR1bGVyU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IHNjaGVkdWxlcjogU2NoZWR1bGVyU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IHNjaGVkdWxlcjtcbiIsImltcG9ydCBTaGVsbFNlcnZpY2UgZnJvbSAnI3NlcnZlci9zZXJ2aWNlcy9TaGVsbFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBzaGVsbDogU2hlbGxTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgc2hlbGw7XG4iLCJpbXBvcnQgVG9rZW5SZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL1Rva2VuUmVwb3NpdG9yeS50cyc7XG5kZWNsYXJlIGNvbnN0IHRva2VuUmVwb3NpdG9yeTogVG9rZW5SZXBvc2l0b3J5O1xuZXhwb3J0IGRlZmF1bHQgdG9rZW5SZXBvc2l0b3J5O1xuIiwiaW1wb3J0IFVzZXJSZXBvc2l0b3J5IGZyb20gJyNzZXJ2ZXIvcmVwb3NpdG9yaWVzL1VzZXJSZXBvc2l0b3J5LnRzJztcbmRlY2xhcmUgY29uc3QgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5O1xuZXhwb3J0IGRlZmF1bHQgdXNlclJlcG9zaXRvcnk7XG4iLCJpbXBvcnQgdHlwZSB7IEt5c2VseSB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgfSBmcm9tICcuL0RhdGFiYXNlQ29udHJhY3QnO1xuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUt5c2VseSBleHRlbmRzIEt5c2VseTxEYXRhYmFzZUNvbnRyYWN0PiB7XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIExvYWRlcjxUID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGxvYWQoZW50aXRpZXM6IFRbXSk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQgaW50ZXJmYWNlIExvYWRlclJlY29yZDxUID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIFtrZXk6IHN0cmluZ106IExvYWRlcjxUPjtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGRlZmluZUxvYWRlcjxUID0gUmVjb3JkPHN0cmluZywgYW55Pj4obG9hZGVyOiBMb2FkZXI8VD4pOiBMb2FkZXI8VD47XG4iLCJ0eXBlIEtleU9yRnVuY3Rpb248VD4gPSBrZXlvZiBUIHwgKChlbnRpdHk6IFQpID0+IGFueSk7XG5leHBvcnQgaW50ZXJmYWNlIEhhc01hbnlUaHJvdWdoTG9hZGVyT3B0aW9uczxURW50aXR5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRQaXZvdEVudGl0eSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBUVGFyZ2V0RW50aXR5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBwaXZvdDoge1xuICAgICAgICBzb3VyY2VLZXk6IEtleU9yRnVuY3Rpb248VEVudGl0eT47XG4gICAgICAgIHRhcmdldEtleTogS2V5T3JGdW5jdGlvbjxUUGl2b3RFbnRpdHk+O1xuICAgICAgICBmaW5kRW50aXRpZXMoaWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTxUUGl2b3RFbnRpdHlbXT47XG4gICAgfTtcbiAgICB0YXJnZXQ6IHtcbiAgICAgICAgc291cmNlS2V5OiBLZXlPckZ1bmN0aW9uPFRQaXZvdEVudGl0eT47XG4gICAgICAgIHRhcmdldEtleTogS2V5T3JGdW5jdGlvbjxUVGFyZ2V0RW50aXR5PjtcbiAgICAgICAgZmluZEVudGl0aWVzKGlkczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8VFRhcmdldEVudGl0eVtdPjtcbiAgICB9O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gbG9hZEhhc01hbnlUaHJvdWdoPFRFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFBpdm90RW50aXR5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRUYXJnZXRFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ocGF5bG9hZDogYW55IHwgYW55W10sIG9wdGlvbnM6IEhhc01hbnlUaHJvdWdoTG9hZGVyT3B0aW9uczxURW50aXR5LCBUUGl2b3RFbnRpdHksIFRUYXJnZXRFbnRpdHk+KTogUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZUhhc01hbnlUaHJvdWdoTG9hZGVyPFRFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PiwgVFBpdm90RW50aXR5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFRUYXJnZXRFbnRpdHkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ob3B0aW9uczogSGFzTWFueVRocm91Z2hMb2FkZXJPcHRpb25zPFRFbnRpdHksIFRQaXZvdEVudGl0eSwgVFRhcmdldEVudGl0eT4pOiBpbXBvcnQoXCIjc2VydmVyL3V0aWxzL2RlZmluZUxvYWRlci50c1wiKS5Mb2FkZXI8VEVudGl0eT47XG5leHBvcnQge307XG4iLCJpbnRlcmZhY2UgUGVybWlzc2lvbkxvYWRlck9wdGlvbnMge1xuICAgIGFzc2lnbmFibGVUeXBlOiBzdHJpbmcgfCAoKGU6IGFueSkgPT4gc3RyaW5nKTtcbiAgICBhc3NpZ25hYmxlSWQ6IHN0cmluZyB8ICgoZTogYW55KSA9PiBzdHJpbmcpO1xuICAgIHRhcmdldEtleT86IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGxvYWRQZXJtaXNzaW9uczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ocGF5bG9hZDogVCB8IFRbXSwgb3B0aW9ucz86IFBlcm1pc3Npb25Mb2FkZXJPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZVBlcm1pc3Npb25Mb2FkZXI8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KG9wdGlvbnM/OiBQZXJtaXNzaW9uTG9hZGVyT3B0aW9ucyk6IGltcG9ydChcIiNzZXJ2ZXIvdXRpbHMvZGVmaW5lTG9hZGVyLnRzXCIpLkxvYWRlcjxUPjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRHJpdmVDb25maWdFbnRpdHkudHMnO1xuZGVjbGFyZSBjb25zdCBEcml2ZUNvbmZpZ19iYXNlOiB0eXBlb2YgQmFzZSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge307XG4gICAgX19pc0NvbmZpZ01vZGVsOiBib29sZWFuO1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCByb3c6IGFueSk6IFByb21pc2U8VD47XG4gICAgbGlzdDxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogUHJvbWlzZTxUW10+O1xuICAgIGZpbmQ8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+O1xuICAgIGZpbmRPckZhaWw8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8VD47XG4gICAgY3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGl0ZW06IFQgJiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8dm9pZD47XG4gICAgdXBkYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGlkOiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVwZGF0ZU9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGRlc3Ryb3k8VD4odGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCwgaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJpdmVDb25maWcgZXh0ZW5kcyBEcml2ZUNvbmZpZ19iYXNlIHtcbiAgICBzdGF0aWMgc2VyaWFsaXplPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIHJvdzogYW55KTogUHJvbWlzZTxUPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvRmlsZUVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IERyaXZlVXJsT3B0aW9ucyB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RyaXZlQ29udHJhY3QudHMnO1xuaW50ZXJmYWNlIFVSTENhY2hlIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBleHBpcmVzOiBudW1iZXI7XG59XG5kZWNsYXJlIGNvbnN0IEZpbGVfYmFzZTogdHlwZW9mIEJhc2UgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbGlzdGVuZXJzOiBpbXBvcnQoXCIjc2hhcmVkL21peGlucy9Ib29rc01peGluLnRzXCIpLkxpc3RlbmVyW107XG4gICAgICAgIG9uKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xuICAgICAgICBlbWl0QXN5bmMoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIHNhdmUoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICBzb2Z0RGVsZXRlKCk6IFByb21pc2U8dm9pZD47XG4gICAgfTtcbiAgICBfX21vZGVsOiB7XG4gICAgICAgIHRhYmxlOiBcImZpbGVzXCI7XG4gICAgICAgIHByaW1hcnlLZXk6IGtleW9mIGltcG9ydChcIi4uL2luZGV4LnRzXCIpLkZpbGVUYWJsZTtcbiAgICB9O1xuICAgIHNlcmlhbGl6ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgcm93OiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIHNlbGVjdCgpOiBpbXBvcnQoXCJreXNlbHlcIikuU2VsZWN0UXVlcnlCdWlsZGVyPGltcG9ydChcIi4uL2luZGV4LnRzXCIpLkRhdGFiYXNlQ29udHJhY3QsIFwiZmlsZXNcIiwgYW55PjtcbiAgICBwYWdpbmF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxQYWdpbmF0ZU9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8aW1wb3J0KFwiLi4vLi4vc2hhcmVkL2luZGV4LnRzXCIpLlBhZ2luYXRpb25FbnRpdHk8VD4+O1xuICAgIGxpc3Q8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsTGlzdE9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFtdPjtcbiAgICBmaW5kT25lPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvPzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbEZpbmRPcHRpb25zPFwiZmlsZXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAgIGZpbmRPbmVPckZhaWw8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRmluZE9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8VD47XG4gICAgZmluZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSk6IFByb21pc2U8VCB8IG51bGw+O1xuICAgIGZpbmRPckZhaWw8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGZpbmRCeTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgY29sdW1uOiBrZXlvZiBpbXBvcnQoXCIuLi9pbmRleC50c1wiKS5GaWxlVGFibGUsIHZhbHVlOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGZpbmRCeU9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgY29sdW1uOiBrZXlvZiBpbXBvcnQoXCIuLi9pbmRleC50c1wiKS5GaWxlVGFibGUsIHZhbHVlOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGV4aXN0czxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxMaXN0T3B0aW9uczxcImZpbGVzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICBjb3VudDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxDb3VudE9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8bnVtYmVyPjtcbiAgICBjcmVhdGU8VD4odGhpczogbmV3ICgpID0+IFQsIHBheWxvYWQ6IG9iamVjdCAmIHtcbiAgICAgICAgZHJpdmU6IHN0cmluZztcbiAgICAgICAgbWltZXR5cGU6IHN0cmluZztcbiAgICAgICAgY2xpZW50X25hbWU6IHN0cmluZztcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICBwdWJsaWM6IGJvb2xlYW47XG4gICAgfSAmIHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkO1xuICAgIH0pOiBQcm9taXNlPFQ+O1xuICAgIGNyZWF0ZU1hbnk8VD4odGhpczogbmV3ICgpID0+IFQsIHZhbHVlczogKG9iamVjdCAmIHtcbiAgICAgICAgZHJpdmU6IHN0cmluZztcbiAgICAgICAgbWltZXR5cGU6IHN0cmluZztcbiAgICAgICAgY2xpZW50X25hbWU6IHN0cmluZztcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICBwdWJsaWM6IGJvb2xlYW47XG4gICAgfSAmIHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkO1xuICAgIH0pW10pOiBQcm9taXNlPFRbXT47XG4gICAgdXBkYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvOiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsVXBkYXRlT3B0aW9uczxcImZpbGVzXCI+KTogUHJvbWlzZTxUPjtcbiAgICB1cGRhdGVCeUlkPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55LCB2YWx1ZXM6IHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgZHJpdmU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIG1pbWV0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjbGllbnRfbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZmlsZW5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHB1cnBvc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHB1YmxpYz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgfSwgb3B0aW9ucz86IHtcbiAgICAgICAgZGVidWc/OiBib29sZWFuO1xuICAgIH0gfCB1bmRlZmluZWQpOiBQcm9taXNlPFQ+O1xuICAgIGRlc3Ryb3k8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRGVzdHJveU9wdGlvbnM8XCJmaWxlc1wiPiB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD47XG4gICAgZmlyc3RPckNyZWF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbzogaW1wb3J0KFwiI3NlcnZlci9taXhpbnMvTW9kZWxNaXhpbi50c1wiKS5Nb2RlbEZpcnN0T3JDcmVhdGVPcHRpb25zPFwiZmlsZXNcIj4pOiBUO1xuICAgIHVwZGF0ZU9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsIG86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxVcGRhdGVPckNyZWF0ZU9wdGlvbnM8XCJmaWxlc1wiPik6IFQ7XG4gICAgZGVzdHJveUJ5SWQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge307XG4gICAgbG9hZDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZW50aXRpZXM6IFQgfCBUW10sIG5hbWVzOiBcIm1ldGFzXCIgfCBcIm1ldGFzXCJbXSk6IFByb21pc2U8dm9pZD47XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGdldDxUID0gYW55PihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAgICAgICBnZXQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiBQcm9taXNlPFQ+O1xuICAgICAgICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGUgZXh0ZW5kcyBGaWxlX2Jhc2Uge1xuICAgIHN0YXRpYyBjYWNoZTogTWFwPHN0cmluZywgVVJMQ2FjaGU+O1xuICAgIHN0YXRpYyBoYXMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj47XG4gICAgc3RhdGljIGZpbmRCeUZpbGVuYW1lKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGUgfCB1bmRlZmluZWQ+O1xuICAgIHJlYWRTdHJlYW0oKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+O1xuICAgIHJlYWQoKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT4+O1xuICAgIGxvYWRVcmwob3B0aW9ucz86IERyaXZlVXJsT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgc3RhdGljIGxvYWRVcmxzKGl0ZW1zOiBGaWxlW10sIG9wdGlvbnM/OiBEcml2ZVVybE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHN0YXRpYyBsb2FkTWV0YXMoaXRlbXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD47XG4gICAgZGVsZXRlRnJvbURyaXZlKCk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQmFzZU1ldGEgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9GaWxlTWV0YUVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IEZpbGVNZXRhX2Jhc2U6IHR5cGVvZiBCYXNlTWV0YSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBzYXZlKCk6IFByb21pc2U8dm9pZD47XG4gICAgICAgIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgc29mdERlbGV0ZSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIH07XG4gICAgX19tb2RlbDoge1xuICAgICAgICB0YWJsZTogXCJmaWxlX21ldGFzXCI7XG4gICAgICAgIHByaW1hcnlLZXk6IGtleW9mIGltcG9ydChcIi4uXCIpLkZpbGVNZXRhVGFibGU7XG4gICAgfTtcbiAgICBzZXJpYWxpemU8VD4odGhpczogbmV3ICgpID0+IFQsIHJvdzogYW55KTogUHJvbWlzZTxUPjtcbiAgICBzZWxlY3QoKTogaW1wb3J0KFwia3lzZWx5XCIpLlNlbGVjdFF1ZXJ5QnVpbGRlcjxpbXBvcnQoXCIuLlwiKS5EYXRhYmFzZUNvbnRyYWN0LCBcImZpbGVfbWV0YXNcIiwgYW55PjtcbiAgICBwYWdpbmF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxQYWdpbmF0ZU9wdGlvbnM8XCJmaWxlX21ldGFzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxpbXBvcnQoXCIuLi8uLi9zaGFyZWRcIikuUGFnaW5hdGlvbkVudGl0eTxUPj47XG4gICAgbGlzdDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxMaXN0T3B0aW9uczxcImZpbGVfbWV0YXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPFRbXT47XG4gICAgZmluZE9uZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxGaW5kT3B0aW9uczxcImZpbGVfbWV0YXNcIj4gfCB1bmRlZmluZWQpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuICAgIGZpbmRPbmVPckZhaWw8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRmluZE9wdGlvbnM8XCJmaWxlX21ldGFzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxUPjtcbiAgICBmaW5kPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBpZDogYW55KTogUHJvbWlzZTxUIHwgbnVsbD47XG4gICAgZmluZE9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgaWQ6IGFueSk6IFByb21pc2U8VD47XG4gICAgZmluZEJ5PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBjb2x1bW46IGtleW9mIGltcG9ydChcIi4uXCIpLkZpbGVNZXRhVGFibGUsIHZhbHVlOiBhbnkpOiBQcm9taXNlPFQ+O1xuICAgIGZpbmRCeU9yRmFpbDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgY29sdW1uOiBrZXlvZiBpbXBvcnQoXCIuLlwiKS5GaWxlTWV0YVRhYmxlLCB2YWx1ZTogYW55KTogUHJvbWlzZTxUPjtcbiAgICBleGlzdHM8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsTGlzdE9wdGlvbnM8XCJmaWxlX21ldGFzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICBjb3VudDxUPih0aGlzOiBuZXcgKCkgPT4gVCwgbz86IGltcG9ydChcIiNzZXJ2ZXIvbWl4aW5zL01vZGVsTWl4aW4udHNcIikuTW9kZWxDb3VudE9wdGlvbnM8XCJmaWxlX21ldGFzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTxudW1iZXI+O1xuICAgIGNyZWF0ZTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgcGF5bG9hZDogb2JqZWN0ICYge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGZpbGVfaWQ6IG51bWJlcjtcbiAgICB9ICYge1xuICAgICAgICBpZD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICBjcmVhdGVkX2F0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB1cGRhdGVkX2F0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBkZWxldGVkX2F0Pzogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICB9KTogUHJvbWlzZTxUPjtcbiAgICBjcmVhdGVNYW55PFQ+KHRoaXM6IG5ldyAoKSA9PiBULCB2YWx1ZXM6IChvYmplY3QgJiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgZmlsZV9pZDogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICAgIGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICB2YWx1ZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZWRfYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZWRfYXQ/OiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkO1xuICAgIH0pW10pOiBQcm9taXNlPFRbXT47XG4gICAgdXBkYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvOiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsVXBkYXRlT3B0aW9uczxcImZpbGVfbWV0YXNcIj4pOiBQcm9taXNlPFQ+O1xuICAgIHVwZGF0ZUJ5SWQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnksIHZhbHVlczoge1xuICAgICAgICBpZD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBkZWxldGVkX2F0Pzogc3RyaW5nIHwgRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZpbGVfaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgfSwgb3B0aW9ucz86IHtcbiAgICAgICAgZGVidWc/OiBib29sZWFuO1xuICAgIH0gfCB1bmRlZmluZWQpOiBQcm9taXNlPFQ+O1xuICAgIGRlc3Ryb3k8VD4odGhpczogbmV3ICgpID0+IFQsIG8/OiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRGVzdHJveU9wdGlvbnM8XCJmaWxlX21ldGFzXCI+IHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPjtcbiAgICBmaXJzdE9yQ3JlYXRlPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBvOiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsRmlyc3RPckNyZWF0ZU9wdGlvbnM8XCJmaWxlX21ldGFzXCI+KTogVDtcbiAgICB1cGRhdGVPckNyZWF0ZTxUPih0aGlzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULCBvOiBpbXBvcnQoXCIjc2VydmVyL21peGlucy9Nb2RlbE1peGluLnRzXCIpLk1vZGVsVXBkYXRlT3JDcmVhdGVPcHRpb25zPFwiZmlsZV9tZXRhc1wiPik6IFQ7XG4gICAgZGVzdHJveUJ5SWQ8VD4odGhpczogbmV3ICgpID0+IFQsIGlkOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVNZXRhIGV4dGVuZHMgRmlsZU1ldGFfYmFzZSB7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBHaXRHYXRld2F5IH0gZnJvbSAnI3NlcnZlci9nYXRld2F5cy9HaXRHYXRld2F5LnRzJztcbmltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LnRzJztcbmltcG9ydCBzaGVsbCBmcm9tICcjc2VydmVyL2ZhY2FkZXMvc2hlbGwudHMnO1xuZGVjbGFyZSBjb25zdCBNb2R1bGVfYmFzZTogdHlwZW9mIEJhc2U7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2R1bGUgZXh0ZW5kcyBNb2R1bGVfYmFzZSB7XG4gICAgZ2V0IGdpdCgpOiBHaXRHYXRld2F5O1xuICAgIG1ha2VQYXRoKC4uLnBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZztcbiAgICBzdGF0aWNQYXRoKC4uLnBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZztcbiAgICBjb21tYW5kOiB0eXBlb2Ygc2hlbGwuY29tbWFuZDtcbiAgICBsb2FkKCk6IHZvaWQ7XG4gICAgZmluZENsaWVudEVudHJ5cG9pbnRGaWxlbmFtZShjb250ZXh0PzogJ2RldicgfCAnbm9kZScgfCAnYnJvd3NlcicpOiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IGNvbmZpZyBmcm9tICcjc2VydmVyL2ZhY2FkZXMvY29uZmlnLnRzJztcbmltcG9ydCB7IEdpdEdhdGV3YXkgfSBmcm9tICcjc2VydmVyL2dhdGV3YXlzL0dpdEdhdGV3YXkudHMnO1xuaW1wb3J0IEdpdEJyYW5jaFJlcG9zaXRvcnkgZnJvbSAnI3NlcnZlci9yZXBvc2l0b3JpZXMvR2l0QnJhbmNoUmVwb3NpdG9yeS50cyc7XG5pbXBvcnQgR2l0Q29tbWl0UmVwb3NpdG9yeSBmcm9tICcjc2VydmVyL3JlcG9zaXRvcmllcy9HaXRDb21taXRSZXBvc2l0b3J5LnRzJztcbmltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvUGx1Z2luRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgUGx1Z2luRW50cnlFbnRpdHlfYmFzZTogdHlwZW9mIEJhc2U7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRyeUVudGl0eSBleHRlbmRzIFBsdWdpbkVudHJ5RW50aXR5X2Jhc2Uge1xuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xuICAgIG1ha2VQYXRoKC4uLnBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZztcbiAgICBzZXQ6IHR5cGVvZiBjb25maWcuc2V0O1xuICAgIGdldDogdHlwZW9mIGNvbmZpZy5nZXQ7XG4gICAgZ2V0IGdpdCgpOiBHaXRHYXRld2F5O1xuICAgIGdldCBjb21taXRzKCk6IEdpdENvbW1pdFJlcG9zaXRvcnk7XG4gICAgZ2V0IGJyYW5jaGVzKCk6IEdpdEJyYW5jaFJlcG9zaXRvcnk7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgUGx1Z2luRW50cnlFbnRpdHkgZnJvbSAnLi9QbHVnaW5FbnRyeUVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IFJvdXRlckV2ZW50cyB9IGZyb20gJyNzZXJ2ZXIvc2VydmljZXMvUm91dGVyU2VydmljZS50cyc7XG5pbnRlcmZhY2UgQWRkQXBpRm9sZGVyT3B0aW9ucyB7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luRW50aXR5IGV4dGVuZHMgUGx1Z2luRW50cnlFbnRpdHkge1xuICAgIGFwaUZvbGRlcnM6IE1hcDxzdHJpbmcsIEFkZEFwaUZvbGRlck9wdGlvbnM+O1xuICAgIGFwaURpcmVjdG9yaWVzOiBTZXQ8c3RyaW5nPjtcbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIHN0YXRpY1BhdGgoLi4ucGFydHM6IHN0cmluZ1tdKTogc3RyaW5nO1xuICAgIGxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBvblJvdXRlclJlZ2lzdGVyZWQoY3R4OiBSb3V0ZXJFdmVudHNbJ3JvdXRlcjpyZWdpc3RlcmVkJ10pOiBQcm9taXNlPHZvaWQ+O1xuICAgIGFkZEFwaUZvbGRlcihkaXJlY3Rvcnk6IHN0cmluZywgb3B0aW9ucz86IEFkZEFwaUZvbGRlck9wdGlvbnMpOiB2b2lkO1xuICAgIGFkZFJvdXRlckZvbGRlcihkaXJlY3Rvcnk6IHN0cmluZyk6IHZvaWQ7XG4gICAgc3RhdGljIGZyb21QbHVnaW5EaXNjb3ZlckVudGl0eTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZW50aXR5OiBQbHVnaW5FbnRyeUVudGl0eSk6IFQ7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IExpc3RPcHRpb25zIH0gZnJvbSAnLi9saXN0LnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZXhpc3RzPFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIExpc3RPcHRpb25zPFQ+Pih0YWJsZTogVCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPGJvb2xlYW4+O1xuIiwiZGVjbGFyZSBtb2R1bGUgJ2t5c2VseScge1xuICAgIGludGVyZmFjZSBDcmVhdGVUYWJsZUJ1aWxkZXI8VEIgZXh0ZW5kcyBzdHJpbmcsIEMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4ge1xuICAgICAgICBhZGRJZENvbHVtbjxDTiBleHRlbmRzIHN0cmluZyA9ICdpZCc+KGNvbD86IENOKTogQ3JlYXRlVGFibGVCdWlsZGVyPFRCLCBDIHwgQ04+O1xuICAgIH1cbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IENyZWF0ZVRhYmxlQnVpbGRlciB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IENvbHVtblR5cGUsIEV4cHJlc3Npb25CdWlsZGVyIH0gZnJvbSAna3lzZWx5JztcbmltcG9ydCB0eXBlIHsgU2VsZWN0YWJsZSB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgeyBub3cgfSBmcm9tICcuL2NvbW1vbi50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmltcG9ydCBkYiBmcm9tICcjc2VydmVyL2ZhY2FkZXMvZGF0YWJhc2UudHMnO1xudHlwZSBXaGVyZUNhcGFibGU8UUI+ID0ge1xuICAgIHdoZXJlOiAoLi4uYXJnczogYW55W10pID0+IFFCO1xufTtcbnR5cGUgVXBkYXRlRnJvbTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+ID0gUmV0dXJuVHlwZTx0eXBlb2YgZGIudXBkYXRlVGFibGU8VD4+O1xuZXhwb3J0IGludGVyZmFjZSBTb2Z0RGVsZXRlT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2U+IHtcbiAgICBzZXJpYWxpemU/OiAocm93OiBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPikgPT4gYW55O1xuICAgIHF1ZXJ5OiAocWI6IFVwZGF0ZUZyb208VD4pID0+IFVwZGF0ZUZyb208VD47XG59XG5leHBvcnQgdHlwZSBTb2Z0RGVsZXRlUmVzdWx0PFQgZXh0ZW5kcyBrZXlvZiBEYXRhYmFzZSwgTyBleHRlbmRzIFNvZnREZWxldGVPcHRpb25zPFQ+IHwgdW5kZWZpbmVkPiA9IE8gZXh0ZW5kcyB1bmRlZmluZWQgPyBTZWxlY3RhYmxlPERhdGFiYXNlW1RdPltdIDogTyBleHRlbmRzIHtcbiAgICBzZXJpYWxpemU6IChyb3c6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+KSA9PiBpbmZlciBSO1xufSA/IFJbXSA6IFNlbGVjdGFibGU8RGF0YWJhc2VbVF0+W107XG5leHBvcnQgaW50ZXJmYWNlIFNvZnREZWxldGVUYWJsZSB7XG4gICAgZGVsZXRlZF9hdDogQ29sdW1uVHlwZTxEYXRlIHwgbnVsbCwgbmV2ZXIgfCBudWxsIHwgUmV0dXJuVHlwZTx0eXBlb2Ygbm93Piwgc3RyaW5nIHwgbnVsbCB8IFJldHVyblR5cGU8dHlwZW9mIG5vdz4+O1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gd2hlcmVOb3REZWxldGVkPFFCIGV4dGVuZHMgV2hlcmVDYXBhYmxlPFFCPj4ocWI6IFFCKTogUUI7XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1bmRlbGV0ZWQocWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55Pik6IGltcG9ydChcImt5c2VseVwiKS5FeHByZXNzaW9uV3JhcHBlcjxhbnksIGFueSwgaW1wb3J0KFwia3lzZWx5XCIpLlNxbEJvb2w+O1xuZXhwb3J0IGRlY2xhcmUgbmFtZXNwYWNlIHVuZGVsZXRlZCB7XG4gICAgdmFyIGNvbHVtbjogKGNvbDogc3RyaW5nKSA9PiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gaW1wb3J0KFwia3lzZWx5XCIpLkV4cHJlc3Npb25XcmFwcGVyPGFueSwgYW55LCBpbXBvcnQoXCJreXNlbHlcIikuU3FsQm9vbD47XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBkZWxldGVkOiAocWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gaW1wb3J0KFwia3lzZWx5XCIpLkV4cHJlc3Npb25XcmFwcGVyPGFueSwgYW55LCBpbXBvcnQoXCJreXNlbHlcIikuU3FsQm9vbD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhZGRTb2Z0RGVsZXRlQ29sdW1uOiAoY3RiOiBDcmVhdGVUYWJsZUJ1aWxkZXI8YW55LCBhbnk+KSA9PiBDcmVhdGVUYWJsZUJ1aWxkZXI8YW55LCBhbnk+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gc29mdERlbGV0ZTxUIGV4dGVuZHMga2V5b2YgRGF0YWJhc2UsIE8gZXh0ZW5kcyBTb2Z0RGVsZXRlT3B0aW9uczxUPj4odGFibGU6IFQsIG9wdGlvbnM/OiBPKTogUHJvbWlzZTxTb2Z0RGVsZXRlUmVzdWx0PFQsIE8+PjtcbmRlY2xhcmUgbW9kdWxlICdreXNlbHknIHtcbiAgICBpbnRlcmZhY2UgQ3JlYXRlVGFibGVCdWlsZGVyPFRCIGV4dGVuZHMgc3RyaW5nLCBDIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+IHtcbiAgICAgICAgYWRkU29mdERlbGV0ZUNvbHVtbigpOiBDcmVhdGVUYWJsZUJ1aWxkZXI8VEIsIEMgfCAnZGVsZXRlZF9hdCc+O1xuICAgIH1cbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IENyZWF0ZVRhYmxlQnVpbGRlciB9IGZyb20gJ2t5c2VseSc7XG5pbXBvcnQgdHlwZSB7IENvbHVtblR5cGUgfSBmcm9tICdreXNlbHknO1xuaW1wb3J0IHsgbm93IH0gZnJvbSAnLi9jb21tb24udHMnO1xuZXhwb3J0IGludGVyZmFjZSBUaW1lc3RhbXBUYWJsZSB7XG4gICAgY3JlYXRlZF9hdDogQ29sdW1uVHlwZTxEYXRlLCBzdHJpbmcgfCB1bmRlZmluZWQsIG5ldmVyPjtcbiAgICB1cGRhdGVkX2F0OiBDb2x1bW5UeXBlPERhdGUsIHN0cmluZyB8IHVuZGVmaW5lZCwgRGF0ZSB8IHN0cmluZyB8IFJldHVyblR5cGU8dHlwZW9mIG5vdz4+O1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgYWRkQ3JlYXRlZENvbHVtbjogKGN0YjogQ3JlYXRlVGFibGVCdWlsZGVyPGFueSwgYW55PikgPT4gQ3JlYXRlVGFibGVCdWlsZGVyPGFueSwgYW55PjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGFkZFVwZGF0ZWRDb2x1bW46IChjdGI6IENyZWF0ZVRhYmxlQnVpbGRlcjxhbnksIGFueT4pID0+IENyZWF0ZVRhYmxlQnVpbGRlcjxhbnksIGFueT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhZGRUaW1lc3RhbXBDb2x1bW5zOiAoY3RiOiBDcmVhdGVUYWJsZUJ1aWxkZXI8YW55LCBhbnk+KSA9PiBDcmVhdGVUYWJsZUJ1aWxkZXI8YW55LCBhbnk+O1xuZGVjbGFyZSBtb2R1bGUgJ2t5c2VseScge1xuICAgIGludGVyZmFjZSBDcmVhdGVUYWJsZUJ1aWxkZXI8VEIgZXh0ZW5kcyBzdHJpbmcsIEMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4ge1xuICAgICAgICBhZGRUaW1lc3RhbXBDb2x1bW5zKCk6IENyZWF0ZVRhYmxlQnVpbGRlcjxUQiwgQyB8ICdjcmVhdGVkX2F0JyB8ICd1cGRhdGVkX2F0Jz47XG4gICAgICAgIGFkZENyZWF0ZWRDb2x1bW4oKTogQ3JlYXRlVGFibGVCdWlsZGVyPFRCLCBDIHwgJ2NyZWF0ZWRfYXQnPjtcbiAgICAgICAgYWRkVXBkYXRlZENvbHVtbigpOiBDcmVhdGVUYWJsZUJ1aWxkZXI8VEIsIEMgfCAndXBkYXRlZF9hdCc+O1xuICAgIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhc2VSZWxhdGlvbiB7XG4gICAgbG9hZChlbnRpdGllczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IEJhc2VSZWxhdGlvbiBmcm9tICcuL0Jhc2VSZWxhdGlvbi50cyc7XG5pbnRlcmZhY2UgQmVsb25nc1RvT3B0aW9ucyB7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICB0YWJsZUtleTogc3RyaW5nO1xuICAgIHRhcmdldFRhYmxlOiBzdHJpbmc7XG4gICAgdGFyZ2V0S2V5OiBzdHJpbmc7XG4gICAgcHJvcGVydHk6IHN0cmluZztcbiAgICBzZXJpYWxpemU/OiAocm93OiBhbnkpID0+IGFueTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJlbG9uZ3NUbyBleHRlbmRzIEJhc2VSZWxhdGlvbiB7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICB0YWJsZUtleTogc3RyaW5nO1xuICAgIHRhcmdldFRhYmxlOiBzdHJpbmc7XG4gICAgdGFyZ2V0S2V5OiBzdHJpbmc7XG4gICAgcHJvcGVydHk6IHN0cmluZztcbiAgICBzZXJpYWxpemU6IChyb3c6IGFueSkgPT4gYW55O1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEJlbG9uZ3NUb09wdGlvbnMpO1xuICAgIGxvYWQoZW50aXRpZXM6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCZWxvbmdzVG8gZnJvbSAnLi9CZWxvbmdzVG9SZWxhdGlvbi50cyc7XG5pbXBvcnQgQmFzZVJlbGF0aW9uIGZyb20gJy4vQmFzZVJlbGF0aW9uLnRzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIExvYWRGaWxlTWV0YXMgZXh0ZW5kcyBCYXNlUmVsYXRpb24ge1xuICAgIGZpbGVLZXk6IHN0cmluZztcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKGZpbGVLZXk/OiBzdHJpbmcsIHByb3BlcnR5Pzogc3RyaW5nKTtcbiAgICBsb2FkKGVudGl0aWVzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBMb2FkRmlsZVVybCBleHRlbmRzIEJhc2VSZWxhdGlvbiB7XG4gICAgZmlsZUtleTogc3RyaW5nO1xuICAgIHByb3BlcnR5OiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoZmlsZUtleT86IHN0cmluZywgcHJvcGVydHk/OiBzdHJpbmcpO1xuICAgIGxvYWQoZW50aXRpZXM6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJlbG9uZ3NUb0ZpbGUgZXh0ZW5kcyBCZWxvbmdzVG8ge1xuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5Pzogc3RyaW5nLCB0YXJnZXRLZXk/OiBzdHJpbmcpO1xuICAgIHVybChwcm9wZXJ0eT86IHN0cmluZyk6IExvYWRGaWxlVXJsO1xuICAgIG1ldGFzKHByb3BlcnR5Pzogc3RyaW5nKTogTG9hZEZpbGVNZXRhcztcbn1cbiIsImltcG9ydCBCZWxvbmdzVG8gZnJvbSAnLi9CZWxvbmdzVG9SZWxhdGlvbi50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCZWxvbmdzVG9Vc2VyIGV4dGVuZHMgQmVsb25nc1RvIHtcbiAgICBjb25zdHJ1Y3RvcigpO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBEYXRhYmFzZUNvbnRyYWN0IGFzIERhdGFiYXNlIH0gZnJvbSAnI3NlcnZlci9jb250cmFjdHMvRGF0YWJhc2VDb250cmFjdC50cyc7XG5pbnRlcmZhY2UgSGFzTWFueU9wdGlvbnMge1xuICAgIHRhYmxlOiBrZXlvZiBEYXRhYmFzZTtcbiAgICB0YWJsZUtleTogc3RyaW5nO1xuICAgIHRhcmdldFRhYmxlOiBrZXlvZiBEYXRhYmFzZTtcbiAgICB0YXJnZXRLZXk6IHN0cmluZztcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHNlcmlhbGl6ZT86IChyb3c6IGFueSkgPT4gYW55O1xuICAgIGFmdGVyPzogKHJvd3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT47XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIYXNNYW55IHtcbiAgICB0YWJsZTogc3RyaW5nO1xuICAgIHRhYmxlS2V5OiBzdHJpbmc7XG4gICAgdGFyZ2V0VGFibGU6IHN0cmluZztcbiAgICB0YXJnZXRLZXk6IHN0cmluZztcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHNlcmlhbGl6ZTogKHJvdzogYW55KSA9PiBhbnk7XG4gICAgYWZ0ZXI6IChyb3dzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEhhc01hbnlPcHRpb25zKTtcbiAgICBsb2FkKGVudGl0aWVzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IERhdGFiYXNlQ29udHJhY3QgYXMgRGF0YWJhc2UgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9EYXRhYmFzZUNvbnRyYWN0LnRzJztcbmludGVyZmFjZSBIYXNNZXRhc09wdGlvbnMge1xuICAgIHRhYmxlOiBrZXlvZiBEYXRhYmFzZTtcbiAgICB0YWJsZUtleTogc3RyaW5nO1xuICAgIHRhcmdldFRhYmxlOiBrZXlvZiBEYXRhYmFzZTtcbiAgICB0YXJnZXRLZXk6IHN0cmluZztcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGFzTWV0YXMge1xuICAgIHRhYmxlOiBzdHJpbmc7XG4gICAgdGFibGVLZXk6IHN0cmluZztcbiAgICB0YXJnZXRUYWJsZTogc3RyaW5nO1xuICAgIHRhcmdldEtleTogc3RyaW5nO1xuICAgIHByb3BlcnR5OiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSGFzTWV0YXNPcHRpb25zKTtcbiAgICBsb2FkKGVudGl0aWVzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQmFzZVJlbGF0aW9uIGZyb20gJy4vQmFzZVJlbGF0aW9uLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VDb250cmFjdCBhcyBEYXRhYmFzZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL0RhdGFiYXNlQ29udHJhY3QudHMnO1xuaW50ZXJmYWNlIEhhc01hbnlUaHJvdWdoT3B0aW9ucyB7XG4gICAgdGFibGU6IGtleW9mIERhdGFiYXNlO1xuICAgIHRhYmxlS2V5OiBzdHJpbmc7XG4gICAgdGFyZ2V0VGFibGU6IGtleW9mIERhdGFiYXNlO1xuICAgIHRhcmdldEtleTogc3RyaW5nO1xuICAgIHBpdm90VGFibGU6IGtleW9mIERhdGFiYXNlO1xuICAgIHBpdm90U291cmNlS2V5OiBzdHJpbmc7XG4gICAgcGl2b3RUYXJnZXRLZXk6IHN0cmluZztcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHNlcmlhbGl6ZT86IChyb3c6IGFueSkgPT4gYW55O1xuICAgIGFmdGVyPzogKHJvd3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT47XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIYXNNYW55VGhyb3VnaCBleHRlbmRzIEJhc2VSZWxhdGlvbiB7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICB0YWJsZUtleTogc3RyaW5nO1xuICAgIHRhcmdldFRhYmxlOiBzdHJpbmc7XG4gICAgdGFyZ2V0S2V5OiBzdHJpbmc7XG4gICAgcGl2b3RUYWJsZTogc3RyaW5nO1xuICAgIHBpdm90U291cmNlS2V5OiBzdHJpbmc7XG4gICAgcGl2b3RUYXJnZXRLZXk6IHN0cmluZztcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHNlcmlhbGl6ZTogKHJvdzogYW55KSA9PiBhbnk7XG4gICAgYWZ0ZXI6IChyb3dzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEhhc01hbnlUaHJvdWdoT3B0aW9ucyk7XG4gICAgbG9hZChlbnRpdGllczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBUb2tlbiwgVXNlckVudGl0eSB9IGZyb20gJ0BzaWRla2ljay1jb2Rlci96ZW5pdGgta2l0L3NoYXJlZCc7XG5pbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9Sb3V0ZXJDb250cmFjdC50cyc7XG5leHBvcnQgdHlwZSBBdXRoTWlkZGxld2FyZUNvbnRleHQgPSB7XG4gICAgdXNlcjogVXNlckVudGl0eTtcbiAgICB0b2tlbjogVG9rZW47XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aE1pZGRsZXdhcmUgaW1wbGVtZW50cyBNaWRkbGV3YXJlIHtcbiAgICBoYW5kbGUoY3R4OiBhbnkpOiBQcm9taXNlPEF1dGhNaWRkbGV3YXJlQ29udGV4dD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSAnQHNpZGVraWNrLWNvZGVyL3plbml0aC1raXQvc2hhcmVkJztcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gJyNzZXJ2ZXIvY29udHJhY3RzL1JvdXRlckNvbnRyYWN0LnRzJztcbmltcG9ydCB0eXBlIFVzZXIgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LnRzJztcbmltcG9ydCB0eXBlIHsgSHR0cENvbnRleHQgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9IdHRwQ29udGV4dENvbnRyYWN0LnRzJztcbmV4cG9ydCB0eXBlIEF1dGhTaWxlbmNlTWlkZGxld2FyZUNvbnRleHQgPSB7XG4gICAgdXNlcj86IFVzZXI7XG4gICAgdG9rZW4/OiBUb2tlbjtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdXRoU2lsZW5jZU1pZGRsZXdhcmUgaW1wbGVtZW50cyBNaWRkbGV3YXJlIHtcbiAgICBoYW5kbGUoY3R4OiBIdHRwQ29udGV4dCk6IFByb21pc2U8QXV0aFNpbGVuY2VNaWRkbGV3YXJlQ29udGV4dD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IEF1dGhTaWxlbmNlTWlkZGxld2FyZUNvbnRleHQgfSBmcm9tICcuL0F1dGhTaWxlbmNlTWlkZGxld2FyZS50cyc7XG5pbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUsIE1pZGRsZXdhcmVIYW5kbGVSZXN1bHQgfSBmcm9tICcjc2VydmVyL2NvbnRyYWN0cy9Sb3V0ZXJDb250cmFjdC50cyc7XG5pbXBvcnQgQWNsIGZyb20gJyNzZXJ2ZXIvZW50aXRpZXMvQWNsRW50aXR5LnRzJztcbmV4cG9ydCB0eXBlIEF1dGhvcml6YXRpb25Db250ZXh0ID0gTWlkZGxld2FyZUhhbmRsZVJlc3VsdDxbQXV0aG9yaXphdGlvbk1pZGRsZXdhcmVdPjtcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplUGVybWlzc2lvblBheWxvYWQge1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIHJlc291cmNlOiBzdHJpbmc7XG4gICAgY29uZGl0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBBdXRob3JpemVQZXJtaXNzaW9uIGltcGxlbWVudHMgTWlkZGxld2FyZSB7XG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9ucztcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkOiBBdXRob3JpemVQZXJtaXNzaW9uUGF5bG9hZCB8IEF1dGhvcml6ZVBlcm1pc3Npb25QYXlsb2FkW10pO1xuICAgIGhhbmRsZShjdHg6IEF1dGhvcml6YXRpb25Db250ZXh0KTogUHJvbWlzZTx2b2lkPjtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGhvcml6YXRpb25NaWRkbGV3YXJlIGltcGxlbWVudHMgTWlkZGxld2FyZSB7XG4gICAgaGFuZGxlKGN0eDogQXV0aFNpbGVuY2VNaWRkbGV3YXJlQ29udGV4dCk6IFByb21pc2U8e1xuICAgICAgICBhY2w6IEFjbDtcbiAgICB9PjtcbiAgICBzdGF0aWMgY3JlYXRlKHBheWxvYWQ6IEF1dGhvcml6ZVBlcm1pc3Npb25QYXlsb2FkIHwgQXV0aG9yaXplUGVybWlzc2lvblBheWxvYWRbXSk6IEF1dGhvcml6ZVBlcm1pc3Npb247XG59XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBiYXNlUGF0aCguLi5hcmdzOiBzdHJpbmdbXSk6IHN0cmluZztcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHN0b3JhZ2VQYXRoKC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcmVsYXRpdmVUb0Jhc2VQYXRoKC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdG1wUGF0aCguLi5hcmdzOiBzdHJpbmdbXSk6IHN0cmluZztcbiIsImltcG9ydCB0eXBlIHsgTG9hZGVyUmVjb3JkIH0gZnJvbSAnLi9kZWZpbmVMb2FkZXIudHMnO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlTG9hZGVyRmFjdG9yeTxFIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sIFIgZXh0ZW5kcyBMb2FkZXJSZWNvcmQ8RT4gPSBMb2FkZXJSZWNvcmQ8RT4+KGxvYWRlcnM6IFIpOiB7XG4gICAga2V5czogKGtleW9mIFIpW107XG4gICAgbG9hZGVyczogUjtcbiAgICBsb2FkOiAoZW50aXRpZXM6IEUgfCBFW10sIG5hbWVzOiBrZXlvZiBSIHwgKGtleW9mIFIpW10pID0+IFByb21pc2U8dm9pZD47XG59O1xuIiwiZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3VpZCgpOiBzdHJpbmc7XG4iLCJpbXBvcnQgdHlwZSB7IEh0dHBDb250ZXh0IH0gZnJvbSBcIiNzZXJ2ZXIvY29udHJhY3RzL0h0dHBDb250ZXh0Q29udHJhY3QudHNcIjtcbmV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlciB7XG4gICAgKGN0eDogSHR0cENvbnRleHQpOiBQcm9taXNlPGFueT4gfCAoKCkgPT4gYW55KTtcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGRlZmluZUhhbmRsZXIoaGFuZGxlcjogSGFuZGxlcik6IEhhbmRsZXI7XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBnZW5lcmF0ZUluZGV4RmlsZShvcHRpb25zOiBhbnkpOiB2b2lkO1xuIiwiaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIGNhY2hlPzogYm9vbGVhbjtcbiAgICBvbkJlZm9yZUltcG9ydD86IChjdHg6IHtcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICB9KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBvbkFmdGVySW1wb3J0PzogKGN0eDoge1xuICAgICAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgICAgICBtb2R1bGU6IGFueTtcbiAgICB9KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBvbkVycm9yPzogKGN0eDoge1xuICAgICAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgICAgICBlcnJvcjogRXJyb3I7XG4gICAgfSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgZXhjbHVkZT86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gaW1wb3J0RmlsZXMoZmlsZXM6IHN0cmluZ1tdLCBvcHRpb25zPzogT3B0aW9ucyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBpbXBvcnRHbG9iKHBhdHRlcm46IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbnMpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gaW1wb3J0QWxsKGRpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBpbXBvcnRPbmUoZmlsZW5hbWVzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLGNBQVU7Q0FBQTtPQUFZLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzdCLElBQVcsZ0JBQU07Q0FBQTtPQUFBLEVBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUNqQixJQUFXLGNBQVc7Q0FBSTtPQUFVLENBQUEsY0FBTztDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FB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QTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDUDFCLElBQUEsZ0JBQW9CO0NBQUM7T0FBQTtFQUFBO0VBQWM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRW5DLElBQVcsY0FBYztDQUFDO0VBQUssTUFBRyxDQUFHLEVBQUU7Q0FBRTtFQUFDO0VBQUk7RUFB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QUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0FqQyxJQUFJLGdCQUFVO0NBQUE7T0FBQSxDQUFBLFFBQUEsY0FBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RkLElBQUEsYUFBZTtDQUFBO09BQU0sQ0FBQSxRQUFXLFdBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQ2hDLElBQUksa0JBQWtCO0NBQUM7RUFBRyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxhQUFVO0NBQUk7T0FBVyxDQUFDLFFBQVEsZ0JBQWdCO0NBQUU7RUFBQztFQUFHO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksa0JBQWM7Q0FBRztFQUFLLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGFBQVU7Q0FBQTtPQUFhLENBQUMsZ0JBQWM7Q0FBRTtFQUFDO0VBQUc7RUFBQTtFQUFTO0VBQUc7RUFBQTtDQUFBOzs7O0FDRjVELElBQUEsa0JBQXFCO0NBQUE7T0FBQSxDQUFBLGdCQUFnQjtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQXJDLElBQUEsa0JBQXFCO0NBQUE7T0FBQSxDQUFBLGdCQUFnQjtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQ3JDLElBQVUsNEJBQU07Q0FBQTtPQUFBLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDaEIsSUFBUyxzQkFBTTtDQUFBO09BQUEsQ0FBQSwwQkFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDZixJQUFJLHNCQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDekIsSUFBQSxpQkFBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RBLElBQUksb0JBQW9CO0NBQUM7T0FBQSxFQUFBO0NBQUEsQ0FBQSxJQUFBLEdBQUE7Q0FBQTtBQUN6QixJQUFJLGdCQUFjO0NBQUM7RUFBRyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3RCLElBQUEsV0FBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNMQSxJQUFBLG1CQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQXFCO0VBQUE7RUFBcUI7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0MvRCxJQUFJLG9CQUFvQjtDQUFDO0VBQUMsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxpQkFBZTtDQUFDO09BQVUsQ0FBQSxrQkFBa0I7Q0FBQTtFQUFBO0VBQVM7RUFBRztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksWUFBWTtDQUFDO0VBQUssTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksT0FBSTtDQUFBO09BQVksQ0FBQSxVQUFVO0NBQU07RUFBQztFQUFFO0VBQU07RUFBRztFQUFBO0NBQUE7Ozs7QUNDaEQsSUFBSSxrQkFBa0I7Q0FBQztFQUFHLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGVBQVU7Q0FBSTtPQUFXO0VBQUM7RUFBTTtFQUFZO0VBQU07RUFBTTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQzVELElBQU8sWUFBVTtDQUFBO09BQVUsQ0FBQSxXQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzNCLElBQVMsYUFBYTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN0QixJQUFJLGFBQVM7Q0FBQTtPQUFVO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNOdkIsSUFBQSxvQkFBcUI7Q0FBQTtPQUFBO0VBQUE7RUFBa0I7RUFBUTtFQUFXO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0MxRCxJQUFBLG9CQUFxQjtDQUFBO09BQUE7RUFBQSxHQUFpQjtFQUFDO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBdkMsSUFBTyx5QkFBVTtDQUFBO09BQXVCLENBQUEsUUFBQSxjQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDeEMsSUFBSSxrQkFBa0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGdEIsSUFBVyxZQUFZO0NBQUM7T0FBRSxDQUFBLFdBQW1CLEVBQUEsWUFBVTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN2RCxJQUFPLFlBQWM7Q0FBQTtPQUFhO0VBQUEsRUFBQTtFQUFrQixFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQXBELElBQUEsYUFBZTtDQUFBO0VBQU0sTUFBQTtFQUFBO0VBQVcsT0FBQTtFQUFBLE9BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNDaEMsSUFBTyx1QkFBVTtDQUFBO09BQXFCLENBQUEsWUFBQSxjQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN0QyxJQUFJLHVCQUFlO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0ZuQixJQUFPLGFBQVU7Q0FBQTtPQUFXLENBQUEsR0FBQSxZQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzVCLElBQVcsbUJBQWlCO0NBQUE7T0FBQSxDQUFBLEdBQUEsWUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDNUIsSUFBQSxtQkFBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE9BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQUEsSUFBSSxTQUFTO0NBQUE7T0FBUTtFQUFBLEVBQWU7RUFBRyxFQUFlO0VBQWtCLEVBQVU7RUFBYSxFQUFrQjtFQUFZLEVBQUE7RUFBMkIsRUFBVztFQUFDLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBLEVBQUE7RUFBQSxFQUFBO0VBQUEsRUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDcEssSUFBSSxnQkFBdUI7Q0FBQztPQUFXLENBQUEsUUFBQSxZQUFxQjtDQUFFLENBQUEsSUFBQSxHQUFRO0NBQUM7QUFDdkUsSUFBSSxVQUFTO0NBQUE7T0FBYTtFQUFBO0VBQVE7RUFBVTtFQUFBO0VBQWU7RUFBaUI7RUFBVztFQUFBO0VBQWE7RUFBWTtFQUFlLE9BQUc7RUFBZ0I7RUFBVztFQUFZO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRnpLLElBQUEsZUFBVTtDQUFBO09BQW9CO0VBQUM7RUFBSztFQUF5QjtFQUFBO0NBQUE7RUFBQTtFQUFZO0VBQUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzNFLElBQUksa0JBQWU7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNIbkIsSUFBVyx5QkFBTztDQUFBO09BQUEsQ0FBQSxZQUFBO0NBQUEsQ0FBQSxJQUFBLEdBQUE7Q0FBQTtBQUNsQixJQUFBLGtCQUFBO0NBQUE7T0FBQTtFQUFBO0VBQUEsU0FBQTtFQUFBO0VBQUE7RUFBQSxPQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0FBLElBQU8sa0JBQVU7Q0FBQTtPQUFnQixDQUFBLEdBQUEsWUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNqQyxJQUFXLHdCQUFpQjtDQUFBO09BQUEsQ0FBQSxHQUFBLFlBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzVCLElBQUEsZ0JBQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsT0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDREEsSUFBQSx3QkFBVTtDQUFBO09BQXNCLEVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ2hDLElBQUksZUFBWTtDQUFBO09BQU07RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE9BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0h0QixJQUFBLGtCQUFxQjtDQUFBO09BQUE7RUFBQTtFQUF1QjtFQUFNO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNHbEQsSUFBTyxrQ0FBVTtDQUFBO09BQWdDO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNqRCxJQUFJLDJCQUFXO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0xmLElBQU8sYUFBVTtDQUFBO0VBQVksTUFBRyxDQUFHLEVBQUU7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNyQyxJQUFXLGtCQUFHO0NBQUE7T0FBQSxFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDZCxJQUFVLG9CQUFNO0NBQUE7T0FBQSxDQUFBLGlCQUFBLGdCQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2hCLElBQUksb0JBQWdCO0NBQUE7T0FBQSxFQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDcEIsSUFBSSxxQkFBYTtDQUFBO0VBQUEsU0FBQSxhQUFBLGFBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0hqQixJQUFPLDZCQUFVO0NBQUE7T0FBMkIsRUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDNUMsSUFBUyx1QkFBaUI7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxpQkFBZTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSG5CLElBQU8scUJBQVU7Q0FBQTtPQUFtQixDQUFBLEtBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3BDLElBQUksa0JBQVk7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0VoQixJQUFPLGtCQUFVO0NBQUE7T0FBZ0IsRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDakMsSUFBUSxZQUFNO0NBQUE7T0FBQSxDQUFBLEtBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2QsSUFBSSxnQkFBaUI7Q0FBQTtPQUFBLEVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ3JCLElBQUEsa0JBQUE7Q0FBQTtPQUFBLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBTyx5QkFBb0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMzQixJQUFVLHdCQUFNO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDaEIsSUFBSSxrQkFBaUI7Q0FBQTtPQUFJO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDVHpCLElBQUEsTUFBTztDQUFBO09BQWMsQ0FBQSxRQUFJLFVBQVE7Q0FBUTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNDekMsSUFBTyxVQUFVO0NBQUE7T0FBUSxFQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDekIsSUFBVSxXQUFZO0NBQUE7T0FBQSxFQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDdEIsSUFBQSxjQUFBO0NBQUE7T0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSEEsSUFBTyxXQUFVO0NBQUE7T0FBUyxFQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDMUIsSUFBSSxlQUFnQjtDQUFBO09BQUEsQ0FBQSxRQUFBLFNBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ3BCLElBQUEsYUFBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDQSxJQUFBLDJCQUEyQjtDQUFBO0VBQU8sTUFBUTtFQUFBO0VBQU87RUFBUztFQUFNO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNoRSxJQUFBLHlCQUE0QjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDNUIsSUFBVyx5QkFBeUI7Q0FBQztFQUFBLE1BQVE7RUFBQTtFQUFhO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxRCxJQUFBLFlBQUE7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDTkEsSUFBSSxjQUFjO0NBQUM7T0FBUyxFQUFJO0NBQUUsRUFBRTtDQUFBO0FBQ3BDLElBQUEsUUFBTztDQUFBO09BQWM7RUFBQTtFQUFNO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRTNCLElBQUEsZUFBVTtDQUFBO09BQW1CLEVBQUE7Q0FBQSxFQUFBO0NBQUE7QUFDN0IsSUFBSSxxQkFBWTtDQUFVO09BQUEsQ0FBQSxZQUFBLGFBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGNBQVM7Q0FBQTtPQUFZLEVBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUN6QixJQUFBLGVBQUE7Q0FBQTtPQUFBLENBQUEsZUFBQSxjQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBQSxxQkFBc0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN0QixJQUFJLGdCQUFlO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNSbkIsSUFBTyxpQkFBVTtDQUFBO09BQWUsQ0FBQSxRQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7QUFDaEMsSUFBUSx1QkFBb0I7Q0FBQTtPQUFBLENBQUEsZUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzVCLElBQUEsZ0JBQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RBLElBQU8sYUFBVTtDQUFBO09BQVcsRUFBQTtDQUFBLENBQUEsR0FBQTtDQUFBO0FBQzVCLElBQVMsMEJBQU07Q0FBQTtPQUFBLENBQUEsY0FBQTtDQUFBO0VBQUE7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QUFBO0NBQUE7QUFDcEMsSUFBSSxjQUFRO0NBQU87T0FBQTtFQUFBLFFBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxRQUFBO0VBQUEsUUFBQTtFQUFBO0VBQUEsUUFBQTtFQUFBLEtBQUE7RUFBQSxRQUFBO0VBQUEsUUFBQTtFQUFBLFFBQUE7RUFBQSxRQUFBO0VBQUE7RUFBQSxRQUFBO0VBQUEsUUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDTm5CLElBQU8sMkJBQVU7Q0FBQTtPQUF5QixDQUFBLFlBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQzFDLElBQUksb0JBQWlCO0NBQUE7T0FBQTtFQUFBO0VBQUEsVUFBQTtFQUFBLFVBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSHJCLElB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QUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ2pCdEMsSUFBTyxlQUFVO0NBQUE7T0FBYSxFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzlCLElBQVMsdUJBQU07Q0FBQTtPQUFBLENBQUEsYUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDZixJQUFJLHVCQUFZO0NBQUE7RUFBQSxTQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0poQixJQUFBLGtCQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQWdCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtF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O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNHcEIsSUFBSSxpQkFBcUI7Q0FBQTtPQUFPLEVBQUE7Q0FBQSxFQUFBO0NBQWM7QUFDOUMsSUFBVyx3QkFBa0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDN0IsSUFBQSw2QkFBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBQSx3QkFBYztDQUFBO09BQUE7RUFBMEI7RUFBRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNQMUMsSUFBVyxjQUFjO0NBQUM7T0FBVztFQUFBO0VBQVc7RUFBTztFQUFhO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3BFLElBQUEsWUFBVTtDQUFBO09BQVEsRUFBQTtDQUFBLENBQUEsR0FBQTtDQUFBO0FBQ2xCLElBQUksY0FBVztDQUFBO0VBQU8sR0FBQSxVQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQ3RCLElBQUEsdUJBQXFCO0NBQUE7T0FBQTtFQUFBO0VBQTZCO0VBQXNCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0h4RSxJQUFBLGlCQUFVO0NBQUE7T0FBZSxDQUFBLE9BQUEsV0FBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDekIsSUFBVSxzQkFBTTtDQUFBO09BQUEsQ0FBQSxjQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2hCLElBQUksZUFBYTtDQUFBO09BQVU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDNCLElBQUEsbUJBQXFCO0NBQUE7RUFBQSxTQUFpQixhQUFVO0VBQUE7RUFBTztFQUFhO0VBQVk7RUFBa0I7RUFBRztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUND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O0NBQUE7T0FBQSxDQUFBLFNBQW1CLFdBQWM7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUNsRCxJQUFJLG1CQUFrQjtDQUFBO0VBQVcsTUFBUTtFQUFDO0VBQVE7RUFBRztFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNyRCxJQUFBLHFCQUFBO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDVEEsSUFBTyx3QkFBVTtDQUFBO0VBQXdCLE1BQUE7RUFBQTtFQUFjO0VBQUE7RUFBVTtFQUFRO0VBQW1CO0VBQUM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUM3RixJQUFXLGlCQUFRO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRG5CLElBQU8sY0FBVTtDQUFBO0VBQWMsTUFBQTtFQUFBO0VBQWM7RUFBQTtFQUFVO0VBQVE7RUFBbUI7RUFBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25GLElBQVcsT0FBTztDQUFBO0VBQUEsR0FBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0FsQixJQUFPLGtCQUFVO0NBQUE7RUFBa0IsTUFBQTtFQUFBO0VBQWM7RUFBVTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMzRCxJQUFXLGlCQUFRO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25CLElBQVcsV0FBTTtDQUFBO0VBQUEsR0FBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNKakIsSUFBTyxlQUFVO0NBQUE7RUFBZSxNQUFBO0VBQUE7RUFBYztFQUFBO0VBQVU7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3hELElBQVcsUUFBTTtDQUFBO0VBQUEsR0FBWSxNQUFNO0VBQUE7RUFBVztFQUFFO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0NoRCxJQUFXLGdCQUFZO0NBQUE7RUFBVSxNQUFFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25DLElBQUksZ0JBQW1CO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3ZCLElBQUksY0FBcUI7Q0FBQztFQUFFLEdBQU8sTUFBTTtFQUFDO0VBQUs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDL0MsSUFBQSxTQUFBO0NBQUE7RUFBQSxHQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLFNBQUE7RUFBQTtFQUFBO0VBQUEsU0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLFNBQUE7RUFBQSxTQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0hBLElBQVcsZ0JBQVE7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbkIsSUFBVyxnQkFBWTtDQUFBO0VBQVcsR0FBQyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuQyxJQUFJLGNBQXFCO0NBQUM7RUFBRSxHQUFPLE1BQU07RUFBQztFQUFLO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQy9DLElBQVcsU0FBTTtDQUFBO0VBQUEsR0FBQSxNQUFrQjtFQUFBO0VBQVk7RUFBRztFQUFFO0VBQUE7RUFBa0I7RUFBVztFQUFFO0VBQUk7RUFBQTtFQUFBLFNBQUE7RUFBQTtFQUFBO0VBQUEsU0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLFNBQUE7RUFBQSxTQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0p2RixJQUFJLGVBQWE7Q0FBQztFQUFBLE1BQVE7RUFBQTtFQUFNO0VBQVUsU0FBRTtFQUFXO0VBQVU7Q0FBQTtFQUFBO0VBQVU7RUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDL0UsSUFBTyxpQkFBVTtDQUFBO0VBQWlCLE1BQUE7RUFBQTtFQUFjO0VBQUE7RUFBVTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxRCxJQUFXLFVBQU07Q0FBQTtFQUFXLEdBQUcsTUFBSTtFQUFBO0VBQWE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGaEQsSUFBTyx1QkFBVTtDQUFBO0VBQXVCLE1BQUE7RUFBQTtFQUFjO0VBQUE7RUFBUTtFQUFVO0VBQUE7RUFBaUI7RUFB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RTtFQUFBO0NBQUE7QUFDOUcsSUFBVyxjQUFjO0NBQUM7T0FBVztFQUFBO0VBQVc7RUFBTztFQUFpQjtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN4RSxJQUFBLGFBQWU7Q0FBQTtFQUFTLEdBQUEsT0FBVSxVQUFPO0VBQUE7RUFBYztFQUFBO0VBQWlCO0VBQU87RUFBYTtFQUFNO0VBQVM7RUFBVTtFQUFNO0VBQVE7RUFBWTtFQUFPO0VBQUE7RUFBTTtFQUFJO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ3RCaEssSUFBQSxXQUFVO0NBQUE7T0FBUyxDQUFBLFFBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbkIsSUFBSSxXQUFLO0NBQUE7RUFBYSxHQUFHLE9BQUUsTUFBUTtFQUFJO0VBQUM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFB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QTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRHRCLElBQUksbUJBQW1CO0NBQUM7RUFBSSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDNUIsSUFBSSxjQUFBO0NBQWU7RUFBRSxNQUFPO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0s1QixJQUFJLFdBQUk7Q0FBQTtPQUFtQixFQUFDO0NBQUEsQ0FBQSxJQUFPLEdBQUE7Q0FBQTtBQUNuQyxJQUFJLFlBQVk7Q0FBQztFQUFDLE1BQVE7RUFBQTtFQUFRO0VBQWlDO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsU0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25FLElBQUksT0FBTztDQUFDO09BQU87RUFBQTtFQUFRO0VBQVk7RUFBUTtFQUFPO0VBQVMsT0FBSztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSnBFLElBQUksZ0JBQUM7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxTQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFB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
|