@eo-sdk/client 8.16.0-rc.2 → 8.16.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/app/eo-framework/app-shell/app-bar/app-process/app-process.component.d.ts +7 -1
  2. package/app/eo-framework/prepare-details/prepare-details.component.d.ts +4 -2
  3. package/app/eo-framework/process-form/process-form.component.d.ts +2 -0
  4. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +1 -0
  5. package/app/eo-framework/undock-split/undock-split.component.d.ts +0 -2
  6. package/assets/_default/i18n/de.json +2 -2
  7. package/assets/_default/i18n/en.json +2 -2
  8. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +1 -0
  9. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  10. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +1 -1
  11. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  12. package/bundles/eo-sdk-client.umd.js +56 -40
  13. package/bundles/eo-sdk-client.umd.js.map +1 -1
  14. package/bundles/eo-sdk-client.umd.min.js +1 -1
  15. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  16. package/eo-sdk-client.d.ts +3 -3
  17. package/eo-sdk-client.metadata.json +1 -1
  18. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  19. package/esm2015/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.js +2 -2
  20. package/esm2015/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.js +2 -2
  21. package/esm2015/app/eo-framework/app-shell/app-bar/app-process/app-process.component.js +26 -4
  22. package/esm2015/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.js +2 -2
  23. package/esm2015/app/eo-framework/grid/extensions/pagination/pagination.component.js +2 -2
  24. package/esm2015/app/eo-framework/media/media.component.js +4 -3
  25. package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +2 -2
  26. package/esm2015/app/eo-framework/prepare-details/prepare-details.component.js +10 -5
  27. package/esm2015/app/eo-framework/process-form/process-form.component.js +5 -2
  28. package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +5 -3
  29. package/esm2015/app/eo-framework/ui/outside-click/outside-click.directive.js +3 -2
  30. package/esm2015/app/eo-framework/undock-split/undock-split.component.js +2 -19
  31. package/esm2015/eo-sdk-client.js +4 -4
  32. package/esm2015/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.js +1 -1
  33. package/esm2015/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.js +2 -1
  34. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +1 -0
  35. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  36. package/fesm2015/eo-sdk-client.js +54 -38
  37. package/fesm2015/eo-sdk-client.js.map +1 -1
  38. package/misc/scripts/helper.js +6 -4
  39. package/package.json +2 -2
  40. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +4 -0
  41. package/projects/eo-sdk/core/package.json +1 -1
@@ -2,12 +2,12 @@ import { Component, Input, Output, EventEmitter, HostBinding, ViewChild } from '
2
2
  import { Router } from '@angular/router';
3
3
  import { takeUntil } from 'rxjs/operators';
4
4
  import * as _ from 'lodash';
5
- import { TranslateService, PreparedItem, PrepareService, SystemService, Utils, NotificationsService, BackendService } from '@eo-sdk/core';
5
+ import { TranslateService, PreparedItem, PrepareService, SystemService, Utils, NotificationsService, BackendService, CapabilitiesService } from '@eo-sdk/core';
6
6
  import { SelectionService } from '../../eo-framework-core/selection/selection.service';
7
7
  import { UnsubscribeOnDestroy } from '../util/unsubscribe/unsubscribe.component';
8
8
  import { PendingChangesService } from '../../eo-framework-core/pending-changes/pending-changes.service';
