@bnsights/bbsf-admin-portal 1.1.4 → 1.1.6

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 (120) hide show
  1. package/README.md +6 -2
  2. package/bnsights-bbsf-admin-portal-1.1.6.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +1 -1
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +146 -146
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +152 -152
  6. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +1 -1
  7. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +1 -1
  8. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +15 -15
  9. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +1 -1
  10. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
  11. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +7 -7
  12. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +12 -12
  13. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +19 -19
  14. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +15 -15
  15. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +12 -12
  16. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +102 -102
  17. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +7 -7
  18. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +271 -271
  19. package/esm2022/lib/Pages/core/auth.module.mjs +1 -1
  20. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +1 -1
  21. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +3 -3
  22. package/esm2022/lib/Pages/departments/department/department.component.mjs +48 -48
  23. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +32 -32
  24. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +52 -52
  25. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +20 -20
  26. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +100 -100
  27. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +151 -151
  28. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +72 -72
  29. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +27 -27
  30. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +1 -1
  31. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +1 -1
  32. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +84 -84
  33. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
  34. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +56 -56
  35. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +58 -58
  36. package/esm2022/lib/Pages/home/home.component.mjs +7 -7
  37. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +129 -129
  38. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +14 -14
  39. package/esm2022/lib/Pages/license/license/license.component.mjs +11 -11
  40. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +41 -41
  41. package/esm2022/lib/Pages/localizations/localizations.component.mjs +125 -125
  42. package/esm2022/lib/Pages/logs/log/log.component.mjs +11 -11
  43. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +120 -120
  44. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +34 -34
  45. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +83 -83
  46. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +35 -35
  47. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +53 -53
  48. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +50 -50
  49. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +16 -16
  50. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +20 -20
  51. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +135 -135
  52. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +186 -186
  53. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +122 -122
  54. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +120 -120
  55. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +29 -29
  56. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +57 -57
  57. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +79 -79
  58. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +35 -35
  59. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +27 -27
  60. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +27 -27
  61. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +1 -1
  62. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
  63. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
  64. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +1 -1
  65. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
  66. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
  67. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +1 -1
  68. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +1 -1
  69. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
  70. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
  71. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
  72. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
  73. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
  74. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
  75. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +1 -1
  76. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
  77. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
  78. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +1 -1
  79. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +1 -1
  80. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
  81. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
  82. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
  83. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
  84. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
  85. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +36 -36
  86. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +74 -74
  87. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +8 -8
  88. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +10 -10
  89. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +89 -89
  90. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +7 -7
  91. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +9 -9
  92. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +10 -10
  93. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +222 -222
  94. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +7 -7
  95. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +257 -257
  96. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +25 -25
  97. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +24 -24
  98. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +6 -6
  99. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +52 -52
  100. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +16 -16
  101. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +20 -20
  102. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +69 -69
  103. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +180 -180
  104. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +3 -3
  105. package/esm2022/lib/Pages/users/users.component.mjs +190 -190
  106. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +176 -176
  107. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +364 -364
  108. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +67 -67
  109. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +227 -227
  110. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +31 -31
  111. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +56 -56
  112. package/fesm2022/bnsights-bbsf-admin-portal.mjs +5187 -5187
  113. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  114. package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +0 -1
  115. package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +2 -2
  116. package/lib/Pages/workflows/tabs/tabs.component.d.ts +1 -1
  117. package/package.json +3 -3
  118. package/esm2022/bnsights-test-test-admin-portal.mjs +0 -5
  119. package/fesm2022/bnsights-test-test-admin-portal.mjs +0 -27181
  120. package/fesm2022/bnsights-test-test-admin-portal.mjs.map +0 -1
@@ -59,11 +59,11 @@ export class TemplateInfoComponent {
59
59
  let ResultModel = this.EditTemplateForm.value;
60
60
  let EditModel = new TemplateDTO();
61
61
  EditModel.ID_GUID = this.TemplateId;
62
- EditModel.Name.Arabic = ResultModel.Name.Arabic;
63
- EditModel.Name.English = ResultModel.Name.English;
62
+ EditModel.Name.arabic = ResultModel.Name.Arabic;
63
+ EditModel.Name.english = ResultModel.Name.English;
64
64
  EditModel.SysName = ResultModel.SysName ? ResultModel.SysName : this.EditSysNameValue;
65
- EditModel.Description.English = ResultModel.Description.English;
66
- EditModel.Description.Arabic = ResultModel.Description.Arabic;
65
+ EditModel.Description.english = ResultModel.Description.English;
66
+ EditModel.Description.arabic = ResultModel.Description.Arabic;
67
67
  EditModel.OrganizationID_GUID = ResultModel.OrganizationID_GUID;
68
68
  EditModel.CategoryItemID_GUID = ResultModel.CategoryItemID_GUID;
69
69
  EditModel.LanguageModeItemID_GUID = ResultModel.LanguageModeItemID_GUID;
@@ -160,14 +160,14 @@ export class TemplateInfoComponent {
160
160
  this.templateService.generateCodeById(this.TemplateId).subscribe((result) => {
161
161
  var Value = result;
162
162
  this.GenerateCodeTextArea = new TextAreaOptions();
163
- this.GenerateCodeTextArea.Name = "GenerateCodeTextArea";
164
- this.GenerateCodeTextArea.Value = Value.val.toString();
163
+ this.GenerateCodeTextArea.name = "GenerateCodeTextArea";
164
+ this.GenerateCodeTextArea.value = Value.val.toString();
165
165
  this.ValueToCopy = Value.val.toString();
166
- this.GenerateCodeTextArea.IsDisabled = true;
167
- this.GenerateCodeTextArea.HideLabel = true;
168
- this.GenerateCodeTextArea.Rows = 20;
169
- this.GenerateCodeTextArea.Cols = 20;
170
- this.GenerateCodeTextArea.MaxLength = 1000000;
166
+ this.GenerateCodeTextArea.isDisabled = true;
167
+ this.GenerateCodeTextArea.hideLabel = true;
168
+ this.GenerateCodeTextArea.rows = 20;
169
+ this.GenerateCodeTextArea.cols = 20;
170
+ this.GenerateCodeTextArea.maxLength = 1000000;
171
171
  this.modalService.open(GenerateCodeModal);
172
172
  });
173
173
  }
@@ -176,14 +176,14 @@ export class TemplateInfoComponent {
176
176
  this.templateService.generateUpdateCodeById(this.TemplateId).subscribe((result) => {
177
177
  var Value = result;
178
178
  this.GenerateCodeTextArea = new TextAreaOptions();
179
- this.GenerateCodeTextArea.Name = "GenerateCodeTextArea";
180
- this.GenerateCodeTextArea.Value = Value.val.toString();
179
+ this.GenerateCodeTextArea.name = "GenerateCodeTextArea";
180
+ this.GenerateCodeTextArea.value = Value.val.toString();
181
181
  this.ValueToCopy = Value.val.toString();
182
- this.GenerateCodeTextArea.IsDisabled = true;
183
- this.GenerateCodeTextArea.HideLabel = true;
184
- this.GenerateCodeTextArea.Rows = 20;
185
- this.GenerateCodeTextArea.Cols = 20;
186
- this.GenerateCodeTextArea.MaxLength = 1000000;
182
+ this.GenerateCodeTextArea.isDisabled = true;
183
+ this.GenerateCodeTextArea.hideLabel = true;
184
+ this.GenerateCodeTextArea.rows = 20;
185
+ this.GenerateCodeTextArea.cols = 20;
186
+ this.GenerateCodeTextArea.maxLength = 1000000;
187
187
  this.modalService.open(GenerateCodeModal);
188
188
  });
189
189
  }
@@ -202,81 +202,81 @@ export class TemplateInfoComponent {
202
202
  this.Template = resultObj.model;
203
203
  this.EditTemplateForm = new FormGroup({});
204
204
  this.EditTemplateFormOptions = new FormOptions();
205
- this.EditTemplateFormOptions.FormGroup = this.EditTemplateForm;
206
- this.EditTemplateFormOptions.GetModelFunction = this.getEditTemplateModel;
207
- this.EditTemplateFormOptions.ServiceSubmitFunction = this.getEditTemplateFunction;
205
+ this.EditTemplateFormOptions.formGroup = this.EditTemplateForm;
206
+ this.EditTemplateFormOptions.getModelFunction = this.getEditTemplateModel;
207
+ this.EditTemplateFormOptions.serviceSubmitFunction = this.getEditTemplateFunction;
208
208
  let Name = new EnglishArabicDTO();
209
- Name.Arabic = this.Template.name.arabic;
210
- Name.English = this.Template.name.english;
209
+ Name.arabic = this.Template.name.arabic;
210
+ Name.english = this.Template.name.english;
211
211
  this.EditName = new MultiLingualTextBoxOptions();
212
- this.EditName.Name = "Name";
213
- this.EditName.ArabicLabelKey = "NameInArabic";
214
- this.EditName.EnglishLabelKey = "NameInEnglish";
215
- this.EditName.IsRequired = true;
216
- this.EditName.Value = Name;
212
+ this.EditName.name = "Name";
213
+ this.EditName.arabicLabelKey = "NameInArabic";
214
+ this.EditName.englishLabelKey = "NameInEnglish";
215
+ this.EditName.isRequired = true;
216
+ this.EditName.value = Name;
217
217
  this.EditSysName = new TextBoxOptions();
218
- this.EditSysName.Name = "SysName";
219
- this.EditSysName.LabelKey = "SysName";
220
- this.EditSysName.Type = InputType.Text;
221
- this.EditSysName.Value = this.Template.sysName;
218
+ this.EditSysName.name = "SysName";
219
+ this.EditSysName.labelKey = "SysName";
220
+ this.EditSysName.type = InputType.Text;
221
+ this.EditSysName.value = this.Template.sysName;
222
222
  this.EditSysNameValue = this.Template.sysName;
223
223
  let description = new EnglishArabicDTO();
224
- description.Arabic = this.Template.description.arabic;
225
- description.English = this.Template.description.english;
224
+ description.arabic = this.Template.description.arabic;
225
+ description.english = this.Template.description.english;
226
226
  this.EditDescription = new MultiLingualTextAreaOptions();
227
- this.EditDescription.Name = "Description";
228
- this.EditDescription.ArabicLabelKey = "DescriptionInArabic";
229
- this.EditDescription.EnglishLabelKey = "DescriptionInEnglish";
230
- this.EditDescription.Value = description;
227
+ this.EditDescription.name = "Description";
228
+ this.EditDescription.arabicLabelKey = "DescriptionInArabic";
229
+ this.EditDescription.englishLabelKey = "DescriptionInEnglish";
230
+ this.EditDescription.value = description;
231
231
  this.EditOrganization = new DropdownOptions();
232
- this.EditOrganization.Name = "OrganizationID_GUID";
233
- this.EditOrganization.LabelKey = "Organization";
234
- this.EditOrganization.ViewType = ControlLayout.Vertical;
235
- this.EditOrganization.DataSource = this.OrganizationList;
236
- this.EditOrganization.SingleSelection = true;
237
- this.EditOrganization.AllowSearchFilter = true;
238
- this.EditOrganization.Placeholder = "";
239
- this.EditOrganization.IsRequired = true;
240
- this.EditOrganization.SelectedItems = this.Template.organizationID_GUID?.toLowerCase();
232
+ this.EditOrganization.name = "OrganizationID_GUID";
233
+ this.EditOrganization.labelKey = "Organization";
234
+ this.EditOrganization.viewType = ControlLayout.Vertical;
235
+ this.EditOrganization.dataSource = this.OrganizationList;
236
+ this.EditOrganization.singleSelection = true;
237
+ this.EditOrganization.allowSearchFilter = true;
238
+ this.EditOrganization.placeholder = "";
239
+ this.EditOrganization.isRequired = true;
240
+ this.EditOrganization.selectedItems = this.Template.organizationID_GUID?.toLowerCase();
241
241
  this.EditLanguageMode = new DropdownOptions();
242
- this.EditLanguageMode.Name = "LanguageModeItemID_GUID";
243
- this.EditLanguageMode.LabelKey = "LanguageMode";
244
- this.EditLanguageMode.DataSource = this.LanguageModeList;
245
- this.EditLanguageMode.SingleSelection = true;
246
- this.EditLanguageMode.AllowSearchFilter = true;
247
- this.EditLanguageMode.Placeholder = "";
248
- this.EditLanguageMode.IsRequired = true;
249
- this.EditLanguageMode.SelectedItems = this.Template.languageModeItemID_GUID?.toLowerCase();
242
+ this.EditLanguageMode.name = "LanguageModeItemID_GUID";
243
+ this.EditLanguageMode.labelKey = "LanguageMode";
244
+ this.EditLanguageMode.dataSource = this.LanguageModeList;
245
+ this.EditLanguageMode.singleSelection = true;
246
+ this.EditLanguageMode.allowSearchFilter = true;
247
+ this.EditLanguageMode.placeholder = "";
248
+ this.EditLanguageMode.isRequired = true;
249
+ this.EditLanguageMode.selectedItems = this.Template.languageModeItemID_GUID?.toLowerCase();
250
250
  this.EditMasterLayout = new DropdownOptions();
251
- this.EditMasterLayout.Name = "EmailHeaderAndFooterTemplateID_GUID";
252
- this.EditMasterLayout.LabelKey = "MasterLayout";
253
- this.EditMasterLayout.DataSource = this.MasterLayoutList;
254
- this.EditMasterLayout.SingleSelection = true;
255
- this.EditMasterLayout.AllowSearchFilter = true;
256
- this.EditMasterLayout.Placeholder = "";
257
- this.EditMasterLayout.IsRequired = true;
258
- this.EditMasterLayout.SelectedItems = this.Template.emailHeaderAndFooterTemplateID_GUID?.toLowerCase();
251
+ this.EditMasterLayout.name = "EmailHeaderAndFooterTemplateID_GUID";
252
+ this.EditMasterLayout.labelKey = "MasterLayout";
253
+ this.EditMasterLayout.dataSource = this.MasterLayoutList;
254
+ this.EditMasterLayout.singleSelection = true;
255
+ this.EditMasterLayout.allowSearchFilter = true;
256
+ this.EditMasterLayout.placeholder = "";
257
+ this.EditMasterLayout.isRequired = true;
258
+ this.EditMasterLayout.selectedItems = this.Template.emailHeaderAndFooterTemplateID_GUID?.toLowerCase();
259
259
  this.EditCategory = new DropdownOptions();
260
- this.EditCategory.Name = "CategoryItemID_GUID";
261
- this.EditCategory.LabelKey = "Category";
262
- this.EditCategory.DataSource = this.CategoryList;
263
- this.EditCategory.SingleSelection = true;
264
- this.EditCategory.AllowSearchFilter = true;
265
- this.EditCategory.Placeholder = "";
266
- this.EditCategory.IsRequired = true;
267
- this.EditCategory.SelectedItems = this.Template.categoryItemID_GUID?.toLowerCase();
260
+ this.EditCategory.name = "CategoryItemID_GUID";
261
+ this.EditCategory.labelKey = "Category";
262
+ this.EditCategory.dataSource = this.CategoryList;
263
+ this.EditCategory.singleSelection = true;
264
+ this.EditCategory.allowSearchFilter = true;
265
+ this.EditCategory.placeholder = "";
266
+ this.EditCategory.isRequired = true;
267
+ this.EditCategory.selectedItems = this.Template.categoryItemID_GUID?.toLowerCase();
268
268
  this.EditIsEmail = new CheckBoxOptions();
269
- this.EditIsEmail.Name = "IsEmail";
270
- this.EditIsEmail.LabelKey = "IsEmail";
271
- this.EditIsEmail.Value = this.Template.isEmail;
269
+ this.EditIsEmail.name = "IsEmail";
270
+ this.EditIsEmail.labelKey = "IsEmail";
271
+ this.EditIsEmail.value = this.Template.isEmail;
272
272
  this.EditIsSms = new CheckBoxOptions();
273
- this.EditIsSms.Name = "IsSms";
274
- this.EditIsSms.LabelKey = "IsSms";
275
- this.EditIsSms.Value = this.Template.isSms;
273
+ this.EditIsSms.name = "IsSms";
274
+ this.EditIsSms.labelKey = "IsSms";
275
+ this.EditIsSms.value = this.Template.isSms;
276
276
  this.EditEnableIntensiveLogging = new CheckBoxOptions();
277
- this.EditEnableIntensiveLogging.Name = "EnableIntensiveLogging";
278
- this.EditEnableIntensiveLogging.LabelKey = "EnableIntensiveLogging";
279
- this.EditEnableIntensiveLogging.Value = this.Template.enableIntensiveLogging;
277
+ this.EditEnableIntensiveLogging.name = "EnableIntensiveLogging";
278
+ this.EditEnableIntensiveLogging.labelKey = "EnableIntensiveLogging";
279
+ this.EditEnableIntensiveLogging.value = this.Template.enableIntensiveLogging;
280
280
  this.modalService.open(EditTemplateModal);
281
281
  });
