nuxeo-development-framework 3.2.9 → 3.3.1-snapshot

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 (21) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +62 -30
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/documents/components/document-scan/document-scan.service.js +1 -1
  4. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +14 -3
  5. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +4 -9
  6. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.js +2 -2
  7. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
  8. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +6 -2
  9. package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
  10. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +1 -1
  11. package/esm2015/lib/components/table/table/table.component.js +6 -2
  12. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +1 -1
  13. package/esm2015/lib/shared-services/mainfolder.service.js +23 -15
  14. package/fesm2015/nuxeo-development-framework.js +52 -30
  15. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  16. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +6 -3
  17. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +1 -1
  18. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +3 -1
  19. package/lib/components/table/table/table.component.d.ts +3 -1
  20. package/lib/shared-services/mainfolder.service.d.ts +2 -2
  21. package/package.json +1 -1
@@ -258,7 +258,7 @@ export class DynamicSearchComponent {
258
258
  }
259
259
  }
260
260
  DynamicSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DynamicSearchComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.EvaluatorsService }, { token: i3.NuxeoService }, { token: 'environment' }, { token: i4.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
261
- DynamicSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: DynamicSearchComponent, selector: "cts-dynamic-search", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", sortingBy: "sortingBy", fullTextParamName: "fullTextParamName", filter: "filter", onRowSelected: "onRowSelected", sortingArray: "sortingArray", customResponsiveStyle: "customResponsiveStyle", openCloseFilterFromOutside: "openCloseFilterFromOutside", theme: "theme" }, outputs: { actionOnRow: "actionOnRow" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"search-toolbar d-md-flex d-xl-none mx-3\">\r\n <button (click)=\"onOpenFilter()\" class=\"my-button\">\r\n <span> {{ \"FILTER\" | translate }}</span>\r\n <i class=\"bi bi-filter\" *ngIf=\"!openFilter\"></i>\r\n <i class=\"bi bi-x\" *ngIf=\"openFilter\"></i>\r\n </button>\r\n <div *ngIf=\"openFilter\">\r\n <i class=\"bi bi-caret-up-fill arrow-up\"></i>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"customResponsiveStyle\">\r\n <div class=\"customStyle -mt-12 px-8 flex flex-col\"\r\n [ngClass]=\"{'bg-accent-200': theme === 'dgda','bg-accent-100': theme === 'ksreleif' || theme === 'comptechco'}\"\r\n [@collapse]=\"!openFilter\">\r\n <!-- <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form> -->\r\n <div class=\"flex gap-x-18 flex-row mt-5 pb-3 overflow-x-auto\">\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <ng-container *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"row wrapper\">\r\n <ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"popup-filter px-3 d-flex d-xl-none\" *ngIf=\"openFilter\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete1\" [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete1=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n No results found!\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col-xl-3 search-sideMenu d-none d-xl-block\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete2\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \" [disableRipple]=\"true\" #matAutocomplete2=\"matAutocomplete\">\r\n <mat-option class=\"no-text\" *ngIf=\"resultSets && !resultSets.length\">\r\n No results found!\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span class=\"option-iner-text\">{{ resultSet.label }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-12 col-xl-9\">\r\n <app-card>\r\n <div class=\"title\">\r\n <h3>\r\n {{ \"search.header\" | translate }}\r\n </h3>\r\n </div>\r\n <div class=\"body\">\r\n <div *ngIf=\"aggregations\" class=\"table-toolbar\">\r\n <div class=\"result-count\">\r\n <span>\r\n {{\r\n \"search.\" + \"resultsNumber\"\r\n | translate: { value: totalRecords ? totalRecords : 0 }\r\n }}\r\n </span>\r\n </div>\r\n <div>\r\n <form class=\"d-flex justify-between\" [formGroup]=\"searchForm\" (ngSubmit)=\"submitForm()\">\r\n <div *ngIf=\"useToggleFilters && !customResponsiveStyle\"></div>\r\n <div *ngIf=\"customResponsiveStyle\">\r\n <div class=\"search-form custom-responsive-search\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </div>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n {{no_result_found | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"useToggleFilters\">\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.PERSONAL_FILES'\"\r\n (onToggle)=\"submitForm()\" formControlName=\"personalFiles\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.DEP_FILES'\"\r\n formControlName=\"depFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.WORKSPACE_FILES'\"\r\n formControlName=\"workSpaceFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <cts-dynamic-table [pageSize]=\"pageSize\" [columns]=\"columns\" [responsiveColumns]=\"responsiveColumns\"\r\n [pageProvider]=\"pageProvider\" [quickFilter]=\"filter\" [entityType]=\"entityType\" [fields]=\"fields\"\r\n [queryParam]=\"queryParams\" [headers]=\"headers\" [prefix]=\"prefix\" [sortingBy]=\"sortingBy\" [isSearchPage]=\"true\"\r\n (onRowSelected)=\"onRowSelected($event)\" (actionOnRow)=\"performAction($event)\"\r\n (onGettingData)=\"getTableData($event)\"></cts-dynamic-table>\r\n </div>\r\n </app-card>\r\n </div>\r\n\r\n <ng-template #progressSpinner>\r\n <div class=\"progress-spinner\">\r\n <mat-spinner color=\"warn\" [diameter]=\"25\"></mat-spinner>\r\n </div>\r\n </ng-template>\r\n <ng-template #noAggregations>\r\n <div class=\"progress-spinner\">\r\n {{ \"search.noAggregations\" | translate }}\r\n </div>\r\n </ng-template>\r\n</div>", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.result-count{color:#8f98aa;font-size:14px}.search-sideMenu{background-color:#fff;padding-top:22px;padding-bottom:22px;border-radius:5px}.auto-complete-iner-wrapper{max-height:350px;border-radius:4px}.auto-complete-iner-wrapper .no-text{font-size:14px;color:#465573}.auto-complete-iner-wrapper .mat-option{text-align:start;color:#465573;font-weight:bold;font-size:14px}.auto-complete-iner-wrapper .mat-option .mat-option-text{text-align:flex-start}.search-form{display:flex;color:#6a768e;width:100%}.search-form .search-input{width:100%;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.search-form .search-input::-webkit-input-placeholder{font-size:14px}.search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.search-form .search-icon{background:#465573;color:#fff;width:12%;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}.small-font{font-size:14px}.custom-responsive-search{width:300px!important;margin:0 35px}.search-toolbar{position:relative;display:flex;justify-content:flex-end;margin-bottom:16px}.search-toolbar .my-button{width:90px}.search-toolbar .arrow-up{position:absolute;top:26px;right:28px;font-size:25px;color:#8f98aab3}.wrapper{position:relative}.wrapper .popup-filter{flex-direction:column;position:absolute;right:0;z-index:9999;max-height:70vh;max-width:400px;background-color:#fff;overflow:scroll;box-shadow:0 1px 10px 2px #00000054;top:-4px;border-radius:5px}.wrapper .popup-filter .search-form{margin-top:10px!important}.wrapper .popup-filter .search-input{width:100%!important}.wrapper .search-container{background-color:#fff;border-radius:5px;border:0px;padding:16px;height:-webkit-max-content;height:max-content}.wrapper .search-container .table-toolbar{display:flex;align-items:center;margin-bottom:8px;justify-content:space-between}.progress-spinner{margin-top:10px;margin-block-end:0;display:grid;place-items:center;width:100%}.rtl .popup-filter{left:0px;right:unset!important}.rtl .arrow-up{position:absolute;top:33px;left:28px;right:unset!important}@media (width: 1180px),(width: 820px){.customStyle cts-dynamic-filter .aggregation-container{width:176px!important}}.customStyle .search-form{display:flex;color:#6a768e;width:100%}.customStyle .search-form .search-input{width:288px;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.customStyle .search-form .search-input::-webkit-input-placeholder{font-size:14px}.customStyle .search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.customStyle .search-form .search-icon{background:#465573;color:#fff;width:40px;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}\n"], components: [{ type: i5.DynamicFilterComponent, selector: "cts-dynamic-filter", inputs: ["title", "filters", "selections", "id", "entityType", "prefix", "department", "componentType", "customPageProvider", "config"], outputs: ["onFilterSelected"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i8.CardComponent, selector: "app-card", inputs: ["noBody", "dark"] }, { type: i9.DynamicFormSlideToggleitemComponent, selector: "cts-dynamic-form-slide-toggleitem", inputs: ["label", "disabled", "checked", "theme"], outputs: ["onToggle"] }, { type: i10.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "sortingBy", "queryParam", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "highlightSelectedCard", "filterParams"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading"] }, { type: i11.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i13.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i13.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i14.TranslatePipe }, animations: [
261
+ DynamicSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: DynamicSearchComponent, selector: "cts-dynamic-search", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", sortingBy: "sortingBy", fullTextParamName: "fullTextParamName", filter: "filter", onRowSelected: "onRowSelected", sortingArray: "sortingArray", customResponsiveStyle: "customResponsiveStyle", openCloseFilterFromOutside: "openCloseFilterFromOutside", theme: "theme" }, outputs: { actionOnRow: "actionOnRow" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"search-toolbar d-md-flex d-xl-none mx-3\">\r\n <button (click)=\"onOpenFilter()\" class=\"my-button\">\r\n <span> {{ \"FILTER\" | translate }}</span>\r\n <i class=\"bi bi-filter\" *ngIf=\"!openFilter\"></i>\r\n <i class=\"bi bi-x\" *ngIf=\"openFilter\"></i>\r\n </button>\r\n <div *ngIf=\"openFilter\">\r\n <i class=\"bi bi-caret-up-fill arrow-up\"></i>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"customResponsiveStyle\">\r\n <div class=\"customStyle -mt-12 px-8 flex flex-col\"\r\n [ngClass]=\"{'bg-accent-200': theme === 'dgda','bg-accent-100': theme === 'ksreleif' || theme === 'comptechco'}\"\r\n [@collapse]=\"!openFilter\">\r\n <!-- <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form> -->\r\n <div class=\"flex gap-x-18 flex-row mt-5 pb-3 overflow-x-auto\">\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <ng-container *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"row wrapper\">\r\n <ng-container *ngIf=\"!customResponsiveStyle\">\r\n <div class=\"popup-filter px-3 d-flex d-xl-none\" *ngIf=\"openFilter\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete1\" [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete1=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n No results found!\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <ng-container *ngIf=\"aggregations.length; else noAggregations\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"col-xl-3 search-sideMenu d-none d-xl-block\">\r\n <form [formGroup]=\"searchForm\" class=\"search-form\" (ngSubmit)=\"submitForm()\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete2\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <mat-autocomplete class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \" [disableRipple]=\"true\" #matAutocomplete2=\"matAutocomplete\">\r\n <mat-option class=\"no-text\" *ngIf=\"resultSets && !resultSets.length\">\r\n No results found!\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span class=\"option-iner-text\">{{ resultSet.label }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter [entityType]=\"entityType\" [filters]=\"aggregation.buckets\" [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\" [title]=\"aggregation.field\" [prefix]=\"'search'\" [department]=\"\r\n aggregation.field === 'corr:to' ||\r\n aggregation.field === 'corr:from'\r\n \" [componentType]=\"aggregation.componentType ? aggregation.componentType : 'defult'\"\r\n [customPageProvider]=\"aggregation.customPageProvider ? aggregation.customPageProvider : ''\"\r\n [config]=\"aggregation.config ? aggregation.config : {}\" (onFilterSelected)=\"FilterSelected($event)\">\r\n </cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"col-12 col-xl-9\">\r\n <app-card>\r\n <div class=\"title\">\r\n <h3>\r\n {{ \"search.header\" | translate }}\r\n </h3>\r\n </div>\r\n <div class=\"body\">\r\n <div *ngIf=\"aggregations\" class=\"table-toolbar\">\r\n <div class=\"result-count\">\r\n <span>\r\n {{\r\n \"search.\" + \"resultsNumber\"\r\n | translate: { value: totalRecords ? totalRecords : 0 }\r\n }}\r\n </span>\r\n </div>\r\n <div>\r\n <form class=\"d-flex justify-between\" [formGroup]=\"searchForm\" (ngSubmit)=\"submitForm()\">\r\n <div *ngIf=\"useToggleFilters && !customResponsiveStyle\"></div>\r\n <div *ngIf=\"customResponsiveStyle\">\r\n <div class=\"search-form custom-responsive-search\">\r\n <input class=\"search-input\" type=\"text\" formControlName=\"text\" [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"'search.search' | translate\" />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </div>\r\n <mat-autocomplete\r\n class=\"\r\n auto-complete-iner-wrapper\r\n auto-complete-wrapper\r\n \"\r\n [disableRipple]=\"true\"\r\n #matAutocomplete=\"matAutocomplete\"\r\n >\r\n <mat-option\r\n class=\"no-text\"\r\n *ngIf=\"resultSets && !resultSets.length\"\r\n >\r\n {{no_result_found | translate}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let resultSet of resultSets\">\r\n <mat-option (click)=\"setOptionValue(resultSet.label)\">\r\n <span\r\n class=\"option-iner-text\"\r\n >{{ resultSet.label }}</span\r\n >\r\n </mat-option >\r\n </ng-container>\r\n </mat-autocomplete>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"useToggleFilters\">\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.PERSONAL_FILES'\"\r\n (onToggle)=\"submitForm()\" formControlName=\"personalFiles\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.DEP_FILES'\"\r\n formControlName=\"depFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n <cts-dynamic-form-slide-toggleitem class=\"mx-2 small-font\" [label]=\"'search.WORKSPACE_FILES'\"\r\n formControlName=\"workSpaceFiles\" (onToggle)=\"submitForm()\">\r\n </cts-dynamic-form-slide-toggleitem>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <cts-dynamic-table [pageSize]=\"pageSize\" [columns]=\"columns\" [responsiveColumns]=\"responsiveColumns\"\r\n [pageProvider]=\"pageProvider\" [quickFilter]=\"filter\" [entityType]=\"entityType\" [fields]=\"fields\"\r\n [queryParam]=\"queryParams\" [headers]=\"headers\" [prefix]=\"prefix\" [sortingBy]=\"sortingBy\" [isSearchPage]=\"true\"\r\n (onRowSelected)=\"onRowSelected($event)\" (actionOnRow)=\"performAction($event)\"\r\n (onGettingData)=\"getTableData($event)\"></cts-dynamic-table>\r\n </div>\r\n </app-card>\r\n </div>\r\n\r\n <ng-template #progressSpinner>\r\n <div class=\"progress-spinner\">\r\n <mat-spinner color=\"warn\" [diameter]=\"25\"></mat-spinner>\r\n </div>\r\n </ng-template>\r\n <ng-template #noAggregations>\r\n <div class=\"progress-spinner\">\r\n {{ \"search.noAggregations\" | translate }}\r\n </div>\r\n </ng-template>\r\n</div>", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.result-count{color:#8f98aa;font-size:14px}.search-sideMenu{background-color:#fff;padding-top:22px;padding-bottom:22px;border-radius:5px}.auto-complete-iner-wrapper{max-height:350px;border-radius:4px}.auto-complete-iner-wrapper .no-text{font-size:14px;color:#465573}.auto-complete-iner-wrapper .mat-option{text-align:start;color:#465573;font-weight:bold;font-size:14px}.auto-complete-iner-wrapper .mat-option .mat-option-text{text-align:flex-start}.search-form{display:flex;color:#6a768e;width:100%}.search-form .search-input{width:100%;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.search-form .search-input::-webkit-input-placeholder{font-size:14px}.search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.search-form .search-icon{background:#465573;color:#fff;width:12%;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}.small-font{font-size:14px}.custom-responsive-search{width:300px!important;margin:0 35px}.search-toolbar{position:relative;display:flex;justify-content:flex-end;margin-bottom:16px}.search-toolbar .my-button{width:90px}.search-toolbar .arrow-up{position:absolute;top:26px;right:28px;font-size:25px;color:#8f98aab3}.wrapper{position:relative}.wrapper .popup-filter{flex-direction:column;position:absolute;right:0;z-index:9999;max-height:70vh;max-width:400px;background-color:#fff;overflow:scroll;box-shadow:0 1px 10px 2px #00000054;top:-4px;border-radius:5px}.wrapper .popup-filter .search-form{margin-top:10px!important}.wrapper .popup-filter .search-input{width:100%!important}.wrapper .search-container{background-color:#fff;border-radius:5px;border:0px;padding:16px;height:-webkit-max-content;height:max-content}.wrapper .search-container .table-toolbar{display:flex;align-items:center;margin-bottom:8px;justify-content:space-between}.progress-spinner{margin-top:10px;margin-block-end:0;display:grid;place-items:center;width:100%}.rtl .popup-filter{left:0px;right:unset!important}.rtl .arrow-up{position:absolute;top:33px;left:28px;right:unset!important}@media (width: 1180px),(width: 820px){.customStyle cts-dynamic-filter .aggregation-container{width:176px!important}}.customStyle .search-form{display:flex;color:#6a768e;width:100%}.customStyle .search-form .search-input{width:288px;border:1px solid #d9dce2;border-inline-end:0;border-start-start-radius:5px;border-end-start-radius:5px;border:1px solid #ccc;height:32px;font-size:16px;padding-inline-start:4px}.customStyle .search-form .search-input::-webkit-input-placeholder{font-size:14px}.customStyle .search-form .search-input:focus-visible{border:2px solid #465573;outline:transparent}.customStyle .search-form .search-icon{background:#465573;color:#fff;width:40px;display:flex;align-items:center;justify-content:center;border-radius:0;cursor:pointer;border:1px solid #d9dce2;border-start-end-radius:6px;border-end-end-radius:6px;border-inline-start:0}\n"], components: [{ type: i5.DynamicFilterComponent, selector: "cts-dynamic-filter", inputs: ["title", "filters", "selections", "id", "entityType", "prefix", "department", "componentType", "customPageProvider", "config"], outputs: ["onFilterSelected"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i8.CardComponent, selector: "app-card", inputs: ["noBody", "dark"] }, { type: i9.DynamicFormSlideToggleitemComponent, selector: "cts-dynamic-form-slide-toggleitem", inputs: ["label", "disabled", "checked", "theme"], outputs: ["onToggle"] }, { type: i10.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "sortingBy", "queryParam", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "filterParams"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading"] }, { type: i11.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i13.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i13.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i14.TranslatePipe }, animations: [
262
262
  trigger('collapse', [
263
263
  state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
264
264
  state('true', style({ height: '0', visibility: 'hidden' })),
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
320
320
  }], theme: [{
321
321
  type: Input
322
322
  }] } });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQTRCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBR3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBZUgsTUFBTSxPQUFPLHNCQUFzQjtJQXdEakMsWUFDVSxLQUFxQixFQUNyQixNQUFjLEVBQ2QsZ0JBQW9DLEVBQ3BDLFlBQTJCLEVBQ0osV0FBVyxFQUNuQyxrQkFBc0M7UUFMckMsVUFBSyxHQUFMLEtB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QUNWLE9BQU8sQ0FBQyxVQUFVLEVBQUU7NEJBQ2xCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzs0QkFDckUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDOzRCQUMzRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDekMsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQzFDLENBQUM7cUJBQ0g7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzswQkE4REksTUFBTTsyQkFBQyxhQUFhOzZFQXpEZCxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBT0ksV0FBVztzQkFBcEIsTUFBTTtnQkFhUCxZQUFZO3NCQURYLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERvY3VtZW50c0NvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbnN0YW50cy9kb2N1bWVudHMnO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgQVVUT19TVFlMRSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IHRocmVhZElkIH0gZnJvbSAnd29ya2VyX3RocmVhZHMnO1xyXG5pbXBvcnQgeyBFdmFsdWF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9ldmFsdWF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBEeW5hbWljIHNlYXJjaCBjb21wb25lbnQgdXNlcyBbRHluYW1pYyBUYWJsZV17QGxpbmsgRHluYW1pY1RhYmxlQ29tcG9uZW50fSAmIFtEeW5hbWljIEZpbHRlcl17QGxpbmsgRHluYW1pY0ZpbHRlckNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogYW5kIHV0aWxpemVzIGl0cyBpbnB1dHMgdG8gcGVyZm9ybSBhZHZhbmNlZCBzZWFyY2ggYW5kIGZpbHRlcmluZyBvbiBhbnkgbnV4ZW8gUHJvdmlkZXJcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgU2VhcmNoXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxjdHMtZHluYW1pYy1zZWFyY2hcclxuICogICBbcGFnZVByb3ZpZGVyXT1cIidwYWdlUHJvdmlkZXJOYW1lJ1wiXHJcbiAqICAgW2NvbHVtbnNdPVwiY29sdW1uc0FycmF5XCJcclxuICogICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNBcnJheVwiXHJcbiAqICAgW2VudGl0eVR5cGVdPVwiJ2RvY3VtZW50cydcIlxyXG4gKiAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgW2hlYWRlcnNdPVwiaGVhZGVyc1wiXHJcbiAqICAgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIlxyXG4gKiAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiogICAgW2N1c3RvbVJlc3BvbnNpdmVTdHlsZV09XCJmYWxzZSBvciB0cnVlXCJcclxuICAgICBbb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGVdPVwicGFzcyBGaWx0ZXIgc3RhdGUgZnJvbSBwYXJlbnQgY29tcG9uZW50XCJcclxuICAgICBbdGhlbWVdID0gXCJ0byAgc2V0IGJhY2tncm91bmQgZGVwZW5lZCBvbiB0aGVtZVwiXHJcbiAqID5cclxuICogPC9jdHMtZHluYW1pYy1zZWFyY2g+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N0cy1keW5hbWljLXNlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2NvbGxhcHNlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IGhlaWdodDogQVVUT19TVFlMRSwgdmlzaWJpbGl0eTogQVVUT19TVFlMRSB9KSksXHJcbiAgICAgIHN0YXRlKCd0cnVlJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdmYWxzZSA9PiB0cnVlJywgYW5pbWF0ZSgzMDApKSxcclxuICAgICAgdHJhbnNpdGlvbigndHJ1ZSA9PiBmYWxzZScsIGFuaW1hdGUoMzAwKSlcclxuICAgIF0pXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGFnZ3JlZ2F0aW9ucztcclxuICAvKiogQXJyYXkgb2YgY29sdW1ucyAqL1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM7XHJcbiAgLyoqIEFycmF5IG9mIGNvbHVtbnMgb24gc21hbGxlciBzY3JlZW5zICovXHJcbiAgQElucHV0KCkgcmVzcG9uc2l2ZUNvbHVtbnM/O1xyXG4gIC8qKiBEZWZpbmVzIHRoZSBwYWdlIGluIHdoaWNoIHRhYmxlIGlzIGJlaW5nIHVzZWQgKi9cclxuICBASW5wdXQoKSBlbnRpdHlUeXBlOiBzdHJpbmc7XHJcbiAgLyoqIFRyYW5zbGF0aW9ucyBwcmVmaXggKi9cclxuICBASW5wdXQoKSBwcmVmaXggPSAnJztcclxuICAvKiogSGVhZGVycyB0byBiZSBzZW50IHdpdGggQVBJIFJlcXVlc3QgKi9cclxuICBASW5wdXQoKSBoZWFkZXJzO1xyXG4gIC8qKiBGaWVsZHMga2V5bWFwIHRvIGJlIG1hcHBlZCBpbiB0aGUgYWRhcHRlciAqL1xyXG4gIEBJbnB1dCgpIGZpZWxkcztcclxuICAvKiogUGFnZSBQcm92aWRlciBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJldHJpZXZlIGRhdGEgKi9cclxuICBASW5wdXQoKSBwYWdlUHJvdmlkZXI7XHJcbiAgLyoqIENvbnRyb2xzIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBpbiB0YWJsZSAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplO1xyXG4gIC8qKiBTb3J0aW5nIGNvbHVtbiAqL1xyXG4gIEBJbnB1dCgpIHNvcnRpbmdCeT89IHt9O1xyXG4gIEBJbnB1dCgpIGZ1bGxUZXh0UGFyYW1OYW1lID0gJ3N5c3RlbV9mdWxsdGV4dCc7XHJcbiAgQElucHV0KCkgZmlsdGVyOyAvLyB1c2VkIHRvIHBhc3MgcGFyYW1zIGZyb20gb3V0c2lkZSB0byBwYXJhbXMgb2YgZHluYW1pYyB0YWJsZSBkaXJlY3RseVxyXG5cclxuICBASW5wdXQoKSBcclxuICBvblJvd1NlbGVjdGVkID0gKHJvdykgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyB2aWV3ZXI6IFsndmlldycsIHJvd1sndWlkJ11dIH0gfV0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKiB1c2VkIHRvIGVtaXQgYW55IGFjdGlvbnMgdG8gb3V0c2lkZSAqL1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBxdWVyeVBhcmFtcyA9IHt9O1xyXG4gIGZpbHRlcnM7XHJcbiAgc2VhcmNoRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdGV4dDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgcGVyc29uYWxGaWxlcyA6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXHJcbiAgICBkZXBGaWxlcyA6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXHJcbiAgICB3b3JrU3BhY2VGaWxlcyA6IG5ldyBGb3JtQ29udHJvbChmYWxzZSlcclxuICB9KTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgdG90YWxSZWNvcmRzO1xyXG4gIG9wZW5GaWx0ZXI6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBzb3J0aW5nQXJyYXk7XHJcbiAgQElucHV0KCkgY3VzdG9tUmVzcG9uc2l2ZVN0eWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0aGVtZSA6YW55O1xyXG4gIHVzZVRvZ2dsZUZpbHRlcnM7XHJcblxyXG4gIHF1aWNrRmlsdGVycyA9ICcnO1xyXG4gIHNhdmVkUGVyc0ZpbHRlclZhbHVlID0gbnVsbDtcclxuICBzYXZlZERlcEZpbHRlclZhbHVlID0gbnVsbDtcclxuICBzYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlID0gbnVsbDtcclxuXHJcbiAgcmVzdWx0U2V0cyA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBldmFsdWF0b3JTZXJ2aWNlIDogRXZhbHVhdG9yc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG51eGVvU2VydmljZSA6IE51eGVvU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICkgeyBcclxuICAgIHRoaXMuZXZhbHVhdG9yU2VydmljZS5ldmFsdWF0ZVJ1bGUoJ2VuYWJsZVNlYXJjaFRvZ2dsZXMnICwge30pLnRoZW4ocmVzID0+IHtcclxuICAgICAgdGhpcy51c2VUb2dnbGVGaWx0ZXJzID0gcmVzO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmKGNoYW5nZXMub3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGUpIHtcclxuICAgICAgdGhpcy5vcGVuRmlsdGVyID0gY2hhbmdlcy5vcGVuQ2xvc2VGaWx0ZXJGcm9tT3V0c2lkZS5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy51cGRhdGVRdWVyeVBhcmFtcyh0aGlzLmNvbnN0cnVjdFBhcmFtc0Z1bmN0aW9uKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpKTtcclxuICAgIHRoaXMuc2VhcmNoSW5wdXRQb3B1bGF0ZSgpO1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKHRoaXMudGV4dCAhPT0gcGFyYW1zWydzZWFyY2hfcXVlcnknXSAmJiBwYXJhbXNbJ3NlYXJjaF9xdWVyeSddKSB8fFxyXG4gICAgICAgIChwYXJhbXNbJ3NlYXJjaF9xdWVyeSddPy5sZW5ndGggPT0gMCAmJiB0aGlzLnRleHQgIT09IHBhcmFtc1snc2VhcmNoX3F1ZXJ5J10gfHwgXHJcbiAgICAgICAgKHRoaXMudXNlVG9nZ2xlRmlsdGVycyAmJiB0aGlzLnF1aWNrRmlsdGVycyAhPT0gcGFyYW1zWydxdWlja0ZpbHRlcnMnXSkpIFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuY29uc3RydWN0UGFyYW1zRnVuY3Rpb24ocGFyYW1zKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFBvcHVsYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5icmVha3BvaW50KCk7XHJcbiAgICBcclxuICAgdGhpcy5zZWFyY2hGb3JtLmdldCgndGV4dCcpLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnNlYXJjaChyZXMpLnN1YnNjcmliZShyZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnJlc3VsdFNldHMgPSByZXN1bHRzO1xyXG4gICAgICB9KVxyXG4gICB9KVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGFyYW1zRnVuY3Rpb24ocGFyYW1zKXtcclxuICAgIGxldCBjb250cnVjdGVkUGFybXMgPSB7fTtcclxuICAgIHRoaXMudGV4dCA9IHBhcmFtc1snc2VhcmNoX3F1ZXJ5J107XHJcbiAgICBpZih0aGlzLnVzZVRvZ2dsZUZpbHRlcnMpe1xyXG4gICAgICBpZihwYXJhbXNbJ3F1aWNrRmlsdGVycyddKXtcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycyA9IHBhcmFtc1sncXVpY2tGaWx0ZXJzJ10gO1xyXG4gICAgICAgIGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdIDogdGhpcy50ZXh0ICwgcXVpY2tGaWx0ZXJzIDogdGhpcy5xdWlja0ZpbHRlcnN9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gJyc7XHJcbiAgICAgICAgY29udHJ1Y3RlZFBhcm1zID0geyBbdGhpcy5mdWxsVGV4dFBhcmFtTmFtZV0gOiB0aGlzLnRleHQgLCBxdWlja0ZpbHRlcnMgOiAnJ31cclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdIDogdGhpcy50ZXh0fVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250cnVjdGVkUGFybXM7XHJcbiAgfVxyXG4gIHVwZGF0ZVF1ZXJ5UGFyYW1zKG5ld1F1ZXJ5cGFyYW1zOiBvYmplY3QpIHtcclxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXHJcbiAgICAgIC4uLm5ld1F1ZXJ5cGFyYW1zLFxyXG4gICAgfTtcclxuICB9XHJcbiAgXHJcbiAgc2VhcmNoSW5wdXRQb3B1bGF0ZSgpIHtcclxuICAgIGlmKHRoaXMudXNlVG9nZ2xlRmlsdGVycyl7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICB0ZXh0OiB0aGlzLnRleHQsXHJcbiAgICAgICAgcGVyc29uYWxGaWxlcyA6ICh0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ3BlcnNvbmFsRmlsdGVyJyApID8gdHJ1ZSA6ICh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICE9PSBudWxsKSA/IHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgOiBmYWxzZSxcclxuICAgICAgICBkZXBGaWxlcyA6ICh0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ2RlcGFydG1lbnRGaWx0ZXInKSA/IHRydWUgOiAodGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICE9PSBudWxsKSA/IHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSA6IGZhbHNlICxcclxuICAgICAgICB3b3JrU3BhY2VGaWxlcyA6ICh0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ2RlcGFydG1lbnRXb3JrU3BhY2VGaWx0ZXInKSA/IHRydWUgOiAodGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlICE9PSBudWxsKSA/IHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSA6IGZhbHNlIFxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIHRleHQ6IHRoaXMudGV4dCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBGaWx0ZXJTZWxlY3RlZCh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCAuLi52YWwuZmlsdGVyIH07IC8vc3RvcmUgZmlsdGVyc1xyXG4gICAgdGhpcy51cGRhdGVRdWVyeVBhcmFtcyh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgcGFnaW5hdGlvbkNoYW5nZShldmVudCkgeyB9XHJcblxyXG4gIGdldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zID0gT2JqZWN0LmVudHJpZXMoZGF0YS5hZ2dyZWdhdGlvbnMgfHwge30pLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbVsxXTtcclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy5hZ2dyZWdhdGlvbnMgPSB0aGlzLmFnZ3JlZ2F0aW9ucy5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAvLyAgIHRoaXMuc29ydGluZ0FycmF5LmluY2x1ZGVzKGl0ZW0uaWQpXHJcbiAgICAvLyApO1xyXG4gICAgbGV0IHVwZGF0ZWRBZ2dyZWdhdGlvbiA9IFtdO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMubWFwKGFnZ3JlZyA9PiB7XHJcbiAgICAgIHRoaXMuc29ydGluZ0FycmF5Lm1hcChzb3J0VHlwZSA9PiB7XHJcbiAgICAgICAgaWYoc29ydFR5cGUuaWQgPT09IGFnZ3JlZy5pZCl7XHJcbiAgICAgICAgICBhZ2dyZWdbJ2NvbXBvbmVudFR5cGUnXSA9IHNvcnRUeXBlLmNvbXBvZW5lbnRUeXBlO1xyXG4gICAgICAgICAgLy8gaW4gY2FzZSBvZiBjdXN0b20gY29tcG9uZW50IG5lZWQgdG8gY2FsbCBwYWdlIHByb3ZpZGVyIHRvIGdldCBkYXRhIFxyXG4gICAgICAgICAgaWYoc29ydFR5cGUuY29tcG9lbmVudFR5cGUgPT09ICdjdXN0b20tcHAnIHx8IHNvcnRUeXBlLmNvbXBvZW5lbnRUeXBlID09PSAnY3VzdG9tLWRvY3VtZW50JyB8fCBzb3J0VHlwZS5jb21wb2VuZW50VHlwZSA9PT0gJ2N1c3RvbS1kZXBhcnRtZW50Jyl7XHJcbiAgICAgICAgICAgIGFnZ3JlZ1snY3VzdG9tUGFnZVByb3ZpZGVyJ10gPSBzb3J0VHlwZS5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgICAgIGFnZ3JlZ1snY29uZmlnJ10gPSBzb3J0VHlwZS5jb25maWdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVwZGF0ZWRBZ2dyZWdhdGlvbi5wdXNoKGFnZ3JlZylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBfLnNvcnRCeSh1cGRhdGVkQWdncmVnYXRpb24sIChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCBpID0gLTE7XHJcbiAgICAgICB0aGlzLnNvcnRpbmdBcnJheS5tYXAoKHNvcnRUeXBlICwgaW5kZXgpID0+IHtcclxuICAgICAgICAgaWYoc29ydFR5cGUuaWQgPT09IGl0ZW0uaWQpe1xyXG4gICAgICAgICAgIGkgPSBpbmRleDtcclxuICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcbiAgICAgICByZXR1cm4gaTtcclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ2FnZ3JlZ2F0aW9ucycsIHRoaXMuYWdncmVnYXRpb25zKTtcclxuICAgIHRoaXMudG90YWxSZWNvcmRzID0gZGF0YS50b3RhbFNpemU7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHt9IDtcclxuICAgIGlmKHRoaXMudXNlVG9nZ2xlRmlsdGVycyl7XHJcbiAgICAgIHBhcmFtcyA9IHtcclxuICAgICAgICBzZWFyY2hfcXVlcnk6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy50ZXh0LnZhbHVlLFxyXG4gICAgICAgIHF1aWNrRmlsdGVycyA6IHRoaXMuZ2V0VG9nZ2xlRmlsdGVycygpXHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBwYXJhbXMgPSB7XHJcbiAgICAgICAgc2VhcmNoX3F1ZXJ5OiB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMudGV4dC52YWx1ZSxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHtcclxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9nZ2xlRmlsdGVycygpIHtcclxuICAgIHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5kZXBGaWxlcy52YWx1ZTtcclxuICAgIHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMucGVyc29uYWxGaWxlcy52YWx1ZTtcclxuICAgIHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy53b3JrU3BhY2VGaWxlcy52YWx1ZTtcclxuICAgIGlmICgodGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKVxyXG4gICAgICB8fCAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBcInBlcnNvbmFsRmlsdGVyXCI7XHJcblxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gXCJkZXBhcnRtZW50RmlsdGVyXCI7XHJcblxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gXCJkZXBhcnRtZW50V29ya1NwYWNlRmlsdGVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBcImRlcGFydG1lbnRQZXJzb25hbEZpbHRlclwiO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIFwicGVyc29uYWxEZXBhcnRtZW50V29ya1NwYWNlRmlsdGVyXCI7XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gXCJkZXB0RGVwYXRtZW50V29ya1NwYWNlRmlsdGVyXCI7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9uVmFsdWUoc2VhcmNoZWRUZXh0KXtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3RleHQnKS5zZXRWYWx1ZShzZWFyY2hlZFRleHQpO1xyXG4gICAgdGhpcy5zdWJtaXRGb3JtKCk7XHJcbiAgfVxyXG4gIG9uT3BlbkZpbHRlcigpIHtcclxuICAgIHRoaXMub3BlbkZpbHRlciA9ICF0aGlzLm9wZW5GaWx0ZXI7XHJcbiAgfVxyXG5cclxuICBicmVha3BvaW50KCkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoWycobWluLXdpZHRoOiAxMjAwcHgpJ10pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQubWF0Y2hlcykge1xyXG4gICAgICAgICAgdGhpcy5vcGVuRmlsdGVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uKXtcclxuICAgIHRoaXMuYWN0aW9uT25Sb3cuZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgICAgICAub3BlcmF0aW9uKCdTZWFyY2guQ3VzdG9tU3VnZ2VzdGVyc0xhdW5jaGVyJywge1xyXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmVudmlyb25tZW50Lm51eGVvfSR7dGhpcy5lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgICAgICAgc2VhcmNoVGVybTogdGVybVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY29udGV4dCh7fSlcclxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxyXG4gICAgKTtcclxufVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tUmVzcG9uc2l2ZVN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNlYXJjaC10b29sYmFyIGQtbWQtZmxleCBkLXhsLW5vbmUgbXgtM1wiPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwib25PcGVuRmlsdGVyKClcIiBjbGFzcz1cIm15LWJ1dHRvblwiPlxyXG4gICAgICA8c3Bhbj4ge3sgXCJGSUxURVJcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgPGkgY2xhc3M9XCJiaSBiaS1maWx0ZXJcIiAqbmdJZj1cIiFvcGVuRmlsdGVyXCI+PC9pPlxyXG4gICAgICA8aSBjbGFzcz1cImJpIGJpLXhcIiAqbmdJZj1cIm9wZW5GaWx0ZXJcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgKm5nSWY9XCJvcGVuRmlsdGVyXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2FyZXQtdXAtZmlsbCBhcnJvdy11cFwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tU3R5bGUgLW10LTEyIHB4LTggZmxleCBmbGV4LWNvbFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2JnLWFjY2VudC0yMDAnOiB0aGVtZSA9PT0gJ2RnZGEnLCdiZy1hY2NlbnQtMTAwJzogdGhlbWUgPT09ICdrc3JlbGVpZicgfHwgdGhlbWUgPT09ICdjb21wdGVjaGNvJ31cIlxyXG4gICAgW0Bjb2xsYXBzZV09XCIhb3BlbkZpbHRlclwiPlxyXG4gICAgPCEtLSA8Zm9ybVxyXG4gICAgICAgIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiXHJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtZm9ybVwiXHJcbiAgICAgICAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRleHRcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBjbGFzcz1cInNlYXJjaC1pY29uIGJpIGJpLXNlYXJjaFwiPjwvZGl2PlxyXG4gICAgICA8L2Zvcm0+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLXgtMTggZmxleC1yb3cgbXQtNSBwYi0zIG92ZXJmbG93LXgtYXV0b1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb25zOyBlbHNlIHByb2dyZXNzU3Bpbm5lclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnMubGVuZ3RoOyBlbHNlIG5vQWdncmVnYXRpb25zXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9uLmJ1Y2tldHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1maWx0ZXIgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiIFtmaWx0ZXJzXT1cImFnZ3JlZ2F0aW9uLmJ1Y2tldHNcIiBbaWRdPVwiYWdncmVnYXRpb24uaWRcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGlvbnNdPVwiYWdncmVnYXRpb24uc2VsZWN0aW9uXCIgW3RpdGxlXT1cImFnZ3JlZ2F0aW9uLmZpZWxkXCIgW3ByZWZpeF09XCInc2VhcmNoJ1wiIFtkZXBhcnRtZW50XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjp0bycgfHxcclxuICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6ZnJvbSdcclxuICAgICAgICAgICAgICAgICAgXCIgW2NvbXBvbmVudFR5cGVdPVwiYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA/IGFnZ3JlZ2F0aW9uLmNvbXBvbmVudFR5cGUgOiAnZGVmdWx0J1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tUGFnZVByb3ZpZGVyXT1cImFnZ3JlZ2F0aW9uLmN1c3RvbVBhZ2VQcm92aWRlciA/IGFnZ3JlZ2F0aW9uLmN1c3RvbVBhZ2VQcm92aWRlciA6ICcnXCJcclxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiYWdncmVnYXRpb24uY29uZmlnID8gYWdncmVnYXRpb24uY29uZmlnIDoge31cIiAob25GaWx0ZXJTZWxlY3RlZCk9XCJGaWx0ZXJTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9jdHMtZHluYW1pYy1maWx0ZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiBjbGFzcz1cInJvdyB3cmFwcGVyXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1maWx0ZXIgcHgtMyBkLWZsZXggZC14bC1ub25lXCIgKm5nSWY9XCJvcGVuRmlsdGVyXCI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIGNsYXNzPVwic2VhcmNoLWZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgW21hdEF1dG9jb21wbGV0ZV09XCJtYXRBdXRvY29tcGxldGUxXCIgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICBjbGFzcz1cIlxyXG4gICAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgICAgYXV0by1jb21wbGV0ZS13cmFwcGVyXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAjbWF0QXV0b2NvbXBsZXRlMT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgPlxyXG4gICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgY2xhc3M9XCJuby10ZXh0XCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzdWx0U2V0cyAmJiAhcmVzdWx0U2V0cy5sZW5ndGhcIlxyXG4gICAgICA+XHJcbiAgICAgICAgICBObyByZXN1bHRzIGZvdW5kIVxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlc3VsdFNldCBvZiByZXN1bHRTZXRzXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAgKGNsaWNrKT1cInNldE9wdGlvblZhbHVlKHJlc3VsdFNldC5sYWJlbClcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pbmVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcmVzdWx0U2V0LmxhYmVsIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9uczsgZWxzZSBwcm9ncmVzc1NwaW5uZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb25zLmxlbmd0aDsgZWxzZSBub0FnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWdncmVnYXRpb24gb2YgYWdncmVnYXRpb25zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbi5idWNrZXRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZmlsdGVyIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIiBbZmlsdGVyc109XCJhZ2dyZWdhdGlvbi5idWNrZXRzXCIgW2lkXT1cImFnZ3JlZ2F0aW9uLmlkXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25zXT1cImFnZ3JlZ2F0aW9uLnNlbGVjdGlvblwiIFt0aXRsZV09XCJhZ2dyZWdhdGlvbi5maWVsZFwiIFtwcmVmaXhdPVwiJ3NlYXJjaCdcIiBbZGVwYXJ0bWVudF09XCJcclxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjp0bycgfHxcclxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjpmcm9tJ1xyXG4gICAgICAgICAgICAgIFwiIFtjb21wb25lbnRUeXBlXT1cImFnZ3JlZ2F0aW9uLmNvbXBvbmVudFR5cGUgPyBhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlIDogJ2RlZnVsdCdcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbVBhZ2VQcm92aWRlcl09XCJhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgPyBhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImFnZ3JlZ2F0aW9uLmNvbmZpZyA/IGFnZ3JlZ2F0aW9uLmNvbmZpZyA6IHt9XCIgKG9uRmlsdGVyU2VsZWN0ZWQpPVwiRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZmlsdGVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29sLXhsLTMgc2VhcmNoLXNpZGVNZW51IGQtbm9uZSBkLXhsLWJsb2NrXCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIiBjbGFzcz1cInNlYXJjaC1mb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInRleHRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cIm1hdEF1dG9jb21wbGV0ZTJcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2VhcmNoLnNlYXJjaCcgfCB0cmFuc2xhdGVcIiAvPlxyXG4gICAgICA8ZGl2IChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBjbGFzcz1cInNlYXJjaC1pY29uIGJpIGJpLXNlYXJjaFwiPjwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgY2xhc3M9XCJcclxuICAgICAgIGF1dG8tY29tcGxldGUtaW5lci13cmFwcGVyXHJcbiAgICAgICAgYXV0by1jb21wbGV0ZS13cmFwcGVyXHJcbiAgICBcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgI21hdEF1dG9jb21wbGV0ZTI9XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJuby10ZXh0XCIgKm5nSWY9XCJyZXN1bHRTZXRzICYmICFyZXN1bHRTZXRzLmxlbmd0aFwiPlxyXG4gICAgICAgIE5vIHJlc3VsdHMgZm91bmQhXHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVzdWx0U2V0IG9mIHJlc3VsdFNldHNcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2V0T3B0aW9uVmFsdWUocmVzdWx0U2V0LmxhYmVsKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb24taW5lci10ZXh0XCI+e3sgcmVzdWx0U2V0LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb25zOyBlbHNlIHByb2dyZXNzU3Bpbm5lclwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb24uYnVja2V0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICA8Y3RzLWR5bmFtaWMtZmlsdGVyIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIiBbZmlsdGVyc109XCJhZ2dyZWdhdGlvbi5idWNrZXRzXCIgW2lkXT1cImFnZ3JlZ2F0aW9uLmlkXCJcclxuICAgICAgICAgICAgW3NlbGVjdGlvbnNdPVwiYWdncmVnYXRpb24uc2VsZWN0aW9uXCIgW3RpdGxlXT1cImFnZ3JlZ2F0aW9uLmZpZWxkXCIgW3ByZWZpeF09XCInc2VhcmNoJ1wiIFtkZXBhcnRtZW50XT1cIlxyXG4gICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjp0bycgfHxcclxuICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6ZnJvbSdcclxuICAgICAgICAgICAgXCIgW2NvbXBvbmVudFR5cGVdPVwiYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA/IGFnZ3JlZ2F0aW9uLmNvbXBvbmVudFR5cGUgOiAnZGVmdWx0J1wiXHJcbiAgICAgICAgICAgIFtjdXN0b21QYWdlUHJvdmlkZXJdPVwiYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyID8gYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyIDogJydcIlxyXG4gICAgICAgICAgICBbY29uZmlnXT1cImFnZ3JlZ2F0aW9uLmNvbmZpZyA/IGFnZ3JlZ2F0aW9uLmNvbmZpZyA6IHt9XCIgKG9uRmlsdGVyU2VsZWN0ZWQpPVwiRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jdHMtZHluYW1pYy1maWx0ZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXhsLTlcIj5cclxuICAgIDxhcHAtY2FyZD5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgPGgzPlxyXG4gICAgICAgICAge3sgXCJzZWFyY2guaGVhZGVyXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWdncmVnYXRpb25zXCIgY2xhc3M9XCJ0YWJsZS10b29sYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNvdW50XCI+XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgXCJzZWFyY2guXCIgKyBcInJlc3VsdHNOdW1iZXJcIlxyXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IHZhbHVlOiB0b3RhbFJlY29yZHMgPyB0b3RhbFJlY29yZHMgOiAwIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktYmV0d2VlblwiIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlVG9nZ2xlRmlsdGVycyAmJiAhY3VzdG9tUmVzcG9uc2l2ZVN0eWxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbVJlc3BvbnNpdmVTdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1mb3JtIGN1c3RvbS1yZXNwb25zaXZlLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInRleHRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIGNsYXNzPVwic2VhcmNoLWljb24gYmkgYmktc2VhcmNoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgYXV0by1jb21wbGV0ZS1pbmVyLXdyYXBwZXJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvLWNvbXBsZXRlLXdyYXBwZXJcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICNtYXRBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXN1bHRTZXRzICYmICFyZXN1bHRTZXRzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3tub19yZXN1bHRfZm91bmQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVzdWx0U2V0IG9mIHJlc3VsdFNldHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAgKGNsaWNrKT1cInNldE9wdGlvblZhbHVlKHJlc3VsdFNldC5sYWJlbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWluZXItdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmVzdWx0U2V0LmxhYmVsIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24gPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwidXNlVG9nZ2xlRmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbSBjbGFzcz1cIm14LTIgc21hbGwtZm9udFwiIFtsYWJlbF09XCInc2VhcmNoLlBFUlNPTkFMX0ZJTEVTJ1wiXHJcbiAgICAgICAgICAgICAgICAgIChvblRvZ2dsZSk9XCJzdWJtaXRGb3JtKClcIiBmb3JtQ29udHJvbE5hbWU9XCJwZXJzb25hbEZpbGVzXCI+XHJcbiAgICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbT5cclxuICAgICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0gY2xhc3M9XCJteC0yIHNtYWxsLWZvbnRcIiBbbGFiZWxdPVwiJ3NlYXJjaC5ERVBfRklMRVMnXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVwRmlsZXNcIiAob25Ub2dnbGUpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbT5cclxuICAgICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0gY2xhc3M9XCJteC0yIHNtYWxsLWZvbnRcIiBbbGFiZWxdPVwiJ3NlYXJjaC5XT1JLU1BBQ0VfRklMRVMnXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndvcmtTcGFjZUZpbGVzXCIgKG9uVG9nZ2xlKT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Y3RzLWR5bmFtaWMtdGFibGUgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtyZXNwb25zaXZlQ29sdW1uc109XCJyZXNwb25zaXZlQ29sdW1uc1wiXHJcbiAgICAgICAgICBbcGFnZVByb3ZpZGVyXT1cInBhZ2VQcm92aWRlclwiIFtxdWlja0ZpbHRlcl09XCJmaWx0ZXJcIiBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCIgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gICAgICAgICAgW3F1ZXJ5UGFyYW1dPVwicXVlcnlQYXJhbXNcIiBbaGVhZGVyc109XCJoZWFkZXJzXCIgW3ByZWZpeF09XCJwcmVmaXhcIiBbc29ydGluZ0J5XT1cInNvcnRpbmdCeVwiIFtpc1NlYXJjaFBhZ2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAob25Sb3dTZWxlY3RlZCk9XCJvblJvd1NlbGVjdGVkKCRldmVudClcIiAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgIChvbkdldHRpbmdEYXRhKT1cImdldFRhYmxlRGF0YSgkZXZlbnQpXCI+PC9jdHMtZHluYW1pYy10YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2FwcC1jYXJkPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3Byb2dyZXNzU3Bpbm5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCI+XHJcbiAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cIndhcm5cIiBbZGlhbWV0ZXJdPVwiMjVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI25vQWdncmVnYXRpb25zPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXJcIj5cclxuICAgICAge3sgXCJzZWFyY2gubm9BZ2dyZWdhdGlvbnNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+Il19
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQTRCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBR3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBZUgsTUFBTSxPQUFPLHNCQUFzQjtJQXdEakMsWUFDVSxLQUFxQixFQUNyQixNQUFjLEVBQ2QsZ0JBQW9DLEVBQ3BDLFlBQTJCLEVBQ0osV0FBVyxFQUNuQyxrQkFBc0M7UUFMckMsVUFBSyxHQUFMLEtB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QUNWLE9BQU8sQ0FBQyxVQUFVLEVBQUU7NEJBQ2xCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzs0QkFDckUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDOzRCQUMzRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDekMsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQzFDLENBQUM7cUJBQ0g7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzswQkE4REksTUFBTTsyQkFBQyxhQUFhOzZFQXpEZCxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBT0ksV0FBVztzQkFBcEIsTUFBTTtnQkFhUCxZQUFZO3NCQURYLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERvY3VtZW50c0NvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbnN0YW50cy9kb2N1bWVudHMnO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgQVVUT19TVFlMRSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IHRocmVhZElkIH0gZnJvbSAnd29ya2VyX3RocmVhZHMnO1xyXG5pbXBvcnQgeyBFdmFsdWF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9ldmFsdWF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBEeW5hbWljIHNlYXJjaCBjb21wb25lbnQgdXNlcyBbRHluYW1pYyBUYWJsZV17QGxpbmsgRHluYW1pY1RhYmxlQ29tcG9uZW50fSAmIFtEeW5hbWljIEZpbHRlcl17QGxpbmsgRHluYW1pY0ZpbHRlckNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogYW5kIHV0aWxpemVzIGl0cyBpbnB1dHMgdG8gcGVyZm9ybSBhZHZhbmNlZCBzZWFyY2ggYW5kIGZpbHRlcmluZyBvbiBhbnkgbnV4ZW8gUHJvdmlkZXJcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgU2VhcmNoXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxjdHMtZHluYW1pYy1zZWFyY2hcclxuICogICBbcGFnZVByb3ZpZGVyXT1cIidwYWdlUHJvdmlkZXJOYW1lJ1wiXHJcbiAqICAgW2NvbHVtbnNdPVwiY29sdW1uc0FycmF5XCJcclxuICogICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNBcnJheVwiXHJcbiAqICAgW2VudGl0eVR5cGVdPVwiJ2RvY3VtZW50cydcIlxyXG4gKiAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgW2hlYWRlcnNdPVwiaGVhZGVyc1wiXHJcbiAqICAgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIlxyXG4gKiAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiogICAgW2N1c3RvbVJlc3BvbnNpdmVTdHlsZV09XCJmYWxzZSBvciB0cnVlXCJcclxuICAgICBbb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGVdPVwicGFzcyBGaWx0ZXIgc3RhdGUgZnJvbSBwYXJlbnQgY29tcG9uZW50XCJcclxuICAgICBbdGhlbWVdID0gXCJ0byAgc2V0IGJhY2tncm91bmQgZGVwZW5lZCBvbiB0aGVtZVwiXHJcbiAqID5cclxuICogPC9jdHMtZHluYW1pYy1zZWFyY2g+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N0cy1keW5hbWljLXNlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2NvbGxhcHNlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IGhlaWdodDogQVVUT19TVFlMRSwgdmlzaWJpbGl0eTogQVVUT19TVFlMRSB9KSksXHJcbiAgICAgIHN0YXRlKCd0cnVlJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdmYWxzZSA9PiB0cnVlJywgYW5pbWF0ZSgzMDApKSxcclxuICAgICAgdHJhbnNpdGlvbigndHJ1ZSA9PiBmYWxzZScsIGFuaW1hdGUoMzAwKSlcclxuICAgIF0pXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGFnZ3JlZ2F0aW9ucztcclxuICAvKiogQXJyYXkgb2YgY29sdW1ucyAqL1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM7XHJcbiAgLyoqIEFycmF5IG9mIGNvbHVtbnMgb24gc21hbGxlciBzY3JlZW5zICovXHJcbiAgQElucHV0KCkgcmVzcG9uc2l2ZUNvbHVtbnM/O1xyXG4gIC8qKiBEZWZpbmVzIHRoZSBwYWdlIGluIHdoaWNoIHRhYmxlIGlzIGJlaW5nIHVzZWQgKi9cclxuICBASW5wdXQoKSBlbnRpdHlUeXBlOiBzdHJpbmc7XHJcbiAgLyoqIFRyYW5zbGF0aW9ucyBwcmVmaXggKi9cclxuICBASW5wdXQoKSBwcmVmaXggPSAnJztcclxuICAvKiogSGVhZGVycyB0byBiZSBzZW50IHdpdGggQVBJIFJlcXVlc3QgKi9cclxuICBASW5wdXQoKSBoZWFkZXJzO1xyXG4gIC8qKiBGaWVsZHMga2V5bWFwIHRvIGJlIG1hcHBlZCBpbiB0aGUgYWRhcHRlciAqL1xyXG4gIEBJbnB1dCgpIGZpZWxkcztcclxuICAvKiogUGFnZSBQcm92aWRlciBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJldHJpZXZlIGRhdGEgKi9cclxuICBASW5wdXQoKSBwYWdlUHJvdmlkZXI7XHJcbiAgLyoqIENvbnRyb2xzIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBpbiB0YWJsZSAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplO1xyXG4gIC8qKiBTb3J0aW5nIGNvbHVtbiAqL1xyXG4gIEBJbnB1dCgpIHNvcnRpbmdCeT89IHt9O1xyXG4gIEBJbnB1dCgpIGZ1bGxUZXh0UGFyYW1OYW1lID0gJ3N5c3RlbV9mdWxsdGV4dCc7XHJcbiAgQElucHV0KCkgZmlsdGVyOyAvLyB1c2VkIHRvIHBhc3MgcGFyYW1zIGZyb20gb3V0c2lkZSB0byBwYXJhbXMgb2YgZHluYW1pYyB0YWJsZSBkaXJlY3RseVxyXG5cclxuICBASW5wdXQoKSBcclxuICBvblJvd1NlbGVjdGVkID0gKHJvdykgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyB2aWV3ZXI6IFsndmlldycsIHJvd1sndWlkJ11dIH0gfV0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKiB1c2VkIHRvIGVtaXQgYW55IGFjdGlvbnMgdG8gb3V0c2lkZSAqL1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBxdWVyeVBhcmFtcyA9IHt9O1xyXG4gIGZpbHRlcnM7XHJcbiAgc2VhcmNoRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdGV4dDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgcGVyc29uYWxGaWxlcyA6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXHJcbiAgICBkZXBGaWxlcyA6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXHJcbiAgICB3b3JrU3BhY2VGaWxlcyA6IG5ldyBGb3JtQ29udHJvbChmYWxzZSlcclxuICB9KTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgdG90YWxSZWNvcmRzO1xyXG4gIG9wZW5GaWx0ZXI6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBzb3J0aW5nQXJyYXk7XHJcbiAgQElucHV0KCkgY3VzdG9tUmVzcG9uc2l2ZVN0eWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0aGVtZSA6YW55O1xyXG4gIHVzZVRvZ2dsZUZpbHRlcnM7XHJcblxyXG4gIHF1aWNrRmlsdGVycyA9ICcnO1xyXG4gIHNhdmVkUGVyc0ZpbHRlclZhbHVlID0gbnVsbDtcclxuICBzYXZlZERlcEZpbHRlclZhbHVlID0gbnVsbDtcclxuICBzYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlID0gbnVsbDtcclxuXHJcbiAgcmVzdWx0U2V0cyA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBldmFsdWF0b3JTZXJ2aWNlIDogRXZhbHVhdG9yc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG51eGVvU2VydmljZSA6IE51eGVvU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICkgeyBcclxuICAgIHRoaXMuZXZhbHVhdG9yU2VydmljZS5ldmFsdWF0ZVJ1bGUoJ2VuYWJsZVNlYXJjaFRvZ2dsZXMnICwge30pLnRoZW4ocmVzID0+IHtcclxuICAgICAgdGhpcy51c2VUb2dnbGVGaWx0ZXJzID0gcmVzO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmKGNoYW5nZXMub3BlbkNsb3NlRmlsdGVyRnJvbU91dHNpZGUpIHtcclxuICAgICAgdGhpcy5vcGVuRmlsdGVyID0gY2hhbmdlcy5vcGVuQ2xvc2VGaWx0ZXJGcm9tT3V0c2lkZS5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy51cGRhdGVRdWVyeVBhcmFtcyh0aGlzLmNvbnN0cnVjdFBhcmFtc0Z1bmN0aW9uKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpKTtcclxuICAgIHRoaXMuc2VhcmNoSW5wdXRQb3B1bGF0ZSgpO1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKHRoaXMudGV4dCAhPT0gcGFyYW1zWydzZWFyY2hfcXVlcnknXSAmJiBwYXJhbXNbJ3NlYXJjaF9xdWVyeSddKSB8fFxyXG4gICAgICAgIChwYXJhbXNbJ3NlYXJjaF9xdWVyeSddPy5sZW5ndGggPT0gMCAmJiB0aGlzLnRleHQgIT09IHBhcmFtc1snc2VhcmNoX3F1ZXJ5J10gfHwgXHJcbiAgICAgICAgKHRoaXMudXNlVG9nZ2xlRmlsdGVycyAmJiB0aGlzLnF1aWNrRmlsdGVycyAhPT0gcGFyYW1zWydxdWlja0ZpbHRlcnMnXSkpIFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKHRoaXMuY29uc3RydWN0UGFyYW1zRnVuY3Rpb24ocGFyYW1zKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFBvcHVsYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5icmVha3BvaW50KCk7XHJcbiAgICBcclxuICAgdGhpcy5zZWFyY2hGb3JtLmdldCgndGV4dCcpLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnNlYXJjaChyZXMpLnN1YnNjcmliZShyZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnJlc3VsdFNldHMgPSByZXN1bHRzO1xyXG4gICAgICB9KVxyXG4gICB9KVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGFyYW1zRnVuY3Rpb24ocGFyYW1zKXtcclxuICAgIGxldCBjb250cnVjdGVkUGFybXMgPSB7fTtcclxuICAgIHRoaXMudGV4dCA9IHBhcmFtc1snc2VhcmNoX3F1ZXJ5J107XHJcbiAgICBpZih0aGlzLnVzZVRvZ2dsZUZpbHRlcnMpe1xyXG4gICAgICBpZihwYXJhbXNbJ3F1aWNrRmlsdGVycyddKXtcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycyA9IHBhcmFtc1sncXVpY2tGaWx0ZXJzJ10gO1xyXG4gICAgICAgIGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdIDogdGhpcy50ZXh0ICwgcXVpY2tGaWx0ZXJzIDogdGhpcy5xdWlja0ZpbHRlcnN9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gJyc7XHJcbiAgICAgICAgY29udHJ1Y3RlZFBhcm1zID0geyBbdGhpcy5mdWxsVGV4dFBhcmFtTmFtZV0gOiB0aGlzLnRleHQgLCBxdWlja0ZpbHRlcnMgOiAnJ31cclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGNvbnRydWN0ZWRQYXJtcyA9IHsgW3RoaXMuZnVsbFRleHRQYXJhbU5hbWVdIDogdGhpcy50ZXh0fVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250cnVjdGVkUGFybXM7XHJcbiAgfVxyXG4gIHVwZGF0ZVF1ZXJ5UGFyYW1zKG5ld1F1ZXJ5cGFyYW1zOiBvYmplY3QpIHtcclxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXHJcbiAgICAgIC4uLm5ld1F1ZXJ5cGFyYW1zLFxyXG4gICAgfTtcclxuICB9XHJcbiAgXHJcbiAgc2VhcmNoSW5wdXRQb3B1bGF0ZSgpIHtcclxuICAgIGlmKHRoaXMudXNlVG9nZ2xlRmlsdGVycyl7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICB0ZXh0OiB0aGlzLnRleHQsXHJcbiAgICAgICAgcGVyc29uYWxGaWxlcyA6ICh0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ3BlcnNvbmFsRmlsdGVyJyApID8gdHJ1ZSA6ICh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICE9PSBudWxsKSA/IHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgOiBmYWxzZSxcclxuICAgICAgICBkZXBGaWxlcyA6ICh0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ2RlcGFydG1lbnRGaWx0ZXInKSA/IHRydWUgOiAodGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICE9PSBudWxsKSA/IHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSA6IGZhbHNlICxcclxuICAgICAgICB3b3JrU3BhY2VGaWxlcyA6ICh0aGlzLnF1aWNrRmlsdGVycyA9PT0gJ2RlcGFydG1lbnRXb3JrU3BhY2VGaWx0ZXInKSA/IHRydWUgOiAodGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlICE9PSBudWxsKSA/IHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSA6IGZhbHNlIFxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIHRleHQ6IHRoaXMudGV4dCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBGaWx0ZXJTZWxlY3RlZCh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCAuLi52YWwuZmlsdGVyIH07IC8vc3RvcmUgZmlsdGVyc1xyXG4gICAgdGhpcy51cGRhdGVRdWVyeVBhcmFtcyh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgcGFnaW5hdGlvbkNoYW5nZShldmVudCkgeyB9XHJcblxyXG4gIGdldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zID0gT2JqZWN0LmVudHJpZXMoZGF0YS5hZ2dyZWdhdGlvbnMgfHwge30pLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbVsxXTtcclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy5hZ2dyZWdhdGlvbnMgPSB0aGlzLmFnZ3JlZ2F0aW9ucy5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAvLyAgIHRoaXMuc29ydGluZ0FycmF5LmluY2x1ZGVzKGl0ZW0uaWQpXHJcbiAgICAvLyApO1xyXG4gICAgbGV0IHVwZGF0ZWRBZ2dyZWdhdGlvbiA9IFtdO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMubWFwKGFnZ3JlZyA9PiB7XHJcbiAgICAgIHRoaXMuc29ydGluZ0FycmF5Lm1hcChzb3J0VHlwZSA9PiB7XHJcbiAgICAgICAgaWYoc29ydFR5cGUuaWQgPT09IGFnZ3JlZy5pZCl7XHJcbiAgICAgICAgICBhZ2dyZWdbJ2NvbXBvbmVudFR5cGUnXSA9IHNvcnRUeXBlLmNvbXBvZW5lbnRUeXBlO1xyXG4gICAgICAgICAgLy8gaW4gY2FzZSBvZiBjdXN0b20gY29tcG9uZW50IG5lZWQgdG8gY2FsbCBwYWdlIHByb3ZpZGVyIHRvIGdldCBkYXRhIFxyXG4gICAgICAgICAgaWYoc29ydFR5cGUuY29tcG9lbmVudFR5cGUgPT09ICdjdXN0b20tcHAnIHx8IHNvcnRUeXBlLmNvbXBvZW5lbnRUeXBlID09PSAnY3VzdG9tLWRvY3VtZW50JyB8fCBzb3J0VHlwZS5jb21wb2VuZW50VHlwZSA9PT0gJ2N1c3RvbS1kZXBhcnRtZW50Jyl7XHJcbiAgICAgICAgICAgIGFnZ3JlZ1snY3VzdG9tUGFnZVByb3ZpZGVyJ10gPSBzb3J0VHlwZS5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgICAgIGFnZ3JlZ1snY29uZmlnJ10gPSBzb3J0VHlwZS5jb25maWdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVwZGF0ZWRBZ2dyZWdhdGlvbi5wdXNoKGFnZ3JlZylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBfLnNvcnRCeSh1cGRhdGVkQWdncmVnYXRpb24sIChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCBpID0gLTE7XHJcbiAgICAgICB0aGlzLnNvcnRpbmdBcnJheS5tYXAoKHNvcnRUeXBlICwgaW5kZXgpID0+IHtcclxuICAgICAgICAgaWYoc29ydFR5cGUuaWQgPT09IGl0ZW0uaWQpe1xyXG4gICAgICAgICAgIGkgPSBpbmRleDtcclxuICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcbiAgICAgICByZXR1cm4gaTtcclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ2FnZ3JlZ2F0aW9ucycsIHRoaXMuYWdncmVnYXRpb25zKTtcclxuICAgIHRoaXMudG90YWxSZWNvcmRzID0gZGF0YS50b3RhbFNpemU7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHt9IDtcclxuICAgIGlmKHRoaXMudXNlVG9nZ2xlRmlsdGVycyl7XHJcbiAgICAgIHBhcmFtcyA9IHtcclxuICAgICAgICBzZWFyY2hfcXVlcnk6IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy50ZXh0LnZhbHVlLFxyXG4gICAgICAgIHF1aWNrRmlsdGVycyA6IHRoaXMuZ2V0VG9nZ2xlRmlsdGVycygpXHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBwYXJhbXMgPSB7XHJcbiAgICAgICAgc2VhcmNoX3F1ZXJ5OiB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMudGV4dC52YWx1ZSxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHtcclxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9nZ2xlRmlsdGVycygpIHtcclxuICAgIHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy5kZXBGaWxlcy52YWx1ZTtcclxuICAgIHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgPSB0aGlzLnNlYXJjaEZvcm0uY29udHJvbHMucGVyc29uYWxGaWxlcy52YWx1ZTtcclxuICAgIHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSA9IHRoaXMuc2VhcmNoRm9ybS5jb250cm9scy53b3JrU3BhY2VGaWxlcy52YWx1ZTtcclxuICAgIGlmICgodGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKVxyXG4gICAgICB8fCAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBcInBlcnNvbmFsRmlsdGVyXCI7XHJcblxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkRGVwRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gXCJkZXBhcnRtZW50RmlsdGVyXCI7XHJcblxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zYXZlZFBlcnNGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gXCJkZXBhcnRtZW50V29ya1NwYWNlRmlsdGVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNhdmVkUGVyc0ZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiAhdGhpcy5zYXZlZHdvcmtTcGFjZUZpbHRlclZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBcImRlcGFydG1lbnRQZXJzb25hbEZpbHRlclwiO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgIXRoaXMuc2F2ZWREZXBGaWx0ZXJWYWx1ZSAmJiB0aGlzLnNhdmVkd29ya1NwYWNlRmlsdGVyVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIFwicGVyc29uYWxEZXBhcnRtZW50V29ya1NwYWNlRmlsdGVyXCI7XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXRoaXMuc2F2ZWRQZXJzRmlsdGVyVmFsdWUgJiYgdGhpcy5zYXZlZERlcEZpbHRlclZhbHVlICYmIHRoaXMuc2F2ZWR3b3JrU3BhY2VGaWx0ZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gXCJkZXB0RGVwYXRtZW50V29ya1NwYWNlRmlsdGVyXCI7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9uVmFsdWUoc2VhcmNoZWRUZXh0KXtcclxuICAgIHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3RleHQnKS5zZXRWYWx1ZShzZWFyY2hlZFRleHQpO1xyXG4gICAgdGhpcy5zdWJtaXRGb3JtKCk7XHJcbiAgfVxyXG4gIG9uT3BlbkZpbHRlcigpIHtcclxuICAgIHRoaXMub3BlbkZpbHRlciA9ICF0aGlzLm9wZW5GaWx0ZXI7XHJcbiAgfVxyXG5cclxuICBicmVha3BvaW50KCkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoWycobWluLXdpZHRoOiAxMjAwcHgpJ10pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQubWF0Y2hlcykge1xyXG4gICAgICAgICAgdGhpcy5vcGVuRmlsdGVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uKXtcclxuICAgIHRoaXMuYWN0aW9uT25Sb3cuZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgICAgICAub3BlcmF0aW9uKCdTZWFyY2guQ3VzdG9tU3VnZ2VzdGVyc0xhdW5jaGVyJywge1xyXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmVudmlyb25tZW50Lm51eGVvfSR7dGhpcy5lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgICAgICAgc2VhcmNoVGVybTogdGVybVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY29udGV4dCh7fSlcclxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxyXG4gICAgKTtcclxufVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tUmVzcG9uc2l2ZVN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNlYXJjaC10b29sYmFyIGQtbWQtZmxleCBkLXhsLW5vbmUgbXgtM1wiPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwib25PcGVuRmlsdGVyKClcIiBjbGFzcz1cIm15LWJ1dHRvblwiPlxyXG4gICAgICA8c3Bhbj4ge3sgXCJGSUxURVJcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgPGkgY2xhc3M9XCJiaSBiaS1maWx0ZXJcIiAqbmdJZj1cIiFvcGVuRmlsdGVyXCI+PC9pPlxyXG4gICAgICA8aSBjbGFzcz1cImJpIGJpLXhcIiAqbmdJZj1cIm9wZW5GaWx0ZXJcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgKm5nSWY9XCJvcGVuRmlsdGVyXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2FyZXQtdXAtZmlsbCBhcnJvdy11cFwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tU3R5bGUgLW10LTEyIHB4LTggZmxleCBmbGV4LWNvbFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2JnLWFjY2VudC0yMDAnOiB0aGVtZSA9PT0gJ2RnZGEnLCdiZy1hY2NlbnQtMTAwJzogdGhlbWUgPT09ICdrc3JlbGVpZicgfHwgdGhlbWUgPT09ICdjb21wdGVjaGNvJ31cIlxyXG4gICAgW0Bjb2xsYXBzZV09XCIhb3BlbkZpbHRlclwiPlxyXG4gICAgPCEtLSA8Zm9ybVxyXG4gICAgICAgIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiXHJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtZm9ybVwiXHJcbiAgICAgICAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRleHRcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBjbGFzcz1cInNlYXJjaC1pY29uIGJpIGJpLXNlYXJjaFwiPjwvZGl2PlxyXG4gICAgICA8L2Zvcm0+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLXgtMTggZmxleC1yb3cgbXQtNSBwYi0zIG92ZXJmbG93LXgtYXV0b1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb25zOyBlbHNlIHByb2dyZXNzU3Bpbm5lclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbnMubGVuZ3RoOyBlbHNlIG5vQWdncmVnYXRpb25zXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9uLmJ1Y2tldHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1maWx0ZXIgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiIFtmaWx0ZXJzXT1cImFnZ3JlZ2F0aW9uLmJ1Y2tldHNcIiBbaWRdPVwiYWdncmVnYXRpb24uaWRcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGlvbnNdPVwiYWdncmVnYXRpb24uc2VsZWN0aW9uXCIgW3RpdGxlXT1cImFnZ3JlZ2F0aW9uLmZpZWxkXCIgW3ByZWZpeF09XCInc2VhcmNoJ1wiIFtkZXBhcnRtZW50XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjp0bycgfHxcclxuICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6ZnJvbSdcclxuICAgICAgICAgICAgICAgICAgXCIgW2NvbXBvbmVudFR5cGVdPVwiYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA/IGFnZ3JlZ2F0aW9uLmNvbXBvbmVudFR5cGUgOiAnZGVmdWx0J1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tUGFnZVByb3ZpZGVyXT1cImFnZ3JlZ2F0aW9uLmN1c3RvbVBhZ2VQcm92aWRlciA/IGFnZ3JlZ2F0aW9uLmN1c3RvbVBhZ2VQcm92aWRlciA6ICcnXCJcclxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiYWdncmVnYXRpb24uY29uZmlnID8gYWdncmVnYXRpb24uY29uZmlnIDoge31cIiAob25GaWx0ZXJTZWxlY3RlZCk9XCJGaWx0ZXJTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9jdHMtZHluYW1pYy1maWx0ZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiBjbGFzcz1cInJvdyB3cmFwcGVyXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21SZXNwb25zaXZlU3R5bGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1maWx0ZXIgcHgtMyBkLWZsZXggZC14bC1ub25lXCIgKm5nSWY9XCJvcGVuRmlsdGVyXCI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIGNsYXNzPVwic2VhcmNoLWZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgW21hdEF1dG9jb21wbGV0ZV09XCJtYXRBdXRvY29tcGxldGUxXCIgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgICAgPGRpdiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgY2xhc3M9XCJzZWFyY2gtaWNvbiBiaSBiaS1zZWFyY2hcIj48L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICBjbGFzcz1cIlxyXG4gICAgICAgICBhdXRvLWNvbXBsZXRlLWluZXItd3JhcHBlclxyXG4gICAgICAgICAgYXV0by1jb21wbGV0ZS13cmFwcGVyXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAjbWF0QXV0b2NvbXBsZXRlMT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgPlxyXG4gICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgY2xhc3M9XCJuby10ZXh0XCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzdWx0U2V0cyAmJiAhcmVzdWx0U2V0cy5sZW5ndGhcIlxyXG4gICAgICA+XHJcbiAgICAgICAgICBObyByZXN1bHRzIGZvdW5kIVxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlc3VsdFNldCBvZiByZXN1bHRTZXRzXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAgKGNsaWNrKT1cInNldE9wdGlvblZhbHVlKHJlc3VsdFNldC5sYWJlbClcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pbmVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgcmVzdWx0U2V0LmxhYmVsIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0aW9uczsgZWxzZSBwcm9ncmVzc1NwaW5uZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb25zLmxlbmd0aDsgZWxzZSBub0FnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWdncmVnYXRpb24gb2YgYWdncmVnYXRpb25zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGlvbi5idWNrZXRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZmlsdGVyIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIiBbZmlsdGVyc109XCJhZ2dyZWdhdGlvbi5idWNrZXRzXCIgW2lkXT1cImFnZ3JlZ2F0aW9uLmlkXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25zXT1cImFnZ3JlZ2F0aW9uLnNlbGVjdGlvblwiIFt0aXRsZV09XCJhZ2dyZWdhdGlvbi5maWVsZFwiIFtwcmVmaXhdPVwiJ3NlYXJjaCdcIiBbZGVwYXJ0bWVudF09XCJcclxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjp0bycgfHxcclxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjpmcm9tJ1xyXG4gICAgICAgICAgICAgIFwiIFtjb21wb25lbnRUeXBlXT1cImFnZ3JlZ2F0aW9uLmNvbXBvbmVudFR5cGUgPyBhZ2dyZWdhdGlvbi5jb21wb25lbnRUeXBlIDogJ2RlZnVsdCdcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbVBhZ2VQcm92aWRlcl09XCJhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgPyBhZ2dyZWdhdGlvbi5jdXN0b21QYWdlUHJvdmlkZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImFnZ3JlZ2F0aW9uLmNvbmZpZyA/IGFnZ3JlZ2F0aW9uLmNvbmZpZyA6IHt9XCIgKG9uRmlsdGVyU2VsZWN0ZWQpPVwiRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZmlsdGVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29sLXhsLTMgc2VhcmNoLXNpZGVNZW51IGQtbm9uZSBkLXhsLWJsb2NrXCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIiBjbGFzcz1cInNlYXJjaC1mb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInRleHRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cIm1hdEF1dG9jb21wbGV0ZTJcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2VhcmNoLnNlYXJjaCcgfCB0cmFuc2xhdGVcIiAvPlxyXG4gICAgICA8ZGl2IChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBjbGFzcz1cInNlYXJjaC1pY29uIGJpIGJpLXNlYXJjaFwiPjwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgY2xhc3M9XCJcclxuICAgICAgIGF1dG8tY29tcGxldGUtaW5lci13cmFwcGVyXHJcbiAgICAgICAgYXV0by1jb21wbGV0ZS13cmFwcGVyXHJcbiAgICBcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgI21hdEF1dG9jb21wbGV0ZTI9XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJuby10ZXh0XCIgKm5nSWY9XCJyZXN1bHRTZXRzICYmICFyZXN1bHRTZXRzLmxlbmd0aFwiPlxyXG4gICAgICAgIE5vIHJlc3VsdHMgZm91bmQhXHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVzdWx0U2V0IG9mIHJlc3VsdFNldHNcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2V0T3B0aW9uVmFsdWUocmVzdWx0U2V0LmxhYmVsKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb24taW5lci10ZXh0XCI+e3sgcmVzdWx0U2V0LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb25zOyBlbHNlIHByb2dyZXNzU3Bpbm5lclwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWdncmVnYXRpb24uYnVja2V0cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICA8Y3RzLWR5bmFtaWMtZmlsdGVyIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIiBbZmlsdGVyc109XCJhZ2dyZWdhdGlvbi5idWNrZXRzXCIgW2lkXT1cImFnZ3JlZ2F0aW9uLmlkXCJcclxuICAgICAgICAgICAgW3NlbGVjdGlvbnNdPVwiYWdncmVnYXRpb24uc2VsZWN0aW9uXCIgW3RpdGxlXT1cImFnZ3JlZ2F0aW9uLmZpZWxkXCIgW3ByZWZpeF09XCInc2VhcmNoJ1wiIFtkZXBhcnRtZW50XT1cIlxyXG4gICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpZWxkID09PSAnY29ycjp0bycgfHxcclxuICAgICAgICAgICAgICBhZ2dyZWdhdGlvbi5maWVsZCA9PT0gJ2NvcnI6ZnJvbSdcclxuICAgICAgICAgICAgXCIgW2NvbXBvbmVudFR5cGVdPVwiYWdncmVnYXRpb24uY29tcG9uZW50VHlwZSA/IGFnZ3JlZ2F0aW9uLmNvbXBvbmVudFR5cGUgOiAnZGVmdWx0J1wiXHJcbiAgICAgICAgICAgIFtjdXN0b21QYWdlUHJvdmlkZXJdPVwiYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyID8gYWdncmVnYXRpb24uY3VzdG9tUGFnZVByb3ZpZGVyIDogJydcIlxyXG4gICAgICAgICAgICBbY29uZmlnXT1cImFnZ3JlZ2F0aW9uLmNvbmZpZyA/IGFnZ3JlZ2F0aW9uLmNvbmZpZyA6IHt9XCIgKG9uRmlsdGVyU2VsZWN0ZWQpPVwiRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jdHMtZHluYW1pYy1maWx0ZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXhsLTlcIj5cclxuICAgIDxhcHAtY2FyZD5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgPGgzPlxyXG4gICAgICAgICAge3sgXCJzZWFyY2guaGVhZGVyXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWdncmVnYXRpb25zXCIgY2xhc3M9XCJ0YWJsZS10b29sYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNvdW50XCI+XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgXCJzZWFyY2guXCIgKyBcInJlc3VsdHNOdW1iZXJcIlxyXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IHZhbHVlOiB0b3RhbFJlY29yZHMgPyB0b3RhbFJlY29yZHMgOiAwIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktYmV0d2VlblwiIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlVG9nZ2xlRmlsdGVycyAmJiAhY3VzdG9tUmVzcG9uc2l2ZVN0eWxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbVJlc3BvbnNpdmVTdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1mb3JtIGN1c3RvbS1yZXNwb25zaXZlLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInRleHRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIGNsYXNzPVwic2VhcmNoLWljb24gYmkgYmktc2VhcmNoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgYXV0by1jb21wbGV0ZS1pbmVyLXdyYXBwZXJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvLWNvbXBsZXRlLXdyYXBwZXJcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICNtYXRBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXN1bHRTZXRzICYmICFyZXN1bHRTZXRzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3tub19yZXN1bHRfZm91bmQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVzdWx0U2V0IG9mIHJlc3VsdFNldHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAgKGNsaWNrKT1cInNldE9wdGlvblZhbHVlKHJlc3VsdFNldC5sYWJlbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWluZXItdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmVzdWx0U2V0LmxhYmVsIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24gPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwidXNlVG9nZ2xlRmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPGN0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbSBjbGFzcz1cIm14LTIgc21hbGwtZm9udFwiIFtsYWJlbF09XCInc2VhcmNoLlBFUlNPTkFMX0ZJTEVTJ1wiXHJcbiAgICAgICAgICAgICAgICAgIChvblRvZ2dsZSk9XCJzdWJtaXRGb3JtKClcIiBmb3JtQ29udHJvbE5hbWU9XCJwZXJzb25hbEZpbGVzXCI+XHJcbiAgICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbT5cclxuICAgICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0gY2xhc3M9XCJteC0yIHNtYWxsLWZvbnRcIiBbbGFiZWxdPVwiJ3NlYXJjaC5ERVBfRklMRVMnXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVwRmlsZXNcIiAob25Ub2dnbGUpPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2N0cy1keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbT5cclxuICAgICAgICAgICAgICAgIDxjdHMtZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0gY2xhc3M9XCJteC0yIHNtYWxsLWZvbnRcIiBbbGFiZWxdPVwiJ3NlYXJjaC5XT1JLU1BBQ0VfRklMRVMnXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndvcmtTcGFjZUZpbGVzXCIgKG9uVG9nZ2xlKT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Y3RzLWR5bmFtaWMtdGFibGUgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtyZXNwb25zaXZlQ29sdW1uc109XCJyZXNwb25zaXZlQ29sdW1uc1wiXHJcbiAgICAgICAgICBbcGFnZVByb3ZpZGVyXT1cInBhZ2VQcm92aWRlclwiIFtxdWlja0ZpbHRlcl09XCJmaWx0ZXJcIiBbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCIgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gICAgICAgICAgW3F1ZXJ5UGFyYW1dPVwicXVlcnlQYXJhbXNcIiBbaGVhZGVyc109XCJoZWFkZXJzXCIgW3ByZWZpeF09XCJwcmVmaXhcIiBbc29ydGluZ0J5XT1cInNvcnRpbmdCeVwiIFtpc1NlYXJjaFBhZ2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAob25Sb3dTZWxlY3RlZCk9XCJvblJvd1NlbGVjdGVkKCRldmVudClcIiAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgIChvbkdldHRpbmdEYXRhKT1cImdldFRhYmxlRGF0YSgkZXZlbnQpXCI+PC9jdHMtZHluYW1pYy10YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2FwcC1jYXJkPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3Byb2dyZXNzU3Bpbm5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCI+XHJcbiAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cIndhcm5cIiBbZGlhbWV0ZXJdPVwiMjVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI25vQWdncmVnYXRpb25zPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXJcIj5cclxuICAgICAge3sgXCJzZWFyY2gubm9BZ2dyZWdhdGlvbnNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+Il19
@@ -65,6 +65,8 @@ export class DynamicTableComponent {
65
65
  this.isSearchPage = false;
66
66
  /** allow multiselect rows with checkbox */
67
67
  this.multiSelectRows = false;
68
+ /** to show 1st row with custom template in the table*/
69
+ this.customFirstRow = false;
68
70
  this.highlightSelectedCard = false;
69
71
  this.filterParams = {};
70
72
  this.pageNum = 1;
@@ -169,7 +171,7 @@ export class DynamicTableComponent {
169
171
  }
170
172
  }