9
9
  export class PrepareDetailsComponent extends UnsubscribeOnDestroy {
10
- constructor(prepareService, router, pendingChanges, translate, notification, systemService, selection, backend) {
10
+ constructor(prepareService, router, pendingChanges, translate, notification, systemService, selection, backend, capabilites) {
11
11
  super();
12
12
  this.prepareService = prepareService;
13
13
  this.router = router;
@@ -17,6 +17,7 @@ export class PrepareDetailsComponent extends UnsubscribeOnDestroy {
17
17
  this.systemService = systemService;
18
18
  this.selection = selection;
19
19
  this.backend = backend;
20
+ this.capabilites = capabilites;
20
21
  // preparation is divided into several phases
21
22
  // select an object type
22
23
  this.PHASE_TYPE = 'type';
@@ -454,6 +455,9 @@ export class PrepareDetailsComponent extends UnsubscribeOnDestroy {
454
455
  }
455
456
  }
456
457
  }
458
+ hasTemplateCapability() {
459
+ return this.capabilites.hasCapability('template');
460
+ }
457
461
  trackByIdFn(index, item) {
458
462
  return item.id;
459
463
  }
@@ -480,7 +484,7 @@ export class PrepareDetailsComponent extends UnsubscribeOnDestroy {
480
484
  PrepareDetailsComponent.decorators = [
481
485
  { type: Component, args: [{
482
486
  selector: 'eo-prepare-details',
483
- template: "<div class=\"prepareDetails__wrapper\" *ngIf=\"!loading; else mainSpinner\">\r\n <section class=\"prepareDetails\" *ngIf=\"preparedItem && preparePhase; else noItem\"\r\n [ngClass]=\"{multifile: preparedItem.contentcount > 1, committing: committing}\">\r\n <div class=\"eo-head\">\r\n\r\n <div class=\"header-info\">\r\n <div class=\"header-title\">{{header.title}}</div>\r\n <div class=\"header-sub-title h-location\" *ngIf=\"!header.location.link; else linked\">{{header.location.label}}\r\n </div>\r\n <div class=\"header-sub-title h-subtitle\">{{header.subtitle}}</div>\r\n\r\n <ng-template #linked>\r\n <div class=\"header-sub-title h-subtitle-detailed\">\r\n <span translate>eo.prepare.location.title.prefix</span>\r\n <a [routerLink]=\"header.location.link\">{{header.location.label}}</a>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <eo-icon class=\"btn btn-download\"\r\n *ngIf=\"preparePhase.name === 'content' ? selectedTemplateFile : preparePhase.data.previewFile\"\r\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"\r\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" (click)=\"download()\"></eo-icon>\r\n <eo-icon class=\"btn btn-delete\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showDeleteDialog = true;\"></eo-icon>\r\n <!-- buttons while choosing a template -->\r\n <ng-container *ngIf=\"chooseTemplate\">\r\n <button class=\"btn-tpl-abort\" (click)=\"showTemplateSelector(false)\"\r\n translate>eo.prepare.template.abort</button>\r\n <button class=\"primary btn-tpl-apply\" (click)=\"addTemplate(selectedTemplate)\" [disabled]=\"!selectedTemplate\"\r\n translate>eo.prepare.template.select</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"preparePhase.name === 'indexdata'\">\r\n <button (click)=\"commit()\" class=\"btn-idx-save\"\r\n [ngClass]=\"{primary: preparedItem.state.parentisroot && preparedItem.contentcount > 1}\"\r\n [disabled]=\"formState?.invalid || committing\" translate>eo.prepare.save</button>\r\n\r\n <button (click)=\"commit(true)\" [disabled]=\"formState?.invalid || committing\" class=\"primary btn-idx-saveopen\"\r\n [hidden]=\"preparedItem?.state.parentisroot && preparedItem?.contentcount > 1\"\r\n translate>eo.prepare.saveopen</button>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"eo-body\" [ngSwitch]=\"preparePhase.name\" *ngIf=\"!committing; else spinner\">\r\n\r\n <!-- PHASE TYPE -->\r\n <div class=\"phase type\" *ngSwitchCase=\"'type'\">\r\n\r\n <!-- with preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else nopreview\" [cacheLayout]=\"'prepare.details.phase.type'\">\r\n <eo-split-area [size]=\"30\">\r\n\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select empty\" *ngIf=\"preparedItem.types.length == 0\" translate>\r\n eo.prepare.details.type.empty</div>\r\n <div class=\"object-type-select empty\"\r\n *ngIf=\"!preparedItem.state.typeselectedallowed && preparedItem.state.typeselected\"\r\n [translateParams]=\"{type: preparedItem.selectedtype.label, filename: getFileNames(preparedItem)}\"\r\n translate>eo.prepare.details.type.notallowed</div>\r\n\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"content-select\">\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx;\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex == idx}\" (click)=\"setPreviewUri(idx)\">\r\n <span>{{content.path}}</span>\r\n <eo-icon class=\"btn btn-delete-content\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showContentDeleteDialog = true; deletedContentIndex = idx;\"></eo-icon>\r\n <div *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</div>\r\n </div>\r\n </div>\r\n </div>\r\n </eo-split-area>\r\n <eo-split-area [size]=\"70\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- without preview -->\r\n <ng-template #nopreview>\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <!-- PHASE CONTENT -->\r\n <div class=\"phase content\" *ngSwitchCase=\"'content'\">\r\n\r\n <!-- panel for selecting a template to be used as items content -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"chooseTemplate; else attach\" [cacheLayout]=\"'prepare.details.phase.content'\">\r\n <eo-split-area [size]=\"40\">\r\n\r\n <!-- list of available templates -->\r\n <eo-list-container #eoList [loading]=\"false\" class=\"templates\">\r\n <div class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_template.svg'\"></eo-icon>\r\n <div class=\"eo-header-info\">\r\n <div class=\"eo-header-title\" translate>eo.prepare.template.list.title</div>\r\n </div>\r\n <div class=\"eo-header-actions\">\r\n\r\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconClass]=\"'primary'\"\r\n class=\"overlay-filter\" [title]=\"'eo.list.filter' | translate\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-text-filter [title]=\"'eo.prepare.template.filter.text.title' | translate\"\r\n [matchFields]=\"['title', 'description', 'tags']\"\r\n [placeholder]=\"'eo.prepare.template.filter.text.title'\"></eo-text-filter>\r\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.prepare.template.filter.set.title' | translate\"\r\n *ngIf=\"tagFilterOptions?.length\" [options]=\"tagFilterOptions\"></eo-set-filter>\r\n </eo-custom-filter>\r\n </eo-overlay>\r\n\r\n </div>\r\n </div>\r\n <div class=\"eo-body\">\r\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\"\r\n [showHeader]=\"true\" [showFooter]=\"false\" [selectionLimit]=\"1\"\r\n (eoGridSelectionChanged)=\"selectTemplate($event[0])\">\r\n </eo-grid>\r\n </div>\r\n </eo-list-container>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"60\">\r\n\r\n <!-- preview of selected template -->\r\n <eo-media [previewFile]=\"selectedTemplateFile\"></eo-media>\r\n\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- add content general overview (upload, template, none) -->\r\n <ng-template #attach>\r\n\r\n <div class=\"info\" *ngIf=\"!uploadInProgress\" translate>eo.prepare.attachment.info</div>\r\n <input type=\"file\" #file (change)=\"fileChangeListener($event.target.files)\">\r\n\r\n <div class=\"attachments\" *ngIf=\"!uploadInProgress; else uploadspinner\">\r\n\r\n <!-- upload a file -->\r\n <div class=\"attachment att-file\" *ngIf=\"preparePhase.data.file\" (click)=\"upload()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_file_upload.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.upload.title</h3>\r\n <p translate>eo.prepare.attachment.upload.desc</p>\r\n </div>\r\n\r\n <!-- select a template -->\r\n <div class=\"attachment att-tmpl\" *ngIf=\"preparePhase.data.templates.length > 0\"\r\n (click)=\"showTemplateSelector(true)\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_prepare_add.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.template.title</h3>\r\n <p translate>eo.prepare.attachment.template.desc</p>\r\n </div>\r\n\r\n <!-- no file -->\r\n <div class=\"attachment att-none\" *ngIf=\"preparePhase.data.withoutFile\" (click)=\"noFile()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.nofile.title</h3>\r\n <p translate>eo.prepare.attachment.nofile.desc</p>\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-template>\r\n\r\n <!-- upload progress indicator -->\r\n <ng-template #uploadspinner>\r\n <div class=\"upload-indicator\">\r\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- PHASE INDEXDATA -->\r\n <div class=\"phase indexdata\" *ngSwitchCase=\"'indexdata'\">\r\n\r\n <!-- form and preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else justform\" [cacheLayout]=\"'prepare.details.phase.indexdata'\">\r\n <eo-split-area [size]=\"50\">\r\n\r\n <div class=\"form-files\">\r\n\r\n <!-- indexdata form -->\r\n <ng-container *ngTemplateOutlet=\"justform\"></ng-container>\r\n\r\n <!-- list of contents (in case of bulk upload) that can be previewed -->\r\n <div class=\"content-select\">\r\n\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex === idx}\" (click)=\"setPreviewUri(idx)\">\r\n {{content.path}} <span *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"50\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- just the form -->\r\n <ng-template #justform>\r\n <div class=\"form-container situation-create\" *ngIf=\"formOptions\">\r\n <eo-object-form #form [formOptions]=\"formOptions\" (statusChanged)=\"onFormStatusChanged($event)\">\r\n </eo-object-form>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </section>\r\n\r\n <ng-template #spinner>\r\n <div class=\"eo-body\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n\r\n</div>\r\n\r\n<ng-template #mainSpinner>\r\n <div class=\"prepareDetails__main-spinner\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #noItem>\r\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\r\n <ng-content select=\".error\"></ng-content>\r\n </eo-error-message>\r\n</ng-template>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.dialog.title' | translate\"\r\n [(visible)]=\"showDeleteDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.dialog.message' | translate}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmDelete (click)=\"removeItem(preparedItem)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.content.dialog.title' | translate\"\r\n [(visible)]=\"showContentDeleteDialog\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.content.dialog.message' | translate: ({contentPath: preparedItem?.contents ? preparedItem?.contents[deletedContentIndex]?.path : ''})}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showContentDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmContentDelete (click)=\"removeItemContent(preparedItem, deletedContentIndex)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n",
487
+ template: "<div class=\"prepareDetails__wrapper\" *ngIf=\"!loading; else mainSpinner\">\r\n <section class=\"prepareDetails\" *ngIf=\"preparedItem && preparePhase; else noItem\"\r\n [ngClass]=\"{multifile: preparedItem.contentcount > 1, committing: committing}\">\r\n <div class=\"eo-head\">\r\n\r\n <div class=\"header-info\">\r\n <div class=\"header-title\">{{header.title}}</div>\r\n <div class=\"header-sub-title h-location\" *ngIf=\"!header.location.link; else linked\">{{header.location.label}}\r\n </div>\r\n <div class=\"header-sub-title h-subtitle\">{{header.subtitle}}</div>\r\n\r\n <ng-template #linked>\r\n <div class=\"header-sub-title h-subtitle-detailed\">\r\n <span translate>eo.prepare.location.title.prefix</span>\r\n <a [routerLink]=\"header.location.link\">{{header.location.label}}</a>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <eo-icon class=\"btn btn-download\"\r\n *ngIf=\"preparePhase.name === 'content' ? selectedTemplateFile : preparePhase.data.previewFile\"\r\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"\r\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" (click)=\"download()\"></eo-icon>\r\n <eo-icon class=\"btn btn-delete\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showDeleteDialog = true;\"></eo-icon>\r\n <!-- buttons while choosing a template -->\r\n <ng-container *ngIf=\"chooseTemplate\">\r\n <button class=\"btn-tpl-abort\" (click)=\"showTemplateSelector(false)\"\r\n translate>eo.prepare.template.abort</button>\r\n <button class=\"primary btn-tpl-apply\" (click)=\"addTemplate(selectedTemplate)\" [disabled]=\"!selectedTemplate\"\r\n translate>eo.prepare.template.select</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"preparePhase.name === 'indexdata'\">\r\n <button (click)=\"commit()\" class=\"btn-idx-save\"\r\n [ngClass]=\"{primary: preparedItem.state.parentisroot && preparedItem.contentcount > 1}\"\r\n [disabled]=\"formState?.invalid || committing\" translate>eo.prepare.save</button>\r\n\r\n <button (click)=\"commit(true)\" [disabled]=\"formState?.invalid || committing\" class=\"primary btn-idx-saveopen\"\r\n [hidden]=\"preparedItem?.state.parentisroot && preparedItem?.contentcount > 1\"\r\n translate>eo.prepare.saveopen</button>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"eo-body\" [ngSwitch]=\"preparePhase.name\" *ngIf=\"!committing; else spinner\">\r\n\r\n <!-- PHASE TYPE -->\r\n <div class=\"phase type\" *ngSwitchCase=\"'type'\">\r\n\r\n <!-- with preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else nopreview\" [cacheLayout]=\"'prepare.details.phase.type'\">\r\n <eo-split-area [size]=\"30\">\r\n\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select empty\" *ngIf=\"preparedItem.types.length == 0\" translate>\r\n eo.prepare.details.type.empty</div>\r\n <div class=\"object-type-select empty\"\r\n *ngIf=\"!preparedItem.state.typeselectedallowed && preparedItem.state.typeselected\"\r\n [translateParams]=\"{type: preparedItem.selectedtype.label, filename: getFileNames(preparedItem)}\"\r\n translate>eo.prepare.details.type.notallowed</div>\r\n\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"content-select\">\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx;\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex == idx}\" (click)=\"setPreviewUri(idx)\">\r\n <span>{{content.path}}</span>\r\n <eo-icon class=\"btn btn-delete-content\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showContentDeleteDialog = true; deletedContentIndex = idx;\"></eo-icon>\r\n <div *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</div>\r\n </div>\r\n </div>\r\n </div>\r\n </eo-split-area>\r\n <eo-split-area [size]=\"70\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- without preview -->\r\n <ng-template #nopreview>\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <!-- PHASE CONTENT -->\r\n <div class=\"phase content\" *ngSwitchCase=\"'content'\">\r\n\r\n <!-- panel for selecting a template to be used as items content -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"chooseTemplate; else attach\" [cacheLayout]=\"'prepare.details.phase.content'\">\r\n <eo-split-area [size]=\"40\">\r\n\r\n <!-- list of available templates -->\r\n <eo-list-container #eoList [loading]=\"false\" class=\"templates\">\r\n <div class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_template.svg'\"></eo-icon>\r\n <div class=\"eo-header-info\">\r\n <div class=\"eo-header-title\" translate>eo.prepare.template.list.title</div>\r\n </div>\r\n <div class=\"eo-header-actions\">\r\n\r\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconClass]=\"'primary'\"\r\n class=\"overlay-filter\" [title]=\"'eo.list.filter' | translate\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-text-filter [title]=\"'eo.prepare.template.filter.text.title' | translate\"\r\n [matchFields]=\"['title', 'description', 'tags']\"\r\n [placeholder]=\"'eo.prepare.template.filter.text.title'\"></eo-text-filter>\r\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.prepare.template.filter.set.title' | translate\"\r\n *ngIf=\"tagFilterOptions?.length\" [options]=\"tagFilterOptions\"></eo-set-filter>\r\n </eo-custom-filter>\r\n </eo-overlay>\r\n\r\n </div>\r\n </div>\r\n <div class=\"eo-body\">\r\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\"\r\n [showHeader]=\"true\" [showFooter]=\"false\" [selectionLimit]=\"1\"\r\n (eoGridSelectionChanged)=\"selectTemplate($event[0])\">\r\n </eo-grid>\r\n </div>\r\n </eo-list-container>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"60\">\r\n\r\n <!-- preview of selected template -->\r\n <eo-media [previewFile]=\"selectedTemplateFile\"></eo-media>\r\n\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- add content general overview (upload, template, none) -->\r\n <ng-template #attach>\r\n\r\n <div class=\"info\" *ngIf=\"!uploadInProgress\" translate>eo.prepare.attachment.info</div>\r\n <input type=\"file\" #file (change)=\"fileChangeListener($event.target.files)\">\r\n\r\n <div class=\"attachments\" *ngIf=\"!uploadInProgress; else uploadspinner\">\r\n\r\n <!-- upload a file -->\r\n <div class=\"attachment att-file\" *ngIf=\"preparePhase.data.file\" (click)=\"upload()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_file_upload.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.upload.title</h3>\r\n <p translate>eo.prepare.attachment.upload.desc</p>\r\n </div>\r\n\r\n <!-- select a template -->\r\n <div class=\"attachment att-tmpl\" *ngIf=\"preparePhase.data.templates.length > 0 && hasTemplateCapability()\"\r\n (click)=\"showTemplateSelector(true)\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_prepare_add.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.template.title</h3>\r\n <p translate>eo.prepare.attachment.template.desc</p>\r\n </div>\r\n\r\n <!-- no file -->\r\n <div class=\"attachment att-none\" *ngIf=\"preparePhase.data.withoutFile\" (click)=\"noFile()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.nofile.title</h3>\r\n <p translate>eo.prepare.attachment.nofile.desc</p>\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-template>\r\n\r\n <!-- upload progress indicator -->\r\n <ng-template #uploadspinner>\r\n <div class=\"upload-indicator\">\r\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- PHASE INDEXDATA -->\r\n <div class=\"phase indexdata\" *ngSwitchCase=\"'indexdata'\">\r\n\r\n <!-- form and preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else justform\" [cacheLayout]=\"'prepare.details.phase.indexdata'\">\r\n <eo-split-area [size]=\"50\">\r\n\r\n <div class=\"form-files\">\r\n\r\n <!-- indexdata form -->\r\n <ng-container *ngTemplateOutlet=\"justform\"></ng-container>\r\n\r\n <!-- list of contents (in case of bulk upload) that can be previewed -->\r\n <div class=\"content-select\">\r\n\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex === idx}\" (click)=\"setPreviewUri(idx)\">\r\n {{content.path}} <span *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"50\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- just the form -->\r\n <ng-template #justform>\r\n <div class=\"form-container situation-create\" *ngIf=\"formOptions\">\r\n <eo-object-form #form [formOptions]=\"formOptions\" (statusChanged)=\"onFormStatusChanged($event)\">\r\n </eo-object-form>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </section>\r\n\r\n <ng-template #spinner>\r\n <div class=\"eo-body\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n\r\n</div>\r\n\r\n<ng-template #mainSpinner>\r\n <div class=\"prepareDetails__main-spinner\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #noItem>\r\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\r\n <ng-content select=\".error\"></ng-content>\r\n </eo-error-message>\r\n</ng-template>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.dialog.title' | translate\"\r\n [(visible)]=\"showDeleteDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.dialog.message' | translate}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmDelete (click)=\"removeItem(preparedItem)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.content.dialog.title' | translate\"\r\n [(visible)]=\"showContentDeleteDialog\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.content.dialog.message' | translate: ({contentPath: preparedItem?.contents ? preparedItem?.contents[deletedContentIndex]?.path : ''})}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showContentDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmContentDelete (click)=\"removeItemContent(preparedItem, deletedContentIndex)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n",
484
488
  styles: [":host{height:100%}:host .prepareDetails{background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0;overflow-y:auto}:host .prepareDetails .eo-media-wrap{display:flex;flex-flow:column;height:100%}:host .prepareDetails .eo-media-wrap eo-media{flex:1;position:relative}:host .prepareDetails__wrapper{height:100%}:host .prepareDetails__main-spinner{align-items:center;display:flex;height:100%;justify-content:center}:host .prepareDetails .content-select{display:none}:host .prepareDetails .eo-head{background-color:var(--color-white);display:flex;flex-flow:row nowrap}:host .prepareDetails .eo-head .header-info{color:var(--text-color-caption);flex:1 1 auto;font-size:var(--font-caption)}:host .prepareDetails .eo-head .header-info .header-title{color:var(--text-color-body);font-size:var(--font-title);padding-bottom:calc(var(--app-pane-padding)/2)}:host .prepareDetails .eo-head .header-info a{color:var(--color-accent);cursor:pointer;text-decoration:none}:host .prepareDetails .eo-head .actions{align-items:center;align-self:flex-start;display:flex}[dir=ltr] :host .prepareDetails .eo-head .actions button{margin-left:calc(var(--app-pane-padding)/2)}[dir=rtl] :host .prepareDetails .eo-head .actions button{margin-right:calc(var(--app-pane-padding)/2)}:host .prepareDetails .eo-head .actions eo-icon{cursor:pointer;padding:calc(var(--app-pane-padding)/4)}:host .prepareDetails .eo-body{overflow-y:hidden}:host .prepareDetails .eo-body eo-split-area{border-top:1px solid rgba(var(--color-black-rgb),.08);box-sizing:border-box}:host .prepareDetails .phase{height:100%;overflow-y:auto}:host .prepareDetails .phase.content{align-items:center;display:flex;flex-flow:column;justify-content:center}:host .prepareDetails .phase.content ::ng-deep eo-list-container.templates{background:linear-gradient(90deg,#fff 70%,var(--panel-background-lightgrey))}:host .prepareDetails .phase.content ::ng-deep eo-list-container.templates eo-grid ag-grid-angular.ag-theme-balham .chip:last-of-type:after{background:transparent!important}:host .prepareDetails .phase.content input[type=file]{display:none}:host .prepareDetails .phase.content .info{color:var(--text-color-caption);flex:0 0 auto;margin-bottom:var(--app-pane-padding)}:host .prepareDetails .phase.content .attachments{display:flex;flex:0 0 auto;flex-flow:row}:host .prepareDetails .phase.content .attachments .attachment:hover .img eo-icon{opacity:1}:host .prepareDetails .phase.content .attachments .attachment{background:var(--color-white);border-bottom:1px solid rgba(var(--color-black-rgb),.1);cursor:pointer;margin:calc(var(--app-pane-padding)/2);max-width:200px}:host .prepareDetails .phase.content .attachments .attachment .img{align-items:center;background:var(--color-accent);display:flex;flex-flow:column;justify-content:center;padding:calc(var(--app-pane-padding)*2) 0}:host .prepareDetails .phase.content .attachments .attachment .img eo-icon{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;color:var(--color-white);height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;width:48px}:host .prepareDetails .phase.content .attachments .attachment h3{font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0;padding:calc(var(--app-pane-padding)/2) var(--app-pane-padding)}:host .prepareDetails .phase.content .attachments .attachment p{color:var(--text-color-caption);margin:0;padding:0 var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}:host .prepareDetails .phase div[eosplitgutter]{background-color:var(--color-light-blue)!important}:host .prepareDetails .phase.type .form-files .object-type-select{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .prepareDetails .phase.type .form-files .object-type-select .object-type{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;align-items:center;background:var(--color-white);cursor:pointer;display:flex;flex-flow:row nowrap;margin-bottom:1px;padding:calc(var(--app-pane-padding)/2);transition:all var(--app-default-transition-duration) ease-in-out}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .type-icon{color:var(--text-color-hint)}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .content{overflow:hidden;padding-left:calc(var(--app-pane-padding)/2)}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .content .title{font-weight:var(--font-weight-bold);overflow:hidden;text-overflow:ellipsis}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .content .description{color:var(--text-color-caption);overflow:hidden;text-overflow:ellipsis}:host .prepareDetails .phase .form-container eo-object-form{display:block;margin:var(--app-pane-padding)}:host .prepareDetails.committing .eo-head .actions .btn,:host .prepareDetails.committing .eo-head .actions button{display:none}:host .prepareDetails.committing .eo-body{align-items:center;display:flex;flex-flow:column;justify-content:center}:host .prepareDetails.multifile .form-files{bottom:0;display:flex;flex-flow:column;left:0;position:absolute;right:0;top:0}:host .prepareDetails.multifile .form-files .form-container{flex:1 1 auto;overflow-y:auto}:host .prepareDetails.multifile .content-select{border-top:1px solid var(--main-background);box-sizing:border-box;display:block;flex:0 0 30%;overflow-y:auto;padding:calc(var(--app-pane-padding)/2)}:host .prepareDetails.multifile .content-select h2{color:var(--text-color-caption);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0;padding:calc(var(--app-pane-padding)/2);padding-bottom:var(--app-pane-padding)}:host .prepareDetails.multifile .content-select .content{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;background:var(--color-white);color:var(--text-color-caption);cursor:pointer;display:flex;gap:8px;justify-content:space-between;margin-bottom:calc(var(--app-pane-padding)/2);overflow:hidden;padding:calc(var(--app-pane-padding)/2);text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out}:host .prepareDetails.multifile .content-select .content>span{flex:1;overflow:hidden;text-overflow:ellipsis}:host .prepareDetails.multifile .content-select .content .btn-delete-content{color:var(--text-color-caption);flex:0 0 16px;height:16px;width:16px}:host .prepareDetails.multifile .content-select .content .btn-delete-content:hover{background-color:var(--text-color-hint)}:host .prepareDetails.multifile .content-select .content div.attention{border:1px solid var(--color-warning);border-radius:2px;color:var(--color-warning);display:block;flex:0 0 auto;line-height:1em;padding:0 4px;right:4px;top:8px}:host .prepareDetails.multifile .content-select .content.selected{color:var(--color-accent)}:host .prepareDetails.multifile .content-select .content:hover{background:var(--panel-background-lightgrey)}:host ::ng-deep eo-grid,:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham,:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham .ag-row{background:transparent}:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham .ag-row:hover{background:var(--panel-background-lightgrey)}:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham .ag-row .ag-cell{border-bottom-color:var(--panel-header-border-bottom-color)}:host ::ng-deep eo-list-container .eo-head{height:48px}:host ::ng-deep eo-list-container .eo-grid-footer,:host ::ng-deep eo-list-container .eo-grid-header,:host ::ng-deep eo-list-container .eo-head{background:transparent;border-color:var(--panel-header-border-bottom-color)}:host ::ng-deep .eo-head .eo-header .eo-header-actions eo-icon{color:var(--text-color-hint)!important}:host ::ng-deep .eo-head .eo-header .eo-header-actions eo-icon:hover{color:var(--text-color-caption)!important}:host ::ng-deep .eo-head .eo-header .eo-header-actions eo-icon.active{color:var(--color-accent)!important}:host ::ng-deep .eo-header-icon,:host ::ng-deep .eo-header-title,:host ::ng-deep .template{color:var(--text-color-caption)}:host ::ng-deep .template{cursor:pointer;margin-bottom:1px}:host ::ng-deep .template .title{font-size:var(--font-body);font-weight:var(--font-weight-bold)}:host ::ng-deep .template .description{color:var(--text-color-caption)}:host ::ng-deep .template .chip{display:initial!important}::ng-deep .prepare-delete__dialog{min-height:unset!important;padding:8px}::ng-deep .prepare-delete__dialog--header{background:#fff!important;color:rgba(var(--color-black-rgb),.54)!important;font-size:1.17em!important;font-weight:400!important;margin:0;padding:0 0 1em!important}"]
485
489
  },] }
486
490
  ];
@@ -492,7 +496,8 @@ PrepareDetailsComponent.ctorParameters = () => [
492
496
  { type: NotificationsService },
493
497
  { type: SystemService },
494
498
  { type: SelectionService },
495
- { type: BackendService }
499
+ { type: BackendService },
500
+ { type: CapabilitiesService }
496
501
  ];
497
502
  PrepareDetailsComponent.propDecorators = {
498
503
  file: [{ type: ViewChild, args: ['file',] }],
@@ -507,4 +512,4 @@ PrepareDetailsComponent.propDecorators = {
507
512
  onItemRemove: [{ type: Output }],
508
513
  dataType: [{ type: HostBinding, args: ['attr.data-type',] }]
509
514
  };
510
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUdaLGNBQWMsRUFDZCxhQUFhLEVBRWIsS0FBSyxFQUVMLG9CQUFvQixFQUFFLGNBQWMsRUFDckMsTUFBTSxjQUFjLENBQUM7QUFHdEIsT0FBTyxFQUFrQixnQkFBZ0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBb0J0RyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsb0JBQW9CO0lBMkcvRCxZQUFvQixjQUE4QixFQUN4QyxNQUFjLEVBQ2QsY0FBcUMsRUFDckMsU0FBMkIsRUFDM0IsWUFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsU0FBMkIsRUFDM0IsT0FBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFSVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxjQUFTLEdBQVQs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QUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ3ZEO2dCQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzs7WUFyakJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixnOGVBQStDOzthQUVoRDs7O1lBOUJDLGNBQWM7WUFUUixNQUFNO1lBb0JOLHFCQUFxQjtZQWYzQixnQkFBZ0I7WUFTaEIsb0JBQW9CO1lBSnBCLGFBQWE7WUFRVSxnQkFBZ0I7WUFKakIsY0FBYzs7O21CQW1DbkMsU0FBUyxTQUFDLE1BQU07eUJBQ2hCLFNBQVMsU0FBQyxNQUFNO2tDQUNoQixTQUFTLFNBQUMsZUFBZTt5Q0FDekIsU0FBUyxTQUFDLHNCQUFzQjsyQkFZaEMsS0FBSyxTQUFDLGNBQWM7eUJBZXBCLEtBQUs7NkJBaUNMLEtBQUs7NEJBRUwsTUFBTTt1QkFDTixNQUFNOzJCQUNOLE1BQU07dUJBRU4sV0FBVyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgUHJlcGFyZWRJdGVtLFxyXG4gIFByZXBhcmVkSXRlbVRlbXBsYXRlLFxyXG4gIFByZXBhcmVkSXRlbVR5cGUsXHJcbiAgUHJlcGFyZVNlcnZpY2UsXHJcbiAgU3lzdGVtU2VydmljZSxcclxuICBPYmplY3RUeXBlLFxyXG4gIFV0aWxzLFxyXG4gIExvZ2dlcixcclxuICBOb3RpZmljYXRpb25zU2VydmljZSwgQmFja2VuZFNlcnZpY2VcclxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1TdGF0dXNDaGFuZ2VkRXZlbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL2Zvcm0tc3RhdHVzLWNoYW5nZWQtZXZlbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1NlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vb2JqZWN0LWZvcm0vaW5kZXgnO1xyXG5pbXBvcnQge1ByZXZpZXdGaWxlfSBmcm9tICcuLi9tZWRpYS9tZWRpYS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlUGhhc2Uge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkYXRhOiB7XHJcbiAgICBwcmV2aWV3SW5kZXg/OiBudW1iZXIsXHJcbiAgICBwcmV2aWV3RmlsZT86IFByZXZpZXdGaWxlLFxyXG4gICAgZmlsZT86IGJvb2xlYW4sXHJcbiAgICB3aXRob3V0RmlsZT86IGJvb2xlYW4sXHJcbiAgICB0ZW1wbGF0ZXM/OiBhbnlbXVxyXG4gIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZW8tcHJlcGFyZS1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJlcGFyZURldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xyXG5cclxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXHJcbiAgLy8gVXNlZCB0byBmaW5pc2ggdGhlIHBlbmRpbmcgdGFzayB3aGVuIGVkaXRpbmcgaXMgZG9uZVxyXG4gIHByaXZhdGUgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRUeXBlT2JqZWN0O1xyXG5cclxuICAvLyBoaWRkZW4gZmlsZSBpbnB1dCB0byB0cmlnZ2VyIGZpbGUgdXBsb2Fkc1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnKSBmaWxlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBvYmplY3RGb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EZWxldGUnKSBjb25maXJtRGVsZXRlQnV0dG9uOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1Db250ZW50RGVsZXRlJykgY29uZmlybUNvbnRlbnREZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vIHByZXBhcmF0aW9uIGlzIGRpdmlkZWQgaW50byBzZXZlcmFsIHBoYXNlc1xyXG4gIC8vIHNlbGVjdCBhbiBvYmplY3QgdHlwZVxyXG4gIFBIQVNFX1RZUEUgPSAndHlwZSc7XHJcbiAgLy8gYWRkIGNvbnRlbnRcclxuICBQSEFTRV9DT05URU5UID0gJ2NvbnRlbnQnO1xyXG4gIC8vIHNldCBpbmRleGRhdGFcclxuICBQSEFTRV9JTkRFWERBVEEgPSAnaW5kZXhkYXRhJztcclxuXHJcbiAgX3ByZXBhcmVkSXRlbTogUHJlcGFyZWRJdGVtO1xyXG5cclxuICBASW5wdXQoJ3ByZXBhcmVkSXRlbScpXHJcbiAgc2V0IHByZXBhcmVkSXRlbShpdGVtOiBQcmVwYXJlZEl0ZW0pIHtcclxuICAgIGNvbnN0IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5ID0gKG9iaikgPT4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMob2JqIHx8IHt9KS5zb3J0KCkubWFwKGtleSA9PiBvYmpba2V5XSkpO1xyXG4gICAgY29uc3QgaXNQcm9jZXNzaW5nQWxsb3dlZCA9IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5KHRoaXMuX3ByZXBhcmVkSXRlbSkgIT09IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5KGl0ZW0pO1xyXG4gICAgdGhpcy5fcHJlcGFyZWRJdGVtID0gaXRlbTtcclxuICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbSAmJiB0aGlzLnByZXBhcmVkSXRlbS5pZCAmJiBpc1Byb2Nlc3NpbmdBbGxvd2VkKSB7XHJcbiAgICAgIHRoaXMucHJvY2VzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHByZXBhcmVkSXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcmVwYXJlZEl0ZW07XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgZW1wdHlTdGF0ZSA9IHtpY29uOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19lcnJvci5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnZGV0YWlscy1lcnJvcid9O1xyXG5cclxuICBwcmVwYXJlUGhhc2U6IFByZXBhcmVQaGFzZTtcclxuICBzZWxlY3RlZFRlbXBsYXRlOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZTtcclxuICBzZWxlY3RlZFRlbXBsYXRlRmlsZTogUHJldmlld0ZpbGU7XHJcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xyXG4gIGZvcm1TdGF0ZTogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcclxuICBjaG9vc2VUZW1wbGF0ZTogYm9vbGVhbjtcclxuICB1cGxvYWRJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIGNvbW1pdHRpbmc6IGJvb2xlYW47XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIHRhZ0ZpbHRlck9wdGlvbnM6IGFueTtcclxuICBfc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xyXG4gIF9zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IGZhbHNlO1xyXG4gIGRlbGV0ZWRDb250ZW50SW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLy8gdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBkZXRhaWxzIGhlYWRlclxyXG4gIGhlYWRlciA9IHtcclxuICAgIHRpdGxlOiBudWxsLFxyXG4gICAgbG9jYXRpb246IHtcclxuICAgICAgbGFiZWw6IG51bGwsXHJcbiAgICAgIGxpbms6IG51bGxcclxuICAgIH0sXHJcbiAgICBzdWJ0aXRsZTogbnVsbFxyXG4gIH07XHJcblxyXG4gIGNvbERlZnM6IENvbERlZltdID0gW3tcclxuICAgIGhlYWRlck5hbWU6ICcnLFxyXG4gICAgZmllbGQ6ICd0aXRsZScsXHJcbiAgICBjZWxsUmVuZGVyZXI6IHRoaXMuY2VsbFJlbmRlcmVyLFxyXG4gICAgZmlsdGVyOiBmYWxzZVxyXG4gIH1dO1xyXG5cclxuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnO1xyXG5cclxuICBAT3V0cHV0KCkgb25JdGVtQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJlcGFyZWRJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXBhcmVkSXRlbT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHlwZScpXHJcbiAgZ2V0IGRhdGFUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZWRJdGVtICYmIHRoaXMucHJlcGFyZWRJdGVtLnNlbGVjdGVkdHlwZSA/IHRoaXMucHJlcGFyZWRJdGVtLnNlbGVjdGVkdHlwZS5uYW1lIDogJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3dEZWxldGVEaWFsb2codmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gdmFsO1xyXG5cclxuICAgIGlmICh0aGlzLl9zaG93RGVsZXRlRGlhbG9nKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtRGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0RlbGV0ZURpYWxvZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93RGVsZXRlRGlhbG9nO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3dDb250ZW50RGVsZXRlRGlhbG9nKHZhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSB2YWw7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtQ29udGVudERlbGV0ZUJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dDb250ZW50RGVsZXRlRGlhbG9nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBjZWxsUmVuZGVyZXIocGFyYW1zKSB7XHJcbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ0ZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7cGFyYW1zLmRhdGEudGl0bGUgfHwgJyd9JHtwYXJhbXMuZGF0YS5jb250ZW50ID8gJzxzcGFuIGNsYXNzPVwidGl0bGVcIj4nICsgJyAoJyArIHBhcmFtcy5kYXRhLmNvbnRlbnQubWltZWdyb3VwICsgJyknICsgJzwvc3Bhbj4nIDogJyd9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtwYXJhbXMuZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ308L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxyXG4gICAgICAgICAgICAgICAgJHtwYXJhbXMuZGF0YS50YWdzLm1hcCh0YWcgPT4gYDxzcGFuIGNsYXNzPVwiY2hpcFwiPiR7dGFnfTwvc3Bhbj5gKS5qb2luKCcnKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XHJcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXHJcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcclxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xyXG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xyXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlRm9ybUNvbnRlbnQoZm9ybURhdGE/KSB7XHJcbiAgICBjb25zdCBkYXRhID0gZm9ybURhdGEgfHwgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZGF0YTtcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XHJcbiAgICAgIGZvcm1Nb2RlbDogdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZm9ybSxcclxuICAgICAgZGF0YTogZGF0YVxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQpIHtcclxuICAgICAgdGhpcy5mb3JtT3B0aW9ucy5jb250ZXh0ID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQuaWQsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50aXRsZSxcclxuICAgICAgICB0eXBlTmFtZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGVcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbW1pdHMgYSBwcmVwYXJlZCBpdGVtLiBUaGlzIHdpbGwgY2F1c2UgdGhlIHRlbXBvcmFyeSBwcmVwYXJlZCBvYmplY3QgdG8gYmUgY29udmVydGVkIHRvIGEgcmVhbCBETVMtT2JqZWN0LlxyXG4gICAqIEBwYXJhbSBvcGVuTG9jYXRpb25BZnRlckNvbW1pdCAtIHdoZW4gc2V0IHRvIHRydWUsIGFwcGxpY2F0aW9uIHdpbGwgbmF2aWdhdGUgdG8gdGhlIG9iamVjdHMgbG9jYXRpb25cclxuICAgKi9cclxuICBjb21taXQob3BlbkxvY2F0aW9uQWZ0ZXJDb21taXQ/OiBib29sZWFuKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICYmICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLm9iamVjdEZvcm0uZ2V0Rm9ybURhdGEoKTtcclxuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgICAgIC5jb21taXRQcmVwYXJlZEl0ZW0odGhpcy5wcmVwYXJlZEl0ZW0uaWQsIHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpLm5hbWUsIGZvcm1EYXRhKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25Db21taXQuZW1pdChyZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgICAgICAgICAgaWYgKG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgcmVzXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIFV0aWxzLnRocm93KGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge2tleSwgY2F1c2UsIHVuaXF1ZWZpZWxkc30gPSBlcnJvci5lcnJvcjtcclxuICAgICAgICAgICAgaWYgKGtleSAmJiBrZXkgPT09ICdETVNfTUVUQURBVEFfVU5JUVVFX1ZJT0xBVElPTl9FUlJPUicpIHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51bmlxdWUudmFsaWRhdGlvbi5lcnJvci5oaW50Jywge2ZpZWxkOiB1bmlxdWVmaWVsZHMudG9TdHJpbmcoKX0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXVzZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKG51bGwsIGNhdXNlLm1lc3NhZ2VzWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUZvcm1Db250ZW50KGZvcm1EYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuY3JlYXRlZC5lcnJvci50aXRsZScpLFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IubWVzc2FnZScpXHJcbiAgICAgICAgICApKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogUHJlcGFyZWRJdGVtKSB7XHJcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgIHRoaXMub25JdGVtUmVtb3ZlLmVtaXQoaXRlbSk7XHJcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtQ29udGVudChpdGVtOiBQcmVwYXJlZEl0ZW0sIGRlbGV0ZWRDb250ZW50SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZS5kZWxldGVQcmVwYXJlZEl0ZW1Db250ZW50KGl0ZW0uaWQsIGRlbGV0ZWRDb250ZW50SW5kZXgpXHJcbiAgICAuc3Vic2NyaWJlKCh1cGRhdGVkSXRlbTogUHJlcGFyZWRJdGVtKSA9PiB7XHJcbiAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gdXBkYXRlZEl0ZW07XHJcbiAgICAgIHRoaXMuc2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZU5hbWVzKGl0ZW06IFByZXBhcmVkSXRlbSkge1xyXG4gICAgcmV0dXJuIChpdGVtLmNvbnRlbnRzIHx8IFtdKS5tYXAoYyA9PiBjLnBhdGgpLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYSB0YXJnZXQgb2JqZWN0IHR5cGUgZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXHJcbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgb2JqZWN0IHR5cGVzIG5hbWUgdG8gYmUgc2V0IGFzIHRhcmdldFxyXG4gICAqL1xyXG4gIHNlbGVjdE9iamVjdFR5cGUodHlwZTogUHJlcGFyZWRJdGVtVHlwZSkge1xyXG4gICAgdGhpcy5wcmVwYXJlZEl0ZW0udHlwZXNcclxuICAgICAgLmZvckVhY2goKHQpID0+IHQuc2VsZWN0ZWQgPSAodC5uYW1lID09PSB0eXBlLm5hbWUpKTtcclxuXHJcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVDaGlsZFR5cGUodHlwZS5uYW1lLCB0aGlzLnByZXBhcmVkSXRlbS5pZClcclxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZWRJdGVtID0+IHtcclxuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodXBkYXRlZFByZXBhcmVkSXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgdGVtcGxhdGUgdG8gdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbS5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBhZGRUZW1wbGF0ZSh0ZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGUpIHtcclxuXHJcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXHJcbiAgICAgIC5hZGRUZW1wbGF0ZSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgdGVtcGxhdGUuaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRQcmVwYXJlZEl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodXBkYXRlZFByZXBhcmVkSXRlbSk7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS50ZW1wbGF0ZS5lcnJvci50aXRsZScpLFxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUudGVtcGxhdGUuZXJyb3IubWVzc2FnZScpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYSB0ZW1wbGF0ZS4gV2lsbCBzaG93IHByZXZpZXcgZm9yIHRoZSBzZWxlY3RlZCB0ZW1wbGF0ZS5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgc2VsZWN0ZWRcclxuICAgKi9cclxuICBzZWxlY3RUZW1wbGF0ZSh0ZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlRmlsZSA9ICEodGVtcGxhdGUgJiYgdGVtcGxhdGUuY29udGVudCkgPyBudWxsIDoge1xyXG4gICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0VGVtcGxhdGVQcmV2aWV3VXJpKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZS5pZCksXHJcbiAgICAgIHVyaVBkZjogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRUZW1wbGF0ZVByZXZpZXdVcmkodGhpcy5zZWxlY3RlZFRlbXBsYXRlLmlkLCAnUERGJyksXHJcbiAgICAgIG1pbWV0eXBlOiB0ZW1wbGF0ZS5jb250ZW50Lm1pbWV0eXBlLFxyXG4gICAgICBtaW1lZ3JvdXA6IHRlbXBsYXRlLmNvbnRlbnQubWltZWdyb3VwLFxyXG4gICAgICBzaXplOiB0ZW1wbGF0ZS5jb250ZW50LnNpemVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aWV3VXJpKGluZGV4OiBudW1iZXIpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5wcmVwYXJlUGhhc2UuZGF0YSwgdGhpcy5nZXRQcmV2aWV3RGF0YShpbmRleCkpO1xyXG4gIH1cclxuXHJcbiAgLy8gc2tpcCBjb250ZW50IHNlbGVjdGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbVxyXG4gIC8vIGFuZCBjb250aW51ZSBzZXR0aW5nIGluZGV4ZGF0YVxyXG4gIG5vRmlsZSgpIHtcclxuICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgfVxyXG5cclxuICAvLyB0cmlnZ2VyIGZpbGUgdXBsb2FkXHJcbiAgdXBsb2FkKCkge1xyXG4gICAgLy8gYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0ZWQgYSBmaWxlIGZpbGVDaGFuZ2VMaXN0ZW5lcigpIHdpbGwgY29udGludWVcclxuICAgIHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBvbkNoYW5nZSBsaXN0ZW5lciBvbiBoaWRkZW4gZmlsZSBpbnB1dFxyXG4gIGZpbGVDaGFuZ2VMaXN0ZW5lcihldmVudCkge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50WzBdO1xyXG4gICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgLnVwbG9hZENvbnRlbnQodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGZpbGUpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAvLyB1cGxvYWQgc3VjY2VlZGVkIHNvIHdlIGNhbiBnbyBvbiB0byB0aGUgbmV4dCBwcmVwYXJlIHBoYXNlXHJcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSBuZXcgUHJlcGFyZWRJdGVtKHJlcyk7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodGhpcy5wcmVwYXJlZEl0ZW0pO1xyXG4gICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBlcnJvci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XHJcbiAgICAgICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKSxcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJylcclxuICAgICAgKSk7XHJcbiAgfVxyXG5cclxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dCkge1xyXG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2VzcygpIHtcclxuICAgIC8vIHRvZG86IHJlc2V0IHN0dWZmXHJcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zID0gbnVsbDtcclxuICAgIHRoaXMuZ2V0UHJlcGFyZVBoYXNlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmUgdGhlIHByZXBhcmUgcGhhc2UgdG8gYmUgaW5pdGlhbGl6ZWQgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnNcclxuICAgKiBvZiB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0UHJlcGFyZVBoYXNlKCkge1xyXG4gICAgaWYgKCF0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKSkge1xyXG4gICAgICAvLyBTdGVwICMxIHNlbGVjdCBhbiBvYmplY3QgdHlwZSBpZiBub3QgeWV0IHNldFxyXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLmhhc0NvbnRlbnQoKSkge1xyXG4gICAgICAvLyBTdGVwICMyIGFkZCBjb250ZW50IGlmIG5vdCB5ZXQgY29udGFpbmVkXHJcbiAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0NPTlRFTlQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU3RlcCAjMyBlZGl0IGluZGV4ZGF0YSBhbmQgc2F2ZVxyXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUZW1wbGF0ZShzZWxlY3RlZFR5cGVPYmplY3QpIHtcclxuICAgIGNvbnN0IHR5cGU6IE9iamVjdFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShzZWxlY3RlZFR5cGVPYmplY3QubmFtZSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxyXG4gICAgICAuZ2V0VGVtcGxhdGVzKHNlbGVjdGVkVHlwZU9iamVjdC5uYW1lKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0ZW1wbGF0ZXM6IFByZXBhcmVkSXRlbVRlbXBsYXRlW10pID0+IHtcclxuICAgICAgICBjb25zdCBmaWxlUmVxdWlyZWQgPSB0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS5jb250ZW50c3RhdGUgPT09ICdSRVFVSVJFRCc7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgIGZpbGU6IHR5cGUubWF4RmlsZXMgPiAwLFxyXG4gICAgICAgICAgd2l0aG91dEZpbGU6ICEodHlwZS5taW5GaWxlcyA+IDApICYmICFmaWxlUmVxdWlyZWQsXHJcbiAgICAgICAgICB0ZW1wbGF0ZXM6IHRlbXBsYXRlcyB8fCBbXVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IG9iamVjdCB0eXBlIGRvZXMgbm90IHN1cHBvcnQgZmlsZSB1cGxvYWQgb3IgdGVtcGxhdGUgY29udGVudHNcclxuICAgICAgICAvLyB3ZSBza2lwIGNvbnRlbnQgcGhhc2UgYW5kIG1vdmUgb24gdG8gaW5kZXhkYXRhIHBoYXNlXHJcbiAgICAgICAgaWYgKCFkYXRhLmZpbGUpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlcGFyZVBoYXNlID0ge1xyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX0NPTlRFTlQsXHJcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLnNldHVwVGl0bGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWdGaWx0ZXJPcHRpb25zID0gdGhpcy5jcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlcyk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtjb3VudDogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXMubGVuZ3RofSxcclxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMucHJlcGFyZVBoYXNlLmRhdGEudGVtcGxhdGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygndGl0bGUnKSksXHJcbiAgICAgICAgICBjb2x1bW5EZWZzOiB0aGlzLmNvbERlZnMsXHJcbiAgICAgICAgICByb3dIZWlnaHQ6IDgwXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlczogUHJlcGFyZWRJdGVtVGVtcGxhdGVbXSkge1xyXG4gICAgbGV0IHRhZ0ZpbHRlck9wdGlvbnMgPSBbXTtcclxuICAgIHRlbXBsYXRlcy5mb3JFYWNoKHRlbXBsYXRlID0+IHtcclxuICAgICAgdGVtcGxhdGUudGFncy5mb3JFYWNoKHRhZyA9PiB7XHJcbiAgICAgICAgdGFnRmlsdGVyT3B0aW9ucy5wdXNoKHtsYWJlbDogdGFnLCBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudGFncy5pbmNsdWRlcyh0YWcpLCB2YWx1ZTogdHJ1ZX0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIF8udW5pcUJ5KHRhZ0ZpbHRlck9wdGlvbnMsICdsYWJlbCcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgYSBzcGVjaWZpYyBwcmVwYXJlIHBoYXNlLlxyXG4gICAqIEBwYXJhbSBwaGFzZSAtIHBoYXNlIHRvIGluaXQgKFBIQVNFX1RZUEUsIFBIQVNFX0NPTlRFTlQsIFBIQVNFX0lOREVYREFUQSlcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRQcmVwYXJlUGhhc2UocGhhc2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5wcmVwYXJlUGhhc2UgPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QgPSB0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHBoYXNlKSB7XHJcbiAgICAgIC8vIGluaXQgcHJlcGFyZSBwaGFzZSBmb3Igc2VsZWN0aW5nIHRoZSB0YXJnZXQgb2JqZWN0IHR5cGVcclxuICAgICAgY2FzZSB0aGlzLlBIQVNFX1RZUEU6IHtcclxuXHJcbiAgICAgICAgdGhpcy5wcmVwYXJlUGhhc2UgPSB7XHJcbiAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX1RZUEUsXHJcbiAgICAgICAgICBkYXRhOiB0aGlzLmdldFByZXZpZXdEYXRhKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIHNldHRpbmcgdXAgY29udGVudFxyXG4gICAgICBjYXNlIHRoaXMuUEhBU0VfQ09OVEVOVDoge1xyXG5cclxuICAgICAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gbnVsbDtcclxuXHJcbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciBvciBub3QgdGhlIHByZXBhcmVkSXRlbSBhbHJlYWR5IGNvbnRhaW5zIGEgZmlsZSBvciB0ZW1wbGF0ZVxyXG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5oYXNDb250ZW50KCkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUudHlwZXNlbGVjdGVkYWxsb3dlZCkge1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgdHlwZSBpcyBub3QgYWxsb3dlZCwgd2UnbGwgZ28gYmFjayB0byB0aGUgdHlwZSBzZWxlY3Qgc3RhdGUgLi4uXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gLi4uIG90aGVyd2lzZSB3ZSBnbyBvbiBzZXR0aW5nIGluZGV4ZGF0YVxyXG4gICAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLmNvbnRlbnRzdGF0ZSA9PT0gJ05PQ09OVEVOVEFMTE9XRUQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKHRoaXMuc2VsZWN0ZWRUeXBlT2JqZWN0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy8gaW5pdCBwcmVwYXJlIHBoYXNlIGZvciBhZGRpbmcgaW5kZXhkYXRhXHJcbiAgICAgIGNhc2UgdGhpcy5QSEFTRV9JTkRFWERBVEE6IHtcclxuXHJcbiAgICAgICAgdGhpcy5jaG9vc2VUZW1wbGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQpIHtcclxuICAgICAgICAgIC8vIGlmIHRoZSBzZWxlY3RlZCB0eXBlIGlzIG5vdCBhbGxvd2VkLCB3ZSdsbCBnbyBiYWNrIHRvIHRoZSB0eXBlIHNlbGVjdCBzdGF0ZSAuLi5cclxuICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybUNvbnRlbnQoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnByZXBhcmVQaGFzZSA9IHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5QSEFTRV9JTkRFWERBVEEsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0UHJldmlld0RhdGEoKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aWV3RGF0YShpbmRleD86IG51bWJlcik6IGFueSB7XHJcbiAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0gJiYgdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHMgJiYgdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHMubGVuZ3RoKSB7XHJcbiAgICAgIGluZGV4ID0gaW5kZXggfHwgMDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwcmV2aWV3SW5kZXg6IGluZGV4LFxyXG4gICAgICAgIHByZXZpZXdGaWxlOiB7XHJcbiAgICAgICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJldmlld1VyaSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgaW5kZXgpLFxyXG4gICAgICAgICAgdXJpUGRmOiB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFByZXZpZXdVcmkodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGluZGV4LCAnUERGJyksXHJcbiAgICAgICAgICBtaW1ldHlwZTogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLm1pbWV0eXBlLFxyXG4gICAgICAgICAgbWltZWdyb3VwOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ubWltZWdyb3VwLFxyXG4gICAgICAgICAgcGF0aDogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLnBhdGgsXHJcbiAgICAgICAgICBzaXplOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0uc2l6ZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge3ByZXZpZXdGaWxlOiBudWxsfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHVwIHRpdGxlIGZvciB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtIGJhc2VkIG9uIHRoZVxyXG4gICAqIGN1cnJlbnQgcHJlcGFyZSBwaGFzZS4gU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBwcmVwYXJlIHBoYXNlIGlzIGlkZW50aWZpZWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cFRpdGxlKCkge1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlLmdldChbXHJcbiAgICAgICdlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnN5c3Jvb3QnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5wcmVmaXgnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUudGl0bGUnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUuc3VidGl0bGUnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSdcclxuICAgIF0pLnN1YnNjcmliZSh0ID0+IHtcclxuXHJcbiAgICAgIGxldCBoZWFkZXIgPSB7XHJcbiAgICAgICAgdGl0bGU6IG51bGwsXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgIGxhYmVsOiBudWxsLFxyXG4gICAgICAgICAgbGluazogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3VidGl0bGU6IG51bGxcclxuICAgICAgfTtcclxuICAgICAgc3dpdGNoICh0aGlzLnByZXBhcmVQaGFzZS5uYW1lKSB7XHJcbiAgICAgICAgY2FzZSB0aGlzLlBIQVNFX1RZUEU6IHtcclxuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHRbJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnRpdGxlJ107XHJcbiAgICAgICAgICBoZWFkZXIuc3VidGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMudHlwZS5zdWJ0aXRsZSddO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9DT05URU5UOiB7XHJcbiAgICAgICAgICBjb25zdCB0eXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XHJcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0eXBlT2JqZWN0ID8gdHlwZU9iamVjdC5sYWJlbCA6ICcnO1xyXG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIHRoaXMuUEhBU0VfSU5ERVhEQVRBOiB7XHJcbiAgICAgICAgICBjb25zdCB0eXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XHJcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0eXBlT2JqZWN0ID8gdHlwZU9iamVjdC5sYWJlbCA6ICcnO1xyXG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSddO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBzZXQgdXAgbG9jYXRpb24gaW5mb1xyXG4gICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGUgPT09ICdzeXNyb290Jykge1xyXG4gICAgICAgIGhlYWRlci5sb2NhdGlvbiA9IHtcclxuICAgICAgICAgIGxhYmVsOiB0Wydlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnN5c3Jvb3QnXSxcclxuICAgICAgICAgIGxpbms6IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudHlwZSk7XHJcbiAgICAgICAgaGVhZGVyLmxvY2F0aW9uID0ge1xyXG4gICAgICAgICAgbGFiZWw6IGAgJHtwYXJlbnRUeXBlLmxhYmVsfTogJHt0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudGl0bGV9YCxcclxuICAgICAgICAgIGxpbms6IGAvb2JqZWN0LyR7dGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkfWBcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93VGVtcGxhdGVTZWxlY3RvcihzaG93OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gc2hvdztcclxuICAgIHRoaXMuc2VsZWN0VGVtcGxhdGUodGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQoKSB7XHJcbiAgICBpZiAodGhpcy5wcmVwYXJlUGhhc2UpIHtcclxuICAgICAgY29uc3QgZmlsZSA9IHRoaXMucHJlcGFyZVBoYXNlLm5hbWUgPT09ICdjb250ZW50JyA/IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgOiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlO1xyXG4gICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZChmaWxlLnVyaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFja0J5SWRGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhY2tCeUluZGV4Rm4oaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25cclxuICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKS5mb2N1cyRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogUHJlcGFyZWRJdGVtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMudHlwZXMpIHtcclxuICAgICAgICAgICAgcmVzLnR5cGVzID0gcmVzLnR5cGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHJlcztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUdaLGNBQWMsRUFDZCxhQUFhLEVBRWIsS0FBSyxFQUVMLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFDMUQsTUFBTSxjQUFjLENBQUM7QUFHdEIsT0FBTyxFQUFrQixnQkFBZ0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBb0J0RyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsb0JBQW9CO0lBMkcvRCxZQUFvQixjQUE4QixFQUN4QyxNQUFjLEVBQ2QsY0FBcUMsRUFDckMsU0FBMkIsRUFDM0IsWUFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsU0FBMkIsRUFDM0IsT0FBdUIsRUFDdkIsV0FBZ0M7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFUVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FB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QUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO29CQUNwQixHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDdkQ7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7OztZQTFqQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDI5ZUFBK0M7O2FBRWhEOzs7WUE5QkMsY0FBYztZQVRSLE1BQU07WUFvQk4scUJBQXFCO1lBZjNCLGdCQUFnQjtZQVNoQixvQkFBb0I7WUFKcEIsYUFBYTtZQVFVLGdCQUFnQjtZQUpqQixjQUFjO1lBQUUsbUJBQW1COzs7bUJBbUN4RCxTQUFTLFNBQUMsTUFBTTt5QkFDaEIsU0FBUyxTQUFDLE1BQU07a0NBQ2hCLFNBQVMsU0FBQyxlQUFlO3lDQUN6QixTQUFTLFNBQUMsc0JBQXNCOzJCQVloQyxLQUFLLFNBQUMsY0FBYzt5QkFlcEIsS0FBSzs2QkFpQ0wsS0FBSzs0QkFFTCxNQUFNO3VCQUNOLE1BQU07MkJBQ04sTUFBTTt1QkFFTixXQUFXLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgVmlld0NoaWxkLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29sRGVmLCBHcmlkT3B0aW9uc30gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNsYXRlU2VydmljZSxcclxuICBQcmVwYXJlZEl0ZW0sXHJcbiAgUHJlcGFyZWRJdGVtVGVtcGxhdGUsXHJcbiAgUHJlcGFyZWRJdGVtVHlwZSxcclxuICBQcmVwYXJlU2VydmljZSxcclxuICBTeXN0ZW1TZXJ2aWNlLFxyXG4gIE9iamVjdFR5cGUsXHJcbiAgVXRpbHMsXHJcbiAgTG9nZ2VyLFxyXG4gIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBCYWNrZW5kU2VydmljZSwgQ2FwYWJpbGl0aWVzU2VydmljZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U2VsZWN0aW9uQ29uZmlnLCBTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS9pbmRleCc7XHJcbmltcG9ydCB7UHJldmlld0ZpbGV9IGZyb20gJy4uL21lZGlhL21lZGlhLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVQaGFzZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRhdGE6IHtcclxuICAgIHByZXZpZXdJbmRleD86IG51bWJlcixcclxuICAgIHByZXZpZXdGaWxlPzogUHJldmlld0ZpbGUsXHJcbiAgICBmaWxlPzogYm9vbGVhbixcclxuICAgIHdpdGhvdXRGaWxlPzogYm9vbGVhbixcclxuICAgIHRlbXBsYXRlcz86IGFueVtdXHJcbiAgfTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlby1wcmVwYXJlLWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmVwYXJlRGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XHJcblxyXG4gIC8vIElEIHNldCBieSBwZW5kaW5nQ2hhbmdlcyBzZXJ2aWNlIHdoZW4gZWRpdGluZyBpbmRleGRhdGFcclxuICAvLyBVc2VkIHRvIGZpbmlzaCB0aGUgcGVuZGluZyB0YXNrIHdoZW4gZWRpdGluZyBpcyBkb25lXHJcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZFR5cGVPYmplY3Q7XHJcblxyXG4gIC8vIGhpZGRlbiBmaWxlIGlucHV0IHRvIHRyaWdnZXIgZmlsZSB1cGxvYWRzXHJcbiAgQFZpZXdDaGlsZCgnZmlsZScpIGZpbGU6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZm9ybScpIG9iamVjdEZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybUNvbnRlbnREZWxldGUnKSBjb25maXJtQ29udGVudERlbGV0ZUJ1dHRvbjogRWxlbWVudFJlZjtcclxuXHJcbiAgLy8gcHJlcGFyYXRpb24gaXMgZGl2aWRlZCBpbnRvIHNldmVyYWwgcGhhc2VzXHJcbiAgLy8gc2VsZWN0IGFuIG9iamVjdCB0eXBlXHJcbiAgUEhBU0VfVFlQRSA9ICd0eXBlJztcclxuICAvLyBhZGQgY29udGVudFxyXG4gIFBIQVNFX0NPTlRFTlQgPSAnY29udGVudCc7XHJcbiAgLy8gc2V0IGluZGV4ZGF0YVxyXG4gIFBIQVNFX0lOREVYREFUQSA9ICdpbmRleGRhdGEnO1xyXG5cclxuICBfcHJlcGFyZWRJdGVtOiBQcmVwYXJlZEl0ZW07XHJcblxyXG4gIEBJbnB1dCgncHJlcGFyZWRJdGVtJylcclxuICBzZXQgcHJlcGFyZWRJdGVtKGl0ZW06IFByZXBhcmVkSXRlbSkge1xyXG4gICAgY29uc3Qgb2JqZWN0VG9TdHJpbmdpZmllZFZhbHVlQXJyYXkgPSAob2JqKSA9PiBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhvYmogfHwge30pLnNvcnQoKS5tYXAoa2V5ID0+IG9ialtrZXldKSk7XHJcbiAgICBjb25zdCBpc1Byb2Nlc3NpbmdBbGxvd2VkID0gb2JqZWN0VG9TdHJpbmdpZmllZFZhbHVlQXJyYXkodGhpcy5fcHJlcGFyZWRJdGVtKSAhPT0gb2JqZWN0VG9TdHJpbmdpZmllZFZhbHVlQXJyYXkoaXRlbSk7XHJcbiAgICB0aGlzLl9wcmVwYXJlZEl0ZW0gPSBpdGVtO1xyXG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtICYmIHRoaXMucHJlcGFyZWRJdGVtLmlkICYmIGlzUHJvY2Vzc2luZ0FsbG93ZWQpIHtcclxuICAgICAgdGhpcy5wcm9jZXNzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcHJlcGFyZWRJdGVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVkSXRlbTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKSBlbXB0eVN0YXRlID0ge2ljb246ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Vycm9yLnN2ZycsIHRleHQ6ICcnLCBjbGFzc05hbWU6ICdkZXRhaWxzLWVycm9yJ307XHJcblxyXG4gIHByZXBhcmVQaGFzZTogUHJlcGFyZVBoYXNlO1xyXG4gIHNlbGVjdGVkVGVtcGxhdGU6IFByZXBhcmVkSXRlbVRlbXBsYXRlO1xyXG4gIHNlbGVjdGVkVGVtcGxhdGVGaWxlOiBQcmV2aWV3RmlsZTtcclxuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XHJcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xyXG4gIGNob29zZVRlbXBsYXRlOiBib29sZWFuO1xyXG4gIHVwbG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgY29tbWl0dGluZzogYm9vbGVhbjtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgdGFnRmlsdGVyT3B0aW9uczogYW55O1xyXG4gIF9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XHJcbiAgX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nID0gZmFsc2U7XHJcbiAgZGVsZXRlZENvbnRlbnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAvLyB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGRldGFpbHMgaGVhZGVyXHJcbiAgaGVhZGVyID0ge1xyXG4gICAgdGl0bGU6IG51bGwsXHJcbiAgICBsb2NhdGlvbjoge1xyXG4gICAgICBsYWJlbDogbnVsbCxcclxuICAgICAgbGluazogbnVsbFxyXG4gICAgfSxcclxuICAgIHN1YnRpdGxlOiBudWxsXHJcbiAgfTtcclxuXHJcbiAgY29sRGVmczogQ29sRGVmW10gPSBbe1xyXG4gICAgaGVhZGVyTmFtZTogJycsXHJcbiAgICBmaWVsZDogJ3RpdGxlJyxcclxuICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jZWxsUmVuZGVyZXIsXHJcbiAgICBmaWx0ZXI6IGZhbHNlXHJcbiAgfV07XHJcblxyXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkl0ZW1DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQcmVwYXJlZEl0ZW0+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29tbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uSXRlbVJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8UHJlcGFyZWRJdGVtPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJylcclxuICBnZXQgZGF0YVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlZEl0ZW0gJiYgdGhpcy5wcmVwYXJlZEl0ZW0uc2VsZWN0ZWR0eXBlID8gdGhpcy5wcmVwYXJlZEl0ZW0uc2VsZWN0ZWR0eXBlLm5hbWUgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvd0RlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3Nob3dEZWxldGVEaWFsb2cgPSB2YWw7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Nob3dEZWxldGVEaWFsb2cpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1EZWxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBzaG93RGVsZXRlRGlhbG9nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dEZWxldGVEaWFsb2c7XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvd0NvbnRlbnREZWxldGVEaWFsb2codmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IHZhbDtcclxuXHJcbiAgICBpZiAodGhpcy5fc2hvd0NvbnRlbnREZWxldGVEaWFsb2cpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1Db250ZW50RGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0NvbnRlbnREZWxldGVEaWFsb2coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hvd0NvbnRlbnREZWxldGVEaWFsb2c7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByZXBhcmVTZXJ2aWNlOiBQcmVwYXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FwYWJpbGl0ZXM6IENhcGFiaWxpdGllc1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBjZWxsUmVuZGVyZXIocGFyYW1zKSB7XHJcbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ0ZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7cGFyYW1zLmRhdGEudGl0bGUgfHwgJyd9JHtwYXJhbXMuZGF0YS5jb250ZW50ID8gJzxzcGFuIGNsYXNzPVwidGl0bGVcIj4nICsgJyAoJyArIHBhcmFtcy5kYXRhLmNvbnRlbnQubWltZWdyb3VwICsgJyknICsgJzwvc3Bhbj4nIDogJyd9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtwYXJhbXMuZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ308L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxyXG4gICAgICAgICAgICAgICAgJHtwYXJhbXMuZGF0YS50YWdzLm1hcCh0YWcgPT4gYDxzcGFuIGNsYXNzPVwiY2hpcFwiPiR7dGFnfTwvc3Bhbj5gKS5qb2luKCcnKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XHJcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXHJcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcclxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xyXG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xyXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlRm9ybUNvbnRlbnQoZm9ybURhdGE/KSB7XHJcbiAgICBjb25zdCBkYXRhID0gZm9ybURhdGEgfHwgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZGF0YTtcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XHJcbiAgICAgIGZvcm1Nb2RlbDogdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZm9ybSxcclxuICAgICAgZGF0YTogZGF0YVxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQpIHtcclxuICAgICAgdGhpcy5mb3JtT3B0aW9ucy5jb250ZXh0ID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQuaWQsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50aXRsZSxcclxuICAgICAgICB0eXBlTmFtZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGVcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbW1pdHMgYSBwcmVwYXJlZCBpdGVtLiBUaGlzIHdpbGwgY2F1c2UgdGhlIHRlbXBvcmFyeSBwcmVwYXJlZCBvYmplY3QgdG8gYmUgY29udmVydGVkIHRvIGEgcmVhbCBETVMtT2JqZWN0LlxyXG4gICAqIEBwYXJhbSBvcGVuTG9jYXRpb25BZnRlckNvbW1pdCAtIHdoZW4gc2V0IHRvIHRydWUsIGFwcGxpY2F0aW9uIHdpbGwgbmF2aWdhdGUgdG8gdGhlIG9iamVjdHMgbG9jYXRpb25cclxuICAgKi9cclxuICBjb21taXQob3BlbkxvY2F0aW9uQWZ0ZXJDb21taXQ/OiBib29sZWFuKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICYmICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLm9iamVjdEZvcm0uZ2V0Rm9ybURhdGEoKTtcclxuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgICAgIC5jb21taXRQcmVwYXJlZEl0ZW0odGhpcy5wcmVwYXJlZEl0ZW0uaWQsIHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpLm5hbWUsIGZvcm1EYXRhKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25Db21taXQuZW1pdChyZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgICAgICAgICAgaWYgKG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgcmVzXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIFV0aWxzLnRocm93KGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge2tleSwgY2F1c2UsIHVuaXF1ZWZpZWxkc30gPSBlcnJvci5lcnJvcjtcclxuICAgICAgICAgICAgaWYgKGtleSAmJiBrZXkgPT09ICdETVNfTUVUQURBVEFfVU5JUVVFX1ZJT0xBVElPTl9FUlJPUicpIHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51bmlxdWUudmFsaWRhdGlvbi5lcnJvci5oaW50Jywge2ZpZWxkOiB1bmlxdWVmaWVsZHMudG9TdHJpbmcoKX0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXVzZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKG51bGwsIGNhdXNlLm1lc3NhZ2VzWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUZvcm1Db250ZW50KGZvcm1EYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuY3JlYXRlZC5lcnJvci50aXRsZScpLFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IubWVzc2FnZScpXHJcbiAgICAgICAgICApKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogUHJlcGFyZWRJdGVtKSB7XHJcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgIHRoaXMub25JdGVtUmVtb3ZlLmVtaXQoaXRlbSk7XHJcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtQ29udGVudChpdGVtOiBQcmVwYXJlZEl0ZW0sIGRlbGV0ZWRDb250ZW50SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZS5kZWxldGVQcmVwYXJlZEl0ZW1Db250ZW50KGl0ZW0uaWQsIGRlbGV0ZWRDb250ZW50SW5kZXgpXHJcbiAgICAuc3Vic2NyaWJlKCh1cGRhdGVkSXRlbTogUHJlcGFyZWRJdGVtKSA9PiB7XHJcbiAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gdXBkYXRlZEl0ZW07XHJcbiAgICAgIHRoaXMuc2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZU5hbWVzKGl0ZW06IFByZXBhcmVkSXRlbSkge1xyXG4gICAgcmV0dXJuIChpdGVtLmNvbnRlbnRzIHx8IFtdKS5tYXAoYyA9PiBjLnBhdGgpLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYSB0YXJnZXQgb2JqZWN0IHR5cGUgZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXHJcbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgb2JqZWN0IHR5cGVzIG5hbWUgdG8gYmUgc2V0IGFzIHRhcmdldFxyXG4gICAqL1xyXG4gIHNlbGVjdE9iamVjdFR5cGUodHlwZTogUHJlcGFyZWRJdGVtVHlwZSkge1xyXG4gICAgdGhpcy5wcmVwYXJlZEl0ZW0udHlwZXNcclxuICAgICAgLmZvckVhY2goKHQpID0+IHQuc2VsZWN0ZWQgPSAodC5uYW1lID09PSB0eXBlLm5hbWUpKTtcclxuXHJcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVDaGlsZFR5cGUodHlwZS5uYW1lLCB0aGlzLnByZXBhcmVkSXRlbS5pZClcclxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZWRJdGVtID0+IHtcclxuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodXBkYXRlZFByZXBhcmVkSXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgdGVtcGxhdGUgdG8gdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbS5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBhZGRUZW1wbGF0ZSh0ZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGUpIHtcclxuXHJcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXHJcbiAgICAgIC5hZGRUZW1wbGF0ZSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgdGVtcGxhdGUuaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRQcmVwYXJlZEl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodXBkYXRlZFByZXBhcmVkSXRlbSk7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS50ZW1wbGF0ZS5lcnJvci50aXRsZScpLFxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUudGVtcGxhdGUuZXJyb3IubWVzc2FnZScpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYSB0ZW1wbGF0ZS4gV2lsbCBzaG93IHByZXZpZXcgZm9yIHRoZSBzZWxlY3RlZCB0ZW1wbGF0ZS5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgc2VsZWN0ZWRcclxuICAgKi9cclxuICBzZWxlY3RUZW1wbGF0ZSh0ZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlRmlsZSA9ICEodGVtcGxhdGUgJiYgdGVtcGxhdGUuY29udGVudCkgPyBudWxsIDoge1xyXG4gICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0VGVtcGxhdGVQcmV2aWV3VXJpKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZS5pZCksXHJcbiAgICAgIHVyaVBkZjogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRUZW1wbGF0ZVByZXZpZXdVcmkodGhpcy5zZWxlY3RlZFRlbXBsYXRlLmlkLCAnUERGJyksXHJcbiAgICAgIG1pbWV0eXBlOiB0ZW1wbGF0ZS5jb250ZW50Lm1pbWV0eXBlLFxyXG4gICAgICBtaW1lZ3JvdXA6IHRlbXBsYXRlLmNvbnRlbnQubWltZWdyb3VwLFxyXG4gICAgICBzaXplOiB0ZW1wbGF0ZS5jb250ZW50LnNpemVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aWV3VXJpKGluZGV4OiBudW1iZXIpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5wcmVwYXJlUGhhc2UuZGF0YSwgdGhpcy5nZXRQcmV2aWV3RGF0YShpbmRleCkpO1xyXG4gIH1cclxuXHJcbiAgLy8gc2tpcCBjb250ZW50IHNlbGVjdGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbVxyXG4gIC8vIGFuZCBjb250aW51ZSBzZXR0aW5nIGluZGV4ZGF0YVxyXG4gIG5vRmlsZSgpIHtcclxuICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgfVxyXG5cclxuICAvLyB0cmlnZ2VyIGZpbGUgdXBsb2FkXHJcbiAgdXBsb2FkKCkge1xyXG4gICAgLy8gYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0ZWQgYSBmaWxlIGZpbGVDaGFuZ2VMaXN0ZW5lcigpIHdpbGwgY29udGludWVcclxuICAgIHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBvbkNoYW5nZSBsaXN0ZW5lciBvbiBoaWRkZW4gZmlsZSBpbnB1dFxyXG4gIGZpbGVDaGFuZ2VMaXN0ZW5lcihldmVudCkge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50WzBdO1xyXG4gICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgLnVwbG9hZENvbnRlbnQodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGZpbGUpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAvLyB1cGxvYWQgc3VjY2VlZGVkIHNvIHdlIGNhbiBnbyBvbiB0byB0aGUgbmV4dCBwcmVwYXJlIHBoYXNlXHJcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSBuZXcgUHJlcGFyZWRJdGVtKHJlcyk7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodGhpcy5wcmVwYXJlZEl0ZW0pO1xyXG4gICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBlcnJvci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XHJcbiAgICAgICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKSxcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJylcclxuICAgICAgKSk7XHJcbiAgfVxyXG5cclxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dCkge1xyXG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2VzcygpIHtcclxuICAgIC8vIHRvZG86IHJlc2V0IHN0dWZmXHJcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zID0gbnVsbDtcclxuICAgIHRoaXMuZ2V0UHJlcGFyZVBoYXNlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmUgdGhlIHByZXBhcmUgcGhhc2UgdG8gYmUgaW5pdGlhbGl6ZWQgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnNcclxuICAgKiBvZiB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0UHJlcGFyZVBoYXNlKCkge1xyXG4gICAgaWYgKCF0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKSkge1xyXG4gICAgICAvLyBTdGVwICMxIHNlbGVjdCBhbiBvYmplY3QgdHlwZSBpZiBub3QgeWV0IHNldFxyXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLmhhc0NvbnRlbnQoKSkge1xyXG4gICAgICAvLyBTdGVwICMyIGFkZCBjb250ZW50IGlmIG5vdCB5ZXQgY29udGFpbmVkXHJcbiAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0NPTlRFTlQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU3RlcCAjMyBlZGl0IGluZGV4ZGF0YSBhbmQgc2F2ZVxyXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUZW1wbGF0ZShzZWxlY3RlZFR5cGVPYmplY3QpIHtcclxuICAgIGNvbnN0IHR5cGU6IE9iamVjdFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShzZWxlY3RlZFR5cGVPYmplY3QubmFtZSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxyXG4gICAgICAuZ2V0VGVtcGxhdGVzKHNlbGVjdGVkVHlwZU9iamVjdC5uYW1lKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0ZW1wbGF0ZXM6IFByZXBhcmVkSXRlbVRlbXBsYXRlW10pID0+IHtcclxuICAgICAgICBjb25zdCBmaWxlUmVxdWlyZWQgPSB0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS5jb250ZW50c3RhdGUgPT09ICdSRVFVSVJFRCc7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgIGZpbGU6IHR5cGUubWF4RmlsZXMgPiAwLFxyXG4gICAgICAgICAgd2l0aG91dEZpbGU6ICEodHlwZS5taW5GaWxlcyA+IDApICYmICFmaWxlUmVxdWlyZWQsXHJcbiAgICAgICAgICB0ZW1wbGF0ZXM6IHRlbXBsYXRlcyB8fCBbXVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IG9iamVjdCB0eXBlIGRvZXMgbm90IHN1cHBvcnQgZmlsZSB1cGxvYWQgb3IgdGVtcGxhdGUgY29udGVudHNcclxuICAgICAgICAvLyB3ZSBza2lwIGNvbnRlbnQgcGhhc2UgYW5kIG1vdmUgb24gdG8gaW5kZXhkYXRhIHBoYXNlXHJcbiAgICAgICAgaWYgKCFkYXRhLmZpbGUpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlcGFyZVBoYXNlID0ge1xyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX0NPTlRFTlQsXHJcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLnNldHVwVGl0bGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWdGaWx0ZXJPcHRpb25zID0gdGhpcy5jcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlcyk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtjb3VudDogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXMubGVuZ3RofSxcclxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMucHJlcGFyZVBoYXNlLmRhdGEudGVtcGxhdGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygndGl0bGUnKSksXHJcbiAgICAgICAgICBjb2x1bW5EZWZzOiB0aGlzLmNvbERlZnMsXHJcbiAgICAgICAgICByb3dIZWlnaHQ6IDgwXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlczogUHJlcGFyZWRJdGVtVGVtcGxhdGVbXSkge1xyXG4gICAgbGV0IHRhZ0ZpbHRlck9wdGlvbnMgPSBbXTtcclxuICAgIHRlbXBsYXRlcy5mb3JFYWNoKHRlbXBsYXRlID0+IHtcclxuICAgICAgdGVtcGxhdGUudGFncy5mb3JFYWNoKHRhZyA9PiB7XHJcbiAgICAgICAgdGFnRmlsdGVyT3B0aW9ucy5wdXNoKHtsYWJlbDogdGFnLCBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudGFncy5pbmNsdWRlcyh0YWcpLCB2YWx1ZTogdHJ1ZX0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIF8udW5pcUJ5KHRhZ0ZpbHRlck9wdGlvbnMsICdsYWJlbCcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgYSBzcGVjaWZpYyBwcmVwYXJlIHBoYXNlLlxyXG4gICAqIEBwYXJhbSBwaGFzZSAtIHBoYXNlIHRvIGluaXQgKFBIQVNFX1RZUEUsIFBIQVNFX0NPTlRFTlQsIFBIQVNFX0lOREVYREFUQSlcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRQcmVwYXJlUGhhc2UocGhhc2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5wcmVwYXJlUGhhc2UgPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QgPSB0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHBoYXNlKSB7XHJcbiAgICAgIC8vIGluaXQgcHJlcGFyZSBwaGFzZSBmb3Igc2VsZWN0aW5nIHRoZSB0YXJnZXQgb2JqZWN0IHR5cGVcclxuICAgICAgY2FzZSB0aGlzLlBIQVNFX1RZUEU6IHtcclxuXHJcbiAgICAgICAgdGhpcy5wcmVwYXJlUGhhc2UgPSB7XHJcbiAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX1RZUEUsXHJcbiAgICAgICAgICBkYXRhOiB0aGlzLmdldFByZXZpZXdEYXRhKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIHNldHRpbmcgdXAgY29udGVudFxyXG4gICAgICBjYXNlIHRoaXMuUEhBU0VfQ09OVEVOVDoge1xyXG5cclxuICAgICAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gbnVsbDtcclxuXHJcbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciBvciBub3QgdGhlIHByZXBhcmVkSXRlbSBhbHJlYWR5IGNvbnRhaW5zIGEgZmlsZSBvciB0ZW1wbGF0ZVxyXG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5oYXNDb250ZW50KCkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUudHlwZXNlbGVjdGVkYWxsb3dlZCkge1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgdHlwZSBpcyBub3QgYWxsb3dlZCwgd2UnbGwgZ28gYmFjayB0byB0aGUgdHlwZSBzZWxlY3Qgc3RhdGUgLi4uXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gLi4uIG90aGVyd2lzZSB3ZSBnbyBvbiBzZXR0aW5nIGluZGV4ZGF0YVxyXG4gICAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLmNvbnRlbnRzdGF0ZSA9PT0gJ05PQ09OVEVOVEFMTE9XRUQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKHRoaXMuc2VsZWN0ZWRUeXBlT2JqZWN0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy8gaW5pdCBwcmVwYXJlIHBoYXNlIGZvciBhZGRpbmcgaW5kZXhkYXRhXHJcbiAgICAgIGNhc2UgdGhpcy5QSEFTRV9JTkRFWERBVEE6IHtcclxuXHJcbiAgICAgICAgdGhpcy5jaG9vc2VUZW1wbGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQpIHtcclxuICAgICAgICAgIC8vIGlmIHRoZSBzZWxlY3RlZCB0eXBlIGlzIG5vdCBhbGxvd2VkLCB3ZSdsbCBnbyBiYWNrIHRvIHRoZSB0eXBlIHNlbGVjdCBzdGF0ZSAuLi5cclxuICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybUNvbnRlbnQoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnByZXBhcmVQaGFzZSA9IHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5QSEFTRV9JTkRFWERBVEEsXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0UHJldmlld0RhdGEoKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aWV3RGF0YShpbmRleD86IG51bWJlcik6IGFueSB7XHJcbiAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0gJiYgdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHMgJiYgdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHMubGVuZ3RoKSB7XHJcbiAgICAgIGluZGV4ID0gaW5kZXggfHwgMDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwcmV2aWV3SW5kZXg6IGluZGV4LFxyXG4gICAgICAgIHByZXZpZXdGaWxlOiB7XHJcbiAgICAgICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJldmlld1VyaSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgaW5kZXgpLFxyXG4gICAgICAgICAgdXJpUGRmOiB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFByZXZpZXdVcmkodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGluZGV4LCAnUERGJyksXHJcbiAgICAgICAgICBtaW1ldHlwZTogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLm1pbWV0eXBlLFxyXG4gICAgICAgICAgbWltZWdyb3VwOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ubWltZWdyb3VwLFxyXG4gICAgICAgICAgcGF0aDogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLnBhdGgsXHJcbiAgICAgICAgICBzaXplOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0uc2l6ZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge3ByZXZpZXdGaWxlOiBudWxsfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHVwIHRpdGxlIGZvciB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtIGJhc2VkIG9uIHRoZVxyXG4gICAqIGN1cnJlbnQgcHJlcGFyZSBwaGFzZS4gU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBwcmVwYXJlIHBoYXNlIGlzIGlkZW50aWZpZWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cFRpdGxlKCkge1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlLmdldChbXHJcbiAgICAgICdlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnN5c3Jvb3QnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5wcmVmaXgnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUudGl0bGUnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUuc3VidGl0bGUnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnLFxyXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSdcclxuICAgIF0pLnN1YnNjcmliZSh0ID0+IHtcclxuXHJcbiAgICAgIGxldCBoZWFkZXIgPSB7XHJcbiAgICAgICAgdGl0bGU6IG51bGwsXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgIGxhYmVsOiBudWxsLFxyXG4gICAgICAgICAgbGluazogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3VidGl0bGU6IG51bGxcclxuICAgICAgfTtcclxuICAgICAgc3dpdGNoICh0aGlzLnByZXBhcmVQaGFzZS5uYW1lKSB7XHJcbiAgICAgICAgY2FzZSB0aGlzLlBIQVNFX1RZUEU6IHtcclxuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHRbJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnRpdGxlJ107XHJcbiAgICAgICAgICBoZWFkZXIuc3VidGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMudHlwZS5zdWJ0aXRsZSddO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9DT05URU5UOiB7XHJcbiAgICAgICAgICBjb25zdCB0eXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XHJcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0eXBlT2JqZWN0ID8gdHlwZU9iamVjdC5sYWJlbCA6ICcnO1xyXG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIHRoaXMuUEhBU0VfSU5ERVhEQVRBOiB7XHJcbiAgICAgICAgICBjb25zdCB0eXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XHJcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0eXBlT2JqZWN0ID8gdHlwZU9iamVjdC5sYWJlbCA6ICcnO1xyXG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSddO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBzZXQgdXAgbG9jYXRpb24gaW5mb1xyXG4gICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGUgPT09ICdzeXNyb290Jykge1xyXG4gICAgICAgIGhlYWRlci5sb2NhdGlvbiA9IHtcclxuICAgICAgICAgIGxhYmVsOiB0Wydlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnN5c3Jvb3QnXSxcclxuICAgICAgICAgIGxpbms6IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudHlwZSk7XHJcbiAgICAgICAgaGVhZGVyLmxvY2F0aW9uID0ge1xyXG4gICAgICAgICAgbGFiZWw6IGAgJHtwYXJlbnRUeXBlLmxhYmVsfTogJHt0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudGl0bGV9YCxcclxuICAgICAgICAgIGxpbms6IGAvb2JqZWN0LyR7dGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkfWBcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93VGVtcGxhdGVTZWxlY3RvcihzaG93OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gc2hvdztcclxuICAgIHRoaXMuc2VsZWN0VGVtcGxhdGUodGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXNbMF0pO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQoKSB7XHJcbiAgICBpZiAodGhpcy5wcmVwYXJlUGhhc2UpIHtcclxuICAgICAgY29uc3QgZmlsZSA9IHRoaXMucHJlcGFyZVBoYXNlLm5hbWUgPT09ICdjb250ZW50JyA/IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgOiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlO1xyXG4gICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZChmaWxlLnVyaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc1RlbXBsYXRlQ2FwYWJpbGl0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdGVzLmhhc0NhcGFiaWxpdHkoJ3RlbXBsYXRlJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhY2tCeUlkRm4oaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrQnlJbmRleEZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uXHJcbiAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbikuZm9jdXMkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFByZXBhcmVkSXRlbSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnR5cGVzKSB7XHJcbiAgICAgICAgICAgIHJlcy50eXBlcyA9IHJlcy50eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSByZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -4,6 +4,7 @@ export class ProcessFormComponent {
4
4
  this.onSaveForm = new EventEmitter();
5
5
  this.onResetForm = new EventEmitter();
6
6
  this.onCancel = new EventEmitter();
7
+ this.statusChanged = new EventEmitter();
7
8
  }
8
9
  saveForm() {
9
10
  setTimeout(() => {
@@ -19,6 +20,7 @@ export class ProcessFormComponent {
19
20
  onIndexDataChanged(event) {
20
21
  this.form = event;
21
22
  this.formData = event.data;
23
+ this.statusChanged.emit(event);
22
24
  }
23
25
  }
24
26
  ProcessFormComponent.decorators = [
@@ -33,6 +35,7 @@ ProcessFormComponent.propDecorators = {
33
35
  formOptions: [{ type: Input }],
34
36
  onSaveForm: [{ type: Output }],
35
37
  onResetForm: [{ type: Output }],
36
- onCancel: [{ type: Output }]
38
+ onCancel: [{ type: Output }],
39
+ statusChanged: [{ type: Output }]
37
40
  };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3Byb2Nlc3MtZm9ybS9wcm9jZXNzLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBU3hGLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFZWSxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFvQmxFLENBQUM7SUFsQkMsUUFBUTtRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUM3QixDQUFDOzs7WUFoQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDYxQkFBNEM7O2FBRTdDOzs7c0JBR0UsU0FBUyxTQUFDLFNBQVM7MEJBSW5CLEtBQUs7eUJBQ0wsTUFBTTswQkFDTixNQUFNO3VCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlby1wcm9jZXNzLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtZm9ybS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRm9ybUNvbXBvbmVudCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2JwbUZvcm0nKSBicG1Gb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xyXG4gIGZvcm1EYXRhOiBhbnk7XHJcbiAgZm9ybTogYW55O1xyXG5cclxuICBASW5wdXQoKSBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIG9uU2F2ZUZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUmVzZXRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgc2F2ZUZvcm0oKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZm9ybSAmJiAhdGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1EYXRhID0gdGhpcy5icG1Gb3JtLmdldEZvcm1EYXRhKCk7XHJcbiAgICAgICAgdGhpcy5vblNhdmVGb3JtLmVtaXQodGhpcy5mb3JtRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkluZGV4RGF0YUNoYW5nZWQoZXZlbnQpIHtcclxuICAgIHRoaXMuZm9ybSA9IGV2ZW50O1xyXG4gICAgdGhpcy5mb3JtRGF0YSA9IGV2ZW50LmRhdGE7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3Byb2Nlc3MtZm9ybS9wcm9jZXNzLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBVXhGLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFZWSxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztJQXFCdkUsQ0FBQztJQW5CQyxRQUFRO1FBQ04sVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQWxDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsNjFCQUE0Qzs7YUFFN0M7OztzQkFHRSxTQUFTLFNBQUMsU0FBUzswQkFJbkIsS0FBSzt5QkFDTCxNQUFNOzBCQUNOLE1BQU07dUJBQ04sTUFBTTs0QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLXByb2Nlc3MtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2Nlc3NGb3JtQ29tcG9uZW50IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYnBtRm9ybScpIGJwbUZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XHJcbiAgZm9ybURhdGE6IGFueTtcclxuICBmb3JtOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICBAT3V0cHV0KCkgb25TYXZlRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25SZXNldEZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50PigpO1xyXG5cclxuICBzYXZlRm9ybSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5mb3JtICYmICF0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybURhdGEgPSB0aGlzLmJwbUZvcm0uZ2V0Rm9ybURhdGEoKTtcclxuICAgICAgICB0aGlzLm9uU2F2ZUZvcm0uZW1pdCh0aGlzLmZvcm1EYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMub25DYW5jZWwuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uSW5kZXhEYXRhQ2hhbmdlZChldmVudCkge1xyXG4gICAgdGhpcy5mb3JtID0gZXZlbnQ7XHJcbiAgICB0aGlzLmZvcm1EYXRhID0gZXZlbnQuZGF0YTtcclxuICAgIHRoaXMuc3RhdHVzQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -25,6 +25,7 @@ export class EoDialogComponent extends UnsubscribeOnDestroy {
25
25
  this.align = 'center';
26
26
  this.isFormTable = false;
27
27
  this.showPreview = false;
28
+ this.hasPreviewFile = false;
28
29
  this.onTogglePreview = new EventEmitter();
29
30
  this.visibleChange = new EventEmitter();
30
31
  this.hide = new EventEmitter();
@@ -74,7 +75,7 @@ export class EoDialogComponent extends UnsubscribeOnDestroy {
74
75
  // this.overlayRef.addPanelClass("example-overlay");
75
76
  this.overlayRef.attach(portal);
76
77
  this.overlayRef.backdropClick().subscribe((_) => {
77
- this.visible = false;
78
+ this.closeDialog();
78
79
  });
79
80
  }
80
81
  getPositionStrategy() {
@@ -141,7 +142,7 @@ export class EoDialogComponent extends UnsubscribeOnDestroy {
141
142
  EoDialogComponent.decorators = [
142
143
  { type: Component, args: [{
143
144
  selector: 'eo-dialog',
144
- template: "<ng-template #dialogContent>\r\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\r\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\r\n <h5 class=\"headline\">{{title}}</h5>\r\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\" class=\"button white eo-dialog-close\"></eo-icon>\r\n <ng-container *ngIf=\"isFormTable\">\r\n <eo-icon *ngIf=\"showPreview\" [iconSrc]=\"'assets/_default/svg/ic_preview_close.svg'\"\r\n [iconTitle]=\"'eo.form.table.dialog.preview.hide' | translate\" (click)=\"togglePreview()\" class=\"button white eo-dialog-preview-toggle\"></eo-icon>\r\n <eo-icon *ngIf=\"!showPreview\" [iconSrc]=\"'assets/_default/svg/ic_preview_show.svg'\"\r\n [iconTitle]=\"'eo.form.table.dialog.preview.show' | translate\" (click)=\"togglePreview()\" class=\"button white eo-dialog-preview-toggle\"></eo-icon>\r\n </ng-container>\r\n </header>\r\n <div class=\"eo-dialog-content\" [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
145
+ template: "<ng-template #dialogContent>\r\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\r\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\r\n <h5 class=\"headline\">{{title}}</h5>\r\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\" class=\"button white eo-dialog-close\"></eo-icon>\r\n <ng-container *ngIf=\"isFormTable && hasPreviewFile\">\r\n <eo-icon *ngIf=\"showPreview\" [iconSrc]=\"'assets/_default/svg/ic_preview_close.svg'\"\r\n [iconTitle]=\"'eo.form.table.dialog.preview.hide' | translate\" (click)=\"togglePreview()\" class=\"button white eo-dialog-preview-toggle\"></eo-icon>\r\n <eo-icon *ngIf=\"!showPreview\" [iconSrc]=\"'assets/_default/svg/ic_preview_show.svg'\"\r\n [iconTitle]=\"'eo.form.table.dialog.preview.show' | translate\" (click)=\"togglePreview()\" class=\"button white eo-dialog-preview-toggle\"></eo-icon>\r\n </ng-container>\r\n </header>\r\n <div class=\"eo-dialog-content\" [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
145
146
  encapsulation: ViewEncapsulation.None,
146
147
  styles: [".eo-dialog{-webkit-animation:none;animation:none;background-color:var(--panel-background);display:flex;flex:1;flex-direction:column;max-height:100%;max-width:100%;min-height:0;min-width:0}.eo-dialog-close{position:absolute;right:5px;top:5px;z-index:2}.eo-dialog-preview-toggle{position:absolute;right:5px;top:50px;z-index:2}.eo-dialog-header{background-color:var(--color-accent);color:var(--color-white);flex:0 0 auto;font-size:var(--font-headline);font-weight:var(--font-weight-light);padding:var(--app-pane-padding) calc(var(--app-pane-padding)*2.5) calc(var(--app-pane-padding)*2) var(--app-pane-padding)}.eo-dialog-header .headline{font-size:24px;font-weight:400;margin:0 25px 0 0}.eo-dialog-header .subtitle{font-size:15px;font-weight:400;margin:0}.eo-dialog-content{display:flex;flex:1;flex-direction:column;height:100%;max-height:520px;min-height:0;min-width:0;overflow:auto;position:relative}.eo-dialog-content>eo-tree{margin:var(--app-pane-padding)}.eo-dialog-content .empty{align-items:center;color:var(--text-color-caption);display:flex;flex:1;flex-direction:column;justify-content:center;min-height:0;min-width:0;padding:var(--app-pane-padding)}.eo-dialog-content .action-buttons{justify-content:flex-end;padding-top:32px}.eo-dialog-content button:not(:last-child){margin-right:5px}.object-form-table-dialog{background-color:var(--panel-background-grey);height:95vh;width:100%}.object-form-table-dialog .body{height:80vh;width:100%}.object-form-table-dialog .edit-body{display:flex;height:100%}.object-form-table-dialog .table-body{background-color:var(--panel-background-grey);display:flex;height:100%;width:100%}.object-form-table-dialog eo-split{padding:var(--app-pane-padding);width:auto!important}.object-form-table-dialog eo-split-area{box-shadow:0 2px 5px 0 rgba(0,0,0,.2)}.object-form-table-dialog eo-row-edit{background-color:var(--color-white);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.object-form-table-dialog eo-row-edit .row-edit{display:flex;flex-direction:column;height:100%}.object-form-table-dialog eo-row-edit .row-edit .edit-header{display:flex;justify-content:space-between}.object-form-table-dialog eo-row-edit .row-edit .edit-header .new-indicator{color:var(--text-color-caption);font-size:var(--font-title);margin:8px 16px 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon{color:var(--text-color-caption);margin:8px 8px 0}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon:hover{background:rgba(var(--color-black-rgb),.1)}.object-form-table-dialog eo-row-edit .row-edit .form{height:100%;overflow:auto}.object-form-table-dialog eo-row-edit .row-edit .actions{align-items:center;border-top:1px solid var(--panel-header-border-bottom-color);display:flex;flex:0;flex-direction:row;justify-content:flex-end;min-height:0;min-height:5em;min-width:0;padding-right:var(--app-pane-padding)}.object-form-table-dialog eo-row-edit .row-edit .actions button{height:3em;margin:0 calc(var(--app-pane-padding)/8);padding:0 calc(var(--app-pane-padding)/2)}.object-form-table-dialog eo-row-edit .row-edit .actions eo-checkbox{margin:0 calc(var(--app-pane-padding)/2)}.object-form-table-dialog eo-row-edit .row-edit .actions .add-label{color:var(--text-color-caption);font-size:var(--font-body);margin-right:var(--app-pane-padding)}.object-form-table-dialog .object-form-table{background-color:#fff;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;height:100%;width:100%}.object-form-table-dialog .object-form-table .grid-body{height:100%;position:relative;width:100%}.object-form-table-dialog .object-form-table .grid-body .ag-theme-balham .ag-header{background-color:unset!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular{background-color:transparent;height:100%;width:100%}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .copy-cell,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .new-row{-webkit-animation-duration:4s;-webkit-animation-name:new-row;animation-duration:4s;animation-name:new-row}@-webkit-keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}@keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell{align-items:center;display:flex;font-size:var(--font-caption);line-height:var(--oft-row-height);padding:0 calc(var(--app-pane-padding)/4)}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.ag-cell-focus{background-color:var(--list-item-hover-background);border-color:transparent!important;outline:0!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell svg{pointer-events:none}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-boolean,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.res-ico{justify-content:center}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-number{justify-content:flex-end}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon{cursor:pointer;display:flex}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon svg{fill:var(--text-color-caption)}.object-form-table-dialog .label{align-items:center;border-bottom:0;display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/4)}.object-form-table-dialog .label span{display:block;flex:1 1 auto}.object-form-table-dialog .label eo-icon.stf{color:var(--text-color-caption);cursor:pointer;height:20px;margin:calc(var(--app-pane-padding)/4);width:20px}.object-form-table-dialog .label eo-icon.stf.add-row{background-color:var(--color-accent);border-radius:2px;color:#fff;height:24px;width:24px}.object-form-table-dialog .label button.add{border-radius:2px;padding:calc(var(--app-pane-padding)/2)}.object-form-table-dialog .label button.export{border:1px solid #000;border-radius:2px;color:#000;font-size:var(--font-hint);margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/8) calc(var(--app-pane-padding)/4)}.object-form-table-dialog .eo-dialog-content{height:100%;max-height:none;overflow:hidden}.object-form-table-dialog .table-area{overflow:unset!important}.cdk-overlay-pane{position:absolute!important}"]
147
148
  },] }
@@ -166,6 +167,7 @@ EoDialogComponent.propDecorators = {
166
167
  align: [{ type: Input }],
167
168
  isFormTable: [{ type: Input }],
168
169
  showPreview: [{ type: Input }],
170
+ hasPreviewFile: [{ type: Input }],
169
171
  onTogglePreview: [{ type: Output }],
170
172
  visibleChange: [{ type: Output }],
171
173
  hide: [{ type: Output }],
@@ -174,4 +176,4 @@ EoDialogComponent.propDecorators = {
174
176
  onKeydownHandler: [{ type: HostListener, args: ['document:keydown.escape', ['$event'],] }],
175
177
  onMousedown: [{ type: HostListener, args: ['document:mousedown', ['$event.target'],] }]
176
178
  };
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBR2pCLGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFRaEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG9CQUFvQjtJQTZEekQsWUFDVSxZQUEwQixFQUMxQixjQUFxQyxFQUNyQyxRQUFtQixFQUNuQixPQUFnQixFQUNoQixnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFOQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6RHBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsT0FB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Ozs7WUE5S0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQiwwd0NBQXlDO2dCQUV6QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQVZtQixZQUFZO1lBRXhCLHFCQUFxQjtZQVQzQixTQUFTO1lBVEgsT0FBTztZQWNiLGdCQUFnQjs7OzJCQWdCZixTQUFTLFNBQUMsZUFBZTs0QkFDekIsU0FBUyxTQUFDLGVBQWU7b0JBVXpCLEtBQUs7dUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3lCQUdMLEtBQUs7dUJBRUwsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7OEJBRUwsTUFBTTs0QkFDTixNQUFNO21CQUNOLE1BQU07bUJBQ04sTUFBTTtzQkFFTixLQUFLOytCQVlMLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzswQkFRbEQsWUFBWSxTQUFDLG9CQUFvQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPdmVybGF5LCBPdmVybGF5UmVmfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7Q2RrUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnQsIEV2ZW50U2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7ZmlsdGVyLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlJztcclxuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vdXRpbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VvLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZW8tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW9EaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveVxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQpIHBvcnRhbE91dGxldDogQ2RrUG9ydGFsT3V0bGV0O1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0NvbnRlbnQnKSBkaWFsb2dDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSByZWFkeTogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfdmlzaWJsZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xhc3RGb2N1c2VkO1xyXG4gIHByaXZhdGUgYWN0aXZlOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaWQgPSBVdGlscy51dWlkKCk7XHJcbiAgcHJpdmF0ZSBwYXJlbnRJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcclxuICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XHJcblxyXG4gIC8vIGFycmF5IG9mIHBlbmRpbmdUYXNrIElEcyB0byBiZSBjaGVja2VkIGJlZm9yZSB0aGUgZGlhbG9nIGNsb3Nlc1xyXG4gIEBJbnB1dCgpIGRpcnR5Q2hlY2s6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIG1pbldpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAyMDA7XHJcbiAgQElucHV0KCkgbWluSGVpZ2h0ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGZvY3VzT25TaG93ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGlnbjogJ2NlbnRlcicgfCAnc3RhcnQnID0gJ2NlbnRlcic7XHJcbiAgQElucHV0KCkgaXNGb3JtVGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93UHJldmlldyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb25Ub2dnbGVQcmV2aWV3OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHZpc2libGUodmFsKSB7XHJcbiAgICB0aGlzLl92aXNpYmxlID0gISF2YWw7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl92aXNpYmxlKTtcclxuICAgIHRoaXMuX3Zpc2libGUgPyB0aGlzLnNob3cuZW1pdCh2YWwpIDogdGhpcy5oaWRlLmVtaXQodmFsKTtcclxuICAgIHRoaXMudG9nZ2xlQWN0aXZlKHRoaXMuX3Zpc2libGUpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIGNsb3NlIGFjdGl2ZSBkaWFsb2cgb24gRXNjYXBlIGV2ZW50XHJcbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgb25Nb3VzZWRvd24odGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgIC8vIGNsb3NlIGFjdGl2ZSBkaWFsb2cgb24gYmFja2dyb3VuZC9tYXNrIGNsaWNrXHJcbiAgICBpZiAodGhpcy5hY3RpdmUgJiYgdGFyZ2V0RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3VpLWRpYWxvZy1tYXNrJykpIHtcclxuICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fbGFzdEZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcclxuICAgICAgLm9uKEVuYWlvRXZlbnQuRU9fRElBTE9HX1NUQUNLX0NIQU5HRUQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpLFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2dCA9PlxyXG4gICAgICAgICAgICAodGhpcy5hY3RpdmUgfHwgZXZ0LmRhdGEuaWQgPT09IHRoaXMucGFyZW50SWQpICYmXHJcbiAgICAgICAgICAgIGV2dC5kYXRhLmlkICE9PSB0aGlzLmlkXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnBhcmVudElkID0gZXZlbnQuZGF0YS5hY3RpdmUgPyBldmVudC5kYXRhLmlkIDogJyc7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuKCkge1xyXG4gICAgLy8gV2UgY3JlYXRlIHRoZSBvdmVybGF5XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpLFxyXG4gICAgICBtaW5IZWlnaHQ6IHRoaXMubWluSGVpZ2h0LFxyXG4gICAgICBtaW5XaWR0aDogdGhpcy5taW5XaWR0aFxyXG4gICAgfSk7XHJcbiAgICAvL1RoZW4gd2UgY3JlYXRlIGEgcG9ydGFsIHRvIHJlbmRlciBhIGNvbXBvbmVudFxyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZGlhbG9nQ29udGVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIC8vIFdlIGFkZCBhIGN1c3RvbSBDU1MgY2xhc3MgdG8gb3VyIG92ZXJsYXlcclxuICAgIC8vIHRoaXMub3ZlcmxheVJlZi5hZGRQYW5lbENsYXNzKFwiZXhhbXBsZS1vdmVybGF5XCIpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHtcclxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koKSB7XHJcbiAgICBsZXQgcG9zaXRpb25TdHJhdGVneTtcclxuICAgIGlmICh0aGlzLmFsaWduID09PSAnY2VudGVyJykge1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgICAuZ2xvYmFsKClcclxuICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcclxuICAgICAgICAuY2VudGVyVmVydGljYWxseSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFsaWduID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcclxuICAgICAgICAucG9zaXRpb24oKVxyXG4gICAgICAgIC5nbG9iYWwoKVxyXG4gICAgICAgIC5sZWZ0KClcclxuICAgICAgICAudG9wKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFjdGl2ZShhY3RpdmU6IGJvb2xlYW4sIHRyaWdnZXIgPSB0cnVlKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9ICEhYWN0aXZlO1xyXG5cclxuICAgIGlmIChhY3RpdmUgJiYgdGhpcy5yZWFkeSAmJiAhdGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiAhYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHJpZ2dlcikge1xyXG4gICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRU9fRElBTE9HX1NUQUNLX0NIQU5HRUQsIHtcclxuICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICBpZiAodGhpcy5kaXJ0eUNoZWNrKSB7XHJcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVja0ZvclBlbmRpbmdUYXNrcyh0aGlzLmRpcnR5Q2hlY2spKSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUHJldmlldygpIHtcclxuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSAhdGhpcy5zaG93UHJldmlldztcclxuICAgIHRoaXMub25Ub2dnbGVQcmV2aWV3LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQWN0aXZlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMub3BlbigpO1xyXG5cclxuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX3Zpc2libGUpIHsgdGhpcy5vcGVuKCk7IH1cclxuICB9XHJcbn1cclxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBR2pCLGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFRaEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG9CQUFvQjtJQThEekQsWUFDVSxZQUEwQixFQUMxQixjQUFxQyxFQUNyQyxRQUFtQixFQUNuQixPQUFnQixFQUNoQixnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFOQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExRHBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsT0FB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RSxDQUFDO1NBQUU7SUFDckMsQ0FBQzs7O1lBL0tGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsNHhDQUF5QztnQkFFekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFWbUIsWUFBWTtZQUV4QixxQkFBcUI7WUFUM0IsU0FBUztZQVRILE9BQU87WUFjYixnQkFBZ0I7OzsyQkFnQmYsU0FBUyxTQUFDLGVBQWU7NEJBQ3pCLFNBQVMsU0FBQyxlQUFlO29CQVV6QixLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSzt5QkFHTCxLQUFLO3VCQUVMLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLO29CQUNMLEtBQUs7MEJBQ0wsS0FBSzswQkFDTCxLQUFLOzZCQUNMLEtBQUs7OEJBRUwsTUFBTTs0QkFDTixNQUFNO21CQUNOLE1BQU07bUJBQ04sTUFBTTtzQkFFTixLQUFLOytCQVlMLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzswQkFRbEQsWUFBWSxTQUFDLG9CQUFvQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPdmVybGF5LCBPdmVybGF5UmVmfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7Q2RrUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnQsIEV2ZW50U2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7ZmlsdGVyLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlJztcclxuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vdXRpbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VvLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZW8tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW9EaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveVxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQpIHBvcnRhbE91dGxldDogQ2RrUG9ydGFsT3V0bGV0O1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0NvbnRlbnQnKSBkaWFsb2dDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSByZWFkeTogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfdmlzaWJsZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xhc3RGb2N1c2VkO1xyXG4gIHByaXZhdGUgYWN0aXZlOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaWQgPSBVdGlscy51dWlkKCk7XHJcbiAgcHJpdmF0ZSBwYXJlbnRJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcclxuICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XHJcblxyXG4gIC8vIGFycmF5IG9mIHBlbmRpbmdUYXNrIElEcyB0byBiZSBjaGVja2VkIGJlZm9yZSB0aGUgZGlhbG9nIGNsb3Nlc1xyXG4gIEBJbnB1dCgpIGRpcnR5Q2hlY2s6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIG1pbldpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAyMDA7XHJcbiAgQElucHV0KCkgbWluSGVpZ2h0ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGZvY3VzT25TaG93ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGlnbjogJ2NlbnRlcicgfCAnc3RhcnQnID0gJ2NlbnRlcic7XHJcbiAgQElucHV0KCkgaXNGb3JtVGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93UHJldmlldyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhhc1ByZXZpZXdGaWxlID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvblRvZ2dsZVByZXZpZXc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaGlkZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmlzaWJsZSh2YWwpIHtcclxuICAgIHRoaXMuX3Zpc2libGUgPSAhIXZhbDtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMuX3Zpc2libGUpO1xyXG4gICAgdGhpcy5fdmlzaWJsZSA/IHRoaXMuc2hvdy5lbWl0KHZhbCkgOiB0aGlzLmhpZGUuZW1pdCh2YWwpO1xyXG4gICAgdGhpcy50b2dnbGVBY3RpdmUodGhpcy5fdmlzaWJsZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgLy8gY2xvc2UgYWN0aXZlIGRpYWxvZyBvbiBFc2NhcGUgZXZlbnRcclxuICAgIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudC50YXJnZXQnXSlcclxuICBvbk1vdXNlZG93bih0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgLy8gY2xvc2UgYWN0aXZlIGRpYWxvZyBvbiBiYWNrZ3JvdW5kL21hc2sgY2xpY2tcclxuICAgIGlmICh0aGlzLmFjdGl2ZSAmJiB0YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndWktZGlhbG9nLW1hc2snKSkge1xyXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl9sYXN0Rm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZVxyXG4gICAgICAub24oRW5haW9FdmVudC5FT19ESUFMT0dfU1RBQ0tfQ0hBTkdFRClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCksXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgZXZ0ID0+XHJcbiAgICAgICAgICAgICh0aGlzLmFjdGl2ZSB8fCBldnQuZGF0YS5pZCA9PT0gdGhpcy5wYXJlbnRJZCkgJiZcclxuICAgICAgICAgICAgZXZ0LmRhdGEuaWQgIT09IHRoaXMuaWRcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucGFyZW50SWQgPSBldmVudC5kYXRhLmFjdGl2ZSA/IGV2ZW50LmRhdGEuaWQgOiAnJztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW4oKSB7XHJcbiAgICAvLyBXZSBjcmVhdGUgdGhlIG92ZXJsYXlcclxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KCksXHJcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXHJcbiAgICAgIG1pbldpZHRoOiB0aGlzLm1pbldpZHRoXHJcbiAgICB9KTtcclxuICAgIC8vVGhlbiB3ZSBjcmVhdGUgYSBwb3J0YWwgdG8gcmVuZGVyIGEgY29tcG9uZW50XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5kaWFsb2dDb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgLy8gV2UgYWRkIGEgY3VzdG9tIENTUyBjbGFzcyB0byBvdXIgb3ZlcmxheVxyXG4gICAgLy8gdGhpcy5vdmVybGF5UmVmLmFkZFBhbmVsQ2xhc3MoXCJleGFtcGxlLW92ZXJsYXlcIik7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koKSB7XHJcbiAgICBsZXQgcG9zaXRpb25TdHJhdGVneTtcclxuICAgIGlmICh0aGlzLmFsaWduID09PSAnY2VudGVyJykge1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgICAuZ2xvYmFsKClcclxuICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcclxuICAgICAgICAuY2VudGVyVmVydGljYWxseSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFsaWduID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcclxuICAgICAgICAucG9zaXRpb24oKVxyXG4gICAgICAgIC5nbG9iYWwoKVxyXG4gICAgICAgIC5sZWZ0KClcclxuICAgICAgICAudG9wKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFjdGl2ZShhY3RpdmU6IGJvb2xlYW4sIHRyaWdnZXIgPSB0cnVlKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9ICEhYWN0aXZlO1xyXG5cclxuICAgIGlmIChhY3RpdmUgJiYgdGhpcy5yZWFkeSAmJiAhdGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiAhYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHJpZ2dlcikge1xyXG4gICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRU9fRElBTE9HX1NUQUNLX0NIQU5HRUQsIHtcclxuICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICBpZiAodGhpcy5kaXJ0eUNoZWNrKSB7XHJcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVja0ZvclBlbmRpbmdUYXNrcyh0aGlzLmRpcnR5Q2hlY2spKSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUHJldmlldygpIHtcclxuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSAhdGhpcy5zaG93UHJldmlldztcclxuICAgIHRoaXMub25Ub2dnbGVQcmV2aWV3LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQWN0aXZlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMub3BlbigpO1xyXG5cclxuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX3Zpc2libGUpIHsgdGhpcy5vcGVuKCk7IH1cclxuICB9XHJcbn1cclxuIl19
@@ -26,7 +26,8 @@ export class OutsideClickDirective extends UnsubscribeOnDestroy {
26
26
  }
27
27
  }
28
28
  onClick(event, targetElement) {
29
- if (this.active && !this._elementRef.nativeElement.contains(targetElement)) {
29
+ const overlayContainer = document.querySelector('.cdk-overlay-container');
30
+ if (this.active && !this._elementRef.nativeElement.contains(targetElement) && overlayContainer ? !overlayContainer.contains(targetElement) : false) {
30
31
  this.onOutsideEvent(event);
31
32
  }
32
33
  }
@@ -48,4 +49,4 @@ OutsideClickDirective.propDecorators = {
48
49
  keyboardInput: [{ type: HostListener, args: ['document:keydown', ['$event', '$event.target'],] }],
49
50
  onClick: [{ type: HostListener, args: ['document:mousedown', ['$event', '$event.target'],] }]
50
51
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0c2lkZS1jbGljay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay91aS9vdXRzaWRlLWNsaWNrL291dHNpZGUtY2xpY2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUVsRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQU83RCxZQUFvQixXQUF1QixFQUFVLFlBQTBCO1FBQzdFLEtBQUssRUFBRSxDQUFDO1FBRFUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUwvRSxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR1AsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSzlDLElBQUksQ0FBQyxZQUFZO2FBQ2QsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FDNUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHTSxhQUFhLENBQUMsS0FBb0IsRUFBRSxhQUEwQjtRQUNuRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFHTSxPQUFPLENBQUMsS0FBaUIsRUFBRSxhQUEwQjtRQUMxRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBWTtRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7WUFyQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7YUFDN0I7OztZQVprQixVQUFVO1lBQ1QsWUFBWTs7OzZCQWdCN0IsTUFBTTs0QkFjTixZQUFZLFNBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO3NCQU81RCxZQUFZLFNBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtFbmFpb0V2ZW50LCBFdmVudFNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGRpcmVjdGl2ZSBhZGRzIGFuIG91dHNpZGUgY2xpY2sgbGlzdGVuZXIgdG8gZWFjaCBlbGVtZW50IGl0IGlzIGFwcGxpZWQgdG8uXHJcbiAqIFRoZSBkaXJlY3RpdmUgd2lsbCBhbHNvIGV4ZWN1dGUgdGhlIHByb3ZpZGVkIGhhbmRsZXIgZnVuY3Rpb24sIHdoZW4gdGhlIHVzZXIgaGl0cyBFU0MuXHJcbiAqICAgPC4uLiAoZW9PdXRTaWRlQ2xpY2spPVwiZG9Tb21ldGhpbmdPbk91dHNpZGVDbGljaygkZXZlbnQpXCI+PC8uLi4+XHJcbiAqL1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZW9PdXRzaWRlQ2xpY2tdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3V0c2lkZUNsaWNrRGlyZWN0aXZlIGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kge1xyXG5cclxuICBhY3RpdmUgPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW9PdXRzaWRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLmV2ZW50U2VydmljZVxyXG4gICAgICAub24oRW5haW9FdmVudC5FT19ESUFMT0dfU1RBQ0tfQ0hBTkdFRCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9ICFldmVudC5kYXRhLmFjdGl2ZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnLCAnJGV2ZW50LnRhcmdldCddKVxyXG4gIHB1YmxpYyBrZXlib2FyZElucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgdGhpcy5vbk91dHNpZGVFdmVudChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCcsICckZXZlbnQudGFyZ2V0J10pXHJcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmUgJiYgIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KSkge1xyXG4gICAgICB0aGlzLm9uT3V0c2lkZUV2ZW50KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25PdXRzaWRlRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmVvT3V0c2lkZUNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0c2lkZS1jbGljay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay91aS9vdXRzaWRlLWNsaWNrL291dHNpZGUtY2xpY2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUVsRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQU83RCxZQUFvQixXQUF1QixFQUFVLFlBQTBCO1FBQzdFLEtBQUssRUFBRSxDQUFDO1FBRFUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUwvRSxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR1AsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSzlDLElBQUksQ0FBQyxZQUFZO2FBQ2QsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FDNUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHTSxhQUFhLENBQUMsS0FBb0IsRUFBRSxhQUEwQjtRQUNuRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFHTSxPQUFPLENBQUMsS0FBaUIsRUFBRSxhQUEwQjtRQUMxRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDbEosSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBWTtRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7WUF0Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7YUFDN0I7OztZQVprQixVQUFVO1lBQ1QsWUFBWTs7OzZCQWdCN0IsTUFBTTs0QkFjTixZQUFZLFNBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO3NCQU81RCxZQUFZLFNBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtFbmFpb0V2ZW50LCBFdmVudFNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGRpcmVjdGl2ZSBhZGRzIGFuIG91dHNpZGUgY2xpY2sgbGlzdGVuZXIgdG8gZWFjaCBlbGVtZW50IGl0IGlzIGFwcGxpZWQgdG8uXHJcbiAqIFRoZSBkaXJlY3RpdmUgd2lsbCBhbHNvIGV4ZWN1dGUgdGhlIHByb3ZpZGVkIGhhbmRsZXIgZnVuY3Rpb24sIHdoZW4gdGhlIHVzZXIgaGl0cyBFU0MuXHJcbiAqICAgPC4uLiAoZW9PdXRTaWRlQ2xpY2spPVwiZG9Tb21ldGhpbmdPbk91dHNpZGVDbGljaygkZXZlbnQpXCI+PC8uLi4+XHJcbiAqL1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZW9PdXRzaWRlQ2xpY2tdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3V0c2lkZUNsaWNrRGlyZWN0aXZlIGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kge1xyXG5cclxuICBhY3RpdmUgPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW9PdXRzaWRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLmV2ZW50U2VydmljZVxyXG4gICAgICAub24oRW5haW9FdmVudC5FT19ESUFMT0dfU1RBQ0tfQ0hBTkdFRCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9ICFldmVudC5kYXRhLmFjdGl2ZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnLCAnJGV2ZW50LnRhcmdldCddKVxyXG4gIHB1YmxpYyBrZXlib2FyZElucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgdGhpcy5vbk91dHNpZGVFdmVudChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZWRvd24nLCBbJyRldmVudCcsICckZXZlbnQudGFyZ2V0J10pXHJcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBjb25zdCBvdmVybGF5Q29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNkay1vdmVybGF5LWNvbnRhaW5lcicpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlICYmICF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudCkgJiYgb3ZlcmxheUNvbnRhaW5lciA/ICFvdmVybGF5Q29udGFpbmVyLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpIDogZmFsc2UpIHtcclxuICAgICAgdGhpcy5vbk91dHNpZGVFdmVudChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT3V0c2lkZUV2ZW50KGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5lb091dHNpZGVDbGljay5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIl19