simpo-component-library 3.2.46 → 3.2.47

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.
Files changed (54) hide show
  1. package/esm2022/lib/directive/button-editor.directive.mjs +48 -0
  2. package/esm2022/lib/directive/image-editor.directive.mjs +34 -24
  3. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +2 -2
  4. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +4 -3
  5. package/esm2022/lib/elements/editor-service.service.mjs +5 -1
  6. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
  7. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +7 -7
  8. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +8 -4
  9. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +7 -3
  10. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +2 -2
  11. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +2 -2
  12. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  13. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  14. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +5 -5
  15. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +2 -2
  16. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +1 -1
  17. package/esm2022/lib/sections/contact-us/contact-us.component.mjs +1 -1
  18. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  19. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  20. package/esm2022/lib/sections/footer/footer.component.mjs +2 -2
  21. package/esm2022/lib/sections/footer-section/footer-section.component.mjs +2 -2
  22. package/esm2022/lib/sections/header-text/header-text.component.mjs +2 -2
  23. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  24. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  25. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  26. package/esm2022/lib/sections/location-section/location-section.component.mjs +1 -1
  27. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  28. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +2 -2
  29. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  30. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +5 -4
  31. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  32. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +1 -1
  33. package/esm2022/lib/sections/service-section/service-section.component.mjs +2 -2
  34. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +1 -1
  35. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  36. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +4 -4
  37. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +1 -1
  38. package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +3 -3
  39. package/esm2022/lib/sections/text-section/text-section.component.mjs +2 -2
  40. package/esm2022/lib/sections/video-section/video-section.component.mjs +1 -1
  41. package/fesm2022/simpo-component-library.mjs +300 -235
  42. package/fesm2022/simpo-component-library.mjs.map +1 -1
  43. package/lib/directive/button-editor.directive.d.ts +16 -0
  44. package/lib/directive/image-editor.directive.d.ts +3 -5
  45. package/lib/elements/editor-service.service.d.ts +1 -0
  46. package/lib/elements/link-editor/link-editor.component.d.ts +3 -3
  47. package/lib/elements/simpo-button/simpo-button.component.d.ts +2 -1
  48. package/lib/elements/text-editor/text-editor.component.d.ts +3 -2
  49. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +3 -3
  50. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  51. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  52. package/package.json +1 -1
  53. package/simpo-component-library-3.2.47.tgz +0 -0
  54. package/simpo-component-library-3.2.46.tgz +0 -0
@@ -107,7 +107,7 @@ export class FooterComponent extends BaseSection {
107
107
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FooterComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
108
108
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FooterComponent, isStandalone: true, selector: "simpo-footer", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" simpoHover\r\n(hovering)=\"showEditTabs($event)\"[spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\" [id]=\"data?.id\">\r\n <div>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer1'\">\r\n <ng-container *ngTemplateOutlet=\"Footer1\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer2'\">\r\n <ng-container *ngTemplateOutlet=\"Footer2\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer3'\">\r\n <ng-container *ngTemplateOutlet=\"Footer3\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer4'\">\r\n <ng-container *ngTemplateOutlet=\"Footer4\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n</section>\r\n\r\n<ng-template #Footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\"\r\n [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #Footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <simpo-text-editor [value]=\"content?.additionalDetails?.value || ''\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [label]=\"content?.additionalDetails?.label || ''\"></simpo-text-editor>\r\n <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" *ngFor=\"let page of pages\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\" (click)=\"redirectToPage(page)\">\r\n {{page.pageName}}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\" (click)=\"redirectToPage(page)\">{{page?.pageName}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template> -->\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder;let folderIndex = index\" [class.w-50]=\"screenWidth < 475\">\r\n <simpo-text-editor [value]=\"folder.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links;let linkIndex = index\">\r\n <div class=\"folder-page\" [ngClass]=\"{'hoverWhenEditable' : edit}\">\r\n <div class=\"pages mb-2\" (click)=\"redirectTo(page)\">{{page.label}}</div>\r\n <mat-icon (click)=\"deleteFolderLinks(folderIndex, linkIndex)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"edit ? addLinks : null; context: {data: folderIndex}\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"(content?.folder?.length || 0) < 4\" [class.w-50]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"edit ? addFolder : null\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addLinks let-folderIndex=\"data\">\r\n <div class=\"addLinks\" (click)=\"createNewLink(folderIndex)\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addFolder>\r\n <div class=\"addLinks h-100\" (click)=\"createNewFolder()\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px;cursor:pointer}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}.folder-page{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.folder-page mat-icon{font-size:17px;display:flex;align-items:center;justify-content:center;display:none}.hoverWhenEditable:hover{border:1px solid #E9E9E9;border-radius:5px;cursor:pointer}.hoverWhenEditable:hover mat-icon{display:inline}.addLinks{padding-bottom:8px;padding-top:9px;border:1px dashed;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.addLinks mat-icon{border:1px solid rgb(219,223,225);display:flex;border-radius:100%;align-items:center;justify-content:center;font-size:16px;color:#dbdfe1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "component", type: SociaIconsComponent, selector: "simpo-socia-icons", inputs: ["socialIconData", "color", "sectionId", "iconColor"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type:
109
109
  //directives
110
- SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }] }); }
110
+ SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }] }); }
111
111
  }
