@quadrel-enterprise-ui/framework 18.31.4 → 18.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2022/lib/comments/add-comment/add-comment-dialog.component.mjs +3 -4
  2. package/esm2022/lib/forms/checkbox-chips/checkbox-chips.component.mjs +3 -3
  3. package/esm2022/lib/forms/checkboxes/checkboxes.component.mjs +3 -3
  4. package/esm2022/lib/forms/datepicker/datepicker.component.mjs +3 -3
  5. package/esm2022/lib/forms/dropdown/dropdown.component.mjs +3 -3
  6. package/esm2022/lib/forms/file-upload/file-upload.component.mjs +3 -3
  7. package/esm2022/lib/forms/input/input.component.mjs +3 -3
  8. package/esm2022/lib/forms/multi-input/multi-input.component.mjs +3 -3
  9. package/esm2022/lib/forms/pin-code/pin-code.component.mjs +3 -3
  10. package/esm2022/lib/forms/radio-buttons/radio-buttons.component.mjs +3 -3
  11. package/esm2022/lib/forms/richtext/richtext.component.mjs +3 -3
  12. package/esm2022/lib/forms/switches/switches.component.mjs +3 -3
  13. package/esm2022/lib/forms/textarea/textarea.component.mjs +3 -3
  14. package/esm2022/lib/page/object-header/page-object-header.component.mjs +8 -4
  15. package/esm2022/lib/page/page.component.mjs +8 -2
  16. package/esm2022/lib/page/shared/services/form-group-manager.service.mjs +59 -14
  17. package/esm2022/lib/page/shared/services/page-submit-action.service.mjs +4 -2
  18. package/esm2022/lib/quick-edit/quick-edit.component.mjs +2 -2
  19. package/esm2022/lib/table/store/table.reducer.mjs +1 -1
  20. package/fesm2022/quadrel-enterprise-ui-framework.mjs +103 -47
  21. package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
  22. package/lib/comments/add-comment/add-comment-dialog.component.d.ts +0 -4
  23. package/lib/comments/add-comment/add-comment-dialog.component.d.ts.map +1 -1
  24. package/lib/page/object-header/page-object-header.component.d.ts.map +1 -1
  25. package/lib/page/page.component.d.ts +1 -0
  26. package/lib/page/page.component.d.ts.map +1 -1
  27. package/lib/page/shared/services/form-group-manager.service.d.ts +10 -0
  28. package/lib/page/shared/services/form-group-manager.service.d.ts.map +1 -1
  29. package/lib/page/shared/services/page-submit-action.service.d.ts +1 -0
  30. package/lib/page/shared/services/page-submit-action.service.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/esm2022/index.mjs +0 -74
  33. package/esm2022/lib/table/__mocks__/mock-secondary-actions.service.mjs +0 -26
  34. package/index.d.ts.map +0 -1
  35. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts +0 -14
  36. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts.map +0 -1
@@ -222,7 +222,7 @@ export class QdTextareaComponent {
222
222
  multi: true
223
223
  },
224
224
  QdFormsActionEmitterService