282
282
  }
@@ -289,30 +289,30 @@ export class TemplateInfoComponent {
289
289
  this.LanguageList = Result.val.languageKeys;
290
290
  this.SendEmailForm = new FormGroup({});
291
291
  this.SendEmailFormOptions = new FormOptions();
292
- this.SendEmailFormOptions.FormGroup = this.SendEmailForm;
293
- this.SendEmailFormOptions.GetModelFunction = this.getSendEmailModel;
294
- this.SendEmailFormOptions.ServiceSubmitFunction = this.getSendEmailFunction;
292
+ this.SendEmailFormOptions.formGroup = this.SendEmailForm;
293
+ this.SendEmailFormOptions.getModelFunction = this.getSendEmailModel;
294
+ this.SendEmailFormOptions.serviceSubmitFunction = this.getSendEmailFunction;
295
295
  this.To = new TextAreaOptions();
296
- this.To.Name = "ToEmails";
297
- this.To.LabelKey = "To";
298
- this.To.Value = null;
299
- this.To.IsRequired = true;
296
+ this.To.name = "ToEmails";
297
+ this.To.labelKey = "To";
298
+ this.To.value = null;
299
+ this.To.isRequired = true;
300
300
  this.EmailServiceProvider = new DropdownOptions();
301
- this.EmailServiceProvider.Name = "EmailProviderName";
302
- this.EmailServiceProvider.LabelKey = "EmailServiceProvider";
303
- this.EmailServiceProvider.DataSource = this.EmailServiceProviderList;
304
- this.EmailServiceProvider.SingleSelection = true;
305
- this.EmailServiceProvider.AllowSearchFilter = true;
306
- this.EmailServiceProvider.Placeholder = "";
307
- this.EmailServiceProvider.IsRequired = true;
301
+ this.EmailServiceProvider.name = "EmailProviderName";
302
+ this.EmailServiceProvider.labelKey = "EmailServiceProvider";
303
+ this.EmailServiceProvider.dataSource = this.EmailServiceProviderList;
304
+ this.EmailServiceProvider.singleSelection = true;
305
+ this.EmailServiceProvider.allowSearchFilter = true;
306
+ this.EmailServiceProvider.placeholder = "";
307
+ this.EmailServiceProvider.isRequired = true;
308
308
  this.Language = new DropdownOptions();
309
- this.Language.Name = "LangKey";
310
- this.Language.LabelKey = "Language";
311
- this.Language.DataSource = this.LanguageList;
312
- this.Language.SingleSelection = true;
313
- this.Language.AllowSearchFilter = true;
314
- this.Language.Placeholder = "";
315
- this.Language.IsRequired = true;
309
+ this.Language.name = "LangKey";
310
+ this.Language.labelKey = "Language";
311
+ this.Language.dataSource = this.LanguageList;
312
+ this.Language.singleSelection = true;
313
+ this.Language.allowSearchFilter = true;
314
+ this.Language.placeholder = "";
315
+ this.Language.isRequired = true;
316
316
  this.modalService.open(SendEmailModal);
317
317
  this.utilityService.stopBlockUI();
318
318
  });
@@ -325,22 +325,22 @@ export class TemplateInfoComponent {
325
325
  this.EmailServiceProviderList = Result.val.emailProviders;
326
326
  this.TestSendEmailForm = new FormGroup({});
327
327
  this.TestSendEmailFormOptions = new FormOptions();
328
- this.TestSendEmailFormOptions.FormGroup = this.TestSendEmailForm;
329
- this.TestSendEmailFormOptions.GetModelFunction = this.getTestSendEmailModel;
330
- this.TestSendEmailFormOptions.ServiceSubmitFunction = this.getTestSendEmailFunction;
328
+ this.TestSendEmailFormOptions.formGroup = this.TestSendEmailForm;
329
+ this.TestSendEmailFormOptions.getModelFunction = this.getTestSendEmailModel;
330
+ this.TestSendEmailFormOptions.serviceSubmitFunction = this.getTestSendEmailFunction;
331
331
  this.TestSendEmailTo = new TextAreaOptions();
332
- this.TestSendEmailTo.Name = "ToEmail";
333
- this.TestSendEmailTo.LabelKey = "SendTo";
334
- this.TestSendEmailTo.Value = null;
335
- this.TestSendEmailTo.IsRequired = true;
332
+ this.TestSendEmailTo.name = "ToEmail";
333
+ this.TestSendEmailTo.labelKey = "SendTo";
334
+ this.TestSendEmailTo.value = null;
335
+ this.TestSendEmailTo.isRequired = true;
336
336
  this.TestEmailServiceProvider = new DropdownOptions();
337
- this.TestEmailServiceProvider.Name = "EmailProviderName";
338
- this.TestEmailServiceProvider.LabelKey = "EmailServiceProvider";
339
- this.TestEmailServiceProvider.DataSource = this.EmailServiceProviderList;
340
- this.TestEmailServiceProvider.SingleSelection = true;
341
- this.TestEmailServiceProvider.AllowSearchFilter = true;
342
- this.TestEmailServiceProvider.Placeholder = "";
343
- this.TestEmailServiceProvider.IsRequired = true;
337
+ this.TestEmailServiceProvider.name = "EmailProviderName";
338
+ this.TestEmailServiceProvider.labelKey = "EmailServiceProvider";
339
+ this.TestEmailServiceProvider.dataSource = this.EmailServiceProviderList;
340
+ this.TestEmailServiceProvider.singleSelection = true;
341
+ this.TestEmailServiceProvider.allowSearchFilter = true;
342
+ this.TestEmailServiceProvider.placeholder = "";
343
+ this.TestEmailServiceProvider.isRequired = true;
344
344
  this.modalService.open(TestSendEmailModal);
345
345
  this.utilityService.stopBlockUI();
346
346
  });
@@ -353,26 +353,26 @@ export class TemplateInfoComponent {
353
353
  this.SMSServiceProviderList = Result.val;
354
354
  this.TestSendSMSForm = new FormGroup({});
355
355
  this.TestSendSMSFormOptions = new FormOptions();
356
- this.TestSendSMSFormOptions.FormGroup = this.TestSendSMSForm;
357
- this.TestSendSMSFormOptions.GetModelFunction = this.getTestSendSMSModel;
358
- this.TestSendSMSFormOptions.ServiceSubmitFunction = this.getTestSendSMSFunction;
356
+ this.TestSendSMSFormOptions.formGroup = this.TestSendSMSForm;
357
+ this.TestSendSMSFormOptions.getModelFunction = this.getTestSendSMSModel;
358
+ this.TestSendSMSFormOptions.serviceSubmitFunction = this.getTestSendSMSFunction;
359
359
  this.TestSendSMSTo = new PhoneOptions();
360
- this.TestSendSMSTo.Name = "ToMobileNumber";
361
- this.TestSendSMSTo.LabelKey = "SendTo";
362
- this.TestSendSMSTo.Value = null;
363
- this.TestSendSMSTo.IsRequired = true;
364
- this.TestSendSMSTo.ShowAsterisk = true;
365
- this.TestSendSMSTo.SelectedCountryISO = Country.UnitedArabEmirates;
366
- this.TestSendSMSTo.PhoneValidation = true;
367
- this.TestSendSMSTo.AllowSearch = true;
360
+ this.TestSendSMSTo.name = "ToMobileNumber";
361
+ this.TestSendSMSTo.labelKey = "SendTo";
362
+ this.TestSendSMSTo.value = null;
363
+ this.TestSendSMSTo.isRequired = true;
364
+ this.TestSendSMSTo.showAsterisk = true;
365
+ this.TestSendSMSTo.selectedCountryISO = Country.UnitedArabEmirates;
366
+ this.TestSendSMSTo.phoneValidation = true;
367
+ this.TestSendSMSTo.allowSearch = true;
368
368
  this.TestSMSServiceProvider = new DropdownOptions();
369
- this.TestSMSServiceProvider.Name = "SMSProviderName";
370
- this.TestSMSServiceProvider.LabelKey = "SMSServiceProvider";
371
- this.TestSMSServiceProvider.DataSource = this.SMSServiceProviderList;
372
- this.TestSMSServiceProvider.SingleSelection = true;
373
- this.TestSMSServiceProvider.AllowSearchFilter = true;
374
- this.TestSMSServiceProvider.Placeholder = "";
375
- this.TestSMSServiceProvider.IsRequired = true;
369
+ this.TestSMSServiceProvider.name = "SMSProviderName";
370
+ this.TestSMSServiceProvider.labelKey = "SMSServiceProvider";
371
+ this.TestSMSServiceProvider.dataSource = this.SMSServiceProviderList;
372
+ this.TestSMSServiceProvider.singleSelection = true;
373
+ this.TestSMSServiceProvider.allowSearchFilter = true;
374
+ this.TestSMSServiceProvider.placeholder = "";
375
+ this.TestSMSServiceProvider.isRequired = true;
376
376
  this.modalService.open(TestSendSMSModal);
377
377
  this.utilityService.stopBlockUI();
378
378
  });
@@ -382,10 +382,10 @@ export class TemplateInfoComponent {
382
382
  this.requestHandlerService.destroyHandler();
383
383
  }
384
384
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TemplateInfoComponent, deps: [{ token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i2.ClipboardService }, { token: i3.TemplateService }, { token: i4.ActivatedRoute }, { token: i5.PageInfoService }, { token: i6.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
385
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TemplateInfoComponent, selector: "lib-template-info", ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n <div class=\"container-fluid\" *ngIf=\"isDataLoaded\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showEditTemplateModal(EditTemplateModal)\">\r\n <i class=\"fa fa fa-edit\" aria-hidden=\"true\"></i>\r\n <span>{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showSendEmailModal(SendEmailModal)\">\r\n <i class=\"fa fa-paper-plane\"></i>{{utilityService.getResourceValue(\"SendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendEmailModal(TestSendEmailModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"TestSendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendSMSModal(TestSendSMSModal)\">\r\n <i class=\"fa fa-envelope-open-text sms\"></i>{{utilityService.getResourceValue(\"TestSendSMS\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateUpdateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-key\"></i>{{utilityService.getResourceValue(\"GenerateUpdateCode\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n English:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.english}}\r\n </a>\r\n\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.english}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.english}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.arabic}}\r\n </a>\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3 ar\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.arabic}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.arabic}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n English:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt\">{{TemplateInfo.smsTemplateInfo.sms.english}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt ar\"> {{TemplateInfo.smsTemplateInfo.sms.arabic}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n<!-- send Email Modal -->\r\n<ng-template #SendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"SendEmailTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"SendEmailFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"To\" [group]=\"SendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Language\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EmailServiceProvider\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseSendEmailForm id=\"CloseSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test sms Email Modal -->\r\n<ng-template #TestSendSMSModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendSMS\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendSMSFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Phone [options]=\"TestSendSMSTo\" [group]=\"TestSendSMSForm\">\r\n </BBSF-Phone>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestSMSServiceProvider\" [group]=\"TestSendSMSForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n Kindly note that these attributes are reserved\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendSMSForm id=\"CloseTestSendSMSForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test Send Email Modal -->\r\n<ng-template #TestSendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendEmail\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendEmailFormOptions\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"TestSendEmailTo\" [group]=\"TestSendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestEmailServiceProvider\" [group]=\"TestSendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"KeyMapNote\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendEmailForm id=\"CloseTestSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- edit Modal -->\r\n<ng-template #EditTemplateModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"EditTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditTemplateFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditTemplateForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditTemplateForm\">\r\n </BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditTemplateForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditOrganization\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLanguageMode\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCategory\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMasterLayout\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsEmail\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsSms\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditEnableIntensiveLogging\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditTemplateModal id=\"CloseEditTemplateModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- GenerateCode Modal -->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n\r\n <div class=\"Row\">\r\n <BBSF-TextArea [options]=\"GenerateCodeTextArea\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyInputMessage()\">\r\n {{utilityService.getResourceValue(\"CopyToClipboard\")}}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n", dependencies: [{ kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i10.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i10.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i10.TextAreaComponent, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i10.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i10.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i10.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i10.PhoneComponent, selector: "BBSF-Phone", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i10.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
385
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TemplateInfoComponent, selector: "lib-template-info", ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n <div class=\"container-fluid\" *ngIf=\"isDataLoaded\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showEditTemplateModal(EditTemplateModal)\">\r\n <i class=\"fa fa fa-edit\" aria-hidden=\"true\"></i>\r\n <span>{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showSendEmailModal(SendEmailModal)\">\r\n <i class=\"fa fa-paper-plane\"></i>{{utilityService.getResourceValue(\"SendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendEmailModal(TestSendEmailModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"TestSendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendSMSModal(TestSendSMSModal)\">\r\n <i class=\"fa fa-envelope-open-text sms\"></i>{{utilityService.getResourceValue(\"TestSendSMS\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateUpdateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-key\"></i>{{utilityService.getResourceValue(\"GenerateUpdateCode\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n English:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.english}}\r\n </a>\r\n\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.english}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.english}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.arabic}}\r\n </a>\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3 ar\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.arabic}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.arabic}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n English:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt\">{{TemplateInfo.smsTemplateInfo.sms.english}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt ar\"> {{TemplateInfo.smsTemplateInfo.sms.arabic}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n<!-- send Email Modal -->\r\n<ng-template #SendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"SendEmailTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"SendEmailFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"To\" [group]=\"SendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Language\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EmailServiceProvider\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseSendEmailForm id=\"CloseSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test sms Email Modal -->\r\n<ng-template #TestSendSMSModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendSMS\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendSMSFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Phone [options]=\"TestSendSMSTo\" [group]=\"TestSendSMSForm\">\r\n </BBSF-Phone>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestSMSServiceProvider\" [group]=\"TestSendSMSForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n Kindly note that these attributes are reserved\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendSMSForm id=\"CloseTestSendSMSForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test Send Email Modal -->\r\n<ng-template #TestSendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendEmail\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendEmailFormOptions\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"TestSendEmailTo\" [group]=\"TestSendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestEmailServiceProvider\" [group]=\"TestSendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"KeyMapNote\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendEmailForm id=\"CloseTestSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- edit Modal -->\r\n<ng-template #EditTemplateModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"EditTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditTemplateFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditTemplateForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditTemplateForm\">\r\n </BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditTemplateForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditOrganization\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLanguageMode\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCategory\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMasterLayout\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsEmail\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsSms\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditEnableIntensiveLogging\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditTemplateModal id=\"CloseEditTemplateModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- GenerateCode Modal -->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n\r\n <div class=\"Row\">\r\n <BBSF-TextArea [options]=\"GenerateCodeTextArea\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyInputMessage()\">\r\n {{utilityService.getResourceValue(\"CopyToClipboard\")}}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n", dependencies: [{ kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i10.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i10.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i10.TextAreaComponent, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i10.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i10.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i10.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i10.PhoneComponent, selector: "BBSF-Phone", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i10.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
386
386
  }
387
387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TemplateInfoComponent, decorators: [{
388
388
  type: Component,
389
389
  args: [{ selector: 'lib-template-info', template: "<block-ui></block-ui>\r\n\r\n <div class=\"container-fluid\" *ngIf=\"isDataLoaded\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showEditTemplateModal(EditTemplateModal)\">\r\n <i class=\"fa fa fa-edit\" aria-hidden=\"true\"></i>\r\n <span>{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showSendEmailModal(SendEmailModal)\">\r\n <i class=\"fa fa-paper-plane\"></i>{{utilityService.getResourceValue(\"SendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendEmailModal(TestSendEmailModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"TestSendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendSMSModal(TestSendSMSModal)\">\r\n <i class=\"fa fa-envelope-open-text sms\"></i>{{utilityService.getResourceValue(\"TestSendSMS\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateUpdateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-key\"></i>{{utilityService.getResourceValue(\"GenerateUpdateCode\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n English:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.english}}\r\n </a>\r\n\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.english}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.english}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.arabic}}\r\n </a>\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3 ar\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.arabic}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.arabic}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n English:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt\">{{TemplateInfo.smsTemplateInfo.sms.english}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt ar\"> {{TemplateInfo.smsTemplateInfo.sms.arabic}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n<!-- send Email Modal -->\r\n<ng-template #SendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"SendEmailTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"SendEmailFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"To\" [group]=\"SendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Language\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EmailServiceProvider\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseSendEmailForm id=\"CloseSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test sms Email Modal -->\r\n<ng-template #TestSendSMSModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendSMS\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendSMSFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Phone [options]=\"TestSendSMSTo\" [group]=\"TestSendSMSForm\">\r\n </BBSF-Phone>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestSMSServiceProvider\" [group]=\"TestSendSMSForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n Kindly note that these attributes are reserved\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendSMSForm id=\"CloseTestSendSMSForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test Send Email Modal -->\r\n<ng-template #TestSendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendEmail\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendEmailFormOptions\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"TestSendEmailTo\" [group]=\"TestSendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestEmailServiceProvider\" [group]=\"TestSendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"KeyMapNote\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendEmailForm id=\"CloseTestSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- edit Modal -->\r\n<ng-template #EditTemplateModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"EditTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditTemplateFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditTemplateForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditTemplateForm\">\r\n </BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditTemplateForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditOrganization\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLanguageMode\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCategory\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMasterLayout\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsEmail\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsSms\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditEnableIntensiveLogging\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditTemplateModal id=\"CloseEditTemplateModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- GenerateCode Modal -->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n\r\n <div class=\"Row\">\r\n <BBSF-TextArea [options]=\"GenerateCodeTextArea\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyInputMessage()\">\r\n {{utilityService.getResourceValue(\"CopyToClipboard\")}}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n" }]
390
390
  }], ctorParameters: () => [{ type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i2.ClipboardService }, { type: i3.TemplateService }, { type: i4.ActivatedRoute }, { type: i5.PageInfoService }, { type: i6.NgbModal }, { type: i1.RequestHandlerService }] });
391
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL25vdGlmaWNhdGlvbnMvdGVtcGxhdGUtaW5mby90ZW1wbGF0ZS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvbm90aWZpY2F0aW9ucy90ZW1wbGF0ZS1pbmZvL3RlbXBsYXRlLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVyUCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDNUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNyRixNQUFNLE9BQU8scUJBQXFCO0lBMERoQyxZQUNTLGNBQThCLEVBQVUsb0JBQTBDLEVBQ2pGLGtCQUFzQyxFQUFVLGlCQUFtQyxFQUNuRixl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dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgQ291bnRyeSwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQaG9uZU9wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9UZW1wbGF0ZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJ25neC1jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBTZW5kRW1haWxUZW1wbGF0ZU1vZGVsIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvbW9kZWxzL05vdGlmaWNhdGlvbnNNb2RlbHMvU2VuZEVtYWlsVGVtcGxhdGVNb2RlbCc7XHJcbmltcG9ydCB7IEVtYWlsVGVtcGxhdGVUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9FbWFpbFRlbXBsYXRlVGVzdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBTTVNUZW1wbGF0ZVRlc3Rlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL1NNU1RlbXBsYXRlVGVzdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURUTyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9UZW1wbGF0ZURUTyc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZW1wbGF0ZS1pbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUtaW5mby5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG4gIFRlbXBsYXRlSWQ6IHN0cmluZztcclxuICBUZW1wbGF0ZUlkRW5jOiBzdHJpbmcgPSBcIlwiXHJcbiAgVGVtcGxhdGVJbmZvOiBhbnlcclxuICBUZW1wbGF0ZTogYW55XHJcbiAgaXNEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIExhbmd1YWdlTGlzdCA9IFtdO1xyXG4gIEVtYWlsU2VydmljZVByb3ZpZGVyTGlzdCA9IFtdO1xyXG4gIFNNU1NlcnZpY2VQcm92aWRlckxpc3QgPSBbXTtcclxuICBDYXRlZ29yeUxpc3QgPSBbXTtcclxuICBPcmdhbml6YXRpb25MaXN0ID0gW107XHJcbiAgTGFuZ3VhZ2VNb2RlTGlzdCA9IFtdO1xyXG4gIE1hc3RlckxheW91dExpc3QgPSBbXTtcclxuXHJcbiAgLy9HZW5lcmF0ZUNvZGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgR2VuZXJhdGVDb2RlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIElzT3BlbkdlbmVyYXRlQ29kZU1vZGFsOiBib29sZWFuO1xyXG4gIEdlbmVyYXRlQ29kZVRleHRBcmVhOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgVmFsdWVUb0NvcHk6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vU2VuZCBFbWFpbCBNb2RlbCBDb250cm9sc1xyXG4gIFNlbmRFbWFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBTZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBUbzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIEVtYWlsU2VydmljZVByb3ZpZGVyOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTGFuZ3VhZ2U6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9UZXN0IFNlbmQgRW1haWwgTW9kZWwgQ29udHJvbHNcclxuICBUZXN0U2VuZEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFRlc3RTZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBUZXN0U2VuZEVtYWlsVG86IFRleHRBcmVhT3B0aW9ucztcclxuICBUZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcblxyXG4gIC8vVGVzdCBTZW5kIFNNUyBNb2RlbCBDb250cm9sc1xyXG4gIFRlc3RTZW5kU01TRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFRlc3RTZW5kU01TRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgVGVzdFNlbmRTTVNUbzogUGhvbmVPcHRpb25zO1xyXG4gIFRlc3RTTVNTZXJ2aWNlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFRlbXBsYXRlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEVkaXROYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEVkaXRTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0U3lzTmFtZVZhbHVlOiBzdHJpbmc7XHJcbiAgRWRpdERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRWRpdE9yZ2FuaXphdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRMYW5ndWFnZU1vZGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0Q2F0ZWdvcnk6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0TWFzdGVyTGF5b3V0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdElzRW1haWw6IENoZWNrQm94T3B0aW9ucztcclxuICBFZGl0SXNTbXM6IENoZWNrQm94T3B0aW9ucztcclxuICBFZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZzogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBfY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgdGVtcGxhdGVTZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2UsIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJZCA9IHBhcmFtc1snaWQnXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgcGFnZSBpbmZvXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGVJbmZvKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJbmZvID0gUmVzdWx0LnZhbDtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5UZW1wbGF0ZUluZm8pO1xyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy5UZW1wbGF0ZUluZm8udGVtcGxhdGVOYW1lXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZW1wbGF0ZXNcIiksIHBhdGg6ICcvQWRtaW4vTm90aWZpY2F0aW9ucy9UZW1wbGF0ZXMnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vR2VuZXJhdGUgQ29kZVxyXG4gIHNob3dHZW5lcmF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpIHtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdlbmVyYXRlQ29kZUJ5SWQodGhpcy5UZW1wbGF0ZUlkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgVmFsdWUgPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuTmFtZSA9IFwiR2VuZXJhdGVDb2RlVGV4dEFyZWFcIjtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5WYWx1ZSA9IFZhbHVlLnZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLlZhbHVlVG9Db3B5ID0gVmFsdWUudmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuSXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5Sb3dzID0gMjA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuQ29scyA9IDIwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLk1heExlbmd0aCA9IDEwMDAwMDA7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVDb2RlTW9kYWwpO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzaG93R2VuZXJhdGVVcGRhdGVDb2RlQnlJZE1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLkdlbmVyYXRlQ29kZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2VuZXJhdGVVcGRhdGVDb2RlQnlJZCh0aGlzLlRlbXBsYXRlSWQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciBWYWx1ZSA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYSA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5OYW1lID0gXCJHZW5lcmF0ZUNvZGVUZXh0QXJlYVwiO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLlZhbHVlID0gVmFsdWUudmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuVmFsdWVUb0NvcHkgPSBWYWx1ZS52YWwudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5Jc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLlJvd3MgPSAyMDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5Db2xzID0gMjA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuTWF4TGVuZ3RoID0gMTAwMDAwMDtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihHZW5lcmF0ZUNvZGVNb2RhbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZSgpIHtcclxuICAgIHRoaXMuX2NsaXBib2FyZFNlcnZpY2UuY29weSh0aGlzLlZhbHVlVG9Db3B5LnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuICAvL0VkaXQgVGVtcGxhdGVcclxuICBzaG93RWRpdFRlbXBsYXRlTW9kYWwoRWRpdFRlbXBsYXRlTW9kYWwpIHtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldEVkaXRUZW1wbGF0ZURhdGEodGhpcy5UZW1wbGF0ZUlkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuXHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5Pcmdhbml6YXRpb25MaXN0ID0gbGlzdHMub3JnYW5pemF0aW9uO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlTW9kZUxpc3QgPSBsaXN0cy5sb29rVXBJdGVtc0VtYWlsVGVtcGxhdGU7XHJcbiAgICAgIHRoaXMuTWFzdGVyTGF5b3V0TGlzdCA9IGxpc3RzLmVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGU7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnlMaXN0ID0gbGlzdHMubG9va1VwSXRlbXNDYXRlZ29yeTtcclxuXHJcbiAgICAgIHRoaXMuVGVtcGxhdGUgPSByZXN1bHRPYmoubW9kZWw7XHJcblxyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0VGVtcGxhdGVGb3JtXHJcbiAgICAgIHRoaXMuRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFRlbXBsYXRlTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0VGVtcGxhdGVGdW5jdGlvbjtcclxuXHJcbiAgICAgIGxldCBOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgTmFtZS5BcmFiaWMgPSB0aGlzLlRlbXBsYXRlLm5hbWUuYXJhYmljO1xyXG4gICAgICBOYW1lLkVuZ2xpc2ggPSB0aGlzLlRlbXBsYXRlLm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdE5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5OYW1lID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLlZhbHVlID0gTmFtZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS5OYW1lID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuTGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuVmFsdWUgPSB0aGlzLlRlbXBsYXRlLnN5c05hbWU7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWVWYWx1ZSA9IHRoaXMuVGVtcGxhdGUuc3lzTmFtZTtcclxuXHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIGRlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuVGVtcGxhdGUuZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICBkZXNjcmlwdGlvbi5FbmdsaXNoID0gdGhpcy5UZW1wbGF0ZS5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk5hbWUgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBkZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLk5hbWUgPSBcIk9yZ2FuaXphdGlvbklEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uTGFiZWxLZXkgPSBcIk9yZ2FuaXphdGlvblwiXHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWxcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLkRhdGFTb3VyY2UgPSB0aGlzLk9yZ2FuaXphdGlvbkxpc3RcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLlNlbGVjdGVkSXRlbXMgPSB0aGlzLlRlbXBsYXRlLm9yZ2FuaXphdGlvbklEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuTmFtZSA9IFwiTGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuTGFiZWxLZXkgPSBcIkxhbmd1YWdlTW9kZVwiXHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZS5EYXRhU291cmNlID0gdGhpcy5MYW5ndWFnZU1vZGVMaXN0XHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5UZW1wbGF0ZS5sYW5ndWFnZU1vZGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5OYW1lID0gXCJFbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5MYWJlbEtleSA9IFwiTWFzdGVyTGF5b3V0XCJcclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0LkRhdGFTb3VyY2UgPSB0aGlzLk1hc3RlckxheW91dExpc3RcclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0LlNlbGVjdGVkSXRlbXMgPSB0aGlzLlRlbXBsYXRlLmVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5OYW1lID0gXCJDYXRlZ29yeUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuTGFiZWxLZXkgPSBcIkNhdGVnb3J5XCJcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuRGF0YVNvdXJjZSA9IHRoaXMuQ2F0ZWdvcnlMaXN0XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuVGVtcGxhdGUuY2F0ZWdvcnlJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0VtYWlsID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRJc0VtYWlsLk5hbWUgPSBcIklzRW1haWxcIlxyXG4gICAgICB0aGlzLkVkaXRJc0VtYWlsLkxhYmVsS2V5ID0gXCJJc0VtYWlsXCJcclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbC5WYWx1ZSA9IHRoaXMuVGVtcGxhdGUuaXNFbWFpbFxyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdElzU21zID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRJc1Ntcy5OYW1lID0gXCJJc1Ntc1wiXHJcbiAgICAgIHRoaXMuRWRpdElzU21zLkxhYmVsS2V5ID0gXCJJc1Ntc1wiXHJcbiAgICAgIHRoaXMuRWRpdElzU21zLlZhbHVlID0gdGhpcy5UZW1wbGF0ZS5pc1Ntc1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmcgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmcuTmFtZSA9IFwiRW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1wiXHJcbiAgICAgIHRoaXMuRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmcuTGFiZWxLZXkgPSBcIkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcIlxyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nLlZhbHVlID0gdGhpcy5UZW1wbGF0ZS5lbmFibGVJbnRlbnNpdmVMb2dnaW5nXHJcblxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0VGVtcGxhdGVNb2RhbCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEVkaXRUZW1wbGF0ZU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRUZW1wbGF0ZUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBUZW1wbGF0ZURUTygpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBFZGl0TW9kZWwuTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5OYW1lLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5OYW1lLkVuZ2xpc2g7XHJcbiAgICBFZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWUgPyBSZXN1bHRNb2RlbC5TeXNOYW1lIDogdGhpcy5FZGl0U3lzTmFtZVZhbHVlO1xyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljXHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsLk9yZ2FuaXphdGlvbklEX0dVSURcclxuICAgIEVkaXRNb2RlbC5DYXRlZ29yeUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuQ2F0ZWdvcnlJdGVtSURfR1VJRFxyXG4gICAgRWRpdE1vZGVsLkxhbmd1YWdlTW9kZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuTGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSURcclxuICAgIEVkaXRNb2RlbC5FbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRCA9IFJlc3VsdE1vZGVsLkVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGVJRF9HVUlEXHJcbiAgICBFZGl0TW9kZWwuSXNFbWFpbCA9IFJlc3VsdE1vZGVsLklzRW1haWxcclxuICAgIEVkaXRNb2RlbC5Jc1NtcyA9IFJlc3VsdE1vZGVsLklzU21zXHJcbiAgICBFZGl0TW9kZWwuRW5hYmxlSW50ZW5zaXZlTG9nZ2luZyA9IFJlc3VsdE1vZGVsLkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFRlbXBsYXRlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5lZGl0RW1haWxUZW1wbGF0ZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1NlbmQgRW1haWxcclxuICBzaG93U2VuZEVtYWlsTW9kYWwoU2VuZEVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRTZW5kRW1haWxUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsLmVtYWlsUHJvdmlkZXJzO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlTGlzdCA9IFJlc3VsdC52YWwubGFuZ3VhZ2VLZXlzO1xyXG5cclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuU2VuZEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFNlbmRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U2VuZEVtYWlsRnVuY3Rpb247XHJcblxyXG4gICAgICB0aGlzLlRvID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRvLk5hbWUgPSBcIlRvRW1haWxzXCI7XHJcbiAgICAgIHRoaXMuVG8uTGFiZWxLZXkgPSBcIlRvXCI7XHJcbiAgICAgIHRoaXMuVG8uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuTmFtZSA9IFwiRW1haWxQcm92aWRlck5hbWVcIlxyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJFbWFpbFNlcnZpY2VQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5MYW5ndWFnZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5OYW1lID0gXCJMYW5nS2V5XCJcclxuICAgICAgdGhpcy5MYW5ndWFnZS5MYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLkxhbmd1YWdlLkRhdGFTb3VyY2UgPSB0aGlzLkxhbmd1YWdlTGlzdFxyXG4gICAgICB0aGlzLkxhbmd1YWdlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuTGFuZ3VhZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihTZW5kRW1haWxNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldFNlbmRFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlNlbmRFbWFpbEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwgPSBuZXcgU2VuZEVtYWlsVGVtcGxhdGVNb2RlbCgpO1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5UZW1wbGF0ZUlEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLlRvRW1haWxzID0gUmVzdWx0TW9kZWwuVG9FbWFpbHNcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuTGFuZ0tleSA9IFJlc3VsdE1vZGVsLkxhbmdLZXlcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuRW1haWxQcm92aWRlck5hbWUgPSBSZXN1bHRNb2RlbC5FbWFpbFByb3ZpZGVyTmFtZVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VuZEVtYWlsRnVuY3Rpb24gPSAoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2Uuc2VuZEVtYWlsVGVtcGxhdGUoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vVGVzdCBTZW5kIEVtYWlsXHJcbiAgc2hvd1Rlc3RTZW5kRW1haWxNb2RhbChUZXN0U2VuZEVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRTZW5kRW1haWxUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsLmVtYWlsUHJvdmlkZXJzO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1cclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdFNlbmRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTZW5kRW1haWxGdW5jdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxUby5OYW1lID0gXCJUb0VtYWlsXCI7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvLkxhYmVsS2V5ID0gXCJTZW5kVG9cIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsVG8uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxUby5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5OYW1lID0gXCJFbWFpbFByb3ZpZGVyTmFtZVwiXHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJFbWFpbFNlcnZpY2VQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLkRhdGFTb3VyY2UgPSB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyTGlzdFxyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGVzdFNlbmRFbWFpbE1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcbiAgZ2V0VGVzdFNlbmRFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlRlc3RTZW5kRW1haWxGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsID0gbmV3IEVtYWlsVGVtcGxhdGVUZXN0ZXJNb2RlbCgpO1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5UZW1wbGF0ZUlEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLlRvRW1haWwgPSBSZXN1bHRNb2RlbC5Ub0VtYWlsXHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLkVtYWlsUHJvdmlkZXJOYW1lID0gUmVzdWx0TW9kZWwuRW1haWxQcm92aWRlck5hbWVcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kRW1haWxGdW5jdGlvbiA9IChzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS50ZXN0U2VuZEVtYWlsVGVtcGxhdGUoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vVGVzdCBTZW5kIFNNU1xyXG4gIHNob3dUZXN0U2VuZFNNU01vZGFsKFRlc3RTZW5kU01TTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVzdFNNU1RlbXBsYXRlKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuU01TU2VydmljZVByb3ZpZGVyTGlzdCA9IFJlc3VsdC52YWw7XHJcblxyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5UZXN0U2VuZFNNU0Zvcm1cclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU0Zvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTZW5kU01TTW9kZWw7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTZW5kU01TRnVuY3Rpb247XHJcblxyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8gPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5OYW1lID0gXCJUb01vYmlsZU51bWJlclwiO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uTGFiZWxLZXkgPSBcIlNlbmRUb1wiO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5TaG93QXN0ZXJpc2sgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uU2VsZWN0ZWRDb3VudHJ5SVNPID0gQ291bnRyeS5Vbml0ZWRBcmFiRW1pcmF0ZXNcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLlBob25lVmFsaWRhdGlvbiA9IHRydWVcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLkFsbG93U2VhcmNoID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXIuTmFtZSA9IFwiU01TUHJvdmlkZXJOYW1lXCJcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJTTVNTZXJ2aWNlUHJvdmlkZXJcIlxyXG4gICAgICB0aGlzLlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuU01TU2VydmljZVByb3ZpZGVyTGlzdFxyXG4gICAgICB0aGlzLlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRlc3RTZW5kU01TTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0VGVzdFNlbmRTTVNNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5UZXN0U2VuZFNNU0Zvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHNlbmRTTVNUZW1wbGF0ZU1vZGVsID0gbmV3IFNNU1RlbXBsYXRlVGVzdGVyTW9kZWwoKTtcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlRlbXBsYXRlSURfR1VJRCA9IHRoaXMuVGVtcGxhdGVJZDtcclxuICAgIGxldCBpbnRlcm5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBzZW5kU01TVGVtcGxhdGVNb2RlbC5Ub01vYmlsZU51bWJlciA9IGludGVybmF0aW9uYWxOdW1iZXJcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlNNU1Byb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLlNNU1Byb3ZpZGVyTmFtZVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChzZW5kU01TVGVtcGxhdGVNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kU01TRnVuY3Rpb24gPSAoc2VuZFNNU1RlbXBsYXRlTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTZXJ2aWNlLnRlc3RTTVNUZW1wbGF0ZShzZW5kU01TVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImlzRGF0YUxvYWRlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuU2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0zIGJ0bi1saWdodC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0VGVtcGxhdGVNb2RhbChFZGl0VGVtcGxhdGVNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Bhbj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuU2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0zIGJ0bi1saWdodC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dTZW5kRW1haWxNb2RhbChTZW5kRW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wYXBlci1wbGFuZVwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kRW1haWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNlbmRFbWFpbE1vZGFsKFRlc3RTZW5kRW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1iYXJzXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RTZW5kRW1haWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNlbmRTTVNNb2RhbChUZXN0U2VuZFNNU01vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlLW9wZW4tdGV4dCBzbXNcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFNlbmRTTVNcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHZW5lcmF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHZW5lcmF0ZVVwZGF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEta2V5XCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkdlbmVyYXRlVXBkYXRlQ29kZVwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgICAgPCEtLWJlZ2luOjpPcHRpb24tLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpIZWFkaW5nLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUaXRsZS0tPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2VuJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICBFbmdsaXNoOlxyXG4gICAgICAgICAgICAgICAgICAgIHt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLmVtYWlsU3ViamVjdC5lbmdsaXNofX1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0RW1haWwnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBidG4taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpJdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS04MDAgZmxleC1ncm93LTEgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUhlYWRlci5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEJvZHkuZW5nbGlzaH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1kYXJrLXNraW4gcHQtN1wiIGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLnRlbXBsYXRlRW1haWxCYXNlRm9vdGVyLmVuZ2xpc2h9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6U2VsZWN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6T3B0aW9uLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8IS0tYmVnaW46Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1jZW50ZXIgcm91bmRlZC0zIGJnLWxpZ2h0IHB5LTEwIHB4LTEwIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkhlYWRpbmctLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRpdGxlLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL05vdGlmaWNhdGlvbnMvRWRpdEVtYWlsJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnYXInXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBtYi01IGZ3LWJvbGRlc3QgZnMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFyYWJpYzpcclxuICAgICAgICAgICAgICAgICAgICB7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbFN1YmplY3QuYXJhYmljfX1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2FyJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LWdyYXktODAwIGZsZXgtZ3Jvdy0xIHBlLTMgYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8udGVtcGxhdGVFbWFpbEJhc2VIZWFkZXIuYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLmVtYWlsQm9keS5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZGFyay1za2luIHB0LTdcIiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUZvb3Rlci5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlNlbGVjdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC02XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB5LTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgRW5nbGlzaDpTTVNcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLWljb25cIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRTTVMnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbiBmb250LXNpemUtMThcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtb2JpbGUtdHh0XCI+e3tUZW1wbGF0ZUluZm8uc21zVGVtcGxhdGVJbmZvLnNtcy5lbmdsaXNofX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHktMTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtcHJpbWFyeSBtYi01IGZ3LWJvbGRlc3QgZnMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICBBcmFiaWM6U01TXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0U01TJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnYXInXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW4gZm9udC1zaXplLTE4XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtb2JpbGUtdHh0IGFyXCI+ICB7e1RlbXBsYXRlSW5mby5zbXNUZW1wbGF0ZUluZm8uc21zLmFyYWJpY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG48IS0tIHNlbmQgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjU2VuZEVtYWlsTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRFbWFpbFRlbXBsYXRlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlNlbmRFbWFpbEZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJUb1wiIFtncm91cF09XCJTZW5kRW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxhbmd1YWdlXCIgW2dyb3VwXT1cIlNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVtYWlsU2VydmljZVByb3ZpZGVyXCIgW2dyb3VwXT1cIlNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlU2VuZEVtYWlsRm9ybSBpZD1cIkNsb3NlU2VuZEVtYWlsRm9ybVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZXN0IHNtcyBFbWFpbCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNUZXN0U2VuZFNNU01vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZFNNU1wiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJUZXN0U2VuZFNNU0Zvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtUGhvbmUgW29wdGlvbnNdPVwiVGVzdFNlbmRTTVNUb1wiIFtncm91cF09XCJUZXN0U2VuZFNNU0Zvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1QaG9uZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiVGVzdFNlbmRTTVNGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICAgICAgS2luZGx5IG5vdGUgdGhhdCB0aGVzZSBhdHRyaWJ1dGVzIGFyZSByZXNlcnZlZFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lRU48L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk5hbWVBUjwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+U3ViamVjdDwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TGFuZ0tleTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TW9iaWxlPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5FbWFpbDwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RGF0ZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+VGltZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RGF0ZVRpbWU8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlVGVzdFNlbmRTTVNGb3JtIGlkPVwiQ2xvc2VUZXN0U2VuZFNNU0Zvcm1cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZXN0IFNlbmQgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVGVzdFNlbmRFbWFpbE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZEVtYWlsXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlRlc3RTZW5kRW1haWxGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJUZXN0U2VuZEVtYWlsVG9cIiBbZ3JvdXBdPVwiVGVzdFNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlclwiIFtncm91cF09XCJUZXN0U2VuZEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJLZXlNYXBOb3RlXCIpfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TmFtZUVOPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lQVI8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlN1YmplY3Q8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkxhbmdLZXk8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk1vYmlsZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RW1haWw8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlRpbWU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGVUaW1lPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVRlc3RTZW5kRW1haWxGb3JtIGlkPVwiQ2xvc2VUZXN0U2VuZEVtYWlsRm9ybVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBlZGl0IE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRUZW1wbGF0ZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0VGVtcGxhdGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRWRpdE5hbWVcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTeXNOYW1lXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0T3JnYW5pemF0aW9uXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRMYW5ndWFnZU1vZGVcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdENhdGVnb3J5XCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRNYXN0ZXJMYXlvdXRcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNFbWFpbFwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzU21zXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1wiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRUZW1wbGF0ZU1vZGFsIGlkPVwiQ2xvc2VFZGl0VGVtcGxhdGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gR2VuZXJhdGVDb2RlIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0dlbmVyYXRlQ29kZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIlJvd1wiPlxyXG4gICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkdlbmVyYXRlQ29kZVRleHRBcmVhXCIgW2dyb3VwXT1cIkdlbmVyYXRlQ29kZUZvcm1cIiAjR2VuZXJhdGVDb2RlSW5wdXQ+XHJcbiAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUdlbmVyYXRlQ29kZU1vZGFsIGlkPVwiQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvcHlUb0NsaXBib2FyZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL25vdGlmaWNhdGlvbnMvdGVtcGxhdGUtaW5mby90ZW1wbGF0ZS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvbm90aWZpY2F0aW9ucy90ZW1wbGF0ZS1pbmZvL3RlbXBsYXRlLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVyUCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDNUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNyRixNQUFNLE9BQU8scUJBQXFCO0lBMERoQyxZQUNTLGNBQThCLEVBQVUsb0JBQTBDLEVBQ2pGLGtCQUFzQyxFQUFVLGlCQUFtQyxFQUNuRixl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dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgQ291bnRyeSwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQaG9uZU9wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9UZW1wbGF0ZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJ25neC1jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBTZW5kRW1haWxUZW1wbGF0ZU1vZGVsIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvbW9kZWxzL05vdGlmaWNhdGlvbnNNb2RlbHMvU2VuZEVtYWlsVGVtcGxhdGVNb2RlbCc7XHJcbmltcG9ydCB7IEVtYWlsVGVtcGxhdGVUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9FbWFpbFRlbXBsYXRlVGVzdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBTTVNUZW1wbGF0ZVRlc3Rlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL1NNU1RlbXBsYXRlVGVzdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURUTyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9UZW1wbGF0ZURUTyc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZW1wbGF0ZS1pbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUtaW5mby5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG4gIFRlbXBsYXRlSWQ6IHN0cmluZztcclxuICBUZW1wbGF0ZUlkRW5jOiBzdHJpbmcgPSBcIlwiXHJcbiAgVGVtcGxhdGVJbmZvOiBhbnlcclxuICBUZW1wbGF0ZTogYW55XHJcbiAgaXNEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIExhbmd1YWdlTGlzdCA9IFtdO1xyXG4gIEVtYWlsU2VydmljZVByb3ZpZGVyTGlzdCA9IFtdO1xyXG4gIFNNU1NlcnZpY2VQcm92aWRlckxpc3QgPSBbXTtcclxuICBDYXRlZ29yeUxpc3QgPSBbXTtcclxuICBPcmdhbml6YXRpb25MaXN0ID0gW107XHJcbiAgTGFuZ3VhZ2VNb2RlTGlzdCA9IFtdO1xyXG4gIE1hc3RlckxheW91dExpc3QgPSBbXTtcclxuXHJcbiAgLy9HZW5lcmF0ZUNvZGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgR2VuZXJhdGVDb2RlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIElzT3BlbkdlbmVyYXRlQ29kZU1vZGFsOiBib29sZWFuO1xyXG4gIEdlbmVyYXRlQ29kZVRleHRBcmVhOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgVmFsdWVUb0NvcHk6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vU2VuZCBFbWFpbCBNb2RlbCBDb250cm9sc1xyXG4gIFNlbmRFbWFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBTZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBUbzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIEVtYWlsU2VydmljZVByb3ZpZGVyOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTGFuZ3VhZ2U6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9UZXN0IFNlbmQgRW1haWwgTW9kZWwgQ29udHJvbHNcclxuICBUZXN0U2VuZEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFRlc3RTZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBUZXN0U2VuZEVtYWlsVG86IFRleHRBcmVhT3B0aW9ucztcclxuICBUZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcblxyXG4gIC8vVGVzdCBTZW5kIFNNUyBNb2RlbCBDb250cm9sc1xyXG4gIFRlc3RTZW5kU01TRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFRlc3RTZW5kU01TRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgVGVzdFNlbmRTTVNUbzogUGhvbmVPcHRpb25zO1xyXG4gIFRlc3RTTVNTZXJ2aWNlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdFRlbXBsYXRlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEVkaXROYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEVkaXRTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0U3lzTmFtZVZhbHVlOiBzdHJpbmc7XHJcbiAgRWRpdERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRWRpdE9yZ2FuaXphdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRMYW5ndWFnZU1vZGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0Q2F0ZWdvcnk6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0TWFzdGVyTGF5b3V0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdElzRW1haWw6IENoZWNrQm94T3B0aW9ucztcclxuICBFZGl0SXNTbXM6IENoZWNrQm94T3B0aW9ucztcclxuICBFZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZzogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBfY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgdGVtcGxhdGVTZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2UsIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJZCA9IHBhcmFtc1snaWQnXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgcGFnZSBpbmZvXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGVJbmZvKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJbmZvID0gUmVzdWx0LnZhbDtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5UZW1wbGF0ZUluZm8pO1xyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy5UZW1wbGF0ZUluZm8udGVtcGxhdGVOYW1lXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZW1wbGF0ZXNcIiksIHBhdGg6ICcvQWRtaW4vTm90aWZpY2F0aW9ucy9UZW1wbGF0ZXMnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vR2VuZXJhdGUgQ29kZVxyXG4gIHNob3dHZW5lcmF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpIHtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdlbmVyYXRlQ29kZUJ5SWQodGhpcy5UZW1wbGF0ZUlkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgVmFsdWUgPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEubmFtZSA9IFwiR2VuZXJhdGVDb2RlVGV4dEFyZWFcIjtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS52YWx1ZSA9IFZhbHVlLnZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLlZhbHVlVG9Db3B5ID0gVmFsdWUudmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5yb3dzID0gMjA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuY29scyA9IDIwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLm1heExlbmd0aCA9IDEwMDAwMDA7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVDb2RlTW9kYWwpO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzaG93R2VuZXJhdGVVcGRhdGVDb2RlQnlJZE1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLkdlbmVyYXRlQ29kZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2VuZXJhdGVVcGRhdGVDb2RlQnlJZCh0aGlzLlRlbXBsYXRlSWQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciBWYWx1ZSA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYSA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5uYW1lID0gXCJHZW5lcmF0ZUNvZGVUZXh0QXJlYVwiO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLnZhbHVlID0gVmFsdWUudmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuVmFsdWVUb0NvcHkgPSBWYWx1ZS52YWwudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLnJvd3MgPSAyMDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5jb2xzID0gMjA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEubWF4TGVuZ3RoID0gMTAwMDAwMDtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihHZW5lcmF0ZUNvZGVNb2RhbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZSgpIHtcclxuICAgIHRoaXMuX2NsaXBib2FyZFNlcnZpY2UuY29weSh0aGlzLlZhbHVlVG9Db3B5LnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuICAvL0VkaXQgVGVtcGxhdGVcclxuICBzaG93RWRpdFRlbXBsYXRlTW9kYWwoRWRpdFRlbXBsYXRlTW9kYWwpIHtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldEVkaXRUZW1wbGF0ZURhdGEodGhpcy5UZW1wbGF0ZUlkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuXHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5Pcmdhbml6YXRpb25MaXN0ID0gbGlzdHMub3JnYW5pemF0aW9uO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlTW9kZUxpc3QgPSBsaXN0cy5sb29rVXBJdGVtc0VtYWlsVGVtcGxhdGU7XHJcbiAgICAgIHRoaXMuTWFzdGVyTGF5b3V0TGlzdCA9IGxpc3RzLmVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGU7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnlMaXN0ID0gbGlzdHMubG9va1VwSXRlbXNDYXRlZ29yeTtcclxuXHJcbiAgICAgIHRoaXMuVGVtcGxhdGUgPSByZXN1bHRPYmoubW9kZWw7XHJcblxyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5FZGl0VGVtcGxhdGVGb3JtXHJcbiAgICAgIHRoaXMuRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFRlbXBsYXRlTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0VGVtcGxhdGVGdW5jdGlvbjtcclxuXHJcbiAgICAgIGxldCBOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgTmFtZS5hcmFiaWMgPSB0aGlzLlRlbXBsYXRlLm5hbWUuYXJhYmljO1xyXG4gICAgICBOYW1lLmVuZ2xpc2ggPSB0aGlzLlRlbXBsYXRlLm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdE5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5uYW1lID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuYXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLnZhbHVlID0gTmFtZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS5uYW1lID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUubGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0U3lzTmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUudmFsdWUgPSB0aGlzLlRlbXBsYXRlLnN5c05hbWU7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWVWYWx1ZSA9IHRoaXMuVGVtcGxhdGUuc3lzTmFtZTtcclxuXHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIGRlc2NyaXB0aW9uLmFyYWJpYyA9IHRoaXMuVGVtcGxhdGUuZGVzY3JpcHRpb24uYXJhYmljO1xyXG4gICAgICBkZXNjcmlwdGlvbi5lbmdsaXNoID0gdGhpcy5UZW1wbGF0ZS5kZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLm5hbWUgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLmFyYWJpY0xhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLmVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24udmFsdWUgPSBkZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLm5hbWUgPSBcIk9yZ2FuaXphdGlvbklEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24ubGFiZWxLZXkgPSBcIk9yZ2FuaXphdGlvblwiXHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWxcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLmRhdGFTb3VyY2UgPSB0aGlzLk9yZ2FuaXphdGlvbkxpc3RcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLnNlbGVjdGVkSXRlbXMgPSB0aGlzLlRlbXBsYXRlLm9yZ2FuaXphdGlvbklEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUubmFtZSA9IFwiTGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUubGFiZWxLZXkgPSBcIkxhbmd1YWdlTW9kZVwiXHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZS5kYXRhU291cmNlID0gdGhpcy5MYW5ndWFnZU1vZGVMaXN0XHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZS5zZWxlY3RlZEl0ZW1zID0gdGhpcy5UZW1wbGF0ZS5sYW5ndWFnZU1vZGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5uYW1lID0gXCJFbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5sYWJlbEtleSA9IFwiTWFzdGVyTGF5b3V0XCJcclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0LmRhdGFTb3VyY2UgPSB0aGlzLk1hc3RlckxheW91dExpc3RcclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0LnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0LnNlbGVjdGVkSXRlbXMgPSB0aGlzLlRlbXBsYXRlLmVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5uYW1lID0gXCJDYXRlZ29yeUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkubGFiZWxLZXkgPSBcIkNhdGVnb3J5XCJcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuZGF0YVNvdXJjZSA9IHRoaXMuQ2F0ZWdvcnlMaXN0XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuVGVtcGxhdGUuY2F0ZWdvcnlJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc0VtYWlsID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRJc0VtYWlsLm5hbWUgPSBcIklzRW1haWxcIlxyXG4gICAgICB0aGlzLkVkaXRJc0VtYWlsLmxhYmVsS2V5ID0gXCJJc0VtYWlsXCJcclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbC52YWx1ZSA9IHRoaXMuVGVtcGxhdGUuaXNFbWFpbFxyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdElzU21zID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRJc1Ntcy5uYW1lID0gXCJJc1Ntc1wiXHJcbiAgICAgIHRoaXMuRWRpdElzU21zLmxhYmVsS2V5ID0gXCJJc1Ntc1wiXHJcbiAgICAgIHRoaXMuRWRpdElzU21zLnZhbHVlID0gdGhpcy5UZW1wbGF0ZS5pc1Ntc1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmcgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmcubmFtZSA9IFwiRW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1wiXHJcbiAgICAgIHRoaXMuRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmcubGFiZWxLZXkgPSBcIkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcIlxyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nLnZhbHVlID0gdGhpcy5UZW1wbGF0ZS5lbmFibGVJbnRlbnNpdmVMb2dnaW5nXHJcblxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0VGVtcGxhdGVNb2RhbCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEVkaXRUZW1wbGF0ZU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRUZW1wbGF0ZUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBUZW1wbGF0ZURUTygpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBFZGl0TW9kZWwuTmFtZS5hcmFiaWMgPSBSZXN1bHRNb2RlbC5OYW1lLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5OYW1lLmVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5OYW1lLkVuZ2xpc2g7XHJcbiAgICBFZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWUgPyBSZXN1bHRNb2RlbC5TeXNOYW1lIDogdGhpcy5FZGl0U3lzTmFtZVZhbHVlO1xyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uLmVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uYXJhYmljID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljXHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsLk9yZ2FuaXphdGlvbklEX0dVSURcclxuICAgIEVkaXRNb2RlbC5DYXRlZ29yeUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuQ2F0ZWdvcnlJdGVtSURfR1VJRFxyXG4gICAgRWRpdE1vZGVsLkxhbmd1YWdlTW9kZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuTGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSURcclxuICAgIEVkaXRNb2RlbC5FbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRCA9IFJlc3VsdE1vZGVsLkVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGVJRF9HVUlEXHJcbiAgICBFZGl0TW9kZWwuSXNFbWFpbCA9IFJlc3VsdE1vZGVsLklzRW1haWxcclxuICAgIEVkaXRNb2RlbC5Jc1NtcyA9IFJlc3VsdE1vZGVsLklzU21zXHJcbiAgICBFZGl0TW9kZWwuRW5hYmxlSW50ZW5zaXZlTG9nZ2luZyA9IFJlc3VsdE1vZGVsLkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFRlbXBsYXRlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5lZGl0RW1haWxUZW1wbGF0ZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1NlbmQgRW1haWxcclxuICBzaG93U2VuZEVtYWlsTW9kYWwoU2VuZEVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRTZW5kRW1haWxUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsLmVtYWlsUHJvdmlkZXJzO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlTGlzdCA9IFJlc3VsdC52YWwubGFuZ3VhZ2VLZXlzO1xyXG5cclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuU2VuZEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFNlbmRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U2VuZEVtYWlsRnVuY3Rpb247XHJcblxyXG4gICAgICB0aGlzLlRvID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRvLm5hbWUgPSBcIlRvRW1haWxzXCI7XHJcbiAgICAgIHRoaXMuVG8ubGFiZWxLZXkgPSBcIlRvXCI7XHJcbiAgICAgIHRoaXMuVG8udmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRvLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIubmFtZSA9IFwiRW1haWxQcm92aWRlck5hbWVcIlxyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLmxhYmVsS2V5ID0gXCJFbWFpbFNlcnZpY2VQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuZGF0YVNvdXJjZSA9IHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlci5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5MYW5ndWFnZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5uYW1lID0gXCJMYW5nS2V5XCJcclxuICAgICAgdGhpcy5MYW5ndWFnZS5sYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLkxhbmd1YWdlLmRhdGFTb3VyY2UgPSB0aGlzLkxhbmd1YWdlTGlzdFxyXG4gICAgICB0aGlzLkxhbmd1YWdlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuTGFuZ3VhZ2UuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihTZW5kRW1haWxNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldFNlbmRFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlNlbmRFbWFpbEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwgPSBuZXcgU2VuZEVtYWlsVGVtcGxhdGVNb2RlbCgpO1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5UZW1wbGF0ZUlEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLlRvRW1haWxzID0gUmVzdWx0TW9kZWwuVG9FbWFpbHNcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuTGFuZ0tleSA9IFJlc3VsdE1vZGVsLkxhbmdLZXlcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuRW1haWxQcm92aWRlck5hbWUgPSBSZXN1bHRNb2RlbC5FbWFpbFByb3ZpZGVyTmFtZVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VuZEVtYWlsRnVuY3Rpb24gPSAoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2Uuc2VuZEVtYWlsVGVtcGxhdGUoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vVGVzdCBTZW5kIEVtYWlsXHJcbiAgc2hvd1Rlc3RTZW5kRW1haWxNb2RhbChUZXN0U2VuZEVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRTZW5kRW1haWxUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsLmVtYWlsUHJvdmlkZXJzO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1cclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdFNlbmRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxGb3JtT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTZW5kRW1haWxGdW5jdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxUby5uYW1lID0gXCJUb0VtYWlsXCI7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvLmxhYmVsS2V5ID0gXCJTZW5kVG9cIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsVG8udmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxUby5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5uYW1lID0gXCJFbWFpbFByb3ZpZGVyTmFtZVwiXHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLmxhYmVsS2V5ID0gXCJFbWFpbFNlcnZpY2VQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLmRhdGFTb3VyY2UgPSB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyTGlzdFxyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGVzdFNlbmRFbWFpbE1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcbiAgZ2V0VGVzdFNlbmRFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlRlc3RTZW5kRW1haWxGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsID0gbmV3IEVtYWlsVGVtcGxhdGVUZXN0ZXJNb2RlbCgpO1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5UZW1wbGF0ZUlEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLlRvRW1haWwgPSBSZXN1bHRNb2RlbC5Ub0VtYWlsXHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLkVtYWlsUHJvdmlkZXJOYW1lID0gUmVzdWx0TW9kZWwuRW1haWxQcm92aWRlck5hbWVcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kRW1haWxGdW5jdGlvbiA9IChzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS50ZXN0U2VuZEVtYWlsVGVtcGxhdGUoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vVGVzdCBTZW5kIFNNU1xyXG4gIHNob3dUZXN0U2VuZFNNU01vZGFsKFRlc3RTZW5kU01TTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcblxyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVzdFNNU1RlbXBsYXRlKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuU01TU2VydmljZVByb3ZpZGVyTGlzdCA9IFJlc3VsdC52YWw7XHJcblxyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5UZXN0U2VuZFNNU0Zvcm1cclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU0Zvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTZW5kU01TTW9kZWw7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNGb3JtT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTZW5kU01TRnVuY3Rpb247XHJcblxyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8gPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5uYW1lID0gXCJUb01vYmlsZU51bWJlclwiO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8ubGFiZWxLZXkgPSBcIlNlbmRUb1wiO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8udmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5zaG93QXN0ZXJpc2sgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uc2VsZWN0ZWRDb3VudHJ5SVNPID0gQ291bnRyeS5Vbml0ZWRBcmFiRW1pcmF0ZXNcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLnBob25lVmFsaWRhdGlvbiA9IHRydWVcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLmFsbG93U2VhcmNoID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXIubmFtZSA9IFwiU01TUHJvdmlkZXJOYW1lXCJcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLmxhYmVsS2V5ID0gXCJTTVNTZXJ2aWNlUHJvdmlkZXJcIlxyXG4gICAgICB0aGlzLlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXIuZGF0YVNvdXJjZSA9IHRoaXMuU01TU2VydmljZVByb3ZpZGVyTGlzdFxyXG4gICAgICB0aGlzLlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXIuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRlc3RTZW5kU01TTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0VGVzdFNlbmRTTVNNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5UZXN0U2VuZFNNU0Zvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHNlbmRTTVNUZW1wbGF0ZU1vZGVsID0gbmV3IFNNU1RlbXBsYXRlVGVzdGVyTW9kZWwoKTtcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlRlbXBsYXRlSURfR1VJRCA9IHRoaXMuVGVtcGxhdGVJZDtcclxuICAgIGxldCBpbnRlcm5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBzZW5kU01TVGVtcGxhdGVNb2RlbC5Ub01vYmlsZU51bWJlciA9IGludGVybmF0aW9uYWxOdW1iZXJcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlNNU1Byb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLlNNU1Byb3ZpZGVyTmFtZVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChzZW5kU01TVGVtcGxhdGVNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kU01TRnVuY3Rpb24gPSAoc2VuZFNNU1RlbXBsYXRlTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTZXJ2aWNlLnRlc3RTTVNUZW1wbGF0ZShzZW5kU01TVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImlzRGF0YUxvYWRlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuU2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0zIGJ0bi1saWdodC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0VGVtcGxhdGVNb2RhbChFZGl0VGVtcGxhdGVNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Bhbj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuU2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0zIGJ0bi1saWdodC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dTZW5kRW1haWxNb2RhbChTZW5kRW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wYXBlci1wbGFuZVwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kRW1haWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNlbmRFbWFpbE1vZGFsKFRlc3RTZW5kRW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1iYXJzXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RTZW5kRW1haWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNlbmRTTVNNb2RhbChUZXN0U2VuZFNNU01vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlLW9wZW4tdGV4dCBzbXNcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFNlbmRTTVNcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHZW5lcmF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHZW5lcmF0ZVVwZGF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEta2V5XCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkdlbmVyYXRlVXBkYXRlQ29kZVwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgICAgPCEtLWJlZ2luOjpPcHRpb24tLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpIZWFkaW5nLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUaXRsZS0tPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2VuJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICBFbmdsaXNoOlxyXG4gICAgICAgICAgICAgICAgICAgIHt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLmVtYWlsU3ViamVjdC5lbmdsaXNofX1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0RW1haWwnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBidG4taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpJdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS04MDAgZmxleC1ncm93LTEgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUhlYWRlci5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEJvZHkuZW5nbGlzaH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1kYXJrLXNraW4gcHQtN1wiIGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLnRlbXBsYXRlRW1haWxCYXNlRm9vdGVyLmVuZ2xpc2h9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6U2VsZWN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6T3B0aW9uLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8IS0tYmVnaW46Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1jZW50ZXIgcm91bmRlZC0zIGJnLWxpZ2h0IHB5LTEwIHB4LTEwIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkhlYWRpbmctLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRpdGxlLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL05vdGlmaWNhdGlvbnMvRWRpdEVtYWlsJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnYXInXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBtYi01IGZ3LWJvbGRlc3QgZnMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFyYWJpYzpcclxuICAgICAgICAgICAgICAgICAgICB7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbFN1YmplY3QuYXJhYmljfX1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2FyJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LWdyYXktODAwIGZsZXgtZ3Jvdy0xIHBlLTMgYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8udGVtcGxhdGVFbWFpbEJhc2VIZWFkZXIuYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLmVtYWlsQm9keS5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZGFyay1za2luIHB0LTdcIiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUZvb3Rlci5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlNlbGVjdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC02XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB5LTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgRW5nbGlzaDpTTVNcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLWljb25cIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRTTVMnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbiBmb250LXNpemUtMThcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtb2JpbGUtdHh0XCI+e3tUZW1wbGF0ZUluZm8uc21zVGVtcGxhdGVJbmZvLnNtcy5lbmdsaXNofX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHktMTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtcHJpbWFyeSBtYi01IGZ3LWJvbGRlc3QgZnMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICBBcmFiaWM6U01TXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0U01TJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnYXInXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW4gZm9udC1zaXplLTE4XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtb2JpbGUtdHh0IGFyXCI+ICB7e1RlbXBsYXRlSW5mby5zbXNUZW1wbGF0ZUluZm8uc21zLmFyYWJpY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG48IS0tIHNlbmQgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjU2VuZEVtYWlsTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRFbWFpbFRlbXBsYXRlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlNlbmRFbWFpbEZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJUb1wiIFtncm91cF09XCJTZW5kRW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxhbmd1YWdlXCIgW2dyb3VwXT1cIlNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVtYWlsU2VydmljZVByb3ZpZGVyXCIgW2dyb3VwXT1cIlNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlU2VuZEVtYWlsRm9ybSBpZD1cIkNsb3NlU2VuZEVtYWlsRm9ybVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZXN0IHNtcyBFbWFpbCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNUZXN0U2VuZFNNU01vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZFNNU1wiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJUZXN0U2VuZFNNU0Zvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtUGhvbmUgW29wdGlvbnNdPVwiVGVzdFNlbmRTTVNUb1wiIFtncm91cF09XCJUZXN0U2VuZFNNU0Zvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1QaG9uZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiVGVzdFNlbmRTTVNGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICAgICAgS2luZGx5IG5vdGUgdGhhdCB0aGVzZSBhdHRyaWJ1dGVzIGFyZSByZXNlcnZlZFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lRU48L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk5hbWVBUjwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+U3ViamVjdDwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TGFuZ0tleTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TW9iaWxlPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5FbWFpbDwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RGF0ZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+VGltZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RGF0ZVRpbWU8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlVGVzdFNlbmRTTVNGb3JtIGlkPVwiQ2xvc2VUZXN0U2VuZFNNU0Zvcm1cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZXN0IFNlbmQgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVGVzdFNlbmRFbWFpbE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZEVtYWlsXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlRlc3RTZW5kRW1haWxGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJUZXN0U2VuZEVtYWlsVG9cIiBbZ3JvdXBdPVwiVGVzdFNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlclwiIFtncm91cF09XCJUZXN0U2VuZEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJLZXlNYXBOb3RlXCIpfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TmFtZUVOPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lQVI8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlN1YmplY3Q8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkxhbmdLZXk8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk1vYmlsZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RW1haWw8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlRpbWU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGVUaW1lPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVRlc3RTZW5kRW1haWxGb3JtIGlkPVwiQ2xvc2VUZXN0U2VuZEVtYWlsRm9ybVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBlZGl0IE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRUZW1wbGF0ZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0VGVtcGxhdGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRWRpdE5hbWVcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTeXNOYW1lXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0T3JnYW5pemF0aW9uXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRMYW5ndWFnZU1vZGVcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdENhdGVnb3J5XCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRNYXN0ZXJMYXlvdXRcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNFbWFpbFwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzU21zXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1wiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRUZW1wbGF0ZU1vZGFsIGlkPVwiQ2xvc2VFZGl0VGVtcGxhdGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gR2VuZXJhdGVDb2RlIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0dlbmVyYXRlQ29kZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIlJvd1wiPlxyXG4gICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkdlbmVyYXRlQ29kZVRleHRBcmVhXCIgW2dyb3VwXT1cIkdlbmVyYXRlQ29kZUZvcm1cIiAjR2VuZXJhdGVDb2RlSW5wdXQ+XHJcbiAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUdlbmVyYXRlQ29kZU1vZGFsIGlkPVwiQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvcHlUb0NsaXBib2FyZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19