@bnsights/bbsf-admin-portal 1.0.32 → 1.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +5 -0
  2. package/bnsights-bbsf-admin-portal-1.0.35.tgz +0 -0
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js +1248 -1118
  4. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  5. package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +9 -1
  6. package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +18 -14
  7. package/esm2015/lib/Pages/anonymouslayout/anonymouslayout.component.js +6 -2
  8. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +6 -1
  9. package/esm2015/lib/Pages/departments/department/department.component.js +14 -15
  10. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +33 -42
  11. package/esm2015/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.js +2 -2
  12. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +21 -21
  13. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +21 -21
  14. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +44 -44
  15. package/esm2015/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.js +2 -1
  16. package/esm2015/lib/Pages/localizations/localizations.component.js +18 -17
  17. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +23 -21
  18. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +6 -6
  19. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +17 -13
  20. package/esm2015/lib/Pages/notifications/add/add.component.js +2 -1
  21. package/esm2015/lib/Pages/notifications/edit/edit.component.js +2 -1
  22. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +19 -17
  23. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +6 -6
  24. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +38 -38
  25. package/esm2015/lib/Pages/notifications/templates/templates.component.js +51 -45
  26. package/esm2015/lib/Pages/providers/provider/provider.component.js +22 -16
  27. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +36 -33
  28. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +5 -2
  29. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +11 -9
  30. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +25 -19
  31. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
  32. package/esm2015/lib/Pages/sectors/sector/sector.component.js +5 -5
  33. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +4 -4
  34. package/esm2015/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.js +1 -1
  35. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +1 -26
  36. package/esm2015/lib/Pages/shared/models/LocalizationModels/EditResourceModel.js +6 -1
  37. package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.js +3 -3
  38. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.js +1 -1
  39. package/esm2015/lib/Pages/shared/models/UserModels/AddUserModel.js +3 -1
  40. package/esm2015/lib/Pages/shared/models/UserModels/EditUserModel.js +3 -1
  41. package/esm2015/lib/Pages/users/users.component.js +42 -37
  42. package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +73 -67
  43. package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +21 -1
  44. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +27 -19
  45. package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +19 -19
  46. package/fesm2015/bnsights-bbsf-admin-portal.js +1249 -1116
  47. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  48. package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +1 -1
  49. package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +1 -0
  50. package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +2 -0
  51. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +6 -7
  52. package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +3 -4
  53. package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +2 -2
  54. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +1 -0
  55. package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +2 -0
  56. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +2 -0
  57. package/package.json +2 -2
  58. package/bnsights-bbsf-admin-portal-1.0.32.tgz +0 -0
  59. package/esm2015/lib/Pages/shared/Enums/ADWindowsType.js +0 -6
  60. package/lib/Pages/shared/Enums/ADWindowsType.d.ts +0 -4