171
173
  DynamicTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DynamicTableComponent, deps: [{ token: i1.AdapterService }, { token: i2.CallApiService }, { token: i3.DynamicTableService }], target: i0.ɵɵFactoryTarget.Component });
172
- DynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: DynamicTableComponent, selector: "cts-dynamic-table", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", sortingBy: "sortingBy", queryParam: "queryParam", quickFilter: "quickFilter", report: "report", rowCursor: "rowCursor", fullWidth: "fullWidth", tableMode: "tableMode", tableActions: "tableActions", defultSort: "defultSort", range: "range", isSearchPage: "isSearchPage", multiSelectRows: "multiSelectRows", highlightSelectedCard: "highlightSelectedCard", filterParams: "filterParams" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapping\">\r\n <div class=\"table-reposition\">\r\n <cts-table\r\n *ngIf=\"rows.length\"\r\n [rows]=\"rows\"\r\n [columns]=\"columns\"\r\n [responsiveColumns]=\"responsiveColumns\"\r\n [rowCursor]=\"rowCursor\"\r\n [fullWidth]=\"fullWidth\"\r\n [entityType]=\"entityType\"\r\n [prefix]=\"prefix\"\r\n [totalRecords]=\"totalRecords\"\r\n [tableMode]=\"tableMode\"\r\n [multiSelectRows]=\"multiSelectRows\"\r\n [tableActions]=\"tableActions\"\r\n [defultSort]=\"defultSort\"\r\n [highlightSelectedCard]=\"highlightSelectedCard\"\r\n (onRowSelected)=\"rowDetails($event)\"\r\n (onRowIndexSelected)=\"indexDetails($event)\"\r\n (onMultiRowSelected)=\"onMultiRowSelectValue($event)\"\r\n (actionOnRow)=\"performAction($event)\"\r\n (onSorting)=\"onSort($event)\"\r\n ></cts-table>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <cts-spinner></cts-spinner>\r\n </ng-container>\r\n <div\r\n class=\"pagination-iner-wraper d-flex justify-content-center align-items-center my-3\"\r\n *ngIf=\"rows.length\"\r\n >\r\n <cts-pagination\r\n [page]=\"pageNum\"\r\n (change)=\"PaginationChange($event)\"\r\n [size]=\"pageSize\"\r\n [count]=\"totalRecords\"\r\n ></cts-pagination>\r\n </div>\r\n\r\n <div class=\"empty-state\" *ngIf=\"(!loading && rows.length === 0)\">\r\n <div class=\"text\">{{ ( prefix ? ( prefix + 'noData' ) : ('noData')) | translate}}</div>\r\n </div>\r\n <div class=\"empty-state\" *ngIf=\"(loading && rows.length === 0)\">\r\n <div class=\"text\">{{ ( prefix ? ( prefix + 'gettingData' ) : ('gettingData')) | translate }}</div>\r\n </div>\r\n</div>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.wrapping{position:relative}.wrapping .table-reposition{overflow-y:hidden;scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-x:auto}.empty-state{padding:200px;display:flex;justify-content:center;align-items:center;font-size:20px;font-weight:bold}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#b4bac6}.dark-scroll::-webkit-scrollbar-thumb{background:#8f98aa}\n"], components: [{ type: i4.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }, { type: i5.SpinnerComponent, selector: "cts-spinner" }, { type: i6.PaginationComponent, selector: "cts-pagination", inputs: ["size", "count", "page"], outputs: ["change"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i8.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
174
+ DynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: DynamicTableComponent, selector: "cts-dynamic-table", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", sortingBy: "sortingBy", queryParam: "queryParam", quickFilter: "quickFilter", report: "report", rowCursor: "rowCursor", fullWidth: "fullWidth", tableMode: "tableMode", tableActions: "tableActions", defultSort: "defultSort", range: "range", isSearchPage: "isSearchPage", multiSelectRows: "multiSelectRows", customFirstRow: "customFirstRow", highlightSelectedCard: "highlightSelectedCard", filterParams: "filterParams" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapping\">\r\n <div class=\"table-reposition\">\r\n <cts-table\r\n *ngIf=\"rows.length\"\r\n [rows]=\"rows\"\r\n [columns]=\"columns\"\r\n [responsiveColumns]=\"responsiveColumns\"\r\n [rowCursor]=\"rowCursor\"\r\n [fullWidth]=\"fullWidth\"\r\n [entityType]=\"entityType\"\r\n [prefix]=\"prefix\"\r\n [totalRecords]=\"totalRecords\"\r\n [tableMode]=\"tableMode\"\r\n [multiSelectRows]=\"multiSelectRows\"\r\n [tableActions]=\"tableActions\"\r\n [defultSort]=\"defultSort\"\r\n [highlightSelectedCard]=\"highlightSelectedCard\"\r\n [customFirstRow]=\"customFirstRow\"\r\n (onRowSelected)=\"rowDetails($event)\"\r\n (onRowIndexSelected)=\"indexDetails($event)\"\r\n (onMultiRowSelected)=\"onMultiRowSelectValue($event)\"\r\n (actionOnRow)=\"performAction($event)\"\r\n (onSorting)=\"onSort($event)\"\r\n ></cts-table>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <cts-spinner></cts-spinner>\r\n </ng-container>\r\n <div\r\n class=\"pagination-iner-wraper d-flex justify-content-center align-items-center my-3\"\r\n *ngIf=\"rows.length\"\r\n >\r\n <cts-pagination\r\n [page]=\"pageNum\"\r\n (change)=\"PaginationChange($event)\"\r\n [size]=\"pageSize\"\r\n [count]=\"totalRecords\"\r\n ></cts-pagination>\r\n </div>\r\n\r\n <div class=\"empty-state\" *ngIf=\"(!loading && rows.length === 0)\">\r\n <div class=\"text\">{{ ( prefix ? ( prefix + 'noData' ) : ('noData')) | translate}}</div>\r\n </div>\r\n <div class=\"empty-state\" *ngIf=\"(loading && rows.length === 0)\">\r\n <div class=\"text\">{{ ( prefix ? ( prefix + 'gettingData' ) : ('gettingData')) | translate }}</div>\r\n </div>\r\n</div>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.wrapping{position:relative}.wrapping .table-reposition{overflow-y:hidden;scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-x:auto}.empty-state{padding:200px;display:flex;justify-content:center;align-items:center;font-size:20px;font-weight:bold}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#b4bac6}.dark-scroll::-webkit-scrollbar-thumb{background:#8f98aa}\n"], components: [{ type: i4.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }, { type: i5.SpinnerComponent, selector: "cts-spinner" }, { type: i6.PaginationComponent, selector: "cts-pagination", inputs: ["size", "count", "page"], outputs: ["change"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i8.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
173
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DynamicTableComponent, decorators: [{
174
176
  type: Component,
175
177
  args: [{
@@ -230,9 +232,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
230
232
  type: Input
231
233
  }], multiSelectRows: [{
232
234
  type: Input
235
+ }], customFirstRow: [{
236
+ type: Input
233
237
  }], highlightSelectedCard: [{
234
238
  type: Input
235
239
  }], filterParams: [{
236
240
  type: Input
237
241
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBVSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQUl6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFRSCxNQUFNLE9BQU8scUJBQXFCO0lBd0RoQyxZQUNVLE9BQXVCLEVBQ3ZCLE9BQXVCLEVBQ3ZCLG1CQUF3QztRQUZ4QyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBMURsRCwrQ0FBK0M7UUFDckMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLDREQUE0RDtRQUNsRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1FQUFtRTtRQUN6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0MsZ0ZBQWdGO1FBQ3RFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUs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Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUssTUFBTTtzQkFBZCxLQUFLO2dCQUVDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFTixZQUFZO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENhbGxBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2R5bmFtaWMtdGFibGUuc2VydmljZSc7XHJcbi8qKlxyXG4gKiB0aGlzIGNvbXBvbmVudCBpcyBhbiBhZGRpdGlvbmFsIGxheWVyIHRoYXQgdXNlcyBbVGFibGUgQ29tcG9uZW50XXtAbGluayBUYWJsZUNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogeW91IGNhbiB1c2UgdGhpcyBjb21wb25lbnQgdG8gY29uZmlndXJlIGEgcGFnZSBwcm92aWRlciBsaXN0aW5nIG91dCBvZiB0aGUgYm94IGVhc2lseSxcclxuICogYW5kIGl0IHdpbGwgaGFuZGxlIGFsbCBvZiB0aGUgYmFzaWMgZmVhdHVyZXMgc3VjaCBhcyBnZXR0aW5nIGRhdGEgZnJvbSBBUEksIExpc3RpbmcsIFBhZ2luYXRpb24sIHNvcnRpbmcgYW5kIGZpbHRlcmluZ1xyXG4gKiAhW1NjcmVlbnNob3QtMV0oLi4vc2NyZWVuc2hvdHMvZHluYW1pY1RhYmxlLnBuZylcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgVGFibGVcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGN0cy1keW5hbWljLXRhYmxlXHJcbiAqICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gKiAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG4gKiAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcbiAqICAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiAqICAgIFtwYWdlUHJvdmlkZXJdPVwicGFnZVByb3ZpZGVyXCJcclxuICogICAgW3F1aWNrRmlsdGVyXT1cImZpbHRlclwiXHJcbiAqICAgIFtzb3J0aW5nQnldPVwic29ydGluZ0J5XCJcclxuICogICAgW2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG4gKiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICogICAgW3F1ZXJ5UGFyYW1dPVwicXVlcnlQYXJhbVwiXHJcbiAqICAgIFtoZWFkZXJzXT1cImhlYWRlcnNcIlxyXG4gKiAgICAob25Sb3dTZWxlY3RlZCk9XCJvcGVuVmlld2VyKCRldmVudClcIlxyXG4gKiAgICAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCI+XHJcbiAqIDwvY3RzLWR5bmFtaWMtdGFibGU+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N0cy1keW5hbWljLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyAgKi9cclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyB0byBjYXRjaCBpbmRleCovXHJcbiAgIEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBwZXJmb3JtIGFjdGlvbiBvbiByb3cgKGRlbHRlLCBlZGl0LCAuLi4gKSAqL1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvKiogZXZlbnQgdG8gZW1pdCB0byB0aGUgaGlnaGVyIGxldmVsICB3aGVuIGdldHRpbmcgZGF0YSBmcm9tIGFwaSBpcyBmaW5pc2hlZCAqL1xyXG4gIEBPdXRwdXQoKSBvbkdldHRpbmdEYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBldmVudCB0IGVtaXQgd2hlbiBzZWxlY3RpbmcgbXVsdGlwbGUgcm93ICovXHJcbiAgQE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIC8qKiBldmVudCB0IGVtaXQgd2hlbiBzdGFydCBnZXR0aW5nIGRhdGEgYW5kIHdoZW4gZmluaXNoICovXHJcbiAgICBAT3V0cHV0KCkgb25Mb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBBcnJheSBvZiBjb2x1bW5zICovXHJcbiAgQElucHV0KCkgY29sdW1ucztcclxuICAvKiogQXJyYXkgb2YgY29sdW1ucyBvbiBzbWFsbGVyIHNjcmVlbnMgKi9cclxuICBASW5wdXQoKSByZXNwb25zaXZlQ29sdW1ucz87XHJcbiAgLyoqIERlZmluZXMgdGhlIHBhZ2UgaW4gd2hpY2ggdGFibGUgaXMgYmVpbmcgdXNlZCAqL1xyXG4gIEBJbnB1dCgpIGVudGl0eVR5cGU6IHN0cmluZztcclxuICAvKiogVHJhbnNsYXRpb25zIHByZWZpeCAqL1xyXG4gIEBJbnB1dCgpIHByZWZpeCA9ICcnO1xyXG4gIC8qKiBIZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCBBUEkgUmVxdWVzdCAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlcnM7XHJcbiAgLyoqIEZpZWxkcyBrZXltYXAgdG8gYmUgbWFwcGVkIGluIHRoZSBhZGFwdGVyICovXHJcbiAgQElucHV0KCkgZmllbGRzO1xyXG4gIC8qKiBQYWdlIFByb3ZpZGVyIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0cmlldmUgZGF0YSAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VQcm92aWRlcjtcclxuICAvKiogQ29udHJvbHMgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRhYmxlICovXHJcbiAgQElucHV0KCkgcGFnZVNpemU7XHJcbiAgLyoqIFNvcnRpbmcgY29sdW1uICovXHJcbiAgQElucHV0KCkgc29ydGluZ0J5Pz0ge307XHJcbiAgQElucHV0KCkgcXVlcnlQYXJhbT89IHt9O1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVyPztcclxuICAgIC8qKiBDb250cm9scyBpZiBpdCByZXBvcnQgcGFnZSAqL1xyXG4gICAgQElucHV0KCkgcmVwb3J0O1xyXG4gIC8qKiB0byBtYWtlIGN1cnNvciB3aGVuIGhvdmVyIG9uIHJvdyBvciBub3QgKi9cclxuICBASW5wdXQoKSByb3dDdXJzb3I/O1xyXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aD89ICdhdXRvJztcclxuICAgLyoqICdsaXN0JyBmb3Igbm9yYW1sIHRhYmxlICdjYXJkJyBmb3IgY2FyZHMgbW9kZSBsaWtlIGluIG1lbW9zICovXHJcbiAgIEBJbnB1dCgpIHRhYmxlTW9kZSA9ICdsaXN0JztcclxuICAgLyoqIGFjdGlvbiB0byBiZSB1c2VkIGluIGNhc2Ugb2YgY2FyZCBtb2RlICovXHJcbiAgIEBJbnB1dCgpIHRhYmxlQWN0aW9ucztcclxuICAgQElucHV0KCkgZGVmdWx0U29ydCA9IFt7IHByb3A6ICdwcm9wZXJ0aWVzLmNyZWF0ZWRBdCcgLCBkaXI6ICdkZXNjJyB9XTtcclxuICAgQElucHV0KCkgcmFuZ2U7XHJcbiAgIEBJbnB1dCgpIGlzU2VhcmNoUGFnZSA9IGZhbHNlO1xyXG4gIC8qKiBhbGxvdyBtdWx0aXNlbGVjdCByb3dzIHdpdGggY2hlY2tib3ggKi9cclxuICBASW5wdXQoKSBtdWx0aVNlbGVjdFJvd3MgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWdobGlnaHRTZWxlY3RlZENhcmQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBcclxuICBmaWx0ZXJQYXJhbXMgPSB7fTtcclxuICBwYWdlTnVtID0gMTtcclxuICByb3dzID0gW107XHJcbiAgdG90YWxSZWNvcmRzID0gMDtcclxuICBteURhdGFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBsb2FkaW5nO1xyXG4gIHNvcnRpbmcgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYWRhcHRlcjogQWRhcHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhbGxBcGk6IENhbGxBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkeW5hbWljVGFibGVTZXJ2aWNlOiBEeW5hbWljVGFibGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15RGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5zdWJzY3JpYmUoZmlsdGVyRGF0YSA9PiB7XHJcbiAgICAgIGlmIChmaWx0ZXJEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlckRhdGEgfTtcclxuICAgICAgICAvLyByZXNldCBwYWdlIG51bWJlciB3aGVuIHN0YXJ0IG5ldyBmaWx0ZXJpbmdcclxuICAgICAgICB0aGlzLnBhZ2VOdW0gPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5teURhdGFTdWJzY3JpcHRpb24gPyB0aGlzLm15RGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IGlzRmlyc3RDaGFuZ2UgPSBPYmplY3QudmFsdWVzKHNpbXBsZUNoYW5nZSkuc29tZSgoYykgPT5cclxuICAgICAgYy5pc0ZpcnN0Q2hhbmdlKClcclxuICAgICk7XHJcbiAgICBpZiAoaXNGaXJzdENoYW5nZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIChzaW1wbGVDaGFuZ2UucXVlcnlQYXJhbSAmJlxyXG4gICAgICAgIHNpbXBsZUNoYW5nZS5xdWVyeVBhcmFtLnByZXZpb3VzVmFsdWUgIT09XHJcbiAgICAgICAgc2ltcGxlQ2hhbmdlLnF1ZXJ5UGFyYW0uY3VycmVudFZhbHVlKSB8fFxyXG4gICAgICAoc2ltcGxlQ2hhbmdlLnF1aWNrRmlsdGVyICYmXHJcbiAgICAgICAgc2ltcGxlQ2hhbmdlLnF1aWNrRmlsdGVyLnByZXZpb3VzVmFsdWUgIT09XHJcbiAgICAgICAgc2ltcGxlQ2hhbmdlLnF1aWNrRmlsdGVyLmN1cnJlbnRWYWx1ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBhZ2VOdW0gPSAxOyAvLyByZXNldCBwYWdlIG51bWJlciBiZWZvciByZWNhbGxpbmcgYXBpIHdpdGggZmlsdGVyc1xyXG4gICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERhdGEoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOyAvLyBpbnRlcm5hbCBsb2FkaW5nXHJcbiAgICB0aGlzLm9uTG9hZGluZy5lbWl0KHRydWUpOyAvLyBleHRlcm5hbCBsb2FkaW5nIFxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX2FnZzogdGhpcy5yYW5nZSxcclxuICAgICAgLi4udGhpcy5maWx0ZXJQYXJhbXMsIC8vIHVzZWQgdG8gZ2V0IGZpbHRlciBkYXRhIGFuZCBzZXQgaXQgaW4gb3VyIHBhcmFtc1xyXG4gICAgICAuLi50aGlzLnF1ZXJ5UGFyYW0sIC8vIHVzZWQgdG8gZ2V0IHBhcmFtcyBmcm9tIG91ciBjb25maWdcclxuICAgICAgLi4udGhpcy5zb3J0aW5nQnksXHJcbiAgICAgIC4uLnRoaXMucXVpY2tGaWx0ZXIsXHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IHRoaXMucGFnZU51bSAtIDEsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IDBcclxuICAgIH07XHJcblxyXG4gICAgLy8gZG9uJ3QgcmVmcmVzaCBhbGwgdGFibGUgaW4gY2FzZSBvZiBzb3J0aW5nIG9ubHlcclxuICAgIGlmICghdGhpcy5zb3J0aW5nKSB7IC8vIHVzZWQgdG8gbm90IHJlZnJlc2hpbmcgYWxsIHRhYmxlIGluIGNhc2Ugb2Ygc29ydGluZyBzaW5jZSB0YWJsZSBsb3NlIHNvcnRpbmcgc3RhdGUgd2hlbiByZWZyZXNoIGFsbCB0YWJsZVxyXG4gICAgICB0aGlzLnJvd3MgPSBbXTsgLy8gdXNlZCB0byByZWZyZXNoIHRhYmxlIHRvIGZlZWwgY2hhbmdlcyBpbiBhY3Rpb25zIHdoZW4gcGVyZm9ybSBhY3Rpb24gYW5kIG5lZWQgdG8gcmVmcmVzaCBhY3Rpb25zXHJcbiAgICB9XHJcbiAgICB0aGlzLnNvcnRpbmcgPSBmYWxzZTsgLy8gcmVzZXQgc29ydGluZyBzdGF0dXMgdG8gZmFsc2UgYW5kIGZvciBuZXh0IHNvcnRpbmcgZnVuYyBzb3J0aW5nIHNldCBpdCB0byB0cnVlIGFnYWluXHJcbiAgICB0aGlzLmNhbGxBcGlcclxuICAgICAgLnF1ZXJ5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgICAuLi5wYXJhbXMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkYXRhLmVudHJpZXMubWFwKChpdGVtKSA9PiB0aGlzLmFkYXB0ZXIuYWRhcHRJbihpdGVtLCB0aGlzLmZpZWxkcykpO1xyXG4gICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uTG9hZGluZy5lbWl0KGZhbHNlKTtcclxuICAgICAgICByZXMuZW50cmllcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5wcm9wZXJ0aWVzICYmIGVsZW1lbnQucHJvcGVydGllcz8uY3JlYXRvciAmJiBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvcj8ucHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvciA9XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXM/LmZpcnN0TmFtZSArXHJcbiAgICAgICAgICAgICAgJyAnICtcclxuICAgICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvcj8ucHJvcGVydGllcz8ubGFzdE5hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5wcm9wZXJ0aWVzICYmIGVsZW1lbnQucHJvcGVydGllcz8uYXNzaWduZWUpIHtcclxuICAgICAgICAgICAgZWxlbWVudC5wcm9wZXJ0aWVzLmFzc2lnbmVlID0gZWxlbWVudC5wcm9wZXJ0aWVzPy5hc3NpZ25lZS5mdWxsTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzLnJlc3VsdHNDb3VudDtcclxuICAgICAgICB0aGlzLnJvd3MgPSByZXMuZW50cmllcztcclxuICAgICAgICAvLyBlbWl0IGRhdGEgdG8gb3V0c2lkZSBpbiBjYXNlIG9mIHNlYXJjaCBwYWdlIGZvciB0aGUgZmlyc3QgdGltZSBvbmx5IHRvIHByZXZlbnQgcmVmcmVzaGluZyBhZ2dyZWdhdGlvbiB3aXRoIGV2ZXJ5IHBhZ2UgY2hhbmdlXHJcbiAgICAgICAgLy8gYW5kIGZvciBhbnkgb3RoZXIgcGFnZSB0eXBlIGVtaXQgZGF0YSBkaXJlY3RseSBpbiBhbGwgcGFnZSBudW1iZXJzXHJcbiAgICAgICAgaWYoKHRoaXMuaXNTZWFyY2hQYWdlICYmIHRoaXMucGFnZU51bSA9PT0gMSkgfHwgIXRoaXMuaXNTZWFyY2hQYWdlIClcclxuICAgICAgICB0aGlzLm9uR2V0dGluZ0RhdGEuZW1pdChyZXMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gc2luZ2xlIHJvd1xyXG4gIHJvd0RldGFpbHMoZXZlbnQpIHtcclxuICAgICB0aGlzLm9uUm93U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBpbmRleERldGFpbHMoZXZlbnQpIHtcclxuICAgIHRoaXMub25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoZXZlbnQpO1xyXG4gfVxyXG5cclxuICAvL2Z1bmN0aW9uIHRvIGhhbmRsZSBhbGwgb3BlcmF0aW9ucyBvbiBzaW5nbGUgcm93IChkZWxldGUgLCBlZGl0ICwgLi4uKVxyXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uKSB7XHJcbiAgICB0aGlzLmFjdGlvbk9uUm93LmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vIGhhbmRsZSBzb3J0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlXHJcbiAgb25Tb3J0KHNvcnRPYmplY3QpIHtcclxuICAgIHRoaXMuc29ydGluZ0J5ID0gc29ydE9iamVjdDtcclxuICAgIHRoaXMuc29ydGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIG9uTXVsdGlSb3dTZWxlY3RWYWx1ZShldmVudCl7XHJcbiAgICB0aGlzLm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuICBwdWJsaWMgUGFnaW5hdGlvbkNoYW5nZShldmVudCkge1xyXG4gICAgdGhpcy5wYWdlTnVtID0gZXZlbnQ7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndyYXBwaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJlcG9zaXRpb25cIj5cclxuICAgIDxjdHMtdGFibGVcclxuICAgICAgKm5nSWY9XCJyb3dzLmxlbmd0aFwiXHJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgW3Jlc3BvbnNpdmVDb2x1bW5zXT1cInJlc3BvbnNpdmVDb2x1bW5zXCJcclxuICAgICAgW3Jvd0N1cnNvcl09XCJyb3dDdXJzb3JcIlxyXG4gICAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcbiAgICAgIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIlxyXG4gICAgICBbcHJlZml4XT1cInByZWZpeFwiXHJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgW3RhYmxlTW9kZV09XCJ0YWJsZU1vZGVcIlxyXG4gICAgICBbbXVsdGlTZWxlY3RSb3dzXT1cIm11bHRpU2VsZWN0Um93c1wiXHJcbiAgICAgIFt0YWJsZUFjdGlvbnNdPVwidGFibGVBY3Rpb25zXCJcclxuICAgICAgW2RlZnVsdFNvcnRdPVwiZGVmdWx0U29ydFwiXHJcbiAgICAgIFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwiaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuICAgICAgKG9uUm93U2VsZWN0ZWQpPVwicm93RGV0YWlscygkZXZlbnQpXCJcclxuICAgICAgKG9uUm93SW5kZXhTZWxlY3RlZCk9XCJpbmRleERldGFpbHMoJGV2ZW50KVwiXHJcbiAgICAgIChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdFZhbHVlKCRldmVudClcIlxyXG4gICAgICAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgKG9uU29ydGluZyk9XCJvblNvcnQoJGV2ZW50KVwiXHJcbiAgICA+PC9jdHMtdGFibGU+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgIDxjdHMtc3Bpbm5lcj48L2N0cy1zcGlubmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicGFnaW5hdGlvbi1pbmVyLXdyYXBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXktM1wiXHJcbiAgICAqbmdJZj1cInJvd3MubGVuZ3RoXCJcclxuICA+XHJcbiAgICA8Y3RzLXBhZ2luYXRpb25cclxuICAgICAgW3BhZ2VdPVwicGFnZU51bVwiXHJcbiAgICAgIChjaGFuZ2UpPVwiUGFnaW5hdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgW3NpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICBbY291bnRdPVwidG90YWxSZWNvcmRzXCJcclxuICAgID48L2N0cy1wYWdpbmF0aW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIiAqbmdJZj1cIighbG9hZGluZyAmJiByb3dzLmxlbmd0aCA9PT0gMClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+e3sgKCBwcmVmaXggPyAgKCBwcmVmaXggKyAnbm9EYXRhJyApIDogKCdub0RhdGEnKSkgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwiKGxvYWRpbmcgJiYgcm93cy5sZW5ndGggPT09IDApXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPnt7ICggcHJlZml4ID8gICggcHJlZml4ICsgJ2dldHRpbmdEYXRhJyApIDogKCdnZXR0aW5nRGF0YScpKSB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBVSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQUl6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFRSCxNQUFNLE9BQU8scUJBQXFCO0lBMERoQyxZQUNVLE9BQXVCLEVBQ3ZCLE9BQXVCLEVBQ3ZCLG1CQUF3QztRQUZ4QyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBNURsRCwrQ0FBK0M7UUFDckMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLDREQUE0RDtRQUNsRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1FQUFtRTtRQUN6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0MsZ0ZBQWdGO1FBQ3RFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUs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WUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVLLE1BQU07c0JBQWQsS0FBSztnQkFFQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUUsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFTixZQUFZO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENhbGxBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2R5bmFtaWMtdGFibGUuc2VydmljZSc7XHJcbi8qKlxyXG4gKiB0aGlzIGNvbXBvbmVudCBpcyBhbiBhZGRpdGlvbmFsIGxheWVyIHRoYXQgdXNlcyBbVGFibGUgQ29tcG9uZW50XXtAbGluayBUYWJsZUNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogeW91IGNhbiB1c2UgdGhpcyBjb21wb25lbnQgdG8gY29uZmlndXJlIGEgcGFnZSBwcm92aWRlciBsaXN0aW5nIG91dCBvZiB0aGUgYm94IGVhc2lseSxcclxuICogYW5kIGl0IHdpbGwgaGFuZGxlIGFsbCBvZiB0aGUgYmFzaWMgZmVhdHVyZXMgc3VjaCBhcyBnZXR0aW5nIGRhdGEgZnJvbSBBUEksIExpc3RpbmcsIFBhZ2luYXRpb24sIHNvcnRpbmcgYW5kIGZpbHRlcmluZ1xyXG4gKiAhW1NjcmVlbnNob3QtMV0oLi4vc2NyZWVuc2hvdHMvZHluYW1pY1RhYmxlLnBuZylcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgVGFibGVcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGN0cy1keW5hbWljLXRhYmxlXHJcbiAqICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gKiAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG4gKiAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcbiAqICAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiAqICAgIFtwYWdlUHJvdmlkZXJdPVwicGFnZVByb3ZpZGVyXCJcclxuICogICAgW3F1aWNrRmlsdGVyXT1cImZpbHRlclwiXHJcbiAqICAgIFtzb3J0aW5nQnldPVwic29ydGluZ0J5XCJcclxuICogICAgW2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG4gKiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICogICAgW3F1ZXJ5UGFyYW1dPVwicXVlcnlQYXJhbVwiXHJcbiAqICAgIFtoZWFkZXJzXT1cImhlYWRlcnNcIlxyXG4gKiAgICAob25Sb3dTZWxlY3RlZCk9XCJvcGVuVmlld2VyKCRldmVudClcIlxyXG4gKiAgICAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCI+XHJcbiAqIDwvY3RzLWR5bmFtaWMtdGFibGU+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N0cy1keW5hbWljLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyAgKi9cclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyB0byBjYXRjaCBpbmRleCovXHJcbiAgIEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBwZXJmb3JtIGFjdGlvbiBvbiByb3cgKGRlbHRlLCBlZGl0LCAuLi4gKSAqL1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvKiogZXZlbnQgdG8gZW1pdCB0byB0aGUgaGlnaGVyIGxldmVsICB3aGVuIGdldHRpbmcgZGF0YSBmcm9tIGFwaSBpcyBmaW5pc2hlZCAqL1xyXG4gIEBPdXRwdXQoKSBvbkdldHRpbmdEYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBldmVudCB0IGVtaXQgd2hlbiBzZWxlY3RpbmcgbXVsdGlwbGUgcm93ICovXHJcbiAgQE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIC8qKiBldmVudCB0IGVtaXQgd2hlbiBzdGFydCBnZXR0aW5nIGRhdGEgYW5kIHdoZW4gZmluaXNoICovXHJcbiAgICBAT3V0cHV0KCkgb25Mb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBBcnJheSBvZiBjb2x1bW5zICovXHJcbiAgQElucHV0KCkgY29sdW1ucztcclxuICAvKiogQXJyYXkgb2YgY29sdW1ucyBvbiBzbWFsbGVyIHNjcmVlbnMgKi9cclxuICBASW5wdXQoKSByZXNwb25zaXZlQ29sdW1ucz87XHJcbiAgLyoqIERlZmluZXMgdGhlIHBhZ2UgaW4gd2hpY2ggdGFibGUgaXMgYmVpbmcgdXNlZCAqL1xyXG4gIEBJbnB1dCgpIGVudGl0eVR5cGU6IHN0cmluZztcclxuICAvKiogVHJhbnNsYXRpb25zIHByZWZpeCAqL1xyXG4gIEBJbnB1dCgpIHByZWZpeCA9ICcnO1xyXG4gIC8qKiBIZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCBBUEkgUmVxdWVzdCAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlcnM7XHJcbiAgLyoqIEZpZWxkcyBrZXltYXAgdG8gYmUgbWFwcGVkIGluIHRoZSBhZGFwdGVyICovXHJcbiAgQElucHV0KCkgZmllbGRzO1xyXG4gIC8qKiBQYWdlIFByb3ZpZGVyIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0cmlldmUgZGF0YSAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VQcm92aWRlcjtcclxuICAvKiogQ29udHJvbHMgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRhYmxlICovXHJcbiAgQElucHV0KCkgcGFnZVNpemU7XHJcbiAgLyoqIFNvcnRpbmcgY29sdW1uICovXHJcbiAgQElucHV0KCkgc29ydGluZ0J5Pz0ge307XHJcbiAgQElucHV0KCkgcXVlcnlQYXJhbT89IHt9O1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVyPztcclxuICAgIC8qKiBDb250cm9scyBpZiBpdCByZXBvcnQgcGFnZSAqL1xyXG4gICAgQElucHV0KCkgcmVwb3J0O1xyXG4gIC8qKiB0byBtYWtlIGN1cnNvciB3aGVuIGhvdmVyIG9uIHJvdyBvciBub3QgKi9cclxuICBASW5wdXQoKSByb3dDdXJzb3I/O1xyXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aD89ICdhdXRvJztcclxuICAgLyoqICdsaXN0JyBmb3Igbm9yYW1sIHRhYmxlICdjYXJkJyBmb3IgY2FyZHMgbW9kZSBsaWtlIGluIG1lbW9zICovXHJcbiAgIEBJbnB1dCgpIHRhYmxlTW9kZSA9ICdsaXN0JztcclxuICAgLyoqIGFjdGlvbiB0byBiZSB1c2VkIGluIGNhc2Ugb2YgY2FyZCBtb2RlICovXHJcbiAgIEBJbnB1dCgpIHRhYmxlQWN0aW9ucztcclxuICAgQElucHV0KCkgZGVmdWx0U29ydCA9IFt7IHByb3A6ICdwcm9wZXJ0aWVzLmNyZWF0ZWRBdCcgLCBkaXI6ICdkZXNjJyB9XTtcclxuICAgQElucHV0KCkgcmFuZ2U7XHJcbiAgIEBJbnB1dCgpIGlzU2VhcmNoUGFnZSA9IGZhbHNlO1xyXG4gIC8qKiBhbGxvdyBtdWx0aXNlbGVjdCByb3dzIHdpdGggY2hlY2tib3ggKi9cclxuICBASW5wdXQoKSBtdWx0aVNlbGVjdFJvd3MgPSBmYWxzZTtcclxuICAvKiogdG8gc2hvdyAxc3Qgcm93IHdpdGggY3VzdG9tIHRlbXBsYXRlIGluIHRoZSB0YWJsZSovXHJcbiAgQElucHV0KCkgY3VzdG9tRmlyc3RSb3cgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWdobGlnaHRTZWxlY3RlZENhcmQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBcclxuICBmaWx0ZXJQYXJhbXMgPSB7fTtcclxuICBwYWdlTnVtID0gMTtcclxuICByb3dzID0gW107XHJcbiAgdG90YWxSZWNvcmRzID0gMDtcclxuICBteURhdGFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBsb2FkaW5nO1xyXG4gIHNvcnRpbmcgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYWRhcHRlcjogQWRhcHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhbGxBcGk6IENhbGxBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkeW5hbWljVGFibGVTZXJ2aWNlOiBEeW5hbWljVGFibGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm15RGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5zdWJzY3JpYmUoZmlsdGVyRGF0YSA9PiB7XHJcbiAgICAgIGlmIChmaWx0ZXJEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlckRhdGEgfTtcclxuICAgICAgICAvLyByZXNldCBwYWdlIG51bWJlciB3aGVuIHN0YXJ0IG5ldyBmaWx0ZXJpbmdcclxuICAgICAgICB0aGlzLnBhZ2VOdW0gPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5teURhdGFTdWJzY3JpcHRpb24gPyB0aGlzLm15RGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IGlzRmlyc3RDaGFuZ2UgPSBPYmplY3QudmFsdWVzKHNpbXBsZUNoYW5nZSkuc29tZSgoYykgPT5cclxuICAgICAgYy5pc0ZpcnN0Q2hhbmdlKClcclxuICAgICk7XHJcbiAgICBpZiAoaXNGaXJzdENoYW5nZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIChzaW1wbGVDaGFuZ2UucXVlcnlQYXJhbSAmJlxyXG4gICAgICAgIHNpbXBsZUNoYW5nZS5xdWVyeVBhcmFtLnByZXZpb3VzVmFsdWUgIT09XHJcbiAgICAgICAgc2ltcGxlQ2hhbmdlLnF1ZXJ5UGFyYW0uY3VycmVudFZhbHVlKSB8fFxyXG4gICAgICAoc2ltcGxlQ2hhbmdlLnF1aWNrRmlsdGVyICYmXHJcbiAgICAgICAgc2ltcGxlQ2hhbmdlLnF1aWNrRmlsdGVyLnByZXZpb3VzVmFsdWUgIT09XHJcbiAgICAgICAgc2ltcGxlQ2hhbmdlLnF1aWNrRmlsdGVyLmN1cnJlbnRWYWx1ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBhZ2VOdW0gPSAxOyAvLyByZXNldCBwYWdlIG51bWJlciBiZWZvciByZWNhbGxpbmcgYXBpIHdpdGggZmlsdGVyc1xyXG4gICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERhdGEoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOyAvLyBpbnRlcm5hbCBsb2FkaW5nXHJcbiAgICB0aGlzLm9uTG9hZGluZy5lbWl0KHRydWUpOyAvLyBleHRlcm5hbCBsb2FkaW5nIFxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgZHVibGluY29yZV9jcmVhdGVkX2FnZzogdGhpcy5yYW5nZSxcclxuICAgICAgLi4udGhpcy5maWx0ZXJQYXJhbXMsIC8vIHVzZWQgdG8gZ2V0IGZpbHRlciBkYXRhIGFuZCBzZXQgaXQgaW4gb3VyIHBhcmFtc1xyXG4gICAgICAuLi50aGlzLnF1ZXJ5UGFyYW0sIC8vIHVzZWQgdG8gZ2V0IHBhcmFtcyBmcm9tIG91ciBjb25maWdcclxuICAgICAgLi4udGhpcy5zb3J0aW5nQnksXHJcbiAgICAgIC4uLnRoaXMucXVpY2tGaWx0ZXIsXHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IHRoaXMucGFnZU51bSAtIDEsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IDBcclxuICAgIH07XHJcblxyXG4gICAgLy8gZG9uJ3QgcmVmcmVzaCBhbGwgdGFibGUgaW4gY2FzZSBvZiBzb3J0aW5nIG9ubHlcclxuICAgIGlmICghdGhpcy5zb3J0aW5nKSB7IC8vIHVzZWQgdG8gbm90IHJlZnJlc2hpbmcgYWxsIHRhYmxlIGluIGNhc2Ugb2Ygc29ydGluZyBzaW5jZSB0YWJsZSBsb3NlIHNvcnRpbmcgc3RhdGUgd2hlbiByZWZyZXNoIGFsbCB0YWJsZVxyXG4gICAgICB0aGlzLnJvd3MgPSBbXTsgLy8gdXNlZCB0byByZWZyZXNoIHRhYmxlIHRvIGZlZWwgY2hhbmdlcyBpbiBhY3Rpb25zIHdoZW4gcGVyZm9ybSBhY3Rpb24gYW5kIG5lZWQgdG8gcmVmcmVzaCBhY3Rpb25zXHJcbiAgICB9XHJcbiAgICB0aGlzLnNvcnRpbmcgPSBmYWxzZTsgLy8gcmVzZXQgc29ydGluZyBzdGF0dXMgdG8gZmFsc2UgYW5kIGZvciBuZXh0IHNvcnRpbmcgZnVuYyBzb3J0aW5nIHNldCBpdCB0byB0cnVlIGFnYWluXHJcbiAgICB0aGlzLmNhbGxBcGlcclxuICAgICAgLnF1ZXJ5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgICAuLi5wYXJhbXMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkYXRhLmVudHJpZXMubWFwKChpdGVtKSA9PiB0aGlzLmFkYXB0ZXIuYWRhcHRJbihpdGVtLCB0aGlzLmZpZWxkcykpO1xyXG4gICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uTG9hZGluZy5lbWl0KGZhbHNlKTtcclxuICAgICAgICByZXMuZW50cmllcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5wcm9wZXJ0aWVzICYmIGVsZW1lbnQucHJvcGVydGllcz8uY3JlYXRvciAmJiBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvcj8ucHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvciA9XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXM/LmZpcnN0TmFtZSArXHJcbiAgICAgICAgICAgICAgJyAnICtcclxuICAgICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvcj8ucHJvcGVydGllcz8ubGFzdE5hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5wcm9wZXJ0aWVzICYmIGVsZW1lbnQucHJvcGVydGllcz8uYXNzaWduZWUpIHtcclxuICAgICAgICAgICAgZWxlbWVudC5wcm9wZXJ0aWVzLmFzc2lnbmVlID0gZWxlbWVudC5wcm9wZXJ0aWVzPy5hc3NpZ25lZS5mdWxsTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzLnJlc3VsdHNDb3VudDtcclxuICAgICAgICB0aGlzLnJvd3MgPSByZXMuZW50cmllcztcclxuICAgICAgICAvLyBlbWl0IGRhdGEgdG8gb3V0c2lkZSBpbiBjYXNlIG9mIHNlYXJjaCBwYWdlIGZvciB0aGUgZmlyc3QgdGltZSBvbmx5IHRvIHByZXZlbnQgcmVmcmVzaGluZyBhZ2dyZWdhdGlvbiB3aXRoIGV2ZXJ5IHBhZ2UgY2hhbmdlXHJcbiAgICAgICAgLy8gYW5kIGZvciBhbnkgb3RoZXIgcGFnZSB0eXBlIGVtaXQgZGF0YSBkaXJlY3RseSBpbiBhbGwgcGFnZSBudW1iZXJzXHJcbiAgICAgICAgaWYoKHRoaXMuaXNTZWFyY2hQYWdlICYmIHRoaXMucGFnZU51bSA9PT0gMSkgfHwgIXRoaXMuaXNTZWFyY2hQYWdlIClcclxuICAgICAgICB0aGlzLm9uR2V0dGluZ0RhdGEuZW1pdChyZXMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gc2luZ2xlIHJvd1xyXG4gIHJvd0RldGFpbHMoZXZlbnQpIHtcclxuICAgICB0aGlzLm9uUm93U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBpbmRleERldGFpbHMoZXZlbnQpIHtcclxuICAgIHRoaXMub25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoZXZlbnQpO1xyXG4gfVxyXG5cclxuICAvL2Z1bmN0aW9uIHRvIGhhbmRsZSBhbGwgb3BlcmF0aW9ucyBvbiBzaW5nbGUgcm93IChkZWxldGUgLCBlZGl0ICwgLi4uKVxyXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uKSB7XHJcbiAgICB0aGlzLmFjdGlvbk9uUm93LmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vIGhhbmRsZSBzb3J0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlXHJcbiAgb25Tb3J0KHNvcnRPYmplY3QpIHtcclxuICAgIHRoaXMuc29ydGluZ0J5ID0gc29ydE9iamVjdDtcclxuICAgIHRoaXMuc29ydGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIG9uTXVsdGlSb3dTZWxlY3RWYWx1ZShldmVudCl7XHJcbiAgICB0aGlzLm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuICBwdWJsaWMgUGFnaW5hdGlvbkNoYW5nZShldmVudCkge1xyXG4gICAgdGhpcy5wYWdlTnVtID0gZXZlbnQ7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndyYXBwaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRhYmxlLXJlcG9zaXRpb25cIj5cclxuICAgIDxjdHMtdGFibGVcclxuICAgICAgKm5nSWY9XCJyb3dzLmxlbmd0aFwiXHJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgW3Jlc3BvbnNpdmVDb2x1bW5zXT1cInJlc3BvbnNpdmVDb2x1bW5zXCJcclxuICAgICAgW3Jvd0N1cnNvcl09XCJyb3dDdXJzb3JcIlxyXG4gICAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcbiAgICAgIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIlxyXG4gICAgICBbcHJlZml4XT1cInByZWZpeFwiXHJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgW3RhYmxlTW9kZV09XCJ0YWJsZU1vZGVcIlxyXG4gICAgICBbbXVsdGlTZWxlY3RSb3dzXT1cIm11bHRpU2VsZWN0Um93c1wiXHJcbiAgICAgIFt0YWJsZUFjdGlvbnNdPVwidGFibGVBY3Rpb25zXCJcclxuICAgICAgW2RlZnVsdFNvcnRdPVwiZGVmdWx0U29ydFwiXHJcbiAgICAgIFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwiaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuICAgICAgW2N1c3RvbUZpcnN0Um93XT1cImN1c3RvbUZpcnN0Um93XCJcclxuICAgICAgKG9uUm93U2VsZWN0ZWQpPVwicm93RGV0YWlscygkZXZlbnQpXCJcclxuICAgICAgKG9uUm93SW5kZXhTZWxlY3RlZCk9XCJpbmRleERldGFpbHMoJGV2ZW50KVwiXHJcbiAgICAgIChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdFZhbHVlKCRldmVudClcIlxyXG4gICAgICAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgKG9uU29ydGluZyk9XCJvblNvcnQoJGV2ZW50KVwiXHJcbiAgICA+PC9jdHMtdGFibGU+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgIDxjdHMtc3Bpbm5lcj48L2N0cy1zcGlubmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicGFnaW5hdGlvbi1pbmVyLXdyYXBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXktM1wiXHJcbiAgICAqbmdJZj1cInJvd3MubGVuZ3RoXCJcclxuICA+XHJcbiAgICA8Y3RzLXBhZ2luYXRpb25cclxuICAgICAgW3BhZ2VdPVwicGFnZU51bVwiXHJcbiAgICAgIChjaGFuZ2UpPVwiUGFnaW5hdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgW3NpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICBbY291bnRdPVwidG90YWxSZWNvcmRzXCJcclxuICAgID48L2N0cy1wYWdpbmF0aW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIiAqbmdJZj1cIighbG9hZGluZyAmJiByb3dzLmxlbmd0aCA9PT0gMClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+e3sgKCBwcmVmaXggPyAgKCBwcmVmaXggKyAnbm9EYXRhJyApIDogKCdub0RhdGEnKSkgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwiKGxvYWRpbmcgJiYgcm93cy5sZW5ndGggPT09IDApXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPnt7ICggcHJlZml4ID8gICggcHJlZml4ICsgJ2dldHRpbmdEYXRhJyApIDogKCdnZXR0aW5nRGF0YScpKSB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19