@skyux/forms 10.41.2 → 10.41.4

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.
@@ -253,7 +253,7 @@ export class SkyFileDropComponent {
253
253
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.4", type: SkyFileDropComponent, selector: "sky-file-drop", inputs: { fileUploadAriaLabel: "fileUploadAriaLabel", linkUploadAriaLabel: "linkUploadAriaLabel", minFileSize: "minFileSize", maxFileSize: "maxFileSize", multiple: "multiple", validateFn: "validateFn", acceptedTypes: "acceptedTypes", acceptedTypesErrorMessage: "acceptedTypesErrorMessage", noClick: "noClick", allowLinks: "allowLinks", labelText: "labelText", labelHidden: ["labelHidden", "labelHidden", booleanAttribute], hintText: "hintText", required: ["required", "required", booleanAttribute], helpPopoverContent: "helpPopoverContent", helpPopoverTitle: "helpPopoverTitle", stacked: ["stacked", "stacked", booleanAttribute], helpKey: "helpKey" }, outputs: { filesChanged: "filesChanged", linkInputBlur: "linkInputBlur", linkChanged: "linkChanged" }, host: { properties: { "class.sky-margin-stacked-lg": "this.stacked" } }, providers: [
254
254
  SkyFileAttachmentService,
255
255
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
256
- ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["fileInput"], descendants: true }], hostDirectives: [{ directive: i1.SkyFormFieldLabelTextRequiredDirective, inputs: ["labelText", "labelText"] }], ngImport: i0, template: "<fieldset>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label sky-font-body-default sky-margin-stacked-xs\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-margin-inline-xs\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</span\n ><span class=\"sky-screen-reader-only\" *ngIf=\"required\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span\n ><sky-help-inline\n *ngIf=\"helpPopoverContent || helpKey\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </legend>\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n ></button>\n\n <input\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n #fileInput\n />\n\n <div\n class=\"sky-file-drop-contents sky-padding-even-default\"\n *ngIf=\"customEl.children.length === 0\"\n >\n <div class=\"sky-file-drop-contents-not-over\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"cloud-upload\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"bullseye\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_invalid_file' | skyLibResources\n }}\n </div>\n <sky-icon icon=\"times-circle\" class=\"sky-file-upload-icon\" />\n </div>\n </div>\n\n <div class=\"sky-file-drop-contents-custom\" #customEl>\n <ng-content />\n </div>\n </div>\n <div class=\"sky-file-drop-col\" *ngIf=\"allowLinks\">\n <div class=\"sky-file-drop-contents sky-padding-even-default\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_link_label' | skyLibResources\n }}\n </div>\n </div>\n <div class=\"sky-margin-stacked-xs\">\n <input\n type=\"text\"\n class=\"sky-form-control\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-describedby]=\"uploadHintText.id\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </div>\n <div\n skyId\n #uploadHintText=\"skyId\"\n class=\"sky-font-deemphasized sky-file-drop-hint-text sky-margin-stacked-sm\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_placeholder'\n | skyLibResources\n }}\n </div>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div skyId #hintTextEl=\"skyId\">\n <div *ngIf=\"hintText\" class=\"sky-font-deemphasized sky-file-drop-hint-text\">\n {{ hintText }}\n </div>\n </div>\n</fieldset>\n<sky-form-errors\n *ngIf=\"labelText && rejectedFiles.length\"\n class=\"sky-file-drop-errors\"\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [showErrors]=\"rejectedFiles.length\"\n>\n <div *ngFor=\"let rejectedFile of rejectedFiles\">\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'fileType'\"\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources: rejectedFile.file.name : rejectedFile.errorParam\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'maxFileSize'\"\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'minFileSize'\"\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'validate' && rejectedFile.errorParam\"\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n </div>\n</sky-form-errors>\n", styles: [":host.sky-margin-stacked-lg{display:block}.sky-file-drop-col{padding-left:5px;padding-right:5px;position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;background-color:#eeeeef;color:#212327;cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:5px}.sky-file-drop-no-click .sky-file-drop-contents{cursor:default}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-margin-stacked-xs)}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:dashed;border-width:1px}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:#72bf44;color:#212327}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:#ef4044;color:#212327}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;font-size:40px;max-height:40px;margin-top:10px}.sky-file-drop-link{cursor:default}.sky-file-drop-text-header{margin:0}.sky-file-drop-text{font-size:15px;margin-top:5px;margin-bottom:20px}.sky-file-drop-text,.sky-file-drop-text-header{line-height:1.1;display:block}.sky-file-upload-icon{color:#686c73}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-file-drop-errors{margin-bottom:10px}:host-context(.sky-theme-modern) .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}.sky-theme-modern .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SkyFormErrorComponent, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "component", type: i5.SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i8.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: i10.SkyFileSizePipe, name: "skyFileSize" }] }); }
256
+ ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["fileInput"], descendants: true }], hostDirectives: [{ directive: i1.SkyFormFieldLabelTextRequiredDirective, inputs: ["labelText", "labelText"] }], ngImport: i0, template: "<fieldset>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label sky-font-body-default sky-margin-stacked-xs\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-margin-inline-xs\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</span\n ><span class=\"sky-screen-reader-only\" *ngIf=\"required\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span\n ><sky-help-inline\n *ngIf=\"helpPopoverContent || helpKey\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </legend>\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n ></button>\n\n <input\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n #fileInput\n />\n\n <div\n class=\"sky-file-drop-contents sky-padding-even-default\"\n *ngIf=\"customEl.children.length === 0\"\n >\n <div class=\"sky-file-drop-contents-not-over\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"cloud-upload\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"bullseye\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_invalid_file' | skyLibResources\n }}\n </div>\n <sky-icon icon=\"times-circle\" class=\"sky-file-upload-icon\" />\n </div>\n </div>\n\n <div class=\"sky-file-drop-contents-custom\" #customEl>\n <ng-content />\n </div>\n </div>\n <div class=\"sky-file-drop-col\" *ngIf=\"allowLinks\">\n <div class=\"sky-file-drop-contents sky-padding-even-default\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_link_label' | skyLibResources\n }}\n </div>\n </div>\n <div class=\"sky-margin-stacked-xs\">\n <input\n type=\"text\"\n class=\"sky-form-control\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-describedby]=\"uploadHintText.id\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </div>\n <div\n skyId\n #uploadHintText=\"skyId\"\n class=\"sky-font-deemphasized sky-file-drop-hint-text sky-margin-stacked-sm\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_placeholder'\n | skyLibResources\n }}\n </div>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div skyId #hintTextEl=\"skyId\">\n <div *ngIf=\"hintText\" class=\"sky-font-deemphasized sky-file-drop-hint-text\">\n {{ hintText }}\n </div>\n </div>\n</fieldset>\n<sky-form-errors\n [class.sky-file-drop-errors]=\"labelText && rejectedFiles.length\"\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [showErrors]=\"rejectedFiles.length\"\n>\n <div *ngFor=\"let rejectedFile of rejectedFiles\">\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'fileType'\"\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources: rejectedFile.file.name : rejectedFile.errorParam\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'maxFileSize'\"\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'minFileSize'\"\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'validate' && rejectedFile.errorParam\"\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n </div>\n</sky-form-errors>\n", styles: [":host.sky-margin-stacked-lg{display:block}.sky-file-drop-col{padding-left:5px;padding-right:5px;position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;background-color:#eeeeef;color:#212327;cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:5px}.sky-file-drop-no-click .sky-file-drop-contents{cursor:default}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-margin-stacked-xs)}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:dashed;border-width:1px}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:#72bf44;color:#212327}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:#ef4044;color:#212327}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;font-size:40px;max-height:40px;margin-top:10px}.sky-file-drop-link{cursor:default}.sky-file-drop-text-header{margin:0}.sky-file-drop-text{font-size:15px;margin-top:5px;margin-bottom:20px}.sky-file-drop-text,.sky-file-drop-text-header{line-height:1.1;display:block}.sky-file-upload-icon{color:#686c73}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-file-drop-errors{margin-bottom:10px}:host-context(.sky-theme-modern) .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}.sky-theme-modern .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SkyFormErrorComponent, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "component", type: i5.SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i8.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: i10.SkyFileSizePipe, name: "skyFileSize" }] }); }
257
257
  }