@@ -48,22 +48,16 @@ export class HelpCenterComponent {
48
48
  let paramArray = [];
49
49
  let ResultModel = this.AddHelpCenterForm.value;
50
50
  let AddModel = new HelpCenterItemModel();
51
- AddModel.Title.Arabic = ResultModel.AddTitle.Arabic;
52
- AddModel.Title.English = ResultModel.AddTitle.English;
53
- AddModel.Description.Arabic = ResultModel.AddDescription.Arabic;
54
- AddModel.Description.English = ResultModel.AddDescription.English;
55
- //let arr = ResultModel.AddPermissionSetsOptions;
56
- //let permissionSets: number[] = [];
57
- //const toNumbers = arr => arr.map(Number);
58
- //permissionSets = toNumbers(arr);
59
- AddModel.PermissionSetIDs = ResultModel.AddPermissionSetsOptions;
60
- AddModel.IsHidden = ResultModel.AddIsHidden;
51
+ AddModel.Title = ResultModel.Title;
52
+ AddModel.Description = ResultModel.Description;
53
+ AddModel.PermissionSetIDs = ResultModel.PermissionSetIDs;
54
+ AddModel.IsHidden = ResultModel.IsHidden;
61
55
  AddModel.LogoFileDTO = {
62
- FileBase64: ResultModel["AddLogo"].FileBase64,
63
- NameWithExtension: ResultModel["AddLogo"].FileName,
64
- FileName: ResultModel["AddLogo"].FileName,
65
- FileSizeInMB: ResultModel["AddLogo"].FileSizeInMB,
66
- FileType: ResultModel["AddLogo"].FileType
56
+ FileBase64: ResultModel["LogoFileDTO"].FileBase64,
57
+ NameWithExtension: ResultModel["LogoFileDTO"].FileName,
58
+ FileName: ResultModel["LogoFileDTO"].FileName,
59
+ FileSizeInMB: ResultModel["LogoFileDTO"].FileSizeInMB,
60
+ FileType: ResultModel["LogoFileDTO"].FileType
67
61
  };
68
62
  paramArray.push(AddModel);
69
63
  return paramArray;
@@ -76,19 +70,12 @@ export class HelpCenterComponent {
76
70
  let ResultModel = this.EditHelpCenterForm.value;
77
71
  let EditModel = new HelpCenterItemModel();
78
72
  EditModel.ID_GUID = this.HelpCenterItemId;
79
- EditModel.Title.English = ResultModel.EditTitle.English; //(##1)
80
- EditModel.Title.Arabic = ResultModel.EditTitle.Arabic;
81
- EditModel.Description.English = ResultModel.EditDescription.English;
82
- EditModel.Description.Arabic = ResultModel.EditDescription.Arabic;
83
- EditModel.IsHidden = ResultModel.EditIsHidden;
84
- EditModel.LogoFileDTO = ResultModel.EditLogo == "" ? null : ResultModel.EditLogo;
73
+ EditModel.Title = ResultModel.Title; //(##1)
74
+ EditModel.Description = ResultModel.Description;
75
+ EditModel.IsHidden = ResultModel.IsHidden;
76
+ EditModel.LogoFileDTO = ResultModel.LogoFileDTO == "" ? null : ResultModel.LogoFileDTO;
85
77
  EditModel.LogoFileID = this.EditLogoFileID;
86
- //let Ids = [];
87
- //for (let index = 0; index < ResultModel.EditPermissionSetsOptions.length; index++) {
88
- // const element = ResultModel.EditPermissionSetsOptions[index];
89
- // Ids.push(Number(element));
90
- //}
91
- EditModel.PermissionSetIDs = ResultModel.EditPermissionSetsOptions;
78
+ EditModel.PermissionSetIDs = ResultModel.PermissionSetIDs;
92
79
  paramArray.push(EditModel);
93
80
  return paramArray;
94
81
  };
@@ -169,19 +156,21 @@ export class HelpCenterComponent {
169
156
  this.AddHelpCenterFormOptions.ServiceSubmitFunction = this.getAddHelpCenterFunction;
170
157
  this.AddHelpCenterFormOptions.PagingReference = this.pagingElement;
171
158
  this.AddTitle = new MultiLingualTextBoxOptions();
172
- this.AddTitle.Name = "AddTitle";
173
- this.AddTitle.ArabicLabelKey = "TitleInArabic";
174
- this.AddTitle.EnglishLabelKey = "TitleInEnglish";
159
+ this.AddTitle.Name = "Title";
160
+ this.AddTitle.ArabicLabelKey = "TitleAR";
161
+ this.AddTitle.EnglishLabelKey = "TitleEN";
175
162
  this.AddTitle.IsRequired = true;
176
163
  this.AddTitle.Value = null;
164
+ this.AddTitle.MaxLength = 100;
177
165
  this.AddDescription = new MultiLingualTextAreaOptions();
178
- this.AddDescription.Name = "AddDescription";
166
+ this.AddDescription.Name = "Description";
179
167
  this.AddDescription.ArabicLabelKey = "DescriptionInArabic";
180
168
  this.AddDescription.EnglishLabelKey = "DescriptionInEnglish";
181
169
  this.AddDescription.Value = null;
182
170
  this.AddDescription.MultiControlPlacementType = ControlLayout.Vertical;
171
+ this.AddDescription.MaxLength = 1000;
183
172
  this.AddPermissionSetsOptions = new DropdownOptions();
184
- this.AddPermissionSetsOptions.Name = "AddPermissionSetsOptions";
173
+ this.AddPermissionSetsOptions.Name = "PermissionSetIDs";
185
174
  this.AddPermissionSetsOptions.LabelKey = "PermissionSets";
186
175
  this.AddPermissionSetsOptions.DataSource = this.PermissionSetsList;
187
176
  this.AddPermissionSetsOptions.SingleSelection = false;
@@ -189,11 +178,11 @@ export class HelpCenterComponent {
189
178
  this.AddPermissionSetsOptions.Placeholder = "";
190
179
  this.AddPermissionSetsOptions.IsRequired = true;
191
180
  this.AddIsHidden = new CheckBoxOptions();
192
- this.AddIsHidden.Name = "AddIsHidden";
181
+ this.AddIsHidden.Name = "IsHidden";
193
182
  this.AddIsHidden.LabelKey = "Hidden";
194
183
  this.AddIsHidden.Value = false;
195
184
  this.AddLogo = new ImageUploadOptions();
196
- this.AddLogo.Name = "AddLogo";
185
+ this.AddLogo.Name = "LogoFileDTO";
197
186
  this.AddLogo.LabelKey = "Logo";
198
187
  this.AddLogo.ViewType = ControlLayout.Vertical;
199
188
  this.AddLogo.FileUploadAcceptsTypes = [ImageType.ImageTypes];
@@ -223,22 +212,24 @@ export class HelpCenterComponent {
223
212
  Title.Arabic = helpCenter.title.arabic;
224
213
  Title.English = helpCenter.title.english;
225
214
  this.EditTitle = new MultiLingualTextBoxOptions();
226
- this.EditTitle.Name = "EditTitle";
227
- this.EditTitle.ArabicLabelKey = "TitleInArabic";
228
- this.EditTitle.EnglishLabelKey = "TitleInEnglish";
215
+ this.EditTitle.Name = "Title";
216
+ this.EditTitle.ArabicLabelKey = "TitleAR";
217
+ this.EditTitle.EnglishLabelKey = "TitleEN";
229
218
  this.EditTitle.IsRequired = true;
230
219
  this.EditTitle.Value = Title;
220
+ this.EditTitle.MaxLength = 100;
231
221
  let Description = new EnglishArabicDTO();
232
222
  Description.Arabic = helpCenter.description.arabic;
233
223
  Description.English = helpCenter.description.english;
234
224
  this.EditDescription = new MultiLingualTextAreaOptions();
235
- this.EditDescription.Name = "EditDescription";
225
+ this.EditDescription.Name = "Description";
236
226
  this.EditDescription.ArabicLabelKey = "DescriptionInArabic";
237
227
  this.EditDescription.EnglishLabelKey = "DescriptionInEnglish";
238
228
  this.EditDescription.Value = Description;
239
229
  this.EditDescription.MultiControlPlacementType = ControlLayout.Vertical;
230
+ this.EditDescription.MaxLength = 1000;
240
231
  this.EditPermissionSetsOptions = new DropdownOptions();
241
- this.EditPermissionSetsOptions.Name = "EditPermissionSetsOptions";
232
+ this.EditPermissionSetsOptions.Name = "PermissionSetIDs";
242
233
  this.EditPermissionSetsOptions.LabelKey = "PermissionSets";
243
234
  this.EditPermissionSetsOptions.DataSource = this.PermissionSetsList;
244
235
  this.EditPermissionSetsOptions.SingleSelection = false;
@@ -246,11 +237,11 @@ export class HelpCenterComponent {
246
237
  this.EditPermissionSetsOptions.Placeholder = "";
247
238
  this.EditPermissionSetsOptions.SelectedItems = (_a = helpCenter.permissionSetIDs) === null || _a === void 0 ? void 0 : _a.map(i => i.toLowerCase());
248
239
  this.EditIsHidden = new CheckBoxOptions();
249
- this.EditIsHidden.Name = "EditIsHidden";
240
+ this.EditIsHidden.Name = "IsHidden";
250
241
  this.EditIsHidden.LabelKey = "Hidden";
251
242
  this.EditIsHidden.Value = helpCenter.isHidden;
252
243
  this.EditLogo = new ImageUploadOptions();
253
- this.EditLogo.Name = "EditLogo";
244
+ this.EditLogo.Name = "LogoFileDTO";
254
245
  this.EditLogo.LabelKey = "Logo";
255
246
  this.EditLogo.IsRequired = true;
256
247
  this.EditLogo.FileUploadAcceptsTypes = [ImageType.ImageTypes];
@@ -309,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
309
300
  type: ViewChild,
310
301
  args: ['ConfirmationModalControl', { static: false }]
311
302
  }] } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9oZWxwQ2VudGVyL2hlbHAtY2VudGVyL2hlbHAtY2VudGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci9oZWxwLWNlbnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUN2RSxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBZ0IsY0FBYyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkIsRUFDL0osZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUMxRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFXckYsTUFBTSxPQUFPLG1CQUFtQjtJQWdEOUIsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQyxFQUM3RSxjQUE4QixFQUFVLG9CQUEwQyxFQUNqRixpQkFBb0MsRUFBVSxZQUFzQixFQUNwRSxxQkFBNEM7UUFIbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxvQkFBZSxHQUFmLGVBQWUs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SSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztZQUN4RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUN2RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFNUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7aUhBblZVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLDRTQ3BCaEMsbTNXQThPQTs0RkQxTmEsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzVDOzJSQWM4RCxhQUFhO3NCQUF6RSxTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE2QkQsd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLFxyXG4gIElucHV0VHlwZSwgUGFnaW5nT3B0aW9ucywgVGV4dEFyZWFPcHRpb25zLCBJY29uUG9zaXRpb24sIFRleHRCb3hPcHRpb25zLCBJbWFnZVVwbG9hZE9wdGlvbnMsIEltYWdlVHlwZSwgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucyxcclxuICBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBIZWxwQ2VudGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9IZWxwQ2VudGVyU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscENlbnRlckl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvSGVscENlbnRlck1vZGVscy9IZWxwQ2VudGVySXRlbU1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVscC1jZW50ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLWNlbnRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBDZW50ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vSGVscENlbnRlci9cIlxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBIZWxwQ2VudGVyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgSGVscENlbnRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIFBlcm1pc3Npb25TZXRzTGlzdCA9IFtdO1xyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkSGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEFkZFRpdGxlOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEFkZERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnNcclxuICBBZGRQZXJtaXNzaW9uU2V0c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRJc0hpZGRlbjogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEFkZExvZ286IEltYWdlVXBsb2FkT3B0aW9ucztcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0VGl0bGU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgRWRpdERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnNcclxuICBFZGl0UGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgRWRpdExvZ286IEltYWdlVXBsb2FkT3B0aW9ucztcclxuICBFZGl0TG9nb0ZpbGVJRDogbnVtYmVyO1xyXG4gIEhlbHBDZW50ZXJJdGVtSWQ6IHN0cmluZztcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSGVscENlbnRlcklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9HZW5lcmF0ZSBjb2RlIG1vZGFsXHJcbiAgR2VuZXJhdGVDb2RlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEdlbmVyYXRlZENvZGVPcHRpb25zOiBUZXh0QXJlYU9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEhlbHBDZW50ZXJTZXJ2aWNlOiBIZWxwQ2VudGVyU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgUGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldEhlbHBDZW50ZXJJdGVtc0J5RmlsdGVyJztcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG5cclxuICB9XHJcbiAgc2VhcmNoQ2xpZW50U2lkZShzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQuZmlsdGVyKFxyXG4gICAgICAgIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gKGl0ZW0udGl0bGUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGl0ZW0udGl0bGUuYXJhYmljLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vU2F2ZSBIZWxwQ2VudGVyIE5hbWUgZm9yIGluZm8gcGFnZVxyXG4gIFNhdmVOYW1lKG5hbWUpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiUGFyZW50TmFtZVwiLCBuYW1lKTtcclxuICB9XHJcbiAgLy9BZGQgaGVscGNlbnRlciBpdGVtXHJcbiAgc2hvd0FkZEhlbHBDZW50ZXJNb2RhbChBZGRIZWxwQ2VudGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgRHJvcGRvd25MaXN0cyA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldHNMaXN0ID0gRHJvcGRvd25MaXN0cy5wZXJtaXNzaW9uU2V0cztcclxuXHJcbiAgICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRIZWxwQ2VudGVyRm9ybVxyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIHRoaXMuQWRkVGl0bGUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRUaXRsZS5OYW1lID0gXCJBZGRUaXRsZVwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLkFyYWJpY0xhYmVsS2V5ID0gXCJUaXRsZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuQWRkVGl0bGUuRW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLlZhbHVlID0gbnVsbDtcclxuXHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTmFtZSA9IFwiQWRkRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuTmFtZSA9IFwiQWRkUGVybWlzc2lvblNldHNPcHRpb25zXCJcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRzXCJcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvblNldHNMaXN0XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZElzSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZElzSGlkZGVuLk5hbWUgPSBcIkFkZElzSGlkZGVuXCJcclxuICAgICAgdGhpcy5BZGRJc0hpZGRlbi5MYWJlbEtleSA9IFwiSGlkZGVuXCJcclxuICAgICAgdGhpcy5BZGRJc0hpZGRlbi5WYWx1ZSA9IGZhbHNlXHJcblxyXG4gICAgICB0aGlzLkFkZExvZ28gPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTG9nby5OYW1lID0gXCJBZGRMb2dvXCJcclxuICAgICAgdGhpcy5BZGRMb2dvLkxhYmVsS2V5ID0gXCJMb2dvXCJcclxuICAgICAgdGhpcy5BZGRMb2dvLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLkFkZExvZ28uRmlsZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc11cclxuICAgICAgdGhpcy5BZGRMb2dvLklzUmVxdWlyZWQgPSB0cnVlXHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEhlbHBDZW50ZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtLnZhbHVlO1xyXG5cclxuICAgIGxldCBBZGRNb2RlbDogSGVscENlbnRlckl0ZW1Nb2RlbCA9IG5ldyBIZWxwQ2VudGVySXRlbU1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5UaXRsZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5BZGRUaXRsZS5BcmFiaWM7XHJcbiAgICBBZGRNb2RlbC5UaXRsZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuQWRkVGl0bGUuRW5nbGlzaDtcclxuICAgIEFkZE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkFkZERlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIEFkZE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5BZGREZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgLy9sZXQgYXJyID0gUmVzdWx0TW9kZWwuQWRkUGVybWlzc2lvblNldHNPcHRpb25zO1xyXG4gICAgLy9sZXQgcGVybWlzc2lvblNldHM6IG51bWJlcltdID0gW107XHJcbiAgICAvL2NvbnN0IHRvTnVtYmVycyA9IGFyciA9PiBhcnIubWFwKE51bWJlcik7XHJcbiAgICAvL3Blcm1pc3Npb25TZXRzID0gdG9OdW1iZXJzKGFycik7XHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SURzID0gUmVzdWx0TW9kZWwuQWRkUGVybWlzc2lvblNldHNPcHRpb25zO1xyXG4gICAgQWRkTW9kZWwuSXNIaWRkZW4gPSBSZXN1bHRNb2RlbC5BZGRJc0hpZGRlbjtcclxuICAgIEFkZE1vZGVsLkxvZ29GaWxlRFRPID0ge1xyXG4gICAgICBGaWxlQmFzZTY0OiBSZXN1bHRNb2RlbFtcIkFkZExvZ29cIl0uRmlsZUJhc2U2NCxcclxuICAgICAgTmFtZVdpdGhFeHRlbnNpb246IFJlc3VsdE1vZGVsW1wiQWRkTG9nb1wiXS5GaWxlTmFtZSxcclxuICAgICAgRmlsZU5hbWU6IFJlc3VsdE1vZGVsW1wiQWRkTG9nb1wiXS5GaWxlTmFtZSxcclxuICAgICAgRmlsZVNpemVJbk1COiBSZXN1bHRNb2RlbFtcIkFkZExvZ29cIl0uRmlsZVNpemVJbk1CLFxyXG4gICAgICBGaWxlVHlwZTogUmVzdWx0TW9kZWxbXCJBZGRMb2dvXCJdLkZpbGVUeXBlXHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRIZWxwQ2VudGVyRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuQWRkSGVscENlbnRlcihBZGRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBIZWxwQ2VudGVyIEl0ZW1cclxuICBzaG93RWRpdEhlbHBDZW50ZXJNb2RhbChoZWxwQ2VudGVySUQ6IHN0cmluZywgRWRpdEhlbHBDZW50ZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgdGhpcy5IZWxwQ2VudGVySXRlbUlkID0gaGVscENlbnRlcklEO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5nZXRFZGl0SGVscENlbnRlckRhdGEoaGVscENlbnRlcklEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGhlbHBDZW50ZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0c0xpc3QgPSBsaXN0cy5wZXJtaXNzaW9uU2V0cztcclxuXHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybVxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlXHJcblxyXG4gICAgICBsZXQgVGl0bGUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBUaXRsZS5BcmFiaWMgPSBoZWxwQ2VudGVyLnRpdGxlLmFyYWJpYztcclxuICAgICAgVGl0bGUuRW5nbGlzaCA9IGhlbHBDZW50ZXIudGl0bGUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLk5hbWUgPSBcIkVkaXRUaXRsZVwiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5BcmFiaWNMYWJlbEtleSA9IFwiVGl0bGVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRpdGxlSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5WYWx1ZSA9IFRpdGxlO1xyXG5cclxuXHJcbiAgICAgIGxldCBEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIERlc2NyaXB0aW9uLkFyYWJpYyA9IGhlbHBDZW50ZXIuZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICBEZXNjcmlwdGlvbi5FbmdsaXNoID0gaGVscENlbnRlci5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk5hbWUgPSBcIkVkaXREZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLlZhbHVlID0gRGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG5cclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuTmFtZSA9IFwiRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvblNldHNMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLlNlbGVjdGVkSXRlbXMgPSBoZWxwQ2VudGVyLnBlcm1pc3Npb25TZXRJRHM/Lm1hcChpID0+IGkudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0hpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4uTmFtZSA9IFwiRWRpdElzSGlkZGVuXCJcclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4uTGFiZWxLZXkgPSBcIkhpZGRlblwiXHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLlZhbHVlID0gaGVscENlbnRlci5pc0hpZGRlblxyXG5cclxuICAgICAgdGhpcy5FZGl0TG9nbyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TG9nby5OYW1lID0gXCJFZGl0TG9nb1wiXHJcbiAgICAgIHRoaXMuRWRpdExvZ28uTGFiZWxLZXkgPSBcIkxvZ29cIlxyXG4gICAgICB0aGlzLkVkaXRMb2dvLklzUmVxdWlyZWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuRWRpdExvZ28uRmlsZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc11cclxuICAgICAgdGhpcy5FZGl0TG9nby5WYWx1ZSA9IGhlbHBDZW50ZXIubG9nb0ZpbGVEVE9cclxuICAgICAgdGhpcy5FZGl0TG9nb0ZpbGVJRCA9IGhlbHBDZW50ZXIubG9nb0ZpbGVJRDtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdEhlbHBDZW50ZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0SGVscENlbnRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IEhlbHBDZW50ZXJJdGVtTW9kZWwoKTtcclxuICAgIEVkaXRNb2RlbC5JRF9HVUlEID0gdGhpcy5IZWxwQ2VudGVySXRlbUlkO1xyXG4gICAgRWRpdE1vZGVsLlRpdGxlLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5FZGl0VGl0bGUuRW5nbGlzaDsgLy8oIyMxKVxyXG4gICAgRWRpdE1vZGVsLlRpdGxlLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkVkaXRUaXRsZS5BcmFiaWM7XHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkVkaXREZXNjcmlwdGlvbi5FbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRWRpdERlc2NyaXB0aW9uLkFyYWJpY1xyXG4gICAgRWRpdE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuRWRpdElzSGlkZGVuO1xyXG4gICAgRWRpdE1vZGVsLkxvZ29GaWxlRFRPID0gUmVzdWx0TW9kZWwuRWRpdExvZ28gPT0gXCJcIiA/IG51bGwgOiBSZXN1bHRNb2RlbC5FZGl0TG9nbztcclxuICAgIEVkaXRNb2RlbC5Mb2dvRmlsZUlEID0gdGhpcy5FZGl0TG9nb0ZpbGVJRDtcclxuICAgIC8vbGV0IElkcyA9IFtdO1xyXG4gICAgLy9mb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgUmVzdWx0TW9kZWwuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgIC8vICBjb25zdCBlbGVtZW50ID0gUmVzdWx0TW9kZWwuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9uc1tpbmRleF07XHJcbiAgICAvLyAgSWRzLnB1c2goTnVtYmVyKGVsZW1lbnQpKTtcclxuICAgIC8vfVxyXG5cclxuICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uU2V0SURzID0gUmVzdWx0TW9kZWwuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucztcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SGVscENlbnRlckZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5IZWxwQ2VudGVyU2VydmljZS5FZGl0SGVscENlbnRlcihFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0RlbGV0ZSBIZWxwQ2VudGVyXHJcbiAgc2hvd0RlbGV0ZUhlbHBDZW50ZXJNb2RhbChoZWxwQ2VudGVySUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVIZWxwQ2VudGVySWQgPSBoZWxwQ2VudGVySUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlSGVscENlbnRlcklkKTtcclxuXHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVIZWxwQ2VudGVyO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSGVscENlbnRlciA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkRlbGV0ZUhlbHBDZW50ZXIoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9HZW5lcmF0ZSBDb2RlXHJcbiAgc2hvd0dlbmVyYXRlQ29kZU1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkdlbmVyYXRlQ29kZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBDb2RlID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLk5hbWUgPSBcIkdlbmVyYXRlZENvZGVPcHRpb25zXCI7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5NYXhMZW5ndGggPSAxMDAwMDAwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLlZhbHVlID0gQ29kZS50ZXh0O1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLkVuYWJsZUNvcHlUb0NsaXBib2FyZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMuQXR0cmlidXRlTGlzdCA9IFt7IEtleTogXCJyb3dzXCIsIHZhbHVlOiBcIjIwXCIgfV07XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVDb2RlTW9kYWwpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiAqbmdJZj1cIlNob3dQYWdlQ29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgIDwhLS0oT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgLS0+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94ICBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiAoY2xpY2spPVwic2hvd0dlbmVyYXRlQ29kZU1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2RlXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9IZWxwQ2VudGVyL1ByZXZpZXcnXVwiXHJcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlld1wiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgbWUtM1wiIChjbGljayk9XCJzaG93QWRkSGVscENlbnRlck1vZGFsKEFkZEhlbHBDZW50ZXJNb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8IS0tYmVnaW46OkFjdGl2ZURpcmVjdG9yeSBsaXN0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRpdGxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVzY3JpcHRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQZXJtaXNzaW9uU2V0c1wiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweCB0ZXh0LWNlbnRlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZpc2libGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweCB0ZXh0LWNlbnRlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBJdGVtIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiU2F2ZU5hbWUoSXRlbS50aXRsZVN0cilcIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9IZWxwQ2VudGVyL1NlY29uZExldmVsJyxJdGVtLmlEX0dVSURdXCIgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tJdGVtLnRpdGxlU3RyfX08L2E+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7SXRlbS5kZXNjcmlwdGlvblN0cn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+IHt7SXRlbS5wZXJtaXNzaW9uc1N0cn19IDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiSXRlbS5pc0hpZGRlbjtlbHNlIG90aGVyX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJfY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0SGVscENlbnRlck1vZGFsKEl0ZW0uaURfR1VJRCxFZGl0SGVscENlbnRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIiAoY2xpY2spPVwic2hvd0RlbGV0ZUhlbHBDZW50ZXJNb2RhbChJdGVtLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0SGVscENlbnRlckl0ZW1MaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiSGVscENlbnRlclBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIiAjSGVscENlbnRlclBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBGaWx0ZXIgV3JhcHBlciAtLT5cclxuICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuPC9kaXY+XHJcblxyXG48IS0tQWRkIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkSGVscENlbnRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJBZGRUaXRsZVwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJBZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFBlcm1pc3Npb25TZXRzT3B0aW9uc1wiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1JbWFnZVVwbG9hZCBbb3B0aW9uc109XCJBZGRMb2dvXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+XHJcblxyXG4gICAgICAgICAgPC9CQlNGLUltYWdlVXBsb2FkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIkFkZElzSGlkZGVuXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlSGVscENlbnRlck1vZGFsIGlkPVwiQ2xvc2VBZGRIZWxwQ2VudGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tRWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRIZWxwQ2VudGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRWRpdFRpdGxlXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJFZGl0RGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldHNPcHRpb25zXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1JbWFnZVVwbG9hZCBbb3B0aW9uc109XCJFZGl0TG9nb1wiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj5cclxuXHJcbiAgICAgICAgICA8L0JCU0YtSW1hZ2VVcGxvYWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzSGlkZGVuXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWwgaWQ9XCJDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tZGVsZXRlIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG48IS0tR2VuZXJhdGUgY29kZSBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0dlbmVyYXRlQ29kZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiR2VuZXJhdGVkQ29kZU9wdGlvbnNcIiBbZ3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiICNHZW5lcmF0ZUNvZGVJbnB1dD5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbCBpZD1cIkNsb3NlR2VuZXJhdGVDb2RlTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvcHlUb0NsaXBib2FyZFwiKX19PC9idXR0b24+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuIl19
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9oZWxwQ2VudGVyL2hlbHAtY2VudGVyL2hlbHAtY2VudGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci9oZWxwLWNlbnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUN2RSxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBZ0IsY0FBYyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkIsRUFDL0osZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUMxRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFXckYsTUFBTSxPQUFPLG1CQUFtQjtJQWdEOUIsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQyxFQUM3RSxjQUE4QixFQUFVLG9CQUEwQyxFQUNqRixpQkFBb0MsRUFBVSxZQUFzQixFQUNwRSxxQkFBNEM7UUFIbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxvQkFBZSxHQUFmLGVBQWUs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QUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFNUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7aUhBelVVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLDRTQ3BCaEMsbTNXQThPQTs0RkQxTmEsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzVDOzJSQWM4RCxhQUFhO3NCQUF6RSxTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE2QkQsd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLFxyXG4gIElucHV0VHlwZSwgUGFnaW5nT3B0aW9ucywgVGV4dEFyZWFPcHRpb25zLCBJY29uUG9zaXRpb24sIFRleHRCb3hPcHRpb25zLCBJbWFnZVVwbG9hZE9wdGlvbnMsIEltYWdlVHlwZSwgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucyxcclxuICBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBIZWxwQ2VudGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9IZWxwQ2VudGVyU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscENlbnRlckl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvSGVscENlbnRlck1vZGVscy9IZWxwQ2VudGVySXRlbU1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVscC1jZW50ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLWNlbnRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBDZW50ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vSGVscENlbnRlci9cIlxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBIZWxwQ2VudGVyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgSGVscENlbnRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIFBlcm1pc3Npb25TZXRzTGlzdCA9IFtdO1xyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkSGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEFkZFRpdGxlOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEFkZERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnNcclxuICBBZGRQZXJtaXNzaW9uU2V0c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRJc0hpZGRlbjogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEFkZExvZ286IEltYWdlVXBsb2FkT3B0aW9ucztcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0VGl0bGU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgRWRpdERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnNcclxuICBFZGl0UGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgRWRpdExvZ286IEltYWdlVXBsb2FkT3B0aW9ucztcclxuICBFZGl0TG9nb0ZpbGVJRDogbnVtYmVyO1xyXG4gIEhlbHBDZW50ZXJJdGVtSWQ6IHN0cmluZztcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSGVscENlbnRlcklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9HZW5lcmF0ZSBjb2RlIG1vZGFsXHJcbiAgR2VuZXJhdGVDb2RlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEdlbmVyYXRlZENvZGVPcHRpb25zOiBUZXh0QXJlYU9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEhlbHBDZW50ZXJTZXJ2aWNlOiBIZWxwQ2VudGVyU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgUGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldEhlbHBDZW50ZXJJdGVtc0J5RmlsdGVyJztcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG5cclxuICB9XHJcbiAgc2VhcmNoQ2xpZW50U2lkZShzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQuZmlsdGVyKFxyXG4gICAgICAgIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gKGl0ZW0udGl0bGUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGl0ZW0udGl0bGUuYXJhYmljLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vU2F2ZSBIZWxwQ2VudGVyIE5hbWUgZm9yIGluZm8gcGFnZVxyXG4gIFNhdmVOYW1lKG5hbWUpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiUGFyZW50TmFtZVwiLCBuYW1lKTtcclxuICB9XHJcbiAgLy9BZGQgaGVscGNlbnRlciBpdGVtXHJcbiAgc2hvd0FkZEhlbHBDZW50ZXJNb2RhbChBZGRIZWxwQ2VudGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgRHJvcGRvd25MaXN0cyA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldHNMaXN0ID0gRHJvcGRvd25MaXN0cy5wZXJtaXNzaW9uU2V0cztcclxuXHJcbiAgICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRIZWxwQ2VudGVyRm9ybVxyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIHRoaXMuQWRkVGl0bGUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRUaXRsZS5OYW1lID0gXCJUaXRsZVwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLkFyYWJpY0xhYmVsS2V5ID0gXCJUaXRsZUFSXCI7XHJcbiAgICAgIHRoaXMuQWRkVGl0bGUuRW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUVOXCI7XHJcbiAgICAgIHRoaXMuQWRkVGl0bGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVGl0bGUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTWF4TGVuZ3RoID0gMTAwMDtcclxuXHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5OYW1lID0gXCJQZXJtaXNzaW9uU2V0SURzXCJcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRzXCJcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvblNldHNMaXN0XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZElzSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZElzSGlkZGVuLk5hbWUgPSBcIklzSGlkZGVuXCJcclxuICAgICAgdGhpcy5BZGRJc0hpZGRlbi5MYWJlbEtleSA9IFwiSGlkZGVuXCJcclxuICAgICAgdGhpcy5BZGRJc0hpZGRlbi5WYWx1ZSA9IGZhbHNlXHJcblxyXG4gICAgICB0aGlzLkFkZExvZ28gPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTG9nby5OYW1lID0gXCJMb2dvRmlsZURUT1wiXHJcbiAgICAgIHRoaXMuQWRkTG9nby5MYWJlbEtleSA9IFwiTG9nb1wiXHJcbiAgICAgIHRoaXMuQWRkTG9nby5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWxcclxuICAgICAgdGhpcy5BZGRMb2dvLkZpbGVVcGxvYWRBY2NlcHRzVHlwZXMgPSBbSW1hZ2VUeXBlLkltYWdlVHlwZXNdXHJcbiAgICAgIHRoaXMuQWRkTG9nby5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRIZWxwQ2VudGVyTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFkZEhlbHBDZW50ZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRIZWxwQ2VudGVyRm9ybS52YWx1ZTtcclxuXHJcbiAgICBsZXQgQWRkTW9kZWw6IEhlbHBDZW50ZXJJdGVtTW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuVGl0bGUgPSBSZXN1bHRNb2RlbC5UaXRsZTtcclxuICAgIEFkZE1vZGVsLkRlc2NyaXB0aW9uID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb247XHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SURzID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldElEcztcclxuICAgIEFkZE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuSXNIaWRkZW47XHJcbiAgICBBZGRNb2RlbC5Mb2dvRmlsZURUTyA9IHtcclxuICAgICAgRmlsZUJhc2U2NDogUmVzdWx0TW9kZWxbXCJMb2dvRmlsZURUT1wiXS5GaWxlQmFzZTY0LFxyXG4gICAgICBOYW1lV2l0aEV4dGVuc2lvbjogUmVzdWx0TW9kZWxbXCJMb2dvRmlsZURUT1wiXS5GaWxlTmFtZSxcclxuICAgICAgRmlsZU5hbWU6IFJlc3VsdE1vZGVsW1wiTG9nb0ZpbGVEVE9cIl0uRmlsZU5hbWUsXHJcbiAgICAgIEZpbGVTaXplSW5NQjogUmVzdWx0TW9kZWxbXCJMb2dvRmlsZURUT1wiXS5GaWxlU2l6ZUluTUIsXHJcbiAgICAgIEZpbGVUeXBlOiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVUeXBlXHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRIZWxwQ2VudGVyRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuQWRkSGVscENlbnRlcihBZGRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBIZWxwQ2VudGVyIEl0ZW1cclxuICBzaG93RWRpdEhlbHBDZW50ZXJNb2RhbChoZWxwQ2VudGVySUQ6IHN0cmluZywgRWRpdEhlbHBDZW50ZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgdGhpcy5IZWxwQ2VudGVySXRlbUlkID0gaGVscENlbnRlcklEO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5nZXRFZGl0SGVscENlbnRlckRhdGEoaGVscENlbnRlcklEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGhlbHBDZW50ZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0c0xpc3QgPSBsaXN0cy5wZXJtaXNzaW9uU2V0cztcclxuXHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybVxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlXHJcblxyXG4gICAgICBsZXQgVGl0bGUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBUaXRsZS5BcmFiaWMgPSBoZWxwQ2VudGVyLnRpdGxlLmFyYWJpYztcclxuICAgICAgVGl0bGUuRW5nbGlzaCA9IGhlbHBDZW50ZXIudGl0bGUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLk5hbWUgPSBcIlRpdGxlXCI7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLkFyYWJpY0xhYmVsS2V5ID0gXCJUaXRsZUFSXCI7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGl0bGVFTlwiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuVmFsdWUgPSBUaXRsZTtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuXHJcbiAgICAgIGxldCBEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIERlc2NyaXB0aW9uLkFyYWJpYyA9IGhlbHBDZW50ZXIuZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICBEZXNjcmlwdGlvbi5FbmdsaXNoID0gaGVscENlbnRlci5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk5hbWUgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBEZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uTXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk1heExlbmd0aCA9IDEwMDA7XHJcblxyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5OYW1lID0gXCJQZXJtaXNzaW9uU2V0SURzXCJcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uU2V0c0xpc3RcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuU2VsZWN0ZWRJdGVtcyA9IGhlbHBDZW50ZXIucGVybWlzc2lvblNldElEcz8ubWFwKGkgPT4gaS50b0xvd2VyQ2FzZSgpKTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRJc0hpZGRlbi5OYW1lID0gXCJJc0hpZGRlblwiXHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLkxhYmVsS2V5ID0gXCJIaWRkZW5cIlxyXG4gICAgICB0aGlzLkVkaXRJc0hpZGRlbi5WYWx1ZSA9IGhlbHBDZW50ZXIuaXNIaWRkZW5cclxuXHJcbiAgICAgIHRoaXMuRWRpdExvZ28gPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdExvZ28uTmFtZSA9IFwiTG9nb0ZpbGVEVE9cIlxyXG4gICAgICB0aGlzLkVkaXRMb2dvLkxhYmVsS2V5ID0gXCJMb2dvXCJcclxuICAgICAgdGhpcy5FZGl0TG9nby5Jc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVkaXRMb2dvLkZpbGVVcGxvYWRBY2NlcHRzVHlwZXMgPSBbSW1hZ2VUeXBlLkltYWdlVHlwZXNdXHJcbiAgICAgIHRoaXMuRWRpdExvZ28uVmFsdWUgPSBoZWxwQ2VudGVyLmxvZ29GaWxlRFRPXHJcbiAgICAgIHRoaXMuRWRpdExvZ29GaWxlSUQgPSBoZWxwQ2VudGVyLmxvZ29GaWxlSUQ7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRIZWxwQ2VudGVyTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRIZWxwQ2VudGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBIZWxwQ2VudGVySXRlbU1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuSGVscENlbnRlckl0ZW1JZDtcclxuICAgIEVkaXRNb2RlbC5UaXRsZSA9IFJlc3VsdE1vZGVsLlRpdGxlOyAvLygjIzEpXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvblxyXG4gICAgRWRpdE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuSXNIaWRkZW47XHJcbiAgICBFZGl0TW9kZWwuTG9nb0ZpbGVEVE8gPSBSZXN1bHRNb2RlbC5Mb2dvRmlsZURUTyA9PSBcIlwiID8gbnVsbCA6IFJlc3VsdE1vZGVsLkxvZ29GaWxlRFRPO1xyXG4gICAgRWRpdE1vZGVsLkxvZ29GaWxlSUQgPSB0aGlzLkVkaXRMb2dvRmlsZUlEO1xyXG4gICAgRWRpdE1vZGVsLlBlcm1pc3Npb25TZXRJRHMgPSBSZXN1bHRNb2RlbC5QZXJtaXNzaW9uU2V0SURzO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRIZWxwQ2VudGVyRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkVkaXRIZWxwQ2VudGVyKEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEhlbHBDZW50ZXJcclxuICBzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKGhlbHBDZW50ZXJJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUhlbHBDZW50ZXJJZCA9IGhlbHBDZW50ZXJJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVIZWxwQ2VudGVySWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUhlbHBDZW50ZXI7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVIZWxwQ2VudGVyID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRGVsZXRlSGVscENlbnRlcihpZCk7XHJcbiAgfVxyXG5cclxuICAvL0dlbmVyYXRlIENvZGVcclxuICBzaG93R2VuZXJhdGVDb2RlTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpIHtcclxuICAgIHRoaXMuSGVscENlbnRlclNlcnZpY2UuR2VuZXJhdGVDb2RlKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IENvZGUgPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMuTmFtZSA9IFwiR2VuZXJhdGVkQ29kZU9wdGlvbnNcIjtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLk1heExlbmd0aCA9IDEwMDAwMDA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMuVmFsdWUgPSBDb2RlLnRleHQ7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMuRW5hYmxlQ29weVRvQ2xpcGJvYXJkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5BdHRyaWJ1dGVMaXN0ID0gW3sgS2V5OiBcInJvd3NcIiwgdmFsdWU6IFwiMjBcIiB9XTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihHZW5lcmF0ZUNvZGVNb2RhbCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICAgPCEtLShPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiAtLT5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIChjbGljayk9XCJzaG93R2VuZXJhdGVDb2RlTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZGVcIj48L2k+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkdlbmVyYXRlQ29kZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL0hlbHBDZW50ZXIvUHJldmlldyddXCJcclxuICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcmV2aWV3XCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBtZS0zXCIgKGNsaWNrKT1cInNob3dBZGRIZWxwQ2VudGVyTW9kYWwoQWRkSGVscENlbnRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6QWN0aXZlRGlyZWN0b3J5IGxpc3QtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGl0bGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZXNjcmlwdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBlcm1pc3Npb25TZXRzXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4IHRleHQtY2VudGVyXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmlzaWJsZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4IHRleHQtY2VudGVyXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IEl0ZW0gb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJTYXZlTmFtZShJdGVtLnRpdGxlU3RyKVwiIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL0hlbHBDZW50ZXIvU2Vjb25kTGV2ZWwnLEl0ZW0uaURfR1VJRF1cIiByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e0l0ZW0udGl0bGVTdHJ9fTwvYT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3tJdGVtLmRlc2NyaXB0aW9uU3RyfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD4ge3tJdGVtLnBlcm1pc3Npb25zU3RyfX0gPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJJdGVtLmlzSGlkZGVuO2Vsc2Ugb3RoZXJfY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcl9jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoSXRlbS5pRF9HVUlELEVkaXRIZWxwQ2VudGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiIChjbGljayk9XCJzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKEl0ZW0uaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRIZWxwQ2VudGVySXRlbUxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBbb3B0aW9uc109XCJIZWxwQ2VudGVyUGFnaW5nXCJcclxuICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiICNIZWxwQ2VudGVyUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIEZpbHRlciBXcmFwcGVyIC0tPlxyXG4gIDwhLS1lbmQ6OlBlcm1pc3Npb24gbGlzdC0tPlxyXG48L2Rpdj5cclxuXHJcbjwhLS1BZGQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRIZWxwQ2VudGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkSGVscENlbnRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkFkZFRpdGxlXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkFkZERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkUGVybWlzc2lvblNldHNPcHRpb25zXCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUltYWdlVXBsb2FkIFtvcHRpb25zXT1cIkFkZExvZ29cIiBbZ3JvdXBdPVwiQWRkSGVscENlbnRlckZvcm1cIj5cclxuXHJcbiAgICAgICAgICA8L0JCU0YtSW1hZ2VVcGxvYWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiQWRkSXNIaWRkZW5cIiBbZ3JvdXBdPVwiQWRkSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VIZWxwQ2VudGVyTW9kYWwgaWQ9XCJDbG9zZUFkZEhlbHBDZW50ZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS1FZGl0IE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdEhlbHBDZW50ZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGl0bGVcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnNcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUltYWdlVXBsb2FkIFtvcHRpb25zXT1cIkVkaXRMb2dvXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG5cclxuICAgICAgICAgIDwvQkJTRi1JbWFnZVVwbG9hZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNIaWRkZW5cIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdEhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlRWRpdEhlbHBDZW50ZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS1kZWxldGUgTW9kYWwtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwiRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCIgI0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcbjwhLS1HZW5lcmF0ZSBjb2RlIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjR2VuZXJhdGVDb2RlTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkdlbmVyYXRlQ29kZVwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJHZW5lcmF0ZUNvZGVGb3JtXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJHZW5lcmF0ZWRDb2RlT3B0aW9uc1wiIFtncm91cF09XCJHZW5lcmF0ZUNvZGVGb3JtXCIgI0dlbmVyYXRlQ29kZUlucHV0PlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUdlbmVyYXRlQ29kZU1vZGFsIGlkPVwiQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSAgbWUtM1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29weVRvQ2xpcGJvYXJkXCIpfX08L2J1dHRvbj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcblxyXG4iXX0=
@@ -38,7 +38,7 @@ export class HelpCenterPreviewComponent {
38
38
  }
39
39
  }
40
40
  HelpCenterPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HelpCenterPreviewComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i3.HelpCenterService }], target: i0.ɵɵFactoryTarget.Component });
