tnx-shared 5.0.39 → 5.0.41
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.
- package/bundles/tnx-shared.umd.js +5 -8
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/dropdown/dropdown.component.d.ts.map +1 -1
- package/esm2015/components/dropdown/dropdown.component.js +1 -4
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +2 -2
- package/esm2015/components/workflow/services/entity-workflow-history.service.js +3 -3
- package/esm2015/components/workflow/services/entity-workflow-setting.service.js +3 -3
- package/fesm2015/tnx-shared.js +5 -8
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -824,7 +824,7 @@ FileManagerComponent.decorators = [
|
|
|
824
824
|
{ type: Component, args: [{
|
|
825
825
|
// tslint:disable-next-line: component-selector
|
|
826
826
|
selector: 'file-manager',
|
|
827
|
-
template: "<div *ngIf=\"layout == _layout.LIST\" class=\"full-layout\" [class.readonly]=\"readonly\">\r\n <div class=\"p-grid fm-toolbar\">\r\n <div class=\"fm-toolbar-path\">\r\n <p-breadcrumb class=\"customBreadCrumb\" [model]=\"data.breadcrumbs\"></p-breadcrumb>\r\n </div>\r\n <div *ngIf=\"!readonly && rootFolderId\" class=\"fm-toolbar-buttons\">\r\n <button *ngIf=\"!hiddenCreateFolder\" pButton type=\"button\" pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c\" tooltipPosition=\"top\"\r\n icon=\"pi pi-folder\" class=\"p-button-text p-button-rounded\" iconPos=\"left\" (click)=\"createFolder()\">\r\n </button>\r\n\r\n <button pButton icon=\"pi pi-cloud-upload\" pTooltip=\"T\u1EA3i l\u00EAn\" tooltipPosition=\"top\" type=\"button\"\r\n class=\"p-button-rounded p-button-text p-button-primary\" (click)=\"selectFile()\"></button>\r\n\r\n <button *ngIf=\"canSelect()\" class=\"p-button-rounded p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n\" tooltipPosition=\"top\" icon=\"fas fa-arrows-alt\" iconPos=\"left\"\r\n (click)=\"moveExplorerItems()\">\r\n </button>\r\n\r\n <ng-container *ngIf=\"canSetMove()\">\r\n <button class=\"p-button-rounded p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"\u0110\u1EB7t \u1EDF \u0111\u00E2y\" tooltipPosition=\"top\" icon=\"far fa-hand-paper\" iconPos=\"left\"\r\n (click)=\"setMoveExplorerItems()\">\r\n </button>\r\n\r\n <button icon=\"pi pi-undo\" pButton class=\"p-button-rounded p-button-text p-button-secondary\"\r\n type=\"button\" pTooltip=\"B\u1ECF qua\" tooltipPosition=\"top\" (click)=\"cancelMove()\">\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"hasSelect()\">\r\n <button class=\"p-button-rounded p-button-text p-button-secondary\" pButton type=\"button\"\r\n pTooltip=\"N\u00E9n & t\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\" iconPos=\"left\"\r\n (click)=\"downloadMultiple()\">\r\n </button>\r\n\r\n <button pButton type=\"button\" pTooltip=\"{{ 'X\u00F3a' | translate }}\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\" iconPos=\"left\" class=\"p-button-rounded p-button-text p-button-danger\"\r\n (click)=\"deleteMutiple(model.selectedItems)\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fm-grid\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"_dataSource\"\r\n [disableKeypressControl]=\"true\" [showScrollBar]=\"false\" class=\"--auto-height-content --no-wrapper-padding\"\r\n (onReload)=\"_triggerProcessData($event)\" (onRowSelect)=\"onRowSelect($event)\">\r\n\r\n <ng-template #explorerItem let-rowData='rowData' let-col='col'>\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\"\r\n (click)=\"openObject(rowData)\">\r\n </span>\r\n\r\n <span class=\"{{rowData.class}} file-ex-name\" (click)=\"openObject(rowData)\">\r\n {{rowData.name}}\r\n <div *ngIf=\"rowData.signatures\" class=\"pull-right signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template #fileSize let-rowData='rowData'>\r\n <div *ngIf=\"rowData.isFile\">{{rowData.fileSize | fileSize}}</div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <div class=\"function-list\">\r\n <button class=\"p-button-rounded p-button-text\" pButton type=\"button\" tooltipPosition=\"top\"\r\n pTooltip=\"{{getButtonTooltip(rowData)}}\" icon=\"{{getButtonIcon(rowData)}}\"\r\n (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-danger p-button-rounded p-button-text\" pButton type=\"button\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n (click)=\"deleteFile(rowData)\"></button>\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div class=\"nfl-toolbar\">\r\n <button *ngIf=\"!readonly\" type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"fas fa-cloud-upload-alt\" label=\"T\u1EA3i l\u00EAn\" (click)=\"selectFile()\"></button>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon\">\r\n </span>\r\n <a class=\"{{rowData.class}} file-ex-name\" (click)=\"openObject(rowData)\">\r\n <span>{{rowData.name}}</span>\r\n <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </a>\r\n </div>\r\n\r\n <div class=\"nfl-version\">\r\n v{{rowData.currentFileVersion}}\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text\" pButton type=\"button\" tooltipPosition=\"top\"\r\n pTooltip=\"{{getButtonTooltip(rowData)}}\" icon=\"{{getButtonIcon(rowData)}}\"\r\n (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text\" pButton type=\"button\" pTooltip=\"X\u00F3a\"\r\n tooltipPosition=\"top\" icon=\"pi pi-trash\" (click)=\"deleteFile(rowData)\"></button>\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<p-fileUpload #fileControl [name]=\"fileInForm\" mode=\"basic\" [ngStyle]=\"{'display': 'none'}\" [chooseLabel]=\"chooseLabel\"\r\n [multiple]=\"control.multiple\" [url]=\"apiUploadUrl\" [maxFileSize]=\"maxFileSize\" auto=\"true\"\r\n [invalidFileSizeMessageSummary]=\"invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"invalidFileLimitMessageDetail\" (onProgress)=\"onUploadProgress($event)\"\r\n (onBeforeUpload)=\"onBeforeUpload($event)\" (onSelect)=\"handleSelectFile($event)\" (onUpload)=\"onUploaded($event)\">\r\n</p-fileUpload>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"data.itemsMenuFile\" styleClass=\"fm-contextMenu-panel\">\r\n</p-contextMenu>\r\n\r\n<!-- T\u1EA1o m\u1EDBi/ \u0111\u1ED5i t\u00EAn th\u01B0 m\u1EE5c -->\r\n<tn-dialog *ngIf=\"forms.createFolder.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.createFolder.header | translate\" [popupSize]=\"forms[formIds.createFolder].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.createFolder)\">\r\n <folder-form #formBase [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms[formIds.createFolder].formData\" (onSaved)=\"onSavedForm(formIds.createFolder)\"\r\n (onCancel)=\"onCancelForm(formIds.createFolder)\">\r\n </folder-form>\r\n</tn-dialog>\r\n\r\n<!-- \u0110\u1ED5i t\u00EAn file -->\r\n<tn-dialog *ngIf=\"forms.renameFile.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.renameFile.header | translate\" [popupSize]=\"forms[formIds.renameFile].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.renameFile)\">\r\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"forms[formIds.renameFile].formData\"\r\n (onSaved)=\"onSavedForm(formIds.renameFile)\" (onCancel)=\"onCancelForm(formIds.renameFile)\">\r\n </file-form>\r\n</tn-dialog>\r\n\r\n<!-- Xem file tr\u1EF1c tuy\u1EBFn -->\r\n<file-viewer *ngIf=\"forms.fileViewer.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms.fileViewer.formData\" [readonly]=\"readonly\" (onClose)=\"closeFileViewer()\">\r\n</file-viewer>\r\n\r\n<!-- Xem phi\u00EAn b\u1EA3n -->\r\n<tn-dialog *ngIf=\"forms.fileVersionList.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.fileVersionList.header | translate\" [popupSize]=\"forms[formIds.fileVersionList].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.fileVersionList)\">\r\n <file-version-list *ngIf=\"forms.fileVersionList.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [fileId]=\"forms[formIds.fileVersionList].fileId\" [readonly]=\"readonly\">\r\n </file-version-list>\r\n</tn-dialog>\r\n\r\n<!--<share-file *ngIf=\"forms.shareFile.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFile.formData\">\r\n</share-file>\r\n\r\n<share-folder *ngIf=\"forms.shareFolder.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFolder.formData\">\r\n</share-folder>\r\n\r\n<signature-detail *ngIf=\"forms.signatureDetail.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.signatureDetail.formData\">\r\n</signature-detail> -->",
|
|
827
|
+
template: "<div *ngIf=\"layout == _layout.LIST\" class=\"full-layout\" [class.readonly]=\"readonly\">\r\n <div class=\"p-grid fm-toolbar\">\r\n <div class=\"fm-toolbar-path\">\r\n <p-breadcrumb class=\"customBreadCrumb\" [model]=\"data.breadcrumbs\"></p-breadcrumb>\r\n </div>\r\n <div *ngIf=\"!readonly && rootFolderId\" class=\"fm-toolbar-buttons\">\r\n <button *ngIf=\"!hiddenCreateFolder\" pButton type=\"button\" pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c\" tooltipPosition=\"top\"\r\n icon=\"pi pi-folder\" class=\"p-button-text p-button-rounded\" iconPos=\"left\" (click)=\"createFolder()\">\r\n </button>\r\n\r\n <button pButton icon=\"pi pi-cloud-upload\" pTooltip=\"T\u1EA3i l\u00EAn\" tooltipPosition=\"top\" type=\"button\"\r\n class=\"p-button-rounded p-button-text p-button-primary\" (click)=\"selectFile()\"></button>\r\n\r\n <button *ngIf=\"canSelect()\" class=\"p-button-rounded p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n\" tooltipPosition=\"top\" icon=\"fas fa-arrows-alt\" iconPos=\"left\"\r\n (click)=\"moveExplorerItems()\">\r\n </button>\r\n\r\n <ng-container *ngIf=\"canSetMove()\">\r\n <button class=\"p-button-rounded p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"\u0110\u1EB7t \u1EDF \u0111\u00E2y\" tooltipPosition=\"top\" icon=\"far fa-hand-paper\" iconPos=\"left\"\r\n (click)=\"setMoveExplorerItems()\">\r\n </button>\r\n\r\n <button icon=\"pi pi-undo\" pButton class=\"p-button-rounded p-button-text p-button-secondary\"\r\n type=\"button\" pTooltip=\"B\u1ECF qua\" tooltipPosition=\"top\" (click)=\"cancelMove()\">\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"hasSelect()\">\r\n <button class=\"p-button-rounded p-button-text p-button-secondary\" pButton type=\"button\"\r\n pTooltip=\"N\u00E9n & t\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\" iconPos=\"left\"\r\n (click)=\"downloadMultiple()\">\r\n </button>\r\n\r\n <button pButton type=\"button\" pTooltip=\"{{ 'X\u00F3a' | translate }}\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\" iconPos=\"left\" class=\"p-button-rounded p-button-text p-button-danger\"\r\n (click)=\"deleteMutiple(model.selectedItems)\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fm-grid\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"_dataSource\"\r\n [disableKeypressControl]=\"true\" [showScrollBar]=\"false\" class=\"--auto-height-content --no-wrapper-padding\"\r\n (onReload)=\"_triggerProcessData($event)\" (onRowSelect)=\"onRowSelect($event)\">\r\n\r\n <ng-template #explorerItem let-rowData='rowData' let-col='col'>\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\"\r\n (click)=\"openObject(rowData)\">\r\n </span>\r\n\r\n <span class=\"{{rowData.class}} file-ex-name\" (click)=\"openObject(rowData)\">\r\n {{rowData.name}}\r\n <div *ngIf=\"rowData.signatures\" class=\"pull-right signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template #fileSize let-rowData='rowData'>\r\n <div *ngIf=\"rowData.isFile\">{{rowData.fileSize | fileSize}}</div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <div class=\"function-list\">\r\n <button class=\"p-button-rounded p-button-text\" pButton type=\"button\" tooltipPosition=\"top\"\r\n pTooltip=\"{{getButtonTooltip(rowData)}}\" icon=\"{{getButtonIcon(rowData)}}\"\r\n (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-danger p-button-rounded p-button-text\" pButton type=\"button\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n (click)=\"deleteFile(rowData)\"></button>\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div class=\"nfl-toolbar\">\r\n <button *ngIf=\"!readonly\" type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"fas fa-cloud-upload-alt\" label=\"T\u1EA3i l\u00EAn\" (click)=\"selectFile()\"></button>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon\">\r\n </span>\r\n <a class=\"{{rowData.class}} file-ex-name\" (click)=\"openObject(rowData)\">\r\n <span>{{rowData.name}}</span>\r\n <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </a>\r\n </div>\r\n\r\n <div class=\"nfl-version\">\r\n v{{rowData.currentFileVersion}}\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text\" pButton type=\"button\" tooltipPosition=\"top\"\r\n pTooltip=\"{{getButtonTooltip(rowData)}}\" icon=\"{{getButtonIcon(rowData)}}\"\r\n (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text\" pButton type=\"button\" pTooltip=\"X\u00F3a\"\r\n tooltipPosition=\"top\" icon=\"pi pi-trash\" (click)=\"deleteFile(rowData)\"></button>\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<p-fileUpload #fileControl [name]=\"fileInForm\" mode=\"basic\" [ngStyle]=\"{'display': 'none'}\" [chooseLabel]=\"chooseLabel\"\r\n [multiple]=\"control?control.multiple:false\" [url]=\"apiUploadUrl\" [maxFileSize]=\"maxFileSize\" auto=\"true\"\r\n [invalidFileSizeMessageSummary]=\"invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"invalidFileLimitMessageDetail\" (onProgress)=\"onUploadProgress($event)\"\r\n (onBeforeUpload)=\"onBeforeUpload($event)\" (onSelect)=\"handleSelectFile($event)\" (onUpload)=\"onUploaded($event)\">\r\n</p-fileUpload>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"data.itemsMenuFile\" styleClass=\"fm-contextMenu-panel\">\r\n</p-contextMenu>\r\n\r\n<!-- T\u1EA1o m\u1EDBi/ \u0111\u1ED5i t\u00EAn th\u01B0 m\u1EE5c -->\r\n<tn-dialog *ngIf=\"forms.createFolder.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.createFolder.header | translate\" [popupSize]=\"forms[formIds.createFolder].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.createFolder)\">\r\n <folder-form #formBase [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms[formIds.createFolder].formData\" (onSaved)=\"onSavedForm(formIds.createFolder)\"\r\n (onCancel)=\"onCancelForm(formIds.createFolder)\">\r\n </folder-form>\r\n</tn-dialog>\r\n\r\n<!-- \u0110\u1ED5i t\u00EAn file -->\r\n<tn-dialog *ngIf=\"forms.renameFile.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.renameFile.header | translate\" [popupSize]=\"forms[formIds.renameFile].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.renameFile)\">\r\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"forms[formIds.renameFile].formData\"\r\n (onSaved)=\"onSavedForm(formIds.renameFile)\" (onCancel)=\"onCancelForm(formIds.renameFile)\">\r\n </file-form>\r\n</tn-dialog>\r\n\r\n<!-- Xem file tr\u1EF1c tuy\u1EBFn -->\r\n<file-viewer *ngIf=\"forms.fileViewer.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms.fileViewer.formData\" [readonly]=\"readonly\" (onClose)=\"closeFileViewer()\">\r\n</file-viewer>\r\n\r\n<!-- Xem phi\u00EAn b\u1EA3n -->\r\n<tn-dialog *ngIf=\"forms.fileVersionList.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.fileVersionList.header | translate\" [popupSize]=\"forms[formIds.fileVersionList].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.fileVersionList)\">\r\n <file-version-list *ngIf=\"forms.fileVersionList.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [fileId]=\"forms[formIds.fileVersionList].fileId\" [readonly]=\"readonly\">\r\n </file-version-list>\r\n</tn-dialog>\r\n\r\n<!--<share-file *ngIf=\"forms.shareFile.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFile.formData\">\r\n</share-file>\r\n\r\n<share-folder *ngIf=\"forms.shareFolder.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFolder.formData\">\r\n</share-folder>\r\n\r\n<signature-detail *ngIf=\"forms.signatureDetail.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.signatureDetail.formData\">\r\n</signature-detail> -->",
|
|
828
828
|
providers: [
|
|
829
829
|
{
|
|
830
830
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -882,4 +882,4 @@ FileManagerComponent.propDecorators = {
|
|
|
882
882
|
onChanged: [{ type: Output }],
|
|
883
883
|
onSelected: [{ type: Output }]
|
|
884
884
|
};
|
|
885
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvZmlsZS1tYW5hZ2VyL2ZpbGUtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELCtFQUErRTtBQUMvRSxxREFBcUQ7QUFDckQsbURBQW1EO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFZLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFP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QUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7O1lBbDNCSixTQUFTLFNBQUM7Z0JBQ1AsK0NBQStDO2dCQUMvQyxRQUFRLEVBQUUsY0FBYztnQkFDeEIsK3VXQUE0QztnQkFFNUMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELHVCQUF1QjtpQkFDMUI7O2FBQ0o7OztZQXRCUSxjQUFjO1lBaEN1QixRQUFRO1lBUWQsY0FBYztZQU43QyxnQkFBZ0I7WUFNaEIsbUJBQW1CO1lBU25CLGFBQWE7WUFJYixlQUFlO1lBU2Ysa0JBQWtCO1lBWmxCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsY0FBYztZQWVkLG1CQUFtQjtZQVBuQixzQkFBc0I7WUF6QnRCLHFCQUFxQjtZQTRCckIsYUFBYTtZQUZiLGlCQUFpQjtZQUhqQixtQkFBbUI7OzswQkFnQ3ZCLFNBQVMsU0FBQyxhQUFhOzBCQUN2QixTQUFTLFNBQUMsYUFBYTtzQkFFdkIsS0FBSzs4QkFDTCxLQUFLO3FCQUNMLEtBQUs7aUNBQ0wsS0FBSzswQkFDTCxLQUFLOzRDQUNMLEtBQUs7MkNBQ0wsS0FBSzs0Q0FDTCxLQUFLOzJDQUNMLEtBQUs7NkNBQ0wsS0FBSzs0Q0FDTCxLQUFLOzZCQUdMLEtBQUs7MEJBR0wsS0FBSztxQkFDTCxLQUFLO3dCQUdMLEtBQUs7dUJBYUwsS0FBSztvQkFDTCxLQUFLO3NCQU1MLE1BQU07OEJBQ04sTUFBTTt5QkFDTixNQUFNOzBCQUNOLE1BQU07d0JBQ04sTUFBTTt5QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xyXG4vLyBpbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbi8vIGltcG9ydCB7IENvbnRleHRNZW51IH0gZnJvbSAncHJpbWVuZy9jb250ZXh0bWVudSc7XHJcbi8vIGltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbnRleHRNZW51IH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvY29udGV4dG1lbnUnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbW1vbkVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tbW9uLWVycm9yLWNvZGUnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL21vZHVsZS1jb25maWcnO1xyXG5pbXBvcnQgeyBFZGl0RmlsZUNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZWRpdC1maWxlLWNvbW1hbmQnO1xyXG5pbXBvcnQgeyBDb21tYW5kVHlwZSwgVG5DbGllbnRDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RuLWNsaWVudC1jb21tYW5kJztcclxuaW1wb3J0IHsgQXV0aGVuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRuQ2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RuLWNsaWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVySXRlbSwgRmlsZUV4cGxvcmVySXRlbVR5cGUgfSBmcm9tICcuLi9tb2RlbHMvZmlsZS1leHBsb3Jlci1pdGVtJztcclxuaW1wb3J0IHsgRmlsZVZlcnNpb25EVE8gfSBmcm9tICcuLi9tb2RlbHMvZmlsZS12ZXJzaW9uLWR0byc7XHJcbmltcG9ydCB7IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlLWxpbmstZG93bmxvYWQtZHRvJztcclxuaW1wb3J0IHsgU2VydmljZVJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZXJ2aWNlLXJlcXVlc3QtbW9kZWwnO1xyXG5pbXBvcnQgeyBEb3dubG9hZExpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZG93bmxvYWQtbGluay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJOZXdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZS1leHBsb3Jlci1uZXcuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVPYmplY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZS1vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVWZXJzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpbGUtdmVyc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9sZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXlEcml2ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9teS1kcml2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgQ3J1ZEZvcm1EYXRhLCBFbnVtRmlsZUxheW91dCwgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hLCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IsIFBvcHVwU2l6ZSB9IGZyb20gJy4vLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi8uLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVyU2VydmljZSB9IGZyb20gJy4vLi4vc2VydmljZXMvZmlsZS1leHBsb3Jlci5zZXJ2aWNlJztcclxuXHJcbi8vIGRlY2xhcmUgdmFyIHZnY2Ffc2lnbl9hcHByb3ZlZDogYW55O1xyXG5kZWNsYXJlIHZhciB2Z2NhX3NpZ25fcGRmOiBhbnk7XHJcbmRlY2xhcmUgdmFyIHZnY2Ffc2lnbl9maWxlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgICBzZWxlY3RvcjogJ2ZpbGUtbWFuYWdlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtbWFuYWdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZU1hbmFnZXJDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcclxuICAgIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlTWFuYWdlckNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWxlQ29udHJvbCcpIGZpbGVDb250cm9sOiBGaWxlVXBsb2FkO1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnUnKSBjb250ZXh0TWVudTogQ29udGV4dE1lbnU7XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hO1xyXG4gICAgQElucHV0KCkgZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2U7XHJcbiAgICBASW5wdXQoKSBsYXlvdXQ6IEVudW1GaWxlTGF5b3V0ID0gRW51bUZpbGVMYXlvdXQuTElTVDtcclxuICAgIEBJbnB1dCgpIGhpZGRlbkNyZWF0ZUZvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWF4RmlsZVNpemU6IG51bWJlciA9IDEwMDAwMDAwMDsgLy8gU2l6ZSBpbiBieXRlXHJcbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeT86IHN0cmluZyA9ICd7MH06IFF1w6EgZHVuZyBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIEBJbnB1dCgpIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/OiBzdHJpbmcgPSAnZHVuZyBsxrDhu6NuZyB04buRaSDEkWEgbMOgIHswfS4nO1xyXG4gICAgQElucHV0KCkgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk/OiBzdHJpbmcgPSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XHJcbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsPzogc3RyaW5nID0gJ8SR4buLbmggZOG6oW5nIGZpbGUgY2hvIHBow6lwOiB7MH0uJztcclxuICAgIEBJbnB1dCgpIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT86IHN0cmluZyA9ICdRdcOhIHPhu5EgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbD86IHN0cmluZyA9ICd04buRaSDEkWEgezB9IGZpbGUuJztcclxuXHJcbiAgICAvLyBUw6puIHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICBASW5wdXQoKSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIELhu5kga2V5IMSR4buDIHThuqFvIHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICBASW5wdXQoKSBzZXJ2aWNlQ29kZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZW50aXR5OiBzdHJpbmc7XHJcbiAgICBfZW50aXR5S2V5OiBzdHJpbmc7XHJcbiAgICBfaGFzTG9hZGVkU291cmNlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXQgZW50aXR5S2V5KHZhbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fZW50aXR5S2V5ID0gdmFsO1xyXG5cclxuICAgICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZFNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVudGl0eUtleUNoYW5nZS5lbWl0KHRoaXMuX2VudGl0eUtleSk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5maWxlRGF0YVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Um9vdEZvbGRlckNvbnRlbnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgb25SZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGVudGl0eUtleUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGNsb3NlUG9wdXAgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YmNyaWJsZUFsbCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xyXG5cclxuICAgIF9vbGRWYWx1ZTogYW55O1xyXG4gICAgX3ZhbHVlOiBhbnk7XHJcbiAgICBfZGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuICAgIF9sYXlvdXQgPSBFbnVtRmlsZUxheW91dDtcclxuXHJcbiAgICAvLyBJbnN0YW5jZUlkIHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICByb290Rm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgcHJvZ3Jlc3NWYWx1ZSA9IDA7XHJcbiAgICBhcGlVcGxvYWRVcmwgPSAnJztcclxuICAgIGZpbGVJbkZvcm0gPSAnZmlsZSc7XHJcbiAgICBjaG9vc2VMYWJlbCA9ICdDaOG7jW4nO1xyXG4gICAgdXNlcklkOiBhbnk7XHJcblxyXG4gICAgZm9ybUlkcyA9IHtcclxuICAgICAgICBjcmVhdGVGb2xkZXI6ICdjcmVhdGVGb2xkZXInLFxyXG4gICAgICAgIHJlbmFtZUZpbGU6ICdyZW5hbWVGaWxlJyxcclxuICAgICAgICBzaGFyZUZpbGU6ICdzaGFyZUZpbGUnLFxyXG4gICAgICAgIHNoYXJlRm9sZGVyOiAnc2hhcmVGb2xkZXInLFxyXG4gICAgICAgIGZpbGVWaWV3ZXI6ICdmaWxlVmlld2VyJyxcclxuICAgICAgICBmaWxlVmVyc2lvbkxpc3Q6ICdmaWxlVmVyc2lvbkxpc3QnLFxyXG4gICAgICAgIHNpZ25hdHVyZURldGFpbDogJ3NpZ25hdHVyZURldGFpbCdcclxuICAgIH07XHJcbiAgICBmb3JtczogYW55ID0ge307XHJcbiAgICBkYXRhOiBhbnkgPSB7XHJcbiAgICAgICAgcm9vdEZvbGRlcklkOiBudWxsLFxyXG4gICAgICAgIGN1cnJlbnRGb2xkZXJJZDogbnVsbCxcclxuXHJcbiAgICAgICAgbW92aW5nOiB7XHJcbiAgICAgICAgICAgIGlzU2VsZWN0aW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogbnVsbCxcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBicmVhZGNydW1iczogPE1lbnVJdGVtW10+W11cclxuICAgIH07XHJcbiAgICBzY3JvbGxDb25maWcgPSB7IHN1cHByZXNzU2Nyb2xsWDogdHJ1ZSwgc3VwcHJlc3NTY3JvbGxZOiB0cnVlIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9teURyaXZlU2VydmljZTogTXlEcml2ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb25maXJtU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9hdXRoZW5TZXJ2aWNlOiBBdXRoZW5TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RuQ2xpZW50U2VydmljZTogVG5DbGllbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVWZXJzaW9uU2VydmljZTogRmlsZVZlcnNpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9zaWduYWxyU2VydmljZTogU2lnbmFsUlNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIF9maWxlRXhwbG9yZXJTZXJ2aWNlOiBGaWxlRXhwbG9yZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVFeHBsb3Jlck5ld1NlcnZpY2U6IEZpbGVFeHBsb3Jlck5ld1NlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIF9kZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9mb2xkZXJTZXJ2aWNlOiBGb2xkZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVPYmplY3RTZXJ2aWNlOiBGaWxlT2JqZWN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kb3dubG9hZExpbmtTZXJ2aWNlOiBEb3dubG9hZExpbmtTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xyXG4gICAgICAgIHRoaXMuYXBpVXBsb2FkVXJsID0gdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZ2V0VXBsb2FkVXJsKCk7XHJcbiAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRVc2VySWRDb21iaW5lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIFVwbG9hZCB3aXRoIG11bHRpcGxlIGZpbGVcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBpVXBsb2FkVXJsID0gdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZ2V0VXBsb2FkTXVsdGlwbGVVcmwoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUluRm9ybSA9ICdmaWxlcyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oYXNDcnVkTGlzdCA9IHRoaXMubGF5b3V0ID09IEVudW1GaWxlTGF5b3V0LkxJU1Q7XHJcbiAgICAgICAgdGhpcy5wbHVzVXJsID0gJ0J5Rm9sZGVySWQnO1xyXG4gICAgICAgIHRoaXMuaW5pdEdyaWQoKTtcclxuICAgICAgICB0aGlzLmluaXRGb3JtcygpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVEYXRhU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS5yZWdpc3Rlcih0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um9vdEZvbGRlckNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RGb2xkZXJJZCkge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNLZXkgPSB0aGlzLnNlcnZpY2VDb2RlXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLmVudGl0eVxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5fZW50aXR5S2V5O1xyXG5cclxuICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX21hcmtMb2FkaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvbGRlclNlcnZpY2UuZ2V0U2VydmljZUZvbGRlcklkKHtcclxuICAgICAgICAgICAgICAgIHNlcnZpY2VDb2RlOiB0aGlzLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcclxuICAgICAgICAgICAgICAgIGVudGl0eUtleTogdGhpcy5fZW50aXR5S2V5XHJcbiAgICAgICAgICAgIH0gYXMgU2VydmljZVJlcXVlc3RNb2RlbClcclxuICAgICAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91bm1hcmtMb2FkaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb290Rm9sZGVySWQgPSBycy5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRGb2xkZXJDb250ZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0PDsyBs4buXaSB44bqjeSByYSBraGkgbOG6pXkgdGjGsCBt4bulYyBn4buRYyEnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdldEZvbGRlckNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXREYXRhKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5icmVhZGNydW1icyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhc291cmNlKGRhdGFTb3VyY2U6IGFueVtdID0gW10pIHtcclxuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgICAgICB0aGlzLl9vbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gZGF0YVNvdXJjZS5tYXAoaXRlbSA9PiBpdGVtLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5fb2xkVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fb2xkVmFsdWUpICE9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maXJlRXZlbnRDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpcmVFdmVudENoYW5nZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5faGFzTG9hZGVkU291cmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZFNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpcmVFdmVudENoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRHcmlkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ1TDqm4gdMOgaSBsaeG7h3UnLFxyXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdUw6puIHTDoGkgbGnhu4d1JyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVMOqbiB0w6BpIGxp4buHdSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVTaXplJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdLw61jaCB0aMaw4bubYycsXHJcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0vDrWNoIHRoxrDhu5tjJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnS8OtY2ggdGjGsOG7m2MnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVhdGVkJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdOZ8OgeSB04bqhbycsXHJcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ05nw6B5IHThuqFvJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmfDoHkgdOG6oW8nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkYXRldGltZSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2N1cnJlbnRGaWxlVmVyc2lvbicsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnUGhpw6puIGLhuqNuJyxcclxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnUGhpw6puIGLhuqNuJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUGhpw6puIGLhuqNuJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZnVuY3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ0No4bupYyBuxINuZycsXHJcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0No4bupYyBuxINuZycsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0No4bupYyBuxINuZydcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuY29scyA9IFtcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZXhwbG9yZXJJdGVtJyxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVTaXplJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZmlsZVNpemUnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOWVtJyxcclxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVhdGVkJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZXRpbWUnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTBlbScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3VycmVudEZpbGVWZXJzaW9uJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOGVtJyxcclxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdFNldHRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0U2V0dGluZygpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRmlsdGVyUm93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9mb2xkZXJTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5IZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5Ub29sYmFyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3Jtcy5cclxuICAgIGluaXRGb3JtcygpIHtcclxuICAgICAgICB0aGlzLmZvcm1zW3RoaXMuZm9ybUlkcy5jcmVhdGVGb2xkZXJdID0ge1xyXG4gICAgICAgICAgICBoZWFkZXI6ICdU4bqhbyBt4bubaSB0aMawIG3hu6VjJyxcclxuICAgICAgICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgICAgICAgIGZvcm1EYXRhOiBuZXcgQ3J1ZEZvcm1EYXRhKCksXHJcbiAgICAgICAgICAgIHBvcHVwU2l6ZTogbmV3IFBvcHVwU2l6ZSh7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNDAwLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1zW3RoaXMuZm9ybUlkcy5yZW5hbWVGaWxlXSA9IHtcclxuICAgICAgICAgICAgaGVhZGVyOiAnxJDhu5VpIHTDqm4gdOG7h3AnLFxyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgZm9ybURhdGE6IG5ldyBDcnVkRm9ybURhdGEoKSxcclxuICAgICAgICAgICAgcG9wdXBTaXplOiBuZXcgUG9wdXBTaXplKHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA0MDAsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwMFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybXNbdGhpcy5mb3JtSWRzLmZpbGVWaWV3ZXJdID0ge1xyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgZm9ybURhdGE6IHt9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3Jtc1t0aGlzLmZvcm1JZHMuZmlsZVZlcnNpb25MaXN0XSA9IHtcclxuICAgICAgICAgICAgaGVhZGVyOiAnRGFuaCBzw6FjaCBwaGnDqm4gYuG6o24nLFxyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgZmlsZUlkOiBudWxsLFxyXG4gICAgICAgICAgICBwb3B1cFNpemU6IG5ldyBQb3B1cFNpemUoe1xyXG4gICAgICAgICAgICAgICAgbWF4aW1pemU6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBvblNhdmVkRm9ybShmb3JtSWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1zW2Zvcm1JZF0uc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FuY2VsRm9ybShmb3JtSWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1zW2Zvcm1JZF0uc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dDb250ZXh0TWVudShldnQsIGl0ZW0pIHtcclxuICAgICAgICBpZiAoaXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLml0ZW1zTWVudUZpbGUgPSBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdYZW0gdHLhu7FjIHR1eeG6v24nLCBpY29uOiAnZmFzIGZhLWV5ZScsIGNvbW1hbmQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdYZW0gY8OhYyBwaGnDqm4gYuG6o24ga2jDoWMnLCBpY29uOiAnZmFzIGZhLWhpc3RvcnknLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkZpbGVWZXJzaW9ucyhpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVOG6o2kgduG7gSBi4bqjbiBjw7RuZyBraGFpJywgaWNvbjogJ2ZhcyBmYS1kb3dubG9hZCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnS8O9IHPhu5EnLCBpY29uOiAnZmFzIGZhLXNpZ25hdHVyZScsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaWduRmlsZShpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICF0aGlzLnJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnWMOzYSB04buHcCB0aW4nLCBpY29uOiAnZmFyIGZhLXRyYXNoLWFsdCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVGaWxlKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogIXRoaXMucmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICfEkOG7lWkgdMOqbicsIGljb246ICdmYXMgZmEtZXJhc2VyJywgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmFtZUZpbGUoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhdGhpcy5yZWFkb25seVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YS5pdGVtc01lbnVGaWxlID0gW3tcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVOG6o2kgduG7gScsIGljb246ICdmYXMgZmEtZG93bmxvYWQnLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdYw7NhIHRoxrAgbeG7pWMnLCBpY29uOiAnZmFyIGZhLXRyYXNoLWFsdCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZvbGRlcihpdGVtKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAhdGhpcy5yZWFkb25seVxyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUudG9nZ2xlKGV2dCk7XHJcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNsaWNrRmlsZU5hbWUoaXRlbSkge1xyXG4gICAgICAgIGlmICghaXRlbS5jYW5WaWV3T25saW5lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuT2JqZWN0KGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlHcmlkSW5mbyhncmlkSW5mbzogR3JpZEluZm8pIHtcclxuICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ3BhcmVudEZvbGRlcklkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpbmQgaW4gdGhpcy5tb2RlbC5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGVsLmRhdGFTb3VyY2VbaW5kXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbGVFeHBsb3JlclNlcnZpY2Uuc3VwcG9ydERpZ2l0YWxTaWduYXR1cmUoaXRlbS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5nZXRTaWduYXR1cmVJbmZvQnlGaWxlSWQoaXRlbS5pZCkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MgJiYgcnMuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2lnbmF0dXJlcyA9IHJzLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGFzdFNpZ25hdHVyZSA9IHJzLmRhdGFbcnMuZGF0YS5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uZmlsZUV4cGxvcmVySXRlbVR5cGUgPT09IEZpbGVFeHBsb3Jlckl0ZW1UeXBlLkZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmV4dGVuc2lvbikge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5pbWFnZUljb24gPSBgL2Fzc2V0cy9pbWFnZXMvZmlsZS1leHQvaWNvbiR7aXRlbS5leHRlbnNpb24udG9Mb3dlckNhc2UoKX0ucG5nYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaXRlbS5jYW5WaWV3T25saW5lID0gdGhpcy5fZmlsZUV4cGxvcmVyTmV3U2VydmljZS5pc1N1cHBvcnRlZFZpZXdPbmxpbmUoaXRlbS5uYW1lKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0RGF0YXNvdXJjZSh0aGlzLm1vZGVsLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3Vuc3ViY3JpYmxlQWxsLm5leHQoKTtcclxuICAgICAgICB0aGlzLl91bnN1YmNyaWJsZUFsbC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVEYXRhU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS51bnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gRlVOQ1RJT04gQ09MVU1OIE1BTlVMQVRJT04uXHJcbiAgICBnZXRCdXR0b25JY29uKGV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIGlmIChleHBsb3Jlckl0ZW0uaXNGaWxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAncGkgcGktcGVuY2lsJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAncGkgcGktZXllJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAncGkgcGktcGVuY2lsJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnV0dG9uVG9vbHRpcChleHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICBpZiAoZXhwbG9yZXJJdGVtLmlzRmlsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0No4buJbmggc+G7rWEnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdYZW0gdHLhu7FjIHR1eeG6v24nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuICfEkOG7lWkgdMOqbic7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQnV0dG9uQ2xpY2soZXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgaWYgKGV4cGxvcmVySXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0RmlsZShleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuT2JqZWN0KGV4cGxvcmVySXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmFtZUZvbGRlcihleHBsb3Jlckl0ZW0uaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRNZW51SXRlbXMoZXhwbG9yZGVySXRlbSkge1xyXG4gICAgICAgIHJldHVybiBleHBsb3JkZXJJdGVtLmlzRmlsZSA/IHRoaXMuZGF0YS5pdGVtc01lbnVGaWxlIDogdGhpcy5kYXRhLml0ZW1zTWVudUZvbGRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyb3Bkb3duQ2xpY2soZXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgaWYgKGV4cGxvcmVySXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qga3lTb0l0ZW0gPSB0aGlzLmRhdGEuaXRlbXNNZW51RmlsZS5maW5kKHggPT4geC5sYWJlbC50b0xvd2VyQ2FzZSgpID09ICdLw70gc+G7kScpO1xyXG4gICAgICAgICAgICBpZiAoa3lTb0l0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGt5U29JdGVtLnZpc2libGUgPSB0aGlzLl9maWxlRXhwbG9yZXJTZXJ2aWNlLnN1cHBvcnREaWdpdGFsU2lnbmF0dXJlKGV4cGxvcmVySXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLnNlbGVjdGVkRXhwbG9yZXJJdGVtID0gZXhwbG9yZXJJdGVtO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEZJTEUgTUFOVUxBVElPTi5cclxuICAgIC8vIFThuqNpIGzDqm4gZmlsZS5cclxuICAgIG9uU2VsZWN0RmlsZSgpIHtcclxuICAgICAgICB0aGlzLmZpbGVDb250cm9sLnVwbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQmVmb3JlVXBsb2FkKGV2dCkge1xyXG4gICAgICAgIHRoaXMuX21hcmtMb2FkaW5nKCk7XHJcbiAgICAgICAgZXZ0LmZvcm1EYXRhLmFwcGVuZCgnc2VydmljZUNvZGUnLCB0aGlzLnNlcnZpY2VDb2RlKTtcclxuICAgICAgICBldnQuZm9ybURhdGEuYXBwZW5kKCdlbnRpdHknLCB0aGlzLmVudGl0eSk7XHJcbiAgICAgICAgZXZ0LmZvcm1EYXRhLmFwcGVuZCgnZW50aXR5S2V5JywgdGhpcy5fZW50aXR5S2V5KTtcclxuICAgICAgICBldnQuZm9ybURhdGEuYXBwZW5kKCdmb2xkZXJJZCcsIHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVXBsb2FkUHJvZ3Jlc3MoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gZXZ0LnByb2dyZXNzO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVNlbGVjdEZpbGUoZXZ0KSB7XHJcbiAgICAgICAgaWYgKGV2dC5lcnJvck1lc3NhZ2VzICYmIGV2dC5lcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKFxyXG4gICAgICAgICAgICAgICAgZXZ0LmVycm9yTWVzc2FnZXMubWFwKGl0ZW0gPT4gYCR7aXRlbS5zdW1tYXJ5fSR7aXRlbS5kZXRhaWx9YCkuam9pbignOyAnKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblVwbG9hZGVkKGV2dCkge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX21hcmtMb2FkaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gxJDhu5VpIHTDqm4gZmlsZS5cclxuICAgIHJlbmFtZUZpbGUoaXRlbSkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMucmVuYW1lRmlsZS5oZWFkZXIgPSAnxJDhu5VpIHTDqm4gdGjGsCBt4bulYyc7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5yZW5hbWVGaWxlLmZvcm1EYXRhLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNlcnZpY2VDb2RlOiB0aGlzLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxyXG4gICAgICAgICAgICBlbnRpdHlLZXk6IHRoaXMuX2VudGl0eUtleSxcclxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1zLnJlbmFtZUZpbGUuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWMOzYSBmaWxlLlxyXG4gICAgZGVsZXRlRmlsZShleHBsb3Jlckl0ZW06IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZU11dGlwbGUoW2V4cGxvcmVySXRlbV0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEZPTERFUiBNQU5VTEFUSU9OLlxyXG4gICAgLy8gVOG6oW8gdGjGsCBt4bulYy5cclxuICAgIGNyZWF0ZUZvbGRlcigpIHtcclxuICAgICAgICB0aGlzLmZvcm1zLmNyZWF0ZUZvbGRlci5mb3JtRGF0YS5kYXRhID0ge1xyXG4gICAgICAgICAgICBzZXJ2aWNlQ29kZTogdGhpcy5zZXJ2aWNlQ29kZSxcclxuICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcclxuICAgICAgICAgICAgZW50aXR5S2V5OiB0aGlzLl9lbnRpdHlLZXksXHJcbiAgICAgICAgICAgIHBhcmVudEZvbGRlcklkOiB0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3Jtcy5jcmVhdGVGb2xkZXIuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTeG7nyB0aMawIG3hu6VjLyBjbGljayB0aMawIG3hu6VjLlxyXG4gICAgZ2V0Rm9sZGVyQ29udGVudChjdXJyZW50Rm9sZGVySWQ/OiBzdHJpbmcpIHtcclxuICAgICAgICBjdXJyZW50Rm9sZGVySWQgPSBjdXJyZW50Rm9sZGVySWQgfHwgdGhpcy5yb290Rm9sZGVySWQ7XHJcbiAgICAgICAgdGhpcy5kYXRhLmN1cnJlbnRGb2xkZXJJZCA9IGN1cnJlbnRGb2xkZXJJZDtcclxuICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcclxuICAgICAgICB0aGlzLnNldEJyZWFkY3J1bWJzKCk7XHJcbiAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbGlkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkICE9IHRoaXMucm9vdEZvbGRlcklkKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5vbkNoYW5nZWQuZW1pdCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5maXJlRXZlbnRDaGFuZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gxJDhu5VpIHTDqm4gdGjGsCBt4bulYy5cclxuICAgIHJlbmFtZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5jcmVhdGVGb2xkZXIuaGVhZGVyID0gJ8SQ4buVaSB0w6puIHRoxrAgbeG7pWMnO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuY3JlYXRlRm9sZGVyLmZvcm1EYXRhLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNlcnZpY2VDb2RlOiB0aGlzLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxyXG4gICAgICAgICAgICBlbnRpdHlLZXk6IHRoaXMuX2VudGl0eUtleSxcclxuICAgICAgICAgICAgaWQ6IGZvbGRlcklkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3Jtcy5jcmVhdGVGb2xkZXIuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWMOzYSB0aMawIG3hu6VjLlxyXG4gICAgZGVsZXRlRm9sZGVyKGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlTXV0aXBsZShbZXhwbG9yZXJJdGVtXSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gQ09NTU9OIEZPTERFUiAmIEZJTEUgTUFOVUxBVElPTi5cclxuICAgIC8vIE3hu58gdGjGsCBt4bulYy8gdOG7h3AuXHJcbiAgICBhc3luYyBvcGVuT2JqZWN0KGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIGlmIChleHBsb3Jlckl0ZW0uaXNGaWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhblZpZXdPbmxpbmUgPSB0aGlzLl9maWxlT2JqZWN0U2VydmljZS5pc1N1cHBvcnRlZFZpZXdPbmxpbmUoZXhwbG9yZXJJdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoY2FuVmlld09ubGluZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRmlsZVZpZXdlcihleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRGb2xkZXJDb250ZW50KGV4cGxvcmVySXRlbS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFjDs2Egbmhp4buBdSB0aMawIG3hu6VjLyB04buHcC5cclxuICAgIGRlbGV0ZU11dGlwbGUoaXRlbXM6IEZpbGVFeHBsb3Jlckl0ZW1bXSkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlQ29uZmlybSgpXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2xkZXJTZXJ2aWNlLmRlbGV0ZU11bHRpcGxlKGl0ZW1zKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9sZGVyQ29udGVudCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YVN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVOG6o2kgdGjGsCBt4bulYy8gdOG7h3AuXHJcbiAgICBhc3luYyBkb3dubG9hZChleHBsb3Jlckl0ZW06IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZ2V0R2VuZXJhdGVEb3dubG9hZExpbmtNb2RlbChleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgIHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZG93bmxvYWQobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFThuqNpIG5oaeG7gXUgdGjGsCBt4bulYy8gdOG7h3AuXHJcbiAgICBhc3luYyBkb3dubG9hZE11bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgY29uc3QgaGFzSXRlbXMgPSBzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChoYXNJdGVtcykge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChzZWxlY3RlZEl0ZW1zWzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyck1vZGVsID0gc2VsZWN0ZWRJdGVtcy5tYXAoZXhwbG9yZXJJdGVtID0+IHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZ2V0R2VuZXJhdGVEb3dubG9hZExpbmtNb2RlbChleHBsb3Jlckl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZG93bmxvYWRNdWx0aXBsZShhcnJNb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9wZW5GaWxlVmlld2VyKGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZpZXdlci5mb3JtRGF0YS5kYXRhID0ge1xyXG4gICAgICAgICAgICBmaWxlSWQ6IGV4cGxvcmVySXRlbS5pZCxcclxuICAgICAgICAgICAgaXNGaWxlVmVyc2lvbjogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZvcm1zLmZpbGVWaWV3ZXIuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VGaWxlVmlld2VyKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZpZXdlci5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRGb2xkZXJDb250ZW50KHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+TU9WRSBGSUxFUyAmIEZPTERFUlMuXHJcbiAgICBoYXNTZWxlY3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENo4buNbiB0aMawIG3hu6VjLyBmaWxlIGRpIGNodXnhu4NuLlxyXG4gICAgY2FuU2VsZWN0KCkge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5kYXRhLm1vdmluZy5pc1NlbGVjdGluZ1xyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXNcclxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBjYW5TZXRNb3ZlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEubW92aW5nLmlzU2VsZWN0aW5nXHJcbiAgICAgICAgICAgICYmIHRoaXMuZGF0YS5tb3Zpbmcuc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgICAgICAmJiB0aGlzLmRhdGEubW92aW5nLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIG1vdmVFeHBsb3Jlckl0ZW1zKCkge1xyXG4gICAgICAgIGNvbnN0IGNhbk1vdmUgPSAhdGhpcy5kYXRhLm1vdmluZy5pc1NlbGVjdGluZ1xyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXNcclxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aFxyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLmRhdGFTb3VyY2VcclxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5kYXRhU291cmNlLmxlbmd0aDtcclxuXHJcbiAgICAgICAgaWYgKCFjYW5Nb3ZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5tb3ZpbmcgPSB7XHJcbiAgICAgICAgICAgIGlzU2VsZWN0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLl9jb21tb25TZXJ2aWNlLmNsb25lT2JqZWN0KHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtcyksXHJcbiAgICAgICAgICAgIHNvdXJjZUZvbGRlcklkOiB0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaOG6oyB0aMawIG3hu6VjLyBmaWxlLlxyXG4gICAgc2V0TW92ZUV4cGxvcmVySXRlbXMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEubW92aW5nLmlzU2VsZWN0aW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICBzb3VyY2VGb2xkZXJJZDogdGhpcy5kYXRhLm1vdmluZy5zb3VyY2VGb2xkZXJJZCxcclxuICAgICAgICAgICAgdGFyZ2V0Rm9sZGVySWQ6IHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQsXHJcbiAgICAgICAgICAgIGxzdEZpbGVFeHBsb3Jlckl0ZW1zOiB0aGlzLmRhdGEubW92aW5nLnNlbGVjdGVkSXRlbXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9mb2xkZXJTZXJ2aWNlLm1vdmVFeHBsb3Jlckl0ZW1zKG1vZGVsKVxyXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9sZGVyQ29udGVudCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0RpIGNodXnhu4NuIHRow6BuaCBjw7RuZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5tb3ZpbmcgPSB7fTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXBvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQuG7jyBkaSBjaHV54buDbi5cclxuICAgIGNhbmNlbE1vdmUoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLm1vdmluZyA9IHt9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+VkVSU0lPTi5cclxuICAgIG9wZW5GaWxlVmVyc2lvbnMoZmlsZTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZlcnNpb25MaXN0LmZpbGVJZCA9IGZpbGUuaWQ7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZlcnNpb25MaXN0LnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj5WSUVXIE9OTElORS5cclxuICAgIGVkaXRGaWxlKGZpbGU6IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ8SQYW5nIGvhur90IG7hu5FpIG3hu58g4bupbmcgZOG7pW5nJyk7XHJcbiAgICAgICAgdGhpcy5fZmlsZVZlcnNpb25TZXJ2aWNlLmNyZWF0ZU5ld01pbm9yVmVyc2lvbihmaWxlLmlkLCAnJywgZmFsc2UpXHJcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVWZXJzaW9uID0gPEZpbGVWZXJzaW9uRFRPPnJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gdGhpcy5fZmlsZVZlcnNpb25TZXJ2aWNlLmdldEZpbGVWZXJzaW9uRG93bmxvYWRVcmwoZmlsZVZlcnNpb24uaWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBUbkNsaWVudENvbW1hbmQoKTtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmQuY29tbWFuZFR5cGUgPSBDb21tYW5kVHlwZS5FZGl0RmlsZTtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmQua2V5ID0gdGhpcy5fbW9kdWxlQ29uZmlnLmVudmlyb25tZW50LnNpZ25hbHIuY2xpZW50S2V5O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWRpdEZpbGVDb21tYW5kID0gbmV3IEVkaXRGaWxlQ29tbWFuZCgpO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmZpbGVTZXJ2aWNlRW5kcG9pbnQgPSB0aGlzLl9tb2R1bGVDb25maWcuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludDtcclxuICAgICAgICAgICAgICAgIGVkaXRGaWxlQ29tbWFuZC51cGxvYWRGaWxlQXBpID0gdGhpcy5fZmlsZVZlcnNpb25TZXJ2aWNlLmdldFVwbG9hZEZpbGVWZXJzaW9uQXBpVXJsKCk7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQucmVtb3ZlRmlsZUFwaSA9IHRoaXMuX2ZpbGVWZXJzaW9uU2VydmljZS5nZXRSZW1vdmVGaWxlVmVyc2lvbkFwaVVybCgpO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmZpbGVVcmwgPSBmaWxlVXJsO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmlzRHJhZnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmdyb3VwRmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQudmVyc2lvbk5hbWUgPSBmaWxlVmVyc2lvbi52ZXJzaW9uTmFtZTtcclxuICAgICAgICAgICAgICAgIGVkaXRGaWxlQ29tbWFuZC5maWxlVmVyc2lvbklkID0gZmlsZVZlcnNpb24uaWQ7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQuYWNjZXNzVG9rZW4gPSB0aGlzLl9hdXRoZW5TZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgICAgICAgICBjb21tYW5kLmRhdGEgPSBlZGl0RmlsZUNvbW1hbmQ7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdG5DbGllbnRTZXJ2aWNlLnNlbmRDb21tYW5kKGNvbW1hbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hbHJTZXJ2aWNlLnVuU3Vic2NyaWJlVmlld0NvZGUobnVsbCwgJ0ZJTEUuVkVSU0lPTi5VUERBVEVEJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaWduYWxyU2VydmljZS5zdGFydChudWxsLCAnRklMRS5WRVJTSU9OLlVQREFURUQnLCBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2JqOiBhbnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2JqLm1lc3NhZ2UuY29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYmouTWVzc2FnZS5Db250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmdldExpc3RGaWxlcyh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKENvbW1vbkVycm9yQ29kZS5FUlJPUl9TRVJWSUNFX05PVF9SVU4gPT09IGVycm9yLnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93UmVzcG9uc2VFcnJvcigwLCBudWxsLCAnRmlsZScpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxFX0VYUExPUkVSLk1FU1NBR0VfRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxFX0VYUExPUkVSLk1FU1NBR0VfRVJST1JfREVUQUlMJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZmU6IDUwMDBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBCUkVBRENSVU1CUy5cclxuICAgIGFzeW5jIHNldEJyZWFkY3J1bWJzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fZm9sZGVyU2VydmljZS5nZXRGdWxsRm9sZGVyUGF0aCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzID0gcnMuZGF0YS5tYXAoZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGYuaWQgPT0gdGhpcy5yb290Rm9sZGVySWQgPyB0aGlzLnJvb3RGb2xkZXJOYW1lIDogZi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogZi5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzczogZi5pZCAhPSB0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkID8gJ2ZtLWNsaWNrYWJsZScgOiAnZm0tY3VycmVudC1mb2xkZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9sZGVyQ29udGVudChmLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5icmVhZGNydW1icyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmJyZWFkY3J1bWJzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gU0lHTi5cclxuICAgIC8vIFRPRE86IEzGsHUgw70geOG7rSBsw70gdHLGsOG7nW5nIGRvdWJsZSBjbGljayB2w6BvIG7DunRcclxuICAgIHNpZ25GaWxlKGZpbGU6IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBrw70gc+G7kSB2xINuIGLhuqNuIG7DoHk/JykudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5nZW5lcmF0ZUxpbmtEb3dubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlLmlkXHJcbiAgICAgICAgICAgICAgICB9IGFzIEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLl9maWxlRXhwbG9yZXJTZXJ2aWNlLmdldERvd25sb2FkRm9yU2lnblVybChycy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm1zID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgcHJtc1snRmlsZVVwbG9hZEhhbmRsZXInXSA9IGAke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS9TaWduYXR1cmUvU2F2ZVBoeXNpY2FsU2lnbmVkRmlsZWA7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJtc1snU2Vzc2lvbklkJ10gPSAnJztcclxuICAgICAgICAgICAgICAgICAgICBwcm1zWydGaWxlTmFtZSddID0gdXJsO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uX3BybXMgPSBKU09OLnN0cmluZ2lmeShwcm1zKTtcclxuICAgICAgICAgICAgICAgICAgICB2Z2NhX3NpZ25fZmlsZShqc29uX3BybXMsIChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRPYmogPSBKU09OLnBhcnNlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRPYmouRmlsZVNlcnZlciAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5zYXZlU2lnbmVkRmlsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRmlsZTogZmlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRmlsZUlkOiByZXN1bHRPYmouRmlsZVNlcnZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbihyc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93U3VjY2VzcygnS8O9IHPhu5EgdGjDoG5oIGPDtG5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzaGFyZUZvbGRlcihmaWxlOiBGaWxlRXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5zaGFyZUZvbGRlci5kYXRhID0gZmlsZTtcclxuICAgICAgICB0aGlzLmZvcm1zLnNoYXJlRm9sZGVyLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNoYXJlRmlsZShmaWxlOiBGaWxlRXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5zaGFyZUZpbGUuZGF0YSA9IGZpbGU7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5zaGFyZUZpbGUuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0RmlsZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlQ29udHJvbC5iYXNpY0ZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVDb250cm9sLmJhc2ljRmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlld0xpc3RTaWduKGU6IEV2ZW50LCBzaWduYXR1cmVzOiBhbnkpIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuc2lnbmF0dXJlRGV0YWlsLmRhdGEgPSBzaWduYXR1cmVzO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuc2lnbmF0dXJlRGV0YWlsLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUm93U2VsZWN0KGV2dCkge1xyXG4gICAgICAgIHRoaXMub25TZWxlY3RlZC5lbWl0KHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
885
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvZmlsZS1tYW5hZ2VyL2ZpbGUtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELCtFQUErRTtBQUMvRSxxREFBcUQ7QUFDckQsbURBQW1EO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFZLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFP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QUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7O1lBbDNCSixTQUFTLFNBQUM7Z0JBQ1AsK0NBQStDO2dCQUMvQyxRQUFRLEVBQUUsY0FBYztnQkFDeEIsNnZXQUE0QztnQkFFNUMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELHVCQUF1QjtpQkFDMUI7O2FBQ0o7OztZQXRCUSxjQUFjO1lBaEN1QixRQUFRO1lBUWQsY0FBYztZQU43QyxnQkFBZ0I7WUFNaEIsbUJBQW1CO1lBU25CLGFBQWE7WUFJYixlQUFlO1lBU2Ysa0JBQWtCO1lBWmxCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsY0FBYztZQWVkLG1CQUFtQjtZQVBuQixzQkFBc0I7WUF6QnRCLHFCQUFxQjtZQTRCckIsYUFBYTtZQUZiLGlCQUFpQjtZQUhqQixtQkFBbUI7OzswQkFnQ3ZCLFNBQVMsU0FBQyxhQUFhOzBCQUN2QixTQUFTLFNBQUMsYUFBYTtzQkFFdkIsS0FBSzs4QkFDTCxLQUFLO3FCQUNMLEtBQUs7aUNBQ0wsS0FBSzswQkFDTCxLQUFLOzRDQUNMLEtBQUs7MkNBQ0wsS0FBSzs0Q0FDTCxLQUFLOzJDQUNMLEtBQUs7NkNBQ0wsS0FBSzs0Q0FDTCxLQUFLOzZCQUdMLEtBQUs7MEJBR0wsS0FBSztxQkFDTCxLQUFLO3dCQUdMLEtBQUs7dUJBYUwsS0FBSztvQkFDTCxLQUFLO3NCQU1MLE1BQU07OEJBQ04sTUFBTTt5QkFDTixNQUFNOzBCQUNOLE1BQU07d0JBQ04sTUFBTTt5QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xyXG4vLyBpbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbi8vIGltcG9ydCB7IENvbnRleHRNZW51IH0gZnJvbSAncHJpbWVuZy9jb250ZXh0bWVudSc7XHJcbi8vIGltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbnRleHRNZW51IH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvY29udGV4dG1lbnUnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbW1vbkVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tbW9uLWVycm9yLWNvZGUnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL21vZHVsZS1jb25maWcnO1xyXG5pbXBvcnQgeyBFZGl0RmlsZUNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZWRpdC1maWxlLWNvbW1hbmQnO1xyXG5pbXBvcnQgeyBDb21tYW5kVHlwZSwgVG5DbGllbnRDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RuLWNsaWVudC1jb21tYW5kJztcclxuaW1wb3J0IHsgQXV0aGVuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRuQ2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RuLWNsaWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVySXRlbSwgRmlsZUV4cGxvcmVySXRlbVR5cGUgfSBmcm9tICcuLi9tb2RlbHMvZmlsZS1leHBsb3Jlci1pdGVtJztcclxuaW1wb3J0IHsgRmlsZVZlcnNpb25EVE8gfSBmcm9tICcuLi9tb2RlbHMvZmlsZS12ZXJzaW9uLWR0byc7XHJcbmltcG9ydCB7IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlLWxpbmstZG93bmxvYWQtZHRvJztcclxuaW1wb3J0IHsgU2VydmljZVJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZXJ2aWNlLXJlcXVlc3QtbW9kZWwnO1xyXG5pbXBvcnQgeyBEb3dubG9hZExpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZG93bmxvYWQtbGluay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJOZXdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZS1leHBsb3Jlci1uZXcuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVPYmplY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZS1vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVWZXJzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpbGUtdmVyc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9sZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXlEcml2ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9teS1kcml2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgQ3J1ZEZvcm1EYXRhLCBFbnVtRmlsZUxheW91dCwgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hLCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IsIFBvcHVwU2l6ZSB9IGZyb20gJy4vLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi8uLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVyU2VydmljZSB9IGZyb20gJy4vLi4vc2VydmljZXMvZmlsZS1leHBsb3Jlci5zZXJ2aWNlJztcclxuXHJcbi8vIGRlY2xhcmUgdmFyIHZnY2Ffc2lnbl9hcHByb3ZlZDogYW55O1xyXG5kZWNsYXJlIHZhciB2Z2NhX3NpZ25fcGRmOiBhbnk7XHJcbmRlY2xhcmUgdmFyIHZnY2Ffc2lnbl9maWxlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgICBzZWxlY3RvcjogJ2ZpbGUtbWFuYWdlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtbWFuYWdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZU1hbmFnZXJDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcclxuICAgIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlTWFuYWdlckNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWxlQ29udHJvbCcpIGZpbGVDb250cm9sOiBGaWxlVXBsb2FkO1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnUnKSBjb250ZXh0TWVudTogQ29udGV4dE1lbnU7XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hO1xyXG4gICAgQElucHV0KCkgZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2U7XHJcbiAgICBASW5wdXQoKSBsYXlvdXQ6IEVudW1GaWxlTGF5b3V0ID0gRW51bUZpbGVMYXlvdXQuTElTVDtcclxuICAgIEBJbnB1dCgpIGhpZGRlbkNyZWF0ZUZvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWF4RmlsZVNpemU6IG51bWJlciA9IDEwMDAwMDAwMDsgLy8gU2l6ZSBpbiBieXRlXHJcbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeT86IHN0cmluZyA9ICd7MH06IFF1w6EgZHVuZyBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIEBJbnB1dCgpIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/OiBzdHJpbmcgPSAnZHVuZyBsxrDhu6NuZyB04buRaSDEkWEgbMOgIHswfS4nO1xyXG4gICAgQElucHV0KCkgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk/OiBzdHJpbmcgPSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XHJcbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsPzogc3RyaW5nID0gJ8SR4buLbmggZOG6oW5nIGZpbGUgY2hvIHBow6lwOiB7MH0uJztcclxuICAgIEBJbnB1dCgpIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT86IHN0cmluZyA9ICdRdcOhIHPhu5EgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbD86IHN0cmluZyA9ICd04buRaSDEkWEgezB9IGZpbGUuJztcclxuXHJcbiAgICAvLyBUw6puIHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICBASW5wdXQoKSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIELhu5kga2V5IMSR4buDIHThuqFvIHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICBASW5wdXQoKSBzZXJ2aWNlQ29kZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZW50aXR5OiBzdHJpbmc7XHJcbiAgICBfZW50aXR5S2V5OiBzdHJpbmc7XHJcbiAgICBfaGFzTG9hZGVkU291cmNlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXQgZW50aXR5S2V5KHZhbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fZW50aXR5S2V5ID0gdmFsO1xyXG5cclxuICAgICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZFNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVudGl0eUtleUNoYW5nZS5lbWl0KHRoaXMuX2VudGl0eUtleSk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5maWxlRGF0YVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Um9vdEZvbGRlckNvbnRlbnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgb25SZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGVudGl0eUtleUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGNsb3NlUG9wdXAgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YmNyaWJsZUFsbCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xyXG5cclxuICAgIF9vbGRWYWx1ZTogYW55O1xyXG4gICAgX3ZhbHVlOiBhbnk7XHJcbiAgICBfZGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuICAgIF9sYXlvdXQgPSBFbnVtRmlsZUxheW91dDtcclxuXHJcbiAgICAvLyBJbnN0YW5jZUlkIHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICByb290Rm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgcHJvZ3Jlc3NWYWx1ZSA9IDA7XHJcbiAgICBhcGlVcGxvYWRVcmwgPSAnJztcclxuICAgIGZpbGVJbkZvcm0gPSAnZmlsZSc7XHJcbiAgICBjaG9vc2VMYWJlbCA9ICdDaOG7jW4nO1xyXG4gICAgdXNlcklkOiBhbnk7XHJcblxyXG4gICAgZm9ybUlkcyA9IHtcclxuICAgICAgICBjcmVhdGVGb2xkZXI6ICdjcmVhdGVGb2xkZXInLFxyXG4gICAgICAgIHJlbmFtZUZpbGU6ICdyZW5hbWVGaWxlJyxcclxuICAgICAgICBzaGFyZUZpbGU6ICdzaGFyZUZpbGUnLFxyXG4gICAgICAgIHNoYXJlRm9sZGVyOiAnc2hhcmVGb2xkZXInLFxyXG4gICAgICAgIGZpbGVWaWV3ZXI6ICdmaWxlVmlld2VyJyxcclxuICAgICAgICBmaWxlVmVyc2lvbkxpc3Q6ICdmaWxlVmVyc2lvbkxpc3QnLFxyXG4gICAgICAgIHNpZ25hdHVyZURldGFpbDogJ3NpZ25hdHVyZURldGFpbCdcclxuICAgIH07XHJcbiAgICBmb3JtczogYW55ID0ge307XHJcbiAgICBkYXRhOiBhbnkgPSB7XHJcbiAgICAgICAgcm9vdEZvbGRlcklkOiBudWxsLFxyXG4gICAgICAgIGN1cnJlbnRGb2xkZXJJZDogbnVsbCxcclxuXHJcbiAgICAgICAgbW92aW5nOiB7XHJcbiAgICAgICAgICAgIGlzU2VsZWN0aW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogbnVsbCxcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBicmVhZGNydW1iczogPE1lbnVJdGVtW10+W11cclxuICAgIH07XHJcbiAgICBzY3JvbGxDb25maWcgPSB7IHN1cHByZXNzU2Nyb2xsWDogdHJ1ZSwgc3VwcHJlc3NTY3JvbGxZOiB0cnVlIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9teURyaXZlU2VydmljZTogTXlEcml2ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb25maXJtU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9hdXRoZW5TZXJ2aWNlOiBBdXRoZW5TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RuQ2xpZW50U2VydmljZTogVG5DbGllbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVWZXJzaW9uU2VydmljZTogRmlsZVZlcnNpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9zaWduYWxyU2VydmljZTogU2lnbmFsUlNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIF9maWxlRXhwbG9yZXJTZXJ2aWNlOiBGaWxlRXhwbG9yZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVFeHBsb3Jlck5ld1NlcnZpY2U6IEZpbGVFeHBsb3Jlck5ld1NlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIF9kZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9mb2xkZXJTZXJ2aWNlOiBGb2xkZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVPYmplY3RTZXJ2aWNlOiBGaWxlT2JqZWN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kb3dubG9hZExpbmtTZXJ2aWNlOiBEb3dubG9hZExpbmtTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xyXG4gICAgICAgIHRoaXMuYXBpVXBsb2FkVXJsID0gdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZ2V0VXBsb2FkVXJsKCk7XHJcbiAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRVc2VySWRDb21iaW5lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIFVwbG9hZCB3aXRoIG11bHRpcGxlIGZpbGVcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBpVXBsb2FkVXJsID0gdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZ2V0VXBsb2FkTXVsdGlwbGVVcmwoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUluRm9ybSA9ICdmaWxlcyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oYXNDcnVkTGlzdCA9IHRoaXMubGF5b3V0ID09IEVudW1GaWxlTGF5b3V0LkxJU1Q7XHJcbiAgICAgICAgdGhpcy5wbHVzVXJsID0gJ0J5Rm9sZGVySWQnO1xyXG4gICAgICAgIHRoaXMuaW5pdEdyaWQoKTtcclxuICAgICAgICB0aGlzLmluaXRGb3JtcygpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVEYXRhU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS5yZWdpc3Rlcih0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um9vdEZvbGRlckNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RGb2xkZXJJZCkge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNLZXkgPSB0aGlzLnNlcnZpY2VDb2RlXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLmVudGl0eVxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5fZW50aXR5S2V5O1xyXG5cclxuICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX21hcmtMb2FkaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvbGRlclNlcnZpY2UuZ2V0U2VydmljZUZvbGRlcklkKHtcclxuICAgICAgICAgICAgICAgIHNlcnZpY2VDb2RlOiB0aGlzLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcclxuICAgICAgICAgICAgICAgIGVudGl0eUtleTogdGhpcy5fZW50aXR5S2V5XHJcbiAgICAgICAgICAgIH0gYXMgU2VydmljZVJlcXVlc3RNb2RlbClcclxuICAgICAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91bm1hcmtMb2FkaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb290Rm9sZGVySWQgPSBycy5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRGb2xkZXJDb250ZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0PDsyBs4buXaSB44bqjeSByYSBraGkgbOG6pXkgdGjGsCBt4bulYyBn4buRYyEnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdldEZvbGRlckNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXREYXRhKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5icmVhZGNydW1icyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhc291cmNlKGRhdGFTb3VyY2U6IGFueVtdID0gW10pIHtcclxuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgICAgICB0aGlzLl9vbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gZGF0YVNvdXJjZS5tYXAoaXRlbSA9PiBpdGVtLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5fb2xkVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fb2xkVmFsdWUpICE9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maXJlRXZlbnRDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpcmVFdmVudENoYW5nZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5faGFzTG9hZGVkU291cmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZFNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpcmVFdmVudENoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRHcmlkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ1TDqm4gdMOgaSBsaeG7h3UnLFxyXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdUw6puIHTDoGkgbGnhu4d1JyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVMOqbiB0w6BpIGxp4buHdSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVTaXplJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdLw61jaCB0aMaw4bubYycsXHJcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0vDrWNoIHRoxrDhu5tjJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnS8OtY2ggdGjGsOG7m2MnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVhdGVkJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdOZ8OgeSB04bqhbycsXHJcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ05nw6B5IHThuqFvJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmfDoHkgdOG6oW8nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkYXRldGltZSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2N1cnJlbnRGaWxlVmVyc2lvbicsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnUGhpw6puIGLhuqNuJyxcclxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnUGhpw6puIGLhuqNuJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUGhpw6puIGLhuqNuJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZnVuY3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ0No4bupYyBuxINuZycsXHJcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0No4bupYyBuxINuZycsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0No4bupYyBuxINuZydcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuY29scyA9IFtcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZXhwbG9yZXJJdGVtJyxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVTaXplJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZmlsZVNpemUnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOWVtJyxcclxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVhdGVkJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZXRpbWUnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTBlbScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3VycmVudEZpbGVWZXJzaW9uJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOGVtJyxcclxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdFNldHRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0U2V0dGluZygpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRmlsdGVyUm93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9mb2xkZXJTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5IZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5Ub29sYmFyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3Jtcy5cclxuICAgIGluaXRGb3JtcygpIHtcclxuICAgICAgICB0aGlzLmZvcm1zW3RoaXMuZm9ybUlkcy5jcmVhdGVGb2xkZXJdID0ge1xyXG4gICAgICAgICAgICBoZWFkZXI6ICdU4bqhbyBt4bubaSB0aMawIG3hu6VjJyxcclxuICAgICAgICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgICAgICAgIGZvcm1EYXRhOiBuZXcgQ3J1ZEZvcm1EYXRhKCksXHJcbiAgICAgICAgICAgIHBvcHVwU2l6ZTogbmV3IFBvcHVwU2l6ZSh7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNDAwLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1zW3RoaXMuZm9ybUlkcy5yZW5hbWVGaWxlXSA9IHtcclxuICAgICAgICAgICAgaGVhZGVyOiAnxJDhu5VpIHTDqm4gdOG7h3AnLFxyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgZm9ybURhdGE6IG5ldyBDcnVkRm9ybURhdGEoKSxcclxuICAgICAgICAgICAgcG9wdXBTaXplOiBuZXcgUG9wdXBTaXplKHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA0MDAsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwMFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybXNbdGhpcy5mb3JtSWRzLmZpbGVWaWV3ZXJdID0ge1xyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgZm9ybURhdGE6IHt9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3Jtc1t0aGlzLmZvcm1JZHMuZmlsZVZlcnNpb25MaXN0XSA9IHtcclxuICAgICAgICAgICAgaGVhZGVyOiAnRGFuaCBzw6FjaCBwaGnDqm4gYuG6o24nLFxyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgZmlsZUlkOiBudWxsLFxyXG4gICAgICAgICAgICBwb3B1cFNpemU6IG5ldyBQb3B1cFNpemUoe1xyXG4gICAgICAgICAgICAgICAgbWF4aW1pemU6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBvblNhdmVkRm9ybShmb3JtSWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1zW2Zvcm1JZF0uc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FuY2VsRm9ybShmb3JtSWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1zW2Zvcm1JZF0uc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dDb250ZXh0TWVudShldnQsIGl0ZW0pIHtcclxuICAgICAgICBpZiAoaXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLml0ZW1zTWVudUZpbGUgPSBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdYZW0gdHLhu7FjIHR1eeG6v24nLCBpY29uOiAnZmFzIGZhLWV5ZScsIGNvbW1hbmQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdYZW0gY8OhYyBwaGnDqm4gYuG6o24ga2jDoWMnLCBpY29uOiAnZmFzIGZhLWhpc3RvcnknLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkZpbGVWZXJzaW9ucyhpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVOG6o2kgduG7gSBi4bqjbiBjw7RuZyBraGFpJywgaWNvbjogJ2ZhcyBmYS1kb3dubG9hZCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnS8O9IHPhu5EnLCBpY29uOiAnZmFzIGZhLXNpZ25hdHVyZScsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaWduRmlsZShpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICF0aGlzLnJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnWMOzYSB04buHcCB0aW4nLCBpY29uOiAnZmFyIGZhLXRyYXNoLWFsdCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVGaWxlKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogIXRoaXMucmVhZG9ubHlcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICfEkOG7lWkgdMOqbicsIGljb246ICdmYXMgZmEtZXJhc2VyJywgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmFtZUZpbGUoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhdGhpcy5yZWFkb25seVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YS5pdGVtc01lbnVGaWxlID0gW3tcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVOG6o2kgduG7gScsIGljb246ICdmYXMgZmEtZG93bmxvYWQnLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdYw7NhIHRoxrAgbeG7pWMnLCBpY29uOiAnZmFyIGZhLXRyYXNoLWFsdCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZvbGRlcihpdGVtKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAhdGhpcy5yZWFkb25seVxyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUudG9nZ2xlKGV2dCk7XHJcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNsaWNrRmlsZU5hbWUoaXRlbSkge1xyXG4gICAgICAgIGlmICghaXRlbS5jYW5WaWV3T25saW5lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuT2JqZWN0KGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlHcmlkSW5mbyhncmlkSW5mbzogR3JpZEluZm8pIHtcclxuICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ3BhcmVudEZvbGRlcklkJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpbmQgaW4gdGhpcy5tb2RlbC5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGVsLmRhdGFTb3VyY2VbaW5kXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbGVFeHBsb3JlclNlcnZpY2Uuc3VwcG9ydERpZ2l0YWxTaWduYXR1cmUoaXRlbS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5nZXRTaWduYXR1cmVJbmZvQnlGaWxlSWQoaXRlbS5pZCkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MgJiYgcnMuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2lnbmF0dXJlcyA9IHJzLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGFzdFNpZ25hdHVyZSA9IHJzLmRhdGFbcnMuZGF0YS5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uZmlsZUV4cGxvcmVySXRlbVR5cGUgPT09IEZpbGVFeHBsb3Jlckl0ZW1UeXBlLkZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmV4dGVuc2lvbikge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5pbWFnZUljb24gPSBgL2Fzc2V0cy9pbWFnZXMvZmlsZS1leHQvaWNvbiR7aXRlbS5leHRlbnNpb24udG9Mb3dlckNhc2UoKX0ucG5nYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaXRlbS5jYW5WaWV3T25saW5lID0gdGhpcy5fZmlsZUV4cGxvcmVyTmV3U2VydmljZS5pc1N1cHBvcnRlZFZpZXdPbmxpbmUoaXRlbS5uYW1lKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0RGF0YXNvdXJjZSh0aGlzLm1vZGVsLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3Vuc3ViY3JpYmxlQWxsLm5leHQoKTtcclxuICAgICAgICB0aGlzLl91bnN1YmNyaWJsZUFsbC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVEYXRhU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZS51bnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gRlVOQ1RJT04gQ09MVU1OIE1BTlVMQVRJT04uXHJcbiAgICBnZXRCdXR0b25JY29uKGV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIGlmIChleHBsb3Jlckl0ZW0uaXNGaWxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAncGkgcGktcGVuY2lsJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAncGkgcGktZXllJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAncGkgcGktcGVuY2lsJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnV0dG9uVG9vbHRpcChleHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICBpZiAoZXhwbG9yZXJJdGVtLmlzRmlsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0No4buJbmggc+G7rWEnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdYZW0gdHLhu7FjIHR1eeG6v24nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuICfEkOG7lWkgdMOqbic7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQnV0dG9uQ2xpY2soZXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgaWYgKGV4cGxvcmVySXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0RmlsZShleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuT2JqZWN0KGV4cGxvcmVySXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmFtZUZvbGRlcihleHBsb3Jlckl0ZW0uaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRNZW51SXRlbXMoZXhwbG9yZGVySXRlbSkge1xyXG4gICAgICAgIHJldHVybiBleHBsb3JkZXJJdGVtLmlzRmlsZSA/IHRoaXMuZGF0YS5pdGVtc01lbnVGaWxlIDogdGhpcy5kYXRhLml0ZW1zTWVudUZvbGRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyb3Bkb3duQ2xpY2soZXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgaWYgKGV4cGxvcmVySXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qga3lTb0l0ZW0gPSB0aGlzLmRhdGEuaXRlbXNNZW51RmlsZS5maW5kKHggPT4geC5sYWJlbC50b0xvd2VyQ2FzZSgpID09ICdLw70gc+G7kScpO1xyXG4gICAgICAgICAgICBpZiAoa3lTb0l0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGt5U29JdGVtLnZpc2libGUgPSB0aGlzLl9maWxlRXhwbG9yZXJTZXJ2aWNlLnN1cHBvcnREaWdpdGFsU2lnbmF0dXJlKGV4cGxvcmVySXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLnNlbGVjdGVkRXhwbG9yZXJJdGVtID0gZXhwbG9yZXJJdGVtO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEZJTEUgTUFOVUxBVElPTi5cclxuICAgIC8vIFThuqNpIGzDqm4gZmlsZS5cclxuICAgIG9uU2VsZWN0RmlsZSgpIHtcclxuICAgICAgICB0aGlzLmZpbGVDb250cm9sLnVwbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQmVmb3JlVXBsb2FkKGV2dCkge1xyXG4gICAgICAgIHRoaXMuX21hcmtMb2FkaW5nKCk7XHJcbiAgICAgICAgZXZ0LmZvcm1EYXRhLmFwcGVuZCgnc2VydmljZUNvZGUnLCB0aGlzLnNlcnZpY2VDb2RlKTtcclxuICAgICAgICBldnQuZm9ybURhdGEuYXBwZW5kKCdlbnRpdHknLCB0aGlzLmVudGl0eSk7XHJcbiAgICAgICAgZXZ0LmZvcm1EYXRhLmFwcGVuZCgnZW50aXR5S2V5JywgdGhpcy5fZW50aXR5S2V5KTtcclxuICAgICAgICBldnQuZm9ybURhdGEuYXBwZW5kKCdmb2xkZXJJZCcsIHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVXBsb2FkUHJvZ3Jlc3MoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gZXZ0LnByb2dyZXNzO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVNlbGVjdEZpbGUoZXZ0KSB7XHJcbiAgICAgICAgaWYgKGV2dC5lcnJvck1lc3NhZ2VzICYmIGV2dC5lcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKFxyXG4gICAgICAgICAgICAgICAgZXZ0LmVycm9yTWVzc2FnZXMubWFwKGl0ZW0gPT4gYCR7aXRlbS5zdW1tYXJ5fSR7aXRlbS5kZXRhaWx9YCkuam9pbignOyAnKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblVwbG9hZGVkKGV2dCkge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX21hcmtMb2FkaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gxJDhu5VpIHTDqm4gZmlsZS5cclxuICAgIHJlbmFtZUZpbGUoaXRlbSkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMucmVuYW1lRmlsZS5oZWFkZXIgPSAnxJDhu5VpIHTDqm4gdGjGsCBt4bulYyc7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5yZW5hbWVGaWxlLmZvcm1EYXRhLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNlcnZpY2VDb2RlOiB0aGlzLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxyXG4gICAgICAgICAgICBlbnRpdHlLZXk6IHRoaXMuX2VudGl0eUtleSxcclxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1zLnJlbmFtZUZpbGUuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWMOzYSBmaWxlLlxyXG4gICAgZGVsZXRlRmlsZShleHBsb3Jlckl0ZW06IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZU11dGlwbGUoW2V4cGxvcmVySXRlbV0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEZPTERFUiBNQU5VTEFUSU9OLlxyXG4gICAgLy8gVOG6oW8gdGjGsCBt4bulYy5cclxuICAgIGNyZWF0ZUZvbGRlcigpIHtcclxuICAgICAgICB0aGlzLmZvcm1zLmNyZWF0ZUZvbGRlci5mb3JtRGF0YS5kYXRhID0ge1xyXG4gICAgICAgICAgICBzZXJ2aWNlQ29kZTogdGhpcy5zZXJ2aWNlQ29kZSxcclxuICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcclxuICAgICAgICAgICAgZW50aXR5S2V5OiB0aGlzLl9lbnRpdHlLZXksXHJcbiAgICAgICAgICAgIHBhcmVudEZvbGRlcklkOiB0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3Jtcy5jcmVhdGVGb2xkZXIuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTeG7nyB0aMawIG3hu6VjLyBjbGljayB0aMawIG3hu6VjLlxyXG4gICAgZ2V0Rm9sZGVyQ29udGVudChjdXJyZW50Rm9sZGVySWQ/OiBzdHJpbmcpIHtcclxuICAgICAgICBjdXJyZW50Rm9sZGVySWQgPSBjdXJyZW50Rm9sZGVySWQgfHwgdGhpcy5yb290Rm9sZGVySWQ7XHJcbiAgICAgICAgdGhpcy5kYXRhLmN1cnJlbnRGb2xkZXJJZCA9IGN1cnJlbnRGb2xkZXJJZDtcclxuICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcclxuICAgICAgICB0aGlzLnNldEJyZWFkY3J1bWJzKCk7XHJcbiAgICAgICAgdGhpcy5zZXRWYWxpZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbGlkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkICE9IHRoaXMucm9vdEZvbGRlcklkKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5vbkNoYW5nZWQuZW1pdCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5maXJlRXZlbnRDaGFuZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gxJDhu5VpIHTDqm4gdGjGsCBt4bulYy5cclxuICAgIHJlbmFtZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5jcmVhdGVGb2xkZXIuaGVhZGVyID0gJ8SQ4buVaSB0w6puIHRoxrAgbeG7pWMnO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuY3JlYXRlRm9sZGVyLmZvcm1EYXRhLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNlcnZpY2VDb2RlOiB0aGlzLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxyXG4gICAgICAgICAgICBlbnRpdHlLZXk6IHRoaXMuX2VudGl0eUtleSxcclxuICAgICAgICAgICAgaWQ6IGZvbGRlcklkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3Jtcy5jcmVhdGVGb2xkZXIuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWMOzYSB0aMawIG3hu6VjLlxyXG4gICAgZGVsZXRlRm9sZGVyKGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlTXV0aXBsZShbZXhwbG9yZXJJdGVtXSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gQ09NTU9OIEZPTERFUiAmIEZJTEUgTUFOVUxBVElPTi5cclxuICAgIC8vIE3hu58gdGjGsCBt4bulYy8gdOG7h3AuXHJcbiAgICBhc3luYyBvcGVuT2JqZWN0KGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIGlmIChleHBsb3Jlckl0ZW0uaXNGaWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhblZpZXdPbmxpbmUgPSB0aGlzLl9maWxlT2JqZWN0U2VydmljZS5pc1N1cHBvcnRlZFZpZXdPbmxpbmUoZXhwbG9yZXJJdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoY2FuVmlld09ubGluZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRmlsZVZpZXdlcihleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRGb2xkZXJDb250ZW50KGV4cGxvcmVySXRlbS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFjDs2Egbmhp4buBdSB0aMawIG3hu6VjLyB04buHcC5cclxuICAgIGRlbGV0ZU11dGlwbGUoaXRlbXM6IEZpbGVFeHBsb3Jlckl0ZW1bXSkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlQ29uZmlybSgpXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2xkZXJTZXJ2aWNlLmRlbGV0ZU11bHRpcGxlKGl0ZW1zKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9sZGVyQ29udGVudCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YVN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVOG6o2kgdGjGsCBt4bulYy8gdOG7h3AuXHJcbiAgICBhc3luYyBkb3dubG9hZChleHBsb3Jlckl0ZW06IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZ2V0R2VuZXJhdGVEb3dubG9hZExpbmtNb2RlbChleHBsb3Jlckl0ZW0pO1xyXG4gICAgICAgIHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZG93bmxvYWQobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFThuqNpIG5oaeG7gXUgdGjGsCBt4bulYy8gdOG7h3AuXHJcbiAgICBhc3luYyBkb3dubG9hZE11bHRpcGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgY29uc3QgaGFzSXRlbXMgPSBzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChoYXNJdGVtcykge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChzZWxlY3RlZEl0ZW1zWzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyck1vZGVsID0gc2VsZWN0ZWRJdGVtcy5tYXAoZXhwbG9yZXJJdGVtID0+IHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZ2V0R2VuZXJhdGVEb3dubG9hZExpbmtNb2RlbChleHBsb3Jlckl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkTGlua1NlcnZpY2UuZG93bmxvYWRNdWx0aXBsZShhcnJNb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9wZW5GaWxlVmlld2VyKGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZpZXdlci5mb3JtRGF0YS5kYXRhID0ge1xyXG4gICAgICAgICAgICBmaWxlSWQ6IGV4cGxvcmVySXRlbS5pZCxcclxuICAgICAgICAgICAgaXNGaWxlVmVyc2lvbjogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZvcm1zLmZpbGVWaWV3ZXIuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VGaWxlVmlld2VyKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZpZXdlci5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRGb2xkZXJDb250ZW50KHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+TU9WRSBGSUxFUyAmIEZPTERFUlMuXHJcbiAgICBoYXNTZWxlY3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENo4buNbiB0aMawIG3hu6VjLyBmaWxlIGRpIGNodXnhu4NuLlxyXG4gICAgY2FuU2VsZWN0KCkge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5kYXRhLm1vdmluZy5pc1NlbGVjdGluZ1xyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXNcclxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBjYW5TZXRNb3ZlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEubW92aW5nLmlzU2VsZWN0aW5nXHJcbiAgICAgICAgICAgICYmIHRoaXMuZGF0YS5tb3Zpbmcuc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgICAgICAmJiB0aGlzLmRhdGEubW92aW5nLnNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIG1vdmVFeHBsb3Jlckl0ZW1zKCkge1xyXG4gICAgICAgIGNvbnN0IGNhbk1vdmUgPSAhdGhpcy5kYXRhLm1vdmluZy5pc1NlbGVjdGluZ1xyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLnNlbGVjdGVkSXRlbXNcclxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aFxyXG4gICAgICAgICAgICAmJiB0aGlzLm1vZGVsLmRhdGFTb3VyY2VcclxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5kYXRhU291cmNlLmxlbmd0aDtcclxuXHJcbiAgICAgICAgaWYgKCFjYW5Nb3ZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5tb3ZpbmcgPSB7XHJcbiAgICAgICAgICAgIGlzU2VsZWN0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLl9jb21tb25TZXJ2aWNlLmNsb25lT2JqZWN0KHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtcyksXHJcbiAgICAgICAgICAgIHNvdXJjZUZvbGRlcklkOiB0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaOG6oyB0aMawIG3hu6VjLyBmaWxlLlxyXG4gICAgc2V0TW92ZUV4cGxvcmVySXRlbXMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEubW92aW5nLmlzU2VsZWN0aW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICBzb3VyY2VGb2xkZXJJZDogdGhpcy5kYXRhLm1vdmluZy5zb3VyY2VGb2xkZXJJZCxcclxuICAgICAgICAgICAgdGFyZ2V0Rm9sZGVySWQ6IHRoaXMuZGF0YS5jdXJyZW50Rm9sZGVySWQsXHJcbiAgICAgICAgICAgIGxzdEZpbGVFeHBsb3Jlckl0ZW1zOiB0aGlzLmRhdGEubW92aW5nLnNlbGVjdGVkSXRlbXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9mb2xkZXJTZXJ2aWNlLm1vdmVFeHBsb3Jlckl0ZW1zKG1vZGVsKVxyXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9sZGVyQ29udGVudCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0RpIGNodXnhu4NuIHRow6BuaCBjw7RuZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5tb3ZpbmcgPSB7fTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXBvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQuG7jyBkaSBjaHV54buDbi5cclxuICAgIGNhbmNlbE1vdmUoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLm1vdmluZyA9IHt9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+VkVSU0lPTi5cclxuICAgIG9wZW5GaWxlVmVyc2lvbnMoZmlsZTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZlcnNpb25MaXN0LmZpbGVJZCA9IGZpbGUuaWQ7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybXMuZmlsZVZlcnNpb25MaXN0LnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj5WSUVXIE9OTElORS5cclxuICAgIGVkaXRGaWxlKGZpbGU6IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ8SQYW5nIGvhur90IG7hu5FpIG3hu58g4bupbmcgZOG7pW5nJyk7XHJcbiAgICAgICAgdGhpcy5fZmlsZVZlcnNpb25TZXJ2aWNlLmNyZWF0ZU5ld01pbm9yVmVyc2lvbihmaWxlLmlkLCAnJywgZmFsc2UpXHJcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVWZXJzaW9uID0gPEZpbGVWZXJzaW9uRFRPPnJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gdGhpcy5fZmlsZVZlcnNpb25TZXJ2aWNlLmdldEZpbGVWZXJzaW9uRG93bmxvYWRVcmwoZmlsZVZlcnNpb24uaWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBUbkNsaWVudENvbW1hbmQoKTtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmQuY29tbWFuZFR5cGUgPSBDb21tYW5kVHlwZS5FZGl0RmlsZTtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmQua2V5ID0gdGhpcy5fbW9kdWxlQ29uZmlnLmVudmlyb25tZW50LnNpZ25hbHIuY2xpZW50S2V5O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWRpdEZpbGVDb21tYW5kID0gbmV3IEVkaXRGaWxlQ29tbWFuZCgpO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmZpbGVTZXJ2aWNlRW5kcG9pbnQgPSB0aGlzLl9tb2R1bGVDb25maWcuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludDtcclxuICAgICAgICAgICAgICAgIGVkaXRGaWxlQ29tbWFuZC51cGxvYWRGaWxlQXBpID0gdGhpcy5fZmlsZVZlcnNpb25TZXJ2aWNlLmdldFVwbG9hZEZpbGVWZXJzaW9uQXBpVXJsKCk7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQucmVtb3ZlRmlsZUFwaSA9IHRoaXMuX2ZpbGVWZXJzaW9uU2VydmljZS5nZXRSZW1vdmVGaWxlVmVyc2lvbkFwaVVybCgpO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmZpbGVVcmwgPSBmaWxlVXJsO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmlzRHJhZnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWRpdEZpbGVDb21tYW5kLmdyb3VwRmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQudmVyc2lvbk5hbWUgPSBmaWxlVmVyc2lvbi52ZXJzaW9uTmFtZTtcclxuICAgICAgICAgICAgICAgIGVkaXRGaWxlQ29tbWFuZC5maWxlVmVyc2lvbklkID0gZmlsZVZlcnNpb24uaWQ7XHJcbiAgICAgICAgICAgICAgICBlZGl0RmlsZUNvbW1hbmQuYWNjZXNzVG9rZW4gPSB0aGlzLl9hdXRoZW5TZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgICAgICAgICBjb21tYW5kLmRhdGEgPSBlZGl0RmlsZUNvbW1hbmQ7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdG5DbGllbnRTZXJ2aWNlLnNlbmRDb21tYW5kKGNvbW1hbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hbHJTZXJ2aWNlLnVuU3Vic2NyaWJlVmlld0NvZGUobnVsbCwgJ0ZJTEUuVkVSU0lPTi5VUERBVEVEJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaWduYWxyU2VydmljZS5zdGFydChudWxsLCAnRklMRS5WRVJTSU9OLlVQREFURUQnLCBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2JqOiBhbnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2JqLm1lc3NhZ2UuY29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYmouTWVzc2FnZS5Db250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmdldExpc3RGaWxlcyh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKENvbW1vbkVycm9yQ29kZS5FUlJPUl9TRVJWSUNFX05PVF9SVU4gPT09IGVycm9yLnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93UmVzcG9uc2VFcnJvcigwLCBudWxsLCAnRmlsZScpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxFX0VYUExPUkVSLk1FU1NBR0VfRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxFX0VYUExPUkVSLk1FU1NBR0VfRVJST1JfREVUQUlMJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZmU6IDUwMDBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBCUkVBRENSVU1CUy5cclxuICAgIGFzeW5jIHNldEJyZWFkY3J1bWJzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJzID0gYXdhaXQgdGhpcy5fZm9sZGVyU2VydmljZS5nZXRGdWxsRm9sZGVyUGF0aCh0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzID0gcnMuZGF0YS5tYXAoZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGYuaWQgPT0gdGhpcy5yb290Rm9sZGVySWQgPyB0aGlzLnJvb3RGb2xkZXJOYW1lIDogZi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogZi5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzczogZi5pZCAhPSB0aGlzLmRhdGEuY3VycmVudEZvbGRlcklkID8gJ2ZtLWNsaWNrYWJsZScgOiAnZm0tY3VycmVudC1mb2xkZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9sZGVyQ29udGVudChmLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5icmVhZGNydW1icyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmJyZWFkY3J1bWJzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gU0lHTi5cclxuICAgIC8vIFRPRE86IEzGsHUgw70geOG7rSBsw70gdHLGsOG7nW5nIGRvdWJsZSBjbGljayB2w6BvIG7DunRcclxuICAgIHNpZ25GaWxlKGZpbGU6IEZpbGVFeHBsb3Jlckl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiBrw70gc+G7kSB2xINuIGLhuqNuIG7DoHk/JykudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5nZW5lcmF0ZUxpbmtEb3dubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlLmlkXHJcbiAgICAgICAgICAgICAgICB9IGFzIEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLl9maWxlRXhwbG9yZXJTZXJ2aWNlLmdldERvd25sb2FkRm9yU2lnblVybChycy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm1zID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgcHJtc1snRmlsZVVwbG9hZEhhbmRsZXInXSA9IGAke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS9TaWduYXR1cmUvU2F2ZVBoeXNpY2FsU2lnbmVkRmlsZWA7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJtc1snU2Vzc2lvbklkJ10gPSAnJztcclxuICAgICAgICAgICAgICAgICAgICBwcm1zWydGaWxlTmFtZSddID0gdXJsO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uX3BybXMgPSBKU09OLnN0cmluZ2lmeShwcm1zKTtcclxuICAgICAgICAgICAgICAgICAgICB2Z2NhX3NpZ25fZmlsZShqc29uX3BybXMsIChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRPYmogPSBKU09OLnBhcnNlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRPYmouRmlsZVNlcnZlciAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5zYXZlU2lnbmVkRmlsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRmlsZTogZmlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRmlsZUlkOiByZXN1bHRPYmouRmlsZVNlcnZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbihyc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93U3VjY2VzcygnS8O9IHPhu5EgdGjDoG5oIGPDtG5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzaGFyZUZvbGRlcihmaWxlOiBGaWxlRXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5zaGFyZUZvbGRlci5kYXRhID0gZmlsZTtcclxuICAgICAgICB0aGlzLmZvcm1zLnNoYXJlRm9sZGVyLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNoYXJlRmlsZShmaWxlOiBGaWxlRXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5zaGFyZUZpbGUuZGF0YSA9IGZpbGU7XHJcbiAgICAgICAgdGhpcy5mb3Jtcy5zaGFyZUZpbGUuc2hvdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0RmlsZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlQ29udHJvbC5iYXNpY0ZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVDb250cm9sLmJhc2ljRmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmlld0xpc3RTaWduKGU6IEV2ZW50LCBzaWduYXR1cmVzOiBhbnkpIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuc2lnbmF0dXJlRGV0YWlsLmRhdGEgPSBzaWduYXR1cmVzO1xyXG4gICAgICAgIHRoaXMuZm9ybXMuc2lnbmF0dXJlRGV0YWlsLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUm93U2VsZWN0KGV2dCkge1xyXG4gICAgICAgIHRoaXMub25TZWxlY3RlZC5lbWl0KHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -20,14 +20,14 @@ export class EntityWorkflowHistoryService extends BaseService {
|
|
|
20
20
|
if (service == undefined) {
|
|
21
21
|
(this._injector.get(NotifierService)).showWarning('Bạn chưa đăng ký base service cho entity workflow history');
|
|
22
22
|
}
|
|
23
|
-
this.serviceUri = `${service.endPoint}
|
|
23
|
+
this.serviceUri = `${service.endPoint}/EntityWorkflowHistory`;
|
|
24
24
|
}
|
|
25
25
|
getLastHistory(tableName, filters = []) {
|
|
26
26
|
const service = this.serviceManagers[tableName];
|
|
27
27
|
if (service == undefined) {
|
|
28
28
|
(this._injector.get(NotifierService)).showWarning('Bạn chưa đăng ký base service cho entity workflow history');
|
|
29
29
|
}
|
|
30
|
-
const url = `${service.endPoint}
|
|
30
|
+
const url = `${service.endPoint}/EntityWorkflowHistory/GetLastByFilter`;
|
|
31
31
|
const gridInfo = {
|
|
32
32
|
pageInfo: {
|
|
33
33
|
page: 1,
|
|
@@ -49,4 +49,4 @@ EntityWorkflowHistoryService.ctorParameters = () => [
|
|
|
49
49
|
{ type: Injector },
|
|
50
50
|
{ type: ModuleConfigService }
|
|
51
51
|
];
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXdvcmtmbG93LWhpc3Rvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3NlcnZpY2VzL2VudGl0eS13b3JrZmxvdy1oaXN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFVLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxXQUFXO0lBTXpELFlBQ0ksSUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsb0JBQXlDO1FBRXpDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxlQUFlLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsd0JBQXdCLENBQUMsQ0FBQztRQVZ4TCxlQUFVLEdBQUcsdUJBQXVCLENBQUM7UUFFN0Isb0JBQWUsR0FFbkIsRUFBRSxDQUFDO1FBT0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztRQUV2RixJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBa0IsRUFBRSxPQUFvQjtRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUMvQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsU0FBaUI7UUFDbEMsTUFBTSxPQUFPLEdBQWdCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxPQUFPLElBQUksU0FBUyxFQUFFO1lBQ3RCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUNsSDtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSx3QkFBd0IsQ0FBQztJQUNsRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWlCLEVBQUUsVUFBb0IsRUFBRTtRQUNwRCxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxJQUFJLE9BQU8sSUFBSSxTQUFTLEVBQUU7WUFDdEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQ2xIO1FBQ0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSx3Q0FBd0MsQ0FBQztRQUN4RSxNQUFNLFFBQVEsR0FBRztZQUNiLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsQ0FBQztnQkFDUCxRQUFRLEVBQUUsQ0FBQzthQUNkO1lBQ0QsT0FBTztZQUNQLEtBQUssRUFBRTtnQkFDSCxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ3pDO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7O1lBL0NKLFVBQVU7OztZQVJGLFVBQVU7WUFDRSxRQUFRO1lBRXBCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvbW9kdWxlLWNvbmZpZyc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIFNvcnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEVudGl0eVdvcmtmbG93SGlzdG9yeVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBlbnRpdHlOYW1lID0gJ0VudGl0eVdvcmtmbG93SGlzdG9yeSc7XHJcbiAgICByZWFkb25seSBfbW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWc7XHJcbiAgICBwcml2YXRlIHNlcnZpY2VNYW5hZ2Vyczoge1xyXG4gICAgICAgIFtrZXk6IHN0cmluZ106IEJhc2VTZXJ2aWNlXHJcbiAgICB9ID0ge307XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IsIGAke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi51c2VyT3JnRW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vRW50aXR5V29ya2Zsb3dIaXN0b3J5YCk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi51c2VyT3JnRW5kcG9pbnQ7XHJcblxyXG4gICAgICAgIHRoaXMuX21vZHVsZUNvbmZpZyA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyU2VydmljZShlbnRpdHlOYW1lOiBzdHJpbmcsIHNlcnZpY2U6IEJhc2VTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlTWFuYWdlcnNbZW50aXR5TmFtZV0gPSBzZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEN1cnJlbnRTZXJ2aWNlVXJpKHRhYmxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZTogQmFzZVNlcnZpY2UgPSB0aGlzLnNlcnZpY2VNYW5hZ2Vyc1t0YWJsZU5hbWVdO1xyXG4gICAgICAgIGlmIChzZXJ2aWNlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAodGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkpLnNob3dXYXJuaW5nKCdC4bqhbiBjaMawYSDEkcSDbmcga8O9IGJhc2Ugc2VydmljZSBjaG8gZW50aXR5IHdvcmtmbG93IGhpc3RvcnknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpID0gYCR7c2VydmljZS5lbmRQb2ludH0vRW50aXR5V29ya2Zsb3dIaXN0b3J5YDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYXN0SGlzdG9yeSh0YWJsZU5hbWU6IHN0cmluZywgZmlsdGVyczogRmlsdGVyW10gPSBbXSkge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gdGhpcy5zZXJ2aWNlTWFuYWdlcnNbdGFibGVOYW1lXTtcclxuICAgICAgICBpZiAoc2VydmljZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgKHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpKS5zaG93V2FybmluZygnQuG6oW4gY2jGsGEgxJHEg25nIGvDvSBiYXNlIHNlcnZpY2UgY2hvIGVudGl0eSB3b3JrZmxvdyBoaXN0b3J5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3NlcnZpY2UuZW5kUG9pbnR9L0VudGl0eVdvcmtmbG93SGlzdG9yeS9HZXRMYXN0QnlGaWx0ZXJgO1xyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0ge1xyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgICAgIHNvcnRzOiBbXHJcbiAgICAgICAgICAgICAgICBuZXcgU29ydCh7IGZpZWxkOiAnY3JlYXRlZCcsIGRpcjogMSB9KVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -105,11 +105,11 @@ export class EntityWorkflowSettingService extends BaseService {
|
|
|
105
105
|
}
|
|
106
106
|
saveSetting(settingKey, data) {
|
|
107
107
|
const service = this.serviceManagers[settingKey];
|
|
108
|
-
return this.defaultPost(`${service.endPoint}
|
|
108
|
+
return this.defaultPost(`${service.endPoint}/EntityWorkflowSetting/SaveSetting/${service.entityName}`, data);
|
|
109
109
|
}
|
|
110
110
|
removeSetting(settingKey) {
|
|
111
111
|
const service = this.serviceManagers[settingKey];
|
|
112
|
-
return this.defaultPost(`${service.endPoint}
|
|
112
|
+
return this.defaultPost(`${service.endPoint}/EntityWorkflowSetting/RemoveSetting/${service.entityName}`, {});
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
EntityWorkflowSettingService.decorators = [
|
|
@@ -120,4 +120,4 @@ EntityWorkflowSettingService.ctorParameters = () => [
|
|
|
120
120
|
{ type: Injector },
|
|
121
121
|
{ type: ModuleConfigService }
|
|
122
122
|
];
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXdvcmtmbG93LXNldHRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3NlcnZpY2VzL2VudGl0eS13b3JrZmxvdy1zZXR0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFHbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUdyRSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsV0FBVztJQUt6RCxZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLG9CQUF5QztRQUV6QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZUFBZSxJQUFJLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHdCQUF3QixDQUFDLENBQUM7UUFSaEwsb0JBQWUsR0FFbkIsRUFBRSxDQUFDO1FBT0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztRQUV2RixJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxlQUFlLENB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QUFDLENBQUMsQ0FBQzs0QkFDUCxDQUFDLENBQUMsQ0FBQzt5QkFDTjtxQkFDSjtpQkFDSjtnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxVQUFrQixFQUFFLElBQVM7UUFDckMsTUFBTSxPQUFPLEdBQWdCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHNDQUFzQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUosQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFrQjtRQUM1QixNQUFNLE9BQU8sR0FBZ0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFVBQVUsd0NBQXdDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5SixDQUFDOzs7WUE3SEosVUFBVTs7O1lBVEYsVUFBVTtZQUNFLFFBQVE7WUFLcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW51bUFjdGlvblR5cGUsIFdvcmtmbG93U2V0dGluZyB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvd29ya2Zsb3ctc2NoZW1hJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlXb3JrZmxvd1NldHRpbmdTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG4gICAgcmVhZG9ubHkgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlTWFuYWdlcnM6IHtcclxuICAgICAgICBba2V5OiBzdHJpbmddOiBCYXNlU2VydmljZVxyXG4gICAgfSA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4udXNlck9yZ0VuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0VudGl0eVdvcmtmbG93U2V0dGluZ2ApO1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4udXNlck9yZ0VuZHBvaW50O1xyXG5cclxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclNlcnZpY2Uoc2V0dGluZ0tleTogc3RyaW5nLCBzZXJ2aWNlOiBCYXNlU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZU1hbmFnZXJzW3NldHRpbmdLZXldID0gc2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTZXR0aW5nKHNldHRpbmdLZXk6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IHRoaXMuc2VydmljZU1hbmFnZXJzW3NldHRpbmdLZXldO1xyXG4gICAgICAgIGlmIChzZXJ2aWNlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAodGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkpLnNob3dXYXJuaW5nKCdC4bqhbiBjaMawYSDEkcSDbmcga8O9IGJhc2Ugc2VydmljZSBjaG8gZW50aXR5IHdvcmtmbG93IHNldHRpbmcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0UG9zdChgJHtzZXJ2aWNlLmVuZFBvaW50fS9FbnRpdHlXb3JrZmxvd1NldHRpbmcvR2V0U2V0dGluZy8ke3NlcnZpY2UuZW50aXR5TmFtZX1gLCB7fSlcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1TZXR0aW5nOiBXb3JrZmxvd1NldHRpbmcgPSByZXMuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1TZXR0aW5nICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU2V0dGluZy5zdGF0dXNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TZXR0aW5nLnN0YXR1c2VzLmZvckVhY2goc3RhdHVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMudHJhbmdUaGFpQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudHJhbmdUaGFpQ29udGFpbmVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW46ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy50cmFuZ1RoYWlDb250YWluZXIubWEgPSBzdGF0dXMubWE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy50cmFuZ1RoYWlDb250YWluZXIudGVuID0gc3RhdHVzLnRlbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdHVzLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5vcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob1BoZXBTdWE6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb29wOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3B0aW9ucy5jaG9QaGVwU3VhID0gc3RhdHVzWydjaG9QaGVwU3VhJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5vcHRpb25zLnB1YmxpYyA9IHN0YXR1c1sncHVibGljJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5vcHRpb25zLmlzTG9vcCA9IHN0YXR1c1snaXNMb29wJ107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy51c2VySW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnVzZXJJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZHM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlclZpZXdJZHM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlclR5cGVzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXJDaGFuZ2VTdGF0dXNBdDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudXNlckluZm8udXNlclZpZXdJZHMgPSBzdGF0dXNbJ3VzZXJWaWV3SWRzJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cy51c2VySW5mby51c2VyQ2hhbmdlU3RhdHVzQXQgPSBzdGF0dXNbJ3VzZXJDaGFuZ2VTdGF0dXNBdCddO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMuZ3JvdXBJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZ3JvdXBJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSWRzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwVmlld0lkczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZ3JvdXBJbmZvLmdyb3VwSWRzID0gc3RhdHVzWydncm91cElkcyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZ3JvdXBJbmZvLmdyb3VwVmlld0lkcyA9IHN0YXR1c1snZ3JvdXBWaWV3SWRzJ107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5vcmdJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3JnSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmdJZHM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnVmlld0lkczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3JnSW5mby5vcmdJZHMgPSBzdGF0dXNbJ29yZ0lkcyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3JnSW5mby5vcmdWaWV3SWRzID0gc3RhdHVzWydvcmdWaWV3SWRzJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVNldHRpbmcuc3RhdHVzQWN0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TZXR0aW5nLnN0YXR1c0FjdGlvbnMuZm9yRWFjaChzdGF0dXNBY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNBY3Rpb24uYWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbi50ZW5Db250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24udGVuQ29udGFpbmVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW46ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25UeXBlOiBFbnVtQWN0aW9uVHlwZS5USE9BVF9WT05HX0xBUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24udGVuQ29udGFpbmVyLnRlbiA9IGFjdGlvbi50ZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24udGVuQ29udGFpbmVyLmFjdGlvblR5cGUgPSBhY3Rpb24udHlwZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbi5hY3Rpb25PcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmFjdGlvbk9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdEJ1b2NEaW5oS2VtOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkRpYWxvZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0QnVvY0Nob25Eb25WaTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmFjdGlvbk9wdGlvbnMuYmF0QnVvY0RpbmhLZW0gPSBhY3Rpb25bJ2JhdEJ1b2NEaW5oS2VtJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uYWN0aW9uT3B0aW9ucy5vcGVuRGlhbG9nID0gYWN0aW9uWydvcGVuRGlhbG9nJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uYWN0aW9uT3B0aW9ucy5iYXRCdW9jQ2hvbkRvblZpID0gYWN0aW9uWydiYXRCdW9jQ2hvbkRvblZpJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlU2V0dGluZyhzZXR0aW5nS2V5OiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gdGhpcy5zZXJ2aWNlTWFuYWdlcnNbc2V0dGluZ0tleV07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7c2VydmljZS5lbmRQb2ludH0vJHt0aGlzLl9tb2R1bGVDb25maWcuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vRW50aXR5V29ya2Zsb3dTZXR0aW5nL1NhdmVTZXR0aW5nLyR7c2VydmljZS5lbnRpdHlOYW1lfWAsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNldHRpbmcoc2V0dGluZ0tleTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZTogQmFzZVNlcnZpY2UgPSB0aGlzLnNlcnZpY2VNYW5hZ2Vyc1tzZXR0aW5nS2V5XTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHtzZXJ2aWNlLmVuZFBvaW50fS8ke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9FbnRpdHlXb3JrZmxvd1NldHRpbmcvUmVtb3ZlU2V0dGluZy8ke3NlcnZpY2UuZW50aXR5TmFtZX1gLCB7fSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXdvcmtmbG93LXNldHRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3NlcnZpY2VzL2VudGl0eS13b3JrZmxvdy1zZXR0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFHbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUdyRSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsV0FBVztJQUt6RCxZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLG9CQUF5QztRQUV6QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZUFBZSxJQUFJLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHdCQUF3QixDQUFDLENBQUM7UUFSaEwsb0JBQWUsR0FFbkIsRUFBRSxDQUFDO1FBT0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztRQUV2RixJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxlQUFlLENB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QUFDLENBQUMsQ0FBQzs0QkFDUCxDQUFDLENBQUMsQ0FBQzt5QkFDTjtxQkFDSjtpQkFDSjtnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxVQUFrQixFQUFFLElBQVM7UUFDckMsTUFBTSxPQUFPLEdBQWdCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsc0NBQXNDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQWtCO1FBQzVCLE1BQU0sT0FBTyxHQUFnQixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLHdDQUF3QyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakgsQ0FBQzs7O1lBN0hKLFVBQVU7OztZQVRGLFVBQVU7WUFDRSxRQUFRO1lBS3BCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudW1BY3Rpb25UeXBlLCBXb3JrZmxvd1NldHRpbmcgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3dvcmtmbG93LXNjaGVtYSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvbW9kdWxlLWNvbmZpZyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRW50aXR5V29ya2Zsb3dTZXR0aW5nU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIHJlYWRvbmx5IF9tb2R1bGVDb25maWc6IE1vZHVsZUNvbmZpZztcclxuICAgIHByaXZhdGUgc2VydmljZU1hbmFnZXJzOiB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogQmFzZVNlcnZpY2VcclxuICAgIH0gPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLnVzZXJPcmdFbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9FbnRpdHlXb3JrZmxvd1NldHRpbmdgKTtcclxuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLnVzZXJPcmdFbmRwb2ludDtcclxuXHJcbiAgICAgICAgdGhpcy5fbW9kdWxlQ29uZmlnID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJTZXJ2aWNlKHNldHRpbmdLZXk6IHN0cmluZywgc2VydmljZTogQmFzZVNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2VNYW5hZ2Vyc1tzZXR0aW5nS2V5XSA9IHNlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhzZXR0aW5nS2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZTogQmFzZVNlcnZpY2UgPSB0aGlzLnNlcnZpY2VNYW5hZ2Vyc1tzZXR0aW5nS2V5XTtcclxuICAgICAgICBpZiAoc2VydmljZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgKHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpKS5zaG93V2FybmluZygnQuG6oW4gY2jGsGEgxJHEg25nIGvDvSBiYXNlIHNlcnZpY2UgY2hvIGVudGl0eSB3b3JrZmxvdyBzZXR0aW5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFBvc3QoYCR7c2VydmljZS5lbmRQb2ludH0vRW50aXR5V29ya2Zsb3dTZXR0aW5nL0dldFNldHRpbmcvJHtzZXJ2aWNlLmVudGl0eU5hbWV9YCwge30pXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2V0dGluZzogV29ya2Zsb3dTZXR0aW5nID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU2V0dGluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVNldHRpbmcuc3RhdHVzZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2V0dGluZy5zdGF0dXNlcy5mb3JFYWNoKHN0YXR1cyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdHVzLnRyYW5nVGhhaUNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnRyYW5nVGhhaUNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVuOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudHJhbmdUaGFpQ29udGFpbmVyLm1hID0gc3RhdHVzLm1hO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudHJhbmdUaGFpQ29udGFpbmVyLnRlbiA9IHN0YXR1cy50ZW47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9QaGVwU3VhOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9vcDogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9wdGlvbnMuY2hvUGhlcFN1YSA9IHN0YXR1c1snY2hvUGhlcFN1YSddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3B0aW9ucy5wdWJsaWMgPSBzdGF0dXNbJ3B1YmxpYyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub3B0aW9ucy5pc0xvb3AgPSBzdGF0dXNbJ2lzTG9vcCddO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMudXNlckluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy51c2VySW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySWRzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJWaWV3SWRzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXJUeXBlczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyQ2hhbmdlU3RhdHVzQXQ6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnVzZXJJbmZvLnVzZXJWaWV3SWRzID0gc3RhdHVzWyd1c2VyVmlld0lkcyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMudXNlckluZm8udXNlckNoYW5nZVN0YXR1c0F0ID0gc3RhdHVzWyd1c2VyQ2hhbmdlU3RhdHVzQXQnXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdHVzLmdyb3VwSW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmdyb3VwSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cElkczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cFZpZXdJZHM6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmdyb3VwSW5mby5ncm91cElkcyA9IHN0YXR1c1snZ3JvdXBJZHMnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmdyb3VwSW5mby5ncm91cFZpZXdJZHMgPSBzdGF0dXNbJ2dyb3VwVmlld0lkcyddO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMub3JnSW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9yZ0luZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnSWRzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZ1ZpZXdJZHM6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9yZ0luZm8ub3JnSWRzID0gc3RhdHVzWydvcmdJZHMnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9yZ0luZm8ub3JnVmlld0lkcyA9IHN0YXR1c1snb3JnVmlld0lkcyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1TZXR0aW5nLnN0YXR1c0FjdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2V0dGluZy5zdGF0dXNBY3Rpb25zLmZvckVhY2goc3RhdHVzQWN0aW9uID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQWN0aW9uLmFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb24udGVuQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnRlbkNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVuOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZTogRW51bUFjdGlvblR5cGUuVEhPQVRfVk9OR19MQVBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnRlbkNvbnRhaW5lci50ZW4gPSBhY3Rpb24udGVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnRlbkNvbnRhaW5lci5hY3Rpb25UeXBlID0gYWN0aW9uLnR5cGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb24uYWN0aW9uT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5hY3Rpb25PcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRCdW9jRGluaEtlbTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5EaWFsb2c6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdEJ1b2NDaG9uRG9uVmk6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5hY3Rpb25PcHRpb25zLmJhdEJ1b2NEaW5oS2VtID0gYWN0aW9uWydiYXRCdW9jRGluaEtlbSddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmFjdGlvbk9wdGlvbnMub3BlbkRpYWxvZyA9IGFjdGlvblsnb3BlbkRpYWxvZyddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmFjdGlvbk9wdGlvbnMuYmF0QnVvY0Nob25Eb25WaSA9IGFjdGlvblsnYmF0QnVvY0Nob25Eb25WaSddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVNldHRpbmcoc2V0dGluZ0tleTogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IHRoaXMuc2VydmljZU1hbmFnZXJzW3NldHRpbmdLZXldO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3NlcnZpY2UuZW5kUG9pbnR9L0VudGl0eVdvcmtmbG93U2V0dGluZy9TYXZlU2V0dGluZy8ke3NlcnZpY2UuZW50aXR5TmFtZX1gLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVTZXR0aW5nKHNldHRpbmdLZXk6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gdGhpcy5zZXJ2aWNlTWFuYWdlcnNbc2V0dGluZ0tleV07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7c2VydmljZS5lbmRQb2ludH0vRW50aXR5V29ya2Zsb3dTZXR0aW5nL1JlbW92ZVNldHRpbmcvJHtzZXJ2aWNlLmVudGl0eU5hbWV9YCwge30pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|