qms-angular 1.1.48 → 1.1.49

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. package/bundles/qms-angular.umd.js +23 -17
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/components/select-department/model/select-department-popup-data.model.js +2 -1
  4. package/esm2015/lib/components/select-department/select-department.component.js +2 -2
  5. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +2 -2
  6. package/esm2015/lib/model/en.js +3 -1
  7. package/esm2015/lib/model/no.js +3 -1
  8. package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +3 -3
  9. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +5 -3
  10. package/esm2015/lib/qms-ckeditor-components/models/document-tree-node-data.model.js +3 -0
  11. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +3 -2
  12. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +9 -11
  13. package/fesm2015/qms-angular.js +23 -16
  14. package/fesm2015/qms-angular.js.map +1 -1
  15. package/lib/components/select-department/model/select-department-popup-data.model.d.ts +1 -0
  16. package/lib/model/en.d.ts +2 -0
  17. package/lib/model/no.d.ts +2 -0
  18. package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +4 -3
  19. package/lib/qms-ckeditor-components/models/{process-document-tree-node-data.model.d.ts → document-tree-node-data.model.d.ts} +1 -1
  20. package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +1 -1
  21. package/package.json +1 -1
  22. package/qms-angular.metadata.json +1 -1
  23. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +11 -0
  24. package/esm2015/lib/qms-ckeditor-components/models/process-document-tree-node-data.model.js +0 -3
@@ -73,6 +73,7 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
73
73
  this.shapeModel = new ShapeModel();
74
74
  this.targets = [];
75
75
  this.anchors = [];
76
+ this.language = 'en';
76
77
  this.id = data.id;
77
78
  this.module = data.module;
78
79
  this.entityId = data.entityId;
@@ -86,6 +87,7 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
86
87
  this.QMSBPMNConfig.editMode = FlowchartViewMode.Edit;
87
88
  this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
88
89
  if (res) {
90
+ this.language = res;
89
91
  this.LANG = this.translate.getObjectLang(res);
90
92
  this.QMSBPMNConfig.changeTemplatePopupContent = this.LANG.BPMN.CHANGE_TEMPLATE_NOTE;
91
93
  }
@@ -103,7 +105,7 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
103
105
  if (this.id) {
104
106
  this.jsonContent = yield this.getJsonContent(this.id);
105
107
  }
106
- this.bpmnService.buildDiagram(temlates, this.template, 'default joint-theme-bpmn', this.jsonContent, this.QMSBPMNConfig.editMode, null, ToolbarFunction.getToolbarConfiguration(this.LANG));
108
+ this.bpmnService.buildDiagram(temlates, this.template, 'default joint-theme-bpmn', this.jsonContent, this.QMSBPMNConfig.editMode, null, ToolbarFunction.getToolbarConfiguration(this.LANG), this.language);
107
109
  this.splitView = this.QMSBPMNConfig.showProcessDocumentTreeDataInSplitView;
108
110
  this.initConnectionTypes();
109
111
  this.initTarget();
@@ -927,7 +929,7 @@ QMSCKEditorBpmnComponent.decorators = [
927
929
  { type: Component, args: [{
928
930
  selector: 'qms-ckeditor-bpmn',
929
931
  template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\n <div id=\"qmsckeditor-load-template-header\">\n <span id=\"qmsckeditor-bpmn-header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\n <mat-icon>close</mat-icon>\n </span>\n <span id=\"qmsckeditor-bpmn-header_002\" mat-icon-button class=\"qmsckeditor button__done\" (click)=\"onInsertImage()\">\n <mat-icon>done</mat-icon>\n </span>\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\n <h2 id=\"qmsckeditor-template_002_001\">\n {{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}\n </h2>\n </div>\n </div>\n <div class=\"mask-overlay\" *ngIf=\"loadingRelatedData\">\n <mat-spinner class=\"spinner\" diameter=\"65\"></mat-spinner>\n </div>\n <qms-bpmn [QMSBPMNConfig]=\"QMSBPMNConfig\" [shapeModel]=\"shapeModel\" [targets]=\"targets\" [anchors]=\"anchors\"\n (onSelectConnectType)=\"selectConnectType($event)\" (onSaveAsTemplate)=\"saveAsTemplate($event)\"\n (onDeleteTemplate)=\"deleteTemplate()\" (onSelectTemplate)=\"selectTemplate()\" (onResetTemplate)=\"resetTemplate()\"\n (onGetShapeActivity)=\"getShapeActivity($event)\" (onChangeShapeTarget)=\"saveShapeTarget($event)\"\n (onChangeShapeAnchor)=\"saveShapeAnchor($event)\" (onReloadAnchorDocumentClick)=\"reloadAnchorDocument()\"\n (onDeleteConnection)=\"deleteConnection($event)\"></qms-bpmn>\n</div>",
930
- styles: [":host ::ng-deep .qmsckeditor__bpmn__container ::ng-deep .mat-tab-body-wrapper{height:100%}:host ::ng-deep .qmsckeditor__bpmn__container .mask-overlay{z-index:1000;background-color:rgba(34,33,33,.1);position:absolute;top:0;left:0;width:100%;height:100%;border-radius:4px;overflow:hidden;display:grid;place-items:center}"]
932
+ styles: [":host ::ng-deep .qmsckeditor__bpmn__container ::ng-deep .mat-tab-body-wrapper{height:100%}:host ::ng-deep .qmsckeditor__bpmn__container .mask-overlay{z-index:1000;background-color:rgba(34,33,33,.1);position:absolute;top:0;left:0;width:100%;height:100%;border-radius:4px;overflow:hidden;display:grid;place-items:center}:host ::ng-deep .qmsckeditor__bpmn__container .joint-widget.joint-theme-default[data-type=zoomToFit]:after{display:block;content:\" \";background-color:transparent;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggc3R5bGU9InN0cm9rZTpub25lO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGw6IzAwMDtmaWxsLW9wYWNpdHk6MSIgZD0iTTMgMjF2LTUuNzVoMS41djMuMTc2bDMuNy0zLjcgMS4wNzMgMS4wNzVMNS41NzQgMTkuNUg4Ljc1VjIxWm0xMi4yNSAwdi0xLjVoMy4xNzZsLTMuNjc2LTMuNjc2IDEuMDc0LTEuMDc0IDMuNjc2IDMuNjc2VjE1LjI1SDIxVjIxWk04LjE3NiA5LjI1IDQuNSA1LjU3NFY4Ljc1SDNWM2g1Ljc1djEuNUg1LjU3NEw5LjI1IDguMTc2Wm03LjY0OCAwTDE0Ljc1IDguMTc2IDE4LjQyNiA0LjVIMTUuMjVWM0gyMXY1Ljc1aC0xLjVWNS41NzRabTAgMCIvPjwvc3ZnPg==\")!important;width:50px;height:50px;background-position:7px 7px}"]
931
933
  },] }
932
934
  ];
