@hmcts/ccd-case-ui-toolkit 7.0.0-NodeAndNgUpgrades.1 → 7.0.0-NodeAndNgUpgrades.1.1.1

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 (157) hide show
  1. package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +1 -1
  2. package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +8 -8
  3. package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +1 -1
  4. package/esm2020/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +2 -2
  5. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +1 -1
  6. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +1 -1
  7. package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +13 -13
  8. package/esm2020/lib/shared/components/case-editor/services/case.notifier.mjs +1 -8
  9. package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +1 -1
  10. package/esm2020/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +1 -1
  11. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +5 -5
  12. package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +1 -1
  13. package/esm2020/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +1 -1
  14. package/esm2020/lib/shared/components/create-case-filters/create-case-filters.component.mjs +15 -10
  15. package/esm2020/lib/shared/components/event-trigger/event-trigger.component.mjs +1 -1
  16. package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +3 -3
  17. package/esm2020/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +1 -1
  18. package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +2 -2
  19. package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +4 -4
  20. package/esm2020/lib/shared/components/palette/base-field/field-write.component.mjs +2 -2
  21. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +3 -3
  22. package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +2 -2
  23. package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +2 -2
  24. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +2 -2
  25. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +2 -2
  26. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +2 -2
  27. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +2 -2
  28. package/esm2020/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +1 -1
  29. package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +3 -3
  30. package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +22 -22
  31. package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +4 -4
  32. package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +8 -8
  33. package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +3 -3
  34. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +42 -23
  35. package/esm2020/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +16 -2
  36. package/esm2020/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +1 -1
  37. package/esm2020/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +1 -1
  38. package/esm2020/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +3 -3
  39. package/esm2020/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +5 -5
  40. package/esm2020/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +3 -3
  41. package/esm2020/lib/shared/components/palette/palette.module.mjs +5 -6
  42. package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +4 -4
  43. package/esm2020/lib/shared/components/search-result/search-result.component.mjs +2 -2
  44. package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +15 -4
  45. package/esm2020/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +4 -4
  46. package/esm2020/lib/shared/directives/substitutor/label-substitutor.directive.mjs +3 -3
  47. package/esm2020/lib/shared/domain/case-edit/case-edit.model.mjs +1 -1
  48. package/esm2020/lib/shared/domain/definition/jurisdiction.model.mjs +1 -1
  49. package/esm2020/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +1 -1
  50. package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +1 -1
  51. package/esm2020/lib/shared/services/fields/fields.purger.mjs +9 -9
  52. package/esm2020/lib/shared/services/fields/fields.utils.mjs +6 -6
  53. package/esm2020/lib/shared/services/form/form-error.service.mjs +1 -1
  54. package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +5 -2
  55. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +156 -114
  56. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  57. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +154 -114
  58. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  59. package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts +3 -3
  60. package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts.map +1 -1
  61. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +5 -5
  62. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  63. package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts +2 -2
  64. package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts.map +1 -1
  65. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +2 -2
  66. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -1
  67. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +3 -3
  68. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  69. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +2 -2
  70. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  71. package/lib/shared/components/case-editor/case-editor.module.d.ts +8 -8
  72. package/lib/shared/components/case-editor/services/case.notifier.d.ts.map +1 -1
  73. package/lib/shared/components/case-editor/services/page-validation.service.d.ts +3 -3
  74. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
  75. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts +2 -2
  76. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -1
  77. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +4 -4
  78. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  79. package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +2 -2
  80. package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts.map +1 -1
  81. package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +2 -2
  82. package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts.map +1 -1
  83. package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts +6 -4
  84. package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts.map +1 -1
  85. package/lib/shared/components/event-trigger/event-trigger.component.d.ts +2 -2
  86. package/lib/shared/components/event-trigger/event-trigger.component.d.ts.map +1 -1
  87. package/lib/shared/components/palette/address/write-address-field.component.d.ts +3 -3
  88. package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
  89. package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts +2 -2
  90. package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts.map +1 -1
  91. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts +3 -3
  92. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
  93. package/lib/shared/components/palette/base-field/field-read.component.d.ts +2 -2
  94. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  95. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +2 -2
  96. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
  97. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +2 -2
  98. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  99. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +2 -2
  100. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  101. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +2 -2
  102. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  103. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -2
  104. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  105. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +2 -2
  106. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  107. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +2 -2
  108. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  109. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +2 -2
  110. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +6 -6
  111. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  112. package/lib/shared/components/palette/case-link/write-case-link-field.component.d.ts +2 -2
  113. package/lib/shared/components/palette/case-link/write-case-link-field.component.d.ts.map +1 -1
  114. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +3 -3
  115. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  116. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts +3 -3
  117. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
  118. package/lib/shared/components/palette/document/write-document-field.component.d.ts +8 -4
  119. package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
  120. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts +5 -3
  121. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts.map +1 -1
  122. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +2 -2
  123. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
  124. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +2 -2
  125. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
  126. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +2 -2
  127. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  128. package/lib/shared/components/palette/organisation/write-organisation-field.component.d.ts +2 -2
  129. package/lib/shared/components/palette/organisation/write-organisation-field.component.d.ts.map +1 -1
  130. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  131. package/lib/shared/components/search-filters/search-filters.component.d.ts +3 -3
  132. package/lib/shared/components/search-filters/search-filters.component.d.ts.map +1 -1
  133. package/lib/shared/components/search-result/search-result.component.d.ts +3 -3
  134. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
  135. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts +4 -4
  136. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -1
  137. package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts +2 -2
  138. package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts.map +1 -1
  139. package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts +2 -2
  140. package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts.map +1 -1
  141. package/lib/shared/domain/case-edit/case-edit.model.d.ts +2 -2
  142. package/lib/shared/domain/case-edit/case-edit.model.d.ts.map +1 -1
  143. package/lib/shared/domain/definition/jurisdiction.model.d.ts +1 -0
  144. package/lib/shared/domain/definition/jurisdiction.model.d.ts.map +1 -1
  145. package/lib/shared/pipes/complex/ccd-page-fields.pipe.d.ts +2 -2
  146. package/lib/shared/pipes/complex/ccd-page-fields.pipe.d.ts.map +1 -1
  147. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts +2 -2
  148. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
  149. package/lib/shared/services/fields/fields.purger.d.ts +4 -4
  150. package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
  151. package/lib/shared/services/fields/fields.utils.d.ts +6 -6
  152. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  153. package/lib/shared/services/form/form-error.service.d.ts +2 -2
  154. package/lib/shared/services/form/form-error.service.d.ts.map +1 -1
  155. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts +3 -2
  156. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  157. package/package.json +2 -3
@@ -1,5 +1,5 @@
1
1
  import { Component } from '@angular/core';
2
- import { UntypedFormGroup } from '@angular/forms';
2
+ import { FormGroup } from '@angular/forms';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { CaseEditDataService } from '../../../commons/case-edit-data/case-edit-data.service';
5
5
  import { FieldsUtils } from '../../../services/fields';
@@ -157,7 +157,7 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
157
157
  this.caseEditDataService = caseEditDataService;
158
158
  this.caseFlagFieldState = CaseFlagFieldState;
159
159
  this.errorMessages = [];
160
- this.caseFlagParentFormGroup = new UntypedFormGroup({});
160
+ this.caseFlagParentFormGroup = new FormGroup({});
161
161
  this.flagCommentsOptional = false;
162
162
  this.listOfValues = null;
163
163
  this.allCaseFlagStagesCompleted = false;
@@ -174,11 +174,11 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
174
174
  if (this.formGroup && this.formGroup.get(this.caseField.id)) {
175
175
  this.formGroup.removeControl(this.caseField.id);
176
176
  }