258
258
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyFileDropComponent, decorators: [{
259
259
  type: Component,
@@ -265,7 +265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
265
265
  ], providers: [
266
266
  SkyFileAttachmentService,
267
267
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
268
- ], template: "<fieldset>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label sky-font-body-default sky-margin-stacked-xs\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-margin-inline-xs\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</span\n ><span class=\"sky-screen-reader-only\" *ngIf=\"required\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span\n ><sky-help-inline\n *ngIf=\"helpPopoverContent || helpKey\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </legend>\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n ></button>\n\n <input\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n #fileInput\n />\n\n <div\n class=\"sky-file-drop-contents sky-padding-even-default\"\n *ngIf=\"customEl.children.length === 0\"\n >\n <div class=\"sky-file-drop-contents-not-over\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"cloud-upload\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"bullseye\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_invalid_file' | skyLibResources\n }}\n </div>\n <sky-icon icon=\"times-circle\" class=\"sky-file-upload-icon\" />\n </div>\n </div>\n\n <div class=\"sky-file-drop-contents-custom\" #customEl>\n <ng-content />\n </div>\n </div>\n <div class=\"sky-file-drop-col\" *ngIf=\"allowLinks\">\n <div class=\"sky-file-drop-contents sky-padding-even-default\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_link_label' | skyLibResources\n }}\n </div>\n </div>\n <div class=\"sky-margin-stacked-xs\">\n <input\n type=\"text\"\n class=\"sky-form-control\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-describedby]=\"uploadHintText.id\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </div>\n <div\n skyId\n #uploadHintText=\"skyId\"\n class=\"sky-font-deemphasized sky-file-drop-hint-text sky-margin-stacked-sm\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_placeholder'\n | skyLibResources\n }}\n </div>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div skyId #hintTextEl=\"skyId\">\n <div *ngIf=\"hintText\" class=\"sky-font-deemphasized sky-file-drop-hint-text\">\n {{ hintText }}\n </div>\n </div>\n</fieldset>\n<sky-form-errors\n *ngIf=\"labelText && rejectedFiles.length\"\n class=\"sky-file-drop-errors\"\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [showErrors]=\"rejectedFiles.length\"\n>\n <div *ngFor=\"let rejectedFile of rejectedFiles\">\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'fileType'\"\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources: rejectedFile.file.name : rejectedFile.errorParam\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'maxFileSize'\"\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'minFileSize'\"\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'validate' && rejectedFile.errorParam\"\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n </div>\n</sky-form-errors>\n", styles: [":host.sky-margin-stacked-lg{display:block}.sky-file-drop-col{padding-left:5px;padding-right:5px;position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;background-color:#eeeeef;color:#212327;cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:5px}.sky-file-drop-no-click .sky-file-drop-contents{cursor:default}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-margin-stacked-xs)}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:dashed;border-width:1px}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:#72bf44;color:#212327}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:#ef4044;color:#212327}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;font-size:40px;max-height:40px;margin-top:10px}.sky-file-drop-link{cursor:default}.sky-file-drop-text-header{margin:0}.sky-file-drop-text{font-size:15px;margin-top:5px;margin-bottom:20px}.sky-file-drop-text,.sky-file-drop-text-header{line-height:1.1;display:block}.sky-file-upload-icon{color:#686c73}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-file-drop-errors{margin-bottom:10px}:host-context(.sky-theme-modern) .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}.sky-theme-modern .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}\n"] }]
268
+ ], template: "<fieldset>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label sky-font-body-default sky-margin-stacked-xs\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-margin-inline-xs\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</span\n ><span class=\"sky-screen-reader-only\" *ngIf=\"required\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span\n ><sky-help-inline\n *ngIf=\"helpPopoverContent || helpKey\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </legend>\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n ></button>\n\n <input\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n #fileInput\n />\n\n <div\n class=\"sky-file-drop-contents sky-padding-even-default\"\n *ngIf=\"customEl.children.length === 0\"\n >\n <div class=\"sky-file-drop-contents-not-over\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"cloud-upload\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"bullseye\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_invalid_file' | skyLibResources\n }}\n </div>\n <sky-icon icon=\"times-circle\" class=\"sky-file-upload-icon\" />\n </div>\n </div>\n\n <div class=\"sky-file-drop-contents-custom\" #customEl>\n <ng-content />\n </div>\n </div>\n <div class=\"sky-file-drop-col\" *ngIf=\"allowLinks\">\n <div class=\"sky-file-drop-contents sky-padding-even-default\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div class=\"sky-file-drop-text-header sky-font-display-3\">\n {{\n 'skyux_file_attachment_file_upload_link_label' | skyLibResources\n }}\n </div>\n </div>\n <div class=\"sky-margin-stacked-xs\">\n <input\n type=\"text\"\n class=\"sky-form-control\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-describedby]=\"uploadHintText.id\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </div>\n <div\n skyId\n #uploadHintText=\"skyId\"\n class=\"sky-font-deemphasized sky-file-drop-hint-text sky-margin-stacked-sm\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_placeholder'\n | skyLibResources\n }}\n </div>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div skyId #hintTextEl=\"skyId\">\n <div *ngIf=\"hintText\" class=\"sky-font-deemphasized sky-file-drop-hint-text\">\n {{ hintText }}\n </div>\n </div>\n</fieldset>\n<sky-form-errors\n [class.sky-file-drop-errors]=\"labelText && rejectedFiles.length\"\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [showErrors]=\"rejectedFiles.length\"\n>\n <div *ngFor=\"let rejectedFile of rejectedFiles\">\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'fileType'\"\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources: rejectedFile.file.name : rejectedFile.errorParam\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'maxFileSize'\"\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'minFileSize'\"\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n <sky-form-error\n *ngIf=\"rejectedFile.errorType === 'validate' && rejectedFile.errorParam\"\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n </div>\n</sky-form-errors>\n", styles: [":host.sky-margin-stacked-lg{display:block}.sky-file-drop-col{padding-left:5px;padding-right:5px;position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:10px}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;background-color:#eeeeef;color:#212327;cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:5px}.sky-file-drop-no-click .sky-file-drop-contents{cursor:default}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-margin-stacked-xs)}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:dashed;border-width:1px}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:#72bf44;color:#212327}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:#ef4044;color:#212327}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;font-size:40px;max-height:40px;margin-top:10px}.sky-file-drop-link{cursor:default}.sky-file-drop-text-header{margin:0}.sky-file-drop-text{font-size:15px;margin-top:5px;margin-bottom:20px}.sky-file-drop-text,.sky-file-drop-text-header{line-height:1.1;display:block}.sky-file-upload-icon{color:#686c73}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-file-drop-errors{margin-bottom:10px}:host-context(.sky-theme-modern) .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}.sky-theme-modern .sky-control-label{color:var(--sky-text-color-deemphasized);font-size:13px}\n"] }]
269
269
  }], propDecorators: { filesChanged: [{
270
270
  type: Output
271
271
  }], linkInputBlur: [{
@@ -318,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
318
318
  type: ViewChild,
319
319
  args: ['fileInput']
320
320
  }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUU1RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTXJFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRWhDOzs7Ozs7Ozs7R0FTRztBQWdCSCxNQUFNLE9BQU8sb0JBQW9CO0lBZmpDO1FBZ0JFOztXQUVHO1FBRUksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUU1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OEJBT00sWUFBWTtzQkFEbEIsTUFBTTtnQkFPQSxhQUFhO3NCQURuQixNQUFNO2dCQU9BLFdBQVc7c0JBRGpCLE1BQU07Z0JBVUEsbUJBQW1CO3NCQUR6QixLQUFLO2dCQVVDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFRSyxXQUFXO3NCQURyQixLQUFLO2dCQWNLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUMsUUFBUTtzQkFEZCxLQUFLO2dCQVNDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBU0MsYUFBYTtzQkFEbkIsS0FBSztnQkFRQyx5QkFBeUI7c0JBRC9CLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsU0FBUztzQkFEZixLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUS9CLFFBQVE7c0JBRGQsS0FBSztnQkFXQyxRQUFRO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9CLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0MsT0FBTztzQkFGYixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFDckMsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBU25DLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5pbXBvcnQgeyBTa3lGb3JtRmllbGRMYWJlbFRleHRSZXF1aXJlZERpcmVjdGl2ZSB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWZpZWxkLWxhYmVsLXRleHQtcmVxdWlyZWQuZGlyZWN0aXZlJztcblxuaW1wb3J0IHsgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbSB9IGZyb20gJy4vZmlsZS1pdGVtJztcbmltcG9ydCB7IFNreUZpbGVMaW5rIH0gZnJvbSAnLi9maWxlLWxpbmsnO1xuaW1wb3J0IHsgU2t5RmlsZVZhbGlkYXRlRm4gfSBmcm9tICcuL2ZpbGUtdmFsaWRhdGUtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BDaGFuZ2UgfSBmcm9tICcuL3R5cGVzL2ZpbGUtZHJvcC1jaGFuZ2UnO1xuXG5jb25zdCBNQVhfRklMRV9TSVpFX0RFRkFVTFQgPSA1MDAwMDA7XG5jb25zdCBNSU5fRklMRV9TSVpFX0RFRkFVTFQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGVsZW1lbnQgdG8gYXR0YWNoIG11bHRpcGxlIGZpbGVzIHdoZXJlIHVzZXJzIGNhbiBicm93c2Ugb3IgZHJhZyBhbmQgZHJvcCBsb2NhbCBmaWxlc1xuICogb3IgcHJvdmlkZSBoeXBlcmxpbmtzIHRvIGV4dGVybmFsIGZpbGVzLiBZb3UgY2FuIGxlYXZlIHRoZSBjb250ZW50cyBvZiB0aGUgY29tcG9uZW50XG4gKiBibGFuayB0byBkaXNwbGF5IHRoZSBkcm9wIHpvbmUncyBkZWZhdWx0IFVJLCBvciB5b3UgY2FuIHNwZWNpZnkgY3VzdG9tIGNvbnRlbnQgdG9cbiAqIGRpc3BsYXkgaW5zdGVhZC4gV2hlbiB0aGUgbW9kdWxlIGluaXRpYWxpemVzLCBpdCBkaXNhYmxlcyB0aGUgYWJpbGl0eSB0byBkcmFnIGFuZFxuICogZHJvcCBmaWxlcyBmb3IgdGhlIGVudGlyZSB3aW5kb3cgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIG9wZW5pbmcgZmlsZXMgdGhhdCBhcmVcbiAqIGFjY2lkZW50YWxseSBkcm9wcGVkIG91dHNpZGUgdGhlIHRhcmdldCB6b25lLiBJZiB5b3UgaW1wbGVtZW50IHlvdXIgb3duIGZpbGUgZHJvcCBmdW5jdGlvbmFsaXR5XG4gKiBvdXRzaWRlIG9mIHRoZSBmaWxlIGRyb3AgY29tcG9uZW50LCB5b3UgY2FuIHBsYWNlIHRoZSBgc2t5LWZpbGUtZHJvcC10YXJnZXRgIENTUyBjbGFzc1xuICogb24gdGhlIGVsZW1lbnQgdGhhdCByZWNlaXZlcyBkcm9wIGV2ZW50cyB0byBleGVtcHQgaXQgZnJvbSB0aGUgZHJvcCBleGNsdXNpb24gcnVsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWZpbGUtZHJvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWRyb3AuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkRGlyZWN0aXZlLFxuICAgICAgaW5wdXRzOiBbJ2xhYmVsVGV4dCddLFxuICAgIH0sXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFNreUZpbGVBdHRhY2htZW50U2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWxlRHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGFkZCBvciByZW1vdmUgZmlsZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbGVzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RmlsZURyb3BDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGxpbmsgaW5wdXQgYm94IHRyaWdnZXJzIGEgYmx1ciBldmVudC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbGlua0lucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBhZGQgb3IgcmVtb3ZlIGxpbmtzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBsaW5rQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RmlsZUxpbms+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgZmlsZSB1cGxvYWQgYnV0dG9uLiBUaGlzIHByb3ZpZGVzIGEgdGV4dCBlcXVpdmFsZW50IGZvclxuICAgKiBzY3JlZW4gcmVhZGVycyBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlZmF1bHQgXCJEcmFnIGEgZmlsZSBoZXJlIG9yIGNsaWNrIHRvIGJyb3dzZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsZVVwbG9hZEFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGxpbmsgdXBsb2FkIGlucHV0LiBUaGlzIHNldHMgdGhlIGJ1dHRvbidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogc2NyZWVuIHJlYWRlcnMgW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiTGluayB0byBhIGZpbGVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxpbmtVcGxvYWRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gc2l6ZSBpbiBieXRlcyBmb3IgdmFsaWQgZmlsZXMuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19taW5GaWxlU2l6ZSA9IHZhbHVlID8/IE1JTl9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluRmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21pbkZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCA1MDAwMDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4RmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tYXhGaWxlU2l6ZSA9IHZhbHVlID8/IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21heEZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlcnMgY2FuIGRyYWcgYW5kIGRyb3AgbXVsdGlwbGUgZmlsZXMgYXQgdGhlIHNhbWUgdGltZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbi4gVGhpcyB2YWxpZGF0aW9uIHJ1bnMgYWxvbmdzaWRlIHRoZSBpbnRlcm5hbFxuICAgKiBmaWxlIHZhbGlkYXRpb24uIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBgU2t5RmlsZUl0ZW1gIG9iamVjdCBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIHN0cmluZyByZXR1cm5lZCBpcyB1c2VkIGFzIHRoZSBlcnJvciBtZXNzYWdlIGluIG11bHRpLWZpbGUgYXR0YWNobWVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWxpZGF0ZUZuOiBTa3lGaWxlVmFsaWRhdGVGbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbCBvZiBNSU1FIHR5cGVzIHRoYXQgdXNlcnMgY2FuIGF0dGFjaC5cbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGUgdHlwZXMgYXJlIGFsbG93ZWQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdGVkVHlwZXM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBjdXN0b20gZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gYSBmaWxlIGRvZXNuJ3QgbWF0Y2ggdGhlIGFjY2VwdGVkIHR5cGVzLlxuICAgKiBUaGlzIHJlcGxhY2VzIGEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIHRoYXQgbGlzdHMgYWxsIGFjY2VwdGVkIHR5cGVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdGVkVHlwZXNFcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBvcHRpb24gdG8gYnJvd3NlIGZvciBmaWxlcyB0byBhdHRhY2guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9DbGljazogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIG9wdGlvbiB0byBhdHRhY2ggZmlsZXMgZnJvbSBVUkxzIHJhdGhlciB0aGFuIGZyb20gbG9jYWwgZGV2aWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGxvd0xpbmtzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIGZpbGUgYXR0YWNobWVudCdzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgYGxhYmVsVGV4dGAgZnJvbSB2aWV3LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBsYWJlbEhpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBbUGVyc2lzdGVudCBpbmxpbmUgaGVscCB0ZXh0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9ndWlkZWxpbmVzL3VzZXItYXNzaXN0YW5jZSNpbmxpbmUtaGVscCkgdGhhdCBwcm92aWRlc1xuICAgKiBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB1cGxvYWRpbmcgYSBmaWxlIG9yIGxpbmsgaXMgcmVxdWlyZWQuXG4gICAqIFdoZW4geW91IHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBhZGRzIGBhcmlhLXJlcXVpcmVkYCBhbmQgYHJlcXVpcmVkYFxuICAgKiBhdHRyaWJ1dGVzIHRvIHRoZSBpbnB1dCBlbGVtZW50cyBzbyB0aGF0IHNjcmVlbiByZWFkZXJzIGFubm91bmNlIGFuIGludmFsaWQgc3RhdGUgdW50aWwgdGhlIGlucHV0IGVsZW1lbnRcbiAgICogaXMgY29tcGxldGUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtcmVxdWlyZWQpLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIGZpbGUgYXR0YWNobWVudCBsYWJlbC4gVGhlIGhlbHAgaW5saW5lIGJ1dHRvbiBkaXNwbGF5cyBhIFtwb3BvdmVyXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcG9wb3ZlcilcbiAgICogd2hlbiBjbGlja2VkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgb3B0aW9uYWwgdGl0bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWxlIGF0dGFjaG1lbnQgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZmlsZSBhdHRhY2htZW50LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LW1hcmdpbi1zdGFja2VkLWxnJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gIHB1YmxpYyBpbnB1dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgcHVibGljIGFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgbGlua1VybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNlbnRlckV2ZW50VGFyZ2V0OiBhbnk7XG5cbiAgI19tYXhGaWxlU2l6ZSA9IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcblxuICAjX21pbkZpbGVTaXplID0gTUlOX0ZJTEVfU0laRV9ERUZBVUxUO1xuXG4gIHJlYWRvbmx5ICNmaWxlQXR0YWNobWVudFNlcnZpY2UgPSBpbmplY3QoU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xpdmVBbm5vdW5jZXJTdmMgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuICByZWFkb25seSAjcmVzb3VyY2VzU3ZjID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuICByZWFkb25seSAjaWRTdmMgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZXJyb3JJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHJvdGVjdGVkIHJlamVjdGVkRmlsZXM6IFNreUZpbGVJdGVtW10gPSBbXTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5maWxlc0NoYW5nZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZHJvcENsaWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5vQ2xpY2sgJiYgdGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlQ2hhbmdlRXZlbnQoZmlsZUNoYW5nZUV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuI2hhbmRsZUZpbGVzKFxuICAgICAgKGZpbGVDaGFuZ2VFdmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmZpbGVzLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdFbnRlcihkcmFnRW50ZXJFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgLy8gU2F2ZSB0aGlzIHRhcmdldCB0byBrbm93IHdoZW4gdGhlIGRyYWcgZXZlbnQgbGVhdmVzXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IGRyYWdFbnRlckV2ZW50LnRhcmdldDtcbiAgICBkcmFnRW50ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnRW50ZXJFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnT3ZlcihkcmFnT3ZlckV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlciA9IGRyYWdPdmVyRXZlbnQuZGF0YVRyYW5zZmVyO1xuXG4gICAgZHJhZ092ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnT3ZlckV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgIGlmICh0cmFuc2Zlci5pdGVtcykge1xuICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odHJhbnNmZXIuaXRlbXMpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbGUudHlwZSAmJlxuICAgICAgICAgICAgdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVUeXBlUmVqZWN0ZWQoXG4gICAgICAgICAgICAgIGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5hY2NlcHRlZE92ZXIpIHtcbiAgICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdW50ZXN0YWJsZSAqLyBlbHNlIGlmICh0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAvLyBJZiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IERhdGFUcmFuc2Zlci5pdGVtcyxcbiAgICAgICAgLy8gZGVmZXIgZmlsZS10eXBlIGNoZWNraW5nIHRvIGRyb3AgaGFuZGxlci5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RhdGFUcmFuc2Zlci9pdGVtcyNCcm93c2VyX2NvbXBhdGliaWxpdHlcbiAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJvcChkcm9wRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGRyb3BFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcm9wRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuI2VudGVyRXZlbnRUYXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuXG4gICAgaWYgKGRyb3BFdmVudC5kYXRhVHJhbnNmZXIgJiYgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcykge1xuICAgICAgY29uc3QgaGFzRGlyZWN0b3J5ID0gdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmhhc0RpcmVjdG9yeShcbiAgICAgICAgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyxcbiAgICAgICk7XG4gICAgICBjb25zdCBpbnZhbGlkTnVtYmVyT2ZGaWxlcyA9XG4gICAgICAgICF0aGlzLm11bHRpcGxlICYmIGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID4gMTtcblxuICAgICAgaWYgKGhhc0RpcmVjdG9yeSB8fCBpbnZhbGlkTnVtYmVyT2ZGaWxlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2hhbmRsZUZpbGVzKGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJhZ0xlYXZlKGRyYWdMZWF2ZUV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZW50ZXJFdmVudFRhcmdldCA9PT0gZHJhZ0xlYXZlRXZlbnQudGFyZ2V0KSB7XG4gICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTGlua0VudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09PSAxMykge1xuICAgICAgdGhpcy5hZGRMaW5rKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTGluayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMubGlua0NoYW5nZWQuZW1pdCh7IHVybDogdGhpcy5saW5rVXJsIH0gYXMgU2t5RmlsZUxpbmspO1xuICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfYWRkZWQnLFxuICAgICAgdGhpcy5saW5rVXJsLFxuICAgICk7XG4gICAgdGhpcy5saW5rVXJsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uTGlua0JsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmVtaXQoKTtcbiAgfVxuXG4gICNhbm5vdW5jZVN0YXRlKHJlc291cmNlU3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjXG4gICAgICAuZ2V0U3RyaW5nKHJlc291cmNlU3RyaW5nLCAuLi5hcmdzKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGludGVybmF0aW9uYWxpemVkU3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuI2xpdmVBbm5vdW5jZXJTdmMuYW5ub3VuY2UoaW50ZXJuYXRpb25hbGl6ZWRTdHJpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICAjZW1pdEZpbGVDaGFuZ2VFdmVudChcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICk6IHZvaWQge1xuICAgIGlmICh0b3RhbEZpbGVzID09PSByZWplY3RlZEZpbGVBcnJheS5sZW5ndGggKyB2YWxpZEZpbGVBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBmaWxlczogdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZXM6IHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgfSBhcyBTa3lGaWxlRHJvcENoYW5nZSk7XG5cbiAgICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZmlsZXNSZWplY3RlZChcbiAgICBmaWxlOiBTa3lGaWxlSXRlbSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIHJlamVjdGVkRmlsZUFycmF5LnB1c2goZmlsZSk7XG4gICAgdGhpcy4jZW1pdEZpbGVDaGFuZ2VFdmVudCh0b3RhbEZpbGVzLCByZWplY3RlZEZpbGVBcnJheSwgdmFsaWRGaWxlQXJyYXkpO1xuICB9XG5cbiAgI2xvYWRGaWxlKFxuICAgIGZpbGVEcm9wOiBTa3lGaWxlRHJvcENvbXBvbmVudCxcbiAgICBmaWxlOiBTa3lGaWxlSXRlbSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIChldmVudDogYW55KSA9PiB7XG4gICAgICBmaWxlLnVybCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7XG4gICAgICB2YWxpZEZpbGVBcnJheS5wdXNoKGZpbGUpO1xuICAgICAgZmlsZURyb3AuI2VtaXRGaWxlQ2hhbmdlRXZlbnQoXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICk7XG4gICAgICB0aGlzLiNhbm5vdW5jZVN0YXRlKFxuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ZpbGVfYWRkZWQnLFxuICAgICAgICBmaWxlLmZpbGUubmFtZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICBmaWxlRHJvcC4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHtcbiAgICAgIGZpbGVEcm9wLiNmaWxlc1JlamVjdGVkKFxuICAgICAgICBmaWxlLFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZS5maWxlKTtcbiAgfVxuXG4gICNoYW5kbGVGaWxlcyhmaWxlcz86IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChmaWxlcykge1xuICAgICAgY29uc3QgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdID0gW107XG4gICAgICBjb25zdCB0b3RhbEZpbGVzID0gZmlsZXMubGVuZ3RoO1xuXG4gICAgICBjb25zdCBwcm9jZXNzZWRGaWxlcyA9IHRoaXMuI2ZpbGVBdHRhY2htZW50U2VydmljZS5jaGVja0ZpbGVzKFxuICAgICAgICBmaWxlcyxcbiAgICAgICAgdGhpcy5taW5GaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5tYXhGaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICB0aGlzLnZhbGlkYXRlRm4sXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcHJvY2Vzc2VkRmlsZXMpIHtcbiAgICAgICAgaWYgKGZpbGUuZXJyb3JUeXBlKSB7XG4gICAgICAgICAgdGhpcy4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI2xvYWRGaWxlKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVqZWN0ZWRGaWxlcyA9IHJlamVjdGVkRmlsZUFycmF5O1xuICAgIH1cbiAgfVxufVxuIiwiPGZpZWxkc2V0PlxuICA8bGVnZW5kXG4gICAgKm5nSWY9XCJsYWJlbFRleHRcIlxuICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWwgc2t5LWZvbnQtYm9keS1kZWZhdWx0IHNreS1tYXJnaW4tc3RhY2tlZC14c1wiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBsYWJlbEhpZGRlblxuICAgIH1cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwic2t5LW1hcmdpbi1pbmxpbmUteHNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZFxuICAgICAgfVwiXG4gICAgICA+e3sgbGFiZWxUZXh0IH19PC9zcGFuXG4gICAgPjxzcGFuIGNsYXNzPVwic2t5LXNjcmVlbi1yZWFkZXItb25seVwiICpuZ0lmPVwicmVxdWlyZWRcIj57e1xuICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9yZXF1aXJlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICB9fTwvc3BhblxuICAgID48c2t5LWhlbHAtaW5saW5lXG4gICAgICAqbmdJZj1cImhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5XCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgIC8+XG4gIDwvbGVnZW5kPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXJvd1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWZpbGUtZHJvcC1hbGxvdy1saW5rcyc6IGFsbG93TGlua3MgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtY29sXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1maWxlLWRyb3AtYWNjZXB0JzogYWNjZXB0ZWRPdmVyLFxuICAgICAgICAnc2t5LWZpbGUtZHJvcC1yZWplY3QnOiByZWplY3RlZE92ZXJcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wIHNreS1maWxlLWRyb3AtdGFyZ2V0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJkcm9wQ2xpY2tlZCgpXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cImZpbGVEcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdlbnRlcik9XCJmaWxlRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cImZpbGVEcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgIChkcm9wKT1cImZpbGVEcm9wKCRldmVudClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIGZpbGVVcGxvYWRBcmlhTGFiZWwgfHxcbiAgICAgICAgICAoJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX29yX2NsaWNrJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgICAgICAgIGxhYmVsVGV4dCAmJiByZWplY3RlZEZpbGVzLmxlbmd0aCA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgICAgICAgXCJcbiAgICAgID48L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGNsYXNzPVwic2t5LWZpbGUtaW5wdXQtaGlkZGVuXCJcbiAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGUgPyBtdWx0aXBsZSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0ZWRUeXBlcyA/IGFjY2VwdGVkVHlwZXMgOiBudWxsXCJcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzIHNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdFwiXG4gICAgICAgICpuZ0lmPVwiY3VzdG9tRWwuY2hpbGRyZW4ubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtbm90LW92ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJhZ19maWxlX2hlcmUnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9vcl9jbGlja190b19icm93c2UnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJjbG91ZC11cGxvYWRcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIHZhbGlkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1hY2NlcHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJvcF9maWxlc19oZXJlJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwiYnVsbHNleWVcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIGludmFsaWQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLXJlamVjdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyIHNreS1mb250LWRpc3BsYXktM1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwidGltZXMtY2lyY2xlXCIgY2xhc3M9XCJza3ktZmlsZS11cGxvYWQtaWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLWN1c3RvbVwiICNjdXN0b21FbD5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbFwiICpuZ0lmPVwiYWxsb3dMaW5rc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMgc2t5LXBhZGRpbmctZXZlbi1kZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWxpbmtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1saW5rLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dC1oZWFkZXIgc2t5LWZvbnQtZGlzcGxheS0zXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2xhYmVsJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1tYXJnaW4tc3RhY2tlZC14c1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICBsaW5rVXBsb2FkQXJpYUxhYmVsIHx8XG4gICAgICAgICAgICAgICAgKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19sYWJlbCdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInVwbG9hZEhpbnRUZXh0LmlkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICAgICAgICAgICAgICBsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGggPyBlcnJvcklkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibGlua1VybFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uTGlua0JsdXIoKVwiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJhZGRMaW5rRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICAjdXBsb2FkSGludFRleHQ9XCJza3lJZFwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktZmlsZS1kcm9wLWhpbnQtdGV4dCBza3ktbWFyZ2luLXN0YWNrZWQtc21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFsaW5rVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRMaW5rKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19kb25lJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgc2t5SWQgI2hpbnRUZXh0RWw9XCJza3lJZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJoaW50VGV4dFwiIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1maWxlLWRyb3AtaGludC10ZXh0XCI+XG4gICAgICB7eyBoaW50VGV4dCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZmllbGRzZXQ+XG48c2t5LWZvcm0tZXJyb3JzXG4gICpuZ0lmPVwibGFiZWxUZXh0ICYmIHJlamVjdGVkRmlsZXMubGVuZ3RoXCJcbiAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWVycm9yc1wiXG4gIFtpZF09XCJlcnJvcklkXCJcbiAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICBbc2hvd0Vycm9yc109XCJyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHJlamVjdGVkRmlsZSBvZiByZWplY3RlZEZpbGVzXCI+XG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cInJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICdmaWxlVHlwZSdcIlxuICAgICAgZXJyb3JOYW1lPVwiZmlsZVR5cGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3R5cGVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IHJlamVjdGVkRmlsZS5maWxlLm5hbWUgOiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVxuICAgICAgXCJcbiAgICAvPlxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJyZWplY3RlZEZpbGUuZXJyb3JUeXBlID09PSAnbWF4RmlsZVNpemUnXCJcbiAgICAgIGVycm9yTmFtZT1cIm1heEZpbGVTaXplXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgIGFjY2VwdGVkVHlwZXNFcnJvck1lc3NhZ2UgPz9cbiAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X21heF9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIDogcmVqZWN0ZWRGaWxlLmZpbGUubmFtZVxuICAgICAgICAgICAgOiAocmVqZWN0ZWRGaWxlLmVycm9yUGFyYW0gfCBza3lGaWxlU2l6ZSlcbiAgICAgIFwiXG4gICAgLz5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwicmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ21pbkZpbGVTaXplJ1wiXG4gICAgICBlcnJvck5hbWU9XCJtaW5GaWxlU2l6ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X21pbl9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIDogcmVqZWN0ZWRGaWxlLmZpbGUubmFtZVxuICAgICAgICAgICAgOiAocmVqZWN0ZWRGaWxlLmVycm9yUGFyYW0gfCBza3lGaWxlU2l6ZSlcbiAgICAgIFwiXG4gICAgLz5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwicmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ3ZhbGlkYXRlJyAmJiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVwiXG4gICAgICBlcnJvck5hbWU9XCJ2YWxpZGF0ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cInJlamVjdGVkRmlsZS5maWxlLm5hbWUgKyAnOiAnICsgcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9za3ktZm9ybS1lcnJvcnM+XG4iXX0=
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUU1RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTXJFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRWhDOzs7Ozs7Ozs7R0FTRztBQWdCSCxNQUFNLE9BQU8sb0JBQW9CO0lBZmpDO1FBZ0JFOztXQUVHO1FBRUksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUU1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OEJBT00sWUFBWTtzQkFEbEIsTUFBTTtnQkFPQSxhQUFhO3NCQURuQixNQUFNO2dCQU9BLFdBQVc7c0JBRGpCLE1BQU07Z0JBVUEsbUJBQW1CO3NCQUR6QixLQUFLO2dCQVVDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFRSyxXQUFXO3NCQURyQixLQUFLO2dCQWNLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUMsUUFBUTtzQkFEZCxLQUFLO2dCQVNDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBU0MsYUFBYTtzQkFEbkIsS0FBSztnQkFRQyx5QkFBeUI7c0JBRC9CLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsU0FBUztzQkFEZixLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUS9CLFFBQVE7c0JBRGQsS0FBSztnQkFXQyxRQUFRO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9CLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0MsT0FBTztzQkFGYixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFDckMsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBU25DLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5pbXBvcnQgeyBTa3lGb3JtRmllbGRMYWJlbFRleHRSZXF1aXJlZERpcmVjdGl2ZSB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWZpZWxkLWxhYmVsLXRleHQtcmVxdWlyZWQuZGlyZWN0aXZlJztcblxuaW1wb3J0IHsgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbSB9IGZyb20gJy4vZmlsZS1pdGVtJztcbmltcG9ydCB7IFNreUZpbGVMaW5rIH0gZnJvbSAnLi9maWxlLWxpbmsnO1xuaW1wb3J0IHsgU2t5RmlsZVZhbGlkYXRlRm4gfSBmcm9tICcuL2ZpbGUtdmFsaWRhdGUtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BDaGFuZ2UgfSBmcm9tICcuL3R5cGVzL2ZpbGUtZHJvcC1jaGFuZ2UnO1xuXG5jb25zdCBNQVhfRklMRV9TSVpFX0RFRkFVTFQgPSA1MDAwMDA7XG5jb25zdCBNSU5fRklMRV9TSVpFX0RFRkFVTFQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGVsZW1lbnQgdG8gYXR0YWNoIG11bHRpcGxlIGZpbGVzIHdoZXJlIHVzZXJzIGNhbiBicm93c2Ugb3IgZHJhZyBhbmQgZHJvcCBsb2NhbCBmaWxlc1xuICogb3IgcHJvdmlkZSBoeXBlcmxpbmtzIHRvIGV4dGVybmFsIGZpbGVzLiBZb3UgY2FuIGxlYXZlIHRoZSBjb250ZW50cyBvZiB0aGUgY29tcG9uZW50XG4gKiBibGFuayB0byBkaXNwbGF5IHRoZSBkcm9wIHpvbmUncyBkZWZhdWx0IFVJLCBvciB5b3UgY2FuIHNwZWNpZnkgY3VzdG9tIGNvbnRlbnQgdG9cbiAqIGRpc3BsYXkgaW5zdGVhZC4gV2hlbiB0aGUgbW9kdWxlIGluaXRpYWxpemVzLCBpdCBkaXNhYmxlcyB0aGUgYWJpbGl0eSB0byBkcmFnIGFuZFxuICogZHJvcCBmaWxlcyBmb3IgdGhlIGVudGlyZSB3aW5kb3cgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIG9wZW5pbmcgZmlsZXMgdGhhdCBhcmVcbiAqIGFjY2lkZW50YWxseSBkcm9wcGVkIG91dHNpZGUgdGhlIHRhcmdldCB6b25lLiBJZiB5b3UgaW1wbGVtZW50IHlvdXIgb3duIGZpbGUgZHJvcCBmdW5jdGlvbmFsaXR5XG4gKiBvdXRzaWRlIG9mIHRoZSBmaWxlIGRyb3AgY29tcG9uZW50LCB5b3UgY2FuIHBsYWNlIHRoZSBgc2t5LWZpbGUtZHJvcC10YXJnZXRgIENTUyBjbGFzc1xuICogb24gdGhlIGVsZW1lbnQgdGhhdCByZWNlaXZlcyBkcm9wIGV2ZW50cyB0byBleGVtcHQgaXQgZnJvbSB0aGUgZHJvcCBleGNsdXNpb24gcnVsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWZpbGUtZHJvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRyb3AuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWRyb3AuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkRGlyZWN0aXZlLFxuICAgICAgaW5wdXRzOiBbJ2xhYmVsVGV4dCddLFxuICAgIH0sXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFNreUZpbGVBdHRhY2htZW50U2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWxlRHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGFkZCBvciByZW1vdmUgZmlsZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbGVzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RmlsZURyb3BDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGxpbmsgaW5wdXQgYm94IHRyaWdnZXJzIGEgYmx1ciBldmVudC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbGlua0lucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBhZGQgb3IgcmVtb3ZlIGxpbmtzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBsaW5rQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RmlsZUxpbms+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgZmlsZSB1cGxvYWQgYnV0dG9uLiBUaGlzIHByb3ZpZGVzIGEgdGV4dCBlcXVpdmFsZW50IGZvclxuICAgKiBzY3JlZW4gcmVhZGVycyBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlZmF1bHQgXCJEcmFnIGEgZmlsZSBoZXJlIG9yIGNsaWNrIHRvIGJyb3dzZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsZVVwbG9hZEFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGxpbmsgdXBsb2FkIGlucHV0LiBUaGlzIHNldHMgdGhlIGJ1dHRvbidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogc2NyZWVuIHJlYWRlcnMgW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiTGluayB0byBhIGZpbGVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxpbmtVcGxvYWRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gc2l6ZSBpbiBieXRlcyBmb3IgdmFsaWQgZmlsZXMuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19taW5GaWxlU2l6ZSA9IHZhbHVlID8/IE1JTl9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluRmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21pbkZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCA1MDAwMDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4RmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tYXhGaWxlU2l6ZSA9IHZhbHVlID8/IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21heEZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlcnMgY2FuIGRyYWcgYW5kIGRyb3AgbXVsdGlwbGUgZmlsZXMgYXQgdGhlIHNhbWUgdGltZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbi4gVGhpcyB2YWxpZGF0aW9uIHJ1bnMgYWxvbmdzaWRlIHRoZSBpbnRlcm5hbFxuICAgKiBmaWxlIHZhbGlkYXRpb24uIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBgU2t5RmlsZUl0ZW1gIG9iamVjdCBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIHN0cmluZyByZXR1cm5lZCBpcyB1c2VkIGFzIHRoZSBlcnJvciBtZXNzYWdlIGluIG11bHRpLWZpbGUgYXR0YWNobWVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWxpZGF0ZUZuOiBTa3lGaWxlVmFsaWRhdGVGbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbCBvZiBNSU1FIHR5cGVzIHRoYXQgdXNlcnMgY2FuIGF0dGFjaC5cbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGUgdHlwZXMgYXJlIGFsbG93ZWQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdGVkVHlwZXM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBjdXN0b20gZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gYSBmaWxlIGRvZXNuJ3QgbWF0Y2ggdGhlIGFjY2VwdGVkIHR5cGVzLlxuICAgKiBUaGlzIHJlcGxhY2VzIGEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIHRoYXQgbGlzdHMgYWxsIGFjY2VwdGVkIHR5cGVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdGVkVHlwZXNFcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBvcHRpb24gdG8gYnJvd3NlIGZvciBmaWxlcyB0byBhdHRhY2guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9DbGljazogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIG9wdGlvbiB0byBhdHRhY2ggZmlsZXMgZnJvbSBVUkxzIHJhdGhlciB0aGFuIGZyb20gbG9jYWwgZGV2aWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGxvd0xpbmtzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIGZpbGUgYXR0YWNobWVudCdzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgYGxhYmVsVGV4dGAgZnJvbSB2aWV3LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBsYWJlbEhpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBbUGVyc2lzdGVudCBpbmxpbmUgaGVscCB0ZXh0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9ndWlkZWxpbmVzL3VzZXItYXNzaXN0YW5jZSNpbmxpbmUtaGVscCkgdGhhdCBwcm92aWRlc1xuICAgKiBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB1cGxvYWRpbmcgYSBmaWxlIG9yIGxpbmsgaXMgcmVxdWlyZWQuXG4gICAqIFdoZW4geW91IHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBhZGRzIGBhcmlhLXJlcXVpcmVkYCBhbmQgYHJlcXVpcmVkYFxuICAgKiBhdHRyaWJ1dGVzIHRvIHRoZSBpbnB1dCBlbGVtZW50cyBzbyB0aGF0IHNjcmVlbiByZWFkZXJzIGFubm91bmNlIGFuIGludmFsaWQgc3RhdGUgdW50aWwgdGhlIGlucHV0IGVsZW1lbnRcbiAgICogaXMgY29tcGxldGUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtcmVxdWlyZWQpLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIGZpbGUgYXR0YWNobWVudCBsYWJlbC4gVGhlIGhlbHAgaW5saW5lIGJ1dHRvbiBkaXNwbGF5cyBhIFtwb3BvdmVyXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcG9wb3ZlcilcbiAgICogd2hlbiBjbGlja2VkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgb3B0aW9uYWwgdGl0bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWxlIGF0dGFjaG1lbnQgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZmlsZSBhdHRhY2htZW50LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LW1hcmdpbi1zdGFja2VkLWxnJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gIHB1YmxpYyBpbnB1dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgcHVibGljIGFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgbGlua1VybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNlbnRlckV2ZW50VGFyZ2V0OiBhbnk7XG5cbiAgI19tYXhGaWxlU2l6ZSA9IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcblxuICAjX21pbkZpbGVTaXplID0gTUlOX0ZJTEVfU0laRV9ERUZBVUxUO1xuXG4gIHJlYWRvbmx5ICNmaWxlQXR0YWNobWVudFNlcnZpY2UgPSBpbmplY3QoU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xpdmVBbm5vdW5jZXJTdmMgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuICByZWFkb25seSAjcmVzb3VyY2VzU3ZjID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuICByZWFkb25seSAjaWRTdmMgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZXJyb3JJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHJvdGVjdGVkIHJlamVjdGVkRmlsZXM6IFNreUZpbGVJdGVtW10gPSBbXTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5maWxlc0NoYW5nZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZHJvcENsaWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5vQ2xpY2sgJiYgdGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlQ2hhbmdlRXZlbnQoZmlsZUNoYW5nZUV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuI2hhbmRsZUZpbGVzKFxuICAgICAgKGZpbGVDaGFuZ2VFdmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmZpbGVzLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdFbnRlcihkcmFnRW50ZXJFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgLy8gU2F2ZSB0aGlzIHRhcmdldCB0byBrbm93IHdoZW4gdGhlIGRyYWcgZXZlbnQgbGVhdmVzXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IGRyYWdFbnRlckV2ZW50LnRhcmdldDtcbiAgICBkcmFnRW50ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnRW50ZXJFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnT3ZlcihkcmFnT3ZlckV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlciA9IGRyYWdPdmVyRXZlbnQuZGF0YVRyYW5zZmVyO1xuXG4gICAgZHJhZ092ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnT3ZlckV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgIGlmICh0cmFuc2Zlci5pdGVtcykge1xuICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odHJhbnNmZXIuaXRlbXMpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbGUudHlwZSAmJlxuICAgICAgICAgICAgdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVUeXBlUmVqZWN0ZWQoXG4gICAgICAgICAgICAgIGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5hY2NlcHRlZE92ZXIpIHtcbiAgICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdW50ZXN0YWJsZSAqLyBlbHNlIGlmICh0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAvLyBJZiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IERhdGFUcmFuc2Zlci5pdGVtcyxcbiAgICAgICAgLy8gZGVmZXIgZmlsZS10eXBlIGNoZWNraW5nIHRvIGRyb3AgaGFuZGxlci5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RhdGFUcmFuc2Zlci9pdGVtcyNCcm93c2VyX2NvbXBhdGliaWxpdHlcbiAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJvcChkcm9wRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGRyb3BFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcm9wRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuI2VudGVyRXZlbnRUYXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuXG4gICAgaWYgKGRyb3BFdmVudC5kYXRhVHJhbnNmZXIgJiYgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcykge1xuICAgICAgY29uc3QgaGFzRGlyZWN0b3J5ID0gdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmhhc0RpcmVjdG9yeShcbiAgICAgICAgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyxcbiAgICAgICk7XG4gICAgICBjb25zdCBpbnZhbGlkTnVtYmVyT2ZGaWxlcyA9XG4gICAgICAgICF0aGlzLm11bHRpcGxlICYmIGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID4gMTtcblxuICAgICAgaWYgKGhhc0RpcmVjdG9yeSB8fCBpbnZhbGlkTnVtYmVyT2ZGaWxlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2hhbmRsZUZpbGVzKGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJhZ0xlYXZlKGRyYWdMZWF2ZUV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZW50ZXJFdmVudFRhcmdldCA9PT0gZHJhZ0xlYXZlRXZlbnQudGFyZ2V0KSB7XG4gICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTGlua0VudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LndoaWNoID09PSAxMykge1xuICAgICAgdGhpcy5hZGRMaW5rKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTGluayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMubGlua0NoYW5nZWQuZW1pdCh7IHVybDogdGhpcy5saW5rVXJsIH0gYXMgU2t5RmlsZUxpbmspO1xuICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfYWRkZWQnLFxuICAgICAgdGhpcy5saW5rVXJsLFxuICAgICk7XG4gICAgdGhpcy5saW5rVXJsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uTGlua0JsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmVtaXQoKTtcbiAgfVxuXG4gICNhbm5vdW5jZVN0YXRlKHJlc291cmNlU3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjXG4gICAgICAuZ2V0U3RyaW5nKHJlc291cmNlU3RyaW5nLCAuLi5hcmdzKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGludGVybmF0aW9uYWxpemVkU3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuI2xpdmVBbm5vdW5jZXJTdmMuYW5ub3VuY2UoaW50ZXJuYXRpb25hbGl6ZWRTdHJpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICAjZW1pdEZpbGVDaGFuZ2VFdmVudChcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICk6IHZvaWQge1xuICAgIGlmICh0b3RhbEZpbGVzID09PSByZWplY3RlZEZpbGVBcnJheS5sZW5ndGggKyB2YWxpZEZpbGVBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBmaWxlczogdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZXM6IHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgfSBhcyBTa3lGaWxlRHJvcENoYW5nZSk7XG5cbiAgICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZmlsZXNSZWplY3RlZChcbiAgICBmaWxlOiBTa3lGaWxlSXRlbSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIHJlamVjdGVkRmlsZUFycmF5LnB1c2goZmlsZSk7XG4gICAgdGhpcy4jZW1pdEZpbGVDaGFuZ2VFdmVudCh0b3RhbEZpbGVzLCByZWplY3RlZEZpbGVBcnJheSwgdmFsaWRGaWxlQXJyYXkpO1xuICB9XG5cbiAgI2xvYWRGaWxlKFxuICAgIGZpbGVEcm9wOiBTa3lGaWxlRHJvcENvbXBvbmVudCxcbiAgICBmaWxlOiBTa3lGaWxlSXRlbSxcbiAgICB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSxcbiAgICB0b3RhbEZpbGVzOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIChldmVudDogYW55KSA9PiB7XG4gICAgICBmaWxlLnVybCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7XG4gICAgICB2YWxpZEZpbGVBcnJheS5wdXNoKGZpbGUpO1xuICAgICAgZmlsZURyb3AuI2VtaXRGaWxlQ2hhbmdlRXZlbnQoXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICk7XG4gICAgICB0aGlzLiNhbm5vdW5jZVN0YXRlKFxuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ZpbGVfYWRkZWQnLFxuICAgICAgICBmaWxlLmZpbGUubmFtZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICBmaWxlRHJvcC4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHtcbiAgICAgIGZpbGVEcm9wLiNmaWxlc1JlamVjdGVkKFxuICAgICAgICBmaWxlLFxuICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZS5maWxlKTtcbiAgfVxuXG4gICNoYW5kbGVGaWxlcyhmaWxlcz86IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChmaWxlcykge1xuICAgICAgY29uc3QgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdID0gW107XG4gICAgICBjb25zdCB0b3RhbEZpbGVzID0gZmlsZXMubGVuZ3RoO1xuXG4gICAgICBjb25zdCBwcm9jZXNzZWRGaWxlcyA9IHRoaXMuI2ZpbGVBdHRhY2htZW50U2VydmljZS5jaGVja0ZpbGVzKFxuICAgICAgICBmaWxlcyxcbiAgICAgICAgdGhpcy5taW5GaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5tYXhGaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICB0aGlzLnZhbGlkYXRlRm4sXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcHJvY2Vzc2VkRmlsZXMpIHtcbiAgICAgICAgaWYgKGZpbGUuZXJyb3JUeXBlKSB7XG4gICAgICAgICAgdGhpcy4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI2xvYWRGaWxlKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVqZWN0ZWRGaWxlcyA9IHJlamVjdGVkRmlsZUFycmF5O1xuICAgIH1cbiAgfVxufVxuIiwiPGZpZWxkc2V0PlxuICA8bGVnZW5kXG4gICAgKm5nSWY9XCJsYWJlbFRleHRcIlxuICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWwgc2t5LWZvbnQtYm9keS1kZWZhdWx0IHNreS1tYXJnaW4tc3RhY2tlZC14c1wiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBsYWJlbEhpZGRlblxuICAgIH1cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwic2t5LW1hcmdpbi1pbmxpbmUteHNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZFxuICAgICAgfVwiXG4gICAgICA+e3sgbGFiZWxUZXh0IH19PC9zcGFuXG4gICAgPjxzcGFuIGNsYXNzPVwic2t5LXNjcmVlbi1yZWFkZXItb25seVwiICpuZ0lmPVwicmVxdWlyZWRcIj57e1xuICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9yZXF1aXJlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICB9fTwvc3BhblxuICAgID48c2t5LWhlbHAtaW5saW5lXG4gICAgICAqbmdJZj1cImhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5XCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgIC8+XG4gIDwvbGVnZW5kPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXJvd1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWZpbGUtZHJvcC1hbGxvdy1saW5rcyc6IGFsbG93TGlua3MgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtY29sXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1maWxlLWRyb3AtYWNjZXB0JzogYWNjZXB0ZWRPdmVyLFxuICAgICAgICAnc2t5LWZpbGUtZHJvcC1yZWplY3QnOiByZWplY3RlZE92ZXJcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wIHNreS1maWxlLWRyb3AtdGFyZ2V0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJkcm9wQ2xpY2tlZCgpXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cImZpbGVEcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdlbnRlcik9XCJmaWxlRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cImZpbGVEcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgIChkcm9wKT1cImZpbGVEcm9wKCRldmVudClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIGZpbGVVcGxvYWRBcmlhTGFiZWwgfHxcbiAgICAgICAgICAoJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX29yX2NsaWNrJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgICAgICAgIGxhYmVsVGV4dCAmJiByZWplY3RlZEZpbGVzLmxlbmd0aCA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgICAgICAgXCJcbiAgICAgID48L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGNsYXNzPVwic2t5LWZpbGUtaW5wdXQtaGlkZGVuXCJcbiAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGUgPyBtdWx0aXBsZSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0ZWRUeXBlcyA/IGFjY2VwdGVkVHlwZXMgOiBudWxsXCJcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzIHNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdFwiXG4gICAgICAgICpuZ0lmPVwiY3VzdG9tRWwuY2hpbGRyZW4ubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtbm90LW92ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJhZ19maWxlX2hlcmUnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9vcl9jbGlja190b19icm93c2UnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJjbG91ZC11cGxvYWRcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIHZhbGlkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1hY2NlcHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJvcF9maWxlc19oZXJlJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwiYnVsbHNleWVcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIGludmFsaWQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLXJlamVjdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyIHNreS1mb250LWRpc3BsYXktM1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwidGltZXMtY2lyY2xlXCIgY2xhc3M9XCJza3ktZmlsZS11cGxvYWQtaWNvblwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLWN1c3RvbVwiICNjdXN0b21FbD5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbFwiICpuZ0lmPVwiYWxsb3dMaW5rc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMgc2t5LXBhZGRpbmctZXZlbi1kZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWxpbmtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1saW5rLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dC1oZWFkZXIgc2t5LWZvbnQtZGlzcGxheS0zXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2xhYmVsJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1tYXJnaW4tc3RhY2tlZC14c1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICBsaW5rVXBsb2FkQXJpYUxhYmVsIHx8XG4gICAgICAgICAgICAgICAgKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19sYWJlbCdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInVwbG9hZEhpbnRUZXh0LmlkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICAgICAgICAgICAgICBsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGggPyBlcnJvcklkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibGlua1VybFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uTGlua0JsdXIoKVwiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJhZGRMaW5rRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICAjdXBsb2FkSGludFRleHQ9XCJza3lJZFwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktZmlsZS1kcm9wLWhpbnQtdGV4dCBza3ktbWFyZ2luLXN0YWNrZWQtc21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFsaW5rVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRMaW5rKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19kb25lJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgc2t5SWQgI2hpbnRUZXh0RWw9XCJza3lJZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJoaW50VGV4dFwiIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1maWxlLWRyb3AtaGludC10ZXh0XCI+XG4gICAgICB7eyBoaW50VGV4dCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZmllbGRzZXQ+XG48c2t5LWZvcm0tZXJyb3JzXG4gIFtjbGFzcy5za3ktZmlsZS1kcm9wLWVycm9yc109XCJsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICBbaWRdPVwiZXJyb3JJZFwiXG4gIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgW3Nob3dFcnJvcnNdPVwicmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCByZWplY3RlZEZpbGUgb2YgcmVqZWN0ZWRGaWxlc1wiPlxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJyZWplY3RlZEZpbGUuZXJyb3JUeXBlID09PSAnZmlsZVR5cGUnXCJcbiAgICAgIGVycm9yTmFtZT1cImZpbGVUeXBlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV90eXBlX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiByZWplY3RlZEZpbGUuZmlsZS5uYW1lIDogcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cbiAgICAgIFwiXG4gICAgLz5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwicmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ21heEZpbGVTaXplJ1wiXG4gICAgICBlcnJvck5hbWU9XCJtYXhGaWxlU2l6ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICBhY2NlcHRlZFR5cGVzRXJyb3JNZXNzYWdlID8/XG4gICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9tYXhfZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICA6IHJlamVjdGVkRmlsZS5maWxlLm5hbWVcbiAgICAgICAgICAgIDogKHJlamVjdGVkRmlsZS5lcnJvclBhcmFtIHwgc2t5RmlsZVNpemUpXG4gICAgICBcIlxuICAgIC8+XG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cInJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICdtaW5GaWxlU2l6ZSdcIlxuICAgICAgZXJyb3JOYW1lPVwibWluRmlsZVNpemVcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9taW5fZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICA6IHJlamVjdGVkRmlsZS5maWxlLm5hbWVcbiAgICAgICAgICAgIDogKHJlamVjdGVkRmlsZS5lcnJvclBhcmFtIHwgc2t5RmlsZVNpemUpXG4gICAgICBcIlxuICAgIC8+XG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cInJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICd2YWxpZGF0ZScgJiYgcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cIlxuICAgICAgZXJyb3JOYW1lPVwidmFsaWRhdGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCJyZWplY3RlZEZpbGUuZmlsZS5uYW1lICsgJzogJyArIHJlamVjdGVkRmlsZS5lcnJvclBhcmFtXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19
@@ -22,7 +22,7 @@ export class SkyFormErrorsComponent {
22
22
  this.ariaRelevant = 'all';
23
23
  }
24
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyFormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.4", type: SkyFormErrorsComponent, isStandalone: true, selector: "sky-form-errors", inputs: { errors: "errors", labelText: "labelText", showErrors: ["showErrors", "showErrors", coerceBooleanProperty] }, host: { properties: { "attr.aria-atomic": "this.ariaAtomic", "attr.aria-live": "this.ariaLive", "attr.aria-relevant": "this.ariaRelevant" } }, ngImport: i0, template: "<ng-container *ngIf=\"labelText && showErrors\">\n <ng-container *ngIf=\"errors\">\n <sky-form-error\n *ngIf=\"errors['required']\"\n errorName=\"required\"\n [errorText]=\"'skyux_form_error_required' | skyLibResources: labelText\"\n />\n\n <sky-form-error\n *ngIf=\"errors['maxlength'] as maxLengthError\"\n errorName=\"maxlength\"\n [errorText]=\"\n 'skyux_form_error_maxlength'\n | skyLibResources: labelText : maxLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['minlength'] as minLengthError\"\n errorName=\"minlength\"\n [errorText]=\"\n 'skyux_form_error_minlength'\n | skyLibResources: labelText : minLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['invalid']\"\n errorName=\"invalidDate\"\n [errorText]=\"'skyux_form_error_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['minDate']\"\n errorName=\"minDate\"\n [errorText]=\"'skyux_form_error_date_min' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['maxDate']\"\n errorName=\"maxDate\"\n [errorText]=\"'skyux_form_error_date_max' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['futureDisabled']\"\n errorName=\"fuzzyFutureDisabled\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['invalid']\"\n errorName=\"fuzzyInvalidDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['maxDate']\"\n errorName=\"fuzzyMaxDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_max_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['minDate']\"\n errorName=\"fuzzyMinDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_min_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['yearRequired']\"\n errorName=\"fuzzyYearRequired\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyEmail']\"\n errorName=\"email\"\n [errorText]=\"'skyux_form_error_email' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyPhoneField']\"\n errorName=\"phone\"\n [errorText]=\"'skyux_form_error_phone' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyTime']\"\n errorName=\"time\"\n [errorText]=\"'skyux_form_error_time' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyUrl']\"\n errorName=\"url\"\n [errorText]=\"'skyux_form_error_url' | skyLibResources\"\n />\n </ng-container>\n <ng-content />\n</ng-container>\n", styles: [":host,sky-status-indicator{display:block;line-height:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "component", type: SkyFormErrorComponent, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormsResourcesModule }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.4", type: SkyFormErrorsComponent, isStandalone: true, selector: "sky-form-errors", inputs: { errors: "errors", labelText: "labelText", showErrors: ["showErrors", "showErrors", coerceBooleanProperty] }, host: { properties: { "attr.aria-atomic": "this.ariaAtomic", "attr.aria-live": "this.ariaLive", "attr.aria-relevant": "this.ariaRelevant" } }, ngImport: i0, template: "<div *ngIf=\"labelText && showErrors\">\n <ng-container *ngIf=\"errors\">\n <sky-form-error\n *ngIf=\"errors['required']\"\n errorName=\"required\"\n [errorText]=\"'skyux_form_error_required' | skyLibResources: labelText\"\n />\n\n <sky-form-error\n *ngIf=\"errors['maxlength'] as maxLengthError\"\n errorName=\"maxlength\"\n [errorText]=\"\n 'skyux_form_error_maxlength'\n | skyLibResources: labelText : maxLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['minlength'] as minLengthError\"\n errorName=\"minlength\"\n [errorText]=\"\n 'skyux_form_error_minlength'\n | skyLibResources: labelText : minLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['invalid']\"\n errorName=\"invalidDate\"\n [errorText]=\"'skyux_form_error_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['minDate']\"\n errorName=\"minDate\"\n [errorText]=\"'skyux_form_error_date_min' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['maxDate']\"\n errorName=\"maxDate\"\n [errorText]=\"'skyux_form_error_date_max' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['futureDisabled']\"\n errorName=\"fuzzyFutureDisabled\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['invalid']\"\n errorName=\"fuzzyInvalidDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['maxDate']\"\n errorName=\"fuzzyMaxDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_max_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['minDate']\"\n errorName=\"fuzzyMinDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_min_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['yearRequired']\"\n errorName=\"fuzzyYearRequired\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyEmail']\"\n errorName=\"email\"\n [errorText]=\"'skyux_form_error_email' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyPhoneField']\"\n errorName=\"phone\"\n [errorText]=\"'skyux_form_error_phone' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyTime']\"\n errorName=\"time\"\n [errorText]=\"'skyux_form_error_time' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyUrl']\"\n errorName=\"url\"\n [errorText]=\"'skyux_form_error_url' | skyLibResources\"\n />\n </ng-container>\n <ng-content />\n</div>\n", styles: ["sky-status-indicator{display:block;line-height:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "component", type: SkyFormErrorComponent, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormsResourcesModule }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyFormErrorsComponent, decorators: [{
28
28
  type: Component,
@@ -31,7 +31,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
31
31
  SkyIdModule,
32
32
  SkyFormErrorComponent,
33
33
  SkyFormsResourcesModule,
34
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"labelText && showErrors\">\n <ng-container *ngIf=\"errors\">\n <sky-form-error\n *ngIf=\"errors['required']\"\n errorName=\"required\"\n [errorText]=\"'skyux_form_error_required' | skyLibResources: labelText\"\n />\n\n <sky-form-error\n *ngIf=\"errors['maxlength'] as maxLengthError\"\n errorName=\"maxlength\"\n [errorText]=\"\n 'skyux_form_error_maxlength'\n | skyLibResources: labelText : maxLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['minlength'] as minLengthError\"\n errorName=\"minlength\"\n [errorText]=\"\n 'skyux_form_error_minlength'\n | skyLibResources: labelText : minLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['invalid']\"\n errorName=\"invalidDate\"\n [errorText]=\"'skyux_form_error_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['minDate']\"\n errorName=\"minDate\"\n [errorText]=\"'skyux_form_error_date_min' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['maxDate']\"\n errorName=\"maxDate\"\n [errorText]=\"'skyux_form_error_date_max' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['futureDisabled']\"\n errorName=\"fuzzyFutureDisabled\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['invalid']\"\n errorName=\"fuzzyInvalidDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['maxDate']\"\n errorName=\"fuzzyMaxDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_max_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['minDate']\"\n errorName=\"fuzzyMinDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_min_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['yearRequired']\"\n errorName=\"fuzzyYearRequired\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyEmail']\"\n errorName=\"email\"\n [errorText]=\"'skyux_form_error_email' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyPhoneField']\"\n errorName=\"phone\"\n [errorText]=\"'skyux_form_error_phone' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyTime']\"\n errorName=\"time\"\n [errorText]=\"'skyux_form_error_time' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyUrl']\"\n errorName=\"url\"\n [errorText]=\"'skyux_form_error_url' | skyLibResources\"\n />\n </ng-container>\n <ng-content />\n</ng-container>\n", styles: [":host,sky-status-indicator{display:block;line-height:normal}\n"] }]
34
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"labelText && showErrors\">\n <ng-container *ngIf=\"errors\">\n <sky-form-error\n *ngIf=\"errors['required']\"\n errorName=\"required\"\n [errorText]=\"'skyux_form_error_required' | skyLibResources: labelText\"\n />\n\n <sky-form-error\n *ngIf=\"errors['maxlength'] as maxLengthError\"\n errorName=\"maxlength\"\n [errorText]=\"\n 'skyux_form_error_maxlength'\n | skyLibResources: labelText : maxLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['minlength'] as minLengthError\"\n errorName=\"minlength\"\n [errorText]=\"\n 'skyux_form_error_minlength'\n | skyLibResources: labelText : minLengthError.requiredLength\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['invalid']\"\n errorName=\"invalidDate\"\n [errorText]=\"'skyux_form_error_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['minDate']\"\n errorName=\"minDate\"\n [errorText]=\"'skyux_form_error_date_min' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyDate'] && errors['skyDate']['maxDate']\"\n errorName=\"maxDate\"\n [errorText]=\"'skyux_form_error_date_max' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['futureDisabled']\"\n errorName=\"fuzzyFutureDisabled\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['invalid']\"\n errorName=\"fuzzyInvalidDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['maxDate']\"\n errorName=\"fuzzyMaxDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_max_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['minDate']\"\n errorName=\"fuzzyMinDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_min_date' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyFuzzyDate'] && errors['skyFuzzyDate']['yearRequired']\"\n errorName=\"fuzzyYearRequired\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\n \"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyEmail']\"\n errorName=\"email\"\n [errorText]=\"'skyux_form_error_email' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyPhoneField']\"\n errorName=\"phone\"\n [errorText]=\"'skyux_form_error_phone' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyTime']\"\n errorName=\"time\"\n [errorText]=\"'skyux_form_error_time' | skyLibResources\"\n />\n\n <sky-form-error\n *ngIf=\"errors['skyUrl']\"\n errorName=\"url\"\n [errorText]=\"'skyux_form_error_url' | skyLibResources\"\n />\n </ng-container>\n <ng-content />\n</div>\n", styles: ["sky-status-indicator{display:block;line-height:normal}\n"] }]
35
35
  }], propDecorators: { errors: [{
36
36
  type: Input
37
37
  }], labelText: [{
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
49
49
  type: HostBinding,
50
50
  args: ['attr.aria-relevant']
51
51
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9ycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRS9EOztHQUVHO0FBY0gsTUFBTSxPQUFPLHNCQUFzQjtJQWJuQztRQTBCRTs7O1dBR0c7UUFFSSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR04sZUFBVSxHQUFHLE1BQU0sQ0FBQztRQUdwQixhQUFRLEdBQUcsV0FBVyxDQUFDO1FBR3ZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0tBQ3pDOzhHQTVCWSxzQkFBc0I7a0dBQXRCLHNCQUFzQixnSkFpQmIscUJBQXFCLDRLQ2hEM0MsMnFHQXdHQSx1SERsRkksWUFBWSxrSUFDWixXQUFXLCtCQUNYLHFCQUFxQiw4RkFDckIsdUJBQXVCOzsyRkFNZCxzQkFBc0I7a0JBYmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLHVCQUF1QjtxQkFDeEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBT3hDLE1BQU07c0JBRFosS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFJeEIsVUFBVTtzQkFENUIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSVosUUFBUTtzQkFEMUIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBSVYsWUFBWTtzQkFEOUIsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1mb3Jtcy1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1mb3JtLWVycm9ycycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yQ29tcG9uZW50LFxuICAgIFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVycm9ycy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rm9ybUVycm9yc0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBlcnJvcnMgZnJvbSB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIElucHV0IGxhYmVsIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWxUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHNob3cgZXJyb3IgbWVzc2FnZXMsIHdoaWNoIG1pZ2h0IG9ubHkgYmUgdHJ1ZSBpZiB0aGVcbiAgICogZm9ybSBjb250cm9sIGlzIHRvdWNoZWQgb3IgZGlydHkuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICBwdWJsaWMgc2hvd0Vycm9ycyA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXRvbWljJylcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFBdG9taWMgPSAndHJ1ZSc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGl2ZScpXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhTGl2ZSA9ICdhc3NlcnRpdmUnO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJlbGV2YW50JylcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFSZWxldmFudCA9ICdhbGwnO1xufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsVGV4dCAmJiBzaG93RXJyb3JzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcnNcIj5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydyZXF1aXJlZCddXCJcbiAgICAgIGVycm9yTmFtZT1cInJlcXVpcmVkXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfcmVxdWlyZWQnIHwgc2t5TGliUmVzb3VyY2VzOiBsYWJlbFRleHRcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydtYXhsZW5ndGgnXSBhcyBtYXhMZW5ndGhFcnJvclwiXG4gICAgICBlcnJvck5hbWU9XCJtYXhsZW5ndGhcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2Zvcm1fZXJyb3JfbWF4bGVuZ3RoJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBsYWJlbFRleHQgOiBtYXhMZW5ndGhFcnJvci5yZXF1aXJlZExlbmd0aFxuICAgICAgXCJcbiAgICAvPlxuXG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cImVycm9yc1snbWlubGVuZ3RoJ10gYXMgbWluTGVuZ3RoRXJyb3JcIlxuICAgICAgZXJyb3JOYW1lPVwibWlubGVuZ3RoXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICdza3l1eF9mb3JtX2Vycm9yX21pbmxlbmd0aCdcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogbGFiZWxUZXh0IDogbWluTGVuZ3RoRXJyb3IucmVxdWlyZWRMZW5ndGhcbiAgICAgIFwiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreURhdGUnXSAmJiBlcnJvcnNbJ3NreURhdGUnXVsnaW52YWxpZCddXCJcbiAgICAgIGVycm9yTmFtZT1cImludmFsaWREYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfZGF0ZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydza3lEYXRlJ10gJiYgZXJyb3JzWydza3lEYXRlJ11bJ21pbkRhdGUnXVwiXG4gICAgICBlcnJvck5hbWU9XCJtaW5EYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfZGF0ZV9taW4nIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cImVycm9yc1snc2t5RGF0ZSddICYmIGVycm9yc1snc2t5RGF0ZSddWydtYXhEYXRlJ11cIlxuICAgICAgZXJyb3JOYW1lPVwibWF4RGF0ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIidza3l1eF9mb3JtX2Vycm9yX2RhdGVfbWF4JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ2Z1dHVyZURpc2FibGVkJ11cIlxuICAgICAgZXJyb3JOYW1lPVwiZnV6enlGdXR1cmVEaXNhYmxlZFwiXG4gICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAnc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX2Z1dHVyZV9kaXNhYmxlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ2ludmFsaWQnXVwiXG4gICAgICBlcnJvck5hbWU9XCJmdXp6eUludmFsaWREYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfZnV6enlfZGF0ZV9pbnZhbGlkJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ21heERhdGUnXVwiXG4gICAgICBlcnJvck5hbWU9XCJmdXp6eU1heERhdGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX21heF9kYXRlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ21pbkRhdGUnXVwiXG4gICAgICBlcnJvck5hbWU9XCJmdXp6eU1pbkRhdGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX21pbl9kYXRlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ3llYXJSZXF1aXJlZCddXCJcbiAgICAgIGVycm9yTmFtZT1cImZ1enp5WWVhclJlcXVpcmVkXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICdza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfeWVhcl9yZXF1aXJlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUVtYWlsJ11cIlxuICAgICAgZXJyb3JOYW1lPVwiZW1haWxcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9lbWFpbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydza3lQaG9uZUZpZWxkJ11cIlxuICAgICAgZXJyb3JOYW1lPVwicGhvbmVcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9waG9uZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydza3lUaW1lJ11cIlxuICAgICAgZXJyb3JOYW1lPVwidGltZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIidza3l1eF9mb3JtX2Vycm9yX3RpbWUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cImVycm9yc1snc2t5VXJsJ11cIlxuICAgICAgZXJyb3JOYW1lPVwidXJsXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfdXJsJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9ycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRS9EOztHQUVHO0FBY0gsTUFBTSxPQUFPLHNCQUFzQjtJQWJuQztRQTBCRTs7O1dBR0c7UUFFSSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR04sZUFBVSxHQUFHLE1BQU0sQ0FBQztRQUdwQixhQUFRLEdBQUcsV0FBVyxDQUFDO1FBR3ZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0tBQ3pDOzhHQTVCWSxzQkFBc0I7a0dBQXRCLHNCQUFzQixnSkFpQmIscUJBQXFCLDRLQ2hEM0MseXBHQXdHQSxpSERsRkksWUFBWSxrSUFDWixXQUFXLCtCQUNYLHFCQUFxQiw4RkFDckIsdUJBQXVCOzsyRkFNZCxzQkFBc0I7a0JBYmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLHVCQUF1QjtxQkFDeEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBT3hDLE1BQU07c0JBRFosS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFJeEIsVUFBVTtzQkFENUIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSVosUUFBUTtzQkFEMUIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBSVYsWUFBWTtzQkFEOUIsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1mb3Jtcy1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1mb3JtLWVycm9ycycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yQ29tcG9uZW50LFxuICAgIFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVycm9ycy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rm9ybUVycm9yc0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBlcnJvcnMgZnJvbSB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIElucHV0IGxhYmVsIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWxUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHNob3cgZXJyb3IgbWVzc2FnZXMsIHdoaWNoIG1pZ2h0IG9ubHkgYmUgdHJ1ZSBpZiB0aGVcbiAgICogZm9ybSBjb250cm9sIGlzIHRvdWNoZWQgb3IgZGlydHkuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICBwdWJsaWMgc2hvd0Vycm9ycyA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXRvbWljJylcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFBdG9taWMgPSAndHJ1ZSc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGl2ZScpXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhTGl2ZSA9ICdhc3NlcnRpdmUnO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJlbGV2YW50JylcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFSZWxldmFudCA9ICdhbGwnO1xufVxuIiwiPGRpdiAqbmdJZj1cImxhYmVsVGV4dCAmJiBzaG93RXJyb3JzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcnNcIj5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydyZXF1aXJlZCddXCJcbiAgICAgIGVycm9yTmFtZT1cInJlcXVpcmVkXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfcmVxdWlyZWQnIHwgc2t5TGliUmVzb3VyY2VzOiBsYWJlbFRleHRcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydtYXhsZW5ndGgnXSBhcyBtYXhMZW5ndGhFcnJvclwiXG4gICAgICBlcnJvck5hbWU9XCJtYXhsZW5ndGhcIlxuICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2Zvcm1fZXJyb3JfbWF4bGVuZ3RoJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBsYWJlbFRleHQgOiBtYXhMZW5ndGhFcnJvci5yZXF1aXJlZExlbmd0aFxuICAgICAgXCJcbiAgICAvPlxuXG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cImVycm9yc1snbWlubGVuZ3RoJ10gYXMgbWluTGVuZ3RoRXJyb3JcIlxuICAgICAgZXJyb3JOYW1lPVwibWlubGVuZ3RoXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICdza3l1eF9mb3JtX2Vycm9yX21pbmxlbmd0aCdcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogbGFiZWxUZXh0IDogbWluTGVuZ3RoRXJyb3IucmVxdWlyZWRMZW5ndGhcbiAgICAgIFwiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreURhdGUnXSAmJiBlcnJvcnNbJ3NreURhdGUnXVsnaW52YWxpZCddXCJcbiAgICAgIGVycm9yTmFtZT1cImludmFsaWREYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfZGF0ZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydza3lEYXRlJ10gJiYgZXJyb3JzWydza3lEYXRlJ11bJ21pbkRhdGUnXVwiXG4gICAgICBlcnJvck5hbWU9XCJtaW5EYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfZGF0ZV9taW4nIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cImVycm9yc1snc2t5RGF0ZSddICYmIGVycm9yc1snc2t5RGF0ZSddWydtYXhEYXRlJ11cIlxuICAgICAgZXJyb3JOYW1lPVwibWF4RGF0ZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIidza3l1eF9mb3JtX2Vycm9yX2RhdGVfbWF4JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ2Z1dHVyZURpc2FibGVkJ11cIlxuICAgICAgZXJyb3JOYW1lPVwiZnV6enlGdXR1cmVEaXNhYmxlZFwiXG4gICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAnc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX2Z1dHVyZV9kaXNhYmxlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ2ludmFsaWQnXVwiXG4gICAgICBlcnJvck5hbWU9XCJmdXp6eUludmFsaWREYXRlXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfZnV6enlfZGF0ZV9pbnZhbGlkJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ21heERhdGUnXVwiXG4gICAgICBlcnJvck5hbWU9XCJmdXp6eU1heERhdGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX21heF9kYXRlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ21pbkRhdGUnXVwiXG4gICAgICBlcnJvck5hbWU9XCJmdXp6eU1pbkRhdGVcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX21pbl9kYXRlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUZ1enp5RGF0ZSddICYmIGVycm9yc1snc2t5RnV6enlEYXRlJ11bJ3llYXJSZXF1aXJlZCddXCJcbiAgICAgIGVycm9yTmFtZT1cImZ1enp5WWVhclJlcXVpcmVkXCJcbiAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICdza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfeWVhcl9yZXF1aXJlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgLz5cblxuICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgKm5nSWY9XCJlcnJvcnNbJ3NreUVtYWlsJ11cIlxuICAgICAgZXJyb3JOYW1lPVwiZW1haWxcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9lbWFpbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydza3lQaG9uZUZpZWxkJ11cIlxuICAgICAgZXJyb3JOYW1lPVwicGhvbmVcIlxuICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9waG9uZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICpuZ0lmPVwiZXJyb3JzWydza3lUaW1lJ11cIlxuICAgICAgZXJyb3JOYW1lPVwidGltZVwiXG4gICAgICBbZXJyb3JUZXh0XT1cIidza3l1eF9mb3JtX2Vycm9yX3RpbWUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAqbmdJZj1cImVycm9yc1snc2t5VXJsJ11cIlxuICAgICAgZXJyb3JOYW1lPVwidXJsXCJcbiAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfdXJsJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgLz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250ZW50IC8+XG48L2Rpdj5cbiJdfQ==