225
- ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-textarea-input\">\n <textarea\n [placeholder]=\"placeholder | translate\"\n [value]=\"valueForView\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [disabled]=\"disabled || readonly\"\n [attr.data-test-id]=\"testId + '-input'\"\n [rows]=\"rows\"\n ></textarea>\n <div class=\"qd-textarea-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n\n <span class=\"qd-textarea-character-counter\" *ngIf=\"hasMaxLength\">{{ numberOfCharacters }} / {{ maxLength }}</span>\n\n <qd-form-hint\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[valueForView]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[valueForView]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [":host{position:relative;display:block;overflow:hidden;width:100%;flex-direction:column;margin-bottom:.75rem}:host .qd-textarea-input{display:flex;align-items:center;padding:.5rem;border:.0625rem solid rgb(180,180,180);border-radius:0;margin-bottom:.375rem;background-color:#fff}:host .qd-textarea-input:hover,:host .qd-textarea-input:focus,:host .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(23,23,23)}:host .qd-textarea-input textarea{height:100%;flex-grow:1;border:none;background-color:#fff;color:#171717;font-size:.875rem;resize:none}:host .qd-textarea-input textarea:hover,:host .qd-textarea-input textarea:focus,:host .qd-textarea-input textarea:active{border:none;outline:none}:host .qd-textarea-input textarea::placeholder{color:#b4b4b4}:host .qd-textarea-input textarea:focus::placeholder{display:block;color:#b4b4b4}:host .qd-textarea-character-counter{padding-left:.125rem;color:#757575;float:right;font-size:.75rem;font-weight:300;line-height:.75rem}:host:after{display:block;height:0;clear:both;content:\".\";visibility:hidden}:host.qd-textarea-focus .qd-textarea-input{padding:.4375rem;border:.125rem solid rgb(0,102,153);border-radius:0;outline:none}:host.qd-textarea-readonly .qd-textarea-input-readonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--readonly-action .qd-textarea-input-readonly{color:#069;cursor:pointer}:host.qd-textarea--readonly-action .qd-textarea-input-readonly:hover,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:active,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:focus{text-decoration:underline}:host.qd-textarea-viewonly .qd-textarea-input-viewonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly{color:#069;cursor:pointer}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:hover,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:active,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:focus{text-decoration:underline}:host.qd-textarea-disabled .qd-textarea-input{border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled .qd-textarea-input textarea{background-color:#f5f5f5;color:#979797}:host.qd-textarea-disabled .qd-textarea-input textarea::placeholder{color:red;opacity:0}:host.qd-textarea-disabled .qd-textarea-input:hover,:host.qd-textarea-disabled .qd-textarea-input:focus,:host.qd-textarea-disabled .qd-textarea-input:active{padding:.5rem;border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled.qd-textarea-focus{border-color:#ff9b00}:host.qd-textarea-error .qd-textarea-input{padding:.5rem;border:.0625rem solid rgb(199,0,35)}:host.qd-textarea-error .qd-textarea-input .qd-error-icon{color:#c70023}:host.qd-textarea-error .qd-textarea-input:hover,:host.qd-textarea-error .qd-textarea-input:focus,:host.qd-textarea-error .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(199,0,35)}:host.qd-textarea-error.qd-textarea-focus{border-color:#c70023}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "component", type: i6.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i7.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i8.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i9.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
225
+ ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-textarea-input\">\n <textarea\n [placeholder]=\"placeholder | translate\"\n [value]=\"valueForView\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [disabled]=\"disabled || readonly\"\n [attr.data-test-id]=\"testId + '-input'\"\n [rows]=\"rows\"\n ></textarea>\n <div class=\"qd-textarea-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n\n <span class=\"qd-textarea-character-counter\" *ngIf=\"hasMaxLength\">{{ numberOfCharacters }} / {{ maxLength }}</span>\n\n <qd-form-hint\n *ngIf=\"hint || hasError\"\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[valueForView]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[valueForView]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [":host{position:relative;display:block;overflow:hidden;width:100%;flex-direction:column;margin-bottom:.75rem}:host .qd-textarea-input{display:flex;align-items:center;padding:.5rem;border:.0625rem solid rgb(180,180,180);border-radius:0;margin-bottom:.375rem;background-color:#fff}:host .qd-textarea-input:hover,:host .qd-textarea-input:focus,:host .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(23,23,23)}:host .qd-textarea-input textarea{height:100%;flex-grow:1;border:none;background-color:#fff;color:#171717;font-size:.875rem;resize:none}:host .qd-textarea-input textarea:hover,:host .qd-textarea-input textarea:focus,:host .qd-textarea-input textarea:active{border:none;outline:none}:host .qd-textarea-input textarea::placeholder{color:#b4b4b4}:host .qd-textarea-input textarea:focus::placeholder{display:block;color:#b4b4b4}:host .qd-textarea-character-counter{padding-left:.125rem;color:#757575;float:right;font-size:.75rem;font-weight:300;line-height:.75rem}:host:after{display:block;height:0;clear:both;content:\".\";visibility:hidden}:host.qd-textarea-focus .qd-textarea-input{padding:.4375rem;border:.125rem solid rgb(0,102,153);border-radius:0;outline:none}:host.qd-textarea-readonly .qd-textarea-input-readonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--readonly-action .qd-textarea-input-readonly{color:#069;cursor:pointer}:host.qd-textarea--readonly-action .qd-textarea-input-readonly:hover,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:active,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:focus{text-decoration:underline}:host.qd-textarea-viewonly .qd-textarea-input-viewonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly{color:#069;cursor:pointer}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:hover,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:active,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:focus{text-decoration:underline}:host.qd-textarea-disabled .qd-textarea-input{border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled .qd-textarea-input textarea{background-color:#f5f5f5;color:#979797}:host.qd-textarea-disabled .qd-textarea-input textarea::placeholder{color:red;opacity:0}:host.qd-textarea-disabled .qd-textarea-input:hover,:host.qd-textarea-disabled .qd-textarea-input:focus,:host.qd-textarea-disabled .qd-textarea-input:active{padding:.5rem;border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled.qd-textarea-focus{border-color:#ff9b00}:host.qd-textarea-error .qd-textarea-input{padding:.5rem;border:.0625rem solid rgb(199,0,35)}:host.qd-textarea-error .qd-textarea-input .qd-error-icon{color:#c70023}:host.qd-textarea-error .qd-textarea-input:hover,:host.qd-textarea-error .qd-textarea-input:focus,:host.qd-textarea-error .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(199,0,35)}:host.qd-textarea-error.qd-textarea-focus{border-color:#c70023}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "component", type: i6.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i7.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i8.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i9.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
226
226
  }
227
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdTextareaComponent, decorators: [{
228
228
  type: Component,
@@ -233,7 +233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
233
233
  multi: true
234
234
  },
235
235
  QdFormsActionEmitterService
236
- ], template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-textarea-input\">\n <textarea\n [placeholder]=\"placeholder | translate\"\n [value]=\"valueForView\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [disabled]=\"disabled || readonly\"\n [attr.data-test-id]=\"testId + '-input'\"\n [rows]=\"rows\"\n ></textarea>\n <div class=\"qd-textarea-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n\n <span class=\"qd-textarea-character-counter\" *ngIf=\"hasMaxLength\">{{ numberOfCharacters }} / {{ maxLength }}</span>\n\n <qd-form-hint\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[valueForView]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[valueForView]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [":host{position:relative;display:block;overflow:hidden;width:100%;flex-direction:column;margin-bottom:.75rem}:host .qd-textarea-input{display:flex;align-items:center;padding:.5rem;border:.0625rem solid rgb(180,180,180);border-radius:0;margin-bottom:.375rem;background-color:#fff}:host .qd-textarea-input:hover,:host .qd-textarea-input:focus,:host .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(23,23,23)}:host .qd-textarea-input textarea{height:100%;flex-grow:1;border:none;background-color:#fff;color:#171717;font-size:.875rem;resize:none}:host .qd-textarea-input textarea:hover,:host .qd-textarea-input textarea:focus,:host .qd-textarea-input textarea:active{border:none;outline:none}:host .qd-textarea-input textarea::placeholder{color:#b4b4b4}:host .qd-textarea-input textarea:focus::placeholder{display:block;color:#b4b4b4}:host .qd-textarea-character-counter{padding-left:.125rem;color:#757575;float:right;font-size:.75rem;font-weight:300;line-height:.75rem}:host:after{display:block;height:0;clear:both;content:\".\";visibility:hidden}:host.qd-textarea-focus .qd-textarea-input{padding:.4375rem;border:.125rem solid rgb(0,102,153);border-radius:0;outline:none}:host.qd-textarea-readonly .qd-textarea-input-readonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--readonly-action .qd-textarea-input-readonly{color:#069;cursor:pointer}:host.qd-textarea--readonly-action .qd-textarea-input-readonly:hover,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:active,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:focus{text-decoration:underline}:host.qd-textarea-viewonly .qd-textarea-input-viewonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly{color:#069;cursor:pointer}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:hover,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:active,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:focus{text-decoration:underline}:host.qd-textarea-disabled .qd-textarea-input{border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled .qd-textarea-input textarea{background-color:#f5f5f5;color:#979797}:host.qd-textarea-disabled .qd-textarea-input textarea::placeholder{color:red;opacity:0}:host.qd-textarea-disabled .qd-textarea-input:hover,:host.qd-textarea-disabled .qd-textarea-input:focus,:host.qd-textarea-disabled .qd-textarea-input:active{padding:.5rem;border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled.qd-textarea-focus{border-color:#ff9b00}:host.qd-textarea-error .qd-textarea-input{padding:.5rem;border:.0625rem solid rgb(199,0,35)}:host.qd-textarea-error .qd-textarea-input .qd-error-icon{color:#c70023}:host.qd-textarea-error .qd-textarea-input:hover,:host.qd-textarea-error .qd-textarea-input:focus,:host.qd-textarea-error .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(199,0,35)}:host.qd-textarea-error.qd-textarea-focus{border-color:#c70023}\n"] }]
236
+ ], template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-textarea-input\">\n <textarea\n [placeholder]=\"placeholder | translate\"\n [value]=\"valueForView\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [disabled]=\"disabled || readonly\"\n [attr.data-test-id]=\"testId + '-input'\"\n [rows]=\"rows\"\n ></textarea>\n <div class=\"qd-textarea-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n\n <span class=\"qd-textarea-character-counter\" *ngIf=\"hasMaxLength\">{{ numberOfCharacters }} / {{ maxLength }}</span>\n\n <qd-form-hint\n *ngIf=\"hint || hasError\"\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[valueForView]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[valueForView]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [":host{position:relative;display:block;overflow:hidden;width:100%;flex-direction:column;margin-bottom:.75rem}:host .qd-textarea-input{display:flex;align-items:center;padding:.5rem;border:.0625rem solid rgb(180,180,180);border-radius:0;margin-bottom:.375rem;background-color:#fff}:host .qd-textarea-input:hover,:host .qd-textarea-input:focus,:host .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(23,23,23)}:host .qd-textarea-input textarea{height:100%;flex-grow:1;border:none;background-color:#fff;color:#171717;font-size:.875rem;resize:none}:host .qd-textarea-input textarea:hover,:host .qd-textarea-input textarea:focus,:host .qd-textarea-input textarea:active{border:none;outline:none}:host .qd-textarea-input textarea::placeholder{color:#b4b4b4}:host .qd-textarea-input textarea:focus::placeholder{display:block;color:#b4b4b4}:host .qd-textarea-character-counter{padding-left:.125rem;color:#757575;float:right;font-size:.75rem;font-weight:300;line-height:.75rem}:host:after{display:block;height:0;clear:both;content:\".\";visibility:hidden}:host.qd-textarea-focus .qd-textarea-input{padding:.4375rem;border:.125rem solid rgb(0,102,153);border-radius:0;outline:none}:host.qd-textarea-readonly .qd-textarea-input-readonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--readonly-action .qd-textarea-input-readonly{color:#069;cursor:pointer}:host.qd-textarea--readonly-action .qd-textarea-input-readonly:hover,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:active,:host.qd-textarea--readonly-action .qd-textarea-input-readonly:focus{text-decoration:underline}:host.qd-textarea-viewonly .qd-textarea-input-viewonly{display:flex;min-height:2.25rem;align-items:center;margin-bottom:.375rem;color:#171717;font-size:.875rem}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly{color:#069;cursor:pointer}:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:hover,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:active,:host.qd-textarea--viewonly-action .qd-textarea-input-viewonly:focus{text-decoration:underline}:host.qd-textarea-disabled .qd-textarea-input{border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled .qd-textarea-input textarea{background-color:#f5f5f5;color:#979797}:host.qd-textarea-disabled .qd-textarea-input textarea::placeholder{color:red;opacity:0}:host.qd-textarea-disabled .qd-textarea-input:hover,:host.qd-textarea-disabled .qd-textarea-input:focus,:host.qd-textarea-disabled .qd-textarea-input:active{padding:.5rem;border:.0625rem solid rgb(151,151,151);background-color:#f5f5f5}:host.qd-textarea-disabled.qd-textarea-focus{border-color:#ff9b00}:host.qd-textarea-error .qd-textarea-input{padding:.5rem;border:.0625rem solid rgb(199,0,35)}:host.qd-textarea-error .qd-textarea-input .qd-error-icon{color:#c70023}:host.qd-textarea-error .qd-textarea-input:hover,:host.qd-textarea-error .qd-textarea-input:focus,:host.qd-textarea-error .qd-textarea-input:active{padding:.4375rem;border:.125rem solid rgb(199,0,35)}:host.qd-textarea-error.qd-textarea-focus{border-color:#c70023}\n"] }]
237
237
  }], ctorParameters: () => [{ type: i1.QdFormsActionEmitterService }, { type: i0.ChangeDetectorRef }, { type: i2.ControlContainer, decorators: [{
238
238
  type: Optional
239
239
  }, {
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
293
293
  type: HostBinding,
294
294
  args: ['class.qd-textarea-error']
295
295
  }] } });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxPQUFPLEVBQ1AsYUFBYSxFQUNiLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRWhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFjSCxNQUFNLE9BQU8sbUJBQW1CO0lBeUhYO0lBQ0E7SUFDdUI7SUFDWDtJQTNIL0I7O09BRUc7SUFDTSxlQUFlLENBQVM7SUFFakM7Ozs7O09BS0c7SUFDTSxLQUFLLENBQUM7SUFFZjs7Ozs7Ozs7OztPQVVHO0lBQ00sTUFBTSxDQUE4QjtJQUU3Qzs7O09BR0c7SUFDb0IsTUFBTSxHQUFHLFlBQVksQ0FBQztJQUU3Qzs7T0FFRztJQUNnQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUU1RDs7T0FFRztJQUNnQixTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVsRDs7T0FFRztJQUNnQixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV0RDs7T0FFRztJQUNnQixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUd0RCxRQUFRLENBQVU7SUFHbEIsUUFBUSxDQUFVO0lBSWxCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBSXZCLFFBQVEsQ0FBVTtJQUdsQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLE9BQU8sQ0FBdUM7SUFDOUMsV0FBVyxDQUFTO0lBQ3BCLEtBQUssQ0FBUztJQUNkLElBQUksQ0FBUztJQUNiLElBQUksQ0FBUztJQUNiLFlBQVksQ0FBQztJQUVMLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTNCLFNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDMUIsUUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVqQyxJQUVJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0UsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLFlBQVksYUFBYSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLGFBQWEsQ0FBQztZQUFFLE9BQU87UUFFckQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQ21CLG9CQUFpRCxFQUNqRCxpQkFBb0MsRUFDYixnQkFBa0MsRUFDN0Msa0JBQXdDO1FBSHBELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUFDakQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNiLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDN0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQjtJQUNwRSxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUV2RSw4RUFBOEU7Z0JBQzlFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLFlBQVksYUFBYSxDQUFDLEVBQUUsQ0FBQztvQkFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQywrRkFBK0YsQ0FBQyxDQUFDO2dCQUNoSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0dBQW9HLENBQ3JHLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFPO1FBQ2pCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQW9CO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7WUFBRSxPQUFPO1FBRXJDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBMEIsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUcsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVM7Z0JBQUUsT0FBTztZQUV0RCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQXpOVSxtQkFBbUI7MkZBQW5CLG1CQUFtQiw2MEJBVG5CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLG1CQUFtQjtnQkFDaEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELDJCQUEyQjtTQUM1QiwrQ0N6RUgsdzVDQWtEQTs7MkZEeUJhLG1CQUFtQjtrQkFiL0IsU0FBUzsrQkFDRSxhQUFhLGFBR1o7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxxQkFBcUI7NEJBQ2hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELDJCQUEyQjtxQkFDNUI7OzBCQTZIRSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxRQUFROzswQkFDNUIsUUFBUTt5Q0F4SEYsZUFBZTtzQkFBdkIsS0FBSztnQkFRRyxLQUFLO3NCQUFiLEtBQUs7Z0JBYUcsTUFBTTtzQkFBZCxLQUFLO2dCQU1pQixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBS0YsV0FBVztzQkFBN0IsTUFBTTtnQkFLWSxTQUFTO3NCQUEzQixNQUFNO2dCQUtZLGFBQWE7c0JBQS9CLE1BQU07Z0JBS1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFHUCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUl6QyxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUt6QyxVQUFVO3NCQUZULFdBQVc7dUJBQUMsMkJBQTJCOztzQkFDdkMsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBSTdDLGNBQWM7c0JBRGIsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBSWpELGNBQWM7c0JBRGIsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBS2pELFFBQVE7c0JBRlAsV0FBVzt1QkFBQyw0QkFBNEI7O3NCQUN4QyxXQUFXO3VCQUFDLHdCQUF3QjtnQkFJckMsT0FBTztzQkFETixXQUFXO3VCQUFDLHlCQUF5QjtnQkFpQmxDLFFBQVE7c0JBRlgsV0FBVzt1QkFBQyxxQkFBcUI7O3NCQUNqQyxXQUFXO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1zdHJpY3QtaWdub3JlXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBRZEZvcm1UZXh0QXJlYUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtQ29udHJvbCB9IGZyb20gJy4uL3JlYWN0aXZlLWZvcm1zL2NvbnRyb2xzL2Zvcm0tY29udHJvbCc7XG5pbXBvcnQge1xuICBnZXREaXNhYmxlZCxcbiAgZ2V0SGludCxcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldFBsYWNlaG9sZGVyLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFJvd3MsXG4gIGdldFZhbHVlLFxuICBnZXRWaWV3b25seSxcbiAgZ2V0Vmlld29ubHlBY3Rpb25cbn0gZnJvbSAnLi4vc2hhcmVkL2hlbHBlcnMvZm9ybXMuaGVscGVycyc7XG5pbXBvcnQgeyBoYXNWYWxpZGF0aW9uS2V5IH0gZnJvbSAnLi4vc2hhcmVkL2hlbHBlcnMvaGFzLXZhbGlkYXRvcnMuaGVscGVycyc7XG5pbXBvcnQgeyBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvYWN0aW9uLWVtaXR0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZEV2ZW50QnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZXZlbnQtYnJva2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSAqKlFkVGV4dGFyZWEqKiBpcyBhbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3IgYSB0ZXh0YXJlYSBpbnB1dC48YnIgLz5cbiAqIEl0IGlzIHVzZWQgdG8gY3JlYXRlIGEgdGV4dGFyZWEgaW5wdXQgZmllbGQgd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zLiBJdCBjYW4gYmUgdXNlZCB3aXRoIFF1YWRyZWwgUmVhY3RpdmUgRm9ybXMgb3Igd2l0aCBtb2RlbCBiaW5kaW5nLlxuICpcbiAqICMjIyMqKlVzYWdlIHdpdGggUmVhY3RpdmUgRm9ybXMqKlxuICpcbiAqIGBgYHRzXG4gKiBmb3JtID0gbmV3IFFkRm9ybUdyb3VwKHtcbiAqICAgdGV4dGFyZWE6IG5ldyBRZEZvcm1Db250cm9sKClcbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXRleHRhcmVhIFtmb3JtQ29udHJvbE5hbWVdPVwidGV4dGFyZWFcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtdGV4dGFyZWE+XG4gKiA8L2Zvcm0+XG4gKiBgYGBcbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIE1vZGVsIEJpbmRpbmcqKlxuICogYGBgdHNcbiAqIHZhbHVlO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8cWQtdGV4dGFyZWEgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtdGV4dGFyZWE+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWQtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBRZFRleHRhcmVhQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFFkVGV4dGFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggTW9kZWwgQmluZGluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHFkLXRleHRhcmVhIFsodmFsdWUpXT1cInZhbHVlXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXRleHRhcmVhPlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZvcm0gaXRlbVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgbGFiZWw6IHsgaTE4bjogJ1FkLUZvcm1zIFRleHQgQXJlYScsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAqICAgcGxhY2Vob2xkZXI6IHsgaTE4bjogJ1BsYWNlaG9sZGVyJyB9LFxuICAgKiAgIGhpbnQ6IHsgaTE4bjogJ0hlbHBlcnRleHQnIH0sXG4gICAqICAgcm93czogOFxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1UZXh0QXJlYUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3RleHQtaW5wdXQnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC4gUmV0dXJuIHZhbHVlIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2aWV3b25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrVmlld29ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXRleHRhcmVhLXJlYWRvbmx5JylcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC10ZXh0YXJlYS12aWV3b25seScpXG4gIHZpZXdvbmx5OiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1oaW50LWFjdGlvbicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtdGV4dGFyZWEtLWhpbnQtYWN0aW9uJylcbiAgaGludEFjdGlvbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtdGV4dGFyZWEtLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC10ZXh0YXJlYS0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXRleHRhcmVhLWRpc2FibGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC10ZXh0YXJlYS1mb2N1cycpXG4gIGlzRm9jdXMgPSBmYWxzZTtcblxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBRZEZvcm1Db250cm9sPGFueT47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpbnQ6IHN0cmluZztcbiAgcm93czogbnVtYmVyO1xuICB2YWx1ZUZvclZpZXc7XG5cbiAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1lcnJvcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtdGV4dGFyZWEtZXJyb3InKVxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC50b3VjaGVkICYmIHRoaXMuY29udHJvbC5pbnZhbGlkIDogZmFsc2U7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzVmFsaWRhdGlvbktleSh0aGlzLmNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mQ2hhcmFjdGVycygpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnZhbHVlRm9yVmlldyA9PSBudWxsKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZUZvclZpZXcpLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNNYXhMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgaWYgKCEodGhpcy5jb250cm9sIGluc3RhbmNlb2YgUWRGb3JtQ29udHJvbCkpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuaGFzTWF4TGVuZ3RoKCk7XG4gIH1cblxuICBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgaWYgKCEodGhpcy5jb250cm9sIGluc3RhbmNlb2YgUWRGb3JtQ29udHJvbCkpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZ2V0TWF4TGVuZ3RoT3JVbmRlZmluZWQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRW1pdHRlclNlcnZpY2U6IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lcikge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgLy8gVE9ETyByZW1vdmUgbG9naWMgZm9yIHN1cHBvcnQgb2YgYW5ndWxhciBGb3JtQ29udHJvbCB3aXRoIGFuZ3VsYXIgMTggdXBkYXRlXG4gICAgICAgIGlmICghKHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIFFkRm9ybUNvbnRyb2wpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdRRC1VSSB8IFFkVGV4dGFyZWFDb21wb25lbnQgLSBQbGVhc2UgdXNlIHRoZSBRZEZvcm1Db250cm9sIGluc3RlYWQgb2YgdGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdRRC1VSSB8IFFkVGV4dGFyZWFDb21wb25lbnQgLSBNaXNzaW5nIEZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgZnJvbSBob3N0IGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlRm9yVmlldyA9IHRoaXMudmFsdWUgfHwgZ2V0VmFsdWUodGhpcy5jb25maWcpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UuaGludEV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tIaW50LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UucmVhZG9ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrUmVhZG9ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS52aWV3b25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmluaXRPcE1vZGVTdWJzY3JpcHRpb24oKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUZvclZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy52YWx1ZUZvclZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoKCk7XG4gIH1cblxuICBoYW5kbGVGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXMgPSBmYWxzZTtcbiAgICB0aGlzLl9vblRvdWNoKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbCA9IGdldExhYmVsKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gZ2V0UGxhY2Vob2xkZXIodGhpcy5jb25maWcpO1xuICAgIHRoaXMuaGludCA9IGdldEhpbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMucm93cyA9IGdldFJvd3ModGhpcy5jb25maWcpO1xuICAgIHRoaXMucmVhZG9ubHkgPSBnZXRSZWFkb25seSh0aGlzLmNvbmZpZywgdGhpcy5yZWFkb25seSk7XG4gICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0aGlzLnZpZXdvbmx5KTtcbiAgICB0aGlzLmhpbnRBY3Rpb24gPSBnZXRIaW50QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHlBY3Rpb24gPSBnZXRWaWV3b25seUFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGdldERpc2FibGVkKHRoaXMuY29uZmlnKSB8fCAhIXRoaXMuY29udHJvbD8uZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRPcE1vZGVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50QnJva2VyU2VydmljZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLmNvbnN1bWU8eyBpc1ZpZXdvbmx5OiBib29sZWFuIH0+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJykuc3Vic2NyaWJlKHRvcGljID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcudmlld29ubHkgPT09ICdib29sZWFuJykgcmV0dXJuO1xuXG4gICAgICB0aGlzLnZpZXdvbmx5ID0gZ2V0Vmlld29ubHkodGhpcy5jb25maWcsIHRvcGljLnBheWxvYWQuaXNWaWV3b25seSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxxZC1mb3JtLWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFt2aWV3b25seV09XCJ2aWV3b25seVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiPlxuICA8ZGl2IGNsYXNzPVwicWQtdGV4dGFyZWEtaW5wdXRcIj5cbiAgICA8dGV4dGFyZWFcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVGb3JWaWV3XCJcbiAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cygpXCJcbiAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctaW5wdXQnXCJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgID48L3RleHRhcmVhPlxuICAgIDxkaXYgY2xhc3M9XCJxZC10ZXh0YXJlYS1zdWZmaXhcIj5cbiAgICAgIDxxZC1pY29uICpuZ0lmPVwiaGFzRXJyb3JcIiBjbGFzcz1cInFkLWVycm9yLWljb25cIiBpY29uPVwiZXhjbGFtYXRpb25DaXJjbGVTb2xpZFwiPjwvcWQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHNwYW4gY2xhc3M9XCJxZC10ZXh0YXJlYS1jaGFyYWN0ZXItY291bnRlclwiICpuZ0lmPVwiaGFzTWF4TGVuZ3RoXCI+e3sgbnVtYmVyT2ZDaGFyYWN0ZXJzIH19IC8ge3sgbWF4TGVuZ3RoIH19PC9zcGFuPlxuXG4gIDxxZC1mb3JtLWhpbnRcbiAgICBbaGludF09XCJoaW50XCJcbiAgICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgICBbaGFzRXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgIFtoaW50QWN0aW9uXT1cImhpbnRBY3Rpb25cIlxuICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgPjwvcWQtZm9ybS1oaW50PlxuPC9uZy1jb250YWluZXI+XG5cbjxxZC1mb3JtLXJlYWRvbmx5XG4gICpuZ0lmPVwicmVhZG9ubHlcIlxuICBbdmFsdWVzXT1cIlt2YWx1ZUZvclZpZXddXCJcbiAgW3JlYWRvbmx5QWN0aW9uXT1cInJlYWRvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1yZWFkb25seT5cblxuPHFkLWZvcm0tdmlld29ubHlcbiAgKm5nSWY9XCJ2aWV3b25seVwiXG4gIFt2YWx1ZXNdPVwiW3ZhbHVlRm9yVmlld11cIlxuICBbdmlld29ubHlBY3Rpb25dPVwidmlld29ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXZpZXdvbmx5PlxuIl19
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxPQUFPLEVBQ1AsYUFBYSxFQUNiLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRWhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFjSCxNQUFNLE9BQU8sbUJBQW1CO0lBeUhYO0lBQ0E7SUFDdUI7SUFD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O3NCQUNqQyxXQUFXO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1zdHJpY3QtaWdub3JlXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBRZEZvcm1UZXh0QXJlYUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtQ29udHJvbCB9IGZyb20gJy4uL3JlYWN0aXZlLWZvcm1zL2NvbnRyb2xzL2Zvcm0tY29udHJvbCc7XG5pbXBvcnQge1xuICBnZXREaXNhYmxlZCxcbiAgZ2V0SGludCxcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldFBsYWNlaG9sZGVyLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFJvd3MsXG4gIGdldFZhbHVlLFxuICBnZXRWaWV3b25seSxcbiAgZ2V0Vmlld29ubHlBY3Rpb25cbn0gZnJvbSAnLi4vc2hhcmVkL2hlbHBlcnMvZm9ybXMuaGVscGVycyc7XG5pbXBvcnQgeyBoYXNWYWxpZGF0aW9uS2V5IH0gZnJvbSAnLi4vc2hhcmVkL2hlbHBlcnMvaGFzLXZhbGlkYXRvcnMuaGVscGVycyc7XG5pbXBvcnQgeyBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvYWN0aW9uLWVtaXR0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZEV2ZW50QnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZXZlbnQtYnJva2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSAqKlFkVGV4dGFyZWEqKiBpcyBhbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3IgYSB0ZXh0YXJlYSBpbnB1dC48YnIgLz5cbiAqIEl0IGlzIHVzZWQgdG8gY3JlYXRlIGEgdGV4dGFyZWEgaW5wdXQgZmllbGQgd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zLiBJdCBjYW4gYmUgdXNlZCB3aXRoIFF1YWRyZWwgUmVhY3RpdmUgRm9ybXMgb3Igd2l0aCBtb2RlbCBiaW5kaW5nLlxuICpcbiAqICMjIyMqKlVzYWdlIHdpdGggUmVhY3RpdmUgRm9ybXMqKlxuICpcbiAqIGBgYHRzXG4gKiBmb3JtID0gbmV3IFFkRm9ybUdyb3VwKHtcbiAqICAgdGV4dGFyZWE6IG5ldyBRZEZvcm1Db250cm9sKClcbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXRleHRhcmVhIFtmb3JtQ29udHJvbE5hbWVdPVwidGV4dGFyZWFcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtdGV4dGFyZWE+XG4gKiA8L2Zvcm0+XG4gKiBgYGBcbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIE1vZGVsIEJpbmRpbmcqKlxuICogYGBgdHNcbiAqIHZhbHVlO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8cWQtdGV4dGFyZWEgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtdGV4dGFyZWE+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWQtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBRZFRleHRhcmVhQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFFkVGV4dGFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggTW9kZWwgQmluZGluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHFkLXRleHRhcmVhIFsodmFsdWUpXT1cInZhbHVlXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXRleHRhcmVhPlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZvcm0gaXRlbVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgbGFiZWw6IHsgaTE4bjogJ1FkLUZvcm1zIFRleHQgQXJlYScsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAqICAgcGxhY2Vob2xkZXI6IHsgaTE4bjogJ1BsYWNlaG9sZGVyJyB9LFxuICAgKiAgIGhpbnQ6IHsgaTE4bjogJ0hlbHBlcnRleHQnIH0sXG4gICAqICAgcm93czogOFxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1UZXh0QXJlYUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3RleHQtaW5wdXQnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC4gUmV0dXJuIHZhbHVlIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2aWV3b25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrVmlld29ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXRleHRhcmVhLXJlYWRvbmx5JylcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC10ZXh0YXJlYS12aWV3b25seScpXG4gIHZpZXdvbmx5OiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1oaW50LWFjdGlvbicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtdGV4dGFyZWEtLWhpbnQtYWN0aW9uJylcbiAgaGludEFjdGlvbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtdGV4dGFyZWEtLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC10ZXh0YXJlYS0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXRleHRhcmVhLWRpc2FibGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC10ZXh0YXJlYS1mb2N1cycpXG4gIGlzRm9jdXMgPSBmYWxzZTtcblxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBRZEZvcm1Db250cm9sPGFueT47XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpbnQ6IHN0cmluZztcbiAgcm93czogbnVtYmVyO1xuICB2YWx1ZUZvclZpZXc7XG5cbiAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1lcnJvcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtdGV4dGFyZWEtZXJyb3InKVxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC50b3VjaGVkICYmIHRoaXMuY29udHJvbC5pbnZhbGlkIDogZmFsc2U7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzVmFsaWRhdGlvbktleSh0aGlzLmNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mQ2hhcmFjdGVycygpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnZhbHVlRm9yVmlldyA9PSBudWxsKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZUZvclZpZXcpLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNNYXhMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgaWYgKCEodGhpcy5jb250cm9sIGluc3RhbmNlb2YgUWRGb3JtQ29udHJvbCkpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuaGFzTWF4TGVuZ3RoKCk7XG4gIH1cblxuICBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgaWYgKCEodGhpcy5jb250cm9sIGluc3RhbmNlb2YgUWRGb3JtQ29udHJvbCkpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZ2V0TWF4TGVuZ3RoT3JVbmRlZmluZWQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRW1pdHRlclNlcnZpY2U6IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lcikge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgLy8gVE9ETyByZW1vdmUgbG9naWMgZm9yIHN1cHBvcnQgb2YgYW5ndWxhciBGb3JtQ29udHJvbCB3aXRoIGFuZ3VsYXIgMTggdXBkYXRlXG4gICAgICAgIGlmICghKHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIFFkRm9ybUNvbnRyb2wpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdRRC1VSSB8IFFkVGV4dGFyZWFDb21wb25lbnQgLSBQbGVhc2UgdXNlIHRoZSBRZEZvcm1Db250cm9sIGluc3RlYWQgb2YgdGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdRRC1VSSB8IFFkVGV4dGFyZWFDb21wb25lbnQgLSBNaXNzaW5nIEZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgZnJvbSBob3N0IGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlRm9yVmlldyA9IHRoaXMudmFsdWUgfHwgZ2V0VmFsdWUodGhpcy5jb25maWcpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UuaGludEV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tIaW50LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UucmVhZG9ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrUmVhZG9ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS52aWV3b25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmluaXRPcE1vZGVTdWJzY3JpcHRpb24oKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUZvclZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy52YWx1ZUZvclZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoKCk7XG4gIH1cblxuICBoYW5kbGVGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXMgPSBmYWxzZTtcbiAgICB0aGlzLl9vblRvdWNoKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbCA9IGdldExhYmVsKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gZ2V0UGxhY2Vob2xkZXIodGhpcy5jb25maWcpO1xuICAgIHRoaXMuaGludCA9IGdldEhpbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMucm93cyA9IGdldFJvd3ModGhpcy5jb25maWcpO1xuICAgIHRoaXMucmVhZG9ubHkgPSBnZXRSZWFkb25seSh0aGlzLmNvbmZpZywgdGhpcy5yZWFkb25seSk7XG4gICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0aGlzLnZpZXdvbmx5KTtcbiAgICB0aGlzLmhpbnRBY3Rpb24gPSBnZXRIaW50QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHlBY3Rpb24gPSBnZXRWaWV3b25seUFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGdldERpc2FibGVkKHRoaXMuY29uZmlnKSB8fCAhIXRoaXMuY29udHJvbD8uZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRPcE1vZGVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50QnJva2VyU2VydmljZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLmNvbnN1bWU8eyBpc1ZpZXdvbmx5OiBib29sZWFuIH0+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJykuc3Vic2NyaWJlKHRvcGljID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcudmlld29ubHkgPT09ICdib29sZWFuJykgcmV0dXJuO1xuXG4gICAgICB0aGlzLnZpZXdvbmx5ID0gZ2V0Vmlld29ubHkodGhpcy5jb25maWcsIHRvcGljLnBheWxvYWQuaXNWaWV3b25seSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxxZC1mb3JtLWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFt2aWV3b25seV09XCJ2aWV3b25seVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiPlxuICA8ZGl2IGNsYXNzPVwicWQtdGV4dGFyZWEtaW5wdXRcIj5cbiAgICA8dGV4dGFyZWFcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVGb3JWaWV3XCJcbiAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cygpXCJcbiAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctaW5wdXQnXCJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgID48L3RleHRhcmVhPlxuICAgIDxkaXYgY2xhc3M9XCJxZC10ZXh0YXJlYS1zdWZmaXhcIj5cbiAgICAgIDxxZC1pY29uICpuZ0lmPVwiaGFzRXJyb3JcIiBjbGFzcz1cInFkLWVycm9yLWljb25cIiBpY29uPVwiZXhjbGFtYXRpb25DaXJjbGVTb2xpZFwiPjwvcWQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHNwYW4gY2xhc3M9XCJxZC10ZXh0YXJlYS1jaGFyYWN0ZXItY291bnRlclwiICpuZ0lmPVwiaGFzTWF4TGVuZ3RoXCI+e3sgbnVtYmVyT2ZDaGFyYWN0ZXJzIH19IC8ge3sgbWF4TGVuZ3RoIH19PC9zcGFuPlxuXG4gIDxxZC1mb3JtLWhpbnRcbiAgICAqbmdJZj1cImhpbnQgfHwgaGFzRXJyb3JcIlxuICAgIFtoaW50XT1cImhpbnRcIlxuICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICAgIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gICAgW2hpbnRBY3Rpb25dPVwiaGludEFjdGlvblwiXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICA+PC9xZC1mb3JtLWhpbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuPHFkLWZvcm0tcmVhZG9ubHlcbiAgKm5nSWY9XCJyZWFkb25seVwiXG4gIFt2YWx1ZXNdPVwiW3ZhbHVlRm9yVmlld11cIlxuICBbcmVhZG9ubHlBY3Rpb25dPVwicmVhZG9ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXJlYWRvbmx5PlxuXG48cWQtZm9ybS12aWV3b25seVxuICAqbmdJZj1cInZpZXdvbmx5XCJcbiAgW3ZhbHVlc109XCJbdmFsdWVGb3JWaWV3XVwiXG4gIFt2aWV3b25seUFjdGlvbl09XCJ2aWV3b25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tdmlld29ubHk+XG4iXX0=
@@ -186,14 +186,18 @@ export class QdPageObjectHeaderComponent {
186
186
  .$hasValuesChanged()
187
187
  .pipe(take(1))
188
188
  .subscribe(hasChanged => {
189
- if (hasChanged)
189
+ if (hasChanged) {
190
190
  this.openCancelDialog();
191
- else
191
+ }
192
+ else {
193
+ this.formGroupManagerService.cancelPendingAsyncValidation();
192
194
  this.pageStoreService.toggleViewonly(true);
195
+ }
193
196
  });
194
197
  }