933
935
  QMSCKEditorBpmnComponent.ctorParameters = () => [
@@ -950,4 +952,4 @@ QMSCKEditorBpmnComponent.ctorParameters = () => [
950
952
  QMSCKEditorBpmnComponent.propDecorators = {
951
953
  ckEditor: [{ type: Input }]
952
954
  };
953
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hGLE9BQU8sVUFBVSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFF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ZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudFwiO1xuaW1wb3J0IHsgRmxvd0NoYXJ0Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckZsb3djaGFydC5jb25zdFwiO1xuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi10ZW1wbGF0ZS5tb2RlbFwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4ubW9kZWxcIjtcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLWFwaS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCcG1uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3NoYXBlLWZsb3ctY2hhcnQtY29ubmVjdGlvbi10eXBlJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXVwbG9hZC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBiYXNlNjRTdHJpbmdUb0ZpbGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9maWxlSGVscGVyXCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWNvbW1vbi5zZXJ2aWNlc1wiO1xuaW1wb3J0IHsgUU1TQlBNTkNvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcW1zLWJwbW4tY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgUU1TQ0tFZGl0b3JCUE1ORnVuY3Rpb25zIGZyb20gJy4vLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy9icG1uLmZ1bmN0aW9uJztcbmltcG9ydCB7IERpYWdyYW1UZW1wbGF0ZXMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RpYWdyYW0tdGVtcGxhdGUubW9kZWxcIjtcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy90cmVlXCI7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgRmxvd2NoYXJ0Vmlld01vZGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2Zsb3djaGFydC12aWV3LW1vZGUuZW51bVwiO1xuaW1wb3J0IHsgUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSwgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3NlbGVjdC1wcm9jZXNzLWRvY3VtZW50XCI7XG5pbXBvcnQgeyBNb2R1bGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL21vZHVsZS10eXBlLmVudW1cIjtcbmltcG9ydCB7IFByb2Nlc3NOb2RlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9wcm9jZXNzLW5vZGUtdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBJUmVsYXRlZCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3JlbGF0ZWQvbW9kZWwvcmVsYXRlZC1kYXRhLm1vZGVsXCI7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RvY3VtZW50LW5vZGUtdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBQcm9jZXNzU3RhdHVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL3Byb2Nlc3NTdGF0dXMuZW51bVwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCUE1OQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWJwbW4tY29ubmVjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQcm9jZXNzRG9jdW1lbnRUcmVlTm9kZURhdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2Nlc3MtZG9jdW1lbnQtdHJlZS1ub2RlLWRhdGEubW9kZWxcIjtcbmltcG9ydCB7IFNoYXBlTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9xbXMtYnBtbi9tb2RlbHMvc2hhcGUtbW9kZWwubW9kZWxcIjtcbmltcG9ydCB7IFRhcmdldFR5cGVOYW1lIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBRTVNCUE1OU2hhcGVUYXJnZXQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Ftcy1icG1uLXNoYXBlLXRhcmdldFwiO1xuaW1wb3J0IHsgQ0tFZGl0b3JMaW5rQ29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckxpbmsuY29uc3RhbnRcIjtcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uL3Ftcy1ja2VkaXRvci1saW5rL2F0dGFjaG1lbnRzL2xpbmstYXR0YWNobWVudC5jb21wb25lbnRcIjtcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWxcIjtcbmltcG9ydCB7IFFNU0JQTU5TaGFwZUFuY2hvciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcW1zLWJwbW4tc2hhcGUtYW5jaG9yLm1vZGVsXCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbFwiO1xuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gXCIuLi8uLi9jb21tb24vZW51bXMvbGluay1hbmNob3IuZW51bVwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3RvYXN0L3Ftcy1ja2VkaXRvci10b2FzdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCUE1OTGlua0NvbXBvbmVudCB9IGZyb20gXCIuL2xpbmsvYnBtbi1saW5rLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2hhcGVMaW5rIH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvcW1zLWJwbW4vbW9kZWxzL2Zsb3ctY2hhcnQtc2hhcGUvc2hhcGUtbGlua1wiO1xuaW1wb3J0IFRvb2xiYXJGdW5jdGlvbiBmcm9tIFwiLi4vLi4vY29tbW9uL2JwbW4vdG9vbGJhci5mdW5jdGlvblwiO1xuaW1wb3J0IHsgUHJvY2Vzc0NsYXNzaWZpY2F0aW9uVHlwZXMgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vcHJvY2Vzcy1jbGFzc2lmaWNhdGlvbi10eXBlLmVudW1cIjtcbmltcG9ydCB7IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXRyZWUuc2VydmljZVwiO1xuaW1wb3J0IHsgUU1TSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2FwcC1pY29uL2ljb24tcmVnaXN0cnkuc2VydmljZVwiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2dldC1zZWFyY2gtcHJvY2Vzcy1kb2N1bWVudC1vcHRpb25cIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdxbXMtY2tlZGl0b3ItYnBtbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgTEFORzogYW55O1xuICAgIEBJbnB1dCgpIGNrRWRpdG9yOiBhbnk7XG5cbiAgICBRTVNCUE1OQ29uZmlnOiBRTVNCUE1OQ29uZmlnID0gbmV3IFFNU0JQTU5Db25maWcoKTtcbiAgICBqc29uQ29udGVudDogc3RyaW5nO1xuXG4gICAgaWQgPSAnJztcbiAgICBtb2R1bGU6IG51bWJlcjtcbiAgICBlbnRpdHlJZCA9ICcnO1xuICAgIGVkaXRvckNvbnRlbnQgPSAnJztcblxuICAgIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcbiAgICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcbiAgICB0ZW1wbGF0ZTtcbiAgICBzaGFwZU1vZGVsOiBTaGFwZU1vZGVsID0gbmV3IFNoYXBlTW9kZWwoKTtcbiAgICAvKiogdGVtcGxhdGUgYmVmb3JlIHNlbGVjdGVkIGFscmVhZHkgYW5vdGhlciB0ZW1wbGF0ZSBpbiBzZWxlY3QgYm94ICh1c2luZyBmb3IgcmVzZXQgdGVtcGxhdGUpKi9cbiAgICB0ZW1wVGVtcGxhdGU6IGFueTtcbiAgICB0YXJnZXRzOiBRTVNCUE1OU2hhcGVUYXJnZXRbXSA9IFtdO1xuICAgIGFuY2hvcnM6IFFNU0JQTU5TaGFwZUFuY2hvcltdID0gW107XG4gICAgLy8gcHJvY2Vzcy9kb2N1bWVudCBjb25uZWN0aW9uIHR5cGVcbiAgICBzcGxpdFZpZXc6IGJvb2xlYW47XG4gICAgcHJvY2Vzc1RyZWVDb25maWc6IFRyZWVDb25maWc7XG4gICAgZG9jdW1lbnRUcmVlQ29uZmlnOiBUcmVlQ29uZmlnO1xuICAgIHRyZWVQcm9jZXNzRGF0YTogUHJvY2Vzc0RvY3VtZW50VHJlZU5vZGVEYXRhW107XG4gICAgdHJlZURvY3VtZW50RGF0YTogUHJvY2Vzc0RvY3VtZW50VHJlZU5vZGVEYXRhW107XG4gICAgbG9hZGluZ1JlbGF0ZWREYXRhOiBib29sZWFuO1xuICAgIGVuYWJsZWRJbnRlcmNvbm5lY3RlZDogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGJwbW5TZXJ2aWNlOiBCcG1uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBicG1uQXBpU2VydmljZTogUU1TQ0tFZGl0b3JCcG1uQXBpU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2U6IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVsYXRlZFNlcnZpY2U6IFFNU0NLRWRpdG9yQlBNTkNvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50PixcbiAgICAgICAgcHJpdmF0ZSB0cmVlU2VydmljZTogUU1TQ0tFZGl0b3JUcmVlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBJY29uU2VydmljZTogUU1TSWNvblJlZ2lzdHJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckJwbW5EYXRhXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xuICAgICAgICB0aGlzLm1vZHVsZSA9IGRhdGEubW9kdWxlO1xuICAgICAgICB0aGlzLmVudGl0eUlkID0gZGF0YS5lbnRpdHlJZDtcbiAgICAgICAgdGhpcy5lZGl0b3JDb250ZW50ID0gZGF0YS5lZGl0b3JDb250ZW50O1xuICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1Byb2Nlc3NEb2N1bWVudFRyZWVEYXRhSW5TcGxpdFZpZXcgPSBkYXRhLnNob3dQcm9jZXNzRG9jdW1lbnRUcmVlRGF0YUluU3BsaXRWaWV3O1xuICAgICAgICB0aGlzLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCA9IGRhdGEuZW5hYmxlZEludGVyY29ubmVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IERpYWdyYW1UZW1wbGF0ZXMoKTtcbiAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLmVkaXRNb2RlID0gRmxvd2NoYXJ0Vmlld01vZGUuRWRpdDtcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLmNoYW5nZVRlbXBsYXRlUG9wdXBDb250ZW50ID0gdGhpcy5MQU5HLkJQTU4uQ0hBTkdFX1RFTVBMQVRFX05PVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnBtblRlbWxhdGVzID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcbiAgICAgICAgY29uc3QgdGVtbGF0ZXMgPSB0aGlzLmJwbW5UZW1sYXRlcy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IHguaW5kZXgsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVOYW1lOiB4LnRlbXBsYXRlTmFtZSxcbiAgICAgICAgICAgICAgICBmbG93Q2hhcnRJZDogeC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiB4LnRlbXBsYXRlTmFtZSxcbiAgICAgICAgICAgICAgICBqc29uQ29udGVudDogeC5qc29uQ29udGVudFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSB8fCBbXTtcblxuICAgICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5qc29uQ29udGVudCA9IGF3YWl0IHRoaXMuZ2V0SnNvbkNvbnRlbnQodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5icG1uU2VydmljZS5idWlsZERpYWdyYW0oXG4gICAgICAgICAgICB0ZW1sYXRlcyxcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUsXG4gICAgICAgICAgICAnZGVmYXVsdCBqb2ludC10aGVtZS1icG1uJyxcbiAgICAgICAgICAgIHRoaXMuanNvbkNvbnRlbnQsXG4gICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuZWRpdE1vZGUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgVG9vbGJhckZ1bmN0aW9uLmdldFRvb2xiYXJDb25maWd1cmF0aW9uKHRoaXMuTEFORylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zcGxpdFZpZXcgPSB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1Byb2Nlc3NEb2N1bWVudFRyZWVEYXRhSW5TcGxpdFZpZXc7XG4gICAgICAgIHRoaXMuaW5pdENvbm5lY3Rpb25UeXBlcygpO1xuICAgICAgICB0aGlzLmluaXRUYXJnZXQoKTtcbiAgICAgICAgdGhpcy5pbml0UHJvY2Vzc0RvY3VtZW50Q29uZmlnQW5kTm9kZURhdGEoKTtcbiAgICB9XG5cbiAgICBpbml0Q29ubmVjdGlvblR5cGVzKCkge1xuICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuY29ubmVjdFR5cGVzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzLFxuICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLkJQTU4uRE9DVU1FTlRfUFJPQ0VTUyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLlBST0NFU1NfRE9DVU1FTlRfQ09OTkVDVElPTl9HVUlERUxJTkUsXG4gICAgICAgICAgICAgICAgY2FuQ29ubmVjdDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rLFxuICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLkJQTU4uTElOSyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkxJTktfQ09OTkVDVElPTl9HVUlERUxJTkUsXG4gICAgICAgICAgICAgICAgY2FuQ29ubmVjdDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5BdHRhY2htZW50LFxuICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFUVEFDSE1FTlQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgICAgIGNhbkNvbm5lY3Q6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpbml0VGFyZ2V0KCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXRzKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh7IHZhbHVlOiBUYXJnZXRUeXBlTmFtZS5uZXcsIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9CTEFOSyB9KTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgdmFsdWU6IFRhcmdldFR5cGVOYW1lLnNhbWUsIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9TRUxGIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0VGVtcGxhdGVzKCk6IFByb21pc2U8UU1TQ0tFZGl0b3JCcG1uVGVtcGxhdGVbXT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuYnBtbkdldFRlbXBsYXRlcygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRCcG1uQnlJZChpZClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uQ29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBzZWxlY3RDb25uZWN0VHlwZShldmVudDogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZSkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICAgICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUHJvY2Vzc0RvY3VtZW50KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuQXR0YWNobWVudDpcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5BdHRhY2htZW50RGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuTGluazpcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5MaW5rKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0VGVtcGxhdGUoKSB7XG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSB0cnVlO1xuICAgICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XG4gICAgICAgIHRoaXMudGVtcFRlbXBsYXRlID0gZ3JhcGgudG9KU09OKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfSlNPTl9DT05URU5UXTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSnNvbkNvbnRlbnQpIHtcbiAgICAgICAgICAgIGlmIChncmFwaCkge1xuICAgICAgICAgICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uoc2VsZWN0ZWRKc29uQ29udGVudCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXSA9IG51bGw7XG4gICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSURdID0gJyc7XG4gICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzYXZlIEJQTU5cbiAgICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaE9iamVjdCk7XG4gICAgICAgICAgICB0aGlzLmJwbW4gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcbiAgICAgICAgICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXG4gICAgICAgICAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmJwbW5Nb2RpZnlpbmcodGhpcy5icG1uKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFzeW5jIGdldEltYWdlQ29udGVudChwYXBlcjogYW55KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgcGFwZXIudG9QTkcoKGltYWdlRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyclN0cmluZyA9IGltYWdlRGF0YS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoYXJyU3RyaW5nWzFdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkluc2VydEltYWdlKCkge1xuICAgICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XG4gICAgICAgIGNvbnN0IHBhcGVyID0gd2luZG93W2BwYXBlcmBdO1xuICAgICAgICBjb25zdCBjbGllbnRSZWN0ID0gcGFwZXIucGFwZXJUb0xvY2FsUmVjdChwYXBlci5nZXRDb250ZW50QkJveCgpKTtcbiAgICAgICAgY29uc3QgZ3JhcGhPYmplY3QgPSBncmFwaC50b0pTT04oKTtcbiAgICAgICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnNhdmVJbWFnZUNvbnRlbnQoZ3JhcGhPYmplY3QpO1xuICAgICAgICBjb25zdCBpbWFnZUNvbnRlbnQgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBhd2FpdCB0aGlzLmdldEltYWdlQ29udGVudChwYXBlcik7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBiYXNlNjRTdHJpbmdUb0ZpbGUoaW1hZ2VDb250ZW50LCBgJHtDS0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlBNTn0jJHtpZH1gKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVVcmwgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkSW1hZ2UoZmlsZSkudG9Qcm9taXNlKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoKGdyYXBoLCBwYXBlciwgZ3JhcGhPYmplY3QuY2VsbHMpO1xuICAgICAgICBjb25zdCBpbWFnZW1hcCA9IFFNU0NLRWRpdG9yQlBNTkZ1bmN0aW9ucy50b0ltYWdlTWFwKGlkLCBncmFwaE9iamVjdC5jZWxscywgY2xpZW50UmVjdCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHsga2V5OiBgJHtDS0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlBNTn0jJHtpZH1gLCB2YWx1ZXM6IHJlbGF0aXZlVXJsLCBpbWFnZW1hcDogaW1hZ2VtYXAgfVxuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlRGlhbG9nKCkge1xuICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXSA9IG51bGw7XG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TRUxFQ1RFRF9TSEFQRV9JRF0gPSAnJztcbiAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNIQVBFX1RZUEVdID0gJyc7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xuICAgIH1cblxuICAgIHNhdmVBc1RlbXBsYXRlKHRlbXBsYXRlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xuICAgICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XG4gICAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xuICAgICAgICB0aGlzLmJwbW4gPSB7XG4gICAgICAgICAgICBpZDogZ3VpZEhlbHBlci5lbXB0eSxcbiAgICAgICAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcbiAgICAgICAgICAgIGlzVGVtcGxhdGU6IHRydWUsXG4gICAgICAgICAgICB0ZW1wbGF0ZU5hbWU6ICcnXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5icG1uLnRlbXBsYXRlTmFtZSA9IHRlbXBsYXRlTmFtZTtcbiAgICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxuICAgICAgICAgICAgLmJwbW5Nb2RpZnlpbmcodGhpcy5icG1uKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icG1uU2VydmljZS5hZGRJdGVtVGVtcGxhdGUocmVzdWx0LCB0aGlzLmJwbW4pO1xuICAgICAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5zdWNjZXNzKHRoaXMuTEFORy5RTVNDS0VESVRPUi5TQVZFRCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UuZXJyb3IodGhpcy5MQU5HLlFNU0NLRURJVE9SLlNBVkVfRkFJTEVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVUZW1wbGF0ZSgpIHtcbiAgICAgICAgaWYgKCEhdGhpcy50ZW1wbGF0ZS5mbG93Q2hhcnRJZCkge1xuICAgICAgICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxuICAgICAgICAgICAgICAgIC5icG1uRGVsZXRlVGVtcGxhdGUodGhpcy50ZW1wbGF0ZS5mbG93Q2hhcnRJZClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJwbW5TZXJ2aWNlLnJlbW92ZVNlbGVjdEl0ZW0odGhpcy50ZW1wbGF0ZS5mbG93Q2hhcnRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJwbW5TZXJ2aWNlLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5zdWNjZXNzKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVEKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLmVycm9yKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVfRkFJTEVEKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzZXRUZW1wbGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcFRlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XG4gICAgICAgICAgICBpZiAoZ3JhcGgpIHtcbiAgICAgICAgICAgICAgICBncmFwaC5mcm9tSlNPTih0aGlzLnRlbXBUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5icG1uU2VydmljZS5zZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TRUxFQ1RFRF9TSEFQRV9JRF0gPSAnJztcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TSEFQRV9UWVBFXSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0NvbmZpcm1EaWFsb2codGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBpc01lc3NhZ2U6IGJvb2xlYW4sIGNhbGxiYWNrPzogKHJlc3VsdD86IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XG4gICAgICAgIGRhdGEudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcbiAgICAgICAgZGF0YS5pc01lc3NhZ2UgPSBpc01lc3NhZ2U7XG4gICAgICAgIGRhdGEuaXNDbG9zZUJ0biA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWZcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoKGdyYXBoOiBhbnksIHBhcGVyOiBhbnksIGNlbGxzOiBhbnlbXSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYmJveCA9IGdyYXBoLmdldENlbGwoY2VsbHNbaV0pLmZpbmRWaWV3KHBhcGVyKS5nZXRCQm94VG9DYWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoKTtcbiAgICAgICAgICAgIGNlbGxzW2ldLmFkZGl0aW9uYWxXaWR0aCA9IDA7XG4gICAgICAgICAgICBpZiAoYmJveCAmJiBjZWxsc1tpXT8uc2l6ZT8ud2lkdGgpXG4gICAgICAgICAgICAgICAgY2VsbHNbaV0uYWRkaXRpb25hbFdpZHRoID0gKGJib3gud2lkdGggPiBjZWxsc1tpXS5zaXplLndpZHRoKSA/IChiYm94LndpZHRoIC0gY2VsbHNbaV0uc2l6ZS53aWR0aCkgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFNoYXBlTW9kZWwoaWQ6IGFueSA9ICcnLCBpdGVtVHlwZTogYW55ID0gJycsIGl0ZW1OYW1lOiBzdHJpbmcgPSAnJywgc3RhdHVzTmFtZTogc3RyaW5nID0gbnVsbCkge1xuICAgICAgICB0aGlzLnNoYXBlTW9kZWwgPSBuZXcgU2hhcGVNb2RlbCgpO1xuICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkID0gaWQ7XG4gICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5pdGVtVHlwZSA9IGl0ZW1UeXBlO1xuICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbU5hbWUgPSBpdGVtTmFtZTtcbiAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLnN0YXR1c05hbWUgPSBzdGF0dXNOYW1lO1xuICAgICAgICB0aGlzLnNoYXBlTW9kZWwudGFyZ2V0LnRhcmdldElkID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb25uZWN0aW9uIHByb2Nlc3MvZG9jdW1lbnRcbiAgICBpbml0UHJvY2Vzc0RvY3VtZW50Q29uZmlnQW5kTm9kZURhdGEoKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1RyZWVDb25maWcgPSB7XG4gICAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogdHJ1ZSxcbiAgICAgICAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcbiAgICAgICAgICAgIHNob3dDaGVja0JveDogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXG4gICAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXG4gICAgICAgICAgICBtb2R1bGVJZDogRGF0YVR5cGUucHJvY2VzcyxcbiAgICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcbiAgICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnI2E0YjBkZScsXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXG4gICAgICAgICAgICBvbmx5Rm9sZGVyOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRUcmVlQ29uZmlnID0ge1xuICAgICAgICAgICAgYWxsb3dTZWxlY3RGb2xkZXI6IHRydWUsXG4gICAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXG4gICAgICAgICAgICBzaG93Q2hlY2tCb3g6IHRydWUsXG4gICAgICAgICAgICBtb2R1bGVJZDogRGF0YVR5cGUuZG9jdW1lbnQsXG4gICAgICAgICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICAgICAgb25seUNoZWNrQm94Rm9yQ2hpbGQ6IGZhbHNlLFxuICAgICAgICAgICAgb3Blbkljb25Db2xvcjogJyMxOTU0QTknLFxuICAgICAgICAgICAgY2xvc2VJY29uQ29sb3I6ICcjNGFjYWZmJyxcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlGb2xkZXI6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubG9hZGluZ1JlbGF0ZWREYXRhID0gdHJ1ZTtcbiAgICAgICAgZm9ya0pvaW4odGhpcy5yZWxhdGVkU2VydmljZS5nZXRBcmVhQ2hpbGRyZW5Ob2RlKG51bGwsICF0aGlzLnNwbGl0VmlldywgZmFsc2UsIHRoaXMuZGF0YS5lbmFibGVkSW50ZXJjb25uZWN0ZWQpLFxuICAgICAgICAgICAgdGhpcy5yZWxhdGVkU2VydmljZS5nZXRGb2xkZXJDaGlsZHJlbihudWxsLCAhdGhpcy5zcGxpdFZpZXcsIGZhbHNlKVxuICAgICAgICApLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtyZXMxLCByZXMyXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZWFzID0gcmVzMS5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkID09PSBndWlkSGVscGVyLmVtcHR5ID8gJycgOiB4LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlUHJvY2Vzc0RhdGEgPSBhcmVhcztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzMikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmVhcyA9IHJlczIubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6ICF4LnBhcmVudEhhbmRib29rSWQgPyAnJyA6IHgucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0aGlzLmlzRm9sZGVyKHgudHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiB4LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVEb2N1bWVudERhdGEgPSBhcmVhcztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdSZWxhdGVkRGF0YSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlblByb2Nlc3NEb2N1bWVudCgpIHtcbiAgICAgICAgY29uc3QgZGF0YTogU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhID0gbmV3IFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSgpO1xuICAgICAgICBkYXRhLm1vZHVsZUlkID0gTW9kdWxlVHlwZS5kb2N1bWVudFByb2Nlc3M7XG4gICAgICAgIGRhdGEubW9kdWxlTmFtZSA9IHRoaXMuTEFORy5CUE1OLkRPQ1VNRU5UX1BST0NFU1M7XG4gICAgICAgIGRhdGEudHJlZURhdGExID0gdGhpcy50cmVlUHJvY2Vzc0RhdGE7XG4gICAgICAgIGRhdGEudHJlZURhdGEyID0gdGhpcy50cmVlRG9jdW1lbnREYXRhO1xuICAgICAgICBkYXRhLnRyZWVDb25maWcxID0gdGhpcy5wcm9jZXNzVHJlZUNvbmZpZztcbiAgICAgICAgZGF0YS50cmVlQ29uZmlnMiA9IHRoaXMuZG9jdW1lbnRUcmVlQ29uZmlnO1xuICAgICAgICBkYXRhLnNwbGl0VmlldyA9IHRoaXMuc3BsaXRWaWV3O1xuICAgICAgICBkYXRhLmlzU2VsZWN0T25lID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cENvbXBvbmVudCwge1xuICAgICAgICAgICAgd2lkdGg6ICc3NjhweCcsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICc2OTBweCcsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vblNlYXJjaC5zdWJzY3JpYmUoYXN5bmMgKGtleXdvcmQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFrZXl3b3JkIHx8IGtleXdvcmQudHJpbSgpID09PSAnJylcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGxldCBnZXRTZWFyY2hPcHRpb24gPSBuZXcgR2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50T3B0aW9uKHRydWUsIHRydWUsIHRoaXMuZGF0YS5lbmFibGVkSW50ZXJjb25uZWN0ZWQsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0ID0gYXdhaXQgdGhpcy50cmVlU2VydmljZS5nZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnQoa2V5d29yZC50cmltKCksIGdldFNlYXJjaE9wdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0U2VhcmNoUmVsYXRlZChzZWFyY2hSZXN1bHQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25FeHBhbmRQcm9jZXNzQXJlYS5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWxhdGVkU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRBcmVhQ2hpbGRyZW5Ob2RlKGZvbGRlci5pZCwgIXRoaXMuc3BsaXRWaWV3LCBmYWxzZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmVhcyA9IHJlcy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogeC50eXBlID09PSBQcm9jZXNzTm9kZVR5cGUuQXJlYSA/IHguaWQudG9TdHJpbmcoKSA6IHgucHJvY2Vzc0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB4LnR5cGUgPT09IFByb2Nlc3NOb2RlVHlwZS5BcmVhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNJZDogeC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnR5cGUgPT09IFByb2Nlc3NOb2RlVHlwZS5BcmVhID8gMCA6IHguaXRlbU51bWJlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtVHlwZTogeC50eXBlID09PSBQcm9jZXNzTm9kZVR5cGUuQXJlYSA/IERhdGFUeXBlLmFyZWEgOiB4LnR5cGUgPT09IFByb2Nlc3NOb2RlVHlwZS5Qcm9jZXNzID8gRGF0YVR5cGUucHJvY2VzcyA6IERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRQcm9jZXNzQXJlYUNoaWxkcmVuKGFyZWFzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25FeHBhbmRGb2xkZXIuc3Vic2NyaWJlKChmb2xkZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVsYXRlZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0Rm9sZGVyQ2hpbGRyZW4oZm9sZGVyLmlkLCAhdGhpcy5zcGxpdFZpZXcsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZWFzID0gcmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5nZXRQYXJlbnRJZCh4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRoaXMuaXNGb2xkZXIoeC50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiB0aGlzLmlzRm9sZGVyKHgudHlwZSkgPyB4LnR5cGUgOiBmb2xkZXIubGV2ZWxUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldEZvbGRlckNoaWxkcmVuKGFyZWFzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25TZWxlY3RGb2xkZXJJdGVtLnN1YnNjcmliZSgoZm9sZGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9sZGVyLml0ZW1UeXBlID09PSBEYXRhVHlwZS5hcmVhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGVkU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZ2V0QXJlYUNvbnRlbnQoZm9sZGVyLmlkLCBmYWxzZSwgdGhpcy5lbmFibGVkSW50ZXJjb25uZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogSVJlbGF0ZWRbXSA9IHJlcy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZS5wcm9jZXNzSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGVsZS5wcm9jZXNzTnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTmFtZTogZWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtVHlwZTogZWxlLnByb2Nlc3NDbGFzc2lmaWNhdGlvbiA9PT0gUHJvY2Vzc0NsYXNzaWZpY2F0aW9uVHlwZXMuUHJvY2Vzc2VzID8gRGF0YVR5cGUucHJvY2VzcyA6IERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogZWxlLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHRoaXMuZ2V0RGlzbGF5TmFtZU9mUHJvY2Vzc1N0YXR1cyhlbGUuc3RhdHVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBmb2xkZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROYW1lOiBmb2xkZXIuaXRlbU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0U3BsaXR2aWV3VmFsdWUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvbGRlci5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGVkU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZ2V0Rm9sZGVyQ29udGVudChmb2xkZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogSVJlbGF0ZWRbXSA9IHJlcy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBlbGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBlbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiBEYXRhVHlwZS5kb2N1bWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IGVsZS5zdGF0dXNOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGZvbGRlci5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5hbWU6IGZvbGRlci5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsVHlwZTogZm9sZGVyLmxldmVsVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRTcGxpdHZpZXdWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3VsdFswXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTaGFwZU1vZGVsKChvYmouaXRlbVR5cGUgPT09IERhdGFUeXBlLnByb2Nlc3MgfHwgb2JqLml0ZW1UeXBlID09PSBEYXRhVHlwZS5wcm9jZXNzSW50ZXJjb25uZWN0ZWQpID8gb2JqLml0ZW1OdW1iZXJJZCA6IG9iai5pZCwgb2JqLml0ZW1UeXBlLCBvYmouaXRlbU5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsID0gdGhpcy5nZXRMaW5rVVJMKHRoaXMuc2hhcGVNb2RlbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5TVkdJY29uID0gdGhpcy5nZXRTaGFwZU1vZGVsSWNvbkJ5RGF0YVR5cGUodGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLml0ZW1UeXBlKTtcbiAgICAgICAgICAgICAgICBpZiAob2JqLml0ZW1UeXBlID09PSBEYXRhVHlwZS5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KG9iai5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHNhdmUgY29ubmVjdGlvblxuICAgICAgICAgICAgICAgIHRoaXMubWFwU2hhcGVEYXRhKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNob3dTaGFwZUNvbm5lY3Rpb25WYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNoYXBlQ29ubmVjdExhYmVsID0gdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkNPTk5FQ1RFRF9ET0NVTUVOVF9QUk9DRVNTO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEb2N1bW5ldCBQcm9jZXNzIFN1cHBvcnQgRnVuY1xuICAgIGlzRm9sZGVyKHR5cGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBkb2N1bWVudFR5cGVzID0gW1xuICAgICAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5Eb2N1bWVudCxcbiAgICAgICAgICAgIERvY3VtZW50Tm9kZVR5cGUuRmlsZURvY3VtZW50LFxuICAgICAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5MaW5rRG9jdW1lbnQsXG4gICAgICAgICAgICBEb2N1bWVudE5vZGVUeXBlLlNob3J0Y3V0RG9jdW1lbnRcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuICFkb2N1bWVudFR5cGVzLmluY2x1ZGVzKHR5cGUpO1xuICAgIH1cblxuICAgIGdldFBhcmVudElkKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGb2xkZXIoaXRlbS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXRlbS5wYXJlbnRGb2xkZXJJZCA/ICcnIDogaXRlbS5wYXJlbnRGb2xkZXJJZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGdldERpc2xheU5hbWVPZlByb2Nlc3NTdGF0dXMoc3RhdHVzOiBudW1iZXIpIHtcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy5pblByb2dyZXNzOlxuICAgICAgICAgICAgICAgIHJldHVybiAnQ09NTU9OLklOX1BST0dSRVNTJztcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy5zZW5kVG9BcHByb3ZhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5TRU5EX1RPX0FQUFJPVkFMJztcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy5hcHByb3ZlZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5BUFBST1ZFRCc7XG4gICAgICAgICAgICBjYXNlIFByb2Nlc3NTdGF0dXMudW5kZXJSZXZpc2lvbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5VTkRFUl9SRVZJU0lPTic7XG4gICAgICAgICAgICBjYXNlIFByb2Nlc3NTdGF0dXMuZGVsZXRlZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5ERUxFVEVEJztcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy5yZXZpZXdPckhlYXJpbmc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdDT01NT04uSEVBUklORyc7XG4gICAgICAgICAgICBjYXNlIFByb2Nlc3NTdGF0dXMuYXJjaGl2ZWQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdDT01NT04uQVJDSElWRUQnO1xuICAgICAgICAgICAgY2FzZSBQcm9jZXNzU3RhdHVzLmhlYXJpbmc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdQUk9DRVNTLkhFQVJJTkcnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5VTktOT1dOJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldExpbmtVUkwoc2hhcGVNb2RlbDogU2hhcGVNb2RlbCkge1xuICAgICAgICBzd2l0Y2ggKHNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6XG4gICAgICAgICAgICAgICAgc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsID0gYC9kb2N1bWVudC8ke3NoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgICAgICAgICAgc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsID0gYC9wcm9jZXNzLWRldGFpbC8ke3NoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XG4gICAgICAgICAgICAgICAgc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsID0gYC9hcmVhL2RldGFpbC8ke3NoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcbiAgICAgICAgICAgICAgICBzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSBgL2ZvbGRlci8ke3NoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZDpcbiAgICAgICAgICAgICAgICBzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSBgL3Byb2Nlc3MtaW50ZXJjb25uZWN0ZWQvJHtzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmRpc3BsYXlJZH1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmw7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIEF0dGFjaG1lbnQgXG4gICAgb3BlbkF0dGFjaG1lbnREaWFsb2coKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xuICAgICAgICBkYXRhLm1vZHVsZSA9IHRoaXMubW9kdWxlO1xuICAgICAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5lbnRpdHlJZDtcbiAgICAgICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKExpbmtBdHRhY2htZW50Q29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzY1MHB4JyxcbiAgICAgICAgICAgIGhlaWdodDogJzY1MHB4JyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1RlbXBsYXRlXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U2hhcGVNb2RlbChudWxsLCAwLCByZXN1bHQudGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubGlua1VybCA9IHJlc3VsdC51cmw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5zaGFwZS5jb25uZWN0aW9uVHlwZUlkID0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5BdHRhY2htZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubWF0SWNvbiA9ICd0ZXh0X3NuaXBwZXQnO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwU2hhcGVEYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNob3dTaGFwZUNvbm5lY3Rpb25WYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5zaGFwZUNvbm5lY3RMYWJlbCA9IHRoaXMuTEFORy5CUE1OLkNPTk5FQ1RJT05fVFlQRS5DT05ORUNURURfQVRUQUNITUVOVDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRTaGFwZUFjdGl2aXR5KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsVmlldyA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddO1xuICAgICAgICBpZiAoISFzZWxlY3RlZENlbGxWaWV3KSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgaWYgKCEhYXR0cmlidXRlcy5saW5rVXJsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhRnJvbVNoYXBlQXRycmlidXRlKGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC50YXJnZXQudGFyZ2V0SWQgPSBhdHRyaWJ1dGVzLmxpbmtUYXJnZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNob3dTaGFwZUNvbm5lY3Rpb25WYWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgc2hhcGUgY29ubmVjdCBsYWJlbFxuICAgICAgICAgICAgICAgIGlmICghIXRoaXMuc2hhcGVNb2RlbCkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuc2hhcGVNb2RlbC5zaGFwZT8uY29ubmVjdGlvblR5cGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5zaGFwZUNvbm5lY3RMYWJlbCA9IHRoaXMuTEFORy5CUE1OLkNPTk5FQ1RJT05fVFlQRS5DT05ORUNURURfRE9DVU1FTlRfUFJPQ0VTUztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5BdHRhY2htZW50OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5zaGFwZUNvbm5lY3RMYWJlbCA9IHRoaXMuTEFORy5CUE1OLkNPTk5FQ1RJT05fVFlQRS5DT05ORUNURURfQVRUQUNITUVOVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5zaGFwZUNvbm5lY3RMYWJlbCA9IHRoaXMuTEFORy5CUE1OLkNPTk5FQ1RJT05fVFlQRS5DT05ORUNURURfTElOSztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1NoYXBlQ29ubmVjdGlvblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREYXRhRnJvbVNoYXBlQXRycmlidXRlKHNoYXBlQXR0cmlidXRlOiBhbnkpIHtcbiAgICAgICAgaWYgKCEhc2hhcGVBdHRyaWJ1dGUubGlua1VybCkge1xuICAgICAgICAgICAgdGhpcy5pbml0U2hhcGVNb2RlbCgnJywgJycsIHNoYXBlQXR0cmlidXRlLmxpbmtUaXRsZSk7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBzaGFwZUF0dHJpYnV0ZS5saW5rVXJsO1xuICAgICAgICAgICAgY29uc3QgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcbiAgICAgICAgICAgIGxldCBkb2N1bWVudFR5cGUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKCEhc2hhcGVBdHRyaWJ1dGUuY29ubmVjdGlvblR5cGVJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5zaGFwZS5jb25uZWN0aW9uVHlwZUlkID0gc2hhcGVBdHRyaWJ1dGUuY29ubmVjdGlvblR5cGVJZDtcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGUgPSB0aGlzLmdldFJlbGF0ZWRJdGVtQnlTaGFwZUNvbm5lY3Rpb25UeXBlKHNoYXBlQXR0cmlidXRlLmNvbm5lY3Rpb25UeXBlSWQsIHVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGUgPSB0aGlzLmdldERvY3VtZW50VHlwZSh1cmwpO1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsaW5rSWQgPSB0aGlzLmdldExpbmtJZCh1cmwsIGRvY3VtZW50VHlwZSk7XG4gICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkID0gbGlua0lkID8gK2xpbmtJZCA6IC0xO1xuICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLml0ZW1UeXBlID0gZG9jdW1lbnRUeXBlO1xuICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnRhcmdldC50YXJnZXRJZCA9IHNoYXBlQXR0cmlidXRlLmxpbmtUYXJnZXQ7XG4gICAgICAgICAgICAvLyBoYW5kbGUgbG9nb1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hhcGVNb2RlbC5zaGFwZS5jb25uZWN0aW9uVHlwZUlkID09PSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQpXG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLm1hdEljb24gPSAndGV4dF9zbmlwcGV0JztcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5TVkdJY29uID0gdGhpcy5nZXRTaGFwZU1vZGVsSWNvbkJ5RGF0YVR5cGUoZG9jdW1lbnRUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBMaW5rXG4gICAgICAgICAgICBpZiAodGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPT09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuTGluaykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5saW5rLmxpbmsgPSB1cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISFsaW5rSWQgJiYgZG9jdW1lbnRUeXBlID09IERhdGFUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLmFuY2hvci5hbmNob3JWYWx1ZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChsaW5rSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TGlua0lkKHVybDogc3RyaW5nLCB0eXBlOiBEYXRhVHlwZSkge1xuICAgICAgICBsZXQgcGFydGlhbFVybEluZGV4ID0gMDtcbiAgICAgICAgbGV0IHBhcnRpYWxVcmxMZW5ndGggPSAwO1xuICAgICAgICBsZXQgaWQgPSAnJztcbiAgICAgICAgbGV0IGZyb20gPSAwO1xuICAgICAgICBsZXQgdXJsTG93ZXJDYXNlID0gISF1cmwgPyB1cmwudG9Mb3dlckNhc2UoKSA6ICcnO1xuXG4gICAgICAgIGNvbnN0IHBhcnRpYWxVcmwgPSB0aGlzLmdldFBhcnRpYWxVcmwodHlwZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgaGFzaEluZGV4ID0gdXJsTG93ZXJDYXNlLmluZGV4T2YoJyMnKTtcblxuICAgICAgICBpZiAoISFwYXJ0aWFsVXJsKSB7XG4gICAgICAgICAgICBwYXJ0aWFsVXJsSW5kZXggPSB1cmxMb3dlckNhc2UuaW5kZXhPZihwYXJ0aWFsVXJsKTtcblxuICAgICAgICAgICAgcGFydGlhbFVybExlbmd0aCA9IHBhcnRpYWxVcmwubGVuZ3RoO1xuICAgICAgICAgICAgZnJvbSA9IHBhcnRpYWxVcmxJbmRleCArIHBhcnRpYWxVcmxMZW5ndGg7XG5cbiAgICAgICAgICAgIGlmICh0eXBlID09IERhdGFUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20sIGhhc2hJbmRleCAtIGZyb20pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tKS5pbmRleE9mKCcvJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20sIGxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT0gRGF0YVR5cGUuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQoaWQsIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICBpZCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICBnZXRQYXJ0aWFsVXJsKHR5cGU6IERhdGFUeXBlKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkw7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIENLRWRpdG9yTGlua0NvbnN0LlBST0NFU1NfUEFSVElBTF9VUkw7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19JTlRFUkNPTk5FQ1RFRF9QQVJUSUFMX1VSTDtcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuYXJlYTpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuQVJFQV9QQVJUSUFMX1VSTDtcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5GT0xERVJfUEFSVElBTF9VUkw7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlbGF0ZWRJdGVtQnlTaGFwZUNvbm5lY3Rpb25UeXBlKGNvbm5lY3Rpb25UeXBlSWQ6IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUsIHVybDogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoY29ubmVjdGlvblR5cGVJZCkge1xuICAgICAgICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERvY3VtZW50VHlwZSh1cmwpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERvY3VtZW50VHlwZSh1cmw6IHN0cmluZykge1xuICAgICAgICBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkwpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZS5kb2N1bWVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX1BBUlRJQUxfVVJMKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0YVR5cGUucHJvY2VzcztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX0lOVEVSQ09OTkVDVEVEX1BBUlRJQUxfVVJMKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkFSRUFfUEFSVElBTF9VUkwpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZS5hcmVhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkZPTERFUl9QQVJUSUFMX1VSTCkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlLmZvbGRlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkKSB7XG4gICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5pc0FuY2hvckxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxpbmtTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0QW5jaG9yRG9jdW1lbnRMaXN0KGRvY3VtZW50SWQpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZG9jdW1lbnRzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JzID0gdGhpcy5leHRyYWN0RG9jdW1lbnRBbmNob3JzKGRvY3VtZW50cyB8fCBbXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLmlzQW5jaG9yTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXh0cmFjdERvY3VtZW50QW5jaG9ycyhhbmNob3JEb2N1bWVudDogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSkge1xuICAgICAgICBjb25zdCBhbmNob3JzOiBRTVNCUE1OU2hhcGVBbmNob3JbXSA9IFt7IHZhbHVlOiAwLCB2aWV3VmFsdWU6ICcnLCBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5CbGFuayB9XTtcbiAgICAgICAgbGV0IGlkID0gMztcbiAgICAgICAgaWYgKGFuY2hvckRvY3VtZW50KSB7XG4gICAgICAgICAgICBhbmNob3JEb2N1bWVudC5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9IGUucmljaFRleHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9tQ29udGVudCA9IGRpdjtcbiAgICAgICAgICAgICAgICBjb25zdCBhVGFncyA9IGRvbUNvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTtcbiAgICAgICAgICAgICAgICBpZiAoYVRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhVGFncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gYVRhZ3NbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmFuY2hvclZhbHVlID09PSB0YWcubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGFuY2hvcnMucHVzaCh7XG4gICAgICAgICAgICB2YWx1ZTogMSxcbiAgICAgICAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9BVFRBQ0hNRU5ULFxuICAgICAgICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQXR0YWNobWVudFxuICAgICAgICB9KTtcbiAgICAgICAgYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgICAgIHZhbHVlOiAyLFxuICAgICAgICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX1JFTEFURURfRE9DVU1FTlQsXG4gICAgICAgICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5SZWxhdGVkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYW5jaG9ycztcbiAgICB9XG5cbiAgICBnZXRTaGFwZU1vZGVsSWNvbkJ5RGF0YVR5cGUoZGF0YVR5cGU6IERhdGFUeXBlKSB7XG4gICAgICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwcm9jZXNzX2FyZWFfb3V0bGluZWQnO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICAgICAgICAgIHJldHVybiAncHJvY2Vzcyc7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfaW50ZXJjb25uZWN0ZWQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWxvYWRBbmNob3JEb2N1bWVudCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsVmlldyA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddO1xuICAgICAgICBpZiAoISFzZWxlY3RlZENlbGxWaWV3KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaGFwZU1vZGVsICYmIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbSAmJiB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudCh0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5MaW5rKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gbmV3IFNoYXBlTGluaygpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEJQTU5MaW5rQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzM1MHB4JyxcbiAgICAgICAgICAgIGhlaWdodDogJzI0NXB4JyxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAnY3VzdG9tLW1hdC1kaWFsb2ctY29udGFpbmVyJyxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChuZXdMaW5rKSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3TGluaykge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNoYXBlTW9kZWwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCA9IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuTGluaztcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwubGluay5saW5rID0gbmV3TGluay5saW5rO1xuICAgICAgICAgICAgICAgIHRoaXMubWFwU2hhcGVEYXRhKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNob3dTaGFwZUNvbm5lY3Rpb25WYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNoYXBlQ29ubmVjdExhYmVsID0gdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkNPTk5FQ1RFRF9MSU5LO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVDb25uZWN0aW9uKHNlbGVjdGVkQ29ubmVjdGlvblR5cGU6IGFueSkge1xuICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfQVRUQUNITUVOVDtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSB0aGlzLkxBTkcuQlBNTi5DT05GSVJNX0RFTEVURV9BVFRBQ0hNRU5UO1xuICAgICAgICBpZiAoc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9PSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzKSB7XG4gICAgICAgICAgICB0aXRsZSA9IHRoaXMuTEFORy5CUE1OLkRFTEVURV9ET0NVTUVOVF9PUl9QUk9DRVNTO1xuICAgICAgICAgICAgY29udGVudCA9IHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0RPQ1VNRU5UX09SX1BST0NFU1M7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9PSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkxpbmspIHtcbiAgICAgICAgICAgIHRpdGxlID0gdGhpcy5MQU5HLkJQTU4uREVMRVRFX0xJTks7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfQVRUQUNITUVOVDtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENvbm5lY3Rpb25UeXBlID09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuQXR0YWNobWVudCkge1xuICAgICAgICAgICAgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfQVRUQUNITUVOVDtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9BVFRBQ0hNRU5UO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2codGl0bGUsIGNvbnRlbnQsIGZhbHNlLCAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSB0cnVlIHx8ICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcgJiYgdmFsdWUuaXNDb25maXJtZWQgPT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsID0gbmV3IFNoYXBlTW9kZWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNob3dTaGFwZUNvbm5lY3Rpb25WYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISF3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10ubW9kZWwucmVtb3ZlUHJvcCgnbGlua1VybCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10ubW9kZWwucmVtb3ZlUHJvcCgnbGlua1RhcmdldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10ubW9kZWwucmVtb3ZlUHJvcCgnbGlua1RpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5yZW1vdmVQcm9wKCdjb25uZWN0aW9uVHlwZUlkJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgc2F2ZVNoYXBlVGFyZ2V0KHRhcmdldElkOiBhbnkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsVmlldyA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddO1xuICAgICAgICBpZiAoISFzZWxlY3RlZENlbGxWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwudGFyZ2V0LnRhcmdldElkID0gdGFyZ2V0SWQ7XG4gICAgICAgICAgICBzZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtUYXJnZXQnLCB0YXJnZXRJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlU2hhcGVBbmNob3IoYW5jaG9yVmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxWaWV3ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV107XG4gICAgICAgIGlmICghIXNlbGVjdGVkQ2VsbFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5hbmNob3IuYW5jaG9yVmFsdWUgPSBhbmNob3JWYWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSBgJHtDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTH0ke3RoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWR9IyR7YW5jaG9yVmFsdWV9YFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2VsbFZpZXcubW9kZWwucHJvcCgnbGlua1VybCcsIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1hcFNoYXBlRGF0YSgpIHtcbiAgICAgICAgaWYgKCEhd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10pIHtcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddLm1vZGVsLnByb3AoJ2xpbmtVcmwnLCB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCAhPT0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubGlua1VybCA6IHRoaXMuc2hhcGVNb2RlbC5saW5rLmxpbmspO1xuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10ubW9kZWwucHJvcCgnbGlua1RhcmdldCcsIFRhcmdldFR5cGVOYW1lLm5ldyk7XG4gICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5wcm9wKCdsaW5rVGl0bGUnLCB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCAhPT0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbU5hbWUgOiAnJyk7XG4gICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5wcm9wKCdjb25uZWN0aW9uVHlwZUlkJywgdGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
955
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hGLE9BQU8sVUFBVSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFF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QUFzQjtZQUN0QixZQUFZO1lBQ1osZUFBZTtZQXBDZixtQkFBbUIsdUJBeUZuQixNQUFNLFNBQUMsZUFBZTs7O3VCQTFDMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudFwiO1xuaW1wb3J0IHsgRmxvd0NoYXJ0Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckZsb3djaGFydC5jb25zdFwiO1xuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi10ZW1wbGF0ZS5tb2RlbFwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4ubW9kZWxcIjtcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLWFwaS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCcG1uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3NoYXBlLWZsb3ctY2hhcnQtY29ubmVjdGlvbi10eXBlJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXVwbG9hZC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBiYXNlNjRTdHJpbmdUb0ZpbGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9maWxlSGVscGVyXCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWNvbW1vbi5zZXJ2aWNlc1wiO1xuaW1wb3J0IHsgUU1TQlBNTkNvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcW1zLWJwbW4tY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgUU1TQ0tFZGl0b3JCUE1ORnVuY3Rpb25zIGZyb20gJy4vLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy9icG1uLmZ1bmN0aW9uJztcbmltcG9ydCB7IERpYWdyYW1UZW1wbGF0ZXMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RpYWdyYW0tdGVtcGxhdGUubW9kZWxcIjtcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy90cmVlXCI7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgRmxvd2NoYXJ0Vmlld01vZGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2Zsb3djaGFydC12aWV3LW1vZGUuZW51bVwiO1xuaW1wb3J0IHsgUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSwgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3NlbGVjdC1wcm9jZXNzLWRvY3VtZW50XCI7XG5pbXBvcnQgeyBNb2R1bGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL21vZHVsZS10eXBlLmVudW1cIjtcbmltcG9ydCB7IFByb2Nlc3NOb2RlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9wcm9jZXNzLW5vZGUtdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBJUmVsYXRlZCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3JlbGF0ZWQvbW9kZWwvcmVsYXRlZC1kYXRhLm1vZGVsXCI7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RvY3VtZW50LW5vZGUtdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBQcm9jZXNzU3RhdHVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL3Byb2Nlc3NTdGF0dXMuZW51bVwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCUE1OQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWJwbW4tY29ubmVjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaGFwZU1vZGVsIH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvcW1zLWJwbW4vbW9kZWxzL3NoYXBlLW1vZGVsLm1vZGVsXCI7XG5pbXBvcnQgeyBUYXJnZXRUeXBlTmFtZSB9IGZyb20gXCIuLi8uLi9jb21tb24vZW51bXMvdGFyZ2V0LXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgUU1TQlBNTlNoYXBlVGFyZ2V0IH0gZnJvbSBcIi4uLy4uL21vZGVscy9xbXMtYnBtbi1zaGFwZS10YXJnZXRcIjtcbmltcG9ydCB7IENLRWRpdG9yTGlua0NvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JMaW5rLmNvbnN0YW50XCI7XG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gXCIuLi9xbXMtY2tlZGl0b3ItbGluay9hdHRhY2htZW50cy9saW5rLWF0dGFjaG1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGFyYW1ldGVyLm1vZGVsXCI7XG5pbXBvcnQgeyBRTVNCUE1OU2hhcGVBbmNob3IgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Ftcy1icG1uLXNoYXBlLWFuY2hvci5tb2RlbFwiO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItbGluay1hbmNob3ItZG9jdW1lbnQubW9kZWxcIjtcbmltcG9ydCB7IExpbmtBbmNob3IgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW1cIjtcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi90b2FzdC9xbXMtY2tlZGl0b3ItdG9hc3Quc2VydmljZVwiO1xuaW1wb3J0IHsgQlBNTkxpbmtDb21wb25lbnQgfSBmcm9tIFwiLi9saW5rL2JwbW4tbGluay5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNoYXBlTGluayB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3Ftcy1icG1uL21vZGVscy9mbG93LWNoYXJ0LXNoYXBlL3NoYXBlLWxpbmtcIjtcbmltcG9ydCBUb29sYmFyRnVuY3Rpb24gZnJvbSBcIi4uLy4uL2NvbW1vbi9icG1uL3Rvb2xiYXIuZnVuY3Rpb25cIjtcbmltcG9ydCB7IFByb2Nlc3NDbGFzc2lmaWNhdGlvblR5cGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL3Byb2Nlc3MtY2xhc3NpZmljYXRpb24tdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgR2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50T3B0aW9uIH0gZnJvbSBcIi4uLy4uL21vZGVscy9nZXQtc2VhcmNoLXByb2Nlc3MtZG9jdW1lbnQtb3B0aW9uXCI7XG5pbXBvcnQgeyBEb2N1bWVudFRyZWVOb2RlRGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZG9jdW1lbnQtdHJlZS1ub2RlLWRhdGEubW9kZWxcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdxbXMtY2tlZGl0b3ItYnBtbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgTEFORzogYW55O1xuICAgIEBJbnB1dCgpIGNrRWRpdG9yOiBhbnk7XG5cbiAgICBRTVNCUE1OQ29uZmlnOiBRTVNCUE1OQ29uZmlnID0gbmV3IFFNU0JQTU5Db25maWcoKTtcbiAgICBqc29uQ29udGVudDogc3RyaW5nO1xuXG4gICAgaWQgPSAnJztcbiAgICBtb2R1bGU6IG51bWJlcjtcbiAgICBlbnRpdHlJZCA9ICcnO1xuICAgIGVkaXRvckNvbnRlbnQgPSAnJztcblxuICAgIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcbiAgICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcbiAgICB0ZW1wbGF0ZTtcbiAgICBzaGFwZU1vZGVsOiBTaGFwZU1vZGVsID0gbmV3IFNoYXBlTW9kZWwoKTtcbiAgICAvKiogdGVtcGxhdGUgYmVmb3JlIHNlbGVjdGVkIGFscmVhZHkgYW5vdGhlciB0ZW1wbGF0ZSBpbiBzZWxlY3QgYm94ICh1c2luZyBmb3IgcmVzZXQgdGVtcGxhdGUpKi9cbiAgICB0ZW1wVGVtcGxhdGU6IGFueTtcbiAgICB0YXJnZXRzOiBRTVNCUE1OU2hhcGVUYXJnZXRbXSA9IFtdO1xuICAgIGFuY2hvcnM6IFFNU0JQTU5TaGFwZUFuY2hvcltdID0gW107XG4gICAgLy8gcHJvY2Vzcy9kb2N1bWVudCBjb25uZWN0aW9uIHR5cGVcbiAgICBzcGxpdFZpZXc6IGJvb2xlYW47XG4gICAgcHJvY2Vzc1RyZWVDb25maWc6IFRyZWVDb25maWc7XG4gICAgZG9jdW1lbnRUcmVlQ29uZmlnOiBUcmVlQ29uZmlnO1xuICAgIHRyZWVQcm9jZXNzRGF0YTogRG9jdW1lbnRUcmVlTm9kZURhdGFbXTtcbiAgICB0cmVlRG9jdW1lbnREYXRhOiBEb2N1bWVudFRyZWVOb2RlRGF0YVtdO1xuICAgIGxvYWRpbmdSZWxhdGVkRGF0YTogYm9vbGVhbjtcbiAgICBlbmFibGVkSW50ZXJjb25uZWN0ZWQ6IGJvb2xlYW47XG4gICAgbGFuZ3VhZ2U6IHN0cmluZyA9ICdlbic7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBicG1uU2VydmljZTogQnBtblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYnBtbkFwaVNlcnZpY2U6IFFNU0NLRWRpdG9yQnBtbkFwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbGlua1NlcnZpY2U6IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogUU1TQ0tFZGl0b3JVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlOiBRTVNTZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbGF0ZWRTZXJ2aWNlOiBRTVNDS0VkaXRvckJQTU5Db25uZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudD4sXG4gICAgICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwSWNvblNlcnZpY2U6IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JCcG1uRGF0YVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmlkID0gZGF0YS5pZDtcbiAgICAgICAgdGhpcy5tb2R1bGUgPSBkYXRhLm1vZHVsZTtcbiAgICAgICAgdGhpcy5lbnRpdHlJZCA9IGRhdGEuZW50aXR5SWQ7XG4gICAgICAgIHRoaXMuZWRpdG9yQ29udGVudCA9IGRhdGEuZWRpdG9yQ29udGVudDtcbiAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNob3dQcm9jZXNzRG9jdW1lbnRUcmVlRGF0YUluU3BsaXRWaWV3ID0gZGF0YS5zaG93UHJvY2Vzc0RvY3VtZW50VHJlZURhdGFJblNwbGl0VmlldztcbiAgICAgICAgdGhpcy5lbmFibGVkSW50ZXJjb25uZWN0ZWQgPSBkYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZDtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBEaWFncmFtVGVtcGxhdGVzKCk7XG4gICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5lZGl0TW9kZSA9IEZsb3djaGFydFZpZXdNb2RlLkVkaXQ7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2UgPSByZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5jaGFuZ2VUZW1wbGF0ZVBvcHVwQ29udGVudCA9IHRoaXMuTEFORy5CUE1OLkNIQU5HRV9URU1QTEFURV9OT1RFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJwbW5UZW1sYXRlcyA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVzKCk7XG4gICAgICAgIGNvbnN0IHRlbWxhdGVzID0gdGhpcy5icG1uVGVtbGF0ZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGluZGV4OiB4LmluZGV4LFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlTmFtZTogeC50ZW1wbGF0ZU5hbWUsXG4gICAgICAgICAgICAgICAgZmxvd0NoYXJ0SWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogeC50ZW1wbGF0ZU5hbWUsXG4gICAgICAgICAgICAgICAganNvbkNvbnRlbnQ6IHguanNvbkNvbnRlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMuanNvbkNvbnRlbnQgPSBhd2FpdCB0aGlzLmdldEpzb25Db250ZW50KHRoaXMuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnBtblNlcnZpY2UuYnVpbGREaWFncmFtKFxuICAgICAgICAgICAgdGVtbGF0ZXMsXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlLFxuICAgICAgICAgICAgJ2RlZmF1bHQgam9pbnQtdGhlbWUtYnBtbicsXG4gICAgICAgICAgICB0aGlzLmpzb25Db250ZW50LFxuICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLmVkaXRNb2RlLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIFRvb2xiYXJGdW5jdGlvbi5nZXRUb29sYmFyQ29uZmlndXJhdGlvbih0aGlzLkxBTkcpLFxuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNwbGl0VmlldyA9IHRoaXMuUU1TQlBNTkNvbmZpZy5zaG93UHJvY2Vzc0RvY3VtZW50VHJlZURhdGFJblNwbGl0VmlldztcbiAgICAgICAgdGhpcy5pbml0Q29ubmVjdGlvblR5cGVzKCk7XG4gICAgICAgIHRoaXMuaW5pdFRhcmdldCgpO1xuICAgICAgICB0aGlzLmluaXRQcm9jZXNzRG9jdW1lbnRDb25maWdBbmROb2RlRGF0YSgpO1xuICAgIH1cblxuICAgIGluaXRDb25uZWN0aW9uVHlwZXMoKSB7XG4gICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5jb25uZWN0VHlwZXMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3MsXG4gICAgICAgICAgICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuQlBNTi5ET0NVTUVOVF9QUk9DRVNTLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkxBTkcuQlBNTi5DT05ORUNUSU9OX1RZUEUuUFJPQ0VTU19ET0NVTUVOVF9DT05ORUNUSU9OX0dVSURFTElORSxcbiAgICAgICAgICAgICAgICBjYW5Db25uZWN0OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkxpbmssXG4gICAgICAgICAgICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuQlBNTi5MSU5LLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkxBTkcuQlBNTi5DT05ORUNUSU9OX1RZUEUuTElOS19DT05ORUNUSU9OX0dVSURFTElORSxcbiAgICAgICAgICAgICAgICBjYW5Db25uZWN0OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQVRUQUNITUVOVCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgY2FuQ29ubmVjdDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGluaXRUYXJnZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldHMpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgdmFsdWU6IFRhcmdldFR5cGVOYW1lLm5ldywgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX0JMQU5LIH0pO1xuICAgICAgICAgICAgdGhpcy50YXJnZXRzLnB1c2goeyB2YWx1ZTogVGFyZ2V0VHlwZU5hbWUuc2FtZSwgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NFTEYgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXRUZW1wbGF0ZXMoKTogUHJvbWlzZTxRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZVtdPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxuICAgICAgICAgICAgICAgIC5icG1uR2V0VGVtcGxhdGVzKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBhc3luYyBnZXRKc29uQ29udGVudChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEJwbW5CeUlkKGlkKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb25Db250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHNlbGVjdENvbm5lY3RUeXBlKGV2ZW50OiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNhc2UgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5Eb2N1bWVudE9yUHJvY2VzczpcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qcm9jZXNzRG9jdW1lbnQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5BdHRhY2htZW50OlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkF0dGFjaG1lbnREaWFsb2coKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rOlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkxpbmsoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RUZW1wbGF0ZSgpIHtcbiAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LklTX1NFTEVDVEVEX1RFTVBMQVRFXSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcbiAgICAgICAgdGhpcy50ZW1wVGVtcGxhdGUgPSBncmFwaC50b0pTT04oKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRKc29uQ29udGVudCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TRUxFQ1RFRF9KU09OX0NPTlRFTlRdO1xuICAgICAgICBpZiAoc2VsZWN0ZWRKc29uQ29udGVudCkge1xuICAgICAgICAgICAgaWYgKGdyYXBoKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShzZWxlY3RlZEpzb25Db250ZW50KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TRUxFQ1RFRF9TSEFQRV9JRF0gPSAnJztcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TSEFQRV9UWVBFXSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHNhdmUgQlBNTlxuICAgIGFzeW5jIHNhdmVJbWFnZUNvbnRlbnQoZ3JhcGhPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGdyYXBoT2JqZWN0KTtcbiAgICAgICAgICAgIHRoaXMuYnBtbiA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5pZCA/IHRoaXMuaWQgOiBndWlkSGVscGVyLmVtcHR5LFxuICAgICAgICAgICAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcbiAgICAgICAgICAgICAgICBpc1RlbXBsYXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZU5hbWU6ICcnXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuYnBtbk1vZGlmeWluZyh0aGlzLmJwbW4pXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SW1hZ2VDb250ZW50KHBhcGVyOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBwYXBlci50b1BORygoaW1hZ2VEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJyU3RyaW5nID0gaW1hZ2VEYXRhLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShhcnJTdHJpbmdbMV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIG9uSW5zZXJ0SW1hZ2UoKSB7XG4gICAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcbiAgICAgICAgY29uc3QgcGFwZXIgPSB3aW5kb3dbYHBhcGVyYF07XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPSBwYXBlci5wYXBlclRvTG9jYWxSZWN0KHBhcGVyLmdldENvbnRlbnRCQm94KCkpO1xuICAgICAgICBjb25zdCBncmFwaE9iamVjdCA9IGdyYXBoLnRvSlNPTigpO1xuICAgICAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuc2F2ZUltYWdlQ29udGVudChncmFwaE9iamVjdCk7XG4gICAgICAgIGNvbnN0IGltYWdlQ29udGVudCA9ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGF3YWl0IHRoaXMuZ2V0SW1hZ2VDb250ZW50KHBhcGVyKTtcbiAgICAgICAgY29uc3QgZmlsZSA9IGJhc2U2NFN0cmluZ1RvRmlsZShpbWFnZUNvbnRlbnQsIGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OfSMke2lkfWApO1xuICAgICAgICBjb25zdCByZWxhdGl2ZVVybCA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRJbWFnZShmaWxlKS50b1Byb21pc2UoKTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoZ3JhcGgsIHBhcGVyLCBncmFwaE9iamVjdC5jZWxscyk7XG4gICAgICAgIGNvbnN0IGltYWdlbWFwID0gUU1TQ0tFZGl0b3JCUE1ORnVuY3Rpb25zLnRvSW1hZ2VNYXAoaWQsIGdyYXBoT2JqZWN0LmNlbGxzLCBjbGllbnRSZWN0KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geyBrZXk6IGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OfSMke2lkfWAsIHZhbHVlczogcmVsYXRpdmVVcmwsIGltYWdlbWFwOiBpbWFnZW1hcCB9XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xuICAgIH1cblxuICAgIG9uQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcbiAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xuICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgc2F2ZUFzVGVtcGxhdGUodGVtcGxhdGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gICAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcbiAgICAgICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaC50b0pTT04oKSk7XG4gICAgICAgIHRoaXMuYnBtbiA9IHtcbiAgICAgICAgICAgIGlkOiBndWlkSGVscGVyLmVtcHR5LFxuICAgICAgICAgICAganNvbkNvbnRlbnQ6IGpzb25Db250ZW50LFxuICAgICAgICAgICAgaXNUZW1wbGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgIHRlbXBsYXRlTmFtZTogJydcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJwbW4udGVtcGxhdGVOYW1lID0gdGVtcGxhdGVOYW1lO1xuICAgICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXG4gICAgICAgICAgICAuYnBtbk1vZGlmeWluZyh0aGlzLmJwbW4pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJwbW5TZXJ2aWNlLmFkZEl0ZW1UZW1wbGF0ZShyZXN1bHQsIHRoaXMuYnBtbik7XG4gICAgICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLlNBVkVEKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5lcnJvcih0aGlzLkxBTkcuUU1TQ0tFRElUT1IuU0FWRV9GQUlMRUQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZVRlbXBsYXRlKCkge1xuICAgICAgICBpZiAoISF0aGlzLnRlbXBsYXRlLmZsb3dDaGFydElkKSB7XG4gICAgICAgICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmJwbW5EZWxldGVUZW1wbGF0ZSh0aGlzLnRlbXBsYXRlLmZsb3dDaGFydElkKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnBtblNlcnZpY2UucmVtb3ZlU2VsZWN0SXRlbSh0aGlzLnRlbXBsYXRlLmZsb3dDaGFydElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnBtblNlcnZpY2Uuc2V0RGVmYXVsdFNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURUQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UuZXJyb3IodGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURV9GQUlMRUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFRlbXBsYXRlKCkge1xuICAgICAgICBpZiAodGhpcy50ZW1wVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcbiAgICAgICAgICAgIGlmIChncmFwaCkge1xuICAgICAgICAgICAgICAgIGdyYXBoLmZyb21KU09OKHRoaXMudGVtcFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJwbW5TZXJ2aWNlLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LklTX1NFTEVDVEVEX1RFTVBMQVRFXSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10gPSBudWxsO1xuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNIQVBFX1RZUEVdID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93Q29uZmlybURpYWxvZyh0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGlzTWVzc2FnZTogYm9vbGVhbiwgY2FsbGJhY2s/OiAocmVzdWx0PzogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSA9IG5ldyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEoKTtcbiAgICAgICAgZGF0YS50aXRsZSA9IHRpdGxlO1xuICAgICAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xuICAgICAgICBkYXRhLmlzTWVzc2FnZSA9IGlzTWVzc2FnZTtcbiAgICAgICAgZGF0YS5pc0Nsb3NlQnRuID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZlxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoZ3JhcGg6IGFueSwgcGFwZXI6IGFueSwgY2VsbHM6IGFueVtdKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBiYm94ID0gZ3JhcGguZ2V0Q2VsbChjZWxsc1tpXSkuZmluZFZpZXcocGFwZXIpLmdldEJCb3hUb0NhbGN1bGF0ZUFkZGl0aW9uYWxXaWR0aCgpO1xuICAgICAgICAgICAgY2VsbHNbaV0uYWRkaXRpb25hbFdpZHRoID0gMDtcbiAgICAgICAgICAgIGlmIChiYm94ICYmIGNlbGxzW2ldPy5zaXplPy53aWR0aClcbiAgICAgICAgICAgICAgICBjZWxsc1tpXS5hZGRpdGlvbmFsV2lkdGggPSAoYmJveC53aWR0aCA+IGNlbGxzW2ldLnNpemUud2lkdGgpID8gKGJib3gud2lkdGggLSBjZWxsc1tpXS5zaXplLndpZHRoKSA6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0U2hhcGVNb2RlbChpZDogYW55ID0gJycsIGl0ZW1UeXBlOiBhbnkgPSAnJywgaXRlbU5hbWU6IHN0cmluZyA9ICcnLCBzdGF0dXNOYW1lOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgICAgIHRoaXMuc2hhcGVNb2RlbCA9IG5ldyBTaGFwZU1vZGVsKCk7XG4gICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWQgPSBpZDtcbiAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLml0ZW1UeXBlID0gaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5pdGVtTmFtZSA9IGl0ZW1OYW1lO1xuICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uc3RhdHVzTmFtZSA9IHN0YXR1c05hbWU7XG4gICAgICAgIHRoaXMuc2hhcGVNb2RlbC50YXJnZXQudGFyZ2V0SWQgPSBUYXJnZXRUeXBlTmFtZS5uZXc7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbm5lY3Rpb24gcHJvY2Vzcy9kb2N1bWVudFxuICAgIGluaXRQcm9jZXNzRG9jdW1lbnRDb25maWdBbmROb2RlRGF0YSgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzVHJlZUNvbmZpZyA9IHtcbiAgICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiB0cnVlLFxuICAgICAgICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxuICAgICAgICAgICAgc2hvd0NoZWNrQm94OiB0cnVlLFxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5wcm9jZXNzLFxuICAgICAgICAgICAgb3Blbkljb25Db2xvcjogJyMxOTU0QTknLFxuICAgICAgICAgICAgY2xvc2VJY29uQ29sb3I6ICcjYTRiMGRlJyxcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlGb2xkZXI6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudFRyZWVDb25maWcgPSB7XG4gICAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogdHJ1ZSxcbiAgICAgICAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcbiAgICAgICAgICAgIHNob3dDaGVja0JveDogdHJ1ZSxcbiAgICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5kb2N1bWVudCxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXG4gICAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXG4gICAgICAgICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXG4gICAgICAgICAgICBjbG9zZUljb25Db2xvcjogJyM0YWNhZmYnLFxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxuICAgICAgICAgICAgb25seUZvbGRlcjogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5sb2FkaW5nUmVsYXRlZERhdGEgPSB0cnVlO1xuICAgICAgICBmb3JrSm9pbih0aGlzLnJlbGF0ZWRTZXJ2aWNlLmdldEFyZWFDaGlsZHJlbk5vZGUobnVsbCwgIXRoaXMuc3BsaXRWaWV3LCBmYWxzZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCksXG4gICAgICAgICAgICB0aGlzLnJlbGF0ZWRTZXJ2aWNlLmdldEZvbGRlckNoaWxkcmVuKG51bGwsICF0aGlzLnNwbGl0VmlldywgZmFsc2UpXG4gICAgICAgICkucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3JlczEsIHJlczJdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlczEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJlYXMgPSByZXMxLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQgPT09IGd1aWRIZWxwZXIuZW1wdHkgPyAnJyA6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVQcm9jZXNzRGF0YSA9IGFyZWFzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZXMyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZWFzID0gcmVzMi5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogIXgucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogeC5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRoaXMuaXNGb2xkZXIoeC50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHgudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZURvY3VtZW50RGF0YSA9IGFyZWFzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1JlbGF0ZWREYXRhID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuUHJvY2Vzc0RvY3VtZW50KCkge1xuICAgICAgICBjb25zdCBkYXRhOiBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgPSBuZXcgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhKCk7XG4gICAgICAgIGRhdGEubW9kdWxlSWQgPSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzcztcbiAgICAgICAgZGF0YS5tb2R1bGVOYW1lID0gdGhpcy5MQU5HLkJQTU4uRE9DVU1FTlRfUFJPQ0VTUztcbiAgICAgICAgZGF0YS50cmVlRGF0YTEgPSB0aGlzLnRyZWVQcm9jZXNzRGF0YTtcbiAgICAgICAgZGF0YS50cmVlRGF0YTIgPSB0aGlzLnRyZWVEb2N1bWVudERhdGE7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSB0aGlzLnByb2Nlc3NUcmVlQ29uZmlnO1xuICAgICAgICBkYXRhLnRyZWVDb25maWcyID0gdGhpcy5kb2N1bWVudFRyZWVDb25maWc7XG4gICAgICAgIGRhdGEuc3BsaXRWaWV3ID0gdGhpcy5zcGxpdFZpZXc7XG4gICAgICAgIGRhdGEuaXNTZWxlY3RPbmUgPSB0cnVlO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzc2OHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzY5MHB4JyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1tYXQtZGlhbG9nLWNvbnRhaW5lcidcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uU2VhcmNoLnN1YnNjcmliZShhc3luYyAoa2V5d29yZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZC50cmltKCkgPT09ICcnKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgbGV0IGdldFNlYXJjaE9wdGlvbiA9IG5ldyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24odHJ1ZSwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHQgPSBhd2FpdCB0aGlzLnRyZWVTZXJ2aWNlLmdldFNlYXJjaFByb2Nlc3NEb2N1bWVudChrZXl3b3JkLnRyaW0oKSwgZ2V0U2VhcmNoT3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRTZWFyY2hSZWxhdGVkKHNlYXJjaFJlc3VsdCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZFByb2Nlc3NBcmVhLnN1YnNjcmliZSgoZm9sZGVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbGF0ZWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFyZWFDaGlsZHJlbk5vZGUoZm9sZGVyLmlkLCAhdGhpcy5zcGxpdFZpZXcsIGZhbHNlLCB0aGlzLmRhdGEuZW5hYmxlZEludGVyY29ubmVjdGVkKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZWFzID0gcmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LnR5cGUgPT09IFByb2Nlc3NOb2RlVHlwZS5BcmVhID8geC5pZC50b1N0cmluZygpIDogeC5wcm9jZXNzSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA9PT0gUHJvY2Vzc05vZGVUeXBlLkFyZWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiB4LnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5zdGF0dXNOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IHgudHlwZSA9PT0gUHJvY2Vzc05vZGVUeXBlLkFyZWEgPyAwIDogeC5pdGVtTnVtYmVySWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiB4LnR5cGUgPT09IFByb2Nlc3NOb2RlVHlwZS5BcmVhID8gRGF0YVR5cGUuYXJlYSA6IHgudHlwZSA9PT0gUHJvY2Vzc05vZGVUeXBlLlByb2Nlc3MgPyBEYXRhVHlwZS5wcm9jZXNzIDogRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFByb2Nlc3NBcmVhQ2hpbGRyZW4oYXJlYXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZEZvbGRlci5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWxhdGVkU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRGb2xkZXJDaGlsZHJlbihmb2xkZXIuaWQsICF0aGlzLnNwbGl0VmlldywgZmFsc2UpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJlYXMgPSByZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLmdldFBhcmVudElkKHgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdGhpcy5pc0ZvbGRlcih4LnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHRoaXMuaXNGb2xkZXIoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0Rm9sZGVyQ2hpbGRyZW4oYXJlYXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vblNlbGVjdEZvbGRlckl0ZW0uc3Vic2NyaWJlKChmb2xkZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChmb2xkZXIuaXRlbVR5cGUgPT09IERhdGFUeXBlLmFyZWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0ZWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5nZXRBcmVhQ29udGVudChmb2xkZXIuaWQsIGZhbHNlLCB0aGlzLmVuYWJsZWRJbnRlcmNvbm5lY3RlZClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBJUmVsYXRlZFtdID0gcmVzLm1hcCgoZWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZWxlLnByb2Nlc3NJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogZWxlLnByb2Nlc3NOdW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBlbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiBlbGUucHJvY2Vzc0NsYXNzaWZpY2F0aW9uID09PSBQcm9jZXNzQ2xhc3NpZmljYXRpb25UeXBlcy5Qcm9jZXNzZXMgPyBEYXRhVHlwZS5wcm9jZXNzIDogRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBlbGUuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogdGhpcy5nZXREaXNsYXlOYW1lT2ZQcm9jZXNzU3RhdHVzKGVsZS5zdGF0dXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGZvbGRlci5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5hbWU6IGZvbGRlci5pdGVtTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRTcGxpdHZpZXdWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9sZGVyLml0ZW1UeXBlID09PSBEYXRhVHlwZS5mb2xkZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0ZWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5nZXRGb2xkZXJDb250ZW50KGZvbGRlci5pZClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBJUmVsYXRlZFtdID0gcmVzLm1hcCgoZWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZWxlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGVsZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbU5hbWU6IGVsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IERhdGFUeXBlLmRvY3VtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogZWxlLnN0YXR1c05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogZm9sZGVyLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TmFtZTogZm9sZGVyLml0ZW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBmb2xkZXIubGV2ZWxUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFNwbGl0dmlld1ZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqID0gcmVzdWx0WzBdO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNoYXBlTW9kZWwoKG9iai5pdGVtVHlwZSA9PT0gRGF0YVR5cGUucHJvY2VzcyB8fCBvYmouaXRlbVR5cGUgPT09IERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZCkgPyBvYmouaXRlbU51bWJlcklkIDogb2JqLmlkLCBvYmouaXRlbVR5cGUsIG9iai5pdGVtTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSB0aGlzLmdldExpbmtVUkwodGhpcy5zaGFwZU1vZGVsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCA9IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLlNWR0ljb24gPSB0aGlzLmdldFNoYXBlTW9kZWxJY29uQnlEYXRhVHlwZSh0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbVR5cGUpO1xuICAgICAgICAgICAgICAgIGlmIChvYmouaXRlbVR5cGUgPT09IERhdGFUeXBlLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQob2JqLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gc2F2ZSBjb25uZWN0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBTaGFwZURhdGEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1NoYXBlQ29ubmVjdGlvblZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hhcGVDb25uZWN0TGFiZWwgPSB0aGlzLkxBTkcuQlBNTi5DT05ORUNUSU9OX1RZUEUuQ09OTkVDVEVEX0RPQ1VNRU5UX1BST0NFU1M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERvY3VtbmV0IFByb2Nlc3MgU3VwcG9ydCBGdW5jXG4gICAgaXNGb2xkZXIodHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50VHlwZXMgPSBbXG4gICAgICAgICAgICBEb2N1bWVudE5vZGVUeXBlLkRvY3VtZW50LFxuICAgICAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5GaWxlRG9jdW1lbnQsXG4gICAgICAgICAgICBEb2N1bWVudE5vZGVUeXBlLkxpbmtEb2N1bWVudCxcbiAgICAgICAgICAgIERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gIWRvY3VtZW50VHlwZXMuaW5jbHVkZXModHlwZSk7XG4gICAgfVxuXG4gICAgZ2V0UGFyZW50SWQoaXRlbSkge1xuICAgICAgICBpZiAodGhpcy5pc0ZvbGRlcihpdGVtLnR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gIWl0ZW0ucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogaXRlbS5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEZvbGRlcklkID8gJycgOiBpdGVtLnBhcmVudEZvbGRlcklkLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgZ2V0RGlzbGF5TmFtZU9mUHJvY2Vzc1N0YXR1cyhzdGF0dXM6IG51bWJlcikge1xuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBQcm9jZXNzU3RhdHVzLmluUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdDT01NT04uSU5fUFJPR1JFU1MnO1xuICAgICAgICAgICAgY2FzZSBQcm9jZXNzU3RhdHVzLnNlbmRUb0FwcHJvdmFsOlxuICAgICAgICAgICAgICAgIHJldHVybiAnQ09NTU9OLlNFTkRfVE9fQVBQUk9WQUwnO1xuICAgICAgICAgICAgY2FzZSBQcm9jZXNzU3RhdHVzLmFwcHJvdmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAnQ09NTU9OLkFQUFJPVkVEJztcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy51bmRlclJldmlzaW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnQ09NTU9OLlVOREVSX1JFVklTSU9OJztcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy5kZWxldGVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAnQ09NTU9OLkRFTEVURUQnO1xuICAgICAgICAgICAgY2FzZSBQcm9jZXNzU3RhdHVzLnJldmlld09ySGVhcmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5IRUFSSU5HJztcbiAgICAgICAgICAgIGNhc2UgUHJvY2Vzc1N0YXR1cy5hcmNoaXZlZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0NPTU1PTi5BUkNISVZFRCc7XG4gICAgICAgICAgICBjYXNlIFByb2Nlc3NTdGF0dXMuaGVhcmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1BST0NFU1MuSEVBUklORyc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnQ09NTU9OLlVOS05PV04nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TGlua1VSTChzaGFwZU1vZGVsOiBTaGFwZU1vZGVsKSB7XG4gICAgICAgIHN3aXRjaCAoc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5pdGVtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICBzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSBgL2RvY3VtZW50LyR7c2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgICAgICAgICBzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSBgL3Byb2Nlc3MtZGV0YWlsLyR7c2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuYXJlYTpcbiAgICAgICAgICAgICAgICBzaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwgPSBgL2FyZWEvZGV0YWlsLyR7c2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOlxuICAgICAgICAgICAgICAgIHNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubGlua1VybCA9IGAvZm9sZGVyLyR7c2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubGlua1VybCA9IGAvcHJvY2Vzcy1pbnRlcmNvbm5lY3RlZC8ke3NoYXBlTW9kZWwucmVsYXRlZEl0ZW0uZGlzcGxheUlkfWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubGlua1VybDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQXR0YWNobWVudCBcbiAgICBvcGVuQXR0YWNobWVudERpYWxvZygpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclBhcmFtdGVyKCk7XG4gICAgICAgIGRhdGEubW9kdWxlID0gdGhpcy5tb2R1bGU7XG4gICAgICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLmVudGl0eUlkO1xuICAgICAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNjUwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nVGVtcGxhdGVcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRTaGFwZU1vZGVsKG51bGwsIDAsIHJlc3VsdC50aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsID0gcmVzdWx0LnVybDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5tYXRJY29uID0gJ3RleHRfc25pcHBldCc7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBTaGFwZURhdGEoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1NoYXBlQ29ubmVjdGlvblZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNoYXBlQ29ubmVjdExhYmVsID0gdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkNPTk5FQ1RFRF9BVFRBQ0hNRU5UO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFNoYXBlQWN0aXZpdHkoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxWaWV3ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV107XG4gICAgICAgIGlmICghIXNlbGVjdGVkQ2VsbFZpZXcpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBzZWxlY3RlZENlbGxWaWV3Lm1vZGVsLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICBpZiAoISFhdHRyaWJ1dGVzLmxpbmtVcmwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldERhdGFGcm9tU2hhcGVBdHJyaWJ1dGUoYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnRhcmdldC50YXJnZXRJZCA9IGF0dHJpYnV0ZXMubGlua1RhcmdldDtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1NoYXBlQ29ubmVjdGlvblZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIC8vIFNldCBzaGFwZSBjb25uZWN0IGxhYmVsXG4gICAgICAgICAgICAgICAgaWYgKCEhdGhpcy5zaGFwZU1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5zaGFwZU1vZGVsLnNoYXBlPy5jb25uZWN0aW9uVHlwZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNoYXBlQ29ubmVjdExhYmVsID0gdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkNPTk5FQ1RFRF9ET0NVTUVOVF9QUk9DRVNTO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNoYXBlQ29ubmVjdExhYmVsID0gdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkNPTk5FQ1RFRF9BVFRBQ0hNRU5UO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLnNoYXBlQ29ubmVjdExhYmVsID0gdGhpcy5MQU5HLkJQTU4uQ09OTkVDVElPTl9UWVBFLkNPTk5FQ1RFRF9MSU5LO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuUU1TQlBNTkNvbmZpZy5zaG93U2hhcGVDb25uZWN0aW9uVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERhdGFGcm9tU2hhcGVBdHJyaWJ1dGUoc2hhcGVBdHRyaWJ1dGU6IGFueSkge1xuICAgICAgICBpZiAoISFzaGFwZUF0dHJpYnV0ZS5saW5rVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRTaGFwZU1vZGVsKCcnLCAnJywgc2hhcGVBdHRyaWJ1dGUubGlua1RpdGxlKTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHNoYXBlQXR0cmlidXRlLmxpbmtVcmw7XG4gICAgICAgICAgICBjb25zdCBoYXNoSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgICAgICAgICAgbGV0IGRvY3VtZW50VHlwZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoISFzaGFwZUF0dHJpYnV0ZS5jb25uZWN0aW9uVHlwZUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPSBzaGFwZUF0dHJpYnV0ZS5jb25uZWN0aW9uVHlwZUlkO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZSA9IHRoaXMuZ2V0UmVsYXRlZEl0ZW1CeVNoYXBlQ29ubmVjdGlvblR5cGUoc2hhcGVBdHRyaWJ1dGUuY29ubmVjdGlvblR5cGVJZCwgdXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZSA9IHRoaXMuZ2V0RG9jdW1lbnRUeXBlKHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCA9IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCA9IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuQXR0YWNobWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmtJZCA9IHRoaXMuZ2V0TGlua0lkKHVybCwgZG9jdW1lbnRUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWQgPSBsaW5rSWQgPyArbGlua0lkIDogLTE7XG4gICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0uaXRlbVR5cGUgPSBkb2N1bWVudFR5cGU7XG4gICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwudGFyZ2V0LnRhcmdldElkID0gc2hhcGVBdHRyaWJ1dGUubGlua1RhcmdldDtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBsb2dvXG4gICAgICAgICAgICBpZiAodGhpcy5zaGFwZU1vZGVsLnNoYXBlLmNvbm5lY3Rpb25UeXBlSWQgPT09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuQXR0YWNobWVudClcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubWF0SWNvbiA9ICd0ZXh0X3NuaXBwZXQnO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLlNWR0ljb24gPSB0aGlzLmdldFNoYXBlTW9kZWxJY29uQnlEYXRhVHlwZShkb2N1bWVudFR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIExpbmtcbiAgICAgICAgICAgIGlmICh0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCA9PT0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLmxpbmsubGluayA9IHVybDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghIWxpbmtJZCAmJiBkb2N1bWVudFR5cGUgPT0gRGF0YVR5cGUuZG9jdW1lbnQgJiYgaGFzaEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwuYW5jaG9yLmFuY2hvclZhbHVlID0gdXJsLnN1YnN0cihoYXNoSW5kZXggKyAxLCB1cmwubGVuZ3RoIC0gaGFzaEluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KGxpbmtJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRMaW5rSWQodXJsOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlKSB7XG4gICAgICAgIGxldCBwYXJ0aWFsVXJsSW5kZXggPSAwO1xuICAgICAgICBsZXQgcGFydGlhbFVybExlbmd0aCA9IDA7XG4gICAgICAgIGxldCBpZCA9ICcnO1xuICAgICAgICBsZXQgZnJvbSA9IDA7XG4gICAgICAgIGxldCB1cmxMb3dlckNhc2UgPSAhIXVybCA/IHVybC50b0xvd2VyQ2FzZSgpIDogJyc7XG5cbiAgICAgICAgY29uc3QgcGFydGlhbFVybCA9IHRoaXMuZ2V0UGFydGlhbFVybCh0eXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBoYXNoSW5kZXggPSB1cmxMb3dlckNhc2UuaW5kZXhPZignIycpO1xuXG4gICAgICAgIGlmICghIXBhcnRpYWxVcmwpIHtcbiAgICAgICAgICAgIHBhcnRpYWxVcmxJbmRleCA9IHVybExvd2VyQ2FzZS5pbmRleE9mKHBhcnRpYWxVcmwpO1xuXG4gICAgICAgICAgICBwYXJ0aWFsVXJsTGVuZ3RoID0gcGFydGlhbFVybC5sZW5ndGg7XG4gICAgICAgICAgICBmcm9tID0gcGFydGlhbFVybEluZGV4ICsgcGFydGlhbFVybExlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gRGF0YVR5cGUuZG9jdW1lbnQgJiYgaGFzaEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBpZCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSwgaGFzaEluZGV4IC0gZnJvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pLmluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBpZCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSwgbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PSBEYXRhVHlwZS5kb2N1bWVudCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJzZUludChpZCwgMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgIGlkID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIGdldFBhcnRpYWxVcmwodHlwZTogRGF0YVR5cGUpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxuICAgICAgICAgICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTDtcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTDtcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX0lOVEVSQ09OTkVDVEVEX1BBUlRJQUxfVVJMO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICAgICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5BUkVBX1BBUlRJQUxfVVJMO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIENLRWRpdG9yTGlua0NvbnN0LkZPTERFUl9QQVJUSUFMX1VSTDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVsYXRlZEl0ZW1CeVNoYXBlQ29ubmVjdGlvblR5cGUoY29ubmVjdGlvblR5cGVJZDogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZSwgdXJsOiBzdHJpbmcpIHtcbiAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uVHlwZUlkKSB7XG4gICAgICAgICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RG9jdW1lbnRUeXBlKHVybCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RG9jdW1lbnRUeXBlKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTCkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlLmRvY3VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LlBST0NFU1NfUEFSVElBTF9VUkwpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZS5wcm9jZXNzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LlBST0NFU1NfSU5URVJDT05ORUNURURfUEFSVElBTF9VUkwpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZS5wcm9jZXNzSW50ZXJjb25uZWN0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuQVJFQV9QQVJUSUFMX1VSTCkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlLmFyZWE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuRk9MREVSX1BBUlRJQUxfVVJMKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0YVR5cGUuZm9sZGVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQpIHtcbiAgICAgICAgdGhpcy5RTVNCUE1OQ29uZmlnLmlzQW5jaG9yTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMubGlua1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkb2N1bWVudHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFuY2hvcnMgPSB0aGlzLmV4dHJhY3REb2N1bWVudEFuY2hvcnMoZG9jdW1lbnRzIHx8IFtdKTtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuaXNBbmNob3JMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBleHRyYWN0RG9jdW1lbnRBbmNob3JzKGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XG4gICAgICAgIGNvbnN0IGFuY2hvcnM6IFFNU0JQTU5TaGFwZUFuY2hvcltdID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogJycsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xuICAgICAgICBsZXQgaWQgPSAzO1xuICAgICAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xuICAgICAgICAgICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xuICAgICAgICAgICAgICAgIGlmIChhVGFncykge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYW5jaG9ycy5maW5kSW5kZXgoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguYW5jaG9yVmFsdWUgPT09IHRhZy5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JWYWx1ZTogdGFnLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgICAgIHZhbHVlOiAxLFxuICAgICAgICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXG4gICAgICAgICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XG4gICAgICAgIH0pO1xuICAgICAgICBhbmNob3JzLnB1c2goe1xuICAgICAgICAgICAgdmFsdWU6IDIsXG4gICAgICAgICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfUkVMQVRFRF9ET0NVTUVOVCxcbiAgICAgICAgICAgIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLlJlbGF0ZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhbmNob3JzO1xuICAgIH1cblxuICAgIGdldFNoYXBlTW9kZWxJY29uQnlEYXRhVHlwZShkYXRhVHlwZTogRGF0YVR5cGUpIHtcbiAgICAgICAgc3dpdGNoIChkYXRhVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuYXJlYTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCc7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwcm9jZXNzJztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAncHJvY2Vzc19pbnRlcmNvbm5lY3RlZCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbG9hZEFuY2hvckRvY3VtZW50KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxWaWV3ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV107XG4gICAgICAgIGlmICghIXNlbGVjdGVkQ2VsbFZpZXcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNoYXBlTW9kZWwgJiYgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtICYmIHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5kaXNwbGF5SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkxpbmsoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgU2hhcGVMaW5rKCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQlBNTkxpbmtDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnMzUwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMjQ1cHgnLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInLFxuICAgICAgICAgICAgZGF0YVxuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKG5ld0xpbmspID0+IHtcbiAgICAgICAgICAgIGlmIChuZXdMaW5rKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2hhcGVNb2RlbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5zaGFwZS5jb25uZWN0aW9uVHlwZUlkID0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5MaW5rO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC5saW5rLmxpbmsgPSBuZXdMaW5rLmxpbms7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXBTaGFwZURhdGEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1NoYXBlQ29ubmVjdGlvblZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hhcGVDb25uZWN0TGFiZWwgPSB0aGlzLkxBTkcuQlBNTi5DT05ORUNUSU9OX1RZUEUuQ09OTkVDVEVEX0xJTks7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZUNvbm5lY3Rpb24oc2VsZWN0ZWRDb25uZWN0aW9uVHlwZTogYW55KSB7XG4gICAgICAgIGxldCB0aXRsZSA9IHRoaXMuTEFORy5CUE1OLkRFTEVURV9BVFRBQ0hNRU5UO1xuICAgICAgICBsZXQgY29udGVudCA9IHRoaXMuTEFORy5CUE1OLkNPTkZJUk1fREVMRVRFX0FUVEFDSE1FTlQ7XG4gICAgICAgIGlmIChzZWxlY3RlZENvbm5lY3Rpb25UeXBlID09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3MpIHtcbiAgICAgICAgICAgIHRpdGxlID0gdGhpcy5MQU5HLkJQTU4uREVMRVRFX0RPQ1VNRU5UX09SX1BST0NFU1M7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfRE9DVU1FTlRfT1JfUFJPQ0VTUztcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENvbm5lY3Rpb25UeXBlID09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuTGluaykge1xuICAgICAgICAgICAgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfTElOSztcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9BVFRBQ0hNRU5UO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkQ29ubmVjdGlvblR5cGUgPT0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5BdHRhY2htZW50KSB7XG4gICAgICAgICAgICB0aXRsZSA9IHRoaXMuTEFORy5CUE1OLkRFTEVURV9BVFRBQ0hNRU5UO1xuICAgICAgICAgICAgY29udGVudCA9IHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0FUVEFDSE1FTlQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyh0aXRsZSwgY29udGVudCwgZmFsc2UsICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IHRydWUgfHwgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyAmJiB2YWx1ZS5pc0NvbmZpcm1lZCA9PSB0cnVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwgPSBuZXcgU2hhcGVNb2RlbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlFNU0JQTU5Db25maWcuc2hvd1NoYXBlQ29ubmVjdGlvblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICghIXdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5yZW1vdmVQcm9wKCdsaW5rVXJsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5yZW1vdmVQcm9wKCdsaW5rVGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5yZW1vdmVQcm9wKCdsaW5rVGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddLm1vZGVsLnJlbW92ZVByb3AoJ2Nvbm5lY3Rpb25UeXBlSWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBzYXZlU2hhcGVUYXJnZXQodGFyZ2V0SWQ6IGFueSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxWaWV3ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV107XG4gICAgICAgIGlmICghIXNlbGVjdGVkQ2VsbFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVNb2RlbC50YXJnZXQudGFyZ2V0SWQgPSB0YXJnZXRJZDtcbiAgICAgICAgICAgIHNlbGVjdGVkQ2VsbFZpZXcubW9kZWwucHJvcCgnbGlua1RhcmdldCcsIHRhcmdldElkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVTaGFwZUFuY2hvcihhbmNob3JWYWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFZpZXcgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXTtcbiAgICAgICAgaWYgKCEhc2VsZWN0ZWRDZWxsVmlldykge1xuICAgICAgICAgICAgdGhpcy5zaGFwZU1vZGVsLmFuY2hvci5hbmNob3JWYWx1ZSA9IGFuY2hvclZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlTW9kZWwucmVsYXRlZEl0ZW0ubGlua1VybCA9IGAke0NLRWRpdG9yTGlua0NvbnN0LkRPQ1VNRU5UX1BBUlRJQUxfVVJMfSR7dGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmRpc3BsYXlJZH0jJHthbmNob3JWYWx1ZX1gXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVXJsJywgdGhpcy5zaGFwZU1vZGVsLnJlbGF0ZWRJdGVtLmxpbmtVcmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFwU2hhcGVEYXRhKCkge1xuICAgICAgICBpZiAoISF3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXSkge1xuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10ubW9kZWwucHJvcCgnbGlua1VybCcsIHRoaXMuc2hhcGVNb2RlbC5zaGFwZS5jb25uZWN0aW9uVHlwZUlkICE9PSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkxpbmtcbiAgICAgICAgICAgICAgICA/IHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5saW5rVXJsIDogdGhpcy5zaGFwZU1vZGVsLmxpbmsubGluayk7XG4gICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuTVlfQ0VMTF9WSUVXXS5tb2RlbC5wcm9wKCdsaW5rVGFyZ2V0JywgVGFyZ2V0VHlwZU5hbWUubmV3KTtcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddLm1vZGVsLnByb3AoJ2xpbmtUaXRsZScsIHRoaXMuc2hhcGVNb2RlbC5zaGFwZS5jb25uZWN0aW9uVHlwZUlkICE9PSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkxpbmtcbiAgICAgICAgICAgICAgICA/IHRoaXMuc2hhcGVNb2RlbC5yZWxhdGVkSXRlbS5pdGVtTmFtZSA6ICcnKTtcbiAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddLm1vZGVsLnByb3AoJ2Nvbm5lY3Rpb25UeXBlSWQnLCB0aGlzLnNoYXBlTW9kZWwuc2hhcGUuY29ubmVjdGlvblR5cGVJZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class DocumentTreeNodeData {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJlZS1ub2RlLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL21vZGVscy9kb2N1bWVudC10cmVlLW5vZGUtZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sb0JBQW9CO0NBVWhDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERvY3VtZW50VHJlZU5vZGVEYXRhIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwYXJlbnRJZDogc3RyaW5nO1xuICAgIHN0YXR1c0lkOiBudW1iZXI7XG4gICAgZXhwYW5kYWJsZTogYm9vbGVhbjtcbiAgICBzdGF0dXNOYW1lPzogc3RyaW5nO1xuICAgIGRpc3BsYXlJZDogbnVtYmVyO1xuICAgIGxldmVsVHlwZT86IG51bWJlcjtcbiAgICBvbmx5UmVhZD86IGJvb2xlYW47XG59XG4iXX0=