112
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FooterComponent, decorators: [{
113
113
  type: Component,
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
139
139
  type: HostListener,
140
140
  args: ['window:resize', ['$event']]
141
141
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFHNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFh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QU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtvQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F0R1UsZUFBZTtrR0FBZixlQUFlLDRPQy9DNUIsNDhTQWlOQSwycENEckxJLFlBQVksMGxCQUNaLGNBQWMsaUZBQ2QsbUJBQW1CLDRIQUNuQixXQUFXLDhCQUVYLG9CQUFvQixtV0FDcEIsYUFBYSxtTEFDYixlQUFlO2dCQUVmLFlBQVk7Z0JBQ1osMEJBQTBCLDJHQUMxQixtQkFBbUIsMEdBQ25CLG1CQUFtQixtRkFDbkIsbUJBQW1CLG1IQUNuQixjQUFjOzsyRkFLTCxlQUFlO2tCQXZCM0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsZUFBZTt3QkFFZixZQUFZO3dCQUNaLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsY0FBYztxQkFDZjtvSUFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBMkJOLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgUExBVEZPUk1fSUQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvb3RlckNvbnRlbnRNb2RlbCwgRm9vdGVyU2VjdGlvbk1vZGVsLCBGb290ZXJTdHlsZXNNb2RlbCB9IGZyb20gJy4vZm9vdGVyLm1vZGFsJztcclxuaW1wb3J0IHsgQnV0dG9uLCBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTb2NpYUljb25zQ29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi9lbGVtZW50cy9zb2NpYS1pY29ucy9zb2NpYS1pY29ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTYW5pdGl6ZUh0bWxQaXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2FuaXRpemVIdG1sJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNwYWNpbmdBcm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1hcm91bmQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBMaW5rRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbGluay1lZGl0b3IvbGluay1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWZvb3RlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIFNvY2lhSWNvbnNDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNhbml0aXplSHRtbFBpcGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcblxyXG4gICAgLy9kaXJlY3RpdmVzXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEhvdmVyRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZvb3RlclNlY3Rpb25Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGVsZXRlPyA9IGZhbHNlO1xyXG5cclxuICBjb250ZW50PzogRm9vdGVyQ29udGVudE1vZGVsO1xyXG4gIHN0eWxlPzogRm9vdGVyU3R5bGVzTW9kZWw7XHJcbiAgbGlua0VkaXRvclN1YnNjcmlwdGlvbj8gOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGZvb3RlclR5cGU6IHN0cmluZyA9IFwiMVwiO1xyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSA0NzU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLmdldFBhZ2VzKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxpbmtFZGl0b3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBudW1iZXIpIHtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwYWdlTGluazogc3RyaW5nID0gXCJQYWdlc1wiXHJcbiAgcGFnZXM6IGFueSA9IFtdXHJcblxyXG4gIGRlbGV0ZUZvbGRlckxpbmtzKGZvbGRlckluZGV4OiBudW1iZXIsIGxpbmtJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3Muc3BsaWNlKGxpbmtJbmRleCwgMSk7XHJcbiAgICBpZiAoKHRoaXMuY29udGVudD8uZm9sZGVyPy5bZm9sZGVySW5kZXhdPy5saW5rcz8ubGVuZ3RoIHx8IDApIDw9IDApIHtcclxuICAgICAgdGhpcy5jb250ZW50Py5mb2xkZXIuc3BsaWNlKGZvbGRlckluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRMaW5rcygpIHtcclxuICAgIGNvbnNvbGUubG9nKCdMaW5rIEVkaXQgU3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvKGxpbms6IEJ1dHRvbikge1xyXG4gICAgaWYgKHRoaXMuZWRpdCkge1xyXG4gICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKExpbmtFZGl0b3JDb21wb25lbnQsIHsgcGFuZWxDbGFzczogJ2xpbmstZWRpdG9yJywgZGF0YTogeyBsaW5rRGF0YTogbGluayB9IH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGxpbmsgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlcygpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VGVtcGxhdGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZXMgPSByZXMuZGF0YVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9QYWdlKHBhZ2VEYXRhOiBhbnkpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBsYWJlbCA6IHBhZ2VEYXRhLnBhZ2VOYW1lLFxyXG4gICAgICByZWRpcmVjdGlvblVybDpwYWdlRGF0YS5wYXRoLFxyXG4gICAgICBwYWdlSWQ6IHBhZ2VEYXRhLmlkLFxyXG4gICAgICBzdGF0dXM6IHRydWUsXHJcbiAgICB9XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UucGFnZVJlZGlyZWN0aW9uQnV0dG9uLmVtaXQoeyBkYXRhOiBkYXRhIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdMaW5rKGZvbGRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTGlua0VkaXRvckNvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnbGluay1lZGl0b3InIH0pO1xyXG4gICAgdGhpcy5saW5rRWRpdG9yU3Vic2NyaXB0aW9uID0gZWRpdG9yQ29tcG9uZW50LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmxpbmspIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3MucHVzaChyZXMubGluayk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdGb2xkZXIoKSB7XHJcbiAgICBjb25zdCBlZGl0b3JDb21wb25lbnQgPSB0aGlzLm1hdERpYWxvZy5vcGVuKExpbmtFZGl0b3JDb21wb25lbnQsIHsgcGFuZWxDbGFzczogJ2xpbmstZWRpdG9yJyB9KTtcclxuICAgIGVkaXRvckNvbXBvbmVudC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzLmxpbmspIHtcclxuICAgICAgICBsZXQgZm9sZGVyID0ge1xyXG4gICAgICAgICAgbGFiZWw6IFwiQWRkIGZvbGRlciBuYW1lXCIsXHJcbiAgICAgICAgICBsaW5rczogW3Jlcy5saW5rXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmNvbnRlbnQgJiYgIXRoaXMuY29udGVudD8uZm9sZGVyKVxyXG4gICAgICAgICAgdGhpcy5jb250ZW50LmZvbGRlciA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlci5wdXNoKGZvbGRlcik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgc2ltcG9Ib3ZlclxyXG4oaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIltzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlPy5sYXlvdXRcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICA8ZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXIxJ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyMVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmZvb3RlclR5cGUgPT0gJ0Zvb3RlcjInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGb290ZXIyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uZm9vdGVyVHlwZSA9PSAnRm9vdGVyMydcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkZvb3RlcjNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXI0J1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyNFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcblxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjE+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9sZGVyc1ZlcnRpY2FsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXkgJiYgc2NyZWVuV2lkdGggPCA0NzVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGhyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZXNIb3Jpem9udGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXkgJiYgc2NyZWVuV2lkdGggPCA0NzVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGhyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjM+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIFtjbGFzcy5hbGlnbi1pdGVtcy1zdGFydF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvbGRlcnNWZXJ0aWNhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxocj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIiBbY2xhc3Mudy0zMF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0XCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiXHJcbiAgICAgIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmFuZGluZ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNGb290ZXI0PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZXNIb3Jpem9udGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGhyPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0XCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29jaWFsSWNvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5QnJhbmRpbmdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvZ29TZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWNlbnRlcl09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1sZy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgbWItNFwiXHJcbiAgICAgICpuZ0lmPVwiIWNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2UgfHwgIWNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvbiAmJiBjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBhbHQ9XCJsb2dvXCIgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemVcIiBsb2FkaW5nPVwibGF6eVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGxcIiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzVGV4dFwiIFtzaW1wb0NvbG9yXT1cInN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgIDxiIFtuZ1N0eWxlXT1cInsnZm9udC1mYW1pbHknOiBjb250ZW50Py5sb2dvPy50ZXh0Py5mb250RmFtaWx5fVwiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWxnLWNlbnRlciBjdXJzb3ItcG9pbnRlciBtYi00XCJcclxuICAgICAgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIGFsdD1cImxvZ29cIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cInNjcmVlbldpZHRoID4gNDc1IHx8IChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSA8IDUwID8gY29udGVudD8ubG9nbz8uc2l6ZSA6ICgoY29udGVudD8ubG9nbz8uc2l6ZSB8fCAxMCkgLSAxMClcIlxyXG4gICAgICAgIGxvYWRpbmc9XCJsYXp5XCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVzY1NlY3Rpb24+XHJcbiAgPHNpbXBvLXRleHQtZWRpdG9yIFt2YWx1ZV09XCJjb250ZW50Py5hZGRpdGlvbmFsRGV0YWlscz8udmFsdWUgfHwgJydcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbbGFiZWxdPVwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHM/LmxhYmVsIHx8ICcnXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHM/LnZhbHVlID8/ICcnIHwgc2FuaXRpemVIdG1sXCI+PC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzb2NpYWxJY29ucz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGFsaWduLWl0ZW1zLWxnLWNlbnRlciBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtbGctMCBnYXAtM1wiXHJcbiAgICBbbmdDbGFzc109XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSA/ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbicgOiAnanVzdGlmeS1jb250ZW50LWVuZCdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMFwiICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5zb2NpYWxMaW5rcz8uY2hhbm5lbHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cclxuICAgICAgICAgIDxzaW1wby1zb2NpYS1pY29ucyBbaWNvbkNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbc29jaWFsSWNvbkRhdGFdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCI+PC9zaW1wby1zb2NpYS1pY29ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnJhbmRpbmc+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGwgdGV4dC1jZW50ZXIgIGJyYW5kaW5nLXRleHRcIj5NYWRlIHdpdGggPGEgY2xhc3M9XCJicmFuZGluZy10ZXh0IGZ3LTYwMFwiXHJcbiAgICAgIGhyZWY9XCJodHRwczovL3NpbXBvLmFpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+U2ltcG88L2E+PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3BhZ2VzSG9yaXpvbnRhbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItMyBwYWdlVHlwZVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW2NsYXNzLnctNTBdPVwic2NyZWVuV2lkdGggPCA0NzVcIiBbY2xhc3MudGV4dC1jZW50ZXJdPVwic2NyZWVuV2lkdGggPCA0NzVcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BhZ2UocGFnZSlcIj5cclxuICAgIHt7cGFnZS5wYWdlTmFtZX19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIDxuZy10ZW1wbGF0ZSAjcGFnZXNWZXJ0aWNhbD5cclxuICA8ZGl2IGNsYXNzPVwicGFnZS1jb250YWluZXIgY29sLW1kLTMgbWItM1wiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVR5cGUgbWItM1wiPnt7cGFnZUxpbmt9fTwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFnZXMgbWItMlwiIChjbGljayk9XCJyZWRpcmVjdFRvUGFnZShwYWdlKVwiPnt7cGFnZT8ucGFnZU5hbWV9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb2xkZXJzVmVydGljYWw+XHJcbiAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyIGNvbC1tZC0zIG1iLTNcIiAqbmdGb3I9XCJsZXQgZm9sZGVyIG9mIGNvbnRlbnQ/LmZvbGRlcjtsZXQgZm9sZGVySW5kZXggPSBpbmRleFwiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8c2ltcG8tdGV4dC1lZGl0b3IgW3ZhbHVlXT1cImZvbGRlci5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMTVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBmb2xkZXIubGlua3M7bGV0IGxpbmtJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvbGRlci1wYWdlXCIgW25nQ2xhc3NdPVwieydob3ZlcldoZW5FZGl0YWJsZScgOiBlZGl0fVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2VzIG1iLTJcIiAoY2xpY2spPVwicmVkaXJlY3RUbyhwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImRlbGV0ZUZvbGRlckxpbmtzKGZvbGRlckluZGV4LCBsaW5rSW5kZXgpXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0ID8gYWRkTGlua3MgOiBudWxsOyBjb250ZXh0OiB7ZGF0YTogZm9sZGVySW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cIihjb250ZW50Py5mb2xkZXI/Lmxlbmd0aCB8fCAwKSA8IDRcIiBbY2xhc3Mudy01MF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXQgPyBhZGRGb2xkZXIgOiBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FkZExpbmtzIGxldC1mb2xkZXJJbmRleD1cImRhdGFcIj5cclxuICA8ZGl2IGNsYXNzPVwiYWRkTGlua3NcIiAoY2xpY2spPVwiY3JlYXRlTmV3TGluayhmb2xkZXJJbmRleClcIj5cclxuICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhZGRGb2xkZXI+XHJcbiAgPGRpdiBjbGFzcz1cImFkZExpbmtzIGgtMTAwXCIgKGNsaWNrKT1cImNyZWF0ZU5ld0ZvbGRlcigpXCI+XHJcbiAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFHNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFh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QU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtvQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F0R1UsZUFBZTtrR0FBZixlQUFlLDRPQy9DNUIsNDhTQWlOQSwycENEckxJLFlBQVksMGxCQUNaLGNBQWMsaUZBQ2QsbUJBQW1CLDRIQUNuQixXQUFXLDhCQUVYLG9CQUFvQixtV0FDcEIsYUFBYSxtTEFDYixlQUFlO2dCQUVmLFlBQVk7Z0JBQ1osMEJBQTBCLDJHQUMxQixtQkFBbUIsMEdBQ25CLG1CQUFtQixtRkFDbkIsbUJBQW1CLDZJQUNuQixjQUFjOzsyRkFLTCxlQUFlO2tCQXZCM0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsZUFBZTt3QkFFZixZQUFZO3dCQUNaLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsY0FBYztxQkFDZjtvSUFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBMkJOLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgUExBVEZPUk1fSUQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvb3RlckNvbnRlbnRNb2RlbCwgRm9vdGVyU2VjdGlvbk1vZGVsLCBGb290ZXJTdHlsZXNNb2RlbCB9IGZyb20gJy4vZm9vdGVyLm1vZGFsJztcclxuaW1wb3J0IHsgQnV0dG9uLCBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTb2NpYUljb25zQ29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi9lbGVtZW50cy9zb2NpYS1pY29ucy9zb2NpYS1pY29ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTYW5pdGl6ZUh0bWxQaXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2FuaXRpemVIdG1sJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNwYWNpbmdBcm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1hcm91bmQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBMaW5rRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbGluay1lZGl0b3IvbGluay1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWZvb3RlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIFNvY2lhSWNvbnNDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNhbml0aXplSHRtbFBpcGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcblxyXG4gICAgLy9kaXJlY3RpdmVzXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEhvdmVyRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZvb3RlclNlY3Rpb25Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGVsZXRlPyA9IGZhbHNlO1xyXG5cclxuICBjb250ZW50PzogRm9vdGVyQ29udGVudE1vZGVsO1xyXG4gIHN0eWxlPzogRm9vdGVyU3R5bGVzTW9kZWw7XHJcbiAgbGlua0VkaXRvclN1YnNjcmlwdGlvbj8gOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGZvb3RlclR5cGU6IHN0cmluZyA9IFwiMVwiO1xyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSA0NzU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLmdldFBhZ2VzKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxpbmtFZGl0b3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBudW1iZXIpIHtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwYWdlTGluazogc3RyaW5nID0gXCJQYWdlc1wiXHJcbiAgcGFnZXM6IGFueSA9IFtdXHJcblxyXG4gIGRlbGV0ZUZvbGRlckxpbmtzKGZvbGRlckluZGV4OiBudW1iZXIsIGxpbmtJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3Muc3BsaWNlKGxpbmtJbmRleCwgMSk7XHJcbiAgICBpZiAoKHRoaXMuY29udGVudD8uZm9sZGVyPy5bZm9sZGVySW5kZXhdPy5saW5rcz8ubGVuZ3RoIHx8IDApIDw9IDApIHtcclxuICAgICAgdGhpcy5jb250ZW50Py5mb2xkZXIuc3BsaWNlKGZvbGRlckluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRMaW5rcygpIHtcclxuICAgIGNvbnNvbGUubG9nKCdMaW5rIEVkaXQgU3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvKGxpbms6IEJ1dHRvbikge1xyXG4gICAgaWYgKHRoaXMuZWRpdCkge1xyXG4gICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKExpbmtFZGl0b3JDb21wb25lbnQsIHsgcGFuZWxDbGFzczogJ2xpbmstZWRpdG9yJywgZGF0YTogeyBsaW5rRGF0YTogbGluayB9IH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGxpbmsgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlcygpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VGVtcGxhdGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZXMgPSByZXMuZGF0YVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9QYWdlKHBhZ2VEYXRhOiBhbnkpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBsYWJlbCA6IHBhZ2VEYXRhLnBhZ2VOYW1lLFxyXG4gICAgICByZWRpcmVjdGlvblVybDpwYWdlRGF0YS5wYXRoLFxyXG4gICAgICBwYWdlSWQ6IHBhZ2VEYXRhLmlkLFxyXG4gICAgICBzdGF0dXM6IHRydWUsXHJcbiAgICB9XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UucGFnZVJlZGlyZWN0aW9uQnV0dG9uLmVtaXQoeyBkYXRhOiBkYXRhIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdMaW5rKGZvbGRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTGlua0VkaXRvckNvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnbGluay1lZGl0b3InIH0pO1xyXG4gICAgdGhpcy5saW5rRWRpdG9yU3Vic2NyaXB0aW9uID0gZWRpdG9yQ29tcG9uZW50LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmxpbmspIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3MucHVzaChyZXMubGluayk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdGb2xkZXIoKSB7XHJcbiAgICBjb25zdCBlZGl0b3JDb21wb25lbnQgPSB0aGlzLm1hdERpYWxvZy5vcGVuKExpbmtFZGl0b3JDb21wb25lbnQsIHsgcGFuZWxDbGFzczogJ2xpbmstZWRpdG9yJyB9KTtcclxuICAgIGVkaXRvckNvbXBvbmVudC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzLmxpbmspIHtcclxuICAgICAgICBsZXQgZm9sZGVyID0ge1xyXG4gICAgICAgICAgbGFiZWw6IFwiQWRkIGZvbGRlciBuYW1lXCIsXHJcbiAgICAgICAgICBsaW5rczogW3Jlcy5saW5rXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmNvbnRlbnQgJiYgIXRoaXMuY29udGVudD8uZm9sZGVyKVxyXG4gICAgICAgICAgdGhpcy5jb250ZW50LmZvbGRlciA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlci5wdXNoKGZvbGRlcik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgc2ltcG9Ib3ZlclxyXG4oaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIltzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlPy5sYXlvdXRcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICA8ZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXIxJ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyMVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmZvb3RlclR5cGUgPT0gJ0Zvb3RlcjInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGb290ZXIyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uZm9vdGVyVHlwZSA9PSAnRm9vdGVyMydcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkZvb3RlcjNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXI0J1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyNFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcblxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjE+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9sZGVyc1ZlcnRpY2FsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXkgJiYgc2NyZWVuV2lkdGggPCA0NzVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGhyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZXNIb3Jpem9udGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXkgJiYgc2NyZWVuV2lkdGggPCA0NzVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGhyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjM+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIFtjbGFzcy5hbGlnbi1pdGVtcy1zdGFydF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvbGRlcnNWZXJ0aWNhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxocj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIiBbY2xhc3Mudy0zMF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0XCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiXHJcbiAgICAgIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmFuZGluZ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNGb290ZXI0PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZXNIb3Jpem9udGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGhyPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0XCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29jaWFsSWNvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5QnJhbmRpbmdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvZ29TZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWNlbnRlcl09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1sZy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgbWItNFwiXHJcbiAgICAgICpuZ0lmPVwiIWNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2UgfHwgIWNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvbiAmJiBjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBhbHQ9XCJsb2dvXCIgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemVcIiBsb2FkaW5nPVwibGF6eVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGxcIiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzVGV4dFwiIFtzaW1wb0NvbG9yXT1cInN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgIDxiIFtuZ1N0eWxlXT1cInsnZm9udC1mYW1pbHknOiBjb250ZW50Py5sb2dvPy50ZXh0Py5mb250RmFtaWx5fVwiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWxnLWNlbnRlciBjdXJzb3ItcG9pbnRlciBtYi00XCJcclxuICAgICAgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIGFsdD1cImxvZ29cIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cInNjcmVlbldpZHRoID4gNDc1IHx8IChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSA8IDUwID8gY29udGVudD8ubG9nbz8uc2l6ZSA6ICgoY29udGVudD8ubG9nbz8uc2l6ZSB8fCAxMCkgLSAxMClcIlxyXG4gICAgICAgIGxvYWRpbmc9XCJsYXp5XCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVzY1NlY3Rpb24+XHJcbiAgPHNpbXBvLXRleHQtZWRpdG9yIFt2YWx1ZV09XCJjb250ZW50Py5hZGRpdGlvbmFsRGV0YWlscz8udmFsdWUgfHwgJydcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbbGFiZWxdPVwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHM/LmxhYmVsIHx8ICcnXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHM/LnZhbHVlID8/ICcnIHwgc2FuaXRpemVIdG1sXCI+PC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzb2NpYWxJY29ucz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGFsaWduLWl0ZW1zLWxnLWNlbnRlciBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtbGctMCBnYXAtM1wiXHJcbiAgICBbbmdDbGFzc109XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSA/ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbicgOiAnanVzdGlmeS1jb250ZW50LWVuZCdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMFwiICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5zb2NpYWxMaW5rcz8uY2hhbm5lbHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cclxuICAgICAgICAgIDxzaW1wby1zb2NpYS1pY29ucyBbaWNvbkNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbc29jaWFsSWNvbkRhdGFdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCI+PC9zaW1wby1zb2NpYS1pY29ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnJhbmRpbmc+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGwgdGV4dC1jZW50ZXIgIGJyYW5kaW5nLXRleHRcIj5NYWRlIHdpdGggPGEgY2xhc3M9XCJicmFuZGluZy10ZXh0IGZ3LTYwMFwiXHJcbiAgICAgIGhyZWY9XCJodHRwczovL3NpbXBvLmFpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+U2ltcG88L2E+PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3BhZ2VzSG9yaXpvbnRhbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItMyBwYWdlVHlwZVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW2NsYXNzLnctNTBdPVwic2NyZWVuV2lkdGggPCA0NzVcIiBbY2xhc3MudGV4dC1jZW50ZXJdPVwic2NyZWVuV2lkdGggPCA0NzVcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BhZ2UocGFnZSlcIj5cclxuICAgIHt7cGFnZS5wYWdlTmFtZX19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIDxuZy10ZW1wbGF0ZSAjcGFnZXNWZXJ0aWNhbD5cclxuICA8ZGl2IGNsYXNzPVwicGFnZS1jb250YWluZXIgY29sLW1kLTMgbWItM1wiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVR5cGUgbWItM1wiPnt7cGFnZUxpbmt9fTwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFnZXMgbWItMlwiIChjbGljayk9XCJyZWRpcmVjdFRvUGFnZShwYWdlKVwiPnt7cGFnZT8ucGFnZU5hbWV9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb2xkZXJzVmVydGljYWw+XHJcbiAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyIGNvbC1tZC0zIG1iLTNcIiAqbmdGb3I9XCJsZXQgZm9sZGVyIG9mIGNvbnRlbnQ/LmZvbGRlcjtsZXQgZm9sZGVySW5kZXggPSBpbmRleFwiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8c2ltcG8tdGV4dC1lZGl0b3IgW3ZhbHVlXT1cImZvbGRlci5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMTVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBmb2xkZXIubGlua3M7bGV0IGxpbmtJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvbGRlci1wYWdlXCIgW25nQ2xhc3NdPVwieydob3ZlcldoZW5FZGl0YWJsZScgOiBlZGl0fVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2VzIG1iLTJcIiAoY2xpY2spPVwicmVkaXJlY3RUbyhwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImRlbGV0ZUZvbGRlckxpbmtzKGZvbGRlckluZGV4LCBsaW5rSW5kZXgpXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0ID8gYWRkTGlua3MgOiBudWxsOyBjb250ZXh0OiB7ZGF0YTogZm9sZGVySW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cIihjb250ZW50Py5mb2xkZXI/Lmxlbmd0aCB8fCAwKSA8IDRcIiBbY2xhc3Mudy01MF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXQgPyBhZGRGb2xkZXIgOiBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FkZExpbmtzIGxldC1mb2xkZXJJbmRleD1cImRhdGFcIj5cclxuICA8ZGl2IGNsYXNzPVwiYWRkTGlua3NcIiAoY2xpY2spPVwiY3JlYXRlTmV3TGluayhmb2xkZXJJbmRleClcIj5cclxuICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhZGRGb2xkZXI+XHJcbiAgPGRpdiBjbGFzcz1cImFkZExpbmtzIGgtMTAwXCIgKGNsaWNrKT1cImNyZWF0ZU5ld0ZvbGRlcigpXCI+XHJcbiAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19