195
198
  save() {
196
199
  const handleSuccess = () => {
200
+ this.formGroupManagerService.cancelPendingAsyncValidation();
197
201
  this.pageStoreService.toggleViewonly(true);
198
202
  this.formGroupManagerService.takeFormGroupsSnapshot();
199
203
  };
@@ -222,7 +226,7 @@ export class QdPageObjectHeaderComponent {
222
226
  setupResolverTrigger() {
223
227
  this.resolverTriggerService
224
228
  .shouldTriggerResolver(this.pageObjectResolver.config?.triggerOn ?? 'pathParamsChange')
225
- .pipe(takeUntil(this._destroyed$), filter(shouldTrigger => shouldTrigger), tap(() => this._isLoadingSubject.next(true)), switchMap(() => this.pageObjectResolver.resolve()), tap(objectData => this._pageObjectDataSubject.next(objectData)), tap(() => this._isLoadingSubject.next(false)))
229
+ .pipe(takeUntil(this._destroyed$), filter(shouldTrigger => shouldTrigger), tap(() => this._isLoadingSubject.next(true)), switchMap(() => this.pageObjectResolver.resolve()), tap(objectData => this._pageObjectDataSubject.next(objectData)), tap(() => this._isLoadingSubject.next(false)), tap(() => this.formGroupManagerService.takeFormGroupsSnapshot()))
226
230
  .subscribe();
227
231
  }
228
232
  initContexts() {
@@ -306,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
306
310
  type: HostListener,
307
311
  args: ['click']
308
312
  }] } });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQWdCbEksT0FBTyxFQUFFLDZCQUE2QixFQUF3QixNQUFNLCtCQUErQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFD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IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZywgUWRNZW51QnV0dG9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnV0dG9uL21vZGVsL2J1dHRvbi1jb25maWcnO1xuaW1wb3J0IHsgUWREaWFsb2dDb21wb25lbnQsIFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cvcGFnZS1jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSxcbiAgUWRQYWdlQ29uZmlnLFxuICBRZFBhZ2VDb25maWdDcmVhdGUsXG4gIFFkUGFnZUNvbmZpZ0N1c3RvbSxcbiAgUWRQYWdlQ29uZmlnSW5zcGVjdCxcbiAgUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgUWRQYWdlU2VsZWN0ZWRDb250ZXh0LFxuICBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0LFxuICBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0LFxuICBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWhlYWRlci1mYWNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sIFFkUGFnZU9iamVjdFJlc29sdmVyIH0gZnJvbSAnLi4vbW9kZWwvcGFnZS1vYmplY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWdyb3VwLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VsZWN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXNlbGVjdC1kaWFsb2cvY29udGV4dC1zZWxlY3QtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2Utb2JqZWN0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgJ1tzdHlsZS5ib3JkZXJCb3R0b21dJzogJ2JvcmRlckJvdHRvbVN0eWxlJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZU9iamVjdEhlYWRlckNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb25maWchOiBRZFBhZ2VDb25maWc8VD47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaGFzTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3BhZ2Utb2JqZWN0LWhlYWRlcic7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbi1kaWFsb2cnKVxuICBnZXQgaXNJbkRpYWxvZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ0NvbXBvbmVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgdG9nZ2xlRmFjZXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGFwdGl2ZU1vZGUgfHwgKHRoaXMuaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMCkgPj0gMikgcmV0dXJuO1xuXG4gICAgdGhpcy5mYWNldHNDb2xsYXBzZWQgPSAhdGhpcy5mYWNldHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgYWRhcHRpdmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgUWRQYWdlQ29uZmlnSW5zcGVjdCB8IFFkUGFnZUNvbmZpZ0N1c3RvbSkuYWRhcHRpdmVNb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFnZU9iamVjdERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPih7fSBhcyBUKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9jdXN0b21BY3Rpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UWRNZW51QnV0dG9uQ29uZmlnPih7IGFjdGlvbnM6IFtdIH0pO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwYWdlT2JqZWN0RGF0YSQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDQwMCkpO1xuICBjdXN0b21BY3Rpb25zJDogT2JzZXJ2YWJsZTxRZE1lbnVCdXR0b25Db25maWc+ID0gdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmFjZXRzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICBjb250ZXh0cyQhOiBPYnNlcnZhYmxlPFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICB2YWx1ZTogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnO1xuICAgICAgc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcbiAgICB9W11cbiAgPjtcblxuICBnZXQgYm9yZGVyQm90dG9tU3R5bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWdlVHlwZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlO1xuXG4gICAgcmV0dXJuIHBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnY3VzdG9tJyAmJiB0aGlzLmhhc05hdmlnYXRpb24pIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdvdmVydmlldycgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKVxuICAgICAgPyAnbm9uZSAhaW1wb3J0YW50J1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBzaG93RWRpdCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhdGhpcy5oaWRlRWRpdCkpO1xuICB9XG5cbiAgZ2V0IHNob3dEZWxldGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgISF0aGlzLmRlbGV0ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dBcmNoaXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5hcmNoaXZlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgc2hvd0NhbmNlbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLmNhbmNlbEJ1dHRvbiAmJiAhdGhpcy5pc0NyZWF0ZSkpO1xuICB9XG5cbiAgZ2V0IHNob3dTYXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiAhdiAmJiAhIXRoaXMuc2F2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IGhlYWRlckZhY2V0cygpOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNIZWFkZXJGYWNldHModGhpcy5jb25maWcpKSByZXR1cm4gdGhpcy5jb25maWcuaGVhZGVyRmFjZXRzO1xuICB9XG5cbiAgZ2V0IGlzSW5zcGVjdEFuZFZpZXdNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICBtYXAoaXNWaWV3ID0+IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgaXNWaWV3KVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNDcmVhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJztcbiAgfVxuXG4gIGdldCBpc092ZXJ2aWV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JztcbiAgfVxuXG4gIGdldCBpc0NvbnRleHRTZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSc7XG4gIH1cblxuICBnZXQgZWRpdEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snZWRpdCddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZWRpdDtcbiAgfVxuXG4gIGdldCBkZWxldGVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2RlbGV0ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZGVsZXRlO1xuICB9XG5cbiAgZ2V0IGFyY2hpdmVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2FyY2hpdmUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmFyY2hpdmU7XG4gIH1cblxuICBnZXQgY2FuY2VsQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydjYW5jZWwnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmNhbmNlbDtcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydzYXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlO1xuICB9XG5cbiAgZ2V0IGhpZGVFZGl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY29uZmlnLm9wZXJhdGlvbk1vZGUgIT09ICdlZGl0JykgcmV0dXJuIGNvbmZpZy5oaWRlRWRpdCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZXNDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuICB9XG5cbiAgZ2V0ICRjYW5TYXZlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICgodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlPy5oYXNWYWxpZGF0aW9uID09PSBmYWxzZSlcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRhcmVGb3JtR3JvdXBzVmFsaWQoKSxcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgIF0pLnBpcGUobWFwKChbaXNWYWxpZCwgaGFzQ2hhbmdlc10pID0+IGlzVmFsaWQgJiYgaGFzQ2hhbmdlcykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBwYWdlT2JqZWN0UmVzb2x2ZXI6IFFkUGFnZU9iamVjdFJlc29sdmVyPFQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwTWFuYWdlclNlcnZpY2U6IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaWFsb2dDb21wb25lbnQ6IFFkRGlhbG9nQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGlhbG9nOiBRZERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogUWRDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHJlc29sdmVyVHJpZ2dlclNlcnZpY2U6IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPlxuICApIHtcbiAgICBpZiAocGFnZU9iamVjdFJlc29sdmVyKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhID0gdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGE/LmJpbmQodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIpO1xuICAgICAgdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEgPSAocHJvcHM6IFBhcnRpYWw8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICAgIGlmIChvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKSBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKHByb3BzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0dXBSZXNvbHZlclRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRDb250ZXh0cygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKSB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gJiYgIWNoYW5nZXNbJ2NvbmZpZyddLmZpcnN0Q2hhbmdlKSB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG5cbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB1cGRhdGVNZXRhZGF0YShtZXRhZGF0YTogUGFydGlhbDxUPik6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRNZXRhZGF0YSA9IHsgLi4udGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LnZhbHVlLCAuLi5tZXRhZGF0YSB9O1xuICAgIHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KHVwZGF0ZWRNZXRhZGF0YSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oZmFjZXQ6IFFkRmFjZXRPcHRpb25TaW5nbGVTZWxlY3QgfCBRZEZhY2V0T3B0aW9uTXVsdGlTZWxlY3QpOiB2b2lkIHtcbiAgICBmYWNldD8uYWN0aW9uPy5oYW5kbGVyKCk7XG4gIH1cblxuICBoYXNIZWFkZXJGYWNldHMoXG4gICAgY29uZmlnOiBRZFBhZ2VDb25maWc8VD5cbiAgKTogY29uZmlnIGlzIFFkUGFnZUNvbmZpZ0NyZWF0ZTxUPiB8IFFkUGFnZUNvbmZpZ0luc3BlY3Q8VD4gfCBRZFBhZ2VDb25maWdDdXN0b208VD4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgeyBoZWFkZXJGYWNldHM6IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W10gfSkuaGVhZGVyRmFjZXRzICE9IG51bGw7XG4gIH1cblxuICBlZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG4gICAgaWYgKHRoaXMuZWRpdEJ1dHRvbj8uaGFuZGxlcikgdGhpcy5lZGl0QnV0dG9uLmhhbmRsZXIoKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlXG4gICAgICAuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB0aGlzLm9wZW5DYW5jZWxEaWFsb2coKTtcbiAgICAgICAgZWxzZSB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlU3VjY2VzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXI/Lih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmdldEFsbFZhbHVlcygpKTtcblxuICAgIGlzT2JzZXJ2YWJsZShyZXN1bHQpID8gcmVzdWx0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4gb2sgJiYgaGFuZGxlU3VjY2VzcygpKSA6IGhhbmRsZVN1Y2Nlc3MoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbnRleHQoXG4gICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdLFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgIGNvbnRleHQub3BlbigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29uZmlnOiBjb250ZXh0LCBzZWxlY3Rpb24gfSxcbiAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBzZWxlY3RlZDogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUoY29udGV4dC5pZCwgZGF0YS5zZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckNvbnRleHQoY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xlYXIoY29udGV4dC5pZCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZXJUcmlnZ2VyU2VydmljZVxuICAgICAgLnNob3VsZFRyaWdnZXJSZXNvbHZlcih0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5jb25maWc/LnRyaWdnZXJPbiA/PyAncGF0aFBhcmFtc0NoYW5nZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoc2hvdWxkVHJpZ2dlciA9PiBzaG91bGRUcmlnZ2VyKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5yZXNvbHZlKCkpLFxuICAgICAgICB0YXAob2JqZWN0RGF0YSA9PiB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dChvYmplY3REYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29udGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5waXBlKFxuICAgICAgbWFwKGNvbnRleHRzID0+IGNvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGNvbnRleHQuc2VsZWN0aW9uIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnKSksXG4gICAgICBtYXAoY29udGV4dHMgPT5cbiAgICAgICAgY29udGV4dHM/Lm1hcCgoeyBzZWxlY3Rpb24sIGNvbnRleHQgfSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY29udGV4dC5sYWJlbC5pMThuLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbj8udmFsdWUpXG4gICAgICAgICAgICA/IHNlbGVjdGlvbj8udmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHNlbGVjdGlvbj8udmFsdWUgIT09IG51bGwgJiYgc2VsZWN0aW9uPy52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFtzZWxlY3Rpb24/LnZhbHVlXVxuICAgICAgICAgICAgOiAoW10gYXMgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10pLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24/LnZhbHVlID8/IFtdXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUN1c3RvbUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk1vZGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8ub3BlcmF0aW9uTW9kZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk1vZGUpIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShvcGVyYXRpb25Nb2RlID09PSAndmlldycpO1xuXG4gICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UuaXNWaWV3b25seSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tQWN0aW9ucyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5nZXRDdXN0b21BY3Rpb25zQnlNb2RlKGN1c3RvbUFjdGlvbnMsIGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCcpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSAhPT0gJ2luc3BlY3QnKVxuICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh7IGFjdGlvbnM6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21BY3Rpb25zQnlNb2RlKFxuICAgIGN1c3RvbUFjdGlvbnM6IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW10sXG4gICAgbW9kZTogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZVxuICApOiBRZE1lbnVCdXR0b25Db25maWcge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBjdXN0b21BY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLm9wZXJhdGlvbk1vZGUgfHwgYWN0aW9uLm9wZXJhdGlvbk1vZGUgPT09IG1vZGUpXG4gICAgICAubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVCdXR0b25BY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgICAgICBkZWxldGUgbWVudUJ1dHRvbkFjdGlvbi5vcGVyYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gbWVudUJ1dHRvbkFjdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FuY2VsRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5jYW5jZWwuY29uZmlybWF0aW9uLmRpYWxvZy50aXRsZScgfSxcbiAgICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZ1xuICAgICAgfSlcbiAgICAgIC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpcm0gPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UucmVzdG9yZUZvcm1Hcm91cHNGcm9tU25hcHNob3QoKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIj48cWQtc3Bpbm5lcj48L3FkLXNwaW5uZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvcFwiPlxuICA8aGVhZGVyIGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZS5pMThuIHwgdHJhbnNsYXRlIH19PC9oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvb2xiYXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJhcmNoaXZlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgKm5nSWY9XCJzaG93QXJjaGl2ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJhcmNoaXZlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgIFtpY29uXT1cIidyZXN1bHROZXcnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJkZWxldGUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIFtpY29uXT1cIid0cmFzaCdcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93RWRpdCQgfCBhc3luY1wiIHFkQnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBkYXRhLXRlc3QtaWQ9XCJlZGl0LWJ1dHRvblwiPlxuICAgICAge3sgZWRpdEJ1dHRvbj8ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmVkaXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWwkIHwgYXN5bmNcIiBxZEJ1dHRvbiBxZEJ1dHRvbkdob3N0IChjbGljayk9XCJjYW5jZWwoKVwiIGRhdGEtdGVzdC1pZD1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgIHt7IGNhbmNlbEJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd1NhdmUkIHwgYXN5bmNcIlxuICAgICAgcWRCdXR0b25cbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwic2F2ZS1idXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIigkY2FuU2F2ZSB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIHt7IHNhdmVCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLnNhdmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUFjdGlvbnMkIHwgYXN5bmMgYXMgY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGFwdGl2ZU1vZGU7IGVsc2UgYWRhcHRpdmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtxZE1lbnVCdXR0b25dPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgW2F1dG9TaXplXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidwYWdlLSdcIlxuICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQWN0aW9ucy5hY3Rpb25zLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlQnV0dG9uXCJcbiAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3VzdG9tQWN0aW9uc0xhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5hY3Rpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKS5hY3Rpb25zWzBdIGFzIHNpbmdsZUFjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNpbmdsZUFjdGlvbi5oYW5kbGVyICYmICFzaW5nbGVBY3Rpb24uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlQWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzaW5nbGVBY3Rpb24ubGFiZWw/LmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWRhcHRpdmU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKT8uYWN0aW9ucy5sZW5ndGggPj0gMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gICAgICAgICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uRXZlcnlDbGljaydcIlxuICAgICAgICAgIFtxZFBvcG92ZXJTdG9wUHJvcGFnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3FkUG9wb3Zlck1pbldpZHRoXT1cIjE2MFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwib3ZlcmZsb3dNZW51VmVydGljYWxcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnMuYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtZW50cnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldHNcIiBbbmdDbGFzc109XCJ7IGFtb25nVGhlbXNlbHZlczogYWRhcHRpdmVNb2RlICYmICFmYWNldHNDb2xsYXBzZWQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU9iamVjdERhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgaGVhZGVyRmFjZXRzIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIDogaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZmFjZXQtJyArIGZhY2V0Lm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGZhY2V0LmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxxZC1keW5hbWljLWZhY2V0IGNsYXNzPVwiZHluYW1pYy1mYWNldFwiIFtmYWNldF09XCJmYWNldFwiIFtkYXRhXT1cImRhdGFcIj48L3FkLWR5bmFtaWMtZmFjZXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uZmlnLmhpZGVDb250ZXh0cyAmJiBjb250ZXh0cyQgfCBhc3luYyBhcyBjb250ZXh0c1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbnRleHQgb2YgY29udGV4dHNcbiAgICAgICAgICB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiAtIChoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA6IGNvbnRleHRzLmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxuICAgICAgXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGFzRGl2aWRlcjogaGVhZGVyRmFjZXRzICYmIGZpcnN0IH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGNvbnRleHQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tc2VsZWN0ZWQtY29udGV4dFwiPnt7XG4gICAgICAgIFwiaTE4bi5xZC5wYWdlLmNvbnRleHQubm9TZWxlY3Rpb25QbGFjZWhvbGRlclwiIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICA8cWQtY2hpcCBzdGF0ZT1cIm5vbmVcIiBbY2xvc2VdPVwiaXNDb250ZXh0U2VsZWN0YWJsZVwiIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbGVhckNvbnRleHQoY29udGV4dC5jb250ZXh0KVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbCBvZiBjb250ZXh0LnZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIHt7IHZhbC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3FkLWNoaXA+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb250ZXh0U2VsZWN0YWJsZSAmJiAoIWZhY2V0c0NvbGxhcHNlZCB8fCAhYWRhcHRpdmVNb2RlKVwiIGNsYXNzPVwic2VsZWN0LWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICBxZEJ1dHRvbkxpbmtcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29udGV4dChjb250ZXh0LmNvbnRleHQsIGNvbnRleHQuc2VsZWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidvYmplY3QtaGVhZGVyLXNlbGVjdC1jb250ZXh0LScgKyBjb250ZXh0LmNvbnRleHQuaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgID8gKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLmNoYW5nZVwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5zZWxlY3RcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJmYWNldHMtdG9nZ2xlclwiICpuZ0lmPVwiYWRhcHRpdmVNb2RlICYmIGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCA+IDJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImZhY2V0c0NvbGxhcHNlZFwiPit7eyBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggLSAyIH19PC9zcGFuPlxuICAgIDxidXR0b24gcWRJY29uQnV0dG9uPlxuICAgICAgPHFkLWljb24gW2ljb25dPVwiZmFjZXRzQ29sbGFwc2VkID8gJ2N0cmxEb3duJyA6ICdjdHJsVG9wJ1wiPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQWdCbEksT0FBTyxFQUFFLDZCQUE2QixFQUF3QixNQUFNLCtCQUErQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFD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USxFQUFFLElBQUksRUFBRTtnQkFJekIsYUFBYTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFHRixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBR2pCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBTTlCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZywgUWRNZW51QnV0dG9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnV0dG9uL21vZGVsL2J1dHRvbi1jb25maWcnO1xuaW1wb3J0IHsgUWREaWFsb2dDb21wb25lbnQsIFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cvcGFnZS1jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSxcbiAgUWRQYWdlQ29uZmlnLFxuICBRZFBhZ2VDb25maWdDcmVhdGUsXG4gIFFkUGFnZUNvbmZpZ0N1c3RvbSxcbiAgUWRQYWdlQ29uZmlnSW5zcGVjdCxcbiAgUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgUWRQYWdlU2VsZWN0ZWRDb250ZXh0LFxuICBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0LFxuICBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0LFxuICBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWhlYWRlci1mYWNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sIFFkUGFnZU9iamVjdFJlc29sdmVyIH0gZnJvbSAnLi4vbW9kZWwvcGFnZS1vYmplY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWdyb3VwLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VsZWN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXNlbGVjdC1kaWFsb2cvY29udGV4dC1zZWxlY3QtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2Utb2JqZWN0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgJ1tzdHlsZS5ib3JkZXJCb3R0b21dJzogJ2JvcmRlckJvdHRvbVN0eWxlJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZU9iamVjdEhlYWRlckNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb25maWchOiBRZFBhZ2VDb25maWc8VD47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaGFzTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3BhZ2Utb2JqZWN0LWhlYWRlcic7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbi1kaWFsb2cnKVxuICBnZXQgaXNJbkRpYWxvZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ0NvbXBvbmVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgdG9nZ2xlRmFjZXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGFwdGl2ZU1vZGUgfHwgKHRoaXMuaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMCkgPj0gMikgcmV0dXJuO1xuXG4gICAgdGhpcy5mYWNldHNDb2xsYXBzZWQgPSAhdGhpcy5mYWNldHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgYWRhcHRpdmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgUWRQYWdlQ29uZmlnSW5zcGVjdCB8IFFkUGFnZUNvbmZpZ0N1c3RvbSkuYWRhcHRpdmVNb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFnZU9iamVjdERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPih7fSBhcyBUKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9jdXN0b21BY3Rpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UWRNZW51QnV0dG9uQ29uZmlnPih7IGFjdGlvbnM6IFtdIH0pO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwYWdlT2JqZWN0RGF0YSQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDQwMCkpO1xuICBjdXN0b21BY3Rpb25zJDogT2JzZXJ2YWJsZTxRZE1lbnVCdXR0b25Db25maWc+ID0gdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmFjZXRzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICBjb250ZXh0cyQhOiBPYnNlcnZhYmxlPFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICB2YWx1ZTogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnO1xuICAgICAgc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcbiAgICB9W11cbiAgPjtcblxuICBnZXQgYm9yZGVyQm90dG9tU3R5bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWdlVHlwZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlO1xuXG4gICAgcmV0dXJuIHBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnY3VzdG9tJyAmJiB0aGlzLmhhc05hdmlnYXRpb24pIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdvdmVydmlldycgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKVxuICAgICAgPyAnbm9uZSAhaW1wb3J0YW50J1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBzaG93RWRpdCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhdGhpcy5oaWRlRWRpdCkpO1xuICB9XG5cbiAgZ2V0IHNob3dEZWxldGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgISF0aGlzLmRlbGV0ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dBcmNoaXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5hcmNoaXZlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgc2hvd0NhbmNlbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLmNhbmNlbEJ1dHRvbiAmJiAhdGhpcy5pc0NyZWF0ZSkpO1xuICB9XG5cbiAgZ2V0IHNob3dTYXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiAhdiAmJiAhIXRoaXMuc2F2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IGhlYWRlckZhY2V0cygpOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNIZWFkZXJGYWNldHModGhpcy5jb25maWcpKSByZXR1cm4gdGhpcy5jb25maWcuaGVhZGVyRmFjZXRzO1xuICB9XG5cbiAgZ2V0IGlzSW5zcGVjdEFuZFZpZXdNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICBtYXAoaXNWaWV3ID0+IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgaXNWaWV3KVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNDcmVhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJztcbiAgfVxuXG4gIGdldCBpc092ZXJ2aWV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JztcbiAgfVxuXG4gIGdldCBpc0NvbnRleHRTZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSc7XG4gIH1cblxuICBnZXQgZWRpdEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snZWRpdCddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZWRpdDtcbiAgfVxuXG4gIGdldCBkZWxldGVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2RlbGV0ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZGVsZXRlO1xuICB9XG5cbiAgZ2V0IGFyY2hpdmVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2FyY2hpdmUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmFyY2hpdmU7XG4gIH1cblxuICBnZXQgY2FuY2VsQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydjYW5jZWwnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmNhbmNlbDtcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydzYXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlO1xuICB9XG5cbiAgZ2V0IGhpZGVFZGl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY29uZmlnLm9wZXJhdGlvbk1vZGUgIT09ICdlZGl0JykgcmV0dXJuIGNvbmZpZy5oaWRlRWRpdCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZXNDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuICB9XG5cbiAgZ2V0ICRjYW5TYXZlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICgodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlPy5oYXNWYWxpZGF0aW9uID09PSBmYWxzZSlcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRhcmVGb3JtR3JvdXBzVmFsaWQoKSxcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgIF0pLnBpcGUobWFwKChbaXNWYWxpZCwgaGFzQ2hhbmdlc10pID0+IGlzVmFsaWQgJiYgaGFzQ2hhbmdlcykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBwYWdlT2JqZWN0UmVzb2x2ZXI6IFFkUGFnZU9iamVjdFJlc29sdmVyPFQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwTWFuYWdlclNlcnZpY2U6IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaWFsb2dDb21wb25lbnQ6IFFkRGlhbG9nQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGlhbG9nOiBRZERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogUWRDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHJlc29sdmVyVHJpZ2dlclNlcnZpY2U6IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPlxuICApIHtcbiAgICBpZiAocGFnZU9iamVjdFJlc29sdmVyKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhID0gdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGE/LmJpbmQodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIpO1xuICAgICAgdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEgPSAocHJvcHM6IFBhcnRpYWw8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICAgIGlmIChvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKSBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKHByb3BzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0dXBSZXNvbHZlclRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRDb250ZXh0cygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKSB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gJiYgIWNoYW5nZXNbJ2NvbmZpZyddLmZpcnN0Q2hhbmdlKSB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG5cbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB1cGRhdGVNZXRhZGF0YShtZXRhZGF0YTogUGFydGlhbDxUPik6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRNZXRhZGF0YSA9IHsgLi4udGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LnZhbHVlLCAuLi5tZXRhZGF0YSB9O1xuICAgIHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KHVwZGF0ZWRNZXRhZGF0YSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oZmFjZXQ6IFFkRmFjZXRPcHRpb25TaW5nbGVTZWxlY3QgfCBRZEZhY2V0T3B0aW9uTXVsdGlTZWxlY3QpOiB2b2lkIHtcbiAgICBmYWNldD8uYWN0aW9uPy5oYW5kbGVyKCk7XG4gIH1cblxuICBoYXNIZWFkZXJGYWNldHMoXG4gICAgY29uZmlnOiBRZFBhZ2VDb25maWc8VD5cbiAgKTogY29uZmlnIGlzIFFkUGFnZUNvbmZpZ0NyZWF0ZTxUPiB8IFFkUGFnZUNvbmZpZ0luc3BlY3Q8VD4gfCBRZFBhZ2VDb25maWdDdXN0b208VD4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgeyBoZWFkZXJGYWNldHM6IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W10gfSkuaGVhZGVyRmFjZXRzICE9IG51bGw7XG4gIH1cblxuICBlZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG4gICAgaWYgKHRoaXMuZWRpdEJ1dHRvbj8uaGFuZGxlcikgdGhpcy5lZGl0QnV0dG9uLmhhbmRsZXIoKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlXG4gICAgICAuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5vcGVuQ2FuY2VsRGlhbG9nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS5jYW5jZWxQZW5kaW5nQXN5bmNWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlU3VjY2VzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuY2FuY2VsUGVuZGluZ0FzeW5jVmFsaWRhdGlvbigpO1xuICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2F2ZUJ1dHRvbj8uaGFuZGxlcj8uKHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkpO1xuXG4gICAgaXNPYnNlcnZhYmxlKHJlc3VsdCkgPyByZXN1bHQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKG9rOiBib29sZWFuKSA9PiBvayAmJiBoYW5kbGVTdWNjZXNzKCkpIDogaGFuZGxlU3VjY2VzcygpO1xuICB9XG5cbiAgY2hhbmdlQ29udGV4dChcbiAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnLFxuICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10sXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoY29udGV4dC50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29udGV4dC5vcGVuKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBjb25maWc6IGNvbnRleHQsIHNlbGVjdGlvbiB9LFxuICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgdGl0bGU6IGNvbnRleHQudGl0bGVcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jbG9zZWQuc3Vic2NyaWJlKChkYXRhOiB7IHNlbGVjdGVkOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSB9KSA9PiB7XG4gICAgICBpZiAoZGF0YSkgdGhpcy5jb250ZXh0U2VydmljZS5zZXRWYWx1ZShjb250ZXh0LmlkLCBkYXRhLnNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyQ29udGV4dChjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5jbGVhcihjb250ZXh0LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBSZXNvbHZlclRyaWdnZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlclRyaWdnZXJTZXJ2aWNlXG4gICAgICAuc2hvdWxkVHJpZ2dlclJlc29sdmVyKHRoaXMucGFnZU9iamVjdFJlc29sdmVyLmNvbmZpZz8udHJpZ2dlck9uID8/ICdwYXRoUGFyYW1zQ2hhbmdlJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICAgIGZpbHRlcihzaG91bGRUcmlnZ2VyID0+IHNob3VsZFRyaWdnZXIpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnJlc29sdmUoKSksXG4gICAgICAgIHRhcChvYmplY3REYXRhID0+IHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KG9iamVjdERhdGEpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb250ZXh0cygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRzJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dHMkLnBpcGUoXG4gICAgICBtYXAoY29udGV4dHMgPT4gY29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gY29udGV4dC5zZWxlY3Rpb24gfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycpKSxcbiAgICAgIG1hcChjb250ZXh0cyA9PlxuICAgICAgICBjb250ZXh0cz8ubWFwKCh7IHNlbGVjdGlvbiwgY29udGV4dCB9KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBjb250ZXh0LmxhYmVsLmkxOG4sXG4gICAgICAgICAgdmFsdWU6IEFycmF5LmlzQXJyYXkoc2VsZWN0aW9uPy52YWx1ZSlcbiAgICAgICAgICAgID8gc2VsZWN0aW9uPy52YWx1ZS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogc2VsZWN0aW9uPy52YWx1ZSAhPT0gbnVsbCAmJiBzZWxlY3Rpb24/LnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gW3NlbGVjdGlvbj8udmFsdWVdXG4gICAgICAgICAgICA6IChbXSBhcyBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSksXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBzZWxlY3Rpb246IHNlbGVjdGlvbj8udmFsdWUgPz8gW11cbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ3VzdG9tQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0Jykge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uTW9kZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5vcGVyYXRpb25Nb2RlO1xuXG4gICAgICBpZiAob3BlcmF0aW9uTW9kZSkgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KG9wZXJhdGlvbk1vZGUgPT09ICd2aWV3Jyk7XG5cbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGlzVmlld29ubHkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zID0gdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh0aGlzLmdldEN1c3RvbUFjdGlvbnNCeU1vZGUoY3VzdG9tQWN0aW9ucywgaXNWaWV3b25seSA/ICd2aWV3JyA6ICdlZGl0JykpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlICE9PSAnaW5zcGVjdCcpXG4gICAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViamVjdC5uZXh0KHsgYWN0aW9uczogdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW10gfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbUFjdGlvbnNCeU1vZGUoXG4gICAgY3VzdG9tQWN0aW9uczogKFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZyAmIHsgb3BlcmF0aW9uTW9kZT86IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUgfSlbXSxcbiAgICBtb2RlOiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlXG4gICk6IFFkTWVudUJ1dHRvbkNvbmZpZyB7XG4gICAgY29uc3QgYWN0aW9ucyA9IGN1c3RvbUFjdGlvbnNcbiAgICAgIC5maWx0ZXIoYWN0aW9uID0+ICFhY3Rpb24ub3BlcmF0aW9uTW9kZSB8fCBhY3Rpb24ub3BlcmF0aW9uTW9kZSA9PT0gbW9kZSlcbiAgICAgIC5tYXAoYWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgbWVudUJ1dHRvbkFjdGlvbiA9IHsgLi4uYWN0aW9uIH07XG4gICAgICAgIGRlbGV0ZSBtZW51QnV0dG9uQWN0aW9uLm9wZXJhdGlvbk1vZGU7XG4gICAgICAgIHJldHVybiBtZW51QnV0dG9uQWN0aW9uO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4geyBhY3Rpb25zIH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5DYW5jZWxEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5xZC5wYWdlLmNhbmNlbC5jb25maXJtYXRpb24uZGlhbG9nLnRpdGxlJyB9LFxuICAgICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICAgIGRhdGE6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnXG4gICAgICB9KVxuICAgICAgLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoY29uZmlybSA9PiB7XG4gICAgICAgIGlmIChjb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS5yZXN0b3JlRm9ybUdyb3Vwc0Zyb21TbmFwc2hvdCgpO1xuICAgICAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIiAqbmdJZj1cImlzTG9hZGluZyQgfCBhc3luY1wiPjxxZC1zcGlubmVyPjwvcWQtc3Bpbm5lcj48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItdG9wXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRpdGxlXCI+e3sgY29uZmlnLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2hlYWRlcj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItdG9vbGJhclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taWNvblwiIGRhdGEtdGVzdC1pZD1cImFyY2hpdmUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICAqbmdJZj1cInNob3dBcmNoaXZlJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cImFyY2hpdmVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWFjdGlvbi1pY29uXCJcbiAgICAgICAgW2ljb25dPVwiJ3Jlc3VsdE5ldydcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taWNvblwiIGRhdGEtdGVzdC1pZD1cImRlbGV0ZS1idXR0b25cIj5cbiAgICAgIDxxZC1pY29uXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWFjdGlvbi1pY29uXCJcbiAgICAgICAgKm5nSWY9XCJzaG93RGVsZXRlJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUJ1dHRvbj8uaGFuZGxlcigpXCJcbiAgICAgICAgW2ljb25dPVwiJ3RyYXNoJ1wiXG4gICAgICA+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dFZGl0JCB8IGFzeW5jXCIgcWRCdXR0b24gKGNsaWNrKT1cImVkaXQoKVwiIGRhdGEtdGVzdC1pZD1cImVkaXQtYnV0dG9uXCI+XG4gICAgICB7eyBlZGl0QnV0dG9uPy5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuZWRpdFwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0NhbmNlbCQgfCBhc3luY1wiIHFkQnV0dG9uIHFkQnV0dG9uR2hvc3QgKGNsaWNrKT1cImNhbmNlbCgpXCIgZGF0YS10ZXN0LWlkPVwiY2FuY2VsLWJ1dHRvblwiPlxuICAgICAge3sgY2FuY2VsQnV0dG9uLmxhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5jYW5jZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93U2F2ZSQgfCBhc3luY1wiXG4gICAgICBxZEJ1dHRvblxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiKCRjYW5TYXZlIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgPlxuICAgICAge3sgc2F2ZUJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuc2F2ZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tQWN0aW9ucyQgfCBhc3luYyBhcyBjdXN0b21BY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFkYXB0aXZlTW9kZTsgZWxzZSBhZGFwdGl2ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW3FkTWVudUJ1dHRvbl09XCJjdXN0b21BY3Rpb25zXCJcbiAgICAgICAgICBbYXV0b1NpemVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkYXRhLXRlc3QtaWRdPVwiJ3BhZ2UtJ1wiXG4gICAgICAgICAgKm5nSWY9XCJjdXN0b21BY3Rpb25zLmFjdGlvbnMubGVuZ3RoID4gMTsgZWxzZSBzaW5nbGVCdXR0b25cIlxuICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29uZmlnPy5jdXN0b21BY3Rpb25zTGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmFjdGlvbnNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUJ1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGN1c3RvbUFjdGlvbnMkIHwgYXN5bmMpLmFjdGlvbnNbMF0gYXMgc2luZ2xlQWN0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHFkQnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIgJiYgIXNpbmdsZUFjdGlvbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaW5nbGVBY3Rpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaW5nbGVBY3Rpb24uaGFuZGxlcigpXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0LWlkPVwiY3VzdG9tLWJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNpbmdsZUFjdGlvbi5sYWJlbD8uaTE4biB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNhZGFwdGl2ZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiKGN1c3RvbUFjdGlvbnMkIHwgYXN5bmMpPy5hY3Rpb25zLmxlbmd0aCA+PSAxXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgICBbcWRQb3BvdmVyT25DbGlja109XCJtZW51XCJcbiAgICAgICAgICBbcWRQb3BvdmVyQ2xvc2VTdHJhdGVneV09XCInb25FdmVyeUNsaWNrJ1wiXG4gICAgICAgICAgW3FkUG9wb3ZlclN0b3BQcm9wYWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcWRQb3BvdmVyTWluV2lkdGhdPVwiMTYwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxxZC1pY29uIGljb249XCJvdmVyZmxvd01lbnVWZXJ0aWNhbFwiPjwvcWQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY3VzdG9tQWN0aW9ucy5hY3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRhcHRpdmUtbWVudS1lbnRyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0c1wiIFtuZ0NsYXNzXT1cInsgYW1vbmdUaGVtc2VsdmVzOiBhZGFwdGl2ZU1vZGUgJiYgIWZhY2V0c0NvbGxhcHNlZCB9XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlT2JqZWN0RGF0YSQgfCBhc3luYyBhcyBkYXRhXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0XCJcbiAgICAgICpuZ0Zvcj1cImxldCBmYWNldCBvZiBoZWFkZXJGYWNldHMgfCBzbGljZSA6IDAgOiAoYWRhcHRpdmVNb2RlICYmIGZhY2V0c0NvbGxhcHNlZCA/IDIgOiBoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1mYWNldC0nICsgZmFjZXQubmFtZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZhY2V0LWxhYmVsXCI+e3sgZmFjZXQubGFiZWwuaTE4biB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPHFkLWR5bmFtaWMtZmFjZXQgY2xhc3M9XCJkeW5hbWljLWZhY2V0XCIgW2ZhY2V0XT1cImZhY2V0XCIgW2RhdGFdPVwiZGF0YVwiPjwvcWQtZHluYW1pYy1mYWNldD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb25maWcuaGlkZUNvbnRleHRzICYmIGNvbnRleHRzJCB8IGFzeW5jIGFzIGNvbnRleHRzXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0XCJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgY29udGV4dCBvZiBjb250ZXh0c1xuICAgICAgICAgIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIC0gKGhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApIDogY29udGV4dHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgIGxldCBmaXJzdCA9IGZpcnN0XG4gICAgICBcIlxuICAgICAgW25nQ2xhc3NdPVwieyBoYXNEaXZpZGVyOiBoZWFkZXJGYWNldHMgJiYgZmlyc3QgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZhY2V0LWxhYmVsXCI+e3sgY29udGV4dC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRleHQudmFsdWUubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1zZWxlY3RlZC1jb250ZXh0XCI+e3tcbiAgICAgICAgXCJpMThuLnFkLnBhZ2UuY29udGV4dC5ub1NlbGVjdGlvblBsYWNlaG9sZGVyXCIgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgIDxxZC1jaGlwIHN0YXRlPVwibm9uZVwiIFtjbG9zZV09XCJpc0NvbnRleHRTZWxlY3RhYmxlXCIgKGNsb3NlQ2xpY2tFbWl0dGVyKT1cImNsZWFyQ29udGV4dChjb250ZXh0LmNvbnRleHQpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsIG9mIGNvbnRleHQudmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAge3sgdmFsLmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08c3BhbiAqbmdJZj1cIiFsYXN0XCI+LCA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcWQtY2hpcD5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvbnRleHRTZWxlY3RhYmxlICYmICghZmFjZXRzQ29sbGFwc2VkIHx8ICFhZGFwdGl2ZU1vZGUpXCIgY2xhc3M9XCJzZWxlY3QtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgIHFkQnV0dG9uTGlua1xuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VDb250ZXh0KGNvbnRleHQuY29udGV4dCwgY29udGV4dC5zZWxlY3Rpb24sICRldmVudClcIlxuICAgICAgICAgIFtkYXRhLXRlc3QtaWRdPVwiJ29iamVjdC1oZWFkZXItc2VsZWN0LWNvbnRleHQtJyArIGNvbnRleHQuY29udGV4dC5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgY29udGV4dC52YWx1ZS5sZW5ndGggIT09IDBcbiAgICAgICAgICAgICAgPyAoXCJpMThuLnFkLnBhZ2UuY29udGV4dC5idXR0b24uY2hhbmdlXCIgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIDogKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLnNlbGVjdFwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3BhbiBjbGFzcz1cImZhY2V0cy10b2dnbGVyXCIgKm5nSWY9XCJhZGFwdGl2ZU1vZGUgJiYgaGVhZGVyRmFjZXRzLmxlbmd0aCArIChjb250ZXh0cyQgfCBhc3luYykubGVuZ3RoID4gMlwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZmFjZXRzQ29sbGFwc2VkXCI+K3t7IGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCAtIDIgfX08L3NwYW4+XG4gICAgPGJ1dHRvbiBxZEljb25CdXR0b24+XG4gICAgICA8cWQtaWNvbiBbaWNvbl09XCJmYWNldHNDb2xsYXBzZWQgPyAnY3RybERvd24nIDogJ2N0cmxUb3AnXCI+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==