41
- HelpCenterPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: HelpCenterPreviewComponent, selector: "lib-help-center-preview", ngImport: i0, template: "<block-ui></block-ui>\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body accordion-custom\">\r\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"ngb-panel-0\" *ngFor=\"let Item of HelpCenterItems;let itemIndex=index;\">\r\n <ngb-panel>\r\n <ng-template ngbPanelTitle>\r\n <h4 id=\"parentTitle\" *ngIf=\"language=='en'\">{{Item.title.english}}</h4>\r\n <h4 id=\"parentTitle\" *ngIf=\"language=='ar'\">{{Item.title.arabic}}</h4>\r\n <div id=\"parentdesc\" *ngIf=\"language=='en'\" class=\"text-muted\">{{Item.description.english}}</div>\r\n <div id=\"parentdesc\" *ngIf=\"language=='ar'\" class=\"text-muted\">{{Item.description.arabic}}</div>\r\n </ng-template>\r\n <ng-template ngbPanelContent>\r\n <ul id=\"{{'Lvl1-'+Item.id}}\">\r\n <li *ngFor=\"let child of Item.children;let i=index;\">\r\n <a [ngClass]=\"{'active helpcenterlink': i === 0}\" ( data-toggle=\"tab\" role=\"tab\" aria-selected=\"true\" href=\"{{'#Content-'+i+'-'+itemIndex}}\">\r\n <span class=\"kt-nav__link-text text-to-truncate1\" *ngIf=\"language=='en'\">{{child.title.english}}</span>\r\n <span class=\"kt-nav__link-text text-to-truncate1\" *ngIf=\"language=='ar'\">{{child.title.arabic}}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n <div *ngFor=\"let child of Item.children;let i=index;\" class=\"d-flex align-items-center bg-light-dark rounded p-5 mb-7\">\r\n <div id=\"{{'#Content-'+i+'-'+itemIndex}}\">\r\n <div *ngFor=\"let lastChild of child.children;let j=index;\">\r\n <span *ngIf=\"language=='en'\" class=\"fw-bolder text-light fs-4 mb-2\">{{lastChild.title.english}}</span>\r\n <span *ngIf=\"language=='ar'\" class=\"fw-bolder text-light fs-4 mb-2\">{{lastChild.title.arabic}}</span>\r\n <div>\r\n <div>\r\n <span *ngIf=\"language=='en'\" class=\"text-primary fw-bold d-block\" innerHtml=\"{{lastChild.html.english}}\">\r\n </span>\r\n <span *ngIf=\"language=='ar'\" class=\"text-primary fw-bold d-block\" innerHtml=\"{{lastChild.html.arabic}}\">\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ngb-accordion>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", components: [{ type: i4.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["activeIds", "destroyOnHide", "animation", "type", "closeOthers"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
41
+ HelpCenterPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: HelpCenterPreviewComponent, selector: "lib-help-center-preview", ngImport: i0, template: "<block-ui></block-ui>\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body accordion-custom\">\r\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"ngb-panel-0\" *ngFor=\"let Item of HelpCenterItems;let itemIndex=index;\">\r\n <ngb-panel>\r\n <ng-template ngbPanelTitle>\r\n <h4 id=\"parentTitle\" *ngIf=\"language=='en'\">{{Item.title.english}}</h4>\r\n <h4 id=\"parentTitle\" *ngIf=\"language=='ar'\">{{Item.title.arabic}}</h4>\r\n <div id=\"parentdesc\" *ngIf=\"language=='en'\" class=\"text-muted\">{{Item.description.english}}</div>\r\n <div id=\"parentdesc\" *ngIf=\"language=='ar'\" class=\"text-muted\">{{Item.description.arabic}}</div>\r\n </ng-template>\r\n <ng-template ngbPanelContent>\r\n <ul id=\"{{'Lvl1-'+Item.id}}\">\r\n <li *ngFor=\"let child of Item.children;let i=index;\">\r\n <a href=\"{{'#Content-'+i+'-'+itemIndex}}\" [ngClass]=\"{'active helpcenterlink': i === 0}\" data-toggle=\"tab\" role=\"tab\" aria-selected=\"true\">\r\n <span class=\"kt-nav__link-text text-to-truncate1\" *ngIf=\"language=='en'\">{{child.title.english}}</span>\r\n <span class=\"kt-nav__link-text text-to-truncate1\" *ngIf=\"language=='ar'\">{{child.title.arabic}}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n <div *ngFor=\"let child of Item.children;let i=index;\" class=\"d-flex align-items-center bg-light-dark rounded p-5 mb-7\">\r\n <div id=\"{{'#Content-'+i+'-'+itemIndex}}\">\r\n <div *ngFor=\"let lastChild of child.children;let j=index;\">\r\n <span *ngIf=\"language=='en'\" class=\"fw-bolder text-light fs-4 mb-2\">{{lastChild.title.english}}</span>\r\n <span *ngIf=\"language=='ar'\" class=\"fw-bolder text-light fs-4 mb-2\">{{lastChild.title.arabic}}</span>\r\n <div>\r\n <div>\r\n <span *ngIf=\"language=='en'\" class=\"text-primary fw-bold d-block\" innerHtml=\"{{lastChild.html.english}}\">\r\n </span>\r\n <span *ngIf=\"language=='ar'\" class=\"text-primary fw-bold d-block\" innerHtml=\"{{lastChild.html.arabic}}\">\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ngb-accordion>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", components: [{ type: i4.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["activeIds", "destroyOnHide", "animation", "type", "closeOthers"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HelpCenterPreviewComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{
@@ -46,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
46
46
  templateUrl: './help-center-preview.component.html'
47
47
  }]
48
48
  }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.PageInfoService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i3.HelpCenterService }]; } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXItcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2hlbHBDZW50ZXIvaGVscC1jZW50ZXItcHJldmlldy9oZWxwLWNlbnRlci1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci1wcmV2aWV3L2hlbHAtY2VudGVyLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBVWxELE1BQU0sT0FBTywwQkFBMEI7SUFRcEMsWUFBb0IsV0FBdUIsRUFBUyxlQUErQixFQUFTLGNBQTZCLEVBQVMsb0JBQXlDLEVBQVMsa0JBQXFDLEVBQVUsaUJBQW9DO1FBQW5QLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQVMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFOeFEsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEM7NkJBQ3FCO1FBQ3JCLGFBQVEsR0FBVyxFQUFFLENBQUE7SUFJckIsQ0FBQztJQUVLLFFBQVE7O1lBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsUUFBUSxHQUFJLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFFakUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7S0FBQTtJQUVILFFBQVE7UUFFSixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3SEEzQlksMEJBQTBCOzRHQUExQiwwQkFBMEIsK0RDVnZDLGdtRkE0Q0E7NEZEbENhLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2lCQUNwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0hlbHBDZW50ZXJTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVscC1jZW50ZXItcHJldmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAtY2VudGVyLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwQ2VudGVyUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgSGVscENlbnRlckl0ZW1zOiBhbnk7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipJdGVtTnVtYmVyOjBcclxuICBUYWJOdW1iZXI6bnVtYmVyPTA7Ki9cclxuICBsYW5ndWFnZTogc3RyaW5nID0gXCJcIlxyXG4gIFxyXG5cclxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTpBdXRoU2VydmljZSxwcml2YXRlIHBhZ2VJbmZvU2VydmljZTpQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTpVdGlsaXR5U2VydmljZSxwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOkJCU0ZUcmFuc2xhdGVTZXJ2aWNlLHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOkVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBIZWxwQ2VudGVyU2VydmljZTogSGVscENlbnRlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGV2ZW50Lmxhbmc7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmxhbmd1YWdlID0gIGF3YWl0IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XHJcbiAgICB0aGlzLlByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKVxyXG4gICAgXHJcbiAgICB0aGlzLkxvYWRMaXN0KCk7XHJcbiAgfVxyXG5cclxuTG9hZExpc3QoKXtcclxuIFxyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5HZXRBbGwoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJJdGVtcyA9IHJlc3VsdDtcclxuICB9KTtcclxufVxyXG4gXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGFjY29yZGlvbi1jdXN0b21cIj5cclxuICAgICAgPG5nYi1hY2NvcmRpb24gI2FjYz1cIm5nYkFjY29yZGlvblwiIGFjdGl2ZUlkcz1cIm5nYi1wYW5lbC0wXCIgKm5nRm9yPVwibGV0IEl0ZW0gb2YgSGVscENlbnRlckl0ZW1zO2xldCBpdGVtSW5kZXg9aW5kZXg7XCI+XHJcbiAgICAgICAgPG5nYi1wYW5lbD5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxyXG4gICAgICAgICAgICA8aDQgaWQ9XCJwYXJlbnRUaXRsZVwiICpuZ0lmPVwibGFuZ3VhZ2U9PSdlbidcIj57e0l0ZW0udGl0bGUuZW5nbGlzaH19PC9oND5cclxuICAgICAgICAgICAgPGg0IGlkPVwicGFyZW50VGl0bGVcIiAqbmdJZj1cImxhbmd1YWdlPT0nYXInXCI+e3tJdGVtLnRpdGxlLmFyYWJpY319PC9oND5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInBhcmVudGRlc2NcIiAqbmdJZj1cImxhbmd1YWdlPT0nZW4nXCIgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tJdGVtLmRlc2NyaXB0aW9uLmVuZ2xpc2h9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwicGFyZW50ZGVzY1wiICpuZ0lmPVwibGFuZ3VhZ2U9PSdhcidcIiBjbGFzcz1cInRleHQtbXV0ZWRcIj57e0l0ZW0uZGVzY3JpcHRpb24uYXJhYmljfX08L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxyXG4gICAgICAgICAgICA8dWwgaWQ9XCJ7eydMdmwxLScrSXRlbS5pZH19XCI+XHJcbiAgICAgICAgICAgICAgPGxpICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgSXRlbS5jaGlsZHJlbjtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInsnYWN0aXZlIGhlbHBjZW50ZXJsaW5rJzogaSA9PT0gMH1cIiAoIGRhdGEtdG9nZ2xlPVwidGFiXCIgcm9sZT1cInRhYlwiIGFyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCIgaHJlZj1cInt7JyNDb250ZW50LScraSsnLScraXRlbUluZGV4fX1cIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJrdC1uYXZfX2xpbmstdGV4dCB0ZXh0LXRvLXRydW5jYXRlMVwiICpuZ0lmPVwibGFuZ3VhZ2U9PSdlbidcIj57e2NoaWxkLnRpdGxlLmVuZ2xpc2h9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJrdC1uYXZfX2xpbmstdGV4dCB0ZXh0LXRvLXRydW5jYXRlMVwiICpuZ0lmPVwibGFuZ3VhZ2U9PSdhcidcIj57e2NoaWxkLnRpdGxlLmFyYWJpY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkIG9mIEl0ZW0uY2hpbGRyZW47bGV0IGk9aW5kZXg7XCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJnLWxpZ2h0LWRhcmsgcm91bmRlZCBwLTUgbWItN1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJ7eycjQ29udGVudC0nK2krJy0nK2l0ZW1JbmRleH19XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICAqbmdGb3I9XCJsZXQgbGFzdENoaWxkIG9mIGNoaWxkLmNoaWxkcmVuO2xldCBqPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2VuJ1wiIGNsYXNzPVwiZnctYm9sZGVyIHRleHQtbGlnaHQgZnMtNCBtYi0yXCI+e3tsYXN0Q2hpbGQudGl0bGUuZW5nbGlzaH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2FyJ1wiIGNsYXNzPVwiZnctYm9sZGVyIHRleHQtbGlnaHQgZnMtNCBtYi0yXCI+e3tsYXN0Q2hpbGQudGl0bGUuYXJhYmljfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxhbmd1YWdlPT0nZW4nXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZnctYm9sZCBkLWJsb2NrXCIgaW5uZXJIdG1sPVwie3tsYXN0Q2hpbGQuaHRtbC5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxhbmd1YWdlPT0nYXInXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZnctYm9sZCBkLWJsb2NrXCIgaW5uZXJIdG1sPVwie3tsYXN0Q2hpbGQuaHRtbC5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmdiLXBhbmVsPlxyXG4gICAgICA8L25nYi1hY2NvcmRpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXItcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2hlbHBDZW50ZXIvaGVscC1jZW50ZXItcHJldmlldy9oZWxwLWNlbnRlci1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci1wcmV2aWV3L2hlbHAtY2VudGVyLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBVWxELE1BQU0sT0FBTywwQkFBMEI7SUFRcEMsWUFBb0IsV0FBdUIsRUFBUyxlQUErQixFQUFTLGNBQTZCLEVBQVMsb0JBQXlDLEVBQVMsa0JBQXFDLEVBQVUsaUJBQW9DO1FBQW5QLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQVMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFOeFEsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEM7NkJBQ3FCO1FBQ3JCLGFBQVEsR0FBVyxFQUFFLENBQUE7SUFJckIsQ0FBQztJQUVLLFFBQVE7O1lBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsUUFBUSxHQUFJLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFFakUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7S0FBQTtJQUVILFFBQVE7UUFFSixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3SEEzQlksMEJBQTBCOzRHQUExQiwwQkFBMEIsK0RDVnZDLDhsRkE0Q0E7NEZEbENhLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2lCQUNwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0hlbHBDZW50ZXJTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVscC1jZW50ZXItcHJldmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAtY2VudGVyLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwQ2VudGVyUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgSGVscENlbnRlckl0ZW1zOiBhbnk7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipJdGVtTnVtYmVyOjBcclxuICBUYWJOdW1iZXI6bnVtYmVyPTA7Ki9cclxuICBsYW5ndWFnZTogc3RyaW5nID0gXCJcIlxyXG4gIFxyXG5cclxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTpBdXRoU2VydmljZSxwcml2YXRlIHBhZ2VJbmZvU2VydmljZTpQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTpVdGlsaXR5U2VydmljZSxwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOkJCU0ZUcmFuc2xhdGVTZXJ2aWNlLHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOkVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBIZWxwQ2VudGVyU2VydmljZTogSGVscENlbnRlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGV2ZW50Lmxhbmc7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmxhbmd1YWdlID0gIGF3YWl0IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XHJcbiAgICB0aGlzLlByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKVxyXG4gICAgXHJcbiAgICB0aGlzLkxvYWRMaXN0KCk7XHJcbiAgfVxyXG5cclxuTG9hZExpc3QoKXtcclxuIFxyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5HZXRBbGwoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJJdGVtcyA9IHJlc3VsdDtcclxuICB9KTtcclxufVxyXG4gXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGFjY29yZGlvbi1jdXN0b21cIj5cclxuICAgICAgPG5nYi1hY2NvcmRpb24gI2FjYz1cIm5nYkFjY29yZGlvblwiIGFjdGl2ZUlkcz1cIm5nYi1wYW5lbC0wXCIgKm5nRm9yPVwibGV0IEl0ZW0gb2YgSGVscENlbnRlckl0ZW1zO2xldCBpdGVtSW5kZXg9aW5kZXg7XCI+XHJcbiAgICAgICAgPG5nYi1wYW5lbD5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxyXG4gICAgICAgICAgICA8aDQgaWQ9XCJwYXJlbnRUaXRsZVwiICpuZ0lmPVwibGFuZ3VhZ2U9PSdlbidcIj57e0l0ZW0udGl0bGUuZW5nbGlzaH19PC9oND5cclxuICAgICAgICAgICAgPGg0IGlkPVwicGFyZW50VGl0bGVcIiAqbmdJZj1cImxhbmd1YWdlPT0nYXInXCI+e3tJdGVtLnRpdGxlLmFyYWJpY319PC9oND5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInBhcmVudGRlc2NcIiAqbmdJZj1cImxhbmd1YWdlPT0nZW4nXCIgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tJdGVtLmRlc2NyaXB0aW9uLmVuZ2xpc2h9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwicGFyZW50ZGVzY1wiICpuZ0lmPVwibGFuZ3VhZ2U9PSdhcidcIiBjbGFzcz1cInRleHQtbXV0ZWRcIj57e0l0ZW0uZGVzY3JpcHRpb24uYXJhYmljfX08L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxyXG4gICAgICAgICAgICA8dWwgaWQ9XCJ7eydMdmwxLScrSXRlbS5pZH19XCI+XHJcbiAgICAgICAgICAgICAgPGxpICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgSXRlbS5jaGlsZHJlbjtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eycjQ29udGVudC0nK2krJy0nK2l0ZW1JbmRleH19XCIgW25nQ2xhc3NdPVwieydhY3RpdmUgaGVscGNlbnRlcmxpbmsnOiBpID09PSAwfVwiIGRhdGEtdG9nZ2xlPVwidGFiXCIgcm9sZT1cInRhYlwiIGFyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwia3QtbmF2X19saW5rLXRleHQgdGV4dC10by10cnVuY2F0ZTFcIiAqbmdJZj1cImxhbmd1YWdlPT0nZW4nXCI+e3tjaGlsZC50aXRsZS5lbmdsaXNofX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwia3QtbmF2X19saW5rLXRleHQgdGV4dC10by10cnVuY2F0ZTFcIiAqbmdJZj1cImxhbmd1YWdlPT0nYXInXCI+e3tjaGlsZC50aXRsZS5hcmFiaWN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBJdGVtLmNoaWxkcmVuO2xldCBpPWluZGV4O1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1saWdodC1kYXJrIHJvdW5kZWQgcC01IG1iLTdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGlkPVwie3snI0NvbnRlbnQtJytpKyctJytpdGVtSW5kZXh9fVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAgKm5nRm9yPVwibGV0IGxhc3RDaGlsZCBvZiBjaGlsZC5jaGlsZHJlbjtsZXQgaj1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibGFuZ3VhZ2U9PSdlbidcIiBjbGFzcz1cImZ3LWJvbGRlciB0ZXh0LWxpZ2h0IGZzLTQgbWItMlwiPnt7bGFzdENoaWxkLnRpdGxlLmVuZ2xpc2h9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibGFuZ3VhZ2U9PSdhcidcIiBjbGFzcz1cImZ3LWJvbGRlciB0ZXh0LWxpZ2h0IGZzLTQgbWItMlwiPnt7bGFzdENoaWxkLnRpdGxlLmFyYWJpY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2VuJ1wiIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZ3LWJvbGQgZC1ibG9ja1wiIGlubmVySHRtbD1cInt7bGFzdENoaWxkLmh0bWwuZW5nbGlzaH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2FyJ1wiIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZ3LWJvbGQgZC1ibG9ja1wiIGlubmVySHRtbD1cInt7bGFzdENoaWxkLmh0bWwuYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nYi1wYW5lbD5cclxuICAgICAgPC9uZ2ItYWNjb3JkaW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19