@arsedizioni/ars-utils 18.2.496 → 18.2.500
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/clipper.ui/ui/document-menu/document-menu.component.d.ts +1 -1
- package/esm2022/evolution.common/common/definitions.mjs +12 -1
- package/esm2022/evolution.common/common/services/evolution.service.mjs +2 -2
- package/evolution.common/common/definitions.d.ts +70 -2
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +13 -2
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -12,7 +12,7 @@ export declare class ClipperDocumentMenuComponent implements OnInit, OnDestroy {
|
|
|
12
12
|
protected unsubscribe: Subject<void>;
|
|
13
13
|
protected changeDetector: ChangeDetectorRef;
|
|
14
14
|
useSelections: import("@angular/core").InputSignal<boolean>;
|
|
15
|
-
selectionSource: import("@angular/core").InputSignal<"
|
|
15
|
+
selectionSource: import("@angular/core").InputSignal<"none" | "bag" | "selection">;
|
|
16
16
|
protected selection: () => ClipperDocumentInfo[];
|
|
17
17
|
parent: import("@angular/core").InputSignal<ClipperSearchResultManager>;
|
|
18
18
|
item: import("@angular/core").InputSignal<ClipperDocumentInfo>;
|
|
@@ -4,6 +4,17 @@ export var EvolutionServiceFlags;
|
|
|
4
4
|
EvolutionServiceFlags[EvolutionServiceFlags["NotifySystemErrors"] = 1] = "NotifySystemErrors";
|
|
5
5
|
EvolutionServiceFlags[EvolutionServiceFlags["DisplayConnectionStateMessages"] = 2] = "DisplayConnectionStateMessages";
|
|
6
6
|
})(EvolutionServiceFlags || (EvolutionServiceFlags = {}));
|
|
7
|
+
export var ERPModule;
|
|
8
|
+
(function (ERPModule) {
|
|
9
|
+
ERPModule[ERPModule["Formazione"] = 1] = "Formazione";
|
|
10
|
+
ERPModule[ERPModule["DPI"] = 2] = "DPI";
|
|
11
|
+
ERPModule[ERPModule["SorveglianzaSanitaria"] = 4] = "SorveglianzaSanitaria";
|
|
12
|
+
ERPModule[ERPModule["RegistroEScadenzario"] = 8] = "RegistroEScadenzario";
|
|
13
|
+
ERPModule[ERPModule["AttrezzatureEImpianti"] = 16] = "AttrezzatureEImpianti";
|
|
14
|
+
ERPModule[ERPModule["Monitoraggio"] = 32] = "Monitoraggio";
|
|
15
|
+
ERPModule[ERPModule["Bollettino"] = 64] = "Bollettino";
|
|
16
|
+
ERPModule[ERPModule["Documenti"] = 128] = "Documenti";
|
|
17
|
+
})(ERPModule || (ERPModule = {}));
|
|
7
18
|
export var ERPComplianceLawsSelectionType;
|
|
8
19
|
(function (ERPComplianceLawsSelectionType) {
|
|
9
20
|
ERPComplianceLawsSelectionType[ERPComplianceLawsSelectionType["Analysis"] = 1] = "Analysis";
|
|
@@ -361,4 +372,4 @@ export const RecurrenceFrequencyTypes = [
|
|
|
361
372
|
{ name: 'Mesi', value: ERPRecurrenceFrequencyType.Month },
|
|
362
373
|
{ name: 'Giorni', value: ERPRecurrenceFrequencyType.Day },
|
|
363
374
|
];
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvZXZvbHV0aW9uLmNvbW1vbi9jb21tb24vZGVmaW5pdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFOLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixpRUFBUSxDQUFBO0lBQ1IsNkZBQXNCLENBQUE7SUFDdEIscUhBQXVDLENBQUE7QUFFekMsQ0FBQyxFQUxXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFLaEM7QUFHRCxNQUFNLENBQU4sSUFBWSw4QkFHWDtBQUhELFdBQVksOEJBQThCO0lBQ3hDLDJGQUFZLENBQUE7SUFDWiwyRkFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLDhCQUE4QixLQUE5Qiw4QkFBOEIsUUFHekM7QUFFRCxNQUFNLENBQU4sSUFBWSx3QkFPWDtBQVBELFdBQVksd0JBQXdCO0lBQ2xDLHVFQUFRLENBQUE7SUFDUiw2RUFBVyxDQUFBO0lBQ1gsNkVBQWdCLENBQUE7SUFDaEIsaUZBQWtCLENBQUE7SUFDbEIsK0VBQWlCLENBQUE7SUFDakIsZ0ZBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFPbkM7QUFFRCxNQUFNLENBQU4sSUFBWSx5QkFHWDtBQUhELFdBQVkseUJBQXlCO0lBRW5DLDBJQUE2QyxDQUFBO0FBQy9DLENBQUMsRUFIVyx5QkFBeUIsS0FBekIseUJBQXlCLFFBR3BDO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBYVg7QUFiRCxXQUFZLGtCQUFrQjtJQUM1QiwyREFBUSxDQUFBO0lBQ1IseUVBQWUsQ0FBQTtJQUNmLCtEQUFlLENBQUE7SUFDZix1RUFBbUIsQ0FBQTtJQUNuQiwrREFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLDBFQUFvQixDQUFBO0lBQ3BCLGtFQUFnQixDQUFBO0lBQ2hCLDZFQUFxQixD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LEVBQUUsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEtBQUssRUFBRTtJQUN6RCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEdBQUcsRUFBRTtDQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9naW5SZXN1bHQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2dpbk9BdXRoVHlwZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWkub2F1dGgnO1xyXG5cclxuZXhwb3J0IGVudW0gRXZvbHV0aW9uU2VydmljZUZsYWdzIHtcclxuICBOb25lID0gMCxcclxuICBOb3RpZnlTeXN0ZW1FcnJvcnMgPSAxLFxyXG4gIERpc3BsYXlDb25uZWN0aW9uU3RhdGVNZXNzYWdlcyA9IDEgPDwgMVxyXG4gIFxyXG59XHJcblxyXG5cclxuZXhwb3J0IGVudW0gRVJQQ29tcGxpYW5jZUxhd3NTZWxlY3Rpb25UeXBlIHtcclxuICBBbmFseXNpcyA9IDEsXHJcbiAgQWN0aXZpdHkgPSAyLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlUHJvZmlsZVJvbGUge1xyXG4gIE5vbmUgPSAwLFxyXG4gIEFuYWx5c3QgPSAxLFxyXG4gIFBsYW5uZXIgPSAxIDw8IDEsXHJcbiAgVmFsaWRhdG9yID0gMSA8PCAyLFxyXG4gIEV4ZWN1dG9yID0gMSA8PCAzLFxyXG4gIE9ic2VydmVyID0gMSA8PCA0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlUHJvZmlsZUZsYWdzIHtcclxuXHJcbiAgT3ZlcnJpZGVOb3RpZmljYXRpb25SZWdpc3RlclNldHRpbmdzID0gMSA8PCA0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlU2NvcGUge1xyXG4gIE5vbmUgPSAwLFxyXG4gIEVudmlyb25tZW50ID0gMSxcclxuICBTYWZldHkgPSAxIDw8IDEsXHJcbiAgRm9vZFNhZmV0eSA9IDEgPDwgMixcclxuICBFbmVyZ3kgPSAxIDw8IDMsXHJcbiAgSGVhbHRoID0gMSA8PCA0LFxyXG4gIE1haW50ZW5hbmNlID0gMSA8PCA1LFxyXG4gIFF1YWxpdHkgPSAxIDw8IDYsXHJcbiAgT3JnYW5pemF0aW9uID0gMSA8PCA3LFxyXG4gIExvZ2lzdGljcyA9IDEgPDwgOCxcclxuICBGYWNpbGl0eSA9IDEgPDwgOSxcclxuICBTZWN1cml0eSA9IDEgPDwgMTBcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRVJQQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxpbWl0IHtcclxuICBOb25lID0gMCxcclxuICBQbGFubmVyT25seSA9IDEsXHJcbiAgRXhlY3V0b3JPbmx5ID0gMixcclxuICBCb3RoID0gMyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZSB7XHJcbiAgTm9uZSA9IDAsXHJcbiAgTmV3QW5hbHlzaXMgPSAxLFxyXG4gIEFuYWx5c2lzQ29tcGxldGVkID0gMSA8PCAxLFxyXG4gIEFuYWx5c2lzTm90aWNlUGVyaW9kU3RhcnRlZCA9IDEgPDwgMixcclxuICBBbmFseXNpc1BlcmlvZEV4cGlyZWQgPSAxIDw8IDMsXHJcbiAgQW5hbHlzaXNMYXdDaGFuZ2VkID0gMSA8PCAxNCxcclxuICBOZXdQbGFubmluZyA9IDEgPDwgMTMsXHJcbiAgUGxhbm5pbmdDb21wbGV0ZWQgPSAxIDw8IDQsXHJcbiAgUGxhbm5pbmdOb3RpY2VQZXJpb2RTdGFydGVkID0gMSA8PCA1LFxyXG4gIFBsYW5uaW5nUGVyaW9kRXhwaXJlZCA9IDEgPDwgNixcclxuICBOZXdWYWxpZGF0aW9uID0gMSA8PCAxNSxcclxuICBWYWxpZGF0aW9uQ29tcGxldGVkID0gMSA8PCA3LFxyXG4gIFZhbGlkYXRpb25Ob3RpY2VQZXJpb2RTdGFydGVkID0gMSA8PCA4LFxyXG4gIFZhbGlkYXRpb25QZXJpb2RFeHBpcmVkID0gMSA8PCA5LFxyXG4gIE5ld0RlYWRsaW5lID0gMSA8PCAxNixcclxuICBEZWFkbGluZU5vdGljZVBlcmlvZFN0YXJ0ZWQgPSAxIDw8IDEwLFxyXG4gIERlYWRsaW5lRXhwaXJlZCA9IDEgPDwgMTEsXHJcbiAgQWN0aXZpdHlDb21wbGV0ZWQgPSAxIDw8IDEyLFxyXG4gIC8vTmV3Tm9uY29tcGxpYW5jZSA9IDEgPDwgMTcsXHJcbiAgLy9Ob25Db21wbGlhbmNlTm90aWNlUGVyaW9kU3RhcnRlZCA9IDEgPDwgMTgsXHJcbiAgLy9Ob25Db21wbGlhbmNlUGVyaW9kRXhwaXJlZCA9IDEgPDwgMTksXHJcbiAgLy9Ob25Db21wbGlhbmNlQ29tcGxldGVkID0gMSA8PCAyMCxcclxuICBMYXdDaGFuZ2VkID0gMSA8PCAyMSxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRVJQQ29tcGxpYW5jZVJlZ2lzdGVyU2l0ZUltcG9ydE9wdGlvbnNcclxue1xyXG4gICAgQ29weUF0dGFjaG1lbnRzID0gMSxcclxuICAgIEtlZXBPcmlnaW5hbERhdGVzID0gMSA8PCAxLFxyXG4gICAgRHVwbGljYXRlTGF3cyA9ICAxIDw8IDIsXHJcbiAgICBEaXNjYXJkTm90QXBwbGljYWJsZXMgPSAxIDw8IDNcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFByb2ZpbGVSb2xlcyA9IFtcclxuICB7IG5hbWU6ICdBbmFsaXN0YScsIHZhbHVlOiBFUlBDb21wbGlhbmNlUHJvZmlsZVJvbGUuQW5hbHlzdCB9LFxyXG4gIHsgbmFtZTogJ0dlc3RvcmUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVByb2ZpbGVSb2xlLlBsYW5uZXIgfSxcclxuICAvL3sgbmFtZTogJ1ZhbGlkYXRvcmUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVByb2ZpbGVSb2xlLlZhbGlkYXRvciB9LFxyXG4gIHsgbmFtZTogJ0VzZWN1dG9yZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlUHJvZmlsZVJvbGUuRXhlY3V0b3IgfSxcclxuICB7IG5hbWU6ICdPc3NlcnZhdG9yZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlUHJvZmlsZVJvbGUuT2JzZXJ2ZXIgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBQcm9maWxlRmxhZ3MgPSBbXHJcbiAgeyBuYW1lOiAnRGVyb2doZSBlIGxpbWl0YXppb25pJywgZGl2aWRlcjogdHJ1ZSB9LFxyXG4gIHtcclxuICAgIG5hbWU6XHJcbiAgICAgICdRdWVzdG8gcHJvZmlsbyByaWNldmUgcmVnb2xhcm1lbnRlIGxlIG5vdGlmaWNoZSBpbmRpcGVuZGVudGVtZW50ZSBkYWxsYSBjb25maWd1cmF6aW9uZSBnZW5lcmFsZSBkZWwgcmVnaXN0cm8nLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VQcm9maWxlRmxhZ3MuT3ZlcnJpZGVOb3RpZmljYXRpb25SZWdpc3RlclNldHRpbmdzLFxyXG4gIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgU2NvcGVzID0gW1xyXG4gIHsgbmFtZTogJ0FtYmllbnRlJywgdmFsdWU6IEVSUENvbXBsaWFuY2VTY29wZS5FbnZpcm9ubWVudCB9LFxyXG4gIHsgbmFtZTogJ1NhbHV0ZSBlIHNpY3VyZXp6YScsIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuU2FmZXR5IH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ1NpY3VyZXp6YSBhbGltZW50YXJlJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuRm9vZFNhZmV0eSxcclxuICB9LFxyXG4gIHsgbmFtZTogJ0VuZXJnaWEnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLkVuZXJneSB9LFxyXG4gIHsgbmFtZTogJ1NlcnZpemkgZ2VuZXJhbGknLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLkZhY2lsaXR5IH0sXHJcbiAgeyBuYW1lOiAnTWFudXRlbnppb25lJywgdmFsdWU6IEVSUENvbXBsaWFuY2VTY29wZS5NYWludGVuYW5jZSB9LFxyXG4gIHsgbmFtZTogJ1F1YWxpdMOgJywgdmFsdWU6IEVSUENvbXBsaWFuY2VTY29wZS5RdWFsaXR5IH0sXHJcbiAgeyBuYW1lOiAnT3JnYW5penphemlvbmUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLk9yZ2FuaXphdGlvbiB9LFxyXG4gIHsgbmFtZTogJ0xvZ2lzdGljYScsIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuTG9naXN0aWNzIH0sXHJcbiAgeyBuYW1lOiAnU2VjdXJpdHknLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLlNlY3VyaXR5IH0sXHJcbiAgIFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IE5vdGlmaWNhdGlvbkxpbWl0cyA9IFtcclxuICB7IG5hbWU6ICdOZXNzdW5hIGxpbWl0YXppb25lJywgdmFsdWU6IEVSUENvbXBsaWFuY2VOb3RpZmljYXRpb25MaW1pdC5Ob25lIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ1NvbG8gZ2VzdG9yZSBjaGUgaGEgcGlhbmlmaWNhdG8nLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VOb3RpZmljYXRpb25MaW1pdC5QbGFubmVyT25seSxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6IFwiU29sbyBhbGwnaW5jYXJpY2F0byBkZXNpZ25hdG9cIixcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlTm90aWZpY2F0aW9uTGltaXQuRXhlY3V0b3JPbmx5LFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ1NvbG8gYSBnZXN0b3JlIGUgaW5jYXJpY2F0byBkZXNpZ25hdG8nLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VOb3RpZmljYXRpb25MaW1pdC5Cb3RoLFxyXG4gIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgTm90aWZpY2F0aW9ucyA9IFtcclxuICB7IG5hbWU6ICdWZXJpZmljYSBhcHBsaWNhYmlsaXTDoCBlIGFuYWxpc2knLCBkaXZpZGVyOiB0cnVlIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ1JpY2hpZXN0YSBhbmFsaXNpJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLk5ld0FuYWx5c2lzLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJQcmVhdnZpc286IHN0YSBwZXIgc2NhZGVyZSBpbCB0ZXJtaW5lIGZpc3NhdG8gcGVyIGwnYW5hbGlzaVwiLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuQW5hbHlzaXNOb3RpY2VQZXJpb2RTdGFydGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJBbGxhcm1lOiDDqCBzY2FkdXRvIGlsIHRlcm1pbmUgZmlzc2F0byBwZXIgbCdhbmFsaXNpXCIsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5BbmFseXNpc1BlcmlvZEV4cGlyZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQW5hbGlzaSBjb21wbGV0YXRhJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLkFuYWx5c2lzQ29tcGxldGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0F2dmlzbyBub3JtYSBtb2RpZmljYXRhIGRhbCBsZWdpc2xhdG9yZScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5BbmFseXNpc0xhd0NoYW5nZWQsXHJcbiAgfSxcclxuICB7IG5hbWU6ICdQaWFuaWZpY2F6aW9uaScsIGRpdmlkZXI6IHRydWUgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnUmljaGllc3RhIGdlc3Rpb25lJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLk5ld1BsYW5uaW5nLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ1ByZWF2dmlzbzogc3RhIHBlciBzY2FkZXJlIGlsIHRlcm1pbmUgZmlzc2F0byBwZXIgbGEgZ2VzdGlvbmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuUGxhbm5pbmdOb3RpY2VQZXJpb2RTdGFydGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FsbGFybWU6IMOoIHNjYWR1dG8gaWwgdGVybWluZSBmaXNzYXRvIHBlciBsYSBnZXN0aW9uZScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5QbGFubmluZ1BlcmlvZEV4cGlyZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnR2VzdGlvbmUgY29tcGxldGF0YScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5QbGFubmluZ0NvbXBsZXRlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBdHRpdml0w6AgY29tcGxldGF0YScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5BY3Rpdml0eUNvbXBsZXRlZCxcclxuICB9LFxyXG4gIC8qeyBuYW1lOiAnR2VzdGlvbmUgbm9uIGNvbmZvcm1pdMOgJywgZGl2aWRlcjogdHJ1ZSB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBcGVydHVyYSBub24gY29tZm9ybWl0w6AnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuTmV3Tm9uY29tcGxpYW5jZSxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6XHJcbiAgICAgIFwiUHJlYXZ2aXNvOiBzdGEgcGVyIHNjYWRlcmUgaWwgdGVybWluZSBmaXNzYXRvIHBlciBsJ2F6aW9uZSBjb3JyZXR0aXZhXCIsXHJcbiAgICB2YWx1ZTpcclxuICAgICAgRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5Ob25Db21wbGlhbmNlTm90aWNlUGVyaW9kU3RhcnRlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6IFwiQWxsYXJtZTogw6ggc2NhZHV0byBpbCB0ZXJtaW5lIGZpc3NhdG8gcGVyIGwnYXppb25lIGNvcnJldHRpdmFcIixcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLk5vbkNvbXBsaWFuY2VQZXJpb2RFeHBpcmVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0NoaXVzdXJhIG5vbiBjb25mb3JtaXTDoCcsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5Ob25Db21wbGlhbmNlQ29tcGxldGVkLFxyXG4gIH0sKi9cclxuICAvKnsgbmFtZTogJ0FwcHJvdmF6aW9uaScsIGRpdmlkZXI6IHRydWUgfSxcclxuICB7IG5hbWU6ICdSaWNoaWVzdGEgYXBwcm92YXppb25lJywgdmFsdWU6IDEgPDwgMTQgfSxcclxuICB7XHJcbiAgICBuYW1lOiBcIlByZWF2dmlzbzogc3RhIHBlciBzY2FkZXJlIGlsIHRlcm1pbmUgZmlzc2F0byBwZXIgbCdhcHByb3ZhemlvbmVcIixcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLlZhbGlkYXRpb25Ob3RpY2VQZXJpb2RTdGFydGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJBbGxhcm1lOiDDqCBzY2FkdXRvIGlsIHRlcm1pbmUgZmlzc2F0byBwZXIgbCdhcHByb3ZhemlvbmVcIixcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLlZhbGlkYXRpb25QZXJpb2RFeHBpcmVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FwcHJvdmF6aW9uZSBjb25jZXNzYSBvIG5lZ2F0YScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5WYWxpZGF0aW9uQ29tcGxldGVkLFxyXG4gIH0sKi9cclxuICB7IG5hbWU6ICdTY2FkZW56ZScsIGRpdmlkZXI6IHRydWUgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnUHJlYXZ2aXNvOiAxwrAgcHJvbWVtb3JpYSBzdWxsYSBkYXRhIGRpIHNjYWRlbnphJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLk5ld1ZhbGlkYXRpb24sXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQXZ2aXNvOiAywrAgcHJvbWVtb3JpYSBzdWxsYSBkYXRhIGRpIHNjYWRlbnphJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLkRlYWRsaW5lTm90aWNlUGVyaW9kU3RhcnRlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBbGxhcm1lOiDDqCBzY2FkdXRvIGlsIHRlcm1pbmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuRGVhZGxpbmVFeHBpcmVkLFxyXG4gIH0sXHJcbiAgeyBuYW1lOiAnTm9ybWUgY29sbGVnYXRlJywgZGl2aWRlcjogdHJ1ZSB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdNb2RpZmljYSBvIGFicm9nYXppb25lJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLkxhd0NoYW5nZWQsXHJcbiAgfSxcclxuXHJcbl07XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlTGF3U3RhdGUge1xyXG4gIEFwcGxpY2FibGVPckFrbm93bGVkZ2VkID0gMSxcclxuICBOb3RBcHBsaWNhYmxlID0gMixcclxuICBOb3RBbmFseXplZCA9IDMsXHJcbiAgRXhwaXJlZEFuYWx5c2lzID0gNCxcclxuICBVcGRhdGVkTGF3cyA9IDUsXHJcbiAgQW5hbHl6ZWQgPSA2LFxyXG4gIEFicm9nYXRlZCA9IDcsXHJcbiAgQXBwbGljYWJsZSA9IDgsXHJcbiAgQWtub3dsZWRnZWQgPSA5XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVSUENvbXBsaWFuY2VMYXdPcmlnaW4ge1xyXG4gIE5hdGlvbmFsID0gMSxcclxuICBFVSA9IDIsXHJcbiAgUmVnaW9uYWwgPSAzLFxyXG4gIExvY2FsID0gNCxcclxuICBUZWNobmljYWwgPSA1LFxyXG4gIFZvdWxvbnRhcnkgPSA2LFxyXG4gIEludGVybmFsID0gNyxcclxuICBPdGhlciA9IDgsXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMYXdTdGF0ZXMgPSBbXHJcbiAgeyBuYW1lOiAnQXBwbGljYWJpbGUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd1N0YXRlLkFwcGxpY2FibGUgfSxcclxuICB7IG5hbWU6ICdEYSBjb25vc2NlcmUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd1N0YXRlLkFrbm93bGVkZ2VkIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FwcGxpY2FiaWxlIC8gZGEgY29ub3NjZXJlJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuQXBwbGljYWJsZU9yQWtub3dsZWRnZWQsXHJcbiAgfSxcclxuICB7IG5hbWU6ICdOb24gYXBwbGljYWJpbGUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd1N0YXRlLk5vdEFwcGxpY2FibGUgfSxcclxuICB7IG5hbWU6ICdBYnJvZ2F0YScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuQWJyb2dhdGVkIH0sXHJcbiAgeyBuYW1lOiAnQW5hbGl6emF0YScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuQW5hbHl6ZWQgfSxcclxuICB7IG5hbWU6ICdEYSBkZWZpbmlyZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuTm90QW5hbHl6ZWQgfSwgIFxyXG4gIHsgbmFtZTogJ0luIHJpdGFyZG8nLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd1N0YXRlLkV4cGlyZWRBbmFseXNpcyB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdDb24gYWdnaW9ybmFtZW50aSBwZW5kZW50aScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd1N0YXRlLlVwZGF0ZWRMYXdzLFxyXG4gIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgTGF3T3JpZ2lucyA9IFtcclxuICB7IG5hbWU6ICdOYXppb25hbGUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd09yaWdpbi5OYXRpb25hbCB9LFxyXG4gIHsgbmFtZTogJ0NvbXVuaXRhcmlhJywgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdPcmlnaW4uRVUgfSxcclxuICB7IG5hbWU6ICdSZWdpb25hbGUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd09yaWdpbi5SZWdpb25hbCB9LFxyXG4gIHsgbmFtZTogJ0xvY2FsZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLkxvY2FsIH0sXHJcbiAgeyBuYW1lOiAnVGVjbmljYScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLlRlY2huaWNhbCB9LFxyXG4gIHsgbmFtZTogJ0ludGVybmEnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd09yaWdpbi5JbnRlcm5hbCB9LFxyXG4gIHsgbmFtZTogJ1ZvbG9udGFyaWEnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd09yaWdpbi5Wb3Vsb250YXJ5IH0sXHJcbiAgeyBuYW1lOiAnQWx0cm8nLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd09yaWdpbi5PdGhlciB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IExhd0NoYW5nZVN0YXRlcyA9IFtcclxuICB7IG5hbWU6ICdBcGVydG8nLCB2YWx1ZTogMSB9LFxyXG4gIHsgbmFtZTogJ0NoaXVzbycsIHZhbHVlOiAyIH0sXHJcbl07XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlQWN0aXZpdHlTdGF0ZSB7XHJcbiAgTm90UGxhbm5lZCA9IDEgPDwgNyxcclxuICBDbG9zZWQgPSAxIDw8IDIsICBcclxuICBFeHBpcmVkID0gMSA8PCAzLFxyXG4gIFBsYW5uZWQgPSAxIDw8IDgsXHJcbiAgQ2FuY2VsbGVkID0gMSA8PCA5LFxyXG4gIFVwZGF0ZWRMYXdzID0gMSA8PCAxMCxcclxuICBBbHJlYWR5TWFuYWdlZCA9IDEgPDwgMTFcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFjdGl2aXR5U3RhdGVzID0gWyBcclxuICB7XHJcbiAgICBuYW1lOiAnRGEgZGVmaW5pcmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlLk5vdFBsYW5uZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnUGlhbmlmaWNhdGEnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlLlBsYW5uZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQ2hpdXNhJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlQWN0aXZpdHlTdGF0ZS5DbG9zZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnSW4gcml0YXJkbycsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZUFjdGl2aXR5U3RhdGUuRXhwaXJlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBbm51bGxhdGEnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlLkNhbmNlbGxlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdHZXN0aXRhIHNlcGFyYXRhbWVudGUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlLkFscmVhZHlNYW5hZ2VkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0NvbiBhZ2dpb3JuYW1lbnRpIHBlbmRlbnRpJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlQWN0aXZpdHlTdGF0ZS5VcGRhdGVkTGF3cyxcclxuICB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9ibGlnYXRpb25UeXBlcyA9IFtcclxuICB7IG5hbWU6ICdBdXRvcml6emF6aW9uZScsIHZhbHVlOiAxIH0sXHJcbiAgeyBuYW1lOiAnVmVyaWZpY2hlIHBlcmlvZGljaGUgbWFudXRlbnRpdmUnLCB2YWx1ZTogMiB9LFxyXG4gIHsgbmFtZTogJ01pc3VyZSBvcmdhbml6emF0aXZlJywgdmFsdWU6IDMgfSxcclxuICB7IG5hbWU6ICdDb250cm9sbGkgZSBtaXN1cmF6aW9uaScsIHZhbHVlOiA0IH0sXHJcbiAgeyBuYW1lOiAnRW50cmF0YSBpbiB2aWdvcmUnLCB2YWx1ZTogNSB9LFxyXG4gIHsgbmFtZTogJ0RvY3VtZW50aSBhemllbmRhbGkgb2JibGlnYXRvcmknLCB2YWx1ZTogNiB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBbHRyaSBhZGVtcGltZW50aSBmb3JtYWxpIChjb211bmljYXppb25pLCBkaWNoaWFyYXppb25pLCBlY2MuLi4pJyxcclxuICAgIHZhbHVlOiA3LFxyXG4gIH0sXHJcbiAgeyBuYW1lOiAnQWx0cm8nLCB2YWx1ZTogOTkgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBPYmxpZ2F0aW9uQXV0aG9yaXRpZXMgPSBbXHJcbiAgeyBuYW1lOiAnQWdlbnppYSBFQ0hBJywgdmFsdWU6IDEgfSxcclxuICB7IG5hbWU6ICdBbGJvIE5hemlvbmFsZSBkZWkgR2VzdG9yaSBBbWJpZW50YWxpJywgdmFsdWU6IDIgfSxcclxuICB7IG5hbWU6ICdBUlBBJywgdmFsdWU6IDQgfSxcclxuICB7IG5hbWU6ICdBU0wnLCB2YWx1ZTogNSB9LFxyXG4gIHsgbmFtZTogJ0NhbWVyYSBkaSBDb21tZXJjaW8nLCB2YWx1ZTogOCB9LFxyXG4gIHsgbmFtZTogJ0NvbWFuZG8gcHJvdmluY2lhbGUgZGVpIFZpZ2lsaSBkZWwgRnVvY28nLCB2YWx1ZTogMTAgfSxcclxuICB7IG5hbWU6ICdDb211bmUnLCB2YWx1ZTogMTMgfSxcclxuICB7IG5hbWU6ICdDb25zb3J6aSBnZXN0aW9uZSByaWZpdXRpIHBhcnRpY29sYXJpJywgdmFsdWU6IDE0IH0sXHJcbiAgeyBuYW1lOiAnR2VzdG9yZSBkZWwgc2Vydml6aW8nLCB2YWx1ZTogMjEgfSxcclxuICB7IG5hbWU6ICdHZXN0b3JlIGRlbGxhIHJldGUgZGkgdHJhc21pc3Npb25lIG5hemlvbmFsZScsIHZhbHVlOiAyMiB9LFxyXG4gIHsgbmFtZTogJ0lOQUlMIC0gSVBTRU1BIC0gSVNQRVNMJywgdmFsdWU6IDIzIH0sXHJcbiAgeyBuYW1lOiAnSVNQUkEnLCB2YWx1ZTogMjYgfSxcclxuICB7IG5hbWU6ICdNaW5pc3Rlcm8nLCB2YWx1ZTogMjcgfSxcclxuICB7IG5hbWU6ICdHZW5pbyBjaXZpbGUnLCB2YWx1ZTogMzAgfSxcclxuICB7IG5hbWU6ICdPcmdhbm8gZGkgdmlnaWxhbnphIGNvbXBldGVudGUnLCB2YWx1ZTogMzEgfSxcclxuICB7IG5hbWU6ICdQcm92aW5jaWEnLCB2YWx1ZTogMzMgfSxcclxuICB7IG5hbWU6ICdSZWdpb25lJywgdmFsdWU6IDM1IH0sXHJcbiAgeyBuYW1lOiAnVWZmaWNpIHRlY25pY2kgZGkgZmluYW56YScsIHZhbHVlOiAzNiB9LFxyXG4gIHsgbmFtZTogJ0lzcGV0dG9yYXRvIGRlbCBsYXZvcm8nLCB2YWx1ZTogMzcgfSxcclxuICB7IG5hbWU6ICdDb21pdGF0byBSZWdpb25hbGUgVGVjbmljbyBWRicsIHZhbHVlOiAzOCB9LFxyXG4gIHsgbmFtZTogJ1ByZWZldHRvJywgdmFsdWU6IDM5IH0sXHJcbiAgeyBuYW1lOiAnT3JnYW5pc21vIG5vdGlmaWNhdG8nLCB2YWx1ZTogNDAgfSxcclxuICB7IG5hbWU6ICdDaXR0w6AgTWV0cm9wb2xpdGFuYScsIHZhbHVlOiA0MSB9LFxyXG4gIHsgbmFtZTogJ05lc3N1bmEnLCB2YWx1ZTogMjggfSxcclxuICB7IG5hbWU6ICdBbHRybycsIHZhbHVlOiAzIH1cclxuXTtcclxuXHJcbmV4cG9ydCBlbnVtIEVSUFJlY3VycmVuY2VGcmVxdWVuY3lUeXBlIHtcclxuICBEYXkgPSAxLFxyXG4gIE1vbnRoID0gMixcclxuICBZZWFyID0gMyxcclxufVxyXG5leHBvcnQgY29uc3QgUmVjdXJyZW5jZUZyZXF1ZW5jeVR5cGVzID0gW1xyXG4gIHsgbmFtZTogJ0FubmknLCB2YWx1ZTogRVJQUmVjdXJyZW5jZUZyZXF1ZW5jeVR5cGUuWWVhciB9LFxyXG4gIHsgbmFtZTogJ01lc2knLCB2YWx1ZTogRVJQUmVjdXJyZW5jZUZyZXF1ZW5jeVR5cGUuTW9udGggfSxcclxuICB7IG5hbWU6ICdHaW9ybmknLCB2YWx1ZTogRVJQUmVjdXJyZW5jZUZyZXF1ZW5jeVR5cGUuRGF5IH0sXHJcbl07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2b2x1dGlvbkxvZ2luUmVzdWx0IGV4dGVuZHMgTG9naW5SZXN1bHQ8RXZvbHV0aW9uTG9naW5JbmZvPiB7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZvbHV0aW9uTG9naW5JbmZvIHtcclxuICBjb250ZXh0OiBhbnk7XHJcbiAgY29tcGxpYW5jZUNvbnRleHQ/OiBhbnkgfCBudWxsO1xyXG4gIHVzZXJDcmVkZW50aWFscz86IHN0cmluZyB8IG51bGw7XHJcbiAgdXNlcklkPzogbnVtYmVyIHwgbnVsbDtcclxuICBPQVVUSD86IExvZ2luT0F1dGhUeXBlIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdm9sdXRpb25Vc2VyTGluayB7XHJcbiAgaWQ/OiBudW1iZXIgfCBudWxsO1xyXG4gIHVzZXJJZDogbnVtYmVyO1xyXG4gIHVzZXJOYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICBrZXk6IHN0cmluZztcclxufSJdfQ==
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvZXZvbHV0aW9uLmNvbW1vbi9jb21tb24vZGVmaW5pdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFOLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixpRUFBUSxDQUFBO0lBQ1IsNkZBQXNCLENBQUE7SUFDdEIscUhBQXVDLENBQUE7QUFFekMsQ0FBQyxFQUxXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFLaEM7QUFFRCxNQUFNLENBQU4sSUFBWSxTQVdYO0FBWEQsV0FBWSxTQUFTO0lBRWpCLHFEQUFjLENBQUE7SUFDZCx1Q0FBWSxDQUFBO0lBQ1osMkVBQThCLENBQUE7SUFDOUIseUVBQTZCLENBQUE7SUFDN0IsNEVBQThCLENBQUE7SUFDOUIsMERBQXFCLENBQUE7SUFDckIsc0RBQW1CLENBQUE7SUFDbkIscURBQWtCLENBQUE7QUFFdEIsQ0FBQyxFQVhXLFNBQVMsS0FBVCxTQUFTLFFBV3BCO0FBRUQsTUFBTSxDQUFOLElBQVksOEJBR1g7QUFIRCxXQUFZLDhCQUE4QjtJQUN4QywyRkFBWSxDQUFBO0lBQ1osMkZBQVksQ0FBQTtBQUNkLENBQUMsRUFIVyw4QkFBOEIsS0FBOUIsOEJBQThCLFFBR3pDO0FBRUQsTUFBTSxDQUFOLElBQVksd0JBT1g7QUFQRCxXQUFZLHdCQUF3QjtJQUNsQyx1RUFBUSxDQUFBO0lBQ1IsNkVBQVcsQ0FBQTtJQUNYLDZFQUFnQixDQUFBO0lBQ2hCLGlGQUFrQixDQUFBO0lBQ2xCLCtFQUFpQixDQUFBO0lBQ2pCLGdGQUFpQixDQUFBO0FBQ25CLENBQUMsRUFQVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBT25DO0FBRUQsTUFBTSxDQUFOLElBQVkseUJBR1g7QUFIRCxXQUFZLHlCQUF5QjtJQUVuQywwSUFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBSFcs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MEJBQTBCO0lBQ3BDLHlFQUFPLENBQUE7SUFDUCw2RUFBUyxDQUFBO0lBQ1QsMkVBQVEsQ0FBQTtBQUNWLENBQUMsRUFKVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBSXJDO0FBQ0QsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxJQUFJLEVBQUU7SUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUU7SUFDekQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLEVBQUU7Q0FDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2luUmVzdWx0IH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTG9naW5PQXV0aFR5cGUgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLm9hdXRoJztcclxuXHJcbmV4cG9ydCBlbnVtIEV2b2x1dGlvblNlcnZpY2VGbGFncyB7XHJcbiAgTm9uZSA9IDAsXHJcbiAgTm90aWZ5U3lzdGVtRXJyb3JzID0gMSxcclxuICBEaXNwbGF5Q29ubmVjdGlvblN0YXRlTWVzc2FnZXMgPSAxIDw8IDFcclxuICBcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRVJQTW9kdWxlXHJcbntcclxuICAgIEZvcm1hemlvbmUgPSAxLFxyXG4gICAgRFBJID0gMSA8PCAxLFxyXG4gICAgU29ydmVnbGlhbnphU2FuaXRhcmlhID0gMSA8PCAyLFxyXG4gICAgUmVnaXN0cm9FU2NhZGVuemFyaW8gPSAxIDw8IDMsXHJcbiAgICBBdHRyZXp6YXR1cmVFSW1waWFudGkgPSAxIDw8IDQsXHJcbiAgICBNb25pdG9yYWdnaW8gPSAxIDw8IDUsXHJcbiAgICBCb2xsZXR0aW5vID0gMSA8PCA2LFxyXG4gICAgRG9jdW1lbnRpID0gMSA8PCA3XHJcblxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlTGF3c1NlbGVjdGlvblR5cGUge1xyXG4gIEFuYWx5c2lzID0gMSxcclxuICBBY3Rpdml0eSA9IDIsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVSUENvbXBsaWFuY2VQcm9maWxlUm9sZSB7XHJcbiAgTm9uZSA9IDAsXHJcbiAgQW5hbHlzdCA9IDEsXHJcbiAgUGxhbm5lciA9IDEgPDwgMSxcclxuICBWYWxpZGF0b3IgPSAxIDw8IDIsXHJcbiAgRXhlY3V0b3IgPSAxIDw8IDMsXHJcbiAgT2JzZXJ2ZXIgPSAxIDw8IDQsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVSUENvbXBsaWFuY2VQcm9maWxlRmxhZ3Mge1xyXG5cclxuICBPdmVycmlkZU5vdGlmaWNhdGlvblJlZ2lzdGVyU2V0dGluZ3MgPSAxIDw8IDQsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVSUENvbXBsaWFuY2VTY29wZSB7XHJcbiAgTm9uZSA9IDAsXHJcbiAgRW52aXJvbm1lbnQgPSAxLFxyXG4gIFNhZmV0eSA9IDEgPDwgMSxcclxuICBGb29kU2FmZXR5ID0gMSA8PCAyLFxyXG4gIEVuZXJneSA9IDEgPDwgMyxcclxuICBIZWFsdGggPSAxIDw8IDQsXHJcbiAgTWFpbnRlbmFuY2UgPSAxIDw8IDUsXHJcbiAgUXVhbGl0eSA9IDEgPDwgNixcclxuICBPcmdhbml6YXRpb24gPSAxIDw8IDcsXHJcbiAgTG9naXN0aWNzID0gMSA8PCA4LFxyXG4gIEZhY2lsaXR5ID0gMSA8PCA5LFxyXG4gIFNlY3VyaXR5ID0gMSA8PCAxMFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlTm90aWZpY2F0aW9uTGltaXQge1xyXG4gIE5vbmUgPSAwLFxyXG4gIFBsYW5uZXJPbmx5ID0gMSxcclxuICBFeGVjdXRvck9ubHkgPSAyLFxyXG4gIEJvdGggPSAzLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlIHtcclxuICBOb25lID0gMCxcclxuICBOZXdBbmFseXNpcyA9IDEsXHJcbiAgQW5hbHlzaXNDb21wbGV0ZWQgPSAxIDw8IDEsXHJcbiAgQW5hbHlzaXNOb3RpY2VQZXJpb2RTdGFydGVkID0gMSA8PCAyLFxyXG4gIEFuYWx5c2lzUGVyaW9kRXhwaXJlZCA9IDEgPDwgMyxcclxuICBBbmFseXNpc0xhd0NoYW5nZWQgPSAxIDw8IDE0LFxyXG4gIE5ld1BsYW5uaW5nID0gMSA8PCAxMyxcclxuICBQbGFubmluZ0NvbXBsZXRlZCA9IDEgPDwgNCxcclxuICBQbGFubmluZ05vdGljZVBlcmlvZFN0YXJ0ZWQgPSAxIDw8IDUsXHJcbiAgUGxhbm5pbmdQZXJpb2RFeHBpcmVkID0gMSA8PCA2LFxyXG4gIE5ld1ZhbGlkYXRpb24gPSAxIDw8IDE1LFxyXG4gIFZhbGlkYXRpb25Db21wbGV0ZWQgPSAxIDw8IDcsXHJcbiAgVmFsaWRhdGlvbk5vdGljZVBlcmlvZFN0YXJ0ZWQgPSAxIDw8IDgsXHJcbiAgVmFsaWRhdGlvblBlcmlvZEV4cGlyZWQgPSAxIDw8IDksXHJcbiAgTmV3RGVhZGxpbmUgPSAxIDw8IDE2LFxyXG4gIERlYWRsaW5lTm90aWNlUGVyaW9kU3RhcnRlZCA9IDEgPDwgMTAsXHJcbiAgRGVhZGxpbmVFeHBpcmVkID0gMSA8PCAxMSxcclxuICBBY3Rpdml0eUNvbXBsZXRlZCA9IDEgPDwgMTIsXHJcbiAgLy9OZXdOb25jb21wbGlhbmNlID0gMSA8PCAxNyxcclxuICAvL05vbkNvbXBsaWFuY2VOb3RpY2VQZXJpb2RTdGFydGVkID0gMSA8PCAxOCxcclxuICAvL05vbkNvbXBsaWFuY2VQZXJpb2RFeHBpcmVkID0gMSA8PCAxOSxcclxuICAvL05vbkNvbXBsaWFuY2VDb21wbGV0ZWQgPSAxIDw8IDIwLFxyXG4gIExhd0NoYW5nZWQgPSAxIDw8IDIxLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFUlBDb21wbGlhbmNlUmVnaXN0ZXJTaXRlSW1wb3J0T3B0aW9uc1xyXG57XHJcbiAgICBDb3B5QXR0YWNobWVudHMgPSAxLFxyXG4gICAgS2VlcE9yaWdpbmFsRGF0ZXMgPSAxIDw8IDEsXHJcbiAgICBEdXBsaWNhdGVMYXdzID0gIDEgPDwgMixcclxuICAgIERpc2NhcmROb3RBcHBsaWNhYmxlcyA9IDEgPDwgM1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUHJvZmlsZVJvbGVzID0gW1xyXG4gIHsgbmFtZTogJ0FuYWxpc3RhJywgdmFsdWU6IEVSUENvbXBsaWFuY2VQcm9maWxlUm9sZS5BbmFseXN0IH0sXHJcbiAgeyBuYW1lOiAnR2VzdG9yZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlUHJvZmlsZVJvbGUuUGxhbm5lciB9LFxyXG4gIC8veyBuYW1lOiAnVmFsaWRhdG9yZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlUHJvZmlsZVJvbGUuVmFsaWRhdG9yIH0sXHJcbiAgeyBuYW1lOiAnRXNlY3V0b3JlJywgdmFsdWU6IEVSUENvbXBsaWFuY2VQcm9maWxlUm9sZS5FeGVjdXRvciB9LFxyXG4gIHsgbmFtZTogJ09zc2VydmF0b3JlJywgdmFsdWU6IEVSUENvbXBsaWFuY2VQcm9maWxlUm9sZS5PYnNlcnZlciB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFByb2ZpbGVGbGFncyA9IFtcclxuICB7IG5hbWU6ICdEZXJvZ2hlIGUgbGltaXRhemlvbmknLCBkaXZpZGVyOiB0cnVlIH0sXHJcbiAge1xyXG4gICAgbmFtZTpcclxuICAgICAgJ1F1ZXN0byBwcm9maWxvIHJpY2V2ZSByZWdvbGFybWVudGUgbGUgbm90aWZpY2hlIGluZGlwZW5kZW50ZW1lbnRlIGRhbGxhIGNvbmZpZ3VyYXppb25lIGdlbmVyYWxlIGRlbCByZWdpc3RybycsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVByb2ZpbGVGbGFncy5PdmVycmlkZU5vdGlmaWNhdGlvblJlZ2lzdGVyU2V0dGluZ3MsXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBTY29wZXMgPSBbXHJcbiAgeyBuYW1lOiAnQW1iaWVudGUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLkVudmlyb25tZW50IH0sXHJcbiAgeyBuYW1lOiAnU2FsdXRlIGUgc2ljdXJlenphJywgdmFsdWU6IEVSUENvbXBsaWFuY2VTY29wZS5TYWZldHkgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnU2ljdXJlenphIGFsaW1lbnRhcmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VTY29wZS5Gb29kU2FmZXR5LFxyXG4gIH0sXHJcbiAgeyBuYW1lOiAnRW5lcmdpYScsIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuRW5lcmd5IH0sXHJcbiAgeyBuYW1lOiAnU2Vydml6aSBnZW5lcmFsaScsIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuRmFjaWxpdHkgfSxcclxuICB7IG5hbWU6ICdNYW51dGVuemlvbmUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLk1haW50ZW5hbmNlIH0sXHJcbiAgeyBuYW1lOiAnUXVhbGl0w6AnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZVNjb3BlLlF1YWxpdHkgfSxcclxuICB7IG5hbWU6ICdPcmdhbml6emF6aW9uZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuT3JnYW5pemF0aW9uIH0sXHJcbiAgeyBuYW1lOiAnTG9naXN0aWNhJywgdmFsdWU6IEVSUENvbXBsaWFuY2VTY29wZS5Mb2dpc3RpY3MgfSxcclxuICB7IG5hbWU6ICdTZWN1cml0eScsIHZhbHVlOiBFUlBDb21wbGlhbmNlU2NvcGUuU2VjdXJpdHkgfSxcclxuICAgXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgTm90aWZpY2F0aW9uTGltaXRzID0gW1xyXG4gIHsgbmFtZTogJ05lc3N1bmEgbGltaXRhemlvbmUnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxpbWl0Lk5vbmUgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnU29sbyBnZXN0b3JlIGNoZSBoYSBwaWFuaWZpY2F0bycsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxpbWl0LlBsYW5uZXJPbmx5LFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJTb2xvIGFsbCdpbmNhcmljYXRvIGRlc2lnbmF0b1wiLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VOb3RpZmljYXRpb25MaW1pdC5FeGVjdXRvck9ubHksXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnU29sbyBhIGdlc3RvcmUgZSBpbmNhcmljYXRvIGRlc2lnbmF0bycsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxpbWl0LkJvdGgsXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBOb3RpZmljYXRpb25zID0gW1xyXG4gIHsgbmFtZTogJ1ZlcmlmaWNhIGFwcGxpY2FiaWxpdMOgIGUgYW5hbGlzaScsIGRpdmlkZXI6IHRydWUgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnUmljaGllc3RhIGFuYWxpc2knLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuTmV3QW5hbHlzaXMsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiBcIlByZWF2dmlzbzogc3RhIHBlciBzY2FkZXJlIGlsIHRlcm1pbmUgZmlzc2F0byBwZXIgbCdhbmFsaXNpXCIsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5BbmFseXNpc05vdGljZVBlcmlvZFN0YXJ0ZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiBcIkFsbGFybWU6IMOoIHNjYWR1dG8gaWwgdGVybWluZSBmaXNzYXRvIHBlciBsJ2FuYWxpc2lcIixcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLkFuYWx5c2lzUGVyaW9kRXhwaXJlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBbmFsaXNpIGNvbXBsZXRhdGEnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuQW5hbHlzaXNDb21wbGV0ZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQXZ2aXNvIG5vcm1hIG1vZGlmaWNhdGEgZGFsIGxlZ2lzbGF0b3JlJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLkFuYWx5c2lzTGF3Q2hhbmdlZCxcclxuICB9LFxyXG4gIHsgbmFtZTogJ1BpYW5pZmljYXppb25pJywgZGl2aWRlcjogdHJ1ZSB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdSaWNoaWVzdGEgZ2VzdGlvbmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuTmV3UGxhbm5pbmcsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnUHJlYXZ2aXNvOiBzdGEgcGVyIHNjYWRlcmUgaWwgdGVybWluZSBmaXNzYXRvIHBlciBsYSBnZXN0aW9uZScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5QbGFubmluZ05vdGljZVBlcmlvZFN0YXJ0ZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQWxsYXJtZTogw6ggc2NhZHV0byBpbCB0ZXJtaW5lIGZpc3NhdG8gcGVyIGxhIGdlc3Rpb25lJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLlBsYW5uaW5nUGVyaW9kRXhwaXJlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdHZXN0aW9uZSBjb21wbGV0YXRhJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLlBsYW5uaW5nQ29tcGxldGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0F0dGl2aXTDoCBjb21wbGV0YXRhJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLkFjdGl2aXR5Q29tcGxldGVkLFxyXG4gIH0sXHJcbiAgLyp7IG5hbWU6ICdHZXN0aW9uZSBub24gY29uZm9ybWl0w6AnLCBkaXZpZGVyOiB0cnVlIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FwZXJ0dXJhIG5vbiBjb21mb3JtaXTDoCcsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5OZXdOb25jb21wbGlhbmNlLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTpcclxuICAgICAgXCJQcmVhdnZpc286IHN0YSBwZXIgc2NhZGVyZSBpbCB0ZXJtaW5lIGZpc3NhdG8gcGVyIGwnYXppb25lIGNvcnJldHRpdmFcIixcclxuICAgIHZhbHVlOlxyXG4gICAgICBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLk5vbkNvbXBsaWFuY2VOb3RpY2VQZXJpb2RTdGFydGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJBbGxhcm1lOiDDqCBzY2FkdXRvIGlsIHRlcm1pbmUgZmlzc2F0byBwZXIgbCdhemlvbmUgY29ycmV0dGl2YVwiLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuTm9uQ29tcGxpYW5jZVBlcmlvZEV4cGlyZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQ2hpdXN1cmEgbm9uIGNvbmZvcm1pdMOgJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLk5vbkNvbXBsaWFuY2VDb21wbGV0ZWQsXHJcbiAgfSwqL1xyXG4gIC8qeyBuYW1lOiAnQXBwcm92YXppb25pJywgZGl2aWRlcjogdHJ1ZSB9LFxyXG4gIHsgbmFtZTogJ1JpY2hpZXN0YSBhcHByb3ZhemlvbmUnLCB2YWx1ZTogMSA8PCAxNCB9LFxyXG4gIHtcclxuICAgIG5hbWU6IFwiUHJlYXZ2aXNvOiBzdGEgcGVyIHNjYWRlcmUgaWwgdGVybWluZSBmaXNzYXRvIHBlciBsJ2FwcHJvdmF6aW9uZVwiLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuVmFsaWRhdGlvbk5vdGljZVBlcmlvZFN0YXJ0ZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiBcIkFsbGFybWU6IMOoIHNjYWR1dG8gaWwgdGVybWluZSBmaXNzYXRvIHBlciBsJ2FwcHJvdmF6aW9uZVwiLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuVmFsaWRhdGlvblBlcmlvZEV4cGlyZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQXBwcm92YXppb25lIGNvbmNlc3NhIG8gbmVnYXRhJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlUmVnaXN0ZXJOb3RpZmljYXRpb25UeXBlLlZhbGlkYXRpb25Db21wbGV0ZWQsXHJcbiAgfSwqL1xyXG4gIHsgbmFtZTogJ1NjYWRlbnplJywgZGl2aWRlcjogdHJ1ZSB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdQcmVhdnZpc286IDHCsCBwcm9tZW1vcmlhIHN1bGxhIGRhdGEgZGkgc2NhZGVuemEnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuTmV3VmFsaWRhdGlvbixcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdBdnZpc286IDLCsCBwcm9tZW1vcmlhIHN1bGxhIGRhdGEgZGkgc2NhZGVuemEnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuRGVhZGxpbmVOb3RpY2VQZXJpb2RTdGFydGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FsbGFybWU6IMOoIHNjYWR1dG8gaWwgdGVybWluZScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZVJlZ2lzdGVyTm90aWZpY2F0aW9uVHlwZS5EZWFkbGluZUV4cGlyZWQsXHJcbiAgfSxcclxuICB7IG5hbWU6ICdOb3JtZSBjb2xsZWdhdGUnLCBkaXZpZGVyOiB0cnVlIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ01vZGlmaWNhIG8gYWJyb2dhemlvbmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VSZWdpc3Rlck5vdGlmaWNhdGlvblR5cGUuTGF3Q2hhbmdlZCxcclxuICB9LFxyXG5cclxuXTtcclxuXHJcbmV4cG9ydCBlbnVtIEVSUENvbXBsaWFuY2VMYXdTdGF0ZSB7XHJcbiAgQXBwbGljYWJsZU9yQWtub3dsZWRnZWQgPSAxLFxyXG4gIE5vdEFwcGxpY2FibGUgPSAyLFxyXG4gIE5vdEFuYWx5emVkID0gMyxcclxuICBFeHBpcmVkQW5hbHlzaXMgPSA0LFxyXG4gIFVwZGF0ZWRMYXdzID0gNSxcclxuICBBbmFseXplZCA9IDYsXHJcbiAgQWJyb2dhdGVkID0gNyxcclxuICBBcHBsaWNhYmxlID0gOCxcclxuICBBa25vd2xlZGdlZCA9IDlcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRVJQQ29tcGxpYW5jZUxhd09yaWdpbiB7XHJcbiAgTmF0aW9uYWwgPSAxLFxyXG4gIEVVID0gMixcclxuICBSZWdpb25hbCA9IDMsXHJcbiAgTG9jYWwgPSA0LFxyXG4gIFRlY2huaWNhbCA9IDUsXHJcbiAgVm91bG9udGFyeSA9IDYsXHJcbiAgSW50ZXJuYWwgPSA3LFxyXG4gIE90aGVyID0gOCxcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IExhd1N0YXRlcyA9IFtcclxuICB7IG5hbWU6ICdBcHBsaWNhYmlsZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuQXBwbGljYWJsZSB9LFxyXG4gIHsgbmFtZTogJ0RhIGNvbm9zY2VyZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuQWtub3dsZWRnZWQgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQXBwbGljYWJpbGUgLyBkYSBjb25vc2NlcmUnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdTdGF0ZS5BcHBsaWNhYmxlT3JBa25vd2xlZGdlZCxcclxuICB9LFxyXG4gIHsgbmFtZTogJ05vbiBhcHBsaWNhYmlsZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuTm90QXBwbGljYWJsZSB9LFxyXG4gIHsgbmFtZTogJ0Ficm9nYXRhJywgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdTdGF0ZS5BYnJvZ2F0ZWQgfSxcclxuICB7IG5hbWU6ICdBbmFsaXp6YXRhJywgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdTdGF0ZS5BbmFseXplZCB9LFxyXG4gIHsgbmFtZTogJ0RhIGRlZmluaXJlJywgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdTdGF0ZS5Ob3RBbmFseXplZCB9LCAgXHJcbiAgeyBuYW1lOiAnSW4gcml0YXJkbycsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuRXhwaXJlZEFuYWx5c2lzIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0NvbiBhZ2dpb3JuYW1lbnRpIHBlbmRlbnRpJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3U3RhdGUuVXBkYXRlZExhd3MsXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBMYXdPcmlnaW5zID0gW1xyXG4gIHsgbmFtZTogJ05hemlvbmFsZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLk5hdGlvbmFsIH0sXHJcbiAgeyBuYW1lOiAnQ29tdW5pdGFyaWEnLCB2YWx1ZTogRVJQQ29tcGxpYW5jZUxhd09yaWdpbi5FVSB9LFxyXG4gIHsgbmFtZTogJ1JlZ2lvbmFsZScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLlJlZ2lvbmFsIH0sXHJcbiAgeyBuYW1lOiAnTG9jYWxlJywgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdPcmlnaW4uTG9jYWwgfSxcclxuICB7IG5hbWU6ICdUZWNuaWNhJywgdmFsdWU6IEVSUENvbXBsaWFuY2VMYXdPcmlnaW4uVGVjaG5pY2FsIH0sXHJcbiAgeyBuYW1lOiAnSW50ZXJuYScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLkludGVybmFsIH0sXHJcbiAgeyBuYW1lOiAnVm9sb250YXJpYScsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLlZvdWxvbnRhcnkgfSxcclxuICB7IG5hbWU6ICdBbHRybycsIHZhbHVlOiBFUlBDb21wbGlhbmNlTGF3T3JpZ2luLk90aGVyIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgTGF3Q2hhbmdlU3RhdGVzID0gW1xyXG4gIHsgbmFtZTogJ0FwZXJ0bycsIHZhbHVlOiAxIH0sXHJcbiAgeyBuYW1lOiAnQ2hpdXNvJywgdmFsdWU6IDIgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBlbnVtIEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlIHtcclxuICBOb3RQbGFubmVkID0gMSA8PCA3LFxyXG4gIENsb3NlZCA9IDEgPDwgMiwgIFxyXG4gIEV4cGlyZWQgPSAxIDw8IDMsXHJcbiAgUGxhbm5lZCA9IDEgPDwgOCxcclxuICBDYW5jZWxsZWQgPSAxIDw8IDksXHJcbiAgVXBkYXRlZExhd3MgPSAxIDw8IDEwLFxyXG4gIEFscmVhZHlNYW5hZ2VkID0gMSA8PCAxMVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQWN0aXZpdHlTdGF0ZXMgPSBbIFxyXG4gIHtcclxuICAgIG5hbWU6ICdEYSBkZWZpbmlyZScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZUFjdGl2aXR5U3RhdGUuTm90UGxhbm5lZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdQaWFuaWZpY2F0YScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZUFjdGl2aXR5U3RhdGUuUGxhbm5lZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdDaGl1c2EnLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlLkNsb3NlZCxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdJbiByaXRhcmRvJyxcclxuICAgIHZhbHVlOiBFUlBDb21wbGlhbmNlQWN0aXZpdHlTdGF0ZS5FeHBpcmVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FubnVsbGF0YScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZUFjdGl2aXR5U3RhdGUuQ2FuY2VsbGVkLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0dlc3RpdGEgc2VwYXJhdGFtZW50ZScsXHJcbiAgICB2YWx1ZTogRVJQQ29tcGxpYW5jZUFjdGl2aXR5U3RhdGUuQWxyZWFkeU1hbmFnZWQsXHJcbiAgfSxcclxuICB7XHJcbiAgICBuYW1lOiAnQ29uIGFnZ2lvcm5hbWVudGkgcGVuZGVudGknLFxyXG4gICAgdmFsdWU6IEVSUENvbXBsaWFuY2VBY3Rpdml0eVN0YXRlLlVwZGF0ZWRMYXdzLFxyXG4gIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgT2JsaWdhdGlvblR5cGVzID0gW1xyXG4gIHsgbmFtZTogJ0F1dG9yaXp6YXppb25lJywgdmFsdWU6IDEgfSxcclxuICB7IG5hbWU6ICdWZXJpZmljaGUgcGVyaW9kaWNoZSBtYW51dGVudGl2ZScsIHZhbHVlOiAyIH0sXHJcbiAgeyBuYW1lOiAnTWlzdXJlIG9yZ2FuaXp6YXRpdmUnLCB2YWx1ZTogMyB9LFxyXG4gIHsgbmFtZTogJ0NvbnRyb2xsaSBlIG1pc3VyYXppb25pJywgdmFsdWU6IDQgfSxcclxuICB7IG5hbWU6ICdFbnRyYXRhIGluIHZpZ29yZScsIHZhbHVlOiA1IH0sXHJcbiAgeyBuYW1lOiAnRG9jdW1lbnRpIGF6aWVuZGFsaSBvYmJsaWdhdG9yaScsIHZhbHVlOiA2IH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ0FsdHJpIGFkZW1waW1lbnRpIGZvcm1hbGkgKGNvbXVuaWNhemlvbmksIGRpY2hpYXJhemlvbmksIGVjYy4uLiknLFxyXG4gICAgdmFsdWU6IDcsXHJcbiAgfSxcclxuICB7IG5hbWU6ICdBbHRybycsIHZhbHVlOiA5OSB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9ibGlnYXRpb25BdXRob3JpdGllcyA9IFtcclxuICB7IG5hbWU6ICdBZ2VuemlhIEVDSEEnLCB2YWx1ZTogMSB9LFxyXG4gIHsgbmFtZTogJ0FsYm8gTmF6aW9uYWxlIGRlaSBHZXN0b3JpIEFtYmllbnRhbGknLCB2YWx1ZTogMiB9LFxyXG4gIHsgbmFtZTogJ0FSUEEnLCB2YWx1ZTogNCB9LFxyXG4gIHsgbmFtZTogJ0FTTCcsIHZhbHVlOiA1IH0sXHJcbiAgeyBuYW1lOiAnQ2FtZXJhIGRpIENvbW1lcmNpbycsIHZhbHVlOiA4IH0sXHJcbiAgeyBuYW1lOiAnQ29tYW5kbyBwcm92aW5jaWFsZSBkZWkgVmlnaWxpIGRlbCBGdW9jbycsIHZhbHVlOiAxMCB9LFxyXG4gIHsgbmFtZTogJ0NvbXVuZScsIHZhbHVlOiAxMyB9LFxyXG4gIHsgbmFtZTogJ0NvbnNvcnppIGdlc3Rpb25lIHJpZml1dGkgcGFydGljb2xhcmknLCB2YWx1ZTogMTQgfSxcclxuICB7IG5hbWU6ICdHZXN0b3JlIGRlbCBzZXJ2aXppbycsIHZhbHVlOiAyMSB9LFxyXG4gIHsgbmFtZTogJ0dlc3RvcmUgZGVsbGEgcmV0ZSBkaSB0cmFzbWlzc2lvbmUgbmF6aW9uYWxlJywgdmFsdWU6IDIyIH0sXHJcbiAgeyBuYW1lOiAnSU5BSUwgLSBJUFNFTUEgLSBJU1BFU0wnLCB2YWx1ZTogMjMgfSxcclxuICB7IG5hbWU6ICdJU1BSQScsIHZhbHVlOiAyNiB9LFxyXG4gIHsgbmFtZTogJ01pbmlzdGVybycsIHZhbHVlOiAyNyB9LFxyXG4gIHsgbmFtZTogJ0dlbmlvIGNpdmlsZScsIHZhbHVlOiAzMCB9LFxyXG4gIHsgbmFtZTogJ09yZ2FubyBkaSB2aWdpbGFuemEgY29tcGV0ZW50ZScsIHZhbHVlOiAzMSB9LFxyXG4gIHsgbmFtZTogJ1Byb3ZpbmNpYScsIHZhbHVlOiAzMyB9LFxyXG4gIHsgbmFtZTogJ1JlZ2lvbmUnLCB2YWx1ZTogMzUgfSxcclxuICB7IG5hbWU6ICdVZmZpY2kgdGVjbmljaSBkaSBmaW5hbnphJywgdmFsdWU6IDM2IH0sXHJcbiAgeyBuYW1lOiAnSXNwZXR0b3JhdG8gZGVsIGxhdm9ybycsIHZhbHVlOiAzNyB9LFxyXG4gIHsgbmFtZTogJ0NvbWl0YXRvIFJlZ2lvbmFsZSBUZWNuaWNvIFZGJywgdmFsdWU6IDM4IH0sXHJcbiAgeyBuYW1lOiAnUHJlZmV0dG8nLCB2YWx1ZTogMzkgfSxcclxuICB7IG5hbWU6ICdPcmdhbmlzbW8gbm90aWZpY2F0bycsIHZhbHVlOiA0MCB9LFxyXG4gIHsgbmFtZTogJ0NpdHTDoCBNZXRyb3BvbGl0YW5hJywgdmFsdWU6IDQxIH0sXHJcbiAgeyBuYW1lOiAnTmVzc3VuYScsIHZhbHVlOiAyOCB9LFxyXG4gIHsgbmFtZTogJ0FsdHJvJywgdmFsdWU6IDMgfVxyXG5dO1xyXG5cclxuZXhwb3J0IGVudW0gRVJQUmVjdXJyZW5jZUZyZXF1ZW5jeVR5cGUge1xyXG4gIERheSA9IDEsXHJcbiAgTW9udGggPSAyLFxyXG4gIFllYXIgPSAzLFxyXG59XHJcbmV4cG9ydCBjb25zdCBSZWN1cnJlbmNlRnJlcXVlbmN5VHlwZXMgPSBbXHJcbiAgeyBuYW1lOiAnQW5uaScsIHZhbHVlOiBFUlBSZWN1cnJlbmNlRnJlcXVlbmN5VHlwZS5ZZWFyIH0sXHJcbiAgeyBuYW1lOiAnTWVzaScsIHZhbHVlOiBFUlBSZWN1cnJlbmNlRnJlcXVlbmN5VHlwZS5Nb250aCB9LFxyXG4gIHsgbmFtZTogJ0dpb3JuaScsIHZhbHVlOiBFUlBSZWN1cnJlbmNlRnJlcXVlbmN5VHlwZS5EYXkgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZvbHV0aW9uTG9naW5SZXN1bHQgZXh0ZW5kcyBMb2dpblJlc3VsdDxFdm9sdXRpb25Mb2dpbkluZm8+IHtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdm9sdXRpb25Mb2dpbkluZm8ge1xyXG4gIGNvbnRleHQ6IEV2b2x1dGlvblVzZXJJbmZvO1xyXG4gIGNvbXBsaWFuY2VDb250ZXh0PzogIHwgbnVsbDtcclxuICB1c2VyQ3JlZGVudGlhbHM/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHVzZXJJZD86IG51bWJlciB8IG51bGw7XHJcbiAgT0FVVEg/OiBMb2dpbk9BdXRoVHlwZSB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZvbHV0aW9uVXNlckxpbmsge1xyXG4gIGlkPzogbnVtYmVyIHwgbnVsbDtcclxuICB1c2VySWQ6IG51bWJlcjtcclxuICB1c2VyTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAga2V5OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZvbHV0aW9uVXNlck1vZHVsZUluZm8ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBtb2R1bGU6IG51bWJlcjtcclxuICBsZXZlbDogbnVtYmVyO1xyXG4gIGhpZGRlbjogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZvbHV0aW9uTGljZW5jZU1vZHVsZUluZm8ge1xyXG4gICAgbW9kdWxlOiBFUlBNb2R1bGU7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBhdmFpbGFibGVVc2VyczogbnVtYmVyO1xyXG4gICAgdXNlZFVzZXJzOiBudW1iZXI7XHJcbiAgICBhdmFpbGFibGVPcHRpb24xPzogbnVtYmVyIHwgbnVsbDtcclxuICAgIHVzZWRPcHRpb24xPzogbnVtYmVyIHwgbnVsbDtcclxuICAgIGF2YWlsYWJsZU9wdGlvbjI/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgdXNlZE9wdGlvbjI/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgYXZhaWxhYmxlT3B0aW9uMz86IG51bWJlciB8IG51bGw7XHJcbiAgICB1c2VkT3B0aW9uMz86IG51bWJlciB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZvbHV0aW9uVXNlckluZm8ge1xyXG4gICAgbGljZW5jZUlkOiBudW1iZXI7XHJcbiAgICB1c2VySWQ6IG51bWJlcjtcclxuICAgIGNvbXBhbnlOYW1lOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICBmbGFncz86IG51bWJlciB8IG51bGw7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGlzVGVtcG9yYXJ5PzogYm9vbGVhbiB8IG51bGw7XHJcbiAgICByb2xlOiBudW1iZXI7XHJcbiAgICBzY29wZTogbnVtYmVyO1xyXG4gICAgcm9sZU5hbWU6IHN0cmluZztcclxuICAgIHJvbGVMZXZlbDogbnVtYmVyO1xyXG4gICAgYWxsb3dlZE1vZHVsZXM6IEV2b2x1dGlvblVzZXJNb2R1bGVJbmZvW107XHJcbiAgICBkYXNoYm9hcmQ/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgZGFzaGJvYXJkMj86IHN0cmluZyB8IG51bGw7XHJcbiAgICBjb2RlPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIHN1YmplY3RJZD86IG51bWJlciB8IG51bGw7XHJcbiAgICBzdWJqZWN0TmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBzaXRlSWQ/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgc2l0ZU5hbWU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgc2l0ZUNvc3RDZW50ZXI/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZGVwYXJ0bWVudElkPzogbnVtYmVyIHwgbnVsbDtcclxuICAgIGRlcGFydG1lbnROYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGV4cGlyeURhdGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgaXNFeHBpcmVkPzogYm9vbGVhbiB8IG51bGw7XHJcbiAgICBpc0FkbWluaXN0cmF0b3I/OiBib29sZWFuIHwgbnVsbDtcclxuICAgIGlzUG93ZXJVc2VyPzogYm9vbGVhbiB8IG51bGw7XHJcbiAgICBpc09ic2VydmVyPzogYm9vbGVhbiB8IG51bGw7XHJcbiAgICBpc1VzZXI/OiBib29sZWFuIHwgbnVsbDtcclxuICAgIGlzU3VwcG9ydFVzZXI/OiBib29sZWFuIHwgbnVsbDtcclxuICAgIGlzR29kPzogYm9vbGVhbiB8IG51bGw7XHJcbiAgICBhZG1pbmlzdHJhdG9yczogc3RyaW5nO1xyXG4gICAgYXZhaWxhYmxlTW9kdWxlczogRXZvbHV0aW9uTGljZW5jZU1vZHVsZUluZm9bXTtcclxuICAgIGF2YWlsYWJsZUVtcGxveWVlczogbnVtYmVyO1xyXG4gICAgdXNlZEVtcGxveWVlczogbnVtYmVyO1xyXG4gICAgYXZhaWxhYmxlU3RvcmFnZTogbnVtYmVyO1xyXG4gICAgdXNlZFN0b3JhZ2U6IG51bWJlcjtcclxufSJdfQ==
|
|
@@ -203,7 +203,7 @@ export class EvolutionService {
|
|
|
203
203
|
// Store access token
|
|
204
204
|
this.setToken(r.value);
|
|
205
205
|
const loginInfo = {
|
|
206
|
-
context: r.value.context,
|
|
206
|
+
context: r.value.context.context,
|
|
207
207
|
OAUTH: oauth
|
|
208
208
|
};
|
|
209
209
|
if (!oauth) {
|
|
@@ -437,4 +437,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
437
437
|
providedIn: 'root',
|
|
438
438
|
}]
|
|
439
439
|
}] });
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZvbHV0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvZXZvbHV0aW9uLmNvbW1vbi9jb21tb24vc2VydmljZXMvZXZvbHV0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFtQyxnQkFBZ0IsRUFBUyxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUE0QyxxQkFBcUIsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVWhELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFNVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGlDQUE0QixHQUF5QixJQUFJLENBQUM7UUFDMUQsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBSWxDLFdBQU0sR0FBMEIscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBSTNELGVBQVUsR0FBOEIsSUFBSSxDQUFDO1FBWXJDLGFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztLQW9mcEQ7SUF4Z0JDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNsRSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQztvQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUF1QixDQUFDO2dCQUNoRSxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBTUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FDUixVQUFrQixFQUNsQixRQUErQixxQkFBcUIsQ0FBQyxJQUFJO1FBQ3pELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7WUFDakQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUE2QixFQUFFLEVBQUU7Z0JBQ2pILElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDbkQsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsS0FBSyxDQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDckIsSUFBSSxFQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFOzRCQUM5RSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0NBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztpQ0FDOUQsQ0FBQztnQ0FDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29DQUM1RSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0NBQ2xFLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQztxQkFBTSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsbUpBQW1KLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7NEJBQ2pPLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29DQUM1RSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0NBQzFFLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNmLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLGFBQWE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixTQUFTO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBRUgsQ0FBQztJQUlEOzs7SUFHQTtJQUNRLFFBQVEsQ0FBQyxLQUEyQjtRQUMxQyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFHRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsVUFBbUIsS0FBSztRQUMvQixJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O0tBRUM7SUFDRCxVQUFVO1FBQ1IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7Ozs7S0FRQztJQUNELFNBQVMsQ0FDUCxRQUFtQyxJQUFJLEVBQ3ZDLFdBQXNDLElBQUksRUFDMUMsV0FBdUMsS0FBSyxFQUM1QyxRQUEyQyxJQUFJLEVBQy9DLG1CQUE4QyxJQUFJLEVBQ2xELFdBQXdDLElBQUk7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7YUFDM0QsU0FBUyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFFBQVEsRUFBRSxDQUFDO2dCQUNiLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQ1IsV0FBd0MsSUFBSTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO1lBQ0gsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUNaLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsUUFBUSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsUUFBbUMsSUFBSSxFQUMzQyxXQUFzQyxJQUFJLEVBQzFDLFdBQXVDLEtBQUssRUFDNUMsUUFBMkMsSUFBSSxFQUMvQyxtQkFBOEMsSUFBSTtRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLElBQUksQ0FDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFDNUI7WUFDRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQ2pDLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDO1lBQ3JELEtBQUssRUFBRSxLQUFLO1NBQ2IsRUFDRDtZQUNFLE9BQU8sRUFDTCxDQUFDLEtBQUs7Z0JBQ0osQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFO2dCQUNuQixDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUU7cUJBQ2hCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1NBQ3BELENBQUM7YUFDSCxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLHFCQUFxQjtnQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUF1QjtvQkFDcEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztvQkFDeEIsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQTtnQkFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1gsU0FBUyxDQUFDLGVBQWU7d0JBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUM7NEJBQ2IsS0FBSyxFQUFFLEtBQUs7NEJBQ1osUUFBUSxFQUFFLFFBQVE7NEJBQ2xCLFFBQVEsRUFBRSxRQUFRO3lCQUNuQixDQUFDLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztnQkFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsU0FBUztnQkFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXZFLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBTSxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFHRDs7O01BR0U7SUFDRixXQUFXLENBQUMsRUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLElBQUksQ0FDSCxJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixFQUNuQztZQUNFLE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7U0FDdEQsQ0FDRjthQUNBLElBQUksQ0FDSCxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxDQUFrQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2QscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLFNBQVM7Z0JBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOztLQUVDO0lBQ08sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLFlBQVksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU3QyxDQUFDO0lBR0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0gsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGFBQWE7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixTQUFTO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxzQkFBc0I7UUFDdEIsY0FBYyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzQyxjQUFjLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDbkQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdDLFlBQVksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxjQUFjO1FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVEOztNQUVFO0lBQ0YsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDN0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFO1lBQ2hELGVBQWU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUdEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxPQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxRQUFRLENBQUMsT0FBZ0IsRUFBRSxNQUFhO1FBQzlDLElBQUksS0FBSyxHQUFZLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxJQUFJLEdBQVU7Z0JBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEdBQUcsRUFBRSxDQUFDO2FBQ1AsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRO2dCQUNYLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7b0JBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO0lBQ0osVUFBVTtJQUNWLElBQUk7SUFDSjs7T0FFRztJQUNILGFBQWEsQ0FBQyxNQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLEVBQ3hDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUk7SUFDSixZQUFZO0lBQ1osSUFBSTtJQUdKOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXO1lBQ2hCLHdCQUF3QixHQUFHLEVBQUUsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFHRDs7O09BR0c7SUFDSCx1QkFBdUIsQ0FBQyxNQUFXO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXO1lBQ2hCLHdDQUF3QyxFQUN4QyxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFHRCxJQUFJO0lBQ0osT0FBTztJQUNQLElBQUk7SUFFSjs7O09BR0c7SUFDSCxPQUFPLENBQUMsTUFBVztRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHNCQUFzQixFQUN6QyxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO0lBQ0osYUFBYTtJQUNiLElBQUk7SUFFSjs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLENBQUMsRUFBRSxPQUFlLElBQUk7UUFDOUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsQ0FBQyxJQUFJO2dCQUNILENBQUMsQ0FBQyw0QkFBNEI7b0JBQzlCLEtBQUs7b0JBQ0wsUUFBUTtvQkFDUixJQUFJO2dCQUNKLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsQ0FDMUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsTUFBVztRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLDRCQUE0QixFQUMvQyxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O01BR0U7SUFDRixVQUFVLENBQUMsTUFBVztRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHlCQUF5QixFQUM1QyxNQUFNLEVBQ04sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRztJQUNILFFBQVE7SUFDUixHQUFHO0lBRUg7OztNQUdFO0lBQ0YsUUFBUSxDQUFDLElBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLEVBQ3hDLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHVCQUF1QixFQUMxQyxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7OEdBaGhCVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlSZXN1bHQsIEJyb2FkY2FzdE1lc3NhZ2VJbmZvLCBCcm9hZGNhc3RTZXJ2aWNlLCBJTm9kZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24sIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFdm9sdXRpb25Mb2dpbkluZm8sIEV2b2x1dGlvbkxvZ2luUmVzdWx0LCBFdm9sdXRpb25TZXJ2aWNlRmxhZ3MsIEV2b2x1dGlvblVzZXJMaW5rIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBFdm9sdXRpb25NZXNzYWdlcyB9IGZyb20gJy4uL21lc3NhZ2VzJztcclxuaW1wb3J0IHsgTG9naW5PQXV0aFR5cGUgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLm9hdXRoJztcclxuXHJcblxyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZvbHV0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG5cclxuICBwcml2YXRlIGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfc2VydmljZVVyaTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZ2V0IHNlcnZpY2VVcmkoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZVVyaTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmxhZ3M6IEV2b2x1dGlvblNlcnZpY2VGbGFncyA9IEV2b2x1dGlvblNlcnZpY2VGbGFncy5Ob25lO1xyXG4gIGdldCBmbGFncygpOiBFdm9sdXRpb25TZXJ2aWNlRmxhZ3Mge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZsYWdzO1xyXG4gIH1cclxuICBwcml2YXRlIF9sb2dpbkluZm86IEV2b2x1dGlvbkxvZ2luSW5mbyB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBsb2dpbkluZm8oKTogRXZvbHV0aW9uTG9naW5JbmZvIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuX2xvZ2luSW5mbykge1xyXG4gICAgICBjb25zdCBsb2dpbkluZm8gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2xpcHBlcl9sb2dpbl9ldm9sdXRpb24nKTtcclxuICAgICAgaWYgKGxvZ2luSW5mbykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLl9sb2dpbkluZm8gPSBKU09OLnBhcnNlKGxvZ2luSW5mbykgYXMgRXZvbHV0aW9uTG9naW5JbmZvO1xyXG4gICAgICAgIH0gY2F0Y2ggeyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9sb2dpbkluZm87XHJcbiAgfVxyXG4gIHB1YmxpYyByZWFkb25seSBsb2dnZWRJbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2dpbmdJbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHNlcnZpY2VVcmkgOiB0aGUgc2VydmljZSB1cmlcclxuICAgKiBAcGFyYW0gZmxhZ3M6IHRoZSBzZXJ2aWNlIGZsYWdzLiBEZWZhdWx0IGlzIG5vbmUuXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShcclxuICAgIHNlcnZpY2VVcmk6IHN0cmluZyxcclxuICAgIGZsYWdzOiBFdm9sdXRpb25TZXJ2aWNlRmxhZ3MgPSBFdm9sdXRpb25TZXJ2aWNlRmxhZ3MuTm9uZSkge1xyXG4gICAgLy8gQ3JlYXRlIHVuaXF1ZSBjbGllbnQgaWRcclxuICAgIGlmICghbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V2b2x1dGlvbl9jbGllbnRfaWQnKSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZXZvbHV0aW9uX2NsaWVudF9pZCcsIFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplXHJcbiAgICB0aGlzLl9zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuICAgIHRoaXMuX2ZsYWdzID0gZmxhZ3M7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gbWVzc2FnZSBicm9hZGNhc3RpbmdcclxuICAgIGlmICghdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbiA9IHRoaXMuYnJvYWRjYXN0U2VydmljZS5nZXRNZXNzYWdlKCkuc3Vic2NyaWJlKChtZXNzYWdlOiBCcm9hZGNhc3RNZXNzYWdlSW5mbykgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBFdm9sdXRpb25NZXNzYWdlcy5MT0dJTl9DSEFOR0VEKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbihcclxuICAgICAgICAgICAgICBtZXNzYWdlLmRhdGEuZW1haWwsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLm9hdXRoLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZGF0YS5vYXV0aEFjY2Vzc1Rva2VuKS5zdWJzY3JpYmUoKHI6IEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghci5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlLCBudWxsLCBcIkVycm9yZSBkaSBFdm9sdXRpb25cIik7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLmZsYWdzICYgRXZvbHV0aW9uU2VydmljZUZsYWdzLkRpc3BsYXlDb25uZWN0aW9uU3RhdGVNZXNzYWdlcykgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdDb25uZXNzbyBhIEV2b2x1dGlvbicsIDE1MDAsICdwb3dlcicpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pZCA9PT0gRXZvbHV0aW9uTWVzc2FnZXMuTE9HT1VUKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5sb2dnZWRJbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoXCI8cD5cIiArIHIubWVzc2FnZSArIFwiPC9wPjxicj48YnI+PGhyPjxwIGNsYXNzPSdzbWFsbCc+PGk+UGVyIGVsaW1pbmFyZSBsYSBjb25maWd1cmF6aW9uZSBkaSBFdm9sdXRpb24gYWNjZWRlcmUgYTo8YnI+PGI+bWVudSA+IHBlcnNvbmFsaXp6YSA+IGNvbGxlZ2FtZW50aTwvYj48L2k+PC9wPlwiLCBudWxsLCBcIkVycm9yZSBkaSBFdm9sdXRpb25cIik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgodGhpcy5mbGFncyAmIEV2b2x1dGlvblNlcnZpY2VGbGFncy5EaXNwbGF5Q29ubmVjdGlvblN0YXRlTWVzc2FnZXMpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ0Rpc2Nvbm5lc3NvIGRhIEV2b2x1dGlvbicsIDE1MDAsICdwb3dlcl9vZmYnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbHVhdGUgY3VycmVudCBzZXNzaW9uIHN0b3JhZ2UgaW4gY2FzZSBvZiBwYWdlIHJlZnJlc2ggKEY1KVxyXG4gICAgaWYgKCF0aGlzLmxvZ2dlZEluKCkgJiYgdGhpcy5nZXRUb2tlbigpKSB7XHJcbiAgICAgIC8vIEF1dG8gbG9naW5cclxuICAgICAgdGhpcy5sb2dnZWRJbi5zZXQodHJ1ZSk7XHJcbiAgICAgIC8vIE5vdGlmeVxyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoRXZvbHV0aW9uTWVzc2FnZXMuTE9HSU5fQ09NUExFVEVEKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4qIFNldCBKV1QgdG9rZW5cclxuKiBAcGFyYW0gdmFsdWUgOiB0aGUgbG9naW4gcmVzdWx0XHJcbiovXHJcbiAgcHJpdmF0ZSBzZXRUb2tlbih2YWx1ZTogRXZvbHV0aW9uTG9naW5SZXN1bHQpIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2V2b2x1dGlvbl9qd3QnLCB2YWx1ZS50b2tlbik7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdldm9sdXRpb25fand0X3JlZnJlc2gnLCB2YWx1ZS5yZWZyZXNoVG9rZW4gPz8gJycpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBjdXJyZW50IEpXVCB0b2tlblxyXG4gICAqIEBwYXJhbSByZWZyZXNoOiB0cnVlIHRvIGdldCB0aGUgcmVmcmVzaCB0b2tlbi4gRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgKi9cclxuICBnZXRUb2tlbihyZWZyZXNoOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShyZWZyZXNoID8gJ2V2b2x1dGlvbl9qd3RfcmVmcmVzaCcgOiAnZXZvbHV0aW9uX2p3dCcpO1xyXG4gICAgaWYgKHRva2VuICYmIHRva2VuWzBdID09PSAnXCInKSB7XHJcbiAgICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9rZW4gPz8gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU3RvcmUgbG9naW4gaW5mb1xyXG4gKi9cclxuICBzdG9yZUxvZ2luKCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2V2b2x1dGlvbl9sb2dpbicsIEpTT04uc3RyaW5naWZ5KHRoaXMuX2xvZ2luSW5mbykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFBlcmZvcm0gYXV0byBsb2dpbiB1c2luZyBjdXJyZW50IGxpbmsgZGF0YVxyXG4gICAqIEBwYXJhbSBlbWFpbDogdGhlIG9wdGlvbmFsIGVtYWlsIGlmIHVzaW5nIE9BdXRoMlxyXG4gICAqIEBwYXJtYSBwYXNzd29yZDogdGhlIG9wdGlvbmFsIHBhc3N3b3JkIGlmIHVzaW5nIE9BdXRoMlxyXG4gICAqIEBwYXJhbSByZW1lbWJlcjogcmVtZW1iZXIgY3JlZGVudGlhbHMgXHJcbiAgICogQHBhcmFtIG9hdXRoOiB0aGUgb3B0aW9uYWwgb3BlbiBhdXRoZW50aWNhdGlvbiBzdXBwb3J0ZWRcclxuICAgKiBAcGFyYW0gb2F1dGhBY2Nlc3NUb2tlbjogdGhlIG9wdGlvbmFsIE9BdXRoMiBhY2Nlc3MgdG9rZW5cclxuICogQHBhcmFtIG9uU3VjY2VzOiBmdW5jdGlvbiB0byBleGVjdXRlIG9uIHNlY2Nlc3NcclxuICovXHJcbiAgYXV0b0xvZ2luKFxyXG4gICAgZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcmVtZW1iZXI6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gZmFsc2UsXHJcbiAgICBvYXV0aDogTG9naW5PQXV0aFR5cGUgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgb25TdWNjZXM6IEZ1bmN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwpOiBib29sZWFuIHtcclxuICAgIHRoaXMubG9naW4oZW1haWwsIHBhc3N3b3JkLCByZW1lbWJlciwgb2F1dGgsIG9hdXRoQWNjZXNzVG9rZW4pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSwgbnVsbCwgXCJFcnJvcmUgaW4gRXZvbHV0aW9uXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ0Nvbm5lc3NvIGFkIEV2b2x1dGlvbicsIDE1MDAsICdwb3dlcicpO1xyXG4gICAgICAgICAgaWYgKG9uU3VjY2VzKSB7XHJcbiAgICAgICAgICAgIG9uU3VjY2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBhdXRvIGxvZ291dFxyXG4gICAqIEBwYXJhbSBvblN1Y2NlczogZnVuY3Rpb24gdG8gZXhlY3V0ZSBvbiBzZWNjZXNzXHJcbiAgICovXHJcbiAgYXV0b0xvZ291dChcclxuICAgIG9uU3VjY2VzOiBGdW5jdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMubG9nZ2VkSW4oKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5sb2dvdXQoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSwgbnVsbCwgXCJFcnJvcmUgaW4gRXZvbHV0aW9uXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ0Rpc2Nvbm5lc3NvIGRhIEV2b2x1dGlvbicsIDE1MDAsICdwb3dlcl9vZmYnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhcigpXHJcbiAgICAgICAgaWYgKG9uU3VjY2VzKSB7XHJcbiAgICAgICAgICBvblN1Y2NlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGxvZ2luICAgXHJcbiAgICogQHBhcmFtIGVtYWlsOiB0aGUgb3B0aW9uYWwgZW1haWwgaWYgdXNpbmcgT0F1dGgyXHJcbiAgICogQHBhcm1hIHBhc3N3b3JkOiB0aGUgb3B0aW9uYWwgcGFzc3dvcmQgaWYgdXNpbmcgT0F1dGgyXHJcbiAgICogQHBhcmFtIHJlbWVtYmVyOiByZW1lbWJlciBjcmVkZW50aWFscyBcclxuICAgKiBAcGFyYW0gb2F1dGg6IHRoZSBvcHRpb25hbCBvcGVuIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRlZFxyXG4gICAqIEBwYXJhbSBvYXV0aEFjY2Vzc1Rva2VuOiB0aGUgb3B0aW9uYWwgT0F1dGgyIGFjY2VzcyB0b2tlblxyXG4gICAqIEByZXR1cm5zOiB0aGUgbG9naW4gcmVzdWx0XHJcbiAgICovXHJcbiAgbG9naW4oZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcmVtZW1iZXI6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gZmFsc2UsXHJcbiAgICBvYXV0aDogTG9naW5PQXV0aFR5cGUgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICB0aGlzLmxvZ2dpbmdJbi5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4+KFxyXG4gICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2xvZ2luMicsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdXNlcjogb2F1dGggPyBudWxsIDogZW1haWwsXHJcbiAgICAgICAgICBwYXNzd29yZDogb2F1dGggPyBudWxsIDogcGFzc3dvcmQsXHJcbiAgICAgICAgICBjbGllbnRJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJldm9sdXRpb25fY2xpZW50X2lkXCIpLFxyXG4gICAgICAgICAgT0FVVEg6IG9hdXRoXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOlxyXG4gICAgICAgICAgICAhb2F1dGhcclxuICAgICAgICAgICAgICA/IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgOiBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAgICAgICAgICAgLnNldChcIkF1dGhvcml6YXRpb25cIiwgb2F1dGhBY2Nlc3NUb2tlbiA/PyAnJylcclxuICAgICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUxvZ2luRXJyb3IoKTtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgbWFwKChyOiBBcGlSZXN1bHQ8RXZvbHV0aW9uTG9naW5SZXN1bHQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dpbmdJbi5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAvLyBTdG9yZSBhY2Nlc3MgdG9rZW5cclxuICAgICAgICAgICAgdGhpcy5zZXRUb2tlbihyLnZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgbG9naW5JbmZvOiBFdm9sdXRpb25Mb2dpbkluZm8gPSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dDogci52YWx1ZS5jb250ZXh0LFxyXG4gICAgICAgICAgICAgIE9BVVRIOiBvYXV0aFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghb2F1dGgpIHtcclxuICAgICAgICAgICAgICBsb2dpbkluZm8udXNlckNyZWRlbnRpYWxzID1cclxuICAgICAgICAgICAgICAgIFN5c3RlbVV0aWxzLmNpcGhlcihcclxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBlbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXI6IHJlbWVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICB9KSwgbG9naW5JbmZvLmNvbnRleHQudXNlcklkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2xvZ2luSW5mbyA9IGxvZ2luSW5mbztcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxvZ2luKCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VkSW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICAvLyBOb3RpZnlcclxuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gbG9nb3V0XHJcbiAgICovXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PGFueT4odGhpcy5fc2VydmljZVVyaSArICcvbG9nb3V0Jywge30pLnBpcGUoXHJcbiAgICAgIG1hcChyID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuIHJcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKF9lKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIFN3aXRjaCB0aGUgY3VycmVudCBsb2dpbiB0byBhIG5ldyBvbmUgd2l0aCB0aGUgc2FtZSBjcmVkZW50aWFscyBleGNlcHQgcm9sZSBwb3NzaWJseSAoY29udGV4dCBjaGFuZ2UpXHJcbiAgKiBAcGFyYW0gaWQgOiBuZXcgdXNlciBpZFxyXG4gICovXHJcbiAgbG9naW5Td2l0Y2goaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8RXZvbHV0aW9uTG9naW5SZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dpbi1zd2l0Y2gvJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1c2VySWQ6IGlkLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZXZvbHV0aW9uX2NsaWVudF9pZFwiKVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlTG9naW5FcnJvcigpO1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBtYXAoKHI6IEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luLnNldChmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIFN0b3JlIGFjY2VzcyB0b2tlblxyXG4gICAgICAgICAgICB0aGlzLnNldFRva2VuKHIudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9sb2dpbkluZm8gPSByLnZhbHVlLmNvbnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VkSW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICAvLyBOb3RpZnlcclxuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEhhbmRsZSBsb2dpbiBlcnJvclxyXG4gKi9cclxuICBwcml2YXRlIGhhbmRsZUxvZ2luRXJyb3IoKSB7XHJcbiAgICB0aGlzLmxvZ2dpbmdJbi5zZXQoZmFsc2UpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2V2b2x1dGlvbl9sb2dpbicpO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBsb2dpbiByZWZyZXNoIHRpbWVyIGFuZCBsb2dpbiBzdGF0ZVxyXG4gICAqL1xyXG4gIHJlc2V0KCkge1xyXG4gICAgLy8gQ2xlYXIgbG9naW4gaW5mb1xyXG4gICAgdGhpcy5fbG9naW5JbmZvID0gbnVsbDtcclxuICAgIC8vIExvZ2dlZCBvdXRcclxuICAgIHRoaXMubG9nZ2VkSW4uc2V0KGZhbHNlKTtcclxuICAgIC8vIE5vdGlmeVxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR09VVF9DT01QTEVURUQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgbG9naW4gZGF0YVxyXG4gICAqL1xyXG4gIGNsZWFyKCkge1xyXG4gICAgLy8gQ2xlYXIgbG9jYWwgc3RvcmFnZVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZXZvbHV0aW9uX2p3dCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZXZvbHV0aW9uX2p3dF9yZWZyZXNoJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdldm9sdXRpb25fb2F1dGgnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdldm9sdXRpb25fbG9naW4nKTtcclxuICAgIC8vIFJlc2V0IGxvZ2luXHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFBlcmZvcm0gdG9rZW4gcmVmcmVzaFxyXG4gICovXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9yZWZyZXNoMi8/dG9rZW49JyArIHRoaXMuZ2V0VG9rZW4odHJ1ZSlcclxuICAgICkucGlwZShtYXAoKHI6IEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgLy8gVXBkYXRlIHRva2VuXHJcbiAgICAgIHRoaXMuc2V0VG9rZW4oci52YWx1ZSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBmb2xkZXJzIGluIGEgdHJlZSBvZiBOb2RlIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZm9sZGVycyA6IHRoZSBzdWJmb2xkZXJzIGdyb3VwIG9yIG51bGwgdG8gcm9vdFxyXG4gICAqL1xyXG4gIHRvTm9kZXMoZm9sZGVyczogSU5vZGVbXSk6IElOb2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvTm9kZXMoZm9sZGVycywgbnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0IGZvbGRlcnMgaW4gYSB0cmVlIG9mIE5vZGUgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBmb2xkZXJzIDogdGhlIGNoaWxkcmVuIGdyb3VwIG9yIG51bGwgdG8gcm9vdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3RvTm9kZXMoZm9sZGVyczogSU5vZGVbXSwgcGFyZW50OiBJTm9kZSk6IElOb2RlW10ge1xyXG4gICAgbGV0IG5vZGVzOiBJTm9kZVtdID0gW107XHJcbiAgICBmb2xkZXJzLmZvckVhY2goKG4pID0+IHtcclxuICAgICAgbGV0IG5vZGU6IElOb2RlID0ge1xyXG4gICAgICAgIGlkOiBuLmlkLFxyXG4gICAgICAgIG5hbWU6IG4ubmFtZSxcclxuICAgICAgICBjb3VudDogbi5jb3VudCxcclxuICAgICAgICBwYXJlbnQ6IHBhcmVudCxcclxuICAgICAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgICAgICBiYWc6IG4sXHJcbiAgICAgIH07XHJcbiAgICAgIG5vZGUuY2hpbGRyZW4gPVxyXG4gICAgICAgIG4uY2hpbGRyZW4gJiYgbi5jaGlsZHJlbi5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuX3RvTm9kZXMobi5jaGlsZHJlbiwgbm9kZSlcclxuICAgICAgICAgIDogW107XHJcbiAgICAgIG5vZGVzLnB1c2gobm9kZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBub2RlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIHRoZSB0YXhvbm9teVxyXG4gICAqL1xyXG4gIGdldFRheG9ub215KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy90YXhvbm9teSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhdXRob3JpdGllc1xyXG4gICAqL1xyXG4gIGdldEF1dGhvcml0aWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9jb21wbGlhbmNlL2F1dGhvcml0aWVzJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vLy9cclxuICAvLyBDT05URVhUXHJcbiAgLy8vL1xyXG4gIC8qKlxyXG4gICAqIENoYW5nZSBjb250ZXh0XHJcbiAgICovXHJcbiAgY2hhbmdlQ29udGV4dChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvY29tcGxpYW5jZS9jb250ZXh0JyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8vL1xyXG4gIC8vIFJFR0lTVEVSU1xyXG4gIC8vLy9cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGEgcmVnaXN0ZXJcclxuICAgKiBAcGFyYW0gaWQgdGhlIHJlZ2lzdGVyIGlkXHJcbiAgICovXHJcbiAgZ2V0UmVnaXN0ZXIoaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgJy9jb21wbGlhbmNlL3JlZ2lzdGVycy8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ29sbGVjdCByZWdpc3RlciBwcm9maWxlc1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIGNvbGxlY3RSZWdpc3RlclByb2ZpbGVzKHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgJy9jb21wbGlhbmNlL3JlZ2lzdGVycy9wcm9maWxlcy9jb2xsZWN0JyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLy9cclxuICAvLyBMQVdTXHJcbiAgLy8vL1xyXG5cclxuICAvKipcclxuICAgKiBBZGQgb25lIG9yIG1vcmUgbGF3c1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIGFkZExhd3MocGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8YW55Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2NvbXBsaWFuY2UvbGF3cy9hZGQnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLy8vXHJcbiAgLy8gQUNUSVZJVElFU1xyXG4gIC8vLy9cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYWN0aXZpdHkgZ3JvdXBzXHJcbiAgICogQHBhcmFtIGdyb3VwIHRoZSBncm91cCBudW1iZXJcclxuICAgKiBAcGFyYW0gc2l0ZSB0aGUgc2l0ZSBpZFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwcyhncm91cDogbnVtYmVyID0gMSwgc2l0ZTogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgKHNpdGVcclxuICAgICAgICA/ICcvY29tcGxpYW5jZS9ncm91cHMvP2dyb3VwPScgK1xyXG4gICAgICAgIGdyb3VwICtcclxuICAgICAgICAnJnNpdGU9JyArXHJcbiAgICAgICAgc2l0ZVxyXG4gICAgICAgIDogJy9jb21wbGlhbmNlL2dyb3Vwcy8/Z3JvdXA9JyArIGdyb3VwKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBhY3Rpdml0aWVzXHJcbiAgICogQHBhcmFtIHBhcmFtcyBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgYWRkQWN0aXZpdGllcyhwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvY29tcGxpYW5jZS9hY3Rpdml0aWVzL2FkZCcsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRXhwb3J0IGxhd3NcclxuICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVyc1xyXG4gICovXHJcbiAgZXhwb3J0TGF3cyhwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9jb21wbGlhbmNlL2xhd3MvZXhwb3J0JyxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLy9cclxuICAvLyBMSU5LU1xyXG4gIC8vL1xyXG5cclxuICAvKipcclxuICAqIFNhdmUgYSB1c2VyIGxpbmtcclxuICAqIEBwYXJhbSBpdGVtOiB0aGUgdXNlciBsaW5rXHJcbiAgKi9cclxuICBzYXZlTGluayhpdGVtOiBFdm9sdXRpb25Vc2VyTGluaykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxib29sZWFuPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2FjY291bnQvbGlua3Mvc2F2ZScsXHJcbiAgICAgIGl0ZW1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgYSB1c2VyIGxpbmtcclxuICAgKiBAcGFyYW0gaXRlbTogdGhlIHVzZXIgbGlua1xyXG4gICAqL1xyXG4gIGRlbGV0ZUxpbmsoaXRlbTogRXZvbHV0aW9uVXNlckxpbmspIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Ym9vbGVhbj4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9hY2NvdW50L2xpbmtzL2RlbGV0ZScsXHJcbiAgICAgIGl0ZW1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZvbHV0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvZXZvbHV0aW9uLmNvbW1vbi9jb21tb24vc2VydmljZXMvZXZvbHV0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFtQyxnQkFBZ0IsRUFBUyxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUE0QyxxQkFBcUIsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVWhELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFNVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGlDQUE0QixHQUF5QixJQUFJLENBQUM7UUFDMUQsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBSWxDLFdBQU0sR0FBMEIscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBSTNELGVBQVUsR0FBOEIsSUFBSSxDQUFDO1FBWXJDLGFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztLQW9mcEQ7SUF4Z0JDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNsRSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQztvQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUF1QixDQUFDO2dCQUNoRSxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBTUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FDUixVQUFrQixFQUNsQixRQUErQixxQkFBcUIsQ0FBQyxJQUFJO1FBQ3pELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7WUFDakQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUE2QixFQUFFLEVBQUU7Z0JBQ2pILElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDbkQsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsS0FBSyxDQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDckIsSUFBSSxFQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFOzRCQUM5RSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0NBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztpQ0FDOUQsQ0FBQztnQ0FDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29DQUM1RSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0NBQ2xFLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQztxQkFBTSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsbUpBQW1KLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7NEJBQ2pPLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29DQUM1RSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0NBQzFFLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNmLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLGFBQWE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixTQUFTO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBRUgsQ0FBQztJQUlEOzs7SUFHQTtJQUNRLFFBQVEsQ0FBQyxLQUEyQjtRQUMxQyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFHRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsVUFBbUIsS0FBSztRQUMvQixJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O0tBRUM7SUFDRCxVQUFVO1FBQ1IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7Ozs7S0FRQztJQUNELFNBQVMsQ0FDUCxRQUFtQyxJQUFJLEVBQ3ZDLFdBQXNDLElBQUksRUFDMUMsV0FBdUMsS0FBSyxFQUM1QyxRQUEyQyxJQUFJLEVBQy9DLG1CQUE4QyxJQUFJLEVBQ2xELFdBQXdDLElBQUk7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7YUFDM0QsU0FBUyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFFBQVEsRUFBRSxDQUFDO2dCQUNiLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQ1IsV0FBd0MsSUFBSTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN0QixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO1lBQ0gsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUNaLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsUUFBUSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsUUFBbUMsSUFBSSxFQUMzQyxXQUFzQyxJQUFJLEVBQzFDLFdBQXVDLEtBQUssRUFDNUMsUUFBMkMsSUFBSSxFQUMvQyxtQkFBOEMsSUFBSTtRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLElBQUksQ0FDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFDNUI7WUFDRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQ2pDLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDO1lBQ3JELEtBQUssRUFBRSxLQUFLO1NBQ2IsRUFDRDtZQUNFLE9BQU8sRUFDTCxDQUFDLEtBQUs7Z0JBQ0osQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFO2dCQUNuQixDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUU7cUJBQ2hCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1NBQ3BELENBQUM7YUFDSCxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLHFCQUFxQjtnQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUF1QjtvQkFDcEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU87b0JBQ2hDLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLFNBQVMsQ0FBQyxlQUFlO3dCQUN2QixXQUFXLENBQUMsTUFBTSxDQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDOzRCQUNiLEtBQUssRUFBRSxLQUFLOzRCQUNaLFFBQVEsRUFBRSxRQUFROzRCQUNsQixRQUFRLEVBQUUsUUFBUTt5QkFDbkIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLFNBQVM7Z0JBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUV2RSxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNyRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBR0Q7OztNQUdFO0lBQ0YsV0FBVyxDQUFDLEVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixJQUFJLENBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsRUFDbkM7WUFDRSxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDO1NBQ3RELENBQ0Y7YUFDQSxJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBa0MsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLHFCQUFxQjtnQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixTQUFTO2dCQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdkUsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7S0FFQztJQUNPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFN0MsQ0FBQztJQUdEOztPQUVHO0lBQ0gsS0FBSztRQUNILG1CQUFtQjtRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixhQUFhO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsU0FBUztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsc0JBQXNCO1FBQ3RCLGNBQWMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsY0FBYyxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ25ELGNBQWMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3QyxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsY0FBYztRQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRDs7TUFFRTtJQUNGLE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQzdELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQWtDLEVBQUUsRUFBRTtZQUNoRCxlQUFlO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsT0FBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssUUFBUSxDQUFDLE9BQWdCLEVBQUUsTUFBYTtRQUM5QyxJQUFJLEtBQUssR0FBWSxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3BCLElBQUksSUFBSSxHQUFVO2dCQUNoQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxNQUFNLEVBQUUsTUFBTTtnQkFDZCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxHQUFHLEVBQUUsQ0FBQzthQUNQLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUTtnQkFDWCxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO29CQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQzdDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSTtJQUNKLFVBQVU7SUFDVixJQUFJO0lBQ0o7O09BRUc7SUFDSCxhQUFhLENBQUMsTUFBVztRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixFQUN4QyxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO0lBQ0osWUFBWTtJQUNaLElBQUk7SUFHSjs7O09BR0c7SUFDSCxXQUFXLENBQUMsRUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVztZQUNoQix3QkFBd0IsR0FBRyxFQUFFLENBQzlCLENBQUM7SUFDSixDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsdUJBQXVCLENBQUMsTUFBVztRQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVztZQUNoQix3Q0FBd0MsRUFDeEMsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBR0QsSUFBSTtJQUNKLE9BQU87SUFDUCxJQUFJO0lBRUo7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLE1BQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxzQkFBc0IsRUFDekMsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSTtJQUNKLGFBQWE7SUFDYixJQUFJO0lBRUo7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxRQUFnQixDQUFDLEVBQUUsT0FBZSxJQUFJO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXO1lBQ2hCLENBQUMsSUFBSTtnQkFDSCxDQUFDLENBQUMsNEJBQTRCO29CQUM5QixLQUFLO29CQUNMLFFBQVE7b0JBQ1IsSUFBSTtnQkFDSixDQUFDLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE1BQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsRUFDL0MsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7OztNQUdFO0lBQ0YsVUFBVSxDQUFDLE1BQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsRUFDNUMsTUFBTSxFQUNOLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUc7SUFDSCxRQUFRO0lBQ1IsR0FBRztJQUVIOzs7TUFHRTtJQUNGLFFBQVEsQ0FBQyxJQUF1QjtRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixFQUN4QyxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsSUFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsRUFDMUMsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDOzhHQWhoQlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpUmVzdWx0LCBCcm9hZGNhc3RNZXNzYWdlSW5mbywgQnJvYWRjYXN0U2VydmljZSwgSU5vZGUsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBvZiwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRXZvbHV0aW9uTG9naW5JbmZvLCBFdm9sdXRpb25Mb2dpblJlc3VsdCwgRXZvbHV0aW9uU2VydmljZUZsYWdzLCBFdm9sdXRpb25Vc2VyTGluayB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcclxuaW1wb3J0IHsgRXZvbHV0aW9uTWVzc2FnZXMgfSBmcm9tICcuLi9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IExvZ2luT0F1dGhUeXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aS5vYXV0aCc7XHJcblxyXG5cclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2b2x1dGlvblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgX3NlcnZpY2VVcmk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBzZXJ2aWNlVXJpKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VVcmk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZsYWdzOiBFdm9sdXRpb25TZXJ2aWNlRmxhZ3MgPSBFdm9sdXRpb25TZXJ2aWNlRmxhZ3MuTm9uZTtcclxuICBnZXQgZmxhZ3MoKTogRXZvbHV0aW9uU2VydmljZUZsYWdzIHtcclxuICAgIHJldHVybiB0aGlzLl9mbGFncztcclxuICB9XHJcbiAgcHJpdmF0ZSBfbG9naW5JbmZvOiBFdm9sdXRpb25Mb2dpbkluZm8gfCBudWxsID0gbnVsbDtcclxuICBnZXQgbG9naW5JbmZvKCk6IEV2b2x1dGlvbkxvZ2luSW5mbyB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLl9sb2dpbkluZm8pIHtcclxuICAgICAgY29uc3QgbG9naW5JbmZvID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NsaXBwZXJfbG9naW5fZXZvbHV0aW9uJyk7XHJcbiAgICAgIGlmIChsb2dpbkluZm8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5fbG9naW5JbmZvID0gSlNPTi5wYXJzZShsb2dpbkluZm8pIGFzIEV2b2x1dGlvbkxvZ2luSW5mbztcclxuICAgICAgICB9IGNhdGNoIHsgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fbG9naW5JbmZvO1xyXG4gIH1cclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyByZWFkb25seSBsb2dnaW5nSW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlVXJpIDogdGhlIHNlcnZpY2UgdXJpXHJcbiAgICogQHBhcmFtIGZsYWdzOiB0aGUgc2VydmljZSBmbGFncy4gRGVmYXVsdCBpcyBub25lLlxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoXHJcbiAgICBzZXJ2aWNlVXJpOiBzdHJpbmcsXHJcbiAgICBmbGFnczogRXZvbHV0aW9uU2VydmljZUZsYWdzID0gRXZvbHV0aW9uU2VydmljZUZsYWdzLk5vbmUpIHtcclxuICAgIC8vIENyZWF0ZSB1bmlxdWUgY2xpZW50IGlkXHJcbiAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdldm9sdXRpb25fY2xpZW50X2lkJykpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2V2b2x1dGlvbl9jbGllbnRfaWQnLCBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZVxyXG4gICAgdGhpcy5fc2VydmljZVVyaSA9IHNlcnZpY2VVcmk7XHJcbiAgICB0aGlzLl9mbGFncyA9IGZsYWdzO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIG1lc3NhZ2UgYnJvYWRjYXN0aW5nXHJcbiAgICBpZiAoIXRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuZ2V0TWVzc2FnZSgpLnN1YnNjcmliZSgobWVzc2FnZTogQnJvYWRjYXN0TWVzc2FnZUluZm8pID0+IHtcclxuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gRXZvbHV0aW9uTWVzc2FnZXMuTE9HSU5fQ0hBTkdFRCkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW4oXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLmVtYWlsLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZGF0YS5wYXNzd29yZCxcclxuICAgICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZGF0YS5vYXV0aCxcclxuICAgICAgICAgICAgICBtZXNzYWdlLmRhdGEub2F1dGhBY2Nlc3NUb2tlbikuc3Vic2NyaWJlKChyOiBBcGlSZXN1bHQ8RXZvbHV0aW9uTG9naW5SZXN1bHQ+KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSwgbnVsbCwgXCJFcnJvcmUgZGkgRXZvbHV0aW9uXCIpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICgodGhpcy5mbGFncyAmIEV2b2x1dGlvblNlcnZpY2VGbGFncy5EaXNwbGF5Q29ubmVjdGlvblN0YXRlTWVzc2FnZXMpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnQ29ubmVzc28gYSBFdm9sdXRpb24nLCAxNTAwLCAncG93ZXInKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaWQgPT09IEV2b2x1dGlvbk1lc3NhZ2VzLkxPR09VVCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9nZ2VkSW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiPHA+XCIgKyByLm1lc3NhZ2UgKyBcIjwvcD48YnI+PGJyPjxocj48cCBjbGFzcz0nc21hbGwnPjxpPlBlciBlbGltaW5hcmUgbGEgY29uZmlndXJhemlvbmUgZGkgRXZvbHV0aW9uIGFjY2VkZXJlIGE6PGJyPjxiPm1lbnUgPiBwZXJzb25hbGl6emEgPiBjb2xsZWdhbWVudGk8L2I+PC9pPjwvcD5cIiwgbnVsbCwgXCJFcnJvcmUgZGkgRXZvbHV0aW9uXCIpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZmxhZ3MgJiBFdm9sdXRpb25TZXJ2aWNlRmxhZ3MuRGlzcGxheUNvbm5lY3Rpb25TdGF0ZU1lc3NhZ2VzKSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdEaXNjb25uZXNzbyBkYSBFdm9sdXRpb24nLCAxNTAwLCAncG93ZXJfb2ZmJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEV2ZWx1YXRlIGN1cnJlbnQgc2Vzc2lvbiBzdG9yYWdlIGluIGNhc2Ugb2YgcGFnZSByZWZyZXNoIChGNSlcclxuICAgIGlmICghdGhpcy5sb2dnZWRJbigpICYmIHRoaXMuZ2V0VG9rZW4oKSkge1xyXG4gICAgICAvLyBBdXRvIGxvZ2luXHJcbiAgICAgIHRoaXMubG9nZ2VkSW4uc2V0KHRydWUpO1xyXG4gICAgICAvLyBOb3RpZnlcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuKiBTZXQgSldUIHRva2VuXHJcbiogQHBhcmFtIHZhbHVlIDogdGhlIGxvZ2luIHJlc3VsdFxyXG4qL1xyXG4gIHByaXZhdGUgc2V0VG9rZW4odmFsdWU6IEV2b2x1dGlvbkxvZ2luUmVzdWx0KSB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdldm9sdXRpb25fand0JywgdmFsdWUudG9rZW4pO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZXZvbHV0aW9uX2p3dF9yZWZyZXNoJywgdmFsdWUucmVmcmVzaFRva2VuID8/ICcnKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gY3VycmVudCBKV1QgdG9rZW5cclxuICAgKiBAcGFyYW0gcmVmcmVzaDogdHJ1ZSB0byBnZXQgdGhlIHJlZnJlc2ggdG9rZW4uIERlZmF1bHQgaXMgZmFsc2UuXHJcbiAgICovXHJcbiAgZ2V0VG9rZW4ocmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIGxldCB0b2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocmVmcmVzaCA/ICdldm9sdXRpb25fand0X3JlZnJlc2gnIDogJ2V2b2x1dGlvbl9qd3QnKTtcclxuICAgIGlmICh0b2tlbiAmJiB0b2tlblswXSA9PT0gJ1wiJykge1xyXG4gICAgICByZXR1cm4gdG9rZW4uc3Vic3RyaW5nKDEsIHRva2VuLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRva2VuID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFN0b3JlIGxvZ2luIGluZm9cclxuICovXHJcbiAgc3RvcmVMb2dpbigpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdldm9sdXRpb25fbG9naW4nLCBKU09OLnN0cmluZ2lmeSh0aGlzLl9sb2dpbkluZm8pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBQZXJmb3JtIGF1dG8gbG9naW4gdXNpbmcgY3VycmVudCBsaW5rIGRhdGFcclxuICAgKiBAcGFyYW0gZW1haWw6IHRoZSBvcHRpb25hbCBlbWFpbCBpZiB1c2luZyBPQXV0aDJcclxuICAgKiBAcGFybWEgcGFzc3dvcmQ6IHRoZSBvcHRpb25hbCBwYXNzd29yZCBpZiB1c2luZyBPQXV0aDJcclxuICAgKiBAcGFyYW0gcmVtZW1iZXI6IHJlbWVtYmVyIGNyZWRlbnRpYWxzIFxyXG4gICAqIEBwYXJhbSBvYXV0aDogdGhlIG9wdGlvbmFsIG9wZW4gYXV0aGVudGljYXRpb24gc3VwcG9ydGVkXHJcbiAgICogQHBhcmFtIG9hdXRoQWNjZXNzVG9rZW46IHRoZSBvcHRpb25hbCBPQXV0aDIgYWNjZXNzIHRva2VuXHJcbiAqIEBwYXJhbSBvblN1Y2NlczogZnVuY3Rpb24gdG8gZXhlY3V0ZSBvbiBzZWNjZXNzXHJcbiAqL1xyXG4gIGF1dG9Mb2dpbihcclxuICAgIGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIHBhc3N3b3JkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIHJlbWVtYmVyOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IGZhbHNlLFxyXG4gICAgb2F1dGg6IExvZ2luT0F1dGhUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsXHJcbiAgICBvYXV0aEFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9uU3VjY2VzOiBGdW5jdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLmxvZ2luKGVtYWlsLCBwYXNzd29yZCwgcmVtZW1iZXIsIG9hdXRoLCBvYXV0aEFjY2Vzc1Rva2VuKVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBBcGlSZXN1bHQ8RXZvbHV0aW9uTG9naW5SZXN1bHQ+KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UsIG51bGwsIFwiRXJyb3JlIGluIEV2b2x1dGlvblwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdDb25uZXNzbyBhZCBFdm9sdXRpb24nLCAxNTAwLCAncG93ZXInKTtcclxuICAgICAgICAgIGlmIChvblN1Y2Nlcykge1xyXG4gICAgICAgICAgICBvblN1Y2NlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gYXV0byBsb2dvdXRcclxuICAgKiBAcGFyYW0gb25TdWNjZXM6IGZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gc2VjY2Vzc1xyXG4gICAqL1xyXG4gIGF1dG9Mb2dvdXQoXHJcbiAgICBvblN1Y2NlczogRnVuY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCkge1xyXG4gICAgaWYgKCF0aGlzLmxvZ2dlZEluKCkpIHJldHVybjtcclxuICAgIHRoaXMubG9nb3V0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogciA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UsIG51bGwsIFwiRXJyb3JlIGluIEV2b2x1dGlvblwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdEaXNjb25uZXNzbyBkYSBFdm9sdXRpb24nLCAxNTAwLCAncG93ZXJfb2ZmJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKVxyXG4gICAgICAgIGlmIChvblN1Y2Nlcykge1xyXG4gICAgICAgICAgb25TdWNjZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBsb2dpbiAgIFxyXG4gICAqIEBwYXJhbSBlbWFpbDogdGhlIG9wdGlvbmFsIGVtYWlsIGlmIHVzaW5nIE9BdXRoMlxyXG4gICAqIEBwYXJtYSBwYXNzd29yZDogdGhlIG9wdGlvbmFsIHBhc3N3b3JkIGlmIHVzaW5nIE9BdXRoMlxyXG4gICAqIEBwYXJhbSByZW1lbWJlcjogcmVtZW1iZXIgY3JlZGVudGlhbHMgXHJcbiAgICogQHBhcmFtIG9hdXRoOiB0aGUgb3B0aW9uYWwgb3BlbiBhdXRoZW50aWNhdGlvbiBzdXBwb3J0ZWRcclxuICAgKiBAcGFyYW0gb2F1dGhBY2Nlc3NUb2tlbjogdGhlIG9wdGlvbmFsIE9BdXRoMiBhY2Nlc3MgdG9rZW5cclxuICAgKiBAcmV0dXJuczogdGhlIGxvZ2luIHJlc3VsdFxyXG4gICAqL1xyXG4gIGxvZ2luKGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIHBhc3N3b3JkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIHJlbWVtYmVyOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IGZhbHNlLFxyXG4gICAgb2F1dGg6IExvZ2luT0F1dGhUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsXHJcbiAgICBvYXV0aEFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCkge1xyXG4gICAgdGhpcy5sb2dnaW5nSW4uc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8RXZvbHV0aW9uTG9naW5SZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dpbjInLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXI6IG9hdXRoID8gbnVsbCA6IGVtYWlsLFxyXG4gICAgICAgICAgcGFzc3dvcmQ6IG9hdXRoID8gbnVsbCA6IHBhc3N3b3JkLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZXZvbHV0aW9uX2NsaWVudF9pZFwiKSxcclxuICAgICAgICAgIE9BVVRIOiBvYXV0aFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczpcclxuICAgICAgICAgICAgIW9hdXRoXHJcbiAgICAgICAgICAgICAgPyBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAgICAgICAgIDogbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgICAgIC5zZXQoXCJBdXRob3JpemF0aW9uXCIsIG9hdXRoQWNjZXNzVG9rZW4gPz8gJycpXHJcbiAgICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVMb2dpbkVycm9yKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcCgocjogQXBpUmVzdWx0PEV2b2x1dGlvbkxvZ2luUmVzdWx0PikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dnaW5nSW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgLy8gU3RvcmUgYWNjZXNzIHRva2VuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0VG9rZW4oci52YWx1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvZ2luSW5mbzogRXZvbHV0aW9uTG9naW5JbmZvID0ge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHIudmFsdWUuY29udGV4dC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgIE9BVVRIOiBvYXV0aFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghb2F1dGgpIHtcclxuICAgICAgICAgICAgICBsb2dpbkluZm8udXNlckNyZWRlbnRpYWxzID1cclxuICAgICAgICAgICAgICAgIFN5c3RlbVV0aWxzLmNpcGhlcihcclxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBlbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXI6IHJlbWVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICB9KSwgbG9naW5JbmZvLmNvbnRleHQudXNlcklkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2xvZ2luSW5mbyA9IGxvZ2luSW5mbztcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUxvZ2luKCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VkSW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICAvLyBOb3RpZnlcclxuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gbG9nb3V0XHJcbiAgICovXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PGFueT4odGhpcy5fc2VydmljZVVyaSArICcvbG9nb3V0Jywge30pLnBpcGUoXHJcbiAgICAgIG1hcChyID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuIHJcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKF9lKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIFN3aXRjaCB0aGUgY3VycmVudCBsb2dpbiB0byBhIG5ldyBvbmUgd2l0aCB0aGUgc2FtZSBjcmVkZW50aWFscyBleGNlcHQgcm9sZSBwb3NzaWJseSAoY29udGV4dCBjaGFuZ2UpXHJcbiAgKiBAcGFyYW0gaWQgOiBuZXcgdXNlciBpZFxyXG4gICovXHJcbiAgbG9naW5Td2l0Y2goaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8RXZvbHV0aW9uTG9naW5SZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dpbi1zd2l0Y2gvJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1c2VySWQ6IGlkLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZXZvbHV0aW9uX2NsaWVudF9pZFwiKVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlTG9naW5FcnJvcigpO1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBtYXAoKHI6IEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luLnNldChmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIFN0b3JlIGFjY2VzcyB0b2tlblxyXG4gICAgICAgICAgICB0aGlzLnNldFRva2VuKHIudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9sb2dpbkluZm8gPSByLnZhbHVlLmNvbnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VkSW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICAvLyBOb3RpZnlcclxuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEhhbmRsZSBsb2dpbiBlcnJvclxyXG4gKi9cclxuICBwcml2YXRlIGhhbmRsZUxvZ2luRXJyb3IoKSB7XHJcbiAgICB0aGlzLmxvZ2dpbmdJbi5zZXQoZmFsc2UpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2V2b2x1dGlvbl9sb2dpbicpO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBsb2dpbiByZWZyZXNoIHRpbWVyIGFuZCBsb2dpbiBzdGF0ZVxyXG4gICAqL1xyXG4gIHJlc2V0KCkge1xyXG4gICAgLy8gQ2xlYXIgbG9naW4gaW5mb1xyXG4gICAgdGhpcy5fbG9naW5JbmZvID0gbnVsbDtcclxuICAgIC8vIExvZ2dlZCBvdXRcclxuICAgIHRoaXMubG9nZ2VkSW4uc2V0KGZhbHNlKTtcclxuICAgIC8vIE5vdGlmeVxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKEV2b2x1dGlvbk1lc3NhZ2VzLkxPR09VVF9DT01QTEVURUQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgbG9naW4gZGF0YVxyXG4gICAqL1xyXG4gIGNsZWFyKCkge1xyXG4gICAgLy8gQ2xlYXIgbG9jYWwgc3RvcmFnZVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZXZvbHV0aW9uX2p3dCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZXZvbHV0aW9uX2p3dF9yZWZyZXNoJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdldm9sdXRpb25fb2F1dGgnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdldm9sdXRpb25fbG9naW4nKTtcclxuICAgIC8vIFJlc2V0IGxvZ2luXHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFBlcmZvcm0gdG9rZW4gcmVmcmVzaFxyXG4gICovXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9yZWZyZXNoMi8/dG9rZW49JyArIHRoaXMuZ2V0VG9rZW4odHJ1ZSlcclxuICAgICkucGlwZShtYXAoKHI6IEFwaVJlc3VsdDxFdm9sdXRpb25Mb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgLy8gVXBkYXRlIHRva2VuXHJcbiAgICAgIHRoaXMuc2V0VG9rZW4oci52YWx1ZSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBmb2xkZXJzIGluIGEgdHJlZSBvZiBOb2RlIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZm9sZGVycyA6IHRoZSBzdWJmb2xkZXJzIGdyb3VwIG9yIG51bGwgdG8gcm9vdFxyXG4gICAqL1xyXG4gIHRvTm9kZXMoZm9sZGVyczogSU5vZGVbXSk6IElOb2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvTm9kZXMoZm9sZGVycywgbnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0IGZvbGRlcnMgaW4gYSB0cmVlIG9mIE5vZGUgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBmb2xkZXJzIDogdGhlIGNoaWxkcmVuIGdyb3VwIG9yIG51bGwgdG8gcm9vdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3RvTm9kZXMoZm9sZGVyczogSU5vZGVbXSwgcGFyZW50OiBJTm9kZSk6IElOb2RlW10ge1xyXG4gICAgbGV0IG5vZGVzOiBJTm9kZVtdID0gW107XHJcbiAgICBmb2xkZXJzLmZvckVhY2goKG4pID0+IHtcclxuICAgICAgbGV0IG5vZGU6IElOb2RlID0ge1xyXG4gICAgICAgIGlkOiBuLmlkLFxyXG4gICAgICAgIG5hbWU6IG4ubmFtZSxcclxuICAgICAgICBjb3VudDogbi5jb3VudCxcclxuICAgICAgICBwYXJlbnQ6IHBhcmVudCxcclxuICAgICAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgICAgICBiYWc6IG4sXHJcbiAgICAgIH07XHJcbiAgICAgIG5vZGUuY2hpbGRyZW4gPVxyXG4gICAgICAgIG4uY2hpbGRyZW4gJiYgbi5jaGlsZHJlbi5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuX3RvTm9kZXMobi5jaGlsZHJlbiwgbm9kZSlcclxuICAgICAgICAgIDogW107XHJcbiAgICAgIG5vZGVzLnB1c2gobm9kZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBub2RlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIHRoZSB0YXhvbm9teVxyXG4gICAqL1xyXG4gIGdldFRheG9ub215KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy90YXhvbm9teSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhdXRob3JpdGllc1xyXG4gICAqL1xyXG4gIGdldEF1dGhvcml0aWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9jb21wbGlhbmNlL2F1dGhvcml0aWVzJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vLy9cclxuICAvLyBDT05URVhUXHJcbiAgLy8vL1xyXG4gIC8qKlxyXG4gICAqIENoYW5nZSBjb250ZXh0XHJcbiAgICovXHJcbiAgY2hhbmdlQ29udGV4dChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvY29tcGxpYW5jZS9jb250ZXh0JyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8vL1xyXG4gIC8vIFJFR0lTVEVSU1xyXG4gIC8vLy9cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGEgcmVnaXN0ZXJcclxuICAgKiBAcGFyYW0gaWQgdGhlIHJlZ2lzdGVyIGlkXHJcbiAgICovXHJcbiAgZ2V0UmVnaXN0ZXIoaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgJy9jb21wbGlhbmNlL3JlZ2lzdGVycy8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ29sbGVjdCByZWdpc3RlciBwcm9maWxlc1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIGNvbGxlY3RSZWdpc3RlclByb2ZpbGVzKHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgJy9jb21wbGlhbmNlL3JlZ2lzdGVycy9wcm9maWxlcy9jb2xsZWN0JyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLy9cclxuICAvLyBMQVdTXHJcbiAgLy8vL1xyXG5cclxuICAvKipcclxuICAgKiBBZGQgb25lIG9yIG1vcmUgbGF3c1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIGFkZExhd3MocGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8YW55Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2NvbXBsaWFuY2UvbGF3cy9hZGQnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLy8vXHJcbiAgLy8gQUNUSVZJVElFU1xyXG4gIC8vLy9cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYWN0aXZpdHkgZ3JvdXBzXHJcbiAgICogQHBhcmFtIGdyb3VwIHRoZSBncm91cCBudW1iZXJcclxuICAgKiBAcGFyYW0gc2l0ZSB0aGUgc2l0ZSBpZFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwcyhncm91cDogbnVtYmVyID0gMSwgc2l0ZTogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgKHNpdGVcclxuICAgICAgICA/ICcvY29tcGxpYW5jZS9ncm91cHMvP2dyb3VwPScgK1xyXG4gICAgICAgIGdyb3VwICtcclxuICAgICAgICAnJnNpdGU9JyArXHJcbiAgICAgICAgc2l0ZVxyXG4gICAgICAgIDogJy9jb21wbGlhbmNlL2dyb3Vwcy8/Z3JvdXA9JyArIGdyb3VwKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBhY3Rpdml0aWVzXHJcbiAgICogQHBhcmFtIHBhcmFtcyBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgYWRkQWN0aXZpdGllcyhwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvY29tcGxpYW5jZS9hY3Rpdml0aWVzL2FkZCcsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRXhwb3J0IGxhd3NcclxuICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVyc1xyXG4gICovXHJcbiAgZXhwb3J0TGF3cyhwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9jb21wbGlhbmNlL2xhd3MvZXhwb3J0JyxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLy9cclxuICAvLyBMSU5LU1xyXG4gIC8vL1xyXG5cclxuICAvKipcclxuICAqIFNhdmUgYSB1c2VyIGxpbmtcclxuICAqIEBwYXJhbSBpdGVtOiB0aGUgdXNlciBsaW5rXHJcbiAgKi9cclxuICBzYXZlTGluayhpdGVtOiBFdm9sdXRpb25Vc2VyTGluaykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxib29sZWFuPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2FjY291bnQvbGlua3Mvc2F2ZScsXHJcbiAgICAgIGl0ZW1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgYSB1c2VyIGxpbmtcclxuICAgKiBAcGFyYW0gaXRlbTogdGhlIHVzZXIgbGlua1xyXG4gICAqL1xyXG4gIGRlbGV0ZUxpbmsoaXRlbTogRXZvbHV0aW9uVXNlckxpbmspIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Ym9vbGVhbj4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9hY2NvdW50L2xpbmtzL2RlbGV0ZScsXHJcbiAgICAgIGl0ZW1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -5,6 +5,16 @@ export declare enum EvolutionServiceFlags {
|
|
|
5
5
|
NotifySystemErrors = 1,
|
|
6
6
|
DisplayConnectionStateMessages = 2
|
|
7
7
|
}
|
|
8
|
+
export declare enum ERPModule {
|
|
9
|
+
Formazione = 1,
|
|
10
|
+
DPI = 2,
|
|
11
|
+
SorveglianzaSanitaria = 4,
|
|
12
|
+
RegistroEScadenzario = 8,
|
|
13
|
+
AttrezzatureEImpianti = 16,
|
|
14
|
+
Monitoraggio = 32,
|
|
15
|
+
Bollettino = 64,
|
|
16
|
+
Documenti = 128
|
|
17
|
+
}
|
|
8
18
|
export declare enum ERPComplianceLawsSelectionType {
|
|
9
19
|
Analysis = 1,
|
|
10
20
|
Activity = 2
|
|
@@ -163,8 +173,8 @@ export declare const RecurrenceFrequencyTypes: {
|
|
|
163
173
|
export interface EvolutionLoginResult extends LoginResult<EvolutionLoginInfo> {
|
|
164
174
|
}
|
|
165
175
|
export interface EvolutionLoginInfo {
|
|
166
|
-
context:
|
|
167
|
-
complianceContext?:
|
|
176
|
+
context: EvolutionUserInfo;
|
|
177
|
+
complianceContext?: null;
|
|
168
178
|
userCredentials?: string | null;
|
|
169
179
|
userId?: number | null;
|
|
170
180
|
OAUTH?: LoginOAuthType | null;
|
|
@@ -175,3 +185,61 @@ export interface EvolutionUserLink {
|
|
|
175
185
|
userName?: string | null;
|
|
176
186
|
key: string;
|
|
177
187
|
}
|
|
188
|
+
export interface EvolutionUserModuleInfo {
|
|
189
|
+
name: string;
|
|
190
|
+
module: number;
|
|
191
|
+
level: number;
|
|
192
|
+
hidden: boolean;
|
|
193
|
+
}
|
|
194
|
+
export interface EvolutionLicenceModuleInfo {
|
|
195
|
+
module: ERPModule;
|
|
196
|
+
name: string;
|
|
197
|
+
availableUsers: number;
|
|
198
|
+
usedUsers: number;
|
|
199
|
+
availableOption1?: number | null;
|
|
200
|
+
usedOption1?: number | null;
|
|
201
|
+
availableOption2?: number | null;
|
|
202
|
+
usedOption2?: number | null;
|
|
203
|
+
availableOption3?: number | null;
|
|
204
|
+
usedOption3?: number | null;
|
|
205
|
+
}
|
|
206
|
+
export interface EvolutionUserInfo {
|
|
207
|
+
licenceId: number;
|
|
208
|
+
userId: number;
|
|
209
|
+
companyName: string;
|
|
210
|
+
firstName: string;
|
|
211
|
+
fullName: string;
|
|
212
|
+
flags?: number | null;
|
|
213
|
+
email: string;
|
|
214
|
+
sessionId?: string | null;
|
|
215
|
+
isTemporary?: boolean | null;
|
|
216
|
+
role: number;
|
|
217
|
+
scope: number;
|
|
218
|
+
roleName: string;
|
|
219
|
+
roleLevel: number;
|
|
220
|
+
allowedModules: EvolutionUserModuleInfo[];
|
|
221
|
+
dashboard?: number | null;
|
|
222
|
+
dashboard2?: string | null;
|
|
223
|
+
code?: string | null;
|
|
224
|
+
subjectId?: number | null;
|
|
225
|
+
subjectName?: string | null;
|
|
226
|
+
siteId?: number | null;
|
|
227
|
+
siteName?: string | null;
|
|
228
|
+
siteCostCenter?: string | null;
|
|
229
|
+
departmentId?: number | null;
|
|
230
|
+
departmentName?: string | null;
|
|
231
|
+
expiryDate?: string | null;
|
|
232
|
+
isExpired?: boolean | null;
|
|
233
|
+
isAdministrator?: boolean | null;
|
|
234
|
+
isPowerUser?: boolean | null;
|
|
235
|
+
isObserver?: boolean | null;
|
|
236
|
+
isUser?: boolean | null;
|
|
237
|
+
isSupportUser?: boolean | null;
|
|
238
|
+
isGod?: boolean | null;
|
|
239
|
+
administrators: string;
|
|
240
|
+
availableModules: EvolutionLicenceModuleInfo[];
|
|
241
|
+
availableEmployees: number;
|
|
242
|
+
usedEmployees: number;
|
|
243
|
+
availableStorage: number;
|
|
244
|
+
usedStorage: number;
|
|
245
|
+
}
|
|
@@ -20,6 +20,17 @@ var EvolutionServiceFlags;
|
|
|
20
20
|
EvolutionServiceFlags[EvolutionServiceFlags["NotifySystemErrors"] = 1] = "NotifySystemErrors";
|
|
21
21
|
EvolutionServiceFlags[EvolutionServiceFlags["DisplayConnectionStateMessages"] = 2] = "DisplayConnectionStateMessages";
|
|
22
22
|
})(EvolutionServiceFlags || (EvolutionServiceFlags = {}));
|
|
23
|
+
var ERPModule;
|
|
24
|
+
(function (ERPModule) {
|
|
25
|
+
ERPModule[ERPModule["Formazione"] = 1] = "Formazione";
|
|
26
|
+
ERPModule[ERPModule["DPI"] = 2] = "DPI";
|
|
27
|
+
ERPModule[ERPModule["SorveglianzaSanitaria"] = 4] = "SorveglianzaSanitaria";
|
|
28
|
+
ERPModule[ERPModule["RegistroEScadenzario"] = 8] = "RegistroEScadenzario";
|
|
29
|
+
ERPModule[ERPModule["AttrezzatureEImpianti"] = 16] = "AttrezzatureEImpianti";
|
|
30
|
+
ERPModule[ERPModule["Monitoraggio"] = 32] = "Monitoraggio";
|
|
31
|
+
ERPModule[ERPModule["Bollettino"] = 64] = "Bollettino";
|
|
32
|
+
ERPModule[ERPModule["Documenti"] = 128] = "Documenti";
|
|
33
|
+
})(ERPModule || (ERPModule = {}));
|
|
23
34
|
var ERPComplianceLawsSelectionType;
|
|
24
35
|
(function (ERPComplianceLawsSelectionType) {
|
|
25
36
|
ERPComplianceLawsSelectionType[ERPComplianceLawsSelectionType["Analysis"] = 1] = "Analysis";
|
|
@@ -574,7 +585,7 @@ class EvolutionService {
|
|
|
574
585
|
// Store access token
|
|
575
586
|
this.setToken(r.value);
|
|
576
587
|
const loginInfo = {
|
|
577
|
-
context: r.value.context,
|
|
588
|
+
context: r.value.context.context,
|
|
578
589
|
OAUTH: oauth
|
|
579
590
|
};
|
|
580
591
|
if (!oauth) {
|
|
@@ -903,5 +914,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
903
914
|
* Generated bundle index. Do not edit.
|
|
904
915
|
*/
|
|
905
916
|
|
|
906
|
-
export { ActivityStates, ERPComplianceActivityState, ERPComplianceLawOrigin, ERPComplianceLawState, ERPComplianceLawsSelectionType, ERPComplianceNotificationLimit, ERPComplianceProfileFlags, ERPComplianceProfileRole, ERPComplianceRegisterNotificationType, ERPComplianceRegisterSiteImportOptions, ERPComplianceScope, ERPRecurrenceFrequencyType, EvolutionAuthInterceptor, EvolutionCommonModule, EvolutionMessages, EvolutionService, EvolutionServiceFlags, LawChangeStates, LawOrigins, LawStates, NotificationLimits, Notifications, ObligationAuthorities, ObligationTypes, ProfileFlags, ProfileRoles, RecurrenceFrequencyTypes, Scopes };
|
|
917
|
+
export { ActivityStates, ERPComplianceActivityState, ERPComplianceLawOrigin, ERPComplianceLawState, ERPComplianceLawsSelectionType, ERPComplianceNotificationLimit, ERPComplianceProfileFlags, ERPComplianceProfileRole, ERPComplianceRegisterNotificationType, ERPComplianceRegisterSiteImportOptions, ERPComplianceScope, ERPModule, ERPRecurrenceFrequencyType, EvolutionAuthInterceptor, EvolutionCommonModule, EvolutionMessages, EvolutionService, EvolutionServiceFlags, LawChangeStates, LawOrigins, LawStates, NotificationLimits, Notifications, ObligationAuthorities, ObligationTypes, ProfileFlags, ProfileRoles, RecurrenceFrequencyTypes, Scopes };
|
|
907
918
|
//# sourceMappingURL=arsedizioni-ars-utils-evolution.common.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arsedizioni-ars-utils-evolution.common.mjs","sources":["../../../projects/ars-utils/evolution.common/common/messages.ts","../../../projects/ars-utils/evolution.common/common/definitions.ts","../../../projects/ars-utils/evolution.common/common/services/evolution.service.ts","../../../projects/ars-utils/evolution.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/evolution.common/common/common.module.ts","../../../projects/ars-utils/evolution.common/public_api.ts","../../../projects/ars-utils/evolution.common/arsedizioni-ars-utils-evolution.common.ts"],"sourcesContent":["export const EvolutionMessages = {\r\n // Login\r\n LOGIN_CHANGED: '§evo-login-changed',\r\n LOGIN_COMPLETED: '§evo-login-completed',\r\n LOGOUT_COMPLETED: '§evo-logout-completed',\r\n LOGOUT: '§evo-logout'\r\n};\r\n","import { LoginResult } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport enum EvolutionServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1\r\n \r\n}\r\n\r\n\r\nexport enum ERPComplianceLawsSelectionType {\r\n Analysis = 1,\r\n Activity = 2,\r\n}\r\n\r\nexport enum ERPComplianceProfileRole {\r\n None = 0,\r\n Analyst = 1,\r\n Planner = 1 << 1,\r\n Validator = 1 << 2,\r\n Executor = 1 << 3,\r\n Observer = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceProfileFlags {\r\n\r\n OverrideNotificationRegisterSettings = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceScope {\r\n None = 0,\r\n Environment = 1,\r\n Safety = 1 << 1,\r\n FoodSafety = 1 << 2,\r\n Energy = 1 << 3,\r\n Health = 1 << 4,\r\n Maintenance = 1 << 5,\r\n Quality = 1 << 6,\r\n Organization = 1 << 7,\r\n Logistics = 1 << 8,\r\n Facility = 1 << 9,\r\n Security = 1 << 10\r\n}\r\n\r\nexport enum ERPComplianceNotificationLimit {\r\n None = 0,\r\n PlannerOnly = 1,\r\n ExecutorOnly = 2,\r\n Both = 3,\r\n}\r\n\r\nexport enum ERPComplianceRegisterNotificationType {\r\n None = 0,\r\n NewAnalysis = 1,\r\n AnalysisCompleted = 1 << 1,\r\n AnalysisNoticePeriodStarted = 1 << 2,\r\n AnalysisPeriodExpired = 1 << 3,\r\n AnalysisLawChanged = 1 << 14,\r\n NewPlanning = 1 << 13,\r\n PlanningCompleted = 1 << 4,\r\n PlanningNoticePeriodStarted = 1 << 5,\r\n PlanningPeriodExpired = 1 << 6,\r\n NewValidation = 1 << 15,\r\n ValidationCompleted = 1 << 7,\r\n ValidationNoticePeriodStarted = 1 << 8,\r\n ValidationPeriodExpired = 1 << 9,\r\n NewDeadline = 1 << 16,\r\n DeadlineNoticePeriodStarted = 1 << 10,\r\n DeadlineExpired = 1 << 11,\r\n ActivityCompleted = 1 << 12,\r\n //NewNoncompliance = 1 << 17,\r\n //NonComplianceNoticePeriodStarted = 1 << 18,\r\n //NonCompliancePeriodExpired = 1 << 19,\r\n //NonComplianceCompleted = 1 << 20,\r\n LawChanged = 1 << 21,\r\n}\r\n\r\nexport enum ERPComplianceRegisterSiteImportOptions\r\n{\r\n CopyAttachments = 1,\r\n KeepOriginalDates = 1 << 1,\r\n DuplicateLaws = 1 << 2,\r\n DiscardNotApplicables = 1 << 3\r\n}\r\n\r\nexport const ProfileRoles = [\r\n { name: 'Analista', value: ERPComplianceProfileRole.Analyst },\r\n { name: 'Gestore', value: ERPComplianceProfileRole.Planner },\r\n //{ name: 'Validatore', value: ERPComplianceProfileRole.Validator },\r\n { name: 'Esecutore', value: ERPComplianceProfileRole.Executor },\r\n { name: 'Osservatore', value: ERPComplianceProfileRole.Observer },\r\n];\r\n\r\nexport const ProfileFlags = [\r\n { name: 'Deroghe e limitazioni', divider: true },\r\n {\r\n name:\r\n 'Questo profilo riceve regolarmente le notifiche indipendentemente dalla configurazione generale del registro',\r\n value: ERPComplianceProfileFlags.OverrideNotificationRegisterSettings,\r\n },\r\n];\r\n\r\nexport const Scopes = [\r\n { name: 'Ambiente', value: ERPComplianceScope.Environment },\r\n { name: 'Salute e sicurezza', value: ERPComplianceScope.Safety },\r\n {\r\n name: 'Sicurezza alimentare',\r\n value: ERPComplianceScope.FoodSafety,\r\n },\r\n { name: 'Energia', value: ERPComplianceScope.Energy },\r\n { name: 'Servizi generali', value: ERPComplianceScope.Facility },\r\n { name: 'Manutenzione', value: ERPComplianceScope.Maintenance },\r\n { name: 'Qualità', value: ERPComplianceScope.Quality },\r\n { name: 'Organizzazione', value: ERPComplianceScope.Organization },\r\n { name: 'Logistica', value: ERPComplianceScope.Logistics },\r\n { name: 'Security', value: ERPComplianceScope.Security },\r\n \r\n];\r\n\r\nexport const NotificationLimits = [\r\n { name: 'Nessuna limitazione', value: ERPComplianceNotificationLimit.None },\r\n {\r\n name: 'Solo gestore che ha pianificato',\r\n value: ERPComplianceNotificationLimit.PlannerOnly,\r\n },\r\n {\r\n name: \"Solo all'incaricato designato\",\r\n value: ERPComplianceNotificationLimit.ExecutorOnly,\r\n },\r\n {\r\n name: 'Solo a gestore e incaricato designato',\r\n value: ERPComplianceNotificationLimit.Both,\r\n },\r\n];\r\n\r\nexport const Notifications = [\r\n { name: 'Verifica applicabilità e analisi', divider: true },\r\n {\r\n name: 'Richiesta analisi',\r\n value: ERPComplianceRegisterNotificationType.NewAnalysis,\r\n },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisPeriodExpired,\r\n },\r\n {\r\n name: 'Analisi completata',\r\n value: ERPComplianceRegisterNotificationType.AnalysisCompleted,\r\n },\r\n {\r\n name: 'Avviso norma modificata dal legislatore',\r\n value: ERPComplianceRegisterNotificationType.AnalysisLawChanged,\r\n },\r\n { name: 'Pianificazioni', divider: true },\r\n {\r\n name: 'Richiesta gestione',\r\n value: ERPComplianceRegisterNotificationType.NewPlanning,\r\n },\r\n {\r\n name: 'Preavviso: sta per scadere il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningPeriodExpired,\r\n },\r\n {\r\n name: 'Gestione completata',\r\n value: ERPComplianceRegisterNotificationType.PlanningCompleted,\r\n },\r\n {\r\n name: 'Attività completata',\r\n value: ERPComplianceRegisterNotificationType.ActivityCompleted,\r\n },\r\n /*{ name: 'Gestione non conformità', divider: true },\r\n {\r\n name: 'Apertura non comformità',\r\n value: ERPComplianceRegisterNotificationType.NewNoncompliance,\r\n },\r\n {\r\n name:\r\n \"Preavviso: sta per scadere il termine fissato per l'azione correttiva\",\r\n value:\r\n ERPComplianceRegisterNotificationType.NonComplianceNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'azione correttiva\",\r\n value: ERPComplianceRegisterNotificationType.NonCompliancePeriodExpired,\r\n },\r\n {\r\n name: 'Chiusura non conformità',\r\n value: ERPComplianceRegisterNotificationType.NonComplianceCompleted,\r\n },*/\r\n /*{ name: 'Approvazioni', divider: true },\r\n { name: 'Richiesta approvazione', value: 1 << 14 },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationPeriodExpired,\r\n },\r\n {\r\n name: 'Approvazione concessa o negata',\r\n value: ERPComplianceRegisterNotificationType.ValidationCompleted,\r\n },*/\r\n { name: 'Scadenze', divider: true },\r\n {\r\n name: 'Preavviso: 1° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.NewValidation,\r\n },\r\n {\r\n name: 'Avviso: 2° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.DeadlineNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine',\r\n value: ERPComplianceRegisterNotificationType.DeadlineExpired,\r\n },\r\n { name: 'Norme collegate', divider: true },\r\n {\r\n name: 'Modifica o abrogazione',\r\n value: ERPComplianceRegisterNotificationType.LawChanged,\r\n },\r\n\r\n];\r\n\r\nexport enum ERPComplianceLawState {\r\n ApplicableOrAknowledged = 1,\r\n NotApplicable = 2,\r\n NotAnalyzed = 3,\r\n ExpiredAnalysis = 4,\r\n UpdatedLaws = 5,\r\n Analyzed = 6,\r\n Abrogated = 7,\r\n Applicable = 8,\r\n Aknowledged = 9\r\n}\r\n\r\nexport enum ERPComplianceLawOrigin {\r\n National = 1,\r\n EU = 2,\r\n Regional = 3,\r\n Local = 4,\r\n Technical = 5,\r\n Voulontary = 6,\r\n Internal = 7,\r\n Other = 8,\r\n}\r\n\r\nexport const LawStates = [\r\n { name: 'Applicabile', value: ERPComplianceLawState.Applicable },\r\n { name: 'Da conoscere', value: ERPComplianceLawState.Aknowledged },\r\n {\r\n name: 'Applicabile / da conoscere',\r\n value: ERPComplianceLawState.ApplicableOrAknowledged,\r\n },\r\n { name: 'Non applicabile', value: ERPComplianceLawState.NotApplicable },\r\n { name: 'Abrogata', value: ERPComplianceLawState.Abrogated },\r\n { name: 'Analizzata', value: ERPComplianceLawState.Analyzed },\r\n { name: 'Da definire', value: ERPComplianceLawState.NotAnalyzed }, \r\n { name: 'In ritardo', value: ERPComplianceLawState.ExpiredAnalysis },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceLawState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const LawOrigins = [\r\n { name: 'Nazionale', value: ERPComplianceLawOrigin.National },\r\n { name: 'Comunitaria', value: ERPComplianceLawOrigin.EU },\r\n { name: 'Regionale', value: ERPComplianceLawOrigin.Regional },\r\n { name: 'Locale', value: ERPComplianceLawOrigin.Local },\r\n { name: 'Tecnica', value: ERPComplianceLawOrigin.Technical },\r\n { name: 'Interna', value: ERPComplianceLawOrigin.Internal },\r\n { name: 'Volontaria', value: ERPComplianceLawOrigin.Voulontary },\r\n { name: 'Altro', value: ERPComplianceLawOrigin.Other },\r\n];\r\n\r\nexport const LawChangeStates = [\r\n { name: 'Aperto', value: 1 },\r\n { name: 'Chiuso', value: 2 },\r\n];\r\n\r\nexport enum ERPComplianceActivityState {\r\n NotPlanned = 1 << 7,\r\n Closed = 1 << 2, \r\n Expired = 1 << 3,\r\n Planned = 1 << 8,\r\n Cancelled = 1 << 9,\r\n UpdatedLaws = 1 << 10,\r\n AlreadyManaged = 1 << 11\r\n}\r\n\r\nexport const ActivityStates = [ \r\n {\r\n name: 'Da definire',\r\n value: ERPComplianceActivityState.NotPlanned,\r\n },\r\n {\r\n name: 'Pianificata',\r\n value: ERPComplianceActivityState.Planned,\r\n },\r\n {\r\n name: 'Chiusa',\r\n value: ERPComplianceActivityState.Closed,\r\n },\r\n {\r\n name: 'In ritardo',\r\n value: ERPComplianceActivityState.Expired,\r\n },\r\n {\r\n name: 'Annullata',\r\n value: ERPComplianceActivityState.Cancelled,\r\n },\r\n {\r\n name: 'Gestita separatamente',\r\n value: ERPComplianceActivityState.AlreadyManaged,\r\n },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceActivityState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const ObligationTypes = [\r\n { name: 'Autorizzazione', value: 1 },\r\n { name: 'Verifiche periodiche manutentive', value: 2 },\r\n { name: 'Misure organizzative', value: 3 },\r\n { name: 'Controlli e misurazioni', value: 4 },\r\n { name: 'Entrata in vigore', value: 5 },\r\n { name: 'Documenti aziendali obbligatori', value: 6 },\r\n {\r\n name: 'Altri adempimenti formali (comunicazioni, dichiarazioni, ecc...)',\r\n value: 7,\r\n },\r\n { name: 'Altro', value: 99 },\r\n];\r\n\r\nexport const ObligationAuthorities = [\r\n { name: 'Agenzia ECHA', value: 1 },\r\n { name: 'Albo Nazionale dei Gestori Ambientali', value: 2 },\r\n { name: 'ARPA', value: 4 },\r\n { name: 'ASL', value: 5 },\r\n { name: 'Camera di Commercio', value: 8 },\r\n { name: 'Comando provinciale dei Vigili del Fuoco', value: 10 },\r\n { name: 'Comune', value: 13 },\r\n { name: 'Consorzi gestione rifiuti particolari', value: 14 },\r\n { name: 'Gestore del servizio', value: 21 },\r\n { name: 'Gestore della rete di trasmissione nazionale', value: 22 },\r\n { name: 'INAIL - IPSEMA - ISPESL', value: 23 },\r\n { name: 'ISPRA', value: 26 },\r\n { name: 'Ministero', value: 27 },\r\n { name: 'Genio civile', value: 30 },\r\n { name: 'Organo di vigilanza competente', value: 31 },\r\n { name: 'Provincia', value: 33 },\r\n { name: 'Regione', value: 35 },\r\n { name: 'Uffici tecnici di finanza', value: 36 },\r\n { name: 'Ispettorato del lavoro', value: 37 },\r\n { name: 'Comitato Regionale Tecnico VF', value: 38 },\r\n { name: 'Prefetto', value: 39 },\r\n { name: 'Organismo notificato', value: 40 },\r\n { name: 'Città Metropolitana', value: 41 },\r\n { name: 'Nessuna', value: 28 },\r\n { name: 'Altro', value: 3 }\r\n];\r\n\r\nexport enum ERPRecurrenceFrequencyType {\r\n Day = 1,\r\n Month = 2,\r\n Year = 3,\r\n}\r\nexport const RecurrenceFrequencyTypes = [\r\n { name: 'Anni', value: ERPRecurrenceFrequencyType.Year },\r\n { name: 'Mesi', value: ERPRecurrenceFrequencyType.Month },\r\n { name: 'Giorni', value: ERPRecurrenceFrequencyType.Day },\r\n];\r\n\r\nexport interface EvolutionLoginResult extends LoginResult<EvolutionLoginInfo> {\r\n}\r\n\r\nexport interface EvolutionLoginInfo {\r\n context: any;\r\n complianceContext?: any | null;\r\n userCredentials?: string | null;\r\n userId?: number | null;\r\n OAUTH?: LoginOAuthType | null;\r\n}\r\n\r\nexport interface EvolutionUserLink {\r\n id?: number | null;\r\n userId: number;\r\n userName?: string | null;\r\n key: string;\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { inject, Injectable, OnDestroy, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, INode, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { of, Subscription, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { EvolutionLoginInfo, EvolutionLoginResult, EvolutionServiceFlags, EvolutionUserLink } from '../definitions';\r\nimport { EvolutionMessages } from '../messages';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EvolutionService implements OnDestroy {\r\n\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private broadcastServiceSubscription?: Subscription | null = null;\r\n private dialogService = inject(DialogService);\r\n\r\n private _serviceUri: string | null = null;\r\n get serviceUri(): string | null {\r\n return this._serviceUri;\r\n }\r\n private _flags: EvolutionServiceFlags = EvolutionServiceFlags.None;\r\n get flags(): EvolutionServiceFlags {\r\n return this._flags;\r\n }\r\n private _loginInfo: EvolutionLoginInfo | null = null;\r\n get loginInfo(): EvolutionLoginInfo | null {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('clipper_login_evolution');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as EvolutionLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param flags: the service flags. Default is none.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n flags: EvolutionServiceFlags = EvolutionServiceFlags.None) {\r\n // Create unique client id\r\n if (!localStorage.getItem('evolution_client_id')) {\r\n localStorage.setItem('evolution_client_id', SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === EvolutionMessages.LOGIN_CHANGED) {\r\n setTimeout(() => {\r\n this.login(\r\n message.data.email,\r\n message.data.password,\r\n true,\r\n message.data.oauth,\r\n message.data.oauthAccessToken).subscribe((r: ApiResult<EvolutionLoginResult>) => {\r\n if (!r.success)\r\n this.dialogService.error(r.message, null, \"Errore di Evolution\");\r\n else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Connesso a Evolution', 1500, 'power');\r\n }\r\n }\r\n });\r\n }, 500);\r\n } else if (message.id === EvolutionMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout().subscribe(r => {\r\n if (!r.success) {\r\n this.dialogService.error(\"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Evolution accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\", null, \"Errore di Evolution\");\r\n } else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (!this.loggedIn() && this.getToken()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n /**\r\n* Set JWT token\r\n* @param value : the login result\r\n*/\r\n private setToken(value: EvolutionLoginResult) {\r\n sessionStorage.setItem('evolution_jwt', value.token);\r\n sessionStorage.setItem('evolution_jwt_refresh', value.refreshToken ?? '');\r\n }\r\n\r\n\r\n /**\r\n * Return current JWT token\r\n * @param refresh: true to get the refresh token. Default is false.\r\n */\r\n getToken(refresh: boolean = false): string {\r\n let token = sessionStorage.getItem(refresh ? 'evolution_jwt_refresh' : 'evolution_jwt');\r\n if (token && token[0] === '\"') {\r\n return token.substring(1, token.length - 1);\r\n }\r\n return token ?? '';\r\n }\r\n\r\n /**\r\n * Store login info\r\n */\r\n storeLogin() {\r\n localStorage.setItem('evolution_login', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n * Perform auto login using current link data\r\n * @param email: the optional email if using OAuth2\r\n * @parma password: the optional password if using OAuth2\r\n * @param remember: remember credentials \r\n * @param oauth: the optional open authentication supported\r\n * @param oauthAccessToken: the optional OAuth2 access token\r\n * @param onSucces: function to execute on seccess\r\n */\r\n autoLogin(\r\n email: string | null | undefined = null,\r\n password: string | null | undefined = null,\r\n remember: boolean | null | undefined = false,\r\n oauth: LoginOAuthType | null | undefined = null,\r\n oauthAccessToken: string | null | undefined = null,\r\n onSucces: Function | null | undefined = null): boolean {\r\n this.login(email, password, remember, oauth, oauthAccessToken)\r\n .subscribe((r: ApiResult<EvolutionLoginResult>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n } else {\r\n this.dialogService.toast('Connesso ad Evolution', 1500, 'power');\r\n if (onSucces) {\r\n onSucces();\r\n }\r\n }\r\n });\r\n return true;\r\n }\r\n\r\n /**\r\n * Perform auto logout\r\n * @param onSucces: function to execute on seccess\r\n */\r\n autoLogout(\r\n onSucces: Function | null | undefined = null) {\r\n if (!this.loggedIn()) return;\r\n this.logout().subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n } else {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n },\r\n complete: () => {\r\n this.clear()\r\n if (onSucces) {\r\n onSucces();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Perform login \r\n * @param email: the optional email if using OAuth2\r\n * @parma password: the optional password if using OAuth2\r\n * @param remember: remember credentials \r\n * @param oauth: the optional open authentication supported\r\n * @param oauthAccessToken: the optional OAuth2 access token\r\n * @returns: the login result\r\n */\r\n login(email: string | null | undefined = null,\r\n password: string | null | undefined = null,\r\n remember: boolean | null | undefined = false,\r\n oauth: LoginOAuthType | null | undefined = null,\r\n oauthAccessToken: string | null | undefined = null) {\r\n this.loggingIn.set(true);\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login2',\r\n {\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n clientId: localStorage.getItem(\"evolution_client_id\"),\r\n OAUTH: oauth\r\n },\r\n {\r\n headers:\r\n !oauth\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken ?? '')\r\n })\r\n .pipe(\r\n catchError(err => {\r\n this.handleLoginError();\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n this.loggingIn.set(false);\r\n if (r.success) {\r\n // Store access token\r\n this.setToken(r.value);\r\n const loginInfo: EvolutionLoginInfo = {\r\n context: r.value.context,\r\n OAUTH: oauth\r\n }\r\n if (!oauth) {\r\n loginInfo.userCredentials =\r\n SystemUtils.cipher(\r\n JSON.stringify({\r\n email: email,\r\n password: password,\r\n remember: remember,\r\n }), loginInfo.context.userId.toString());\r\n }\r\n this._loginInfo = loginInfo;\r\n this.storeLogin();\r\n this.loggedIn.set(true);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Perform logout\r\n */\r\n logout() {\r\n return this.httpClient.post<any>(this._serviceUri + '/logout', {}).pipe(\r\n map(r => {\r\n this.clear();\r\n return r\r\n }),\r\n catchError((_e) => {\r\n this.clear();\r\n return of([]);\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Switch the current login to a new one with the same credentials except role possibly (context change)\r\n * @param id : new user id\r\n */\r\n loginSwitch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login-switch/',\r\n {\r\n userId: id,\r\n clientId: localStorage.getItem(\"evolution_client_id\")\r\n }\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n this.handleLoginError();\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n this.loggingIn.set(false);\r\n if (r.success) {\r\n // Store access token\r\n this.setToken(r.value);\r\n this._loginInfo = r.value.context;\r\n this.loggedIn.set(true);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Handle login error\r\n */\r\n private handleLoginError() {\r\n this.loggingIn.set(false);\r\n localStorage.removeItem('evolution_login');\r\n\r\n }\r\n\r\n\r\n /**\r\n * Reset login refresh timer and login state\r\n */\r\n reset() {\r\n // Clear login info\r\n this._loginInfo = null;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n */\r\n clear() {\r\n // Clear local storage\r\n sessionStorage.removeItem('evolution_jwt');\r\n sessionStorage.removeItem('evolution_jwt_refresh');\r\n sessionStorage.removeItem('evolution_oauth');\r\n localStorage.removeItem('evolution_login');\r\n // Reset login\r\n this.reset();\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n refresh() {\r\n return this.httpClient.get<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/refresh2/?token=' + this.getToken(true)\r\n ).pipe(map((r: ApiResult<EvolutionLoginResult>) => {\r\n // Update token\r\n this.setToken(r.value);\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n */\r\n toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, null);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n */\r\n private _toNodes(folders: INode[], parent: INode): INode[] {\r\n let nodes: INode[] = [];\r\n folders.forEach((n) => {\r\n let node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: null,\r\n bag: n,\r\n };\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this._toNodes(n.children, node)\r\n : [];\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Retrieve the taxonomy\r\n */\r\n getTaxonomy() {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri + '/taxonomy'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve authorities\r\n */\r\n getAuthorities() {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri + '/compliance/authorities'\r\n );\r\n }\r\n\r\n ////\r\n // CONTEXT\r\n ////\r\n /**\r\n * Change context\r\n */\r\n changeContext(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri + '/compliance/context',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // REGISTERS\r\n ////\r\n\r\n\r\n /**\r\n * Retrieve a register\r\n * @param id the register id\r\n */\r\n getRegister(id: number) {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri +\r\n '/compliance/registers/' + id\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Collect register profiles\r\n * @param params parameters\r\n */\r\n collectRegisterProfiles(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri +\r\n '/compliance/registers/profiles/collect',\r\n params\r\n );\r\n }\r\n\r\n\r\n ////\r\n // LAWS\r\n ////\r\n\r\n /**\r\n * Add one or more laws\r\n * @param params parameters\r\n */\r\n addLaws(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri + '/compliance/laws/add',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // ACTIVITIES\r\n ////\r\n\r\n /**\r\n * Retrieve activity groups\r\n * @param group the group number\r\n * @param site the site id\r\n */\r\n getGroups(group: number = 1, site: number = null) {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri +\r\n (site\r\n ? '/compliance/groups/?group=' +\r\n group +\r\n '&site=' +\r\n site\r\n : '/compliance/groups/?group=' + group)\r\n );\r\n }\r\n\r\n /**\r\n * Add one or more activities\r\n * @param params parameters\r\n */\r\n addActivities(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri + '/compliance/activities/add',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Export laws\r\n * @param params parameters\r\n */\r\n exportLaws(params: any) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/compliance/laws/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n ///\r\n // LINKS\r\n ///\r\n\r\n /**\r\n * Save a user link\r\n * @param item: the user link\r\n */\r\n saveLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Delete a user link\r\n * @param item: the user link\r\n */\r\n deleteLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { Observable, catchError, finalize, switchMap, throwError } from 'rxjs';\r\nimport { EvolutionService } from '../services/evolution.service';\r\nimport { EvolutionMessages } from '../messages';\r\nimport { EvolutionServiceFlags } from '../definitions';\r\n\r\n\r\n@Injectable()\r\nexport class EvolutionAuthInterceptor implements HttpInterceptor {\r\n private evolutionService = inject(EvolutionService);\r\n private broadcastService = inject(BroadcastService);\r\n private dialogService = inject(DialogService);\r\n private lastErrorTime: number = -1;\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri)) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n finalize(() =>this.dialogService.clearBusy()),\r\n catchError(error => {\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n !request.url.includes(\"/login\") &&\r\n error.status === 401\r\n ) {\r\n return this.handle401Error(request, next);\r\n }\r\n const errorStatus = parseInt(error.status ?? \"0\");\r\n if ((errorStatus > 0 && errorStatus < 500) || (this.evolutionService.flags & EvolutionServiceFlags.NotifySystemErrors) > 0) {\r\n const errorTime = new Date().getTime();\r\n if (errorTime - this.lastErrorTime > 5000) {\r\n this.lastErrorTime = errorTime;\r\n const invalidSession = errorStatus === 403;\r\n this.dialogService.error(\r\n \"<p>\" + (error.error?.message ?? error.message ?? \"Impossibile eseguire l'operazione richiesta.\").replaceAll(\"\\r\\n\", \"</p><p>\") + \"</p>\",\r\n null,\r\n \"Errore in Evolution\",\r\n undefined,\r\n undefined,\r\n invalidSession ? 5000 : 15000).afterClosed().subscribe(() => {\r\n if (invalidSession) {\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGOUT);\r\n }\r\n });\r\n }\r\n }\r\n return throwError(() => error);\r\n }));\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Handle 401 error\r\n * @param request : the request\r\n * @param next : the http handler\r\n */\r\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\r\n if (this.evolutionService.loggedIn()) {\r\n return this.evolutionService.refresh().pipe(\r\n switchMap(() => {\r\n return next.handle(this.addTokenToRequest(request));\r\n }),\r\n catchError(error => {\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token: string | null = null\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri)) {\r\n if (!token) token = this.evolutionService.getToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class EvolutionCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/evolution.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\n\r\nexport * from './common/common.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"arsedizioni-ars-utils-evolution.common.mjs","sources":["../../../projects/ars-utils/evolution.common/common/messages.ts","../../../projects/ars-utils/evolution.common/common/definitions.ts","../../../projects/ars-utils/evolution.common/common/services/evolution.service.ts","../../../projects/ars-utils/evolution.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/evolution.common/common/common.module.ts","../../../projects/ars-utils/evolution.common/public_api.ts","../../../projects/ars-utils/evolution.common/arsedizioni-ars-utils-evolution.common.ts"],"sourcesContent":["export const EvolutionMessages = {\r\n // Login\r\n LOGIN_CHANGED: '§evo-login-changed',\r\n LOGIN_COMPLETED: '§evo-login-completed',\r\n LOGOUT_COMPLETED: '§evo-logout-completed',\r\n LOGOUT: '§evo-logout'\r\n};\r\n","import { LoginResult } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport enum EvolutionServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1\r\n \r\n}\r\n\r\nexport enum ERPModule\r\n{\r\n Formazione = 1,\r\n DPI = 1 << 1,\r\n SorveglianzaSanitaria = 1 << 2,\r\n RegistroEScadenzario = 1 << 3,\r\n AttrezzatureEImpianti = 1 << 4,\r\n Monitoraggio = 1 << 5,\r\n Bollettino = 1 << 6,\r\n Documenti = 1 << 7\r\n\r\n}\r\n\r\nexport enum ERPComplianceLawsSelectionType {\r\n Analysis = 1,\r\n Activity = 2,\r\n}\r\n\r\nexport enum ERPComplianceProfileRole {\r\n None = 0,\r\n Analyst = 1,\r\n Planner = 1 << 1,\r\n Validator = 1 << 2,\r\n Executor = 1 << 3,\r\n Observer = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceProfileFlags {\r\n\r\n OverrideNotificationRegisterSettings = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceScope {\r\n None = 0,\r\n Environment = 1,\r\n Safety = 1 << 1,\r\n FoodSafety = 1 << 2,\r\n Energy = 1 << 3,\r\n Health = 1 << 4,\r\n Maintenance = 1 << 5,\r\n Quality = 1 << 6,\r\n Organization = 1 << 7,\r\n Logistics = 1 << 8,\r\n Facility = 1 << 9,\r\n Security = 1 << 10\r\n}\r\n\r\nexport enum ERPComplianceNotificationLimit {\r\n None = 0,\r\n PlannerOnly = 1,\r\n ExecutorOnly = 2,\r\n Both = 3,\r\n}\r\n\r\nexport enum ERPComplianceRegisterNotificationType {\r\n None = 0,\r\n NewAnalysis = 1,\r\n AnalysisCompleted = 1 << 1,\r\n AnalysisNoticePeriodStarted = 1 << 2,\r\n AnalysisPeriodExpired = 1 << 3,\r\n AnalysisLawChanged = 1 << 14,\r\n NewPlanning = 1 << 13,\r\n PlanningCompleted = 1 << 4,\r\n PlanningNoticePeriodStarted = 1 << 5,\r\n PlanningPeriodExpired = 1 << 6,\r\n NewValidation = 1 << 15,\r\n ValidationCompleted = 1 << 7,\r\n ValidationNoticePeriodStarted = 1 << 8,\r\n ValidationPeriodExpired = 1 << 9,\r\n NewDeadline = 1 << 16,\r\n DeadlineNoticePeriodStarted = 1 << 10,\r\n DeadlineExpired = 1 << 11,\r\n ActivityCompleted = 1 << 12,\r\n //NewNoncompliance = 1 << 17,\r\n //NonComplianceNoticePeriodStarted = 1 << 18,\r\n //NonCompliancePeriodExpired = 1 << 19,\r\n //NonComplianceCompleted = 1 << 20,\r\n LawChanged = 1 << 21,\r\n}\r\n\r\nexport enum ERPComplianceRegisterSiteImportOptions\r\n{\r\n CopyAttachments = 1,\r\n KeepOriginalDates = 1 << 1,\r\n DuplicateLaws = 1 << 2,\r\n DiscardNotApplicables = 1 << 3\r\n}\r\n\r\nexport const ProfileRoles = [\r\n { name: 'Analista', value: ERPComplianceProfileRole.Analyst },\r\n { name: 'Gestore', value: ERPComplianceProfileRole.Planner },\r\n //{ name: 'Validatore', value: ERPComplianceProfileRole.Validator },\r\n { name: 'Esecutore', value: ERPComplianceProfileRole.Executor },\r\n { name: 'Osservatore', value: ERPComplianceProfileRole.Observer },\r\n];\r\n\r\nexport const ProfileFlags = [\r\n { name: 'Deroghe e limitazioni', divider: true },\r\n {\r\n name:\r\n 'Questo profilo riceve regolarmente le notifiche indipendentemente dalla configurazione generale del registro',\r\n value: ERPComplianceProfileFlags.OverrideNotificationRegisterSettings,\r\n },\r\n];\r\n\r\nexport const Scopes = [\r\n { name: 'Ambiente', value: ERPComplianceScope.Environment },\r\n { name: 'Salute e sicurezza', value: ERPComplianceScope.Safety },\r\n {\r\n name: 'Sicurezza alimentare',\r\n value: ERPComplianceScope.FoodSafety,\r\n },\r\n { name: 'Energia', value: ERPComplianceScope.Energy },\r\n { name: 'Servizi generali', value: ERPComplianceScope.Facility },\r\n { name: 'Manutenzione', value: ERPComplianceScope.Maintenance },\r\n { name: 'Qualità', value: ERPComplianceScope.Quality },\r\n { name: 'Organizzazione', value: ERPComplianceScope.Organization },\r\n { name: 'Logistica', value: ERPComplianceScope.Logistics },\r\n { name: 'Security', value: ERPComplianceScope.Security },\r\n \r\n];\r\n\r\nexport const NotificationLimits = [\r\n { name: 'Nessuna limitazione', value: ERPComplianceNotificationLimit.None },\r\n {\r\n name: 'Solo gestore che ha pianificato',\r\n value: ERPComplianceNotificationLimit.PlannerOnly,\r\n },\r\n {\r\n name: \"Solo all'incaricato designato\",\r\n value: ERPComplianceNotificationLimit.ExecutorOnly,\r\n },\r\n {\r\n name: 'Solo a gestore e incaricato designato',\r\n value: ERPComplianceNotificationLimit.Both,\r\n },\r\n];\r\n\r\nexport const Notifications = [\r\n { name: 'Verifica applicabilità e analisi', divider: true },\r\n {\r\n name: 'Richiesta analisi',\r\n value: ERPComplianceRegisterNotificationType.NewAnalysis,\r\n },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisPeriodExpired,\r\n },\r\n {\r\n name: 'Analisi completata',\r\n value: ERPComplianceRegisterNotificationType.AnalysisCompleted,\r\n },\r\n {\r\n name: 'Avviso norma modificata dal legislatore',\r\n value: ERPComplianceRegisterNotificationType.AnalysisLawChanged,\r\n },\r\n { name: 'Pianificazioni', divider: true },\r\n {\r\n name: 'Richiesta gestione',\r\n value: ERPComplianceRegisterNotificationType.NewPlanning,\r\n },\r\n {\r\n name: 'Preavviso: sta per scadere il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningPeriodExpired,\r\n },\r\n {\r\n name: 'Gestione completata',\r\n value: ERPComplianceRegisterNotificationType.PlanningCompleted,\r\n },\r\n {\r\n name: 'Attività completata',\r\n value: ERPComplianceRegisterNotificationType.ActivityCompleted,\r\n },\r\n /*{ name: 'Gestione non conformità', divider: true },\r\n {\r\n name: 'Apertura non comformità',\r\n value: ERPComplianceRegisterNotificationType.NewNoncompliance,\r\n },\r\n {\r\n name:\r\n \"Preavviso: sta per scadere il termine fissato per l'azione correttiva\",\r\n value:\r\n ERPComplianceRegisterNotificationType.NonComplianceNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'azione correttiva\",\r\n value: ERPComplianceRegisterNotificationType.NonCompliancePeriodExpired,\r\n },\r\n {\r\n name: 'Chiusura non conformità',\r\n value: ERPComplianceRegisterNotificationType.NonComplianceCompleted,\r\n },*/\r\n /*{ name: 'Approvazioni', divider: true },\r\n { name: 'Richiesta approvazione', value: 1 << 14 },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationPeriodExpired,\r\n },\r\n {\r\n name: 'Approvazione concessa o negata',\r\n value: ERPComplianceRegisterNotificationType.ValidationCompleted,\r\n },*/\r\n { name: 'Scadenze', divider: true },\r\n {\r\n name: 'Preavviso: 1° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.NewValidation,\r\n },\r\n {\r\n name: 'Avviso: 2° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.DeadlineNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine',\r\n value: ERPComplianceRegisterNotificationType.DeadlineExpired,\r\n },\r\n { name: 'Norme collegate', divider: true },\r\n {\r\n name: 'Modifica o abrogazione',\r\n value: ERPComplianceRegisterNotificationType.LawChanged,\r\n },\r\n\r\n];\r\n\r\nexport enum ERPComplianceLawState {\r\n ApplicableOrAknowledged = 1,\r\n NotApplicable = 2,\r\n NotAnalyzed = 3,\r\n ExpiredAnalysis = 4,\r\n UpdatedLaws = 5,\r\n Analyzed = 6,\r\n Abrogated = 7,\r\n Applicable = 8,\r\n Aknowledged = 9\r\n}\r\n\r\nexport enum ERPComplianceLawOrigin {\r\n National = 1,\r\n EU = 2,\r\n Regional = 3,\r\n Local = 4,\r\n Technical = 5,\r\n Voulontary = 6,\r\n Internal = 7,\r\n Other = 8,\r\n}\r\n\r\nexport const LawStates = [\r\n { name: 'Applicabile', value: ERPComplianceLawState.Applicable },\r\n { name: 'Da conoscere', value: ERPComplianceLawState.Aknowledged },\r\n {\r\n name: 'Applicabile / da conoscere',\r\n value: ERPComplianceLawState.ApplicableOrAknowledged,\r\n },\r\n { name: 'Non applicabile', value: ERPComplianceLawState.NotApplicable },\r\n { name: 'Abrogata', value: ERPComplianceLawState.Abrogated },\r\n { name: 'Analizzata', value: ERPComplianceLawState.Analyzed },\r\n { name: 'Da definire', value: ERPComplianceLawState.NotAnalyzed }, \r\n { name: 'In ritardo', value: ERPComplianceLawState.ExpiredAnalysis },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceLawState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const LawOrigins = [\r\n { name: 'Nazionale', value: ERPComplianceLawOrigin.National },\r\n { name: 'Comunitaria', value: ERPComplianceLawOrigin.EU },\r\n { name: 'Regionale', value: ERPComplianceLawOrigin.Regional },\r\n { name: 'Locale', value: ERPComplianceLawOrigin.Local },\r\n { name: 'Tecnica', value: ERPComplianceLawOrigin.Technical },\r\n { name: 'Interna', value: ERPComplianceLawOrigin.Internal },\r\n { name: 'Volontaria', value: ERPComplianceLawOrigin.Voulontary },\r\n { name: 'Altro', value: ERPComplianceLawOrigin.Other },\r\n];\r\n\r\nexport const LawChangeStates = [\r\n { name: 'Aperto', value: 1 },\r\n { name: 'Chiuso', value: 2 },\r\n];\r\n\r\nexport enum ERPComplianceActivityState {\r\n NotPlanned = 1 << 7,\r\n Closed = 1 << 2, \r\n Expired = 1 << 3,\r\n Planned = 1 << 8,\r\n Cancelled = 1 << 9,\r\n UpdatedLaws = 1 << 10,\r\n AlreadyManaged = 1 << 11\r\n}\r\n\r\nexport const ActivityStates = [ \r\n {\r\n name: 'Da definire',\r\n value: ERPComplianceActivityState.NotPlanned,\r\n },\r\n {\r\n name: 'Pianificata',\r\n value: ERPComplianceActivityState.Planned,\r\n },\r\n {\r\n name: 'Chiusa',\r\n value: ERPComplianceActivityState.Closed,\r\n },\r\n {\r\n name: 'In ritardo',\r\n value: ERPComplianceActivityState.Expired,\r\n },\r\n {\r\n name: 'Annullata',\r\n value: ERPComplianceActivityState.Cancelled,\r\n },\r\n {\r\n name: 'Gestita separatamente',\r\n value: ERPComplianceActivityState.AlreadyManaged,\r\n },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceActivityState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const ObligationTypes = [\r\n { name: 'Autorizzazione', value: 1 },\r\n { name: 'Verifiche periodiche manutentive', value: 2 },\r\n { name: 'Misure organizzative', value: 3 },\r\n { name: 'Controlli e misurazioni', value: 4 },\r\n { name: 'Entrata in vigore', value: 5 },\r\n { name: 'Documenti aziendali obbligatori', value: 6 },\r\n {\r\n name: 'Altri adempimenti formali (comunicazioni, dichiarazioni, ecc...)',\r\n value: 7,\r\n },\r\n { name: 'Altro', value: 99 },\r\n];\r\n\r\nexport const ObligationAuthorities = [\r\n { name: 'Agenzia ECHA', value: 1 },\r\n { name: 'Albo Nazionale dei Gestori Ambientali', value: 2 },\r\n { name: 'ARPA', value: 4 },\r\n { name: 'ASL', value: 5 },\r\n { name: 'Camera di Commercio', value: 8 },\r\n { name: 'Comando provinciale dei Vigili del Fuoco', value: 10 },\r\n { name: 'Comune', value: 13 },\r\n { name: 'Consorzi gestione rifiuti particolari', value: 14 },\r\n { name: 'Gestore del servizio', value: 21 },\r\n { name: 'Gestore della rete di trasmissione nazionale', value: 22 },\r\n { name: 'INAIL - IPSEMA - ISPESL', value: 23 },\r\n { name: 'ISPRA', value: 26 },\r\n { name: 'Ministero', value: 27 },\r\n { name: 'Genio civile', value: 30 },\r\n { name: 'Organo di vigilanza competente', value: 31 },\r\n { name: 'Provincia', value: 33 },\r\n { name: 'Regione', value: 35 },\r\n { name: 'Uffici tecnici di finanza', value: 36 },\r\n { name: 'Ispettorato del lavoro', value: 37 },\r\n { name: 'Comitato Regionale Tecnico VF', value: 38 },\r\n { name: 'Prefetto', value: 39 },\r\n { name: 'Organismo notificato', value: 40 },\r\n { name: 'Città Metropolitana', value: 41 },\r\n { name: 'Nessuna', value: 28 },\r\n { name: 'Altro', value: 3 }\r\n];\r\n\r\nexport enum ERPRecurrenceFrequencyType {\r\n Day = 1,\r\n Month = 2,\r\n Year = 3,\r\n}\r\nexport const RecurrenceFrequencyTypes = [\r\n { name: 'Anni', value: ERPRecurrenceFrequencyType.Year },\r\n { name: 'Mesi', value: ERPRecurrenceFrequencyType.Month },\r\n { name: 'Giorni', value: ERPRecurrenceFrequencyType.Day },\r\n];\r\n\r\nexport interface EvolutionLoginResult extends LoginResult<EvolutionLoginInfo> {\r\n}\r\n\r\nexport interface EvolutionLoginInfo {\r\n context: EvolutionUserInfo;\r\n complianceContext?: | null;\r\n userCredentials?: string | null;\r\n userId?: number | null;\r\n OAUTH?: LoginOAuthType | null;\r\n}\r\n\r\nexport interface EvolutionUserLink {\r\n id?: number | null;\r\n userId: number;\r\n userName?: string | null;\r\n key: string;\r\n}\r\n\r\nexport interface EvolutionUserModuleInfo {\r\n name: string;\r\n module: number;\r\n level: number;\r\n hidden: boolean;\r\n}\r\n\r\n\r\nexport interface EvolutionLicenceModuleInfo {\r\n module: ERPModule;\r\n name: string;\r\n availableUsers: number;\r\n usedUsers: number;\r\n availableOption1?: number | null;\r\n usedOption1?: number | null;\r\n availableOption2?: number | null;\r\n usedOption2?: number | null;\r\n availableOption3?: number | null;\r\n usedOption3?: number | null;\r\n}\r\n\r\nexport interface EvolutionUserInfo {\r\n licenceId: number;\r\n userId: number;\r\n companyName: string;\r\n firstName: string;\r\n fullName: string;\r\n flags?: number | null;\r\n email: string;\r\n sessionId?: string | null;\r\n isTemporary?: boolean | null;\r\n role: number;\r\n scope: number;\r\n roleName: string;\r\n roleLevel: number;\r\n allowedModules: EvolutionUserModuleInfo[];\r\n dashboard?: number | null;\r\n dashboard2?: string | null;\r\n code?: string | null;\r\n subjectId?: number | null;\r\n subjectName?: string | null;\r\n siteId?: number | null;\r\n siteName?: string | null;\r\n siteCostCenter?: string | null;\r\n departmentId?: number | null;\r\n departmentName?: string | null;\r\n expiryDate?: string | null;\r\n isExpired?: boolean | null;\r\n isAdministrator?: boolean | null;\r\n isPowerUser?: boolean | null;\r\n isObserver?: boolean | null;\r\n isUser?: boolean | null;\r\n isSupportUser?: boolean | null;\r\n isGod?: boolean | null;\r\n administrators: string;\r\n availableModules: EvolutionLicenceModuleInfo[];\r\n availableEmployees: number;\r\n usedEmployees: number;\r\n availableStorage: number;\r\n usedStorage: number;\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { inject, Injectable, OnDestroy, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, INode, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { of, Subscription, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { EvolutionLoginInfo, EvolutionLoginResult, EvolutionServiceFlags, EvolutionUserLink } from '../definitions';\r\nimport { EvolutionMessages } from '../messages';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EvolutionService implements OnDestroy {\r\n\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private broadcastServiceSubscription?: Subscription | null = null;\r\n private dialogService = inject(DialogService);\r\n\r\n private _serviceUri: string | null = null;\r\n get serviceUri(): string | null {\r\n return this._serviceUri;\r\n }\r\n private _flags: EvolutionServiceFlags = EvolutionServiceFlags.None;\r\n get flags(): EvolutionServiceFlags {\r\n return this._flags;\r\n }\r\n private _loginInfo: EvolutionLoginInfo | null = null;\r\n get loginInfo(): EvolutionLoginInfo | null {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('clipper_login_evolution');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as EvolutionLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param flags: the service flags. Default is none.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n flags: EvolutionServiceFlags = EvolutionServiceFlags.None) {\r\n // Create unique client id\r\n if (!localStorage.getItem('evolution_client_id')) {\r\n localStorage.setItem('evolution_client_id', SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === EvolutionMessages.LOGIN_CHANGED) {\r\n setTimeout(() => {\r\n this.login(\r\n message.data.email,\r\n message.data.password,\r\n true,\r\n message.data.oauth,\r\n message.data.oauthAccessToken).subscribe((r: ApiResult<EvolutionLoginResult>) => {\r\n if (!r.success)\r\n this.dialogService.error(r.message, null, \"Errore di Evolution\");\r\n else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Connesso a Evolution', 1500, 'power');\r\n }\r\n }\r\n });\r\n }, 500);\r\n } else if (message.id === EvolutionMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout().subscribe(r => {\r\n if (!r.success) {\r\n this.dialogService.error(\"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Evolution accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\", null, \"Errore di Evolution\");\r\n } else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (!this.loggedIn() && this.getToken()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n /**\r\n* Set JWT token\r\n* @param value : the login result\r\n*/\r\n private setToken(value: EvolutionLoginResult) {\r\n sessionStorage.setItem('evolution_jwt', value.token);\r\n sessionStorage.setItem('evolution_jwt_refresh', value.refreshToken ?? '');\r\n }\r\n\r\n\r\n /**\r\n * Return current JWT token\r\n * @param refresh: true to get the refresh token. Default is false.\r\n */\r\n getToken(refresh: boolean = false): string {\r\n let token = sessionStorage.getItem(refresh ? 'evolution_jwt_refresh' : 'evolution_jwt');\r\n if (token && token[0] === '\"') {\r\n return token.substring(1, token.length - 1);\r\n }\r\n return token ?? '';\r\n }\r\n\r\n /**\r\n * Store login info\r\n */\r\n storeLogin() {\r\n localStorage.setItem('evolution_login', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n * Perform auto login using current link data\r\n * @param email: the optional email if using OAuth2\r\n * @parma password: the optional password if using OAuth2\r\n * @param remember: remember credentials \r\n * @param oauth: the optional open authentication supported\r\n * @param oauthAccessToken: the optional OAuth2 access token\r\n * @param onSucces: function to execute on seccess\r\n */\r\n autoLogin(\r\n email: string | null | undefined = null,\r\n password: string | null | undefined = null,\r\n remember: boolean | null | undefined = false,\r\n oauth: LoginOAuthType | null | undefined = null,\r\n oauthAccessToken: string | null | undefined = null,\r\n onSucces: Function | null | undefined = null): boolean {\r\n this.login(email, password, remember, oauth, oauthAccessToken)\r\n .subscribe((r: ApiResult<EvolutionLoginResult>) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n } else {\r\n this.dialogService.toast('Connesso ad Evolution', 1500, 'power');\r\n if (onSucces) {\r\n onSucces();\r\n }\r\n }\r\n });\r\n return true;\r\n }\r\n\r\n /**\r\n * Perform auto logout\r\n * @param onSucces: function to execute on seccess\r\n */\r\n autoLogout(\r\n onSucces: Function | null | undefined = null) {\r\n if (!this.loggedIn()) return;\r\n this.logout().subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n } else {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n },\r\n complete: () => {\r\n this.clear()\r\n if (onSucces) {\r\n onSucces();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Perform login \r\n * @param email: the optional email if using OAuth2\r\n * @parma password: the optional password if using OAuth2\r\n * @param remember: remember credentials \r\n * @param oauth: the optional open authentication supported\r\n * @param oauthAccessToken: the optional OAuth2 access token\r\n * @returns: the login result\r\n */\r\n login(email: string | null | undefined = null,\r\n password: string | null | undefined = null,\r\n remember: boolean | null | undefined = false,\r\n oauth: LoginOAuthType | null | undefined = null,\r\n oauthAccessToken: string | null | undefined = null) {\r\n this.loggingIn.set(true);\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login2',\r\n {\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n clientId: localStorage.getItem(\"evolution_client_id\"),\r\n OAUTH: oauth\r\n },\r\n {\r\n headers:\r\n !oauth\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken ?? '')\r\n })\r\n .pipe(\r\n catchError(err => {\r\n this.handleLoginError();\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n this.loggingIn.set(false);\r\n if (r.success) {\r\n // Store access token\r\n this.setToken(r.value);\r\n const loginInfo: EvolutionLoginInfo = {\r\n context: r.value.context.context,\r\n OAUTH: oauth\r\n }\r\n if (!oauth) {\r\n loginInfo.userCredentials =\r\n SystemUtils.cipher(\r\n JSON.stringify({\r\n email: email,\r\n password: password,\r\n remember: remember,\r\n }), loginInfo.context.userId.toString());\r\n }\r\n this._loginInfo = loginInfo;\r\n this.storeLogin();\r\n this.loggedIn.set(true);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Perform logout\r\n */\r\n logout() {\r\n return this.httpClient.post<any>(this._serviceUri + '/logout', {}).pipe(\r\n map(r => {\r\n this.clear();\r\n return r\r\n }),\r\n catchError((_e) => {\r\n this.clear();\r\n return of([]);\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Switch the current login to a new one with the same credentials except role possibly (context change)\r\n * @param id : new user id\r\n */\r\n loginSwitch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login-switch/',\r\n {\r\n userId: id,\r\n clientId: localStorage.getItem(\"evolution_client_id\")\r\n }\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n this.handleLoginError();\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n this.loggingIn.set(false);\r\n if (r.success) {\r\n // Store access token\r\n this.setToken(r.value);\r\n this._loginInfo = r.value.context;\r\n this.loggedIn.set(true);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Handle login error\r\n */\r\n private handleLoginError() {\r\n this.loggingIn.set(false);\r\n localStorage.removeItem('evolution_login');\r\n\r\n }\r\n\r\n\r\n /**\r\n * Reset login refresh timer and login state\r\n */\r\n reset() {\r\n // Clear login info\r\n this._loginInfo = null;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n */\r\n clear() {\r\n // Clear local storage\r\n sessionStorage.removeItem('evolution_jwt');\r\n sessionStorage.removeItem('evolution_jwt_refresh');\r\n sessionStorage.removeItem('evolution_oauth');\r\n localStorage.removeItem('evolution_login');\r\n // Reset login\r\n this.reset();\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n refresh() {\r\n return this.httpClient.get<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/refresh2/?token=' + this.getToken(true)\r\n ).pipe(map((r: ApiResult<EvolutionLoginResult>) => {\r\n // Update token\r\n this.setToken(r.value);\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n */\r\n toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, null);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n */\r\n private _toNodes(folders: INode[], parent: INode): INode[] {\r\n let nodes: INode[] = [];\r\n folders.forEach((n) => {\r\n let node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: null,\r\n bag: n,\r\n };\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this._toNodes(n.children, node)\r\n : [];\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Retrieve the taxonomy\r\n */\r\n getTaxonomy() {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri + '/taxonomy'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve authorities\r\n */\r\n getAuthorities() {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri + '/compliance/authorities'\r\n );\r\n }\r\n\r\n ////\r\n // CONTEXT\r\n ////\r\n /**\r\n * Change context\r\n */\r\n changeContext(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri + '/compliance/context',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // REGISTERS\r\n ////\r\n\r\n\r\n /**\r\n * Retrieve a register\r\n * @param id the register id\r\n */\r\n getRegister(id: number) {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri +\r\n '/compliance/registers/' + id\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Collect register profiles\r\n * @param params parameters\r\n */\r\n collectRegisterProfiles(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri +\r\n '/compliance/registers/profiles/collect',\r\n params\r\n );\r\n }\r\n\r\n\r\n ////\r\n // LAWS\r\n ////\r\n\r\n /**\r\n * Add one or more laws\r\n * @param params parameters\r\n */\r\n addLaws(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri + '/compliance/laws/add',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // ACTIVITIES\r\n ////\r\n\r\n /**\r\n * Retrieve activity groups\r\n * @param group the group number\r\n * @param site the site id\r\n */\r\n getGroups(group: number = 1, site: number = null) {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this._serviceUri +\r\n (site\r\n ? '/compliance/groups/?group=' +\r\n group +\r\n '&site=' +\r\n site\r\n : '/compliance/groups/?group=' + group)\r\n );\r\n }\r\n\r\n /**\r\n * Add one or more activities\r\n * @param params parameters\r\n */\r\n addActivities(params: any) {\r\n return this.httpClient.post<ApiResult<any>>(\r\n this._serviceUri + '/compliance/activities/add',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Export laws\r\n * @param params parameters\r\n */\r\n exportLaws(params: any) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/compliance/laws/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n ///\r\n // LINKS\r\n ///\r\n\r\n /**\r\n * Save a user link\r\n * @param item: the user link\r\n */\r\n saveLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Delete a user link\r\n * @param item: the user link\r\n */\r\n deleteLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { Observable, catchError, finalize, switchMap, throwError } from 'rxjs';\r\nimport { EvolutionService } from '../services/evolution.service';\r\nimport { EvolutionMessages } from '../messages';\r\nimport { EvolutionServiceFlags } from '../definitions';\r\n\r\n\r\n@Injectable()\r\nexport class EvolutionAuthInterceptor implements HttpInterceptor {\r\n private evolutionService = inject(EvolutionService);\r\n private broadcastService = inject(BroadcastService);\r\n private dialogService = inject(DialogService);\r\n private lastErrorTime: number = -1;\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri)) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n finalize(() =>this.dialogService.clearBusy()),\r\n catchError(error => {\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n !request.url.includes(\"/login\") &&\r\n error.status === 401\r\n ) {\r\n return this.handle401Error(request, next);\r\n }\r\n const errorStatus = parseInt(error.status ?? \"0\");\r\n if ((errorStatus > 0 && errorStatus < 500) || (this.evolutionService.flags & EvolutionServiceFlags.NotifySystemErrors) > 0) {\r\n const errorTime = new Date().getTime();\r\n if (errorTime - this.lastErrorTime > 5000) {\r\n this.lastErrorTime = errorTime;\r\n const invalidSession = errorStatus === 403;\r\n this.dialogService.error(\r\n \"<p>\" + (error.error?.message ?? error.message ?? \"Impossibile eseguire l'operazione richiesta.\").replaceAll(\"\\r\\n\", \"</p><p>\") + \"</p>\",\r\n null,\r\n \"Errore in Evolution\",\r\n undefined,\r\n undefined,\r\n invalidSession ? 5000 : 15000).afterClosed().subscribe(() => {\r\n if (invalidSession) {\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGOUT);\r\n }\r\n });\r\n }\r\n }\r\n return throwError(() => error);\r\n }));\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Handle 401 error\r\n * @param request : the request\r\n * @param next : the http handler\r\n */\r\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\r\n if (this.evolutionService.loggedIn()) {\r\n return this.evolutionService.refresh().pipe(\r\n switchMap(() => {\r\n return next.handle(this.addTokenToRequest(request));\r\n }),\r\n catchError(error => {\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token: string | null = null\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri)) {\r\n if (!token) token = this.evolutionService.getToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class EvolutionCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/evolution.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\n\r\nexport * from './common/common.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arsedizioni/ars-utils",
|
|
3
|
-
"version": "18.2.
|
|
3
|
+
"version": "18.2.500",
|
|
4
4
|
"author": {
|
|
5
5
|
"email": "software@arsedizioni.it",
|
|
6
6
|
"name": "Fabio Buscaroli, Alberto Doria"
|
|
@@ -53,18 +53,18 @@
|
|
|
53
53
|
"esm": "./esm2022/core/arsedizioni-ars-utils-core.mjs",
|
|
54
54
|
"default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
|
|
55
55
|
},
|
|
56
|
-
"./help": {
|
|
57
|
-
"types": "./help/index.d.ts",
|
|
58
|
-
"esm2022": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
|
|
59
|
-
"esm": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
|
|
60
|
-
"default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
|
|
61
|
-
},
|
|
62
56
|
"./evolution.common": {
|
|
63
57
|
"types": "./evolution.common/index.d.ts",
|
|
64
58
|
"esm2022": "./esm2022/evolution.common/arsedizioni-ars-utils-evolution.common.mjs",
|
|
65
59
|
"esm": "./esm2022/evolution.common/arsedizioni-ars-utils-evolution.common.mjs",
|
|
66
60
|
"default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
|
|
67
61
|
},
|
|
62
|
+
"./help": {
|
|
63
|
+
"types": "./help/index.d.ts",
|
|
64
|
+
"esm2022": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
|
|
65
|
+
"esm": "./esm2022/help/arsedizioni-ars-utils-help.mjs",
|
|
66
|
+
"default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
|
|
67
|
+
},
|
|
68
68
|
"./support.common": {
|
|
69
69
|
"types": "./support.common/index.d.ts",
|
|
70
70
|
"esm2022": "./esm2022/support.common/arsedizioni-ars-utils-support.common.mjs",
|