kwikid-forms 0.3.5 → 0.3.7

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.
@@ -30,29 +30,24 @@ export class KwikIDFormsBuilderComponent {
30
30
  formKey: new FormControl("", [Validators.required]),
31
31
  formTitle: new FormControl("", [Validators.required])
32
32
  });
33
- const formDropConfig = getObjectFromLocalStorage("formDropConfig");
33
+ const formDropConfig = getObjectFromLocalStorage("builderFormConfig");
34
34
  if (isNotEmptyValue(formDropConfig)) {
35
35
  this.formKey = formDropConfig.key;
36
36
  this.formTitle = formDropConfig.title;
37
37
  const formFields = formDropConfig.fields.map((item) => {
38
38
  item.elementId = revisedRandId();
39
- item.elementCategory = this.elementsMapping.basic.includes(item.type)
39
+ item.elementCategory = this.elementsMapping.basic.includes(item.elementType)
40
40
  ? "basic"
41
- : this.elementsMapping.documents.includes(item.type)
41
+ : this.elementsMapping.documents.includes(item.elementType)
42
42
  ? "document"
43
43
  : "others";
44
- item.elementType =
45
- item.elementCategory === "basic" ||
46
- item.elementCategory === "document"
47
- ? item.type
48
- : String(`NA<>${item.type}`);
49
44
  item.isElement = true;
50
45
  const elementFiltered = item.elementCategory === "basic"
51
- ? this.basicElements.find((element) => element.elementType === item.type)
46
+ ? this.basicElements.find((element) => element.elementType === item.elementType)
52
47
  : item.elementCategory === "document"
53
- ? this.documentElements.find((element) => element.elementType === item.type)
48
+ ? this.documentElements.find((element) => element.elementType === item.elementType)
54
49
  : item.elementCategory === "others"
55
- ? this.otherElements.find((element) => element.elementType === item.type)
50
+ ? this.otherElements.find((element) => element.elementType === item.elementType)
56
51
  : undefined;
57
52
  item.elementTitle = isEmptyValue(elementFiltered)
58
53
  ? item.elementCategory + "::" + item.elementType
@@ -250,12 +245,24 @@ export class KwikIDFormsBuilderComponent {
250
245
  navigator.clipboard.writeText(JSON.stringify(this.finalJSONConfig));
251
246
  alert("JSON Config is copied");
252
247
  }
248
+ downloadJSON() {
249
+ const DATA = this.finalJSONConfig;
250
+ let type = "application/json";
251
+ const FILE_NAME = `${this.formKey}.json`;
252
+ let blob = new Blob([DATA], { type });
253
+ let url = window.URL.createObjectURL(blob);
254
+ let link = document.createElement("a");
255
+ link.download = FILE_NAME;
256
+ link.href = url;
257
+ link.click();
258
+ window.URL.revokeObjectURL(url);
259
+ }
253
260
  closeJSONPopup() {
254
261
  this.finalJSONConfig = undefined;
255
262
  }
256
263
  }
257
264
  /** @nocollapse */ KwikIDFormsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
258
- /** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<div class=\"container\">\n <div class=\"wrapper\">\n <div class=\"builder-header\">\n <div class=\"builder-title\">KwikID Form Builder</div>\n <form\n [formGroup]=\"builderFormGroup\"\n class=\"builder-form\"\n >\n <kwikui-input\n [label]=\"'Form Key'\"\n [id]=\"'form_key'\"\n [type]=\"'text'\"\n [formControlName]=\"'formKey'\"\n [formControl]=\"builderFormGroup.controls['formKey']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Key'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'upper'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-input\n [label]=\"'Form Title'\"\n [id]=\"'form_title'\"\n [type]=\"'text'\"\n [formControlName]=\"'formTitle'\"\n [formControl]=\"builderFormGroup.controls['formTitle']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Title'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'default'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-button\n [disabled]=\"!builderFormGroup.valid\"\n id=\"save_form_btn\"\n label=\"Save Form\"\n [showLoader]=\"false\"\n styles=\"\"\n class=\"\"\n type=\"button\"\n appearance=\"primary\"\n icon=\"\"\n iconRight=\"\"\n size=\"m\"\n (onClick)=\"handleOnClickSaveForms($event)\"\n ></kwikui-button>\n </form>\n </div>\n <div class=\"builder-body\">\n <div class=\"form-elements-drag-wrapper\">\n <div\n class=\"form-elements-drag\"\n cdkDropList\n [cdkDropListData]=\"formElementsDragList\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[formElementsList]\"\n (cdkDropListExited)=\"exit($event, 'other')\"\n (cdkDropListEntered)=\"enter($event, 'other')\"\n >\n <ng-container\n *ngFor=\"let formElementDragItem of formElementsDragList\"\n >\n <ng-container *ngIf=\"formElementDragItem.isElement\">\n <div\n class=\"form-element-drag\"\n cdkDrag\n [cdkDragData]=\"formElementDragItem\"\n >\n &#8942;&#8942;&nbsp;&nbsp;{{ formElementDragItem.elementTitle }}\n <!-- <ng-container *ngComponentOutlet=\"formElementDragItem.component\"></ng-container> -->\n </div>\n <div\n class=\"form-element-drag\"\n *cdkDragPlaceholder\n >\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"!formElementDragItem.isElement\">\n <div class=\"form-element-category\">\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div\n class=\"form-elements-drop-wrapper\"\n cdkDropList\n #formElementsList=\"cdkDropList\"\n [cdkDropListData]=\"formElementsDropList\"\n (cdkDropListDropped)=\"drop($event, '')\"\n [cdkDropListEnterPredicate]=\"isElementPredicate\"\n >\n <ng-container\n *ngFor=\"\n let formElementDropItem of formElementsDropList;\n let idx = index\n \"\n >\n <div\n class=\"form-drop-element\"\n cdkDrag\n >\n <div class=\"form-drop-element-grab-symbol\">&#8942;&#8942;</div>\n <div class=\"form-drop-element-main\">\n <div class=\"form-drop-element-header\">\n <div class=\"form-drop-element-title\">\n {{ formElementDropItem.elementTitle }}\n </div>\n <div class=\"form-drop-element-actions\">\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'edit-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'secondary'\"\n [icon]=\"'tuiIconEdit'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"editElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'remove-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'accent'\"\n [icon]=\"'tuiIconCloseLarge'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"removeElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <!-- <button\n (click)=\"editElement(idx, formElementDropItem)\"\n title=\"edit element properties\"\n >\n &#9998;\n </button>\n <button\n (click)=\"removeElement(idx, formElementDropItem)\"\n title=\"delete element\"\n >\n &#10006;\n </button> -->\n </div>\n </div>\n <div class=\"form-drop-element-body\"> </div>\n <div class=\"form-drop-element-footer\">\n <div class=\"form-drop-element-id\">\n {{ formElementDropItem.elementId }}\n </div>\n <div class=\"form-drop-element-category\">\n {{ formElementDropItem.elementCategory }}\n </div>\n <div class=\"form-drop-element-type\">\n {{ formElementDropItem.elementType }}\n </div>\n </div>\n <div\n class=\"example-custom-placeholder\"\n *cdkDragPlaceholder\n ></div>\n <!-- <ng-container *ngComponentOutlet=\"formElementDropItem.component\"> </ng-container> -->\n <!-- <ng-container *ngTemplateOutlet=\"formModal; context: formElementDropItem\"></ng-container> -->\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"element-property-editor-wrapper\">\n <element-config-editor\n [elementConfig]=\"elementEditorElementConfig\"\n (updateElement)=\"handleOnSaveUpdateElement($event)\"\n ></element-config-editor>\n </div>\n </div>\n <div class=\"builder-footer\"> &copy; Baiju Dodhia, KwikID </div>\n </div>\n <div\n class=\"modal\"\n *ngIf=\"finalJSONConfig\"\n >\n <div class=\"modal-box\">\n <div class=\"modal-content\">\n <div class=\"modal-heading\">\n <div class=\"modal-title\">{{ formTitle }}</div>\n <div class=\"modal-actions\">\n <div\n class=\"modal-code-copy\"\n (click)=\"copyToClipboard()\"\n >Copy to Clipboard</div\n >\n <div\n class=\"modal-close\"\n (click)=\"closeJSONPopup()\"\n >\n Close\n </div>\n </div>\n </div>\n <pre>\n <code>{{JSON.stringify(finalJSONConfig, undefined, 2)}}</code>\n </pre>\n </div>\n </div>\n </div>\n</div>\n", styles: ["kwikid-forms-builder fieldset{display:flex;flex-direction:column;justify-content:center;align-items:stretch;align-content:center;grid-gap:.5rem;gap:.5rem;padding:.5rem 1rem 1rem;box-shadow:0 0 10px -6px #000;border:0px solid gray;border-radius:1rem}kwikid-forms-builder table,kwikid-forms-builder tr,kwikid-forms-builder td{border:1px solid black;padding:.5rem 1rem}kwikui-table table{width:100%;box-shadow:0 0 10px -6px #000;border:0px solid gray;padding:0}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.container .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.container .wrapper .builder-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-header .builder-title{font-weight:bold;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;font-size:1rem}.container .wrapper .builder-header .builder-form{display:flex;align-content:center;justify-content:flex-end;flex:1;flex-direction:row;align-items:center;grid-gap:1rem;gap:1rem;width:100%}.container .wrapper .builder-header .builder-form kwikui-input{width:16rem}.container .wrapper .builder-body{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:stretch;grid-gap:1rem;gap:1rem;flex:1;padding:1rem;overflow:auto}.container .wrapper .builder-body>*{width:100%;border:1px solid lightgray;overflow:auto;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-body .form-elements-drag-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;padding:1rem;min-width:16rem;max-width:16rem}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;border-bottom:none}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-drag{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-radius:.5rem;padding:1rem;cursor:grab;box-shadow:0 2px 10px -6px #000;text-transform:capitalize}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-category{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-left:.25rem solid var(--tui-primary);padding:1rem;background:var(--tui-secondary)}.container .wrapper .builder-body .form-elements-drop-wrapper{padding:1rem;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;min-width:20rem;max-width:28rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder{display:flex;justify-content:flex-start;justify-items:start;align-items:center;padding:1rem;border-radius:1rem;box-shadow:0 2px 10px -6px #000;cursor:grab;flex-direction:row;position:relative;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main{flex:1;display:flex;justify-content:space-between;justify-items:start;align-items:stretch;flex-direction:column;width:100%;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button{width:1.6rem;height:1.6rem;transform:rotate(90deg)!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child{background-color:#dc143c!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child{background-color:gray!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-body,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-body{border-top:1px dashed lightgray;border-bottom:1px dashed lightgray}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-id,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-id{background:var(--tui-secondary);padding:0 .3rem;border-radius:1rem;color:var(--tui-primary)}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-category,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-category{background:var(--tui-primary);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-type,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-type{background:var(--tui-positive);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .element-property-editor-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;padding:1rem;min-width:20rem;grid-gap:1rem;gap:1rem}.container .wrapper .builder-footer{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:30px;border:1px solid lightgray;box-shadow:0 -2px 10px -6px #000;font-weight:bold}.cdk-drag-preview{width:-moz-fit-content;width:fit-content;height:auto;box-sizing:border-box;background-color:transparent;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;cursor:grabbing}.cdk-drag-placeholder{opacity:1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.modal{position:absolute;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;width:100%;height:100%}.modal-heading{padding:1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;grid-gap:1rem;gap:1rem;cursor:pointer}pre{float:left;justify-content:center;width:100%;height:100%;box-sizing:border-box;overflow:auto}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i1.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i2.ElementConfigEditor, selector: "element-config-editor", inputs: ["formKey", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
265
+ /** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<div class=\"container\">\n <div class=\"wrapper\">\n <div class=\"builder-header\">\n <div class=\"builder-title\">KwikID Form Builder</div>\n <form\n [formGroup]=\"builderFormGroup\"\n class=\"builder-form\"\n >\n <kwikui-input\n [label]=\"'Form Key'\"\n [id]=\"'form_key'\"\n [type]=\"'text'\"\n [formControlName]=\"'formKey'\"\n [formControl]=\"builderFormGroup.controls['formKey']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Key'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'upper'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-input\n [label]=\"'Form Title'\"\n [id]=\"'form_title'\"\n [type]=\"'text'\"\n [formControlName]=\"'formTitle'\"\n [formControl]=\"builderFormGroup.controls['formTitle']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Title'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'default'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-button\n [disabled]=\"!builderFormGroup.valid\"\n id=\"save_form_btn\"\n label=\"Save Form\"\n [showLoader]=\"false\"\n styles=\"\"\n class=\"\"\n type=\"button\"\n appearance=\"primary\"\n icon=\"\"\n iconRight=\"\"\n size=\"m\"\n (onClick)=\"handleOnClickSaveForms($event)\"\n ></kwikui-button>\n </form>\n </div>\n <div class=\"builder-body\">\n <div class=\"form-elements-drag-wrapper\">\n <div\n class=\"form-elements-drag\"\n cdkDropList\n [cdkDropListData]=\"formElementsDragList\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[formElementsList]\"\n (cdkDropListExited)=\"exit($event, 'other')\"\n (cdkDropListEntered)=\"enter($event, 'other')\"\n >\n <ng-container\n *ngFor=\"let formElementDragItem of formElementsDragList\"\n >\n <ng-container *ngIf=\"formElementDragItem.isElement\">\n <div\n class=\"form-element-drag\"\n cdkDrag\n [cdkDragData]=\"formElementDragItem\"\n >\n &#8942;&#8942;&nbsp;&nbsp;{{ formElementDragItem.elementTitle }}\n <!-- <ng-container *ngComponentOutlet=\"formElementDragItem.component\"></ng-container> -->\n </div>\n <div\n class=\"form-element-drag\"\n *cdkDragPlaceholder\n >\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"!formElementDragItem.isElement\">\n <div class=\"form-element-category\">\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div\n class=\"form-elements-drop-wrapper\"\n cdkDropList\n #formElementsList=\"cdkDropList\"\n [cdkDropListData]=\"formElementsDropList\"\n (cdkDropListDropped)=\"drop($event, '')\"\n [cdkDropListEnterPredicate]=\"isElementPredicate\"\n >\n <ng-container\n *ngFor=\"\n let formElementDropItem of formElementsDropList;\n let idx = index\n \"\n >\n <div\n class=\"form-drop-element\"\n cdkDrag\n >\n <div class=\"form-drop-element-grab-symbol\">&#8942;&#8942;</div>\n <div class=\"form-drop-element-main\">\n <div class=\"form-drop-element-header\">\n <div class=\"form-drop-element-title\">\n {{ formElementDropItem.elementTitle }}\n </div>\n <div class=\"form-drop-element-actions\">\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'edit-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'secondary'\"\n [icon]=\"'tuiIconEdit'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"editElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'remove-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'accent'\"\n [icon]=\"'tuiIconCloseLarge'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"removeElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <!-- <button\n (click)=\"editElement(idx, formElementDropItem)\"\n title=\"edit element properties\"\n >\n &#9998;\n </button>\n <button\n (click)=\"removeElement(idx, formElementDropItem)\"\n title=\"delete element\"\n >\n &#10006;\n </button> -->\n </div>\n </div>\n <div class=\"form-drop-element-body\"> </div>\n <div class=\"form-drop-element-footer\">\n <div class=\"form-drop-element-id\">\n {{ formElementDropItem.elementId }}\n </div>\n <div class=\"form-drop-element-category\">\n {{ formElementDropItem.elementCategory }}\n </div>\n <div class=\"form-drop-element-type\">\n {{ formElementDropItem.elementType }}\n </div>\n </div>\n <div\n class=\"example-custom-placeholder\"\n *cdkDragPlaceholder\n ></div>\n <!-- <ng-container *ngComponentOutlet=\"formElementDropItem.component\"> </ng-container> -->\n <!-- <ng-container *ngTemplateOutlet=\"formModal; context: formElementDropItem\"></ng-container> -->\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"element-property-editor-wrapper\">\n <element-config-editor\n [elementConfig]=\"elementEditorElementConfig\"\n (updateElement)=\"handleOnSaveUpdateElement($event)\"\n ></element-config-editor>\n </div>\n </div>\n <div class=\"builder-footer\"> &copy; Baiju Dodhia, KwikID </div>\n </div>\n <div\n class=\"modal\"\n *ngIf=\"finalJSONConfig\"\n >\n <div class=\"modal-box\">\n <div class=\"modal-content\">\n <div class=\"modal-heading\">\n <div class=\"modal-title\">{{ formTitle }}</div>\n <div class=\"modal-actions\">\n <div\n class=\"modal-code-download\"\n (click)=\"downloadJSON()\"\n >Download JSON</div\n >\n <div\n class=\"modal-code-copy\"\n (click)=\"copyToClipboard()\"\n >Copy to Clipboard</div\n >\n <div\n class=\"modal-close\"\n (click)=\"closeJSONPopup()\"\n >\n Close\n </div>\n </div>\n </div>\n <pre>\n <code>{{JSON.stringify(finalJSONConfig, undefined, 2)}}</code>\n </pre>\n </div>\n </div>\n </div>\n</div>\n", styles: ["kwikid-forms-builder fieldset{display:flex;flex-direction:column;justify-content:center;align-items:stretch;align-content:center;grid-gap:.5rem;gap:.5rem;padding:.5rem 1rem 1rem;box-shadow:0 0 10px -6px #000;border:0px solid gray;border-radius:1rem}kwikid-forms-builder table,kwikid-forms-builder tr,kwikid-forms-builder td{border:1px solid black;padding:.5rem 1rem}kwikui-table table{width:100%;box-shadow:0 0 10px -6px #000;border:0px solid gray;padding:0}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.container .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.container .wrapper .builder-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-header .builder-title{font-weight:bold;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;font-size:1rem}.container .wrapper .builder-header .builder-form{display:flex;align-content:center;justify-content:flex-end;flex:1;flex-direction:row;align-items:center;grid-gap:1rem;gap:1rem;width:100%}.container .wrapper .builder-header .builder-form kwikui-input{width:16rem}.container .wrapper .builder-body{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:stretch;grid-gap:1rem;gap:1rem;flex:1;padding:1rem;overflow:auto}.container .wrapper .builder-body>*{width:100%;border:1px solid lightgray;overflow:auto;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-body .form-elements-drag-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;padding:1rem;min-width:16rem;max-width:16rem}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;border-bottom:none}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-drag{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-radius:.5rem;padding:1rem;cursor:grab;box-shadow:0 2px 10px -6px #000;text-transform:capitalize}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-category{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-left:.25rem solid var(--tui-primary);padding:1rem;background:var(--tui-secondary)}.container .wrapper .builder-body .form-elements-drop-wrapper{padding:1rem;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;min-width:20rem;max-width:28rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder{display:flex;justify-content:flex-start;justify-items:start;align-items:center;padding:1rem;border-radius:1rem;box-shadow:0 2px 10px -6px #000;cursor:grab;flex-direction:row;position:relative;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main{flex:1;display:flex;justify-content:space-between;justify-items:start;align-items:stretch;flex-direction:column;width:100%;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button{width:1.6rem;height:1.6rem;transform:rotate(90deg)!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child{background-color:#dc143c!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child{background-color:gray!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-body,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-body{border-top:1px dashed lightgray;border-bottom:1px dashed lightgray}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-id,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-id{background:var(--tui-secondary);padding:0 .3rem;border-radius:1rem;color:var(--tui-primary)}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-category,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-category{background:var(--tui-primary);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-type,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-type{background:var(--tui-positive);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .element-property-editor-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;padding:1rem;min-width:20rem;grid-gap:1rem;gap:1rem}.container .wrapper .builder-footer{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:30px;border:1px solid lightgray;box-shadow:0 -2px 10px -6px #000;font-weight:bold}.cdk-drag-preview{width:-moz-fit-content;width:fit-content;height:auto;box-sizing:border-box;background-color:transparent;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;cursor:grabbing}.cdk-drag-placeholder{opacity:1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.modal{position:absolute;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;width:100%;height:100%}.modal-heading{padding:1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;grid-gap:1rem;gap:1rem;cursor:pointer}pre{float:left;justify-content:center;width:100%;height:100%;box-sizing:border-box;overflow:auto}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i1.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i2.ElementConfigEditor, selector: "element-config-editor", inputs: ["formKey", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
259
266
  __decorate([
260
267
  logMethod
261
268
  ], KwikIDFormsBuilderComponent.prototype, "handleGetKeyValue", null);
@@ -285,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
285
292
  styleUrls: ["shared/shared.scss", "./builder.component.scss"]
286
293
  }]
287
294
  }], ctorParameters: function () { return []; }, propDecorators: { handleGetKeyValue: [], drop: [], exit: [], enter: [], removeElement: [], editElement: [], handleOnSaveUpdateElement: [] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEM7UUFuQkEsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFjLFNBQVMsQ0FBQztRQUV4QyxrQkFBYSxHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hELGtCQUFhLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbEQscUJBQWdCLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7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SUFDbkMsQ0FBQzs7NElBelRVLDJCQUEyQjtnSUFBM0IsMkJBQTJCLDREQ3ZCeEMsd3ZQQXVOQTtBRGpHRTtJQURDLFNBQVM7b0VBUVQ7QUFHRDtJQURDLFNBQVM7dURBbUNUO0FBR0Q7SUFEQyxTQUFTO3VEQUNrQztBQUc1QztJQURDLFNBQVM7d0RBQ21DO0FBUTdDO0lBREMsU0FBUztnRUFJVDtBQUdEO0lBREMsU0FBUzs4REFHVDtBQUdEO0lBREMsU0FBUzs0RUFDOEI7NEZBcEs3QiwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUM7aUJBQzlEOzBFQWdHQyxpQkFBaUIsTUFVakIsSUFBSSxNQXFDSixJQUFJLE1BR0osS0FBSyxNQVFMLGFBQWEsTUFNYixXQUFXLE1BS1gseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2RrRHJhZyxcbiAgY29weUFycmF5SXRlbSxcbiAgbW92ZUl0ZW1JbkFycmF5XG59IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgZ2V0T2JqZWN0RnJvbUxvY2FsU3RvcmFnZSxcbiAgaXNFbXB0eVZhbHVlLFxuICBpc05vdEVtcHR5VmFsdWUsXG4gIGxvZ01ldGhvZCxcbiAgc2V0TWlzc2luZ0tleVZhbHVlXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgRWxlbWVudHMgfSBmcm9tIFwiLi9zaGFyZWQvZWxlbWVudHNcIjtcbmltcG9ydCB7IHJldmlzZWRSYW5kSWQgfSBmcm9tIFwiLi9zaGFyZWQvaGVscGVyc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLWJ1aWxkZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9idWlsZGVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wic2hhcmVkL3NoYXJlZC5zY3NzXCIsIFwiLi9idWlsZGVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm1LZXk6IHN0cmluZyA9IFwiXCI7XG4gIGZvcm1UaXRsZTogc3RyaW5nID0gXCJcIjtcbiAgYnVpbGRlckZvcm1Hcm91cDogRm9ybUdyb3VwID0gdW5kZWZpbmVkO1xuXG4gIGJhc2ljRWxlbWVudHM6IEFycmF5PGFueT4gPSBuZXcgRWxlbWVudHMoKS5iYXNpYztcbiAgZG9jdW1lbnRFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLmRvY3VtZW50cztcbiAgb3RoZXJFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLm90aGVycztcbiAgdGVtcGxhdGVFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLnRlbXBsYXRlcztcblxuICBlbGVtZW50c01hcHBpbmc6IGFueSA9IG5ldyBFbGVtZW50cygpLmVsZW1lbnRNYXBwaW5nO1xuXG4gIGZvcm1FbGVtZW50c0RyYWdMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gIGZvcm1FbGVtZW50c0Ryb3BMaXN0OiBBcnJheTxhbnk+ID0gW107XG5cbiAgZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWc6IGFueSA9IHVuZGVmaW5lZDtcblxuICBmaW5hbEpTT05Db25maWc6IGFueSA9IHVuZGVmaW5lZDtcbiAgSlNPTiA9IEpTT047XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5idWlsZGVyRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBmb3JtS2V5OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGZvcm1UaXRsZTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcm1Ecm9wQ29uZmlnID0gZ2V0T2JqZWN0RnJvbUxvY2FsU3RvcmFnZShcImZvcm1Ecm9wQ29uZmlnXCIpO1xuXG4gICAgaWYgKGlzTm90RW1wdHlWYWx1ZShmb3JtRHJvcENvbmZpZykpIHtcbiAgICAgIHRoaXMuZm9ybUtleSA9IGZvcm1Ecm9wQ29uZmlnLmtleTtcbiAgICAgIHRoaXMuZm9ybVRpdGxlID0gZm9ybURyb3BDb25maWcudGl0bGU7XG4gICAgICBjb25zdCBmb3JtRmllbGRzID0gZm9ybURyb3BDb25maWcuZmllbGRzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmVsZW1lbnRJZCA9IHJldmlzZWRSYW5kSWQoKTtcbiAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPSB0aGlzLmVsZW1lbnRzTWFwcGluZy5iYXNpYy5pbmNsdWRlcyhpdGVtLnR5cGUpXG4gICAgICAgICAgPyBcImJhc2ljXCJcbiAgICAgICAgICA6IHRoaXMuZWxlbWVudHNNYXBwaW5nLmRvY3VtZW50cy5pbmNsdWRlcyhpdGVtLnR5cGUpXG4gICAgICAgICAgPyBcImRvY3VtZW50XCJcbiAgICAgICAgICA6IFwib3RoZXJzXCI7XG4gICAgICAgIGl0ZW0uZWxlbWVudFR5cGUgPVxuICAgICAgICAgIGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImJhc2ljXCIgfHxcbiAgICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJkb2N1bWVudFwiXG4gICAgICAgICAgICA/IGl0ZW0udHlwZVxuICAgICAgICAgICAgOiBTdHJpbmcoYE5BPD4ke2l0ZW0udHlwZX1gKTtcbiAgICAgICAgaXRlbS5pc0VsZW1lbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCBlbGVtZW50RmlsdGVyZWQgPVxuICAgICAgICAgIGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImJhc2ljXCJcbiAgICAgICAgICAgID8gdGhpcy5iYXNpY0VsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IGl0ZW0udHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImRvY3VtZW50XCJcbiAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudEVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IGl0ZW0udHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcIm90aGVyc1wiXG4gICAgICAgICAgICA/IHRoaXMub3RoZXJFbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LmVsZW1lbnRUeXBlID09PSBpdGVtLnR5cGVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGl0ZW0uZWxlbWVudFRpdGxlID0gaXNFbXB0eVZhbHVlKGVsZW1lbnRGaWx0ZXJlZClcbiAgICAgICAgICA/IGl0ZW0uZWxlbWVudENhdGVnb3J5ICsgXCI6OlwiICsgaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgIDogZWxlbWVudEZpbHRlcmVkLmVsZW1lbnRUaXRsZTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0ID0gZm9ybUZpZWxkcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0ID0gW1xuICAgICAgeyBpc0VsZW1lbnQ6IGZhbHNlLCBlbGVtZW50VGl0bGU6IFwiQmFzaWMgRWxlbWVudHNcIiB9LFxuICAgICAgLi4udGhpcy5iYXNpY0VsZW1lbnRzLFxuICAgICAgeyBpc0VsZW1lbnQ6IGZhbHNlLCBlbGVtZW50VGl0bGU6IFwiRG9jdW1lbnQgRWxlbWVudHNcIiB9LFxuICAgICAgLi4udGhpcy5kb2N1bWVudEVsZW1lbnRzLFxuICAgICAgeyBpc0VsZW1lbnQ6IGZhbHNlLCBlbGVtZW50VGl0bGU6IFwiT3RoZXIgRWxlbWVudHNcIiB9LFxuICAgICAgLi4udGhpcy5vdGhlckVsZW1lbnRzXG4gICAgXTtcblxuICAgIGZvciAobGV0IGZvcm1FbGVtZW50c0RyYWdJdGVtIG9mIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QpIHtcbiAgICAgIGZvcm1FbGVtZW50c0RyYWdJdGVtLmVsZW1lbnRJZCA9IHJldmlzZWRSYW5kSWQoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkNoYW5nZShcbiAgICBldmVudDogeyB0YXJnZXQ6IHsgdmFsdWU6IGFueSB9IH0sXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBrZXk6IHN0cmluZyB8IG51bWJlcixcbiAgICBpZHg6IGFueVxuICApIHtcbiAgICBjb25zdCBfdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICAvLyBET00gRXZlbnQgSGFuZGxlcnNcbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVHZXRLZXlWYWx1ZShlOiBhbnkpIHtcbiAgICB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAucGF0Y2hWYWx1ZShcbiAgICAgIHtcbiAgICAgICAgW2Uua2V5XTogZS52YWx1ZVxuICAgICAgfSxcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZHJvcChldmVudDogYW55LCBlbGVtZW50Q2F0ZWdvcnk6IHN0cmluZykge1xuICAgIC8vIGxldCBpdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciAhPT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImNvcHlpbmdcIik7XG4gICAgICBpZiAoZXZlbnQuaXRlbS5kYXRhLmlzRWxlbWVudCkge1xuICAgICAgICAvLyBDbG9uZSB0aGUgaXRlbSB0aGF0IHdhcyBkcm9wcGVkLlxuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUluZGV4ID0gdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdC5maW5kSW5kZXgoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5lbGVtZW50SWQgPT09IGV2ZW50Lml0ZW0uZGF0YS5lbGVtZW50SWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvcHlBcnJheUl0ZW0oXG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCxcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0LFxuICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXgsXG4gICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0Lm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtLmVsZW1lbnRJZCA9IHJldmlzZWRSYW5kSWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJtb3ZpbmdcIik7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBleGl0KGV2ZW50OiBhbnksIGVsZW1lbnRDYXRlZ29yeTogc3RyaW5nKSB7fVxuXG4gIEBsb2dNZXRob2RcbiAgZW50ZXIoZXZlbnQ6IGFueSwgZWxlbWVudENhdGVnb3J5OiBzdHJpbmcpIHt9XG5cbiAgLyoqIFByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IG9ubHkgYWxsb3dzIGlzRWxlbWVudDogdHJ1ZSBpdGVtcyB0byBiZSBkcm9wcGVkIGludG8gYSBsaXN0LiAqL1xuICBpc0VsZW1lbnRQcmVkaWNhdGUoaXRlbTogQ2RrRHJhZzxhbnk+KSB7XG4gICAgcmV0dXJuIGl0ZW0uZGF0YS5pc0VsZW1lbnQ7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHJlbW92ZUVsZW1lbnQoaWR4OiBudW1iZXIsIGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0LnNwbGljZShpZHgsIDEpO1xuICAgIHRoaXMuZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWcgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGVkaXRFbGVtZW50KGlkeDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICB0aGlzLmVsZW1lbnRFZGl0b3JFbGVtZW50Q29uZmlnID0gaXRlbTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TYXZlVXBkYXRlRWxlbWVudChldmVudDogYW55KSB7fVxuXG4gIGhhbmRsZU9uQ2xpY2tTYXZlRm9ybXMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodGhpcy5idWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1LZXkudmFsdWUpKSB7XG4gICAgICB3aW5kb3cuYWxlcnQoXCJQbGVhc2UgcHJvdmlkZSBGb3JtIEtleVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtS2V5ID0gdGhpcy5idWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1LZXkudmFsdWU7XG4gICAgICB0aGlzLmZvcm1LZXkgPSB0aGlzLmZvcm1LZXkucmVwbGFjZSgvXFxzL2csIFwiX1wiKS50b0xvY2FsZVVwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmIChpc0VtcHR5VmFsdWUodGhpcy5idWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1UaXRsZS52YWx1ZSkpIHtcbiAgICAgIHdpbmRvdy5hbGVydChcIlBsZWFzZSBwcm92aWRlIEZvcm0gVGl0bGVcIik7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybVRpdGxlID0gdGhpcy5idWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1UaXRsZS52YWx1ZTtcbiAgICB9XG5cbiAgICBsZXQgZmluYWxGaWVsZHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QpKTtcbiAgICBmaW5hbEZpZWxkcyA9IGZpbmFsRmllbGRzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbSA9IHNldE1pc3NpbmdLZXlWYWx1ZShpdGVtLCBcInR5cGVcIiwgaXRlbS5lbGVtZW50VHlwZSk7XG5cbiAgICAgIGlmIChpdGVtLmVsZW1lbnRUeXBlLnN0YXJ0c1dpdGgoXCJOQTw+XCIsIDApKSB7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRJZDtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFR5cGU7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUaXRsZTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudENhdGVnb3J5O1xuICAgICAgICBkZWxldGUgaXRlbS5pc0VsZW1lbnQ7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9XG4gICAgICBkZWxldGUgaXRlbS5lbGVtZW50SWQ7XG4gICAgICBkZWxldGUgaXRlbS5lbGVtZW50VHlwZTtcbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUaXRsZTtcbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRDYXRlZ29yeTtcbiAgICAgIGRlbGV0ZSBpdGVtLmlzRWxlbWVudDtcblxuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGl0ZW0sIFwiZGVmYXVsdFwiKSkge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoaXRlbS5kZWZhdWx0LCBcInZhbHVlXCIpKSB7XG4gICAgICAgICAgaWYgKGl0ZW0uZGVmYXVsdC52YWx1ZSkge1xuICAgICAgICAgICAgaXRlbS5kZWZhdWx0ID0ge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogU3RyaW5nKGAkLiR7dGhpcy5mb3JtS2V5fS4ke2l0ZW0ua2V5fWApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGlzX3ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyczogW1wiT05fSU5JVFwiXSxcbiAgICAgICAgICAgICAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJWQUxVRV9DSEVDS1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkFMTF9GT1JNU19EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAkLiR7dGhpcy5mb3JtS2V5fS4ke2l0ZW0ua2V5fWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHsga2V5OiBcIklTX05PVF9FTVBUWVwiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJTRVRfRklFTERfREVGQVVMVF9WQUxVRVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkS2V5OiBTdHJpbmcoYCR7aXRlbS5rZXl9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiQUxMX0ZPUk1TX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbS5kZWZhdWx0ID0ge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICBzb3VyY2VzOiBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgICBjb25zdCBmaW5hbEZvcm1Db25maWcgPSB7XG4gICAgICBrZXk6IHRoaXMuZm9ybUtleSxcbiAgICAgIHRpdGxlOiB0aGlzLmZvcm1UaXRsZSxcbiAgICAgIGZpZWxkczogZmluYWxGaWVsZHNcbiAgICB9O1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJyZW5kZXJlckZvcm1Db25maWdcIiwgSlNPTi5zdHJpbmdpZnkoZmluYWxGb3JtQ29uZmlnKSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBcImJ1aWxkZXJGb3JtQ29uZmlnXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGtleTogdGhpcy5mb3JtS2V5LFxuICAgICAgICB0aXRsZTogdGhpcy5mb3JtVGl0bGUsXG4gICAgICAgIGZpZWxkczogdGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5maW5hbEpTT05Db25maWcgPSBmaW5hbEZvcm1Db25maWc7XG4gICAgY29uc29sZS5sb2coZmluYWxGb3JtQ29uZmlnKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0KTtcbiAgfVxuXG4gIGNvcHlUb0NsaXBib2FyZCgpIHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChKU09OLnN0cmluZ2lmeSh0aGlzLmZpbmFsSlNPTkNvbmZpZykpO1xuICAgIGFsZXJ0KFwiSlNPTiBDb25maWcgaXMgY29waWVkXCIpO1xuICB9XG5cbiAgY2xvc2VKU09OUG9wdXAoKSB7XG4gICAgdGhpcy5maW5hbEpTT05Db25maWcgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLXRpdGxlXCI+S3dpa0lEIEZvcm0gQnVpbGRlcjwvZGl2PlxuICAgICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJidWlsZGVyRm9ybUdyb3VwXCJcbiAgICAgICAgY2xhc3M9XCJidWlsZGVyLWZvcm1cIlxuICAgICAgPlxuICAgICAgICA8a3dpa3VpLWlucHV0XG4gICAgICAgICAgW2xhYmVsXT1cIidGb3JtIEtleSdcIlxuICAgICAgICAgIFtpZF09XCInZm9ybV9rZXknXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1LZXknXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiYnVpbGRlckZvcm1Hcm91cC5jb250cm9sc1snZm9ybUtleSddXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIGEgRm9ybSBLZXknXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCIndXBwZXInXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZUdldEtleVZhbHVlKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICBbbGFiZWxdPVwiJ0Zvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbaWRdPVwiJ2Zvcm1fdGl0bGUnXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1UaXRsZSdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJidWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzWydmb3JtVGl0bGUnXVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciBhIEZvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlR2V0S2V5VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWJ1aWxkZXJGb3JtR3JvdXAudmFsaWRcIlxuICAgICAgICAgIGlkPVwic2F2ZV9mb3JtX2J0blwiXG4gICAgICAgICAgbGFiZWw9XCJTYXZlIEZvcm1cIlxuICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NhdmVGb3JtcygkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Zvcm1FbGVtZW50c0xpc3RdXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdCgkZXZlbnQsICdvdGhlcicpXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyKCRldmVudCwgJ290aGVyJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZvcm1FbGVtZW50RHJhZ0l0ZW0gb2YgZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRWxlbWVudERyYWdJdGVtLmlzRWxlbWVudFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJmb3JtRWxlbWVudERyYWdJdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICYjODk0MjsmIzg5NDI7Jm5ic3A7Jm5ic3A7e3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZm9ybUVsZW1lbnREcmFnSXRlbS5jb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9ybUVsZW1lbnREcmFnSXRlbS5pc0VsZW1lbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJhZ0l0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcm9wLXdyYXBwZXJcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjZm9ybUVsZW1lbnRzTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJmb3JtRWxlbWVudHNEcm9wTGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQsICcnKVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImlzRWxlbWVudFByZWRpY2F0ZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBmb3JtRWxlbWVudERyb3BJdGVtIG9mIGZvcm1FbGVtZW50c0Ryb3BMaXN0O1xuICAgICAgICAgICAgbGV0IGlkeCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnRcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1ncmFiLXN5bWJvbFwiPiYjODk0MjsmIzg5NDI7PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtbWFpblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInZWRpdC1lbGVtZW50J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIid0dWlJY29uRWRpdCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZWRpdEVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmVtb3ZlLWVsZW1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25DbG9zZUxhcmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIncydcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0RWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJlZGl0IGVsZW1lbnQgcHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICYjOTk5ODtcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJkZWxldGUgZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICYjMTAwMDY7XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtYm9keVwiPiA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1pZFwiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcm9wSXRlbS5lbGVtZW50SWQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudENhdGVnb3J5IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudFR5cGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtY3VzdG9tLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAqY2RrRHJhZ1BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImZvcm1FbGVtZW50RHJvcEl0ZW0uY29tcG9uZW50XCI+IDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybU1vZGFsOyBjb250ZXh0OiBmb3JtRWxlbWVudERyb3BJdGVtXCI+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0eS1lZGl0b3Itd3JhcHBlclwiPlxuICAgICAgICA8ZWxlbWVudC1jb25maWctZWRpdG9yXG4gICAgICAgICAgW2VsZW1lbnRDb25maWddPVwiZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWdcIlxuICAgICAgICAgICh1cGRhdGVFbGVtZW50KT1cImhhbmRsZU9uU2F2ZVVwZGF0ZUVsZW1lbnQoJGV2ZW50KVwiXG4gICAgICAgID48L2VsZW1lbnQtY29uZmlnLWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLWZvb3RlclwiPiAmY29weTsgQmFpanUgRG9kaGlhLCBLd2lrSUQgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtb2RhbFwiXG4gICAgKm5nSWY9XCJmaW5hbEpTT05Db25maWdcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57eyBmb3JtVGl0bGUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsLWNvZGUtY29weVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoKVwiXG4gICAgICAgICAgICAgID5Db3B5IHRvIENsaXBib2FyZDwvZGl2XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibW9kYWwtY2xvc2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VKU09OUG9wdXAoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwcmU+XG4gICAgICAgIDxjb2RlPnt7SlNPTi5zdHJpbmdpZnkoZmluYWxKU09OQ29uZmlnLCB1bmRlZmluZWQsIDIpfX08L2NvZGU+XG4gICAgPC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEM7UUFuQkEsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFjLFNBQVMsQ0FBQztRQUV4QyxrQkFBYSxHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hELGtCQUFhLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbEQscUJBQWdCLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7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QUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDOzs0SUFsVVUsMkJBQTJCO2dJQUEzQiwyQkFBMkIsNERDdkJ4QywyNVBBNE5BO0FEM0dFO0lBREMsU0FBUztvRUFRVDtBQUdEO0lBREMsU0FBUzt1REFtQ1Q7QUFHRDtJQURDLFNBQVM7dURBQ2tDO0FBRzVDO0lBREMsU0FBUzt3REFDbUM7QUFRN0M7SUFEQyxTQUFTO2dFQUlUO0FBR0Q7SUFEQyxTQUFTOzhEQUdUO0FBR0Q7SUFEQyxTQUFTOzRFQUM4Qjs0RkEvSjdCLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsQ0FBQztpQkFDOUQ7MEVBMkZDLGlCQUFpQixNQVVqQixJQUFJLE1BcUNKLElBQUksTUFHSixLQUFLLE1BUUwsYUFBYSxNQU1iLFdBQVcsTUFLWCx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZGtEcmFnLFxuICBjb3B5QXJyYXlJdGVtLFxuICBtb3ZlSXRlbUluQXJyYXlcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlLFxuICBpc0VtcHR5VmFsdWUsXG4gIGlzTm90RW1wdHlWYWx1ZSxcbiAgbG9nTWV0aG9kLFxuICBzZXRNaXNzaW5nS2V5VmFsdWVcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBFbGVtZW50cyB9IGZyb20gXCIuL3NoYXJlZC9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmV2aXNlZFJhbmRJZCB9IGZyb20gXCIuL3NoYXJlZC9oZWxwZXJzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtYnVpbGRlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2J1aWxkZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJzaGFyZWQvc2hhcmVkLnNjc3NcIiwgXCIuL2J1aWxkZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybUtleTogc3RyaW5nID0gXCJcIjtcbiAgZm9ybVRpdGxlOiBzdHJpbmcgPSBcIlwiO1xuICBidWlsZGVyRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSB1bmRlZmluZWQ7XG5cbiAgYmFzaWNFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLmJhc2ljO1xuICBkb2N1bWVudEVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkuZG9jdW1lbnRzO1xuICBvdGhlckVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkub3RoZXJzO1xuICB0ZW1wbGF0ZUVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkudGVtcGxhdGVzO1xuXG4gIGVsZW1lbnRzTWFwcGluZzogYW55ID0gbmV3IEVsZW1lbnRzKCkuZWxlbWVudE1hcHBpbmc7XG5cbiAgZm9ybUVsZW1lbnRzRHJhZ0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgZm9ybUVsZW1lbnRzRHJvcExpc3Q6IEFycmF5PGFueT4gPSBbXTtcblxuICBlbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuXG4gIGZpbmFsSlNPTkNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuICBKU09OID0gSlNPTjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGZvcm1LZXk6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZm9ybVRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybURyb3BDb25maWcgPSBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlKFwiYnVpbGRlckZvcm1Db25maWdcIik7XG5cbiAgICBpZiAoaXNOb3RFbXB0eVZhbHVlKGZvcm1Ecm9wQ29uZmlnKSkge1xuICAgICAgdGhpcy5mb3JtS2V5ID0gZm9ybURyb3BDb25maWcua2V5O1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSBmb3JtRHJvcENvbmZpZy50aXRsZTtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBmb3JtRHJvcENvbmZpZy5maWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9IHRoaXMuZWxlbWVudHNNYXBwaW5nLmJhc2ljLmluY2x1ZGVzKGl0ZW0uZWxlbWVudFR5cGUpXG4gICAgICAgICAgPyBcImJhc2ljXCJcbiAgICAgICAgICA6IHRoaXMuZWxlbWVudHNNYXBwaW5nLmRvY3VtZW50cy5pbmNsdWRlcyhpdGVtLmVsZW1lbnRUeXBlKVxuICAgICAgICAgID8gXCJkb2N1bWVudFwiXG4gICAgICAgICAgOiBcIm90aGVyc1wiO1xuICAgICAgICBpdGVtLmlzRWxlbWVudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRGaWx0ZXJlZCA9XG4gICAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiYmFzaWNcIlxuICAgICAgICAgICAgPyB0aGlzLmJhc2ljRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImRvY3VtZW50XCJcbiAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudEVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IGl0ZW0uZWxlbWVudFR5cGVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJvdGhlcnNcIlxuICAgICAgICAgICAgPyB0aGlzLm90aGVyRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgaXRlbS5lbGVtZW50VGl0bGUgPSBpc0VtcHR5VmFsdWUoZWxlbWVudEZpbHRlcmVkKVxuICAgICAgICAgID8gaXRlbS5lbGVtZW50Q2F0ZWdvcnkgKyBcIjo6XCIgKyBpdGVtLmVsZW1lbnRUeXBlXG4gICAgICAgICAgOiBlbGVtZW50RmlsdGVyZWQuZWxlbWVudFRpdGxlO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QgPSBmb3JtRmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QgPSBbXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJCYXNpYyBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmJhc2ljRWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJEb2N1bWVudCBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmRvY3VtZW50RWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJPdGhlciBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLm90aGVyRWxlbWVudHNcbiAgICBdO1xuXG4gICAgZm9yIChsZXQgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0gb2YgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCkge1xuICAgICAgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQ2hhbmdlKFxuICAgIGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogYW55IH0gfSxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGlkeDogYW55XG4gICkge1xuICAgIGNvbnN0IF92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIC8vIERPTSBFdmVudCBIYW5kbGVyc1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZUdldEtleVZhbHVlKGU6IGFueSkge1xuICAgIHRoaXMuYnVpbGRlckZvcm1Hcm91cC5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICBbZS5rZXldOiBlLnZhbHVlXG4gICAgICB9LFxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICApO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBkcm9wKGV2ZW50OiBhbnksIGVsZW1lbnRDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgLy8gbGV0IGl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiY29weWluZ1wiKTtcbiAgICAgIGlmIChldmVudC5pdGVtLmRhdGEuaXNFbGVtZW50KSB7XG4gICAgICAgIC8vIENsb25lIHRoZSBpdGVtIHRoYXQgd2FzIGRyb3BwZWQuXG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtLmVsZW1lbnRJZCA9PT0gZXZlbnQuaXRlbS5kYXRhLmVsZW1lbnRJZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29weUFycmF5SXRlbShcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LFxuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QsXG4gICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCxcbiAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm1vdmluZ1wiKTtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGV4aXQoZXZlbnQ6IGFueSwgZWxlbWVudENhdGVnb3J5OiBzdHJpbmcpIHt9XG5cbiAgQGxvZ01ldGhvZFxuICBlbnRlcihldmVudDogYW55LCBlbGVtZW50Q2F0ZWdvcnk6IHN0cmluZykge31cblxuICAvKiogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgb25seSBhbGxvd3MgaXNFbGVtZW50OiB0cnVlIGl0ZW1zIHRvIGJlIGRyb3BwZWQgaW50byBhIGxpc3QuICovXG4gIGlzRWxlbWVudFByZWRpY2F0ZShpdGVtOiBDZGtEcmFnPGFueT4pIHtcbiAgICByZXR1cm4gaXRlbS5kYXRhLmlzRWxlbWVudDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcmVtb3ZlRWxlbWVudChpZHg6IG51bWJlciwgaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3Quc3BsaWNlKGlkeCwgMSk7XG4gICAgdGhpcy5lbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZWRpdEVsZW1lbnQoaWR4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHRoaXMuZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWcgPSBpdGVtO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblNhdmVVcGRhdGVFbGVtZW50KGV2ZW50OiBhbnkpIHt9XG5cbiAgaGFuZGxlT25DbGlja1NhdmVGb3JtcyhldmVudDogYW55KSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZSkpIHtcbiAgICAgIHdpbmRvdy5hbGVydChcIlBsZWFzZSBwcm92aWRlIEZvcm0gS2V5XCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1LZXkgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUtleSA9IHRoaXMuZm9ybUtleS5yZXBsYWNlKC9cXHMvZywgXCJfXCIpLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlKSkge1xuICAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHByb3ZpZGUgRm9ybSBUaXRsZVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCkpO1xuICAgIGZpbmFsRmllbGRzID0gZmluYWxGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpdGVtID0gc2V0TWlzc2luZ0tleVZhbHVlKGl0ZW0sIFwidHlwZVwiLCBpdGVtLmVsZW1lbnRUeXBlKTtcblxuICAgICAgaWYgKGl0ZW0uZWxlbWVudFR5cGUuc3RhcnRzV2l0aChcIk5BPD5cIiwgMCkpIHtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudElkO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50VHlwZTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50Q2F0ZWdvcnk7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmlzRWxlbWVudDtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRJZDtcbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUeXBlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudENhdGVnb3J5O1xuICAgICAgZGVsZXRlIGl0ZW0uaXNFbGVtZW50O1xuXG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoaXRlbSwgXCJkZWZhdWx0XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhpdGVtLmRlZmF1bHQsIFwidmFsdWVcIikpIHtcbiAgICAgICAgICBpZiAoaXRlbS5kZWZhdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkFMTF9GT1JNU19EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlZBTFVFX0NIRUNLXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiQUxMX0ZPUk1TX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogeyBrZXk6IFwiSVNfTk9UX0VNUFRZXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6IFN0cmluZyhgJHtpdGVtLmtleX1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJC4ke3RoaXMuZm9ybUtleX0uJHtpdGVtLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmFsRm9ybUNvbmZpZyA9IHtcbiAgICAgIGtleTogdGhpcy5mb3JtS2V5LFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybVRpdGxlLFxuICAgICAgZmllbGRzOiBmaW5hbEZpZWxkc1xuICAgIH07XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInJlbmRlcmVyRm9ybUNvbmZpZ1wiLCBKU09OLnN0cmluZ2lmeShmaW5hbEZvcm1Db25maWcpKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIFwiYnVpbGRlckZvcm1Db25maWdcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAga2V5OiB0aGlzLmZvcm1LZXksXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1UaXRsZSxcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbmFsSlNPTkNvbmZpZyA9IGZpbmFsRm9ybUNvbmZpZztcbiAgICBjb25zb2xlLmxvZyhmaW5hbEZvcm1Db25maWcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QpO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEpTT04uc3RyaW5naWZ5KHRoaXMuZmluYWxKU09OQ29uZmlnKSk7XG4gICAgYWxlcnQoXCJKU09OIENvbmZpZyBpcyBjb3BpZWRcIik7XG4gIH1cblxuICBkb3dubG9hZEpTT04oKSB7XG4gICAgY29uc3QgREFUQSA9IHRoaXMuZmluYWxKU09OQ29uZmlnO1xuICAgIGxldCB0eXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgY29uc3QgRklMRV9OQU1FID0gYCR7dGhpcy5mb3JtS2V5fS5qc29uYDtcblxuICAgIGxldCBibG9iID0gbmV3IEJsb2IoW0RBVEFdLCB7dHlwZX0pO1xuICAgIGxldCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgIGxpbmsuZG93bmxvYWQgPSBGSUxFX05BTUU7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG5cbiAgY2xvc2VKU09OUG9wdXAoKSB7XG4gICAgdGhpcy5maW5hbEpTT05Db25maWcgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLXRpdGxlXCI+S3dpa0lEIEZvcm0gQnVpbGRlcjwvZGl2PlxuICAgICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJidWlsZGVyRm9ybUdyb3VwXCJcbiAgICAgICAgY2xhc3M9XCJidWlsZGVyLWZvcm1cIlxuICAgICAgPlxuICAgICAgICA8a3dpa3VpLWlucHV0XG4gICAgICAgICAgW2xhYmVsXT1cIidGb3JtIEtleSdcIlxuICAgICAgICAgIFtpZF09XCInZm9ybV9rZXknXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1LZXknXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiYnVpbGRlckZvcm1Hcm91cC5jb250cm9sc1snZm9ybUtleSddXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIGEgRm9ybSBLZXknXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCIndXBwZXInXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZUdldEtleVZhbHVlKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICBbbGFiZWxdPVwiJ0Zvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbaWRdPVwiJ2Zvcm1fdGl0bGUnXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1UaXRsZSdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJidWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzWydmb3JtVGl0bGUnXVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciBhIEZvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlR2V0S2V5VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWJ1aWxkZXJGb3JtR3JvdXAudmFsaWRcIlxuICAgICAgICAgIGlkPVwic2F2ZV9mb3JtX2J0blwiXG4gICAgICAgICAgbGFiZWw9XCJTYXZlIEZvcm1cIlxuICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NhdmVGb3JtcygkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Zvcm1FbGVtZW50c0xpc3RdXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdCgkZXZlbnQsICdvdGhlcicpXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyKCRldmVudCwgJ290aGVyJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZvcm1FbGVtZW50RHJhZ0l0ZW0gb2YgZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRWxlbWVudERyYWdJdGVtLmlzRWxlbWVudFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJmb3JtRWxlbWVudERyYWdJdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICYjODk0MjsmIzg5NDI7Jm5ic3A7Jm5ic3A7e3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZm9ybUVsZW1lbnREcmFnSXRlbS5jb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9ybUVsZW1lbnREcmFnSXRlbS5pc0VsZW1lbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJhZ0l0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcm9wLXdyYXBwZXJcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjZm9ybUVsZW1lbnRzTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJmb3JtRWxlbWVudHNEcm9wTGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQsICcnKVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImlzRWxlbWVudFByZWRpY2F0ZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBmb3JtRWxlbWVudERyb3BJdGVtIG9mIGZvcm1FbGVtZW50c0Ryb3BMaXN0O1xuICAgICAgICAgICAgbGV0IGlkeCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnRcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1ncmFiLXN5bWJvbFwiPiYjODk0MjsmIzg5NDI7PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtbWFpblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInZWRpdC1lbGVtZW50J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIid0dWlJY29uRWRpdCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZWRpdEVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmVtb3ZlLWVsZW1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25DbG9zZUxhcmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIncydcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0RWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJlZGl0IGVsZW1lbnQgcHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICYjOTk5ODtcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJkZWxldGUgZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICYjMTAwMDY7XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtYm9keVwiPiA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1pZFwiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcm9wSXRlbS5lbGVtZW50SWQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudENhdGVnb3J5IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudFR5cGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtY3VzdG9tLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAqY2RrRHJhZ1BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImZvcm1FbGVtZW50RHJvcEl0ZW0uY29tcG9uZW50XCI+IDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybU1vZGFsOyBjb250ZXh0OiBmb3JtRWxlbWVudERyb3BJdGVtXCI+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0eS1lZGl0b3Itd3JhcHBlclwiPlxuICAgICAgICA8ZWxlbWVudC1jb25maWctZWRpdG9yXG4gICAgICAgICAgW2VsZW1lbnRDb25maWddPVwiZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWdcIlxuICAgICAgICAgICh1cGRhdGVFbGVtZW50KT1cImhhbmRsZU9uU2F2ZVVwZGF0ZUVsZW1lbnQoJGV2ZW50KVwiXG4gICAgICAgID48L2VsZW1lbnQtY29uZmlnLWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLWZvb3RlclwiPiAmY29weTsgQmFpanUgRG9kaGlhLCBLd2lrSUQgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtb2RhbFwiXG4gICAgKm5nSWY9XCJmaW5hbEpTT05Db25maWdcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57eyBmb3JtVGl0bGUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsLWNvZGUtZG93bmxvYWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRKU09OKClcIlxuICAgICAgICAgICAgICA+RG93bmxvYWQgSlNPTjwvZGl2XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibW9kYWwtY29kZS1jb3B5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgpXCJcbiAgICAgICAgICAgICAgPkNvcHkgdG8gQ2xpcGJvYXJkPC9kaXZcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1jbG9zZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUpTT05Qb3B1cCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHByZT5cbiAgICAgICAgICAgIDxjb2RlPnt7SlNPTi5zdHJpbmdpZnkoZmluYWxKU09OQ29uZmlnLCB1bmRlZmluZWQsIDIpfX08L2NvZGU+XG4gICAgICAgIDwvcHJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -19,6 +19,7 @@ import { OtherElementConfigEditor } from "./element-config-editor/editors/other-
19
19
  import { OtherHTMLConfigEditor } from "./element-config-editor/editors/other/html-config.editor.component";
20
20
  import { OtherTitleConfigEditor } from "./element-config-editor/editors/other/title-config.editor.component";
21
21
  import { ElementConfigEditor } from "./element-config-editor/element-config-editor.component";
22
+ import { BasicDropdownWithSearchConfigEditor } from "./element-config-editor/editors/basic/dropdown-with-search-config.editor.component";
22
23
  import * as i0 from "@angular/core";
23
24
  export class KwikIDFormBuilderModule {
24
25
  }
@@ -28,6 +29,7 @@ export class KwikIDFormBuilderModule {
28
29
  BasicElementConfigEditor,
29
30
  BasicTextConfigEditor,
30
31
  BasicRadioConfigEditor,
32
+ BasicDropdownWithSearchConfigEditor,
31
33
  BasicNumberConfigEditor,
32
34
  BasicCheckboxConfigEditor,
33
35
  BasicDateConfigEditor,
@@ -71,6 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
71
73
  BasicElementConfigEditor,
72
74
  BasicTextConfigEditor,
73
75
  BasicRadioConfigEditor,
76
+ BasicDropdownWithSearchConfigEditor,
74
77
  BasicNumberConfigEditor,
75
78
  BasicCheckboxConfigEditor,
76
79
  BasicDateConfigEditor,
@@ -100,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
100
103
  exports: [KwikIDFormsBuilderComponent]
101
104
  }]
102
105
  }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNyQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUNwSSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7QUFxQzlGLE1BQU0sT0FBTyx1QkFBdUI7O3dJQUF2Qix1QkFBdUI7eUlBQXZCLHVCQUF1QixpQkFqQ2hDLDJCQUEyQjtRQUMzQixtQkFBbUI7UUFDbkIsd0JBQXdCO1FBQ3hCLHFCQUFxQjtRQUNyQixzQkFBc0I7UUFDdEIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLDZCQUE2QjtRQUM3Qix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLHNCQUFzQixhQUd0QixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2Qsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLDBCQUEwQjtRQUMxQixpQkFBaUI7UUFDakIsb0JBQW9CLGFBR1osMkJBQTJCO3lJQUUxQix1QkFBdUIsYUFIdkIsRUFBRSxZQWJKO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLHVCQUF1QjtZQUN2QiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG9CQUFvQjtTQUNyQjs0RkFJVSx1QkFBdUI7a0JBbkNuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIEt3aWtVSUJ1dHRvbkljb25Nb2R1bGUsXG4gIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgS3dpa1VJSW5wdXRNb2R1bGUsXG4gIEt3aWtVSUlucHV0TnVtYmVyTW9kdWxlLFxuICBLd2lrVUlTZWxlY3RDb21ib2JveE1vZHVsZSxcbiAgS3dpa1VJVGFibGVNb2R1bGUsXG4gIEt3aWtVSVRleHRhcmVhTW9kdWxlXG59IGZyb20gXCJrd2lrdWlcIjtcbmltcG9ydCB7IEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCB9IGZyb20gXCIuL2J1aWxkZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0VsZW1lbnRDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9iYXNpYy1lbGVtZW50LWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0NoZWNrYm94Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvY2hlY2tib3gtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljRGF0ZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL2RhdGUtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljTnVtYmVyQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvbnVtYmVyLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY090cENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL290cC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNQaG9uZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3Bob25lLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY1JhZGlvQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvcmFkaW8tY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljVGV4dENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3RleHQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50RWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50LWVsZW1lbnQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50QWFkaGFhck51bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50L2FhZGhhYXItbnVtYmVyLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEb2N1bWVudFBhbk51bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50L3Bhbi1udW1iZXItY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVyRWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyLWVsZW1lbnQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVySFRNTENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyL2h0bWwtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVyVGl0bGVDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9vdGhlci90aXRsZS1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lbGVtZW50LWNvbmZpZy1lZGl0b3IuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCxcbiAgICBFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljRWxlbWVudENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1RleHRDb25maWdFZGl0b3IsXG4gICAgQmFzaWNSYWRpb0NvbmZpZ0VkaXRvcixcbiAgICBCYXNpY051bWJlckNvbmZpZ0VkaXRvcixcbiAgICBCYXNpY0NoZWNrYm94Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljRGF0ZUNvbmZpZ0VkaXRvcixcbiAgICBCYXNpY090cENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1Bob25lQ29uZmlnRWRpdG9yLFxuICAgIERvY3VtZW50RWxlbWVudENvbmZpZ0VkaXRvcixcbiAgICBEb2N1bWVudEFhZGhhYXJOdW1iZXJDb25maWdFZGl0b3IsXG4gICAgRG9jdW1lbnRQYW5OdW1iZXJDb25maWdFZGl0b3IsXG4gICAgT3RoZXJFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIE90aGVySFRNTENvbmZpZ0VkaXRvcixcbiAgICBPdGhlclRpdGxlQ29uZmlnRWRpdG9yXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBLd2lrVUlCdXR0b25JY29uTW9kdWxlLFxuICAgIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE51bWJlck1vZHVsZSxcbiAgICBLd2lrVUlTZWxlY3RDb21ib2JveE1vZHVsZSxcbiAgICBLd2lrVUlUYWJsZU1vZHVsZSxcbiAgICBLd2lrVUlUZXh0YXJlYU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBleHBvcnRzOiBbS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtQnVpbGRlck1vZHVsZSB7fVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNyQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUNwSSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQzs7QUFzQ3pJLE1BQU0sT0FBTyx1QkFBdUI7O3dJQUF2Qix1QkFBdUI7eUlBQXZCLHVCQUF1QixpQkFsQ2hDLDJCQUEyQjtRQUMzQixtQkFBbUI7UUFDbkIsd0JBQXdCO1FBQ3hCLHFCQUFxQjtRQUNyQixzQkFBc0I7UUFDdEIsbUNBQW1DO1FBQ25DLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsMkJBQTJCO1FBQzNCLGlDQUFpQztRQUNqQyw2QkFBNkI7UUFDN0Isd0JBQXdCO1FBQ3hCLHFCQUFxQjtRQUNyQixzQkFBc0IsYUFHdEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLHNCQUFzQjtRQUN0QixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2QiwwQkFBMEI7UUFDMUIsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQUdaLDJCQUEyQjt5SUFFMUIsdUJBQXVCLGFBSHZCLEVBQUUsWUFiSjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxzQkFBc0I7WUFDdEIsa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFDdkIsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQixvQkFBb0I7U0FDckI7NEZBSVUsdUJBQXVCO2tCQXBDbkMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG1DQUFtQzt3QkFDbkMsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIEt3aWtVSUJ1dHRvbkljb25Nb2R1bGUsXG4gIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgS3dpa1VJSW5wdXRNb2R1bGUsXG4gIEt3aWtVSUlucHV0TnVtYmVyTW9kdWxlLFxuICBLd2lrVUlTZWxlY3RDb21ib2JveE1vZHVsZSxcbiAgS3dpa1VJVGFibGVNb2R1bGUsXG4gIEt3aWtVSVRleHRhcmVhTW9kdWxlXG59IGZyb20gXCJrd2lrdWlcIjtcbmltcG9ydCB7IEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCB9IGZyb20gXCIuL2J1aWxkZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0VsZW1lbnRDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9iYXNpYy1lbGVtZW50LWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0NoZWNrYm94Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvY2hlY2tib3gtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljRGF0ZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL2RhdGUtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljTnVtYmVyQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvbnVtYmVyLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY090cENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL290cC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNQaG9uZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3Bob25lLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY1JhZGlvQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvcmFkaW8tY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljVGV4dENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3RleHQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50RWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50LWVsZW1lbnQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50QWFkaGFhck51bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50L2FhZGhhYXItbnVtYmVyLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEb2N1bWVudFBhbk51bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50L3Bhbi1udW1iZXItY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVyRWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyLWVsZW1lbnQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVySFRNTENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyL2h0bWwtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVyVGl0bGVDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9vdGhlci90aXRsZS1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lbGVtZW50LWNvbmZpZy1lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0Ryb3Bkb3duV2l0aFNlYXJjaENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL2Ryb3Bkb3duLXdpdGgtc2VhcmNoLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCxcbiAgICBFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljRWxlbWVudENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1RleHRDb25maWdFZGl0b3IsXG4gICAgQmFzaWNSYWRpb0NvbmZpZ0VkaXRvcixcbiAgICBCYXNpY0Ryb3Bkb3duV2l0aFNlYXJjaENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY051bWJlckNvbmZpZ0VkaXRvcixcbiAgICBCYXNpY0NoZWNrYm94Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljRGF0ZUNvbmZpZ0VkaXRvcixcbiAgICBCYXNpY090cENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1Bob25lQ29uZmlnRWRpdG9yLFxuICAgIERvY3VtZW50RWxlbWVudENvbmZpZ0VkaXRvcixcbiAgICBEb2N1bWVudEFhZGhhYXJOdW1iZXJDb25maWdFZGl0b3IsXG4gICAgRG9jdW1lbnRQYW5OdW1iZXJDb25maWdFZGl0b3IsXG4gICAgT3RoZXJFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIE90aGVySFRNTENvbmZpZ0VkaXRvcixcbiAgICBPdGhlclRpdGxlQ29uZmlnRWRpdG9yXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBLd2lrVUlCdXR0b25JY29uTW9kdWxlLFxuICAgIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE51bWJlck1vZHVsZSxcbiAgICBLd2lrVUlTZWxlY3RDb21ib2JveE1vZHVsZSxcbiAgICBLd2lrVUlUYWJsZU1vZHVsZSxcbiAgICBLd2lrVUlUZXh0YXJlYU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBleHBvcnRzOiBbS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtQnVpbGRlck1vZHVsZSB7fVxuIl19