177
- // From this point, this.formGroup refers to the UntypedFormGroup for the FlagLauncher field, not the parent UntypedFormGroup
178
- this.formGroup = this.registerControl(new UntypedFormGroup({}, {
177
+ // From this point, this.formGroup refers to the FormGroup for the FlagLauncher field, not the parent FormGroup
178
+ this.formGroup = this.registerControl(new FormGroup({}, {
179
179
  validators: (_) => {
180
180
  if (!this.allCaseFlagStagesCompleted) {
181
- // Return an error to mark the UntypedFormGroup as invalid if not all Case Flag stages have been completed
181
+ // Return an error to mark the FormGroup as invalid if not all Case Flag stages have been completed
182
182
  return { notAllCaseFlagStagesCompleted: true };
183
183
  }
184
184
  return null;
@@ -227,7 +227,7 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
227
227
  onCaseFlagStateEmitted(caseFlagState) {
228
228
  this.caseEditDataService.clearFormValidationErrors();
229
229
  // If the current state is CaseFlagFieldState.FLAG_LOCATION and a flag location (a Flags instance) has been selected,
230
- // set the parent Case Flag UntypedFormGroup for this component's children by using the provided pathToFlagsFormGroup, and
230
+ // set the parent Case Flag FormGroup for this component's children by using the provided pathToFlagsFormGroup, and
231
231
  // set the selected flag location on this component
232
232
  if (caseFlagState.currentCaseFlagFieldState === CaseFlagFieldState.FLAG_LOCATION
233
233
  && caseFlagState.selectedFlagsLocation
@@ -245,7 +245,7 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
245
245
  this.listOfValues = caseFlagState.listOfValues;
246
246
  }
247
247
  // If the current state is CaseFlagFieldState.FLAG_MANAGE_CASE_FLAGS and a flag has been selected, set the parent
248
- // Case Flag UntypedFormGroup for this component's children by using the provided pathToFlagsFormGroup
248
+ // Case Flag FormGroup for this component's children by using the provided pathToFlagsFormGroup
249
249
  if (caseFlagState.currentCaseFlagFieldState === CaseFlagFieldState.FLAG_MANAGE_CASE_FLAGS
250
250
  && caseFlagState.selectedFlag
251
251
  && caseFlagState.selectedFlag.pathToFlagsFormGroup) {
@@ -382,8 +382,8 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
382
382
  if (flagsCaseFieldValue) {
383
383
  const flagDetailToUpdate = flagsCaseFieldValue.details.find(detail => detail.id === this.selectedFlag.flagDetailDisplay.flagDetail.id);
384
384
  if (flagDetailToUpdate) {
385
- flagDetailToUpdate.value.flagComment = this.caseFlagParentFormGroup.value.flagComments
386
- ? this.caseFlagParentFormGroup.value.flagComments
385
+ flagDetailToUpdate.value.flagComment = this.caseFlagParentFormGroup.value['flagComments']
386
+ ? this.caseFlagParentFormGroup.value['flagComments']
387
387
  : null;
388
388
  flagDetailToUpdate.value.status = this.selectedFlag.flagDetailDisplay.flagDetail.status;
389
389
  flagDetailToUpdate.value.dateTimeModified = new Date().toISOString();
@@ -408,12 +408,12 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
408
408
  this.flagCommentsOptional = true;
409
409
  }
410
410
  /**
411
- * Set the parent {@link UntypedFormGroup} for this component's children, depending on the `Flags` {@link CaseField} instance
412
- * to which data should be attached. **Note:** The parent is not _this_ component's `UntypedFormGroup` (as might otherwise be
411
+ * Set the parent {@link FormGroup} for this component's children, depending on the `Flags` {@link CaseField} instance
412
+ * to which data should be attached. **Note:** The parent is not _this_ component's `FormGroup` (as might otherwise be
413
413
  * expected) because this component is not expected to have a value, given it is used for the empty `FlagLauncher` base
414
414
  * field type.
415
415
  *
416
- * @param pathToFlagsFormGroup The dot-delimited string that is the path to the `UntypedFormGroup` for a `Flags` instance
416
+ * @param pathToFlagsFormGroup The dot-delimited string that is the path to the `FormGroup` for a `Flags` instance
417
417
  */
418
418
  setCaseFlagParentFormGroup(pathToFlagsFormGroup) {
419
419
  this.caseFlagParentFormGroup = this.formGroup.parent.get(pathToFlagsFormGroup);
@@ -422,19 +422,19 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
422
422
  return {
423
423
  name: this.flagName,
424
424
  // Currently, subTypeValue and subTypeKey are applicable only to language flag types
425
- subTypeValue: this.caseFlagParentFormGroup.value.languageSearchTerm
426
- ? this.caseFlagParentFormGroup.value.languageSearchTerm.value
427
- : this.caseFlagParentFormGroup.value.manualLanguageEntry
428
- ? this.caseFlagParentFormGroup.value.manualLanguageEntry
425
+ subTypeValue: this.caseFlagParentFormGroup.value['languageSearchTerm']
426
+ ? this.caseFlagParentFormGroup.value['languageSearchTerm'].value
427
+ : this.caseFlagParentFormGroup.value['mmanualLanguageEntry']
428
+ ? this.caseFlagParentFormGroup.value['mmanualLanguageEntry']
429
429
  : null,
430
430
  // For user-entered (i.e. non-Reference Data) languages, there is no key
431
- subTypeKey: this.caseFlagParentFormGroup.value.languageSearchTerm
432
- ? this.caseFlagParentFormGroup.value.languageSearchTerm.key
431
+ subTypeKey: this.caseFlagParentFormGroup.value['languageSearchTerm']
432
+ ? this.caseFlagParentFormGroup.value['languageSearchTerm'].key
433
433
  : null,
434
- otherDescription: this.flagCode === this.otherFlagTypeCode && this.caseFlagParentFormGroup.value.otherFlagTypeDescription
435
- ? this.caseFlagParentFormGroup.value.otherFlagTypeDescription
434
+ otherDescription: this.flagCode === this.otherFlagTypeCode && this.caseFlagParentFormGroup.value['otherFlagTypeDescription']
435
+ ? this.caseFlagParentFormGroup.value['otherFlagTypeDescription']
436
436
  : null,
437
- flagComment: this.caseFlagParentFormGroup.value.flagComments ? this.caseFlagParentFormGroup.value.flagComments : null,
437
+ flagComment: this.caseFlagParentFormGroup.value['flagComments'] ? this.caseFlagParentFormGroup.value['flagComments'] : null,
438
438
  dateTimeCreated: new Date().toISOString(),
439
439
  path: this.flagPath,
440
440
  hearingRelevant: this.hearingRelevantFlag ? 'Yes' : 'No',
@@ -466,4 +466,4 @@ WriteCaseFlagFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
466
466
  type: Component,
467
467
  args: [{ selector: 'ccd-write-case-flag-field', template: "<!-- Error message summary -->\n<div *ngIf=\"errorMessages.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div *ngFor=\"let errorMessage of errorMessages\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(errorMessage.fieldId)\" class=\"validation-error\">{{errorMessage.description | rpxTranslate}}</a>\n </li>\n </ul>\n </div>\n</div>\n<div *ngIf=\"!isDisplayContextParameterUpdate\" class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"fieldState\">\n <div id=\"create-flag-caption\" class=\"govuk-caption-l\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n {{createFlagCaption | rpxTranslate}}\n </div>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_LOCATION\">\n <ccd-select-flag-location [formGroup]=\"caseFlagParentFormGroup\" [flagsData]=\"flagsData\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-select-flag-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_TYPE\">\n <ccd-select-flag-type [formGroup]=\"caseFlagParentFormGroup\" [jurisdiction]=\"jurisdiction\" [caseTypeId]=\"caseTypeId\"\n [hmctsServiceId]=\"hmctsServiceId\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n (flagCommentsOptionalEmitter)=\"onFlagCommentsOptionalEmitted($event)\"></ccd-select-flag-type>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_LANGUAGE_INTERPRETER\">\n <ccd-search-language-interpreter [formGroup]=\"caseFlagParentFormGroup\" [languages]=\"listOfValues\" [flagCode]=\"flagCode\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-search-language-interpreter>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_COMMENTS\">\n <ccd-add-comments [formGroup]=\"caseFlagParentFormGroup\" [optional]=\"flagCommentsOptional\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-add-comments>\n </ng-container>\n </div>\n</div>\n<div *ngIf=\"isDisplayContextParameterUpdate\" class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"fieldState\">\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_MANAGE_CASE_FLAGS\">\n <ccd-manage-case-flags [formGroup]=\"caseFlagParentFormGroup\" [flagsData]=\"flagsData\" [caseTitle]=\"caseTitle\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-manage-case-flags>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_UPDATE\">\n <ccd-update-flag [formGroup]=\"caseFlagParentFormGroup\" [selectedFlag]=\"selectedFlag\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-update-flag>\n </ng-container>\n </div>\n</div>\n", styles: [".validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
468
468
  }], function () { return [{ type: i1.ActivatedRoute }, { type: i2.CaseEditDataService }]; }, null); })();
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUUzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7O0lDSHpFLDhCQUFrRixZQUFBLFNBQUEsV0FBQTtJQUd6RSw2T0FBUyxlQUFBLHNEQUE0QyxDQUFBLElBQUM7SUFBMEIsWUFBMkM7O0lBQUEsaUJBQUksRUFBQSxFQUFBLEVBQUE7OztJQUEvQyxlQUEyQztJQUEzQyx1RUFBMkM7OztJQVB0SSw4QkFBcUssWUFBQTtJQUVqSyxZQUNGOztJQUFBLGlCQUFLO0lBQ0wsa0ZBTU07SUFDUixpQkFB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QUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7c0dBOVVVLDJCQUEyQjs4RUFBM0IsMkJBQTJCO1FDZHhDLDRFQVdNO1FBQ04sNkVBd0JNO1FBQ04sNEVBV007O1FBaERBLG1EQUE4QjtRQVk5QixlQUFzQztRQUF0QywyREFBc0M7UUF5QnRDLGVBQXFDO1FBQXJDLDBEQUFxQzs7dUZEdkI5QiwyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENhc2VFZGl0RGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb25zL2Nhc2UtZWRpdC1kYXRhL2Nhc2UtZWRpdC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkLCBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSwgRmxhZ0RldGFpbCwgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCwgRmxhZ1BhdGgsIEZsYWdzV2l0aEZvcm1Hcm91cFBhdGggfSBmcm9tICcuL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnU3RhdHVzLCBDYXNlRmxhZ1RleHQgfSBmcm9tICcuL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNhc2UtZmxhZy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUNhc2VGbGFnRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XG4gIHB1YmxpYyBmaWVsZFN0YXRlOiBudW1iZXI7XG4gIHB1YmxpYyBjYXNlRmxhZ0ZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGU7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlRmxhZ0NhcHRpb246IENhc2VGbGFnVGV4dDtcbiAgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRGbGFnOiBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoO1xuICBwdWJsaWMgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoO1xuICBwdWJsaWMgY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gIHB1YmxpYyBmbGFnQ29tbWVudHNPcHRpb25hbCA9IGZhbHNlO1xuICBwdWJsaWMganVyaXNkaWN0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlVHlwZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBobWN0c1NlcnZpY2VJZDogc3RyaW5nO1xuICBwdWJsaWMgZmxhZ05hbWU6IHN0cmluZztcbiAgcHVibGljIGZsYWdQYXRoOiBGbGFnUGF0aFtdO1xuICBwdWJsaWMgaGVhcmluZ1JlbGV2YW50RmxhZzogYm9vbGVhbjtcbiAgcHVibGljIGZsYWdDb2RlOiBzdHJpbmc7XG4gIHB1YmxpYyBsaXN0T2ZWYWx1ZXM6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gbnVsbDtcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjYXNlVGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBhbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZU1vZGUgPSAnI0FSR1VNRU5UKFVQREFURSknO1xuICAvLyBDb2RlIGZvciBcIk90aGVyXCIgZmxhZyB0eXBlIGFzIGRlZmluZWQgaW4gUmVmZXJlbmNlIERhdGFcbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckZsYWdUeXBlQ29kZSA9ICdPVDAwMDEnO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZU5hbWVNaXNzaW5nID0gJ0Nhc2UgbmFtZSBtaXNzaW5nJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0RGF0YVNlcnZpY2U6IENhc2VFZGl0RGF0YVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIENoZWNrIGZvciBleGlzdGluZyBGbGFnTGF1bmNoZXIgY29udHJvbCBpbiBwYXJlbnQgYW5kIHJlbW92ZSBpdCAtIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVuc3VyZSBpdHMgaW52YWxpZGl0eVxuICAgIC8vIGlzIHNldCBjb3JyZWN0bHkgYXQgdGhlIHN0YXJ0LCB3aGVuIHRoZSBjb21wb25lbnQgaXMgcmVsb2FkZWQgYW5kIHRoZSBjb250cm9sIGlzIHJlLXJlZ2lzdGVyZWQuIE90aGVyd2lzZSwgdGhlXG4gICAgLy8gdmFsaWRhdG9yIHN0YXRlIGdldHMgY2FycmllZCBvdmVyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmNhc2VGaWVsZC5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2wodGhpcy5jYXNlRmllbGQuaWQpO1xuICAgIH1cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQsIHRoaXMuZm9ybUdyb3VwIHJlZmVycyB0byB0aGUgVW50eXBlZEZvcm1Hcm91cCBmb3IgdGhlIEZsYWdMYXVuY2hlciBmaWVsZCwgbm90IHRoZSBwYXJlbnQgVW50eXBlZEZvcm1Hcm91cFxuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IFVudHlwZWRGb3JtR3JvdXAoe30sIHtcbiAgICAgIHZhbGlkYXRvcnM6IChfOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuYWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQpIHtcbiAgICAgICAgICAvLyBSZXR1cm4gYW4gZXJyb3IgdG8gbWFyayB0aGUgVW50eXBlZEZvcm1Hcm91cCBhcyBpbnZhbGlkIGlmIG5vdCBhbGwgQ2FzZSBGbGFnIHN0YWdlcyBoYXZlIGJlZW4gY29tcGxldGVkXG4gICAgICAgICAgcmV0dXJuIHsgbm90QWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQ6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KSwgdHJ1ZSkgYXMgVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIHRoaXMuY3JlYXRlRmxhZ0NhcHRpb24gPSBDYXNlRmxhZ1RleHQuQ0FQVElPTjtcbiAgICAvLyBHZXQgdGhlIGNhc2UgdHlwZSBJRCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGEgKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZ1xuICAgIC8vIHR5cGVzIGZvciBhIGNhc2UpXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZSkge1xuICAgICAgdGhpcy5jYXNlVHlwZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmlkO1xuICAgICAgLy8gR2V0IHRoZSBqdXJpc2RpY3Rpb24gKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZyB0eXBlcyBpZiB1bmFibGUgdG8gZGV0ZXJtaW5lIHVzaW5nIGNhc2UgdHlwZSBJRClcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uKSB7XG4gICAgICAgIHRoaXMuanVyaXNkaWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCBhbGwgZmxhZ3MtcmVsYXRlZCBkYXRhIGZyb20gdGhlIENhc2VFdmVudFRyaWdnZXIgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIpIHtcbiAgICAgIC8vIEdldCB0aGUgSE1DVFNTZXJ2aWNlSWQgZnJvbSBzdXBwbGVtZW50YXJ5IGRhdGEsIGlmIGl0IGV4aXN0cyAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnIHR5cGVzIGluXG4gICAgICAvLyB0aGUgZmlyc3QgaW5zdGFuY2UsIG9ubHkgZmFsbGluZyBiYWNrIG9uIGNhc2UgdHlwZSBJRCBvciBqdXJpc2lkaWN0aW9uIGlmIGl0J3Mgbm90IHByZXNlbnQpXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGFcbiAgICAgICAgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGEuSE1DVFNTZXJ2aWNlSWQpIHtcbiAgICAgICAgdGhpcy5obWN0c1NlcnZpY2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuc3VwcGxlbWVudGFyeV9kYXRhLkhNQ1RTU2VydmljZUlkO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykge1xuICAgICAgICB0aGlzLmZsYWdzRGF0YSA9ICgodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykgYXMgQ2FzZUZpZWxkW10pXG4gICAgICAgICAgLnJlZHVjZSgoZmxhZ3MsIGNhc2VGaWVsZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKGZsYWdzLCBjYXNlRmllbGQsIGNhc2VGaWVsZC5pZCwgY2FzZUZpZWxkKTtcbiAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgLy8gU2V0IGJvb2xlYW4gaW5kaWNhdGluZyB0aGUgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciBpcyBcInVwZGF0ZVwiXG4gICAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSA9XG4gICAgICAgICAgdGhpcy5zZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSgodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykgYXMgQ2FzZUZpZWxkW10pO1xuXG4gICAgICAgIC8vIFNldCBzdGFydGluZyBmaWVsZCBzdGF0ZVxuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUgPyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyA6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OO1xuICAgICAgICAvLyBHZXQgY2FzZSB0aXRsZSwgdG8gYmUgdXNlZCBieSBjaGlsZCBjb21wb25lbnRzXG4gICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlVGl0bGUkLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogdGl0bGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYXNlVGl0bGUgPSB0aXRsZS5sZW5ndGggPiAwID8gdGl0bGUgOiB0aGlzLmNhc2VOYW1lTWlzc2luZztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGRzLnNvbWUoXG4gICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gdGhpcy51cGRhdGVNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKGNhc2VGbGFnU3RhdGU6IENhc2VGbGFnU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OIGFuZCBhIGZsYWcgbG9jYXRpb24gKGEgRmxhZ3MgaW5zdGFuY2UpIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgIC8vIHNldCB0aGUgcGFyZW50IENhc2UgRmxhZyBVbnR5cGVkRm9ybUdyb3VwIGZvciB0aGlzIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHVzaW5nIHRoZSBwcm92aWRlZCBwYXRoVG9GbGFnc0Zvcm1Hcm91cCwgYW5kXG4gICAgLy8gc2V0IHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIG9uIHRoaXMgY29tcG9uZW50XG4gICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT05cbiAgICAgICYmIGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uXG4gICAgICAmJiBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cCkge1xuICAgICAgdGhpcy5zZXRDYXNlRmxhZ1BhcmVudEZvcm1Hcm91cChjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbiA9IGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLCBjYWNoZSB0aGUgZmxhZyBuYW1lLCBwYXRoLCBoZWFyaW5nIHJlbGV2YW50IGluZGljYXRvciwgY29kZSxcbiAgICAvLyBhbmQgXCJsaXN0IG9mIHZhbHVlc1wiIChjdXJyZW50bHkgYXBwbGljYWJsZSB0byBsYW5ndWFnZSBmbGFnIHR5cGVzKVxuICAgIGlmIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUpIHtcbiAgICAgIHRoaXMuZmxhZ05hbWUgPSBjYXNlRmxhZ1N0YXRlLmZsYWdOYW1lO1xuICAgICAgdGhpcy5mbGFnUGF0aCA9IGNhc2VGbGFnU3RhdGUuZmxhZ1BhdGg7XG4gICAgICB0aGlzLmhlYXJpbmdSZWxldmFudEZsYWcgPSBjYXNlRmxhZ1N0YXRlLmhlYXJpbmdSZWxldmFudEZsYWc7XG4gICAgICB0aGlzLmZsYWdDb2RlID0gY2FzZUZsYWdTdGF0ZS5mbGFnQ29kZTtcbiAgICAgIHRoaXMubGlzdE9mVmFsdWVzID0gY2FzZUZsYWdTdGF0ZS5saXN0T2ZWYWx1ZXM7XG4gICAgfVxuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTIGFuZCBhIGZsYWcgaGFzIGJlZW4gc2VsZWN0ZWQsIHNldCB0aGUgcGFyZW50XG4gICAgLy8gQ2FzZSBGbGFnIFVudHlwZWRGb3JtR3JvdXAgZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgdXNpbmcgdGhlIHByb3ZpZGVkIHBhdGhUb0ZsYWdzRm9ybUdyb3VwXG4gICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1NcbiAgICAgICYmIGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnXG4gICAgICAmJiBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cCkge1xuICAgICAgdGhpcy5zZXRDYXNlRmxhZ1BhcmVudEZvcm1Hcm91cChjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cCk7XG4gICAgfVxuXG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gY2FzZUZsYWdTdGF0ZS5lcnJvck1lc3NhZ2VzO1xuICAgIHRoaXMuc2VsZWN0ZWRGbGFnID0gY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWc7XG4gICAgLy8gVmFsaWRhdGlvbiBzdWNjZWVkZWQ7IHByb2NlZWQgdG8gbmV4dCBzdGF0ZSBvciBmaW5hbCByZXZpZXcgc3RhZ2UgKFwiQ2hlY2sgeW91ciBhbnN3ZXJzXCIpXG4gICAgaWYgKHRoaXMuZXJyb3JNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTIG9yIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSwgbW92ZSB0byBmaW5hbFxuICAgICAgLy8gcmV2aWV3IHN0YWdlXG4gICAgICBpZiAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyB8fFxuICAgICAgICBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSkge1xuICAgICAgICB0aGlzLm1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoKTtcbiAgICAgICAgLy8gRG9uJ3QgbW92ZSB0byBuZXh0IHN0YXRlIGlmIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSBhbmQgdGhlIGZsYWcgdHlwZSBpcyBhIHBhcmVudCAtIHRoaXNcbiAgICAgICAgLy8gbWVhbnMgdGhlIHVzZXIgbmVlZHMgdG8gc2VsZWN0IGZyb20gdGhlIG5leHQgc2V0IG9mIGZsYWcgdHlwZXMgYmVmb3JlIHRoZXkgY2FuIG1vdmUgb25cbiAgICAgIH0gZWxzZSBpZiAoIWNhc2VGbGFnU3RhdGUuaXNQYXJlbnRGbGFnVHlwZSkge1xuICAgICAgICAvLyBQcm9jZWVkIHRvIG5leHQgc3RhdGVcbiAgICAgICAgdGhpcy5wcm9jZWVkVG9OZXh0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJvY2VlZFRvTmV4dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0F0RmluYWxTdGF0ZSgpKSB7XG4gICAgICAvLyBTa2lwIHRoZSBcImxhbmd1YWdlIGludGVycHJldGVyXCIgc3RhdGUgaWYgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFIGFuZCB0aGUgZmxhZyB0eXBlIGRvZXNuJ3RcbiAgICAgIC8vIGhhdmUgYSBcImxpc3Qgb2YgdmFsdWVzXCIgLSBjdXJyZW50bHksIHRoaXMgaXMgcHJlc2VudCBvbmx5IGZvciB0aG9zZSBmbGFnIHR5cGVzIHRoYXQgcmVxdWlyZSBsYW5ndWFnZSBpbnRlcnByZXRlclxuICAgICAgLy8gc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFICYmICF0aGlzLmxpc3RPZlZhbHVlcykge1xuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGbGFnc0Nhc2VGaWVsZFZhbHVlKCk6IHZvaWQge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogc3dpdGNoLWRlZmF1bHRcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRTdGF0ZSkge1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUzpcbiAgICAgICAgdGhpcy5hZGRGbGFnVG9Db2xsZWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEU6XG4gICAgICAgIHRoaXMudXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmxhZ1RvQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBuZXcgZmxhZyBpcyBiZWluZyBhZGRlZCBhdCBhIHRpbWUsIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCBhbmQgcmVtb3ZpbmdcbiAgICAvLyBhbnkgcHJldmlvdXMgZW50cnkgZnJvbSB0aGUgZGV0YWlscyBhcnJheSB3aGVyZSB0aGF0IGVudHJ5IGhhcyBubyBpZCAoaGVuY2UgaXQgaXMgbmV3IC0gYW5kIHRoZXJlIHNob3VsZCBiZSBvbmx5XG4gICAgLy8gb25lIHN1Y2ggZW50cnkpLiAoVGhpcyBzY2VuYXJpbyBvY2N1cnMgaWYgdGhlIHVzZXIgcmVwZWF0cyB0aGUgQ2FzZSBGbGFnIGNyZWF0aW9uIGpvdXJuZXkgYnkgdXNpbmcgdGhlIFwiQ2hhbmdlXCJcbiAgICAvLyBsaW5rIGFuZCBzZWxlY3RzIGVpdGhlciB0aGUgc2FtZSBmbGFnIGxvY2F0aW9uIGFzIGJlZm9yZSBvciBhIGRpZmZlcmVudCBvbmUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byByZW1vdmUgdGhlIG5ldyB2YWx1ZSBmcm9tXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQudmFsdWU7XG4gICAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGluc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGhUb1ZhbHVlLnNsaWNlKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IHZhbHVlID0gdmFsdWVbcGFydF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmRldGFpbHMgJiYgdmFsdWUuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXdGbGFnRGV0YWlsID0gdmFsdWUuZGV0YWlscy5maW5kSW5kZXgoZWxlbWVudCA9PiAhZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG4gICAgICAgIGlmIChpbmRleE9mTmV3RmxhZ0RldGFpbCA+IC0xKSB7XG4gICAgICAgICAgdmFsdWUuZGV0YWlscy5zcGxpY2UoaW5kZXhPZk5ld0ZsYWdEZXRhaWwsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBDYXNlRmllbGQgZm9yIHRoZSBzZWxlY3RlZCBmbGFncyBsb2NhdGlvbiBoYXMgbm8gdmFsdWUsIHNldCBpdCB0byBhbiBlbXB0eSBvYmplY3Qgc28gaXQgY2FuIGJlIHBvcHVsYXRlZFxuICAgIC8vIHdpdGggZmxhZyBkZXRhaWxzXG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWUgPSB7fTtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIGRldGFpbHMgYXJyYXkgaWYgb25lIGRvZXMgbm90IGV4aXN0XG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlLmhhc093blByb3BlcnR5KCdkZXRhaWxzJykpIHtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscyA9IFtdO1xuICAgIH1cbiAgICAvLyBQb3B1bGF0ZSBuZXcgRmxhZ0RldGFpbCBpbnN0YW5jZSBhbmQgYWRkIHRvIHRoZSBGbGFncyBkYXRhIHdpdGhpbiB0aGUgQ2FzZUZpZWxkIGluc3RhbmNlIG9mIHRoZSBzZWxlY3RlZCBmbGFnXG4gICAgLy8gbG9jYXRpb25cbiAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMucHVzaCh7IHZhbHVlOiB0aGlzLnBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCkgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBmbGFnIGlzIGJlaW5nIHVwZGF0ZWQgYXQgYSB0aW1lLCBieSBpdGVyYXRpbmcgdGhyb3VnaCBlYWNoIEZsYWdzIGNhc2UgZmllbGQgYW5kIHJlc2V0dGluZ1xuICAgIC8vIHRoZSBjb21tZW50cywgc3RhdHVzLCBhbmQgZGF0ZS90aW1lIG1vZGlmaWVkIChpZiBwcmVzZW50KSBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgZGV0YWlscyBhcnJheSwgd2l0aCBvcmlnaW5hbCB2YWx1ZXNcbiAgICAvLyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGZvcm1hdHRlZF92YWx1ZSBwcm9wZXJ0eS4gKFRoaXMgc2NlbmFyaW8gb2NjdXJzIGlmIHRoZSB1c2VyIHJlcGVhdHMgdGhlIE1hbmFnZSBDYXNlIEZsYWdcbiAgICAvLyBqb3VybmV5IGJ5IHVzaW5nIHRoZSBcIkNoYW5nZVwiIGxpbmsgYW5kIHNlbGVjdHMgYSBkaWZmZXJlbnQgZmxhZyB0byB1cGRhdGUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSBmb3Igd2hpY2ggdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgdmFsdWVzXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQudmFsdWU7XG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQuZm9ybWF0dGVkX3ZhbHVlO1xuICAgICAgY29uc3QgcGF0aFRvVmFsdWUgPSBpbnN0YW5jZS5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICAgIGlmIChwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICBwYXRoVG9WYWx1ZS5zbGljZShwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZVtwYXJ0XTtcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWVbcGFydF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5kZXRhaWxzICYmIHZhbHVlLmRldGFpbHMubGVuZ3RoID4gMCAmJiBmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5kZXRhaWxzLmZvckVhY2goZmxhZ0RldGFpbCA9PiB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxGbGFnRGV0YWlsID0gZm9ybWF0dGVkVmFsdWUuZGV0YWlscy5maW5kKGRldGFpbCA9PiBkZXRhaWwuaWQgPT09IGZsYWdEZXRhaWwuaWQpO1xuICAgICAgICAgIGlmIChvcmlnaW5hbEZsYWdEZXRhaWwpIHtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnRcbiAgICAgICAgICAgICAgPyBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnRcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5zdGF0dXMgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuc3RhdHVzO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5kYXRlVGltZU1vZGlmaWVkID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmRhdGVUaW1lTW9kaWZpZWRcbiAgICAgICAgICAgICAgPyBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuZGF0ZVRpbWVNb2RpZmllZFxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRGbGFnLmNhc2VGaWVsZC52YWx1ZTtcbiAgICAvLyBVc2UgdGhlIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIHByb3BlcnR5IGZyb20gdGhlIHNlbGVjdGVkIGZsYWcgbG9jYXRpb24gdG8gZHJpbGwgZG93biB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZVxuICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byBhcHBseSBjaGFuZ2VzIHRvXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuc2VsZWN0ZWRGbGFnLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICBpZiAocGF0aC5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgcGF0aC5zbGljZShwYXRoLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlW3BhcnRdKTtcbiAgICB9XG4gICAgaWYgKGZsYWdzQ2FzZUZpZWxkVmFsdWUpIHtcbiAgICAgIGNvbnN0IGZsYWdEZXRhaWxUb1VwZGF0ZSA9IGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscy5maW5kKFxuICAgICAgICBkZXRhaWwgPT4gZGV0YWlsLmlkID09PSB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLmlkKTtcbiAgICAgIGlmIChmbGFnRGV0YWlsVG9VcGRhdGUpIHtcbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLmZsYWdDb21tZW50ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5mbGFnQ29tbWVudHNcbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuZmxhZ0NvbW1lbnRzXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuc3RhdHVzID0gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXM7XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5kYXRlVGltZU1vZGlmaWVkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0F0RmluYWxTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlXG4gICAgICA/IHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXG4gICAgICA6IHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFM7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Vycm9yRWxlbWVudChlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICBodG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlZChfOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZsYWdDb21tZW50c09wdGlvbmFsID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBhcmVudCB7QGxpbmsgVW50eXBlZEZvcm1Hcm91cH0gZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4sIGRlcGVuZGluZyBvbiB0aGUgYEZsYWdzYCB7QGxpbmsgQ2FzZUZpZWxkfSBpbnN0YW5jZVxuICAgKiB0byB3aGljaCBkYXRhIHNob3VsZCBiZSBhdHRhY2hlZC4gKipOb3RlOioqIFRoZSBwYXJlbnQgaXMgbm90IF90aGlzXyBjb21wb25lbnQncyBgVW50eXBlZEZvcm1Hcm91cGAgKGFzIG1pZ2h0IG90aGVyd2lzZSBiZVxuICAgKiBleHBlY3RlZCkgYmVjYXVzZSB0aGlzIGNvbXBvbmVudCBpcyBub3QgZXhwZWN0ZWQgdG8gaGF2ZSBhIHZhbHVlLCBnaXZlbiBpdCBpcyB1c2VkIGZvciB0aGUgZW1wdHkgYEZsYWdMYXVuY2hlcmAgYmFzZVxuICAgKiBmaWVsZCB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aFRvRmxhZ3NGb3JtR3JvdXAgVGhlIGRvdC1kZWxpbWl0ZWQgc3RyaW5nIHRoYXQgaXMgdGhlIHBhdGggdG8gdGhlIGBVbnR5cGVkRm9ybUdyb3VwYCBmb3IgYSBgRmxhZ3NgIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc2V0Q2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAocGF0aFRvRmxhZ3NGb3JtR3JvdXA6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cC5wYXJlbnQuZ2V0KHBhdGhUb0ZsYWdzRm9ybUdyb3VwKSBhcyBVbnR5cGVkRm9ybUdyb3VwO1xuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCk6IEZsYWdEZXRhaWwge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLmZsYWdOYW1lLFxuICAgICAgLy8gQ3VycmVudGx5LCBzdWJUeXBlVmFsdWUgYW5kIHN1YlR5cGVLZXkgYXJlIGFwcGxpY2FibGUgb25seSB0byBsYW5ndWFnZSBmbGFnIHR5cGVzXG4gICAgICBzdWJUeXBlVmFsdWU6IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUubGFuZ3VhZ2VTZWFyY2hUZXJtXG4gICAgICAgID8gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5sYW5ndWFnZVNlYXJjaFRlcm0udmFsdWVcbiAgICAgICAgOiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLm1hbnVhbExhbmd1YWdlRW50cnlcbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUubWFudWFsTGFuZ3VhZ2VFbnRyeVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIC8vIEZvciB1c2VyLWVudGVyZWQgKGkuZS4gbm9uLVJlZmVyZW5jZSBEYXRhKSBsYW5ndWFnZXMsIHRoZXJlIGlzIG5vIGtleVxuICAgICAgc3ViVHlwZUtleTogdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5sYW5ndWFnZVNlYXJjaFRlcm1cbiAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmxhbmd1YWdlU2VhcmNoVGVybS5rZXlcbiAgICAgICAgOiBudWxsLFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbjogdGhpcy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLm90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvblxuICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUub3RoZXJGbGFnVHlwZURlc2NyaXB0aW9uXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGZsYWdDb21tZW50OiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmZsYWdDb21tZW50cyA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuZmxhZ0NvbW1lbnRzIDogbnVsbCxcbiAgICAgIGRhdGVUaW1lQ3JlYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgcGF0aDogdGhpcy5mbGFnUGF0aCxcbiAgICAgIGhlYXJpbmdSZWxldmFudDogdGhpcy5oZWFyaW5nUmVsZXZhbnRGbGFnID8gJ1llcycgOiAnTm8nLFxuICAgICAgZmxhZ0NvZGU6IHRoaXMuZmxhZ0NvZGUsXG4gICAgICBzdGF0dXM6IENhc2VGbGFnU3RhdHVzLkFDVElWRVxuICAgIH0gYXMgRmxhZ0RldGFpbDtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlVG9GaW5hbFJldmlld1N0YWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmxhZ3NDYXNlRmllbGRWYWx1ZSgpO1xuICAgIC8vIENsZWFyIHRoZSBcIm5vdEFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkXCIgZXJyb3JcbiAgICB0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldFRyaWdnZXJTdWJtaXRFdmVudCh0cnVlKTtcbiAgfVxufVxuIiwiPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICB7eydUaGVyZSBpcyBhIHByb2JsZW0nIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9oMj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgKGNsaWNrKT1cIm5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZXJyb3JNZXNzYWdlLmZpZWxkSWQpXCIgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3tlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nU3dpdGNoXT1cImZpZWxkU3RhdGVcIj5cbiAgICA8ZGl2IGlkPVwiY3JlYXRlLWZsYWctY2FwdGlvblwiIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwfVwiPlxuICAgICAge3tjcmVhdGVGbGFnQ2FwdGlvbiB8IHJweFRyYW5zbGF0ZX19XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT05cIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctbG9jYXRpb24gW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEVcIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctdHlwZSBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2p1cmlzZGljdGlvbl09XCJqdXJpc2RpY3Rpb25cIiBbY2FzZVR5cGVJZF09XCJjYXNlVHlwZUlkXCJcbiAgICAgICAgW2htY3RzU2VydmljZUlkXT1cImhtY3RzU2VydmljZUlkXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChmbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZXIpPVwib25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLXR5cGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTEFOR1VBR0VfSU5URVJQUkVURVJcIj5cbiAgICAgIDxjY2Qtc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbbGFuZ3VhZ2VzXT1cImxpc3RPZlZhbHVlc1wiIFtmbGFnQ29kZV09XCJmbGFnQ29kZVwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1zZWFyY2gtbGFuZ3VhZ2UtaW50ZXJwcmV0ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFNcIj5cbiAgICAgIDxjY2QtYWRkLWNvbW1lbnRzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbb3B0aW9uYWxdPVwiZmxhZ0NvbW1lbnRzT3B0aW9uYWxcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtYWRkLWNvbW1lbnRzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJmaWVsZFN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1NcIj5cbiAgICAgIDxjY2QtbWFuYWdlLWNhc2UtZmxhZ3MgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCIgW2Nhc2VUaXRsZV09XCJjYXNlVGl0bGVcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtbWFuYWdlLWNhc2UtZmxhZ3M+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXCI+XG4gICAgICA8Y2NkLXVwZGF0ZS1mbGFnIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbc2VsZWN0ZWRGbGFnXT1cInNlbGVjdGVkRmxhZ1wiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC11cGRhdGUtZmxhZz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7OztJQ0h6RSw4QkFBa0YsWUFBQSxTQUFBLFdBQUE7SUFHekUsNk9BQVMsZUFBQSxzREFBNEMsQ0FBQSxJQUFDO0lBQTBCLFlBQTJDOztJQUFBLGlCQUFJLEVBQUEsRUFBQSxFQUFBOzs7SUFBL0MsZUFBMkM7SUFBM0MsdUVBQTJDOzs7SUFQdEksOEJBQXFLLFlBQUE7SUFFakssWUFDRjs7SUFBQSxpQkFBSztJQUNMLGtGQU1NO0lBQ1IsaUJBQU07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QztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O3NHQTlVVSwyQkFBMkI7OEVBQTNCLDJCQUEyQjtRQ2R4Qyw0RUFXTTtRQUNOLDZFQXdCTTtRQUNOLDRFQVdNOztRQWhEQSxtREFBOEI7UUFZOUIsZUFBc0M7UUFBdEMsMkRBQXNDO1FBeUJ0QyxlQUFxQztRQUFyQywwREFBcUM7O3VGRHZCOUIsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENhc2VFZGl0RGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb25zL2Nhc2UtZWRpdC1kYXRhL2Nhc2UtZWRpdC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkLCBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSwgRmxhZ0RldGFpbCwgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCwgRmxhZ1BhdGgsIEZsYWdzV2l0aEZvcm1Hcm91cFBhdGggfSBmcm9tICcuL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnU3RhdHVzLCBDYXNlRmxhZ1RleHQgfSBmcm9tICcuL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNhc2UtZmxhZy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUNhc2VGbGFnRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIGZpZWxkU3RhdGU6IG51bWJlcjtcbiAgcHVibGljIGNhc2VGbGFnRmllbGRTdGF0ZSA9IENhc2VGbGFnRmllbGRTdGF0ZTtcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVGbGFnQ2FwdGlvbjogQ2FzZUZsYWdUZXh0O1xuICBwdWJsaWMgZmxhZ3NEYXRhOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoW107XG4gIHB1YmxpYyBzZWxlY3RlZEZsYWc6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGg7XG4gIHB1YmxpYyBzZWxlY3RlZEZsYWdzTG9jYXRpb246IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGg7XG4gIHB1YmxpYyBjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBwdWJsaWMgZmxhZ0NvbW1lbnRzT3B0aW9uYWwgPSBmYWxzZTtcbiAgcHVibGljIGp1cmlzZGljdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVR5cGVJZDogc3RyaW5nO1xuICBwdWJsaWMgaG1jdHNTZXJ2aWNlSWQ6IHN0cmluZztcbiAgcHVibGljIGZsYWdOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBmbGFnUGF0aDogRmxhZ1BhdGhbXTtcbiAgcHVibGljIGhlYXJpbmdSZWxldmFudEZsYWc6IGJvb2xlYW47XG4gIHB1YmxpYyBmbGFnQ29kZTogc3RyaW5nO1xuICBwdWJsaWMgbGlzdE9mVmFsdWVzOiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSA9IG51bGw7XG4gIHB1YmxpYyBpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgY2FzZVRpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgYWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSB1cGRhdGVNb2RlID0gJyNBUkdVTUVOVChVUERBVEUpJztcbiAgLy8gQ29kZSBmb3IgXCJPdGhlclwiIGZsYWcgdHlwZSBhcyBkZWZpbmVkIGluIFJlZmVyZW5jZSBEYXRhXG4gIHByaXZhdGUgcmVhZG9ubHkgb3RoZXJGbGFnVHlwZUNvZGUgPSAnT1QwMDAxJztcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VOYW1lTWlzc2luZyA9ICdDYXNlIG5hbWUgbWlzc2luZyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdERhdGFTZXJ2aWNlOiBDYXNlRWRpdERhdGFTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAvLyBDaGVjayBmb3IgZXhpc3RpbmcgRmxhZ0xhdW5jaGVyIGNvbnRyb2wgaW4gcGFyZW50IGFuZCByZW1vdmUgaXQgLSB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBlbnN1cmUgaXRzIGludmFsaWRpdHlcbiAgICAvLyBpcyBzZXQgY29ycmVjdGx5IGF0IHRoZSBzdGFydCwgd2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbG9hZGVkIGFuZCB0aGUgY29udHJvbCBpcyByZS1yZWdpc3RlcmVkLiBPdGhlcndpc2UsIHRoZVxuICAgIC8vIHZhbGlkYXRvciBzdGF0ZSBnZXRzIGNhcnJpZWQgb3ZlclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCAmJiB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5jYXNlRmllbGQuaWQpKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKHRoaXMuY2FzZUZpZWxkLmlkKTtcbiAgICB9XG4gICAgLy8gRnJvbSB0aGlzIHBvaW50LCB0aGlzLmZvcm1Hcm91cCByZWZlcnMgdG8gdGhlIEZvcm1Hcm91cCBmb3IgdGhlIEZsYWdMYXVuY2hlciBmaWVsZCwgbm90IHRoZSBwYXJlbnQgRm9ybUdyb3VwXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUdyb3VwKHt9LCB7XG4gICAgICB2YWxpZGF0b3JzOiAoXzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGFuIGVycm9yIHRvIG1hcmsgdGhlIEZvcm1Hcm91cCBhcyBpbnZhbGlkIGlmIG5vdCBhbGwgQ2FzZSBGbGFnIHN0YWdlcyBoYXZlIGJlZW4gY29tcGxldGVkXG4gICAgICAgICAgcmV0dXJuIHsgbm90QWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQ6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KSwgdHJ1ZSkgYXMgRm9ybUdyb3VwO1xuXG4gICAgdGhpcy5jcmVhdGVGbGFnQ2FwdGlvbiA9IENhc2VGbGFnVGV4dC5DQVBUSU9OO1xuICAgIC8vIEdldCB0aGUgY2FzZSB0eXBlIElEIGZyb20gdGhlIENhc2VWaWV3IG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YSAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnXG4gICAgLy8gdHlwZXMgZm9yIGEgY2FzZSlcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlKSB7XG4gICAgICB0aGlzLmNhc2VUeXBlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuaWQ7XG4gICAgICAvLyBHZXQgdGhlIGp1cmlzZGljdGlvbiAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnIHR5cGVzIGlmIHVuYWJsZSB0byBkZXRlcm1pbmUgdXNpbmcgY2FzZSB0eXBlIElEKVxuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24pIHtcbiAgICAgICAgdGhpcy5qdXJpc2RpY3Rpb24gPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBFeHRyYWN0IGFsbCBmbGFncy1yZWxhdGVkIGRhdGEgZnJvbSB0aGUgQ2FzZUV2ZW50VHJpZ2dlciBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlcikge1xuICAgICAgLy8gR2V0IHRoZSBITUNUU1NlcnZpY2VJZCBmcm9tIHN1cHBsZW1lbnRhcnkgZGF0YSwgaWYgaXQgZXhpc3RzIChyZXF1aXJlZCBmb3IgcmV0cmlldmluZyB0aGUgYXZhaWxhYmxlIGZsYWcgdHlwZXMgaW5cbiAgICAgIC8vIHRoZSBmaXJzdCBpbnN0YW5jZSwgb25seSBmYWxsaW5nIGJhY2sgb24gY2FzZSB0eXBlIElEIG9yIGp1cmlzaWRpY3Rpb24gaWYgaXQncyBub3QgcHJlc2VudClcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLnN1cHBsZW1lbnRhcnlfZGF0YVxuICAgICAgICAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLnN1cHBsZW1lbnRhcnlfZGF0YS5ITUNUU1NlcnZpY2VJZCkge1xuICAgICAgICB0aGlzLmhtY3RzU2VydmljZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGEuSE1DVFNTZXJ2aWNlSWQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSB7XG4gICAgICAgIHRoaXMuZmxhZ3NEYXRhID0gKCh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSBhcyBDYXNlRmllbGRbXSlcbiAgICAgICAgICAucmVkdWNlKChmbGFncywgY2FzZUZpZWxkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRzVXRpbHMuZXh0cmFjdEZsYWdzRGF0YUZyb21DYXNlRmllbGQoZmxhZ3MsIGNhc2VGaWVsZCwgY2FzZUZpZWxkLmlkLCBjYXNlRmllbGQpO1xuICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAvLyBTZXQgYm9vbGVhbiBpbmRpY2F0aW5nIHRoZSBkaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyIGlzIFwidXBkYXRlXCJcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlID1cbiAgICAgICAgICB0aGlzLnNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlKCh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSBhcyBDYXNlRmllbGRbXSk7XG5cbiAgICAgICAgLy8gU2V0IHN0YXJ0aW5nIGZpZWxkIHN0YXRlXG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSA9IHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSA/IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTIDogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT047XG4gICAgICAgIC8vIEdldCBjYXNlIHRpdGxlLCB0byBiZSB1c2VkIGJ5IGNoaWxkIGNvbXBvbmVudHNcbiAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VUaXRsZSQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiB0aXRsZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhc2VUaXRsZSA9IHRpdGxlLmxlbmd0aCA+IDAgPyB0aXRsZSA6IHRoaXMuY2FzZU5hbWVNaXNzaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZHMuc29tZShcbiAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLnVwZGF0ZU1vZGUpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoY2FzZUZsYWdTdGF0ZTogQ2FzZUZsYWdTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT04gYW5kIGEgZmxhZyBsb2NhdGlvbiAoYSBGbGFncyBpbnN0YW5jZSkgaGFzIGJlZW4gc2VsZWN0ZWQsXG4gICAgLy8gc2V0IHRoZSBwYXJlbnQgQ2FzZSBGbGFnIEZvcm1Hcm91cCBmb3IgdGhpcyBjb21wb25lbnQncyBjaGlsZHJlbiBieSB1c2luZyB0aGUgcHJvdmlkZWQgcGF0aFRvRmxhZ3NGb3JtR3JvdXAsIGFuZFxuICAgIC8vIHNldCB0aGUgc2VsZWN0ZWQgZmxhZyBsb2NhdGlvbiBvbiB0aGlzIGNvbXBvbmVudFxuICAgIGlmIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OXG4gICAgICAmJiBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZ3NMb2NhdGlvblxuICAgICAgJiYgY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWdzTG9jYXRpb24ucGF0aFRvRmxhZ3NGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuc2V0Q2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAoY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWdzTG9jYXRpb24ucGF0aFRvRmxhZ3NGb3JtR3JvdXApO1xuICAgICAgdGhpcy5zZWxlY3RlZEZsYWdzTG9jYXRpb24gPSBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbjtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSwgY2FjaGUgdGhlIGZsYWcgbmFtZSwgcGF0aCwgaGVhcmluZyByZWxldmFudCBpbmRpY2F0b3IsIGNvZGUsXG4gICAgLy8gYW5kIFwibGlzdCBvZiB2YWx1ZXNcIiAoY3VycmVudGx5IGFwcGxpY2FibGUgdG8gbGFuZ3VhZ2UgZmxhZyB0eXBlcylcbiAgICBpZiAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFKSB7XG4gICAgICB0aGlzLmZsYWdOYW1lID0gY2FzZUZsYWdTdGF0ZS5mbGFnTmFtZTtcbiAgICAgIHRoaXMuZmxhZ1BhdGggPSBjYXNlRmxhZ1N0YXRlLmZsYWdQYXRoO1xuICAgICAgdGhpcy5oZWFyaW5nUmVsZXZhbnRGbGFnID0gY2FzZUZsYWdTdGF0ZS5oZWFyaW5nUmVsZXZhbnRGbGFnO1xuICAgICAgdGhpcy5mbGFnQ29kZSA9IGNhc2VGbGFnU3RhdGUuZmxhZ0NvZGU7XG4gICAgICB0aGlzLmxpc3RPZlZhbHVlcyA9IGNhc2VGbGFnU3RhdGUubGlzdE9mVmFsdWVzO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyBhbmQgYSBmbGFnIGhhcyBiZWVuIHNlbGVjdGVkLCBzZXQgdGhlIHBhcmVudFxuICAgIC8vIENhc2UgRmxhZyBGb3JtR3JvdXAgZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgdXNpbmcgdGhlIHByb3ZpZGVkIHBhdGhUb0ZsYWdzRm9ybUdyb3VwXG4gICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1NcbiAgICAgICYmIGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnXG4gICAgICAmJiBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cCkge1xuICAgICAgdGhpcy5zZXRDYXNlRmxhZ1BhcmVudEZvcm1Hcm91cChjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cCk7XG4gICAgfVxuXG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gY2FzZUZsYWdTdGF0ZS5lcnJvck1lc3NhZ2VzO1xuICAgIHRoaXMuc2VsZWN0ZWRGbGFnID0gY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWc7XG4gICAgLy8gVmFsaWRhdGlvbiBzdWNjZWVkZWQ7IHByb2NlZWQgdG8gbmV4dCBzdGF0ZSBvciBmaW5hbCByZXZpZXcgc3RhZ2UgKFwiQ2hlY2sgeW91ciBhbnN3ZXJzXCIpXG4gICAgaWYgKHRoaXMuZXJyb3JNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTIG9yIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSwgbW92ZSB0byBmaW5hbFxuICAgICAgLy8gcmV2aWV3IHN0YWdlXG4gICAgICBpZiAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyB8fFxuICAgICAgICBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSkge1xuICAgICAgICB0aGlzLm1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoKTtcbiAgICAgICAgLy8gRG9uJ3QgbW92ZSB0byBuZXh0IHN0YXRlIGlmIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSBhbmQgdGhlIGZsYWcgdHlwZSBpcyBhIHBhcmVudCAtIHRoaXNcbiAgICAgICAgLy8gbWVhbnMgdGhlIHVzZXIgbmVlZHMgdG8gc2VsZWN0IGZyb20gdGhlIG5leHQgc2V0IG9mIGZsYWcgdHlwZXMgYmVmb3JlIHRoZXkgY2FuIG1vdmUgb25cbiAgICAgIH0gZWxzZSBpZiAoIWNhc2VGbGFnU3RhdGUuaXNQYXJlbnRGbGFnVHlwZSkge1xuICAgICAgICAvLyBQcm9jZWVkIHRvIG5leHQgc3RhdGVcbiAgICAgICAgdGhpcy5wcm9jZWVkVG9OZXh0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJvY2VlZFRvTmV4dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0F0RmluYWxTdGF0ZSgpKSB7XG4gICAgICAvLyBTa2lwIHRoZSBcImxhbmd1YWdlIGludGVycHJldGVyXCIgc3RhdGUgaWYgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFIGFuZCB0aGUgZmxhZyB0eXBlIGRvZXNuJ3RcbiAgICAgIC8vIGhhdmUgYSBcImxpc3Qgb2YgdmFsdWVzXCIgLSBjdXJyZW50bHksIHRoaXMgaXMgcHJlc2VudCBvbmx5IGZvciB0aG9zZSBmbGFnIHR5cGVzIHRoYXQgcmVxdWlyZSBsYW5ndWFnZSBpbnRlcnByZXRlclxuICAgICAgLy8gc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFICYmICF0aGlzLmxpc3RPZlZhbHVlcykge1xuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGbGFnc0Nhc2VGaWVsZFZhbHVlKCk6IHZvaWQge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogc3dpdGNoLWRlZmF1bHRcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRTdGF0ZSkge1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUzpcbiAgICAgICAgdGhpcy5hZGRGbGFnVG9Db2xsZWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEU6XG4gICAgICAgIHRoaXMudXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmxhZ1RvQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBuZXcgZmxhZyBpcyBiZWluZyBhZGRlZCBhdCBhIHRpbWUsIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCBhbmQgcmVtb3ZpbmdcbiAgICAvLyBhbnkgcHJldmlvdXMgZW50cnkgZnJvbSB0aGUgZGV0YWlscyBhcnJheSB3aGVyZSB0aGF0IGVudHJ5IGhhcyBubyBpZCAoaGVuY2UgaXQgaXMgbmV3IC0gYW5kIHRoZXJlIHNob3VsZCBiZSBvbmx5XG4gICAgLy8gb25lIHN1Y2ggZW50cnkpLiAoVGhpcyBzY2VuYXJpbyBvY2N1cnMgaWYgdGhlIHVzZXIgcmVwZWF0cyB0aGUgQ2FzZSBGbGFnIGNyZWF0aW9uIGpvdXJuZXkgYnkgdXNpbmcgdGhlIFwiQ2hhbmdlXCJcbiAgICAvLyBsaW5rIGFuZCBzZWxlY3RzIGVpdGhlciB0aGUgc2FtZSBmbGFnIGxvY2F0aW9uIGFzIGJlZm9yZSBvciBhIGRpZmZlcmVudCBvbmUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byByZW1vdmUgdGhlIG5ldyB2YWx1ZSBmcm9tXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQudmFsdWU7XG4gICAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGluc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGhUb1ZhbHVlLnNsaWNlKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IHZhbHVlID0gdmFsdWVbcGFydF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmRldGFpbHMgJiYgdmFsdWUuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXdGbGFnRGV0YWlsID0gdmFsdWUuZGV0YWlscy5maW5kSW5kZXgoZWxlbWVudCA9PiAhZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG4gICAgICAgIGlmIChpbmRleE9mTmV3RmxhZ0RldGFpbCA+IC0xKSB7XG4gICAgICAgICAgdmFsdWUuZGV0YWlscy5zcGxpY2UoaW5kZXhPZk5ld0ZsYWdEZXRhaWwsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBDYXNlRmllbGQgZm9yIHRoZSBzZWxlY3RlZCBmbGFncyBsb2NhdGlvbiBoYXMgbm8gdmFsdWUsIHNldCBpdCB0byBhbiBlbXB0eSBvYmplY3Qgc28gaXQgY2FuIGJlIHBvcHVsYXRlZFxuICAgIC8vIHdpdGggZmxhZyBkZXRhaWxzXG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWUgPSB7fTtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIGRldGFpbHMgYXJyYXkgaWYgb25lIGRvZXMgbm90IGV4aXN0XG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlLmhhc093blByb3BlcnR5KCdkZXRhaWxzJykpIHtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscyA9IFtdO1xuICAgIH1cbiAgICAvLyBQb3B1bGF0ZSBuZXcgRmxhZ0RldGFpbCBpbnN0YW5jZSBhbmQgYWRkIHRvIHRoZSBGbGFncyBkYXRhIHdpdGhpbiB0aGUgQ2FzZUZpZWxkIGluc3RhbmNlIG9mIHRoZSBzZWxlY3RlZCBmbGFnXG4gICAgLy8gbG9jYXRpb25cbiAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMucHVzaCh7IHZhbHVlOiB0aGlzLnBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCkgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBmbGFnIGlzIGJlaW5nIHVwZGF0ZWQgYXQgYSB0aW1lLCBieSBpdGVyYXRpbmcgdGhyb3VnaCBlYWNoIEZsYWdzIGNhc2UgZmllbGQgYW5kIHJlc2V0dGluZ1xuICAgIC8vIHRoZSBjb21tZW50cywgc3RhdHVzLCBhbmQgZGF0ZS90aW1lIG1vZGlmaWVkIChpZiBwcmVzZW50KSBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgZGV0YWlscyBhcnJheSwgd2l0aCBvcmlnaW5hbCB2YWx1ZXNcbiAgICAvLyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGZvcm1hdHRlZF92YWx1ZSBwcm9wZXJ0eS4gKFRoaXMgc2NlbmFyaW8gb2NjdXJzIGlmIHRoZSB1c2VyIHJlcGVhdHMgdGhlIE1hbmFnZSBDYXNlIEZsYWdcbiAgICAvLyBqb3VybmV5IGJ5IHVzaW5nIHRoZSBcIkNoYW5nZVwiIGxpbmsgYW5kIHNlbGVjdHMgYSBkaWZmZXJlbnQgZmxhZyB0byB1cGRhdGUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSBmb3Igd2hpY2ggdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgdmFsdWVzXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQudmFsdWU7XG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQuZm9ybWF0dGVkX3ZhbHVlO1xuICAgICAgY29uc3QgcGF0aFRvVmFsdWUgPSBpbnN0YW5jZS5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICAgIGlmIChwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICBwYXRoVG9WYWx1ZS5zbGljZShwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZVtwYXJ0XTtcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWVbcGFydF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5kZXRhaWxzICYmIHZhbHVlLmRldGFpbHMubGVuZ3RoID4gMCAmJiBmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5kZXRhaWxzLmZvckVhY2goZmxhZ0RldGFpbCA9PiB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxGbGFnRGV0YWlsID0gZm9ybWF0dGVkVmFsdWUuZGV0YWlscy5maW5kKGRldGFpbCA9PiBkZXRhaWwuaWQgPT09IGZsYWdEZXRhaWwuaWQpO1xuICAgICAgICAgIGlmIChvcmlnaW5hbEZsYWdEZXRhaWwpIHtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnRcbiAgICAgICAgICAgICAgPyBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnRcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5zdGF0dXMgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuc3RhdHVzO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5kYXRlVGltZU1vZGlmaWVkID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmRhdGVUaW1lTW9kaWZpZWRcbiAgICAgICAgICAgICAgPyBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWUuZGF0ZVRpbWVNb2RpZmllZFxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRGbGFnLmNhc2VGaWVsZC52YWx1ZTtcbiAgICAvLyBVc2UgdGhlIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIHByb3BlcnR5IGZyb20gdGhlIHNlbGVjdGVkIGZsYWcgbG9jYXRpb24gdG8gZHJpbGwgZG93biB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZVxuICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byBhcHBseSBjaGFuZ2VzIHRvXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuc2VsZWN0ZWRGbGFnLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICBpZiAocGF0aC5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgcGF0aC5zbGljZShwYXRoLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlW3BhcnRdKTtcbiAgICB9XG4gICAgaWYgKGZsYWdzQ2FzZUZpZWxkVmFsdWUpIHtcbiAgICAgIGNvbnN0IGZsYWdEZXRhaWxUb1VwZGF0ZSA9IGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscy5maW5kKFxuICAgICAgICBkZXRhaWwgPT4gZGV0YWlsLmlkID09PSB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLmlkKTtcbiAgICAgIGlmIChmbGFnRGV0YWlsVG9VcGRhdGUpIHtcbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLmZsYWdDb21tZW50ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZVsnZmxhZ0NvbW1lbnRzJ11cbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWVbJ2ZsYWdDb21tZW50cyddXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuc3RhdHVzID0gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXM7XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5kYXRlVGltZU1vZGlmaWVkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0F0RmluYWxTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlXG4gICAgICA/IHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXG4gICAgICA6IHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFM7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Vycm9yRWxlbWVudChlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICBodG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlZChfOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZsYWdDb21tZW50c09wdGlvbmFsID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBhcmVudCB7QGxpbmsgRm9ybUdyb3VwfSBmb3IgdGhpcyBjb21wb25lbnQncyBjaGlsZHJlbiwgZGVwZW5kaW5nIG9uIHRoZSBgRmxhZ3NgIHtAbGluayBDYXNlRmllbGR9IGluc3RhbmNlXG4gICAqIHRvIHdoaWNoIGRhdGEgc2hvdWxkIGJlIGF0dGFjaGVkLiAqKk5vdGU6KiogVGhlIHBhcmVudCBpcyBub3QgX3RoaXNfIGNvbXBvbmVudCdzIGBGb3JtR3JvdXBgIChhcyBtaWdodCBvdGhlcndpc2UgYmVcbiAgICogZXhwZWN0ZWQpIGJlY2F1c2UgdGhpcyBjb21wb25lbnQgaXMgbm90IGV4cGVjdGVkIHRvIGhhdmUgYSB2YWx1ZSwgZ2l2ZW4gaXQgaXMgdXNlZCBmb3IgdGhlIGVtcHR5IGBGbGFnTGF1bmNoZXJgIGJhc2VcbiAgICogZmllbGQgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIFRoZSBkb3QtZGVsaW1pdGVkIHN0cmluZyB0aGF0IGlzIHRoZSBwYXRoIHRvIHRoZSBgRm9ybUdyb3VwYCBmb3IgYSBgRmxhZ3NgIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc2V0Q2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAocGF0aFRvRmxhZ3NGb3JtR3JvdXA6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cC5wYXJlbnQuZ2V0KHBhdGhUb0ZsYWdzRm9ybUdyb3VwKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgcG9wdWxhdGVOZXdGbGFnRGV0YWlsSW5zdGFuY2UoKTogRmxhZ0RldGFpbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMuZmxhZ05hbWUsXG4gICAgICAvLyBDdXJyZW50bHksIHN1YlR5cGVWYWx1ZSBhbmQgc3ViVHlwZUtleSBhcmUgYXBwbGljYWJsZSBvbmx5IHRvIGxhbmd1YWdlIGZsYWcgdHlwZXNcbiAgICAgIHN1YlR5cGVWYWx1ZTogdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZVsnbGFuZ3VhZ2VTZWFyY2hUZXJtJ11cbiAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlWydsYW5ndWFnZVNlYXJjaFRlcm0nXS52YWx1ZVxuICAgICAgICA6IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWVbJ21tYW51YWxMYW5ndWFnZUVudHJ5J11cbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWVbJ21tYW51YWxMYW5ndWFnZUVudHJ5J11cbiAgICAgICAgICA6IG51bGwsXG4gICAgICAvLyBGb3IgdXNlci1lbnRlcmVkIChpLmUuIG5vbi1SZWZlcmVuY2UgRGF0YSkgbGFuZ3VhZ2VzLCB0aGVyZSBpcyBubyBrZXlcbiAgICAgIHN1YlR5cGVLZXk6IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWVbJ2xhbmd1YWdlU2VhcmNoVGVybSddXG4gICAgICAgID8gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZVsnbGFuZ3VhZ2VTZWFyY2hUZXJtJ10ua2V5XG4gICAgICAgIDogbnVsbCxcbiAgICAgIG90aGVyRGVzY3JpcHRpb246IHRoaXMuZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGUgJiYgdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZVsnb3RoZXJGbGFnVHlwZURlc2NyaXB0aW9uJ11cbiAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlWydvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24nXVxuICAgICAgICA6IG51bGwsXG4gICAgICBmbGFnQ29tbWVudDogdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZVsnZmxhZ0NvbW1lbnRzJ10gPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlWydmbGFnQ29tbWVudHMnXSA6IG51bGwsXG4gICAgICBkYXRlVGltZUNyZWF0ZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHBhdGg6IHRoaXMuZmxhZ1BhdGgsXG4gICAgICBoZWFyaW5nUmVsZXZhbnQ6IHRoaXMuaGVhcmluZ1JlbGV2YW50RmxhZyA/ICdZZXMnIDogJ05vJyxcbiAgICAgIGZsYWdDb2RlOiB0aGlzLmZsYWdDb2RlLFxuICAgICAgc3RhdHVzOiBDYXNlRmxhZ1N0YXR1cy5BQ1RJVkVcbiAgICB9IGFzIEZsYWdEZXRhaWw7XG4gIH1cblxuICBwdWJsaWMgbW92ZVRvRmluYWxSZXZpZXdTdGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZsYWdzQ2FzZUZpZWxkVmFsdWUoKTtcbiAgICAvLyBDbGVhciB0aGUgXCJub3RBbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZFwiIGVycm9yXG4gICAgdGhpcy5hbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCA9IHRydWU7XG4gICAgdGhpcy5mb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRUcmlnZ2VyU3VibWl0RXZlbnQodHJ1ZSk7XG4gIH1cbn1cbiIsIjwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAge3snVGhlcmUgaXMgYSBwcm9ibGVtJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxhIChjbGljayk9XCJuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KGVycm9yTWVzc2FnZS5maWVsZElkKVwiIGNsYXNzPVwidmFsaWRhdGlvbi1lcnJvclwiPnt7ZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJmaWVsZFN0YXRlXCI+XG4gICAgPGRpdiBpZD1cImNyZWF0ZS1mbGFnLWNhcHRpb25cIiBjbGFzcz1cImdvdnVrLWNhcHRpb24tbFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGVycm9yTWVzc2FnZXMubGVuZ3RoID4gMH1cIj5cbiAgICAgIHt7Y3JlYXRlRmxhZ0NhcHRpb24gfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OXCI+XG4gICAgICA8Y2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbZmxhZ3NEYXRhXT1cImZsYWdzRGF0YVwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1zZWxlY3QtZmxhZy1sb2NhdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFXCI+XG4gICAgICA8Y2NkLXNlbGVjdC1mbGFnLXR5cGUgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtqdXJpc2RpY3Rpb25dPVwianVyaXNkaWN0aW9uXCIgW2Nhc2VUeXBlSWRdPVwiY2FzZVR5cGVJZFwiXG4gICAgICAgIFtobWN0c1NlcnZpY2VJZF09XCJobWN0c1NlcnZpY2VJZFwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIlxuICAgICAgICAoZmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVyKT1cIm9uRmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVkKCRldmVudClcIj48L2NjZC1zZWxlY3QtZmxhZy10eXBlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xBTkdVQUdFX0lOVEVSUFJFVEVSXCI+XG4gICAgICA8Y2NkLXNlYXJjaC1sYW5ndWFnZS1pbnRlcnByZXRlciBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2xhbmd1YWdlc109XCJsaXN0T2ZWYWx1ZXNcIiBbZmxhZ0NvZGVdPVwiZmxhZ0NvZGVcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2Qtc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTXCI+XG4gICAgICA8Y2NkLWFkZC1jb21tZW50cyBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW29wdGlvbmFsXT1cImZsYWdDb21tZW50c09wdGlvbmFsXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLWFkZC1jb21tZW50cz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdTd2l0Y2hdPVwiZmllbGRTdGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTXCI+XG4gICAgICA8Y2NkLW1hbmFnZS1jYXNlLWZsYWdzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbZmxhZ3NEYXRhXT1cImZsYWdzRGF0YVwiIFtjYXNlVGl0bGVdPVwiY2FzZVRpdGxlXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLW1hbmFnZS1jYXNlLWZsYWdzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURVwiPlxuICAgICAgPGNjZC11cGRhdGUtZmxhZyBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW3NlbGVjdGVkRmxhZ109XCJzZWxlY3RlZEZsYWdcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtdXBkYXRlLWZsYWc+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
- import { FormControl, UntypedFormGroup, Validators } from '@angular/forms';
2
+ import { FormControl, FormGroup, Validators } from '@angular/forms';
3
3
  import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component';
4
4
  import { WriteComplexFieldComponent } from '../complex/write-complex-field.component';
5
5
  import * as i0 from "@angular/core";
@@ -45,12 +45,12 @@ const _c1 = function (a0) { return { "form-group-error": a0 }; };
45
45
  export class WriteCaseLinkFieldComponent extends AbstractFieldWriteComponent {
46
46
  ngOnInit() {
47
47
  if (this.caseField.value) {
48
- this.caseLinkGroup = this.registerControl(new UntypedFormGroup({
48
+ this.caseLinkGroup = this.registerControl(new FormGroup({
49
49
  CaseReference: new FormControl(this.caseField.value.CaseReference, Validators.required),
50
50
  }), true);
51
51
  }
52
52
  else {
53
- this.caseLinkGroup = this.registerControl(new UntypedFormGroup({
53
+ this.caseLinkGroup = this.registerControl(new FormGroup({
54
54
  CaseReference: new FormControl(null, Validators.required),
55
55
  }), true);
56
56
  }
@@ -121,4 +121,4 @@ WriteCaseLinkFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
121
121
  type: ViewChild,
122
122
  args: ['writeComplexFieldComponent']
123
123
  }] }); })();
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1saW5rLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtbGluay93cml0ZS1jYXNlLWxpbmstZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1saW5rL3dyaXRlLWNhc2UtbGluay1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsV0FBVyxFQUFFLGdCQUFnQixFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7SUNGbEYsK0JBQWlEO0lBQUEsWUFBNEM7OztJQUFBLGlCQUFPOzs7SUFBbkQsZUFBNEM7SUFBNUMsa0ZBQTRDOzs7SUFFL0YsK0JBQW9EO0lBQUEsWUFBc0M7O0lBQUEsaUJBQU87OztJQUE3QyxlQUFzQztJQUF0QyxzRUFBc0M7OztJQUMxRiwrQkFBZ0k7SUFDOUgsWUFDRjs7O0lBQUEsaUJBQU87OztJQURMLGVBQ0Y7SUFERSx1SUFDRjs7O0FER0YsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDJCQUEyQjtJQVFuRSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztnQkFDN0QsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2FBQ3hGLENBQUMsRUFBRSxJQUFJLENBQXFCLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO2dCQUM3RCxhQUFhLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7YUFDMUQsQ0FBQyxFQUFFLElBQUksQ0FBcUIsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFFdkUsZ0hBQWdIO1FBQ2hILHNFQUFzRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUNsRSxLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO2dCQUN2RSxnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO2FBQzNFO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLE9BQU8sQ0FBQyxPQUF3QixFQUEwQixFQUFFO1lBQzFELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDakIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUMxQyxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLDRDQUE0QyxFQUFFLENBQUM7YUFDaEU7aUJBQU07Z0JBQ0wsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNuQixPQUFPLEVBQUUsS0FBSyxFQUFFLDRDQUE0QyxFQUFFLENBQUM7aUJBQ2hFO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxXQUFtQjtRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7OytSQW5EVSwyQkFBMkIsU0FBM0IsMkJBQTJCOzhFQUEzQiwyQkFBMkI7Ozs7OztRQ1Z4Qyw4QkFBc0osZUFBQTtRQUVsSiw4RUFBb0c7UUFDdEcsaUJBQVE7UUFDUiw4RUFBaUc7UUFDakcsOEVBRU87UUFDUCwyQkFBbUc7UUFDckcsaUJBQU07O1FBVGtCLDZKQUE2SDtRQUM1SSxlQUFZO1FBQVosOEJBQVk7UUFDUyxlQUFxQjtRQUFyQiwwQ0FBcUI7UUFFeEIsZUFBeUI7UUFBekIsOENBQXlCO1FBQ3JCLGVBQWlHO1FBQWpHLDhIQUFpRztRQUd4RixlQUFXO1FBQVgsNkJBQVcseUNBQUE7O3VGREV0QywyQkFBMkI7Y0FKdkMsU0FBUzsyQkFDRSwyQkFBMkI7Z0JBUzlCLDBCQUEwQjtrQkFEaEMsU0FBUzttQkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wbGV4L3dyaXRlLWNvbXBsZXgtZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNhc2UtbGluay1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnd3JpdGUtY2FzZS1saW5rLWZpZWxkLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQ2FzZUxpbmtGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGNhc2VSZWZlcmVuY2VDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBjYXNlTGlua0dyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBWaWV3Q2hpbGQoJ3dyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50JylcbiAgcHVibGljIHdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50OiBXcml0ZUNvbXBsZXhGaWVsZENvbXBvbmVudDtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICB0aGlzLmNhc2VMaW5rR3JvdXAgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgIENhc2VSZWZlcmVuY2U6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNhc2VGaWVsZC52YWx1ZS5DYXNlUmVmZXJlbmNlLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIH0pLCB0cnVlKSBhcyBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VMaW5rR3JvdXAgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICAgIENhc2VSZWZlcmVuY2U6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIH0pLCB0cnVlKSBhcyBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIH1cbiAgICB0aGlzLmNhc2VSZWZlcmVuY2VDb250cm9sID0gdGhpcy5jYXNlTGlua0dyb3VwLmNvbnRyb2xzWydDYXNlUmVmZXJlbmNlJ107XG4gICAgdGhpcy5jYXNlUmVmZXJlbmNlQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuY2FzZVJlZmVyZW5jZVZhbGlkYXRvcigpKTtcblxuICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBzdWItZmllbGRzIGluaGVyaXQgdGhlIHNhbWUgdmFsdWUgZm9yIHJldGFpbl9oaWRkZW5fdmFsdWUgYXMgdGhpcyBwYXJlbnQ7IGFsdGhvdWdoIGEgQ2FzZUxpbmtcbiAgICAvLyBmaWVsZCB1c2VzIHRoZSBDb21wbGV4IHR5cGUsIGl0IGlzIG1lYW50IHRvIGJlIHRyZWF0ZWQgYXMgb25lIGZpZWxkXG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkICYmIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICBmb3IgKGNvbnN0IGNhc2VMaW5rU3ViRmllbGQgb2YgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICBjYXNlTGlua1N1YkZpZWxkLnJldGFpbl9oaWRkZW5fdmFsdWUgPSB0aGlzLmNhc2VGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FzZVJlZmVyZW5jZVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkQ2FzZVJlZmVyZW5jZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVycm9yOiAnUGxlYXNlIHVzZSBhIHZhbGlkIDE2IERpZ2l0IENhc2UgUmVmZXJlbmNlJyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgICAgIHJldHVybiB7IGVycm9yOiAnUGxlYXNlIHVzZSBhIHZhbGlkIDE2IERpZ2l0IENhc2UgUmVmZXJlbmNlJyB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZENhc2VSZWZlcmVuY2UodmFsdWVTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJ15cXFxcYlxcXFxkezR9WyAtXT9cXFxcZHs0fVsgLV0/XFxcXGR7NH1bIC1dP1xcXFxkezR9XFxcXGIkJykudGVzdCh2YWx1ZVN0cmluZy50cmltKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6ICFjYXNlUmVmZXJlbmNlQ29udHJvbC52YWxpZCAmJiAoY2FzZVJlZmVyZW5jZUNvbnRyb2wuZGlydHkgfHwgY2FzZVJlZmVyZW5jZUNvbnRyb2wudG91Y2hlZCl9XCI+XG4gIDxsYWJlbCBbZm9yXT1cImlkKClcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cImNhc2VGaWVsZC5sYWJlbFwiPnt7Y2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICA8L2xhYmVsPlxuICA8c3BhbiBjbGFzcz1cImZvcm0taGludFwiICpuZ0lmPVwiY2FzZUZpZWxkLmhpbnRfdGV4dFwiPnt7Y2FzZUZpZWxkLmhpbnRfdGV4dCB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImNhc2VSZWZlcmVuY2VDb250cm9sLmVycm9ycyAmJiAoY2FzZVJlZmVyZW5jZUNvbnRyb2wuZGlydHkgfHwgY2FzZVJlZmVyZW5jZUNvbnRyb2wudG91Y2hlZClcIj5cbiAgICB7eyBjYXNlUmVmZXJlbmNlQ29udHJvbC5lcnJvcnMgfCBjY2RGaXJzdEVycm9yOmNhc2VGaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19XG4gIDwvc3Bhbj5cbiAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMFwiIFtpZF09XCJpZCgpXCIgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xdPVwiY2FzZVJlZmVyZW5jZUNvbnRyb2xcIj5cbjwvZGl2PlxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1saW5rLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtbGluay93cml0ZS1jYXNlLWxpbmstZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1saW5rL3dyaXRlLWNhc2UtbGluay1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7O0lDRmxGLCtCQUFpRDtJQUFBLFlBQTRDOzs7SUFBQSxpQkFBTzs7O0lBQW5ELGVBQTRDO0lBQTVDLGtGQUE0Qzs7O0lBRS9GLCtCQUFvRDtJQUFBLFlBQXNDOztJQUFBLGlCQUFPOzs7SUFBN0MsZUFBc0M7SUFBdEMsc0VBQXNDOzs7SUFDMUYsK0JBQWdJO0lBQzlILFlBQ0Y7OztJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsdUlBQ0Y7OztBREdGLE1BQU0sT0FBTywyQkFBNEIsU0FBUSwyQkFBMkI7SUFRbkUsUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksU0FBUyxDQUFDO2dCQUN0RCxhQUFhLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7YUFDeEYsQ0FBQyxFQUFFLElBQUksQ0FBYyxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxTQUFTLENBQUM7Z0JBQ3RELGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzthQUMxRCxDQUFDLEVBQUUsSUFBSSxDQUFjLENBQUM7U0FDeEI7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLGdIQUFnSDtRQUNoSCxzRUFBc0U7UUFDdEUsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDbEUsS0FBSyxNQUFNLGdCQUFnQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtnQkFDdkUsZ0JBQWdCLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQzthQUMzRTtTQUNGO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixPQUFPLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUMxRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDMUMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSw0Q0FBNEMsRUFBRSxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNMLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsT0FBTyxFQUFFLEtBQUssRUFBRSw0Q0FBNEMsRUFBRSxDQUFDO2lCQUNoRTthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsV0FBbUI7UUFDNUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDOzsrUkFuRFUsMkJBQTJCLFNBQTNCLDJCQUEyQjs4RUFBM0IsMkJBQTJCOzs7Ozs7UUNWeEMsOEJBQXNKLGVBQUE7UUFFbEosOEVBQW9HO1FBQ3RHLGlCQUFRO1FBQ1IsOEVBQWlHO1FBQ2pHLDhFQUVPO1FBQ1AsMkJBQW1HO1FBQ3JHLGlCQUFNOztRQVRrQiw2SkFBNkg7UUFDNUksZUFBWTtRQUFaLDhCQUFZO1FBQ1MsZUFBcUI7UUFBckIsMENBQXFCO1FBRXhCLGVBQXlCO1FBQXpCLDhDQUF5QjtRQUNyQixlQUFpRztRQUFqRyw4SEFBaUc7UUFHeEYsZUFBVztRQUFYLDZCQUFXLHlDQUFBOzt1RkRFdEMsMkJBQTJCO2NBSnZDLFNBQVM7MkJBQ0UsMkJBQTJCO2dCQVM5QiwwQkFBMEI7a0JBRGhDLFNBQVM7bUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wbGV4L3dyaXRlLWNvbXBsZXgtZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNhc2UtbGluay1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnd3JpdGUtY2FzZS1saW5rLWZpZWxkLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQ2FzZUxpbmtGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGNhc2VSZWZlcmVuY2VDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBjYXNlTGlua0dyb3VwOiBGb3JtR3JvdXA7XG5cbiAgQFZpZXdDaGlsZCgnd3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQnKVxuICBwdWJsaWMgd3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQ6IFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQudmFsdWUpIHtcbiAgICAgIHRoaXMuY2FzZUxpbmtHcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBDYXNlUmVmZXJlbmNlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5jYXNlRmllbGQudmFsdWUuQ2FzZVJlZmVyZW5jZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB9KSwgdHJ1ZSkgYXMgRm9ybUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VMaW5rR3JvdXAgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgQ2FzZVJlZmVyZW5jZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgfSksIHRydWUpIGFzIEZvcm1Hcm91cDtcbiAgICB9XG4gICAgdGhpcy5jYXNlUmVmZXJlbmNlQ29udHJvbCA9IHRoaXMuY2FzZUxpbmtHcm91cC5jb250cm9sc1snQ2FzZVJlZmVyZW5jZSddO1xuICAgIHRoaXMuY2FzZVJlZmVyZW5jZUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLmNhc2VSZWZlcmVuY2VWYWxpZGF0b3IoKSk7XG5cbiAgICAvLyBFbnN1cmUgdGhhdCBhbGwgc3ViLWZpZWxkcyBpbmhlcml0IHRoZSBzYW1lIHZhbHVlIGZvciByZXRhaW5faGlkZGVuX3ZhbHVlIGFzIHRoaXMgcGFyZW50OyBhbHRob3VnaCBhIENhc2VMaW5rXG4gICAgLy8gZmllbGQgdXNlcyB0aGUgQ29tcGxleCB0eXBlLCBpdCBpcyBtZWFudCB0byBiZSB0cmVhdGVkIGFzIG9uZSBmaWVsZFxuICAgIGlmICh0aGlzLmNhc2VGaWVsZCAmJiB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgZm9yIChjb25zdCBjYXNlTGlua1N1YkZpZWxkIG9mIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgY2FzZUxpbmtTdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlID0gdGhpcy5jYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhc2VSZWZlcmVuY2VWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy52YWxpZENhc2VSZWZlcmVuY2UoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlcnJvcjogJ1BsZWFzZSB1c2UgYSB2YWxpZCAxNiBEaWdpdCBDYXNlIFJlZmVyZW5jZScgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb250cm9sLnRvdWNoZWQpIHtcbiAgICAgICAgICByZXR1cm4geyBlcnJvcjogJ1BsZWFzZSB1c2UgYSB2YWxpZCAxNiBEaWdpdCBDYXNlIFJlZmVyZW5jZScgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRDYXNlUmVmZXJlbmNlKHZhbHVlU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXZhbHVlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVnRXhwKCdeXFxcXGJcXFxcZHs0fVsgLV0/XFxcXGR7NH1bIC1dP1xcXFxkezR9WyAtXT9cXFxcZHs0fVxcXFxiJCcpLnRlc3QodmFsdWVTdHJpbmcudHJpbSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiAhY2FzZVJlZmVyZW5jZUNvbnRyb2wudmFsaWQgJiYgKGNhc2VSZWZlcmVuY2VDb250cm9sLmRpcnR5IHx8IGNhc2VSZWZlcmVuY2VDb250cm9sLnRvdWNoZWQpfVwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZCgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCIgKm5nSWY9XCJjYXNlRmllbGQubGFiZWxcIj57e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbiAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIiAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIj57e2Nhc2VGaWVsZC5oaW50X3RleHQgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjYXNlUmVmZXJlbmNlQ29udHJvbC5lcnJvcnMgJiYgKGNhc2VSZWZlcmVuY2VDb250cm9sLmRpcnR5IHx8IGNhc2VSZWZlcmVuY2VDb250cm9sLnRvdWNoZWQpXCI+XG4gICAge3sgY2FzZVJlZmVyZW5jZUNvbnRyb2wuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fVxuICA8L3NwYW4+XG4gIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzBcIiBbaWRdPVwiaWQoKVwiIHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cImNhc2VSZWZlcmVuY2VDb250cm9sXCI+XG48L2Rpdj5cbiJdfQ==