@po-ui/ng-components 18.21.0 → 18.23.0

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 (76) hide show
  1. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
  2. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +19 -19
  3. package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.mjs +18 -2
  4. package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.mjs +4 -4
  5. package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +22 -2
  6. package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +4 -4
  7. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +22 -2
  8. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +4 -4
  9. package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.mjs +18 -2
  10. package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +4 -4
  11. package/esm2022/lib/components/po-field/po-decimal/po-decimal.component.mjs +4 -4
  12. package/esm2022/lib/components/po-field/po-email/po-email.component.mjs +4 -4
  13. package/esm2022/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.mjs +27 -10
  14. package/esm2022/lib/components/po-field/po-field-container/po-field-container.module.mjs +5 -4
  15. package/esm2022/lib/components/po-field/po-field-validate.model.mjs +22 -2
  16. package/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +22 -2
  17. package/esm2022/lib/components/po-field/po-input/po-input.component.mjs +4 -4
  18. package/esm2022/lib/components/po-field/po-login/po-login.component.mjs +4 -4
  19. package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +22 -2
  20. package/esm2022/lib/components/po-field/po-lookup/po-lookup.component.mjs +4 -4
  21. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +22 -2
  22. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +4 -4
  23. package/esm2022/lib/components/po-field/po-number/po-number.component.mjs +4 -4
  24. package/esm2022/lib/components/po-field/po-password/po-password.component.mjs +4 -4
  25. package/esm2022/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +18 -2
  26. package/esm2022/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +4 -4
  27. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-base.component.mjs +18 -2
  28. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text.component.mjs +4 -4
  29. package/esm2022/lib/components/po-field/po-select/po-select.component.mjs +4 -4
  30. package/esm2022/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +18 -2
  31. package/esm2022/lib/components/po-field/po-textarea/po-textarea.component.mjs +4 -4
  32. package/esm2022/lib/components/po-field/po-upload/po-upload-base.component.mjs +86 -2
  33. package/esm2022/lib/components/po-field/po-upload/po-upload.component.mjs +17 -7
  34. package/esm2022/lib/components/po-field/po-url/po-url.component.mjs +4 -4
  35. package/esm2022/lib/components/po-progress/index.mjs +2 -1
  36. package/esm2022/lib/components/po-progress/interfaces/index.mjs +2 -0
  37. package/esm2022/lib/components/po-progress/interfaces/po-progress-actions.interface.mjs +2 -0
  38. package/esm2022/lib/components/po-progress/po-progress-base.component.mjs +87 -2
  39. package/esm2022/lib/components/po-progress/po-progress.component.mjs +44 -15
  40. package/fesm2022/po-ui-ng-components.mjs +553 -132
  41. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  42. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +57 -1
  43. package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +14 -1
  44. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +16 -1
  45. package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +16 -1
  46. package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +14 -1
  47. package/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.d.ts +7 -1
  48. package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +2 -1
  49. package/lib/components/po-field/po-field-validate.model.d.ts +16 -1
  50. package/lib/components/po-field/po-input/po-input-base.component.d.ts +16 -1
  51. package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +16 -1
  52. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +16 -1
  53. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +14 -1
  54. package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +14 -1
  55. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +14 -1
  56. package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +80 -1
  57. package/lib/components/po-field/po-upload/po-upload.component.d.ts +6 -0
  58. package/lib/components/po-progress/index.d.ts +1 -0
  59. package/lib/components/po-progress/interfaces/index.d.ts +1 -0
  60. package/lib/components/po-progress/interfaces/po-progress-actions.interface.d.ts +83 -0
  61. package/lib/components/po-progress/po-progress-base.component.d.ts +81 -1
  62. package/lib/components/po-progress/po-progress.component.d.ts +4 -0
  63. package/package.json +4 -4
  64. package/po-ui-ng-components-18.23.0.tgz +0 -0
  65. package/schematics/ng-add/index.js +1 -1
  66. package/schematics/ng-update/v14/index.js +1 -1
  67. package/schematics/ng-update/v15/index.js +1 -1
  68. package/schematics/ng-update/v16/index.js +1 -1
  69. package/schematics/ng-update/v17/index.js +1 -1
  70. package/schematics/ng-update/v18/index.js +2 -2
  71. package/schematics/ng-update/v2/index.js +1 -1
  72. package/schematics/ng-update/v3/index.js +1 -1
  73. package/schematics/ng-update/v4/index.js +1 -1
  74. package/schematics/ng-update/v5/index.js +1 -1
  75. package/schematics/ng-update/v6/index.js +1 -1
  76. package/po-ui-ng-components-18.21.0.tgz +0 -0
@@ -58,7 +58,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker
58
58
  const ctx_r0 = i0.ɵɵnextContext(2);
59
59
  i0.ɵɵproperty("name", field_r4.property);
60
60
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
61
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-async", field_r4.errorAsyncFunction)("p-auto-focus", field_r4.focus)("p-format", field_r4.format)("p-help", field_r4.help)("p-iso-format", field_r4.isoFormat)("p-label", field_r4.label)("p-locale", field_r4.locale)("p-max-date", field_r4.maxValue)("p-min-date", field_r4.minValue)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder);
61
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-error-async", field_r4.errorAsyncFunction)("p-auto-focus", field_r4.focus)("p-format", field_r4.format)("p-help", field_r4.help)("p-iso-format", field_r4.isoFormat)("p-label", field_r4.label)("p-locale", field_r4.locale)("p-max-date", field_r4.maxValue)("p-min-date", field_r4.minValue)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder);
62
62
  } }
63
63
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker_range_3_Template(rf, ctx) { if (rf & 1) {
64
64
  const _r6 = i0.ɵɵgetCurrentView();
@@ -71,7 +71,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker
71
71
  const ctx_r0 = i0.ɵɵnextContext(2);
72
72
  i0.ɵɵproperty("name", field_r4.property);
73
73
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
74
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-max-date", field_r4.maxValue)("p-min-date", field_r4.minValue)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired);
74
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-max-date", field_r4.maxValue)("p-min-date", field_r4.minValue)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired);
75
75
  } }
76
76
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_input_4_Template(rf, ctx) { if (rf & 1) {
77
77
  const _r7 = i0.ɵɵgetCurrentView();
@@ -84,7 +84,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_input_4_Te
84
84
  const ctx_r0 = i0.ɵɵnextContext(2);
85
85
  i0.ɵɵproperty("name", field_r4.property);
86
86
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
87
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-async-properties", field_r4.errorAsyncProperties)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-mask-format-model", field_r4.maskFormatModel)("p-mask", field_r4.mask)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-pattern", field_r4.pattern)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-icon", field_r4.icon)("p-placeholder", field_r4.placeholder)("p-readonly", field_r4.readonly);
87
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-error-async-properties", field_r4.errorAsyncProperties)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-mask-format-model", field_r4.maskFormatModel)("p-mask", field_r4.mask)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-pattern", field_r4.pattern)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-icon", field_r4.icon)("p-placeholder", field_r4.placeholder)("p-readonly", field_r4.readonly);
88
88
  } }
89
89
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_number_5_Template(rf, ctx) { if (rf & 1) {
90
90
  const _r8 = i0.ɵɵgetCurrentView();
@@ -97,7 +97,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_number_5_T
97
97
  const ctx_r0 = i0.ɵɵnextContext(2);
98
98
  i0.ɵɵproperty("name", field_r4.property);
99
99
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
100
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-async-properties", field_r4.errorAsyncProperties)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-min", field_r4.minValue)("p-max", field_r4.maxValue)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-step", field_r4.step)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-icon", field_r4.icon)("p-placeholder", field_r4.placeholder);
100
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-error-async-properties", field_r4.errorAsyncProperties)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-min", field_r4.minValue)("p-max", field_r4.maxValue)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-step", field_r4.step)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-icon", field_r4.icon)("p-placeholder", field_r4.placeholder);
101
101
  } }
102
102
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_decimal_6_Template(rf, ctx) { if (rf & 1) {
103
103
  const _r9 = i0.ɵɵgetCurrentView();
@@ -110,7 +110,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_decimal_6_
110
110
  const ctx_r0 = i0.ɵɵnextContext(2);
111
111
  i0.ɵɵproperty("name", field_r4.property);
112
112
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
113
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-error-pattern", field_r4.errorMessage)("p-error-async-properties", field_r4.errorAsyncProperties)("p-disabled", ctx_r0.isDisabled(field_r4))("p-decimals-length", field_r4.decimalsLength)("p-thousand-maxlength", field_r4.thousandMaxlength)("p-icon", field_r4.icon)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-locale", field_r4.locale)("p-min", field_r4.minValue)("p-max", field_r4.maxValue)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder);
113
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-error-pattern", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-error-async-properties", field_r4.errorAsyncProperties)("p-disabled", ctx_r0.isDisabled(field_r4))("p-decimals-length", field_r4.decimalsLength)("p-thousand-maxlength", field_r4.thousandMaxlength)("p-icon", field_r4.icon)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-locale", field_r4.locale)("p-min", field_r4.minValue)("p-max", field_r4.maxValue)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder);
114
114
  } }
115
115
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_select_7_Template(rf, ctx) { if (rf & 1) {
116
116
  const _r10 = i0.ɵɵgetCurrentView();
@@ -123,7 +123,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_select_7_T
123
123
  const ctx_r0 = i0.ɵɵnextContext(2);
124
124
  i0.ɵɵproperty("name", field_r4.property);
125
125
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
126
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-field-label", field_r4.fieldLabel)("p-field-value", field_r4.fieldValue)("p-disabled", ctx_r0.isDisabled(field_r4))("p-help", field_r4.help)("p-label", field_r4.label)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder)("p-readonly", field_r4.readonly);
126
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-field-label", field_r4.fieldLabel)("p-field-value", field_r4.fieldValue)("p-disabled", ctx_r0.isDisabled(field_r4))("p-help", field_r4.help)("p-label", field_r4.label)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder)("p-readonly", field_r4.readonly);
127
127
  } }
128
128
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_radio_group_8_Template(rf, ctx) { if (rf & 1) {
129
129
  const _r11 = i0.ɵɵgetCurrentView();
@@ -136,7 +136,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_radio_grou
136
136
  const ctx_r0 = i0.ɵɵnextContext(2);
137
137
  i0.ɵɵproperty("name", field_r4.property);
138
138
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
139
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-columns", field_r4.columns || 3)("p-auto-focus", field_r4.focus)("p-disabled", ctx_r0.isDisabled(field_r4))("p-help", field_r4.help)("p-label", field_r4.label)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired);
139
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-columns", field_r4.columns || 3)("p-auto-focus", field_r4.focus)("p-disabled", ctx_r0.isDisabled(field_r4))("p-help", field_r4.help)("p-label", field_r4.label)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired);
140
140
  } }
141
141
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_switch_9_Template(rf, ctx) { if (rf & 1) {
142
142
  const _r12 = i0.ɵɵgetCurrentView();
@@ -175,7 +175,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_combo_11_T
175
175
  const ctx_r0 = i0.ɵɵnextContext(2);
176
176
  i0.ɵɵproperty("name", field_r4.property);
177
177
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
178
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-auto-focus", field_r4.focus)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-field-label", field_r4.fieldLabel)("p-field-value", field_r4.fieldValue)("p-filter-params", field_r4.params)("p-filter-service", field_r4.optionsService)("p-help", field_r4.help)("p-infinite-scroll", field_r4.infiniteScroll)("p-infinite-scroll-distance", field_r4.infiniteScrollDistance || 100)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-options", field_r4.options)("p-optional", field_r4.optional)("p-sort", field_r4.sort)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired)("p-icon", field_r4.icon)("p-placeholder", field_r4.placeholder)("p-filter-minlength", field_r4.filterMinlength)("p-filter-mode", field_r4.filterMode)("p-disabled-init-filter", field_r4.disabledInitFilter)("p-disabled-tab-filter", field_r4.disabledTabFilter)("p-debounce-time", field_r4.debounceTime)("p-change-on-enter", field_r4.changeOnEnter);
178
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-auto-focus", field_r4.focus)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-field-label", field_r4.fieldLabel)("p-field-value", field_r4.fieldValue)("p-filter-params", field_r4.params)("p-filter-service", field_r4.optionsService)("p-help", field_r4.help)("p-infinite-scroll", field_r4.infiniteScroll)("p-infinite-scroll-distance", field_r4.infiniteScrollDistance || 100)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-options", field_r4.options)("p-optional", field_r4.optional)("p-sort", field_r4.sort)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired)("p-icon", field_r4.icon)("p-placeholder", field_r4.placeholder)("p-filter-minlength", field_r4.filterMinlength)("p-filter-mode", field_r4.filterMode)("p-disabled-init-filter", field_r4.disabledInitFilter)("p-disabled-tab-filter", field_r4.disabledTabFilter)("p-debounce-time", field_r4.debounceTime)("p-change-on-enter", field_r4.changeOnEnter);
179
179
  } }
180
180
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_lookup_12_Template(rf, ctx) { if (rf & 1) {
181
181
  const _r15 = i0.ɵɵgetCurrentView();
@@ -188,7 +188,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_lookup_12_
188
188
  const ctx_r0 = i0.ɵɵnextContext(2);
189
189
  i0.ɵɵproperty("name", field_r4.property);
190
190
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
191
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-columns", field_r4.columns)("p-disabled", ctx_r0.isDisabled(field_r4))("p-field-label", field_r4.fieldLabel || "label")("p-field-value", field_r4.fieldValue || "value")("p-filter-params", field_r4.params)("p-filter-service", field_r4.searchService)("p-auto-focus", field_r4.focus)("p-auto-height", field_r4.autoHeight)("p-help", field_r4.help)("p-field-format", field_r4.format)("p-infinite-scroll", field_r4.infiniteScroll)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-multiple", field_r4.multiple)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder)("p-advanced-filters", field_r4.advancedFilters);
191
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-columns", field_r4.columns)("p-disabled", ctx_r0.isDisabled(field_r4))("p-field-label", field_r4.fieldLabel || "label")("p-field-value", field_r4.fieldValue || "value")("p-filter-params", field_r4.params)("p-filter-service", field_r4.searchService)("p-auto-focus", field_r4.focus)("p-auto-height", field_r4.autoHeight)("p-help", field_r4.help)("p-field-format", field_r4.format)("p-infinite-scroll", field_r4.infiniteScroll)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-multiple", field_r4.multiple)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder)("p-advanced-filters", field_r4.advancedFilters);
192
192
  } }
193
193
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_checkbox_group_13_Template(rf, ctx) { if (rf & 1) {
194
194
  const _r16 = i0.ɵɵgetCurrentView();
@@ -201,7 +201,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_checkbox_g
201
201
  const ctx_r0 = i0.ɵɵnextContext(2);
202
202
  i0.ɵɵproperty("name", field_r4.property);
203
203
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
204
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-columns", field_r4.columns || 3)("p-auto-focus", field_r4.focus)("p-disabled", ctx_r0.isDisabled(field_r4))("p-help", field_r4.help)("p-label", field_r4.label)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-show-required", field_r4.showRequired)("p-field-error-message", field_r4.errorMessage);
204
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-columns", field_r4.columns || 3)("p-auto-focus", field_r4.focus)("p-disabled", ctx_r0.isDisabled(field_r4))("p-help", field_r4.help)("p-label", field_r4.label)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-show-required", field_r4.showRequired)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit);
205
205
  } }
206
206
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_multiselect_14_Template(rf, ctx) { if (rf & 1) {
207
207
  const _r17 = i0.ɵɵgetCurrentView();
@@ -214,7 +214,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_multiselec
214
214
  const ctx_r0 = i0.ɵɵnextContext(2);
215
215
  i0.ɵɵproperty("name", field_r4.property);
216
216
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
217
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-disabled", ctx_r0.isDisabled(field_r4))("p-auto-focus", field_r4.focus)("p-auto-height", field_r4.autoHeight)("p-help", field_r4.help)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder)("p-field-label", field_r4.fieldLabel)("p-field-value", field_r4.fieldValue)("p-filter-service", field_r4.optionsService)("p-filter-mode", field_r4.filterMode)("p-debounce-time", field_r4.debounceTime)("p-sort", field_r4.sort)("p-placeholder-search", field_r4.placeholderSearch)("p-hide-search", field_r4.hideSearch)("p-hide-select-all", field_r4.hideSelectAll);
217
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-disabled", ctx_r0.isDisabled(field_r4))("p-auto-focus", field_r4.focus)("p-auto-height", field_r4.autoHeight)("p-help", field_r4.help)("p-label", field_r4.label)("p-literals", field_r4.literals)("p-optional", field_r4.optional)("p-options", field_r4.options)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder)("p-field-label", field_r4.fieldLabel)("p-field-value", field_r4.fieldValue)("p-filter-service", field_r4.optionsService)("p-filter-mode", field_r4.filterMode)("p-debounce-time", field_r4.debounceTime)("p-sort", field_r4.sort)("p-placeholder-search", field_r4.placeholderSearch)("p-hide-search", field_r4.hideSearch)("p-hide-select-all", field_r4.hideSelectAll);
218
218
  } }
219
219
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_textarea_15_Template(rf, ctx) { if (rf & 1) {
220
220
  const _r18 = i0.ɵɵgetCurrentView();
@@ -227,7 +227,7 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_textarea_1
227
227
  const ctx_r0 = i0.ɵɵnextContext(2);
228
228
  i0.ɵɵproperty("name", field_r4.property);
229
229
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
230
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-disabled", ctx_r0.isDisabled(field_r4))("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-show-required", field_r4.showRequired)("p-rows", field_r4.rows)("p-placeholder", field_r4.placeholder);
230
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-disabled", ctx_r0.isDisabled(field_r4))("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-label", field_r4.label)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-optional", field_r4.optional)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-field-error-message", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-show-required", field_r4.showRequired)("p-rows", field_r4.rows)("p-placeholder", field_r4.placeholder);
231
231
  } }
232
232
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_password_16_Template(rf, ctx) { if (rf & 1) {
233
233
  const _r19 = i0.ɵɵgetCurrentView();
@@ -240,23 +240,23 @@ function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_password_1
240
240
  const ctx_r0 = i0.ɵɵnextContext(2);
241
241
  i0.ɵɵproperty("name", field_r4.property);
242
242
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
243
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-async-properties", field_r4.errorAsyncProperties)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-hide-password-peek", field_r4.hidePasswordPeek)("p-icon", field_r4.icon)("p-label", field_r4.label)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-pattern", field_r4.pattern)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder);
243
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-clean", field_r4.clean)("p-disabled", ctx_r0.isDisabled(field_r4))("p-error-pattern", field_r4.errorMessage)("p-error-limit", field_r4.errorLimit)("p-error-async-properties", field_r4.errorAsyncProperties)("p-auto-focus", field_r4.focus)("p-help", field_r4.help)("p-hide-password-peek", field_r4.hidePasswordPeek)("p-icon", field_r4.icon)("p-label", field_r4.label)("p-maxlength", field_r4.maxLength)("p-minlength", field_r4.minLength)("p-no-autocomplete", field_r4.noAutocomplete)("p-optional", field_r4.optional)("p-pattern", field_r4.pattern)("p-readonly", field_r4.readonly)("p-required", field_r4.required)("p-required-field-error-message", field_r4.requiredFieldErrorMessage)("p-show-required", field_r4.showRequired)("p-placeholder", field_r4.placeholder);
244
244
  } }
245
245
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template(rf, ctx) { if (rf & 1) {
246
246
  const _r20 = i0.ɵɵgetCurrentView();
247
247
  i0.ɵɵelementStart(0, "po-upload", 40, 2);
248
248
  i0.ɵɵtwoWayListener("ngModelChange", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.value[field_r4.property], $event) || (ctx_r0.value[field_r4.property] = $event); return i0.ɵɵresetView($event); });
249
- i0.ɵɵlistener("p-error", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_error_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.onError($event)); })("p-success", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_success_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.onSuccess($event)); })("p-upload", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_upload_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.onUpload($event)); })("p-change", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_change_0_listener() { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onChangeField(field_r4)); })("p-change-model", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_change_model_0_listener() { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onChangeFieldModel(field_r4)); });
249
+ i0.ɵɵlistener("p-custom-action-click", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_custom_action_click_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.customActionClick($event)); })("p-error", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_error_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.onError($event)); })("p-success", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_success_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.onSuccess($event)); })("p-upload", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_upload_0_listener($event) { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(field_r4.onUpload($event)); })("p-change", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_change_0_listener() { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onChangeField(field_r4)); })("p-change-model", function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template_po_upload_p_change_model_0_listener() { i0.ɵɵrestoreView(_r20); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onChangeFieldModel(field_r4)); });
250
250
  i0.ɵɵelementEnd();
251
251
  } if (rf & 2) {
252
252
  const field_r4 = i0.ɵɵnextContext().$implicit;
253
253
  const ctx_r0 = i0.ɵɵnextContext(2);
254
254
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.value[field_r4.property]);
255
- i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-auto-upload", field_r4.autoUpload)("p-directory", field_r4.directory)("p-disabled", ctx_r0.isDisabled(field_r4))("p-drag-drop", field_r4.dragDrop)("p-drag-drop-height", field_r4.dragDropHeight)("p-restrictions", field_r4.restrictions)("p-form-field", field_r4.formField)("p-headers", field_r4.headers)("p-help", field_r4.help)("p-hide-restrictions-info", field_r4.hideRestrictionsInfo)("p-hide-select-button", field_r4.hideSelectButton)("p-hide-send-button", field_r4.hideSendButton)("p-multiple", field_r4.multiple)("p-label", field_r4.label)("p-literals", field_r4.literals)("name", field_r4.property)("p-optional", field_r4.optional)("p-required", field_r4.required)("p-show-required", field_r4.showRequired)("p-url", field_r4.url);
255
+ i0.ɵɵproperty("ngClass", field_r4.componentClass)("p-auto-upload", field_r4.autoUpload)("p-directory", field_r4.directory)("p-disabled", ctx_r0.isDisabled(field_r4))("p-drag-drop", field_r4.dragDrop)("p-drag-drop-height", field_r4.dragDropHeight)("p-restrictions", field_r4.restrictions)("p-form-field", field_r4.formField)("p-headers", field_r4.headers)("p-help", field_r4.help)("p-hide-restrictions-info", field_r4.hideRestrictionsInfo)("p-hide-select-button", field_r4.hideSelectButton)("p-hide-send-button", field_r4.hideSendButton)("p-multiple", field_r4.multiple)("p-label", field_r4.label)("p-literals", field_r4.literals)("name", field_r4.property)("p-custom-action", field_r4.customAction)("p-optional", field_r4.optional)("p-required", field_r4.required)("p-show-required", field_r4.showRequired)("p-url", field_r4.url);
256
256
  } }
257
257
  function PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
258
258
  i0.ɵɵelementContainerStart(0);
259
- i0.ɵɵtemplate(1, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_divider_1_Template, 1, 1, "po-divider", 7)(2, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker_2_Template, 2, 22, "po-datepicker", 8)(3, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker_range_3_Template, 2, 17, "po-datepicker-range", 9)(4, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_input_4_Template, 2, 23, "po-input", 10)(5, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_number_5_Template, 2, 23, "po-number", 11)(6, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_decimal_6_Template, 2, 25, "po-decimal", 12)(7, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_select_7_Template, 2, 15, "po-select", 13)(8, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_radio_group_8_Template, 2, 13, "po-radio-group", 14)(9, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_switch_9_Template, 2, 11, "po-switch", 15)(10, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_checkbox_10_Template, 2, 7, "po-checkbox", 16)(11, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_combo_11_Template, 2, 29, "po-combo", 17)(12, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_lookup_12_Template, 2, 25, "po-lookup", 18)(13, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_checkbox_group_13_Template, 2, 13, "po-checkbox-group", 19)(14, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_multiselect_14_Template, 2, 24, "po-multiselect", 20)(15, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_textarea_15_Template, 2, 16, "po-textarea", 21)(16, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_password_16_Template, 2, 22, "po-password", 22)(17, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template, 2, 22, "po-upload", 23);
259
+ i0.ɵɵtemplate(1, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_divider_1_Template, 1, 1, "po-divider", 7)(2, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker_2_Template, 2, 23, "po-datepicker", 8)(3, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_datepicker_range_3_Template, 2, 18, "po-datepicker-range", 9)(4, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_input_4_Template, 2, 24, "po-input", 10)(5, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_number_5_Template, 2, 24, "po-number", 11)(6, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_decimal_6_Template, 2, 26, "po-decimal", 12)(7, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_select_7_Template, 2, 16, "po-select", 13)(8, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_radio_group_8_Template, 2, 14, "po-radio-group", 14)(9, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_switch_9_Template, 2, 11, "po-switch", 15)(10, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_checkbox_10_Template, 2, 7, "po-checkbox", 16)(11, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_combo_11_Template, 2, 30, "po-combo", 17)(12, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_lookup_12_Template, 2, 26, "po-lookup", 18)(13, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_checkbox_group_13_Template, 2, 14, "po-checkbox-group", 19)(14, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_multiselect_14_Template, 2, 25, "po-multiselect", 20)(15, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_textarea_15_Template, 2, 17, "po-textarea", 21)(16, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_password_16_Template, 2, 23, "po-password", 22)(17, PoDynamicFormFieldsComponent_ng_template_1_ng_container_0_po_upload_17_Template, 2, 23, "po-upload", 23);
260
260
  i0.ɵɵelementContainerEnd();
261
261
  } if (rf & 2) {
262
262
  const field_r4 = ctx.$implicit;
@@ -563,7 +563,7 @@ export class PoDynamicFormFieldsComponent extends PoDynamicFormFieldsBaseCompone
563
563
  } if (rf & 2) {
564
564
  let _t;
565
565
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.components = _t);
566
- } }, features: [i0.ɵɵProvidersFeature([PoDynamicFormValidationService], [{ provide: ControlContainer, useExisting: NgForm }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 5, vars: 1, consts: [["poContent", ""], ["poContentContainer", ""], ["component", ""], ["class", "po-row", 3, "po-dynamic", 4, "ngIf"], [1, "po-row"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-sm-12", 3, "p-label", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async", "p-auto-focus", "p-format", "p-help", "p-iso-format", "p-label", "p-locale", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-literals", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-show-required", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-mask-format-model", "p-mask", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder", "p-readonly", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-step", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-error-pattern", "p-error-async-properties", "p-disabled", "p-decimals-length", "p-thousand-maxlength", "p-icon", "p-auto-focus", "p-help", "p-label", "p-locale", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-field-label", "p-field-value", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-show-required", "p-placeholder", "p-readonly", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-show-required", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-disabled", "p-format-model", "p-help", "p-label", "p-label-off", "p-label-on", "p-label-position", "p-hide-label-status", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-auto-focus", "p-disabled", "p-label", "p-size", "ngModelChange", "p-change", 4, "ngIf"], ["p-emit-object-value", "", 3, "name", "ngModel", "ngClass", "p-auto-focus", "p-clean", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-help", "p-infinite-scroll", "p-infinite-scroll-distance", "p-label", "p-literals", "p-options", "p-optional", "p-sort", "p-required", "p-field-error-message", "p-show-required", "p-icon", "p-placeholder", "p-filter-minlength", "p-filter-mode", "p-disabled-init-filter", "p-disabled-tab-filter", "p-debounce-time", "p-change-on-enter", "ngModelChange", "p-change", 4, "ngIf"], ["p-field-label", "label", "p-field-value", "value", 3, "name", "ngModel", "ngClass", "p-clean", "p-columns", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-auto-focus", "p-auto-height", "p-help", "p-field-format", "p-infinite-scroll", "p-label", "p-literals", "p-multiple", "p-no-autocomplete", "p-optional", "p-required", "p-field-error-message", "p-show-required", "p-placeholder", "p-advanced-filters", "ngModelChange", "p-change", "p-change-visible-columns", "p-restore-column-manager", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-show-required", "p-field-error-message", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-auto-height", "p-help", "p-label", "p-literals", "p-optional", "p-options", "p-required", "p-field-error-message", "p-show-required", "p-placeholder", "p-field-label", "p-field-value", "p-filter-service", "p-filter-mode", "p-debounce-time", "p-sort", "p-placeholder-search", "p-hide-search", "p-hide-select-all", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-maxlength", "p-minlength", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-show-required", "p-rows", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async-properties", "p-auto-focus", "p-help", "p-hide-password-peek", "p-icon", "p-label", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "ngModel", "ngClass", "p-auto-upload", "p-directory", "p-disabled", "p-drag-drop", "p-drag-drop-height", "p-restrictions", "p-form-field", "p-headers", "p-help", "p-hide-restrictions-info", "p-hide-select-button", "p-hide-send-button", "p-multiple", "p-label", "p-literals", "name", "p-optional", "p-required", "p-show-required", "p-url", "ngModelChange", "p-error", "p-success", "p-upload", "p-change", "p-change-model", 4, "ngIf"], [1, "po-sm-12", 3, "p-label"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async", "p-auto-focus", "p-format", "p-help", "p-iso-format", "p-label", "p-locale", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-literals", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-show-required"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-mask-format-model", "p-mask", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder", "p-readonly"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-step", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-error-pattern", "p-error-async-properties", "p-disabled", "p-decimals-length", "p-thousand-maxlength", "p-icon", "p-auto-focus", "p-help", "p-label", "p-locale", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-field-label", "p-field-value", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-show-required", "p-placeholder", "p-readonly"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-show-required"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-disabled", "p-format-model", "p-help", "p-label", "p-label-off", "p-label-on", "p-label-position", "p-hide-label-status"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-auto-focus", "p-disabled", "p-label", "p-size"], ["p-emit-object-value", "", 3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-auto-focus", "p-clean", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-help", "p-infinite-scroll", "p-infinite-scroll-distance", "p-label", "p-literals", "p-options", "p-optional", "p-sort", "p-required", "p-field-error-message", "p-show-required", "p-icon", "p-placeholder", "p-filter-minlength", "p-filter-mode", "p-disabled-init-filter", "p-disabled-tab-filter", "p-debounce-time", "p-change-on-enter"], ["p-field-label", "label", "p-field-value", "value", 3, "ngModelChange", "p-change", "p-change-visible-columns", "p-restore-column-manager", "name", "ngModel", "ngClass", "p-clean", "p-columns", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-auto-focus", "p-auto-height", "p-help", "p-field-format", "p-infinite-scroll", "p-label", "p-literals", "p-multiple", "p-no-autocomplete", "p-optional", "p-required", "p-field-error-message", "p-show-required", "p-placeholder", "p-advanced-filters"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-show-required", "p-field-error-message"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-auto-height", "p-help", "p-label", "p-literals", "p-optional", "p-options", "p-required", "p-field-error-message", "p-show-required", "p-placeholder", "p-field-label", "p-field-value", "p-filter-service", "p-filter-mode", "p-debounce-time", "p-sort", "p-placeholder-search", "p-hide-search", "p-hide-select-all"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-maxlength", "p-minlength", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-show-required", "p-rows", "p-placeholder"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-async-properties", "p-auto-focus", "p-help", "p-hide-password-peek", "p-icon", "p-label", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder"], [3, "ngModelChange", "p-error", "p-success", "p-upload", "p-change", "p-change-model", "ngModel", "ngClass", "p-auto-upload", "p-directory", "p-disabled", "p-drag-drop", "p-drag-drop-height", "p-restrictions", "p-form-field", "p-headers", "p-help", "p-hide-restrictions-info", "p-hide-select-button", "p-hide-send-button", "p-multiple", "p-label", "p-literals", "name", "p-optional", "p-required", "p-show-required", "p-url"], [3, "p-fields", "p-content"]], template: function PoDynamicFormFieldsComponent_Template(rf, ctx) { if (rf & 1) {
566
+ } }, features: [i0.ɵɵProvidersFeature([PoDynamicFormValidationService], [{ provide: ControlContainer, useExisting: NgForm }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 5, vars: 1, consts: [["poContent", ""], ["poContentContainer", ""], ["component", ""], ["class", "po-row", 3, "po-dynamic", 4, "ngIf"], [1, "po-row"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-sm-12", 3, "p-label", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async", "p-auto-focus", "p-format", "p-help", "p-iso-format", "p-label", "p-locale", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-literals", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-mask-format-model", "p-mask", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder", "p-readonly", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-step", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-disabled", "p-decimals-length", "p-thousand-maxlength", "p-icon", "p-auto-focus", "p-help", "p-label", "p-locale", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-field-label", "p-field-value", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-placeholder", "p-readonly", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-disabled", "p-format-model", "p-help", "p-label", "p-label-off", "p-label-on", "p-label-position", "p-hide-label-status", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-auto-focus", "p-disabled", "p-label", "p-size", "ngModelChange", "p-change", 4, "ngIf"], ["p-emit-object-value", "", 3, "name", "ngModel", "ngClass", "p-auto-focus", "p-clean", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-help", "p-infinite-scroll", "p-infinite-scroll-distance", "p-label", "p-literals", "p-options", "p-optional", "p-sort", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-icon", "p-placeholder", "p-filter-minlength", "p-filter-mode", "p-disabled-init-filter", "p-disabled-tab-filter", "p-debounce-time", "p-change-on-enter", "ngModelChange", "p-change", 4, "ngIf"], ["p-field-label", "label", "p-field-value", "value", 3, "name", "ngModel", "ngClass", "p-clean", "p-columns", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-auto-focus", "p-auto-height", "p-help", "p-field-format", "p-infinite-scroll", "p-label", "p-literals", "p-multiple", "p-no-autocomplete", "p-optional", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-placeholder", "p-advanced-filters", "ngModelChange", "p-change", "p-change-visible-columns", "p-restore-column-manager", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-show-required", "p-field-error-message", "p-error-limit", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-auto-height", "p-help", "p-label", "p-literals", "p-optional", "p-options", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-placeholder", "p-field-label", "p-field-value", "p-filter-service", "p-filter-mode", "p-debounce-time", "p-sort", "p-placeholder-search", "p-hide-search", "p-hide-select-all", "ngModelChange", "p-change", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-maxlength", "p-minlength", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-rows", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-auto-focus", "p-help", "p-hide-password-peek", "p-icon", "p-label", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder", "ngModelChange", "p-change", "p-change-model", 4, "ngIf"], [3, "ngModel", "ngClass", "p-auto-upload", "p-directory", "p-disabled", "p-drag-drop", "p-drag-drop-height", "p-restrictions", "p-form-field", "p-headers", "p-help", "p-hide-restrictions-info", "p-hide-select-button", "p-hide-send-button", "p-multiple", "p-label", "p-literals", "name", "p-custom-action", "p-optional", "p-required", "p-show-required", "p-url", "ngModelChange", "p-custom-action-click", "p-error", "p-success", "p-upload", "p-change", "p-change-model", 4, "ngIf"], [1, "po-sm-12", 3, "p-label"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async", "p-auto-focus", "p-format", "p-help", "p-iso-format", "p-label", "p-locale", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-literals", "p-max-date", "p-min-date", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-error-limit", "p-show-required"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-mask-format-model", "p-mask", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder", "p-readonly"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-auto-focus", "p-help", "p-label", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-step", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-icon", "p-placeholder"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-disabled", "p-decimals-length", "p-thousand-maxlength", "p-icon", "p-auto-focus", "p-help", "p-label", "p-locale", "p-min", "p-max", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-field-label", "p-field-value", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-placeholder", "p-readonly"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-field-error-message", "p-error-limit", "p-show-required"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-disabled", "p-format-model", "p-help", "p-label", "p-label-off", "p-label-on", "p-label-position", "p-hide-label-status"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-auto-focus", "p-disabled", "p-label", "p-size"], ["p-emit-object-value", "", 3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-auto-focus", "p-clean", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-help", "p-infinite-scroll", "p-infinite-scroll-distance", "p-label", "p-literals", "p-options", "p-optional", "p-sort", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-icon", "p-placeholder", "p-filter-minlength", "p-filter-mode", "p-disabled-init-filter", "p-disabled-tab-filter", "p-debounce-time", "p-change-on-enter"], ["p-field-label", "label", "p-field-value", "value", 3, "ngModelChange", "p-change", "p-change-visible-columns", "p-restore-column-manager", "name", "ngModel", "ngClass", "p-clean", "p-columns", "p-disabled", "p-field-label", "p-field-value", "p-filter-params", "p-filter-service", "p-auto-focus", "p-auto-height", "p-help", "p-field-format", "p-infinite-scroll", "p-label", "p-literals", "p-multiple", "p-no-autocomplete", "p-optional", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-placeholder", "p-advanced-filters"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-columns", "p-auto-focus", "p-disabled", "p-help", "p-label", "p-optional", "p-options", "p-required", "p-show-required", "p-field-error-message", "p-error-limit"], [3, "ngModelChange", "p-change", "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-auto-height", "p-help", "p-label", "p-literals", "p-optional", "p-options", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-placeholder", "p-field-label", "p-field-value", "p-filter-service", "p-filter-mode", "p-debounce-time", "p-sort", "p-placeholder-search", "p-hide-search", "p-hide-select-all"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-disabled", "p-auto-focus", "p-help", "p-label", "p-maxlength", "p-minlength", "p-optional", "p-readonly", "p-required", "p-field-error-message", "p-error-limit", "p-show-required", "p-rows", "p-placeholder"], [3, "ngModelChange", "p-change", "p-change-model", "name", "ngModel", "ngClass", "p-clean", "p-disabled", "p-error-pattern", "p-error-limit", "p-error-async-properties", "p-auto-focus", "p-help", "p-hide-password-peek", "p-icon", "p-label", "p-maxlength", "p-minlength", "p-no-autocomplete", "p-optional", "p-pattern", "p-readonly", "p-required", "p-required-field-error-message", "p-show-required", "p-placeholder"], [3, "ngModelChange", "p-custom-action-click", "p-error", "p-success", "p-upload", "p-change", "p-change-model", "ngModel", "ngClass", "p-auto-upload", "p-directory", "p-disabled", "p-drag-drop", "p-drag-drop-height", "p-restrictions", "p-form-field", "p-headers", "p-help", "p-hide-restrictions-info", "p-hide-select-button", "p-hide-send-button", "p-multiple", "p-label", "p-literals", "name", "p-custom-action", "p-optional", "p-required", "p-show-required", "p-url"], [3, "p-fields", "p-content"]], template: function PoDynamicFormFieldsComponent_Template(rf, ctx) { if (rf & 1) {
567
567
  i0.ɵɵtemplate(0, PoDynamicFormFieldsComponent_div_0_Template, 2, 6, "div", 3)(1, PoDynamicFormFieldsComponent_ng_template_1_Template, 1, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(3, PoDynamicFormFieldsComponent_ng_template_3_Template, 1, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
568
568
  } if (rf & 2) {
569
569
  i0.ɵɵproperty("ngIf", ctx.visibleFields && ctx.visibleFields.length > 0);
@@ -571,10 +571,10 @@ export class PoDynamicFormFieldsComponent extends PoDynamicFormFieldsBaseCompone
571
571
  }
572
572
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoDynamicFormFieldsComponent, [{
573
573
  type: Component,
574
- args: [{ selector: 'po-dynamic-form-fields', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], providers: [PoDynamicFormValidationService], template: "<div class=\"po-row\" [class.po-dynamic]=\"hasContainers\" *ngIf=\"visibleFields && visibleFields.length > 0\">\n <ng-container\n *ngTemplateOutlet=\"\n hasContainers ? poContentContainer : poContent;\n context: { $implicit: hasContainers ? containerFields : visibleFields }\n \"\n ></ng-container>\n</div>\n\n<ng-template #poContent let-fields>\n <ng-container *ngFor=\"let field of fields; trackBy: trackBy\">\n <po-divider *ngIf=\"field?.divider?.trim()\" class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n\n <po-datepicker\n #component\n *ngIf=\"compareTo(field.control, 'datepicker')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-async]=\"field.errorAsyncFunction\"\n [p-auto-focus]=\"field.focus\"\n [p-format]=\"field.format\"\n [p-help]=\"field.help\"\n [p-iso-format]=\"field.isoFormat\"\n [p-label]=\"field.label\"\n [p-locale]=\"field.locale\"\n [p-max-date]=\"field.maxValue\"\n [p-min-date]=\"field.minValue\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-datepicker>\n\n <po-datepicker-range\n #component\n *ngIf=\"compareTo(field.control, 'datepickerrange')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-max-date]=\"field.maxValue\"\n [p-min-date]=\"field.minValue\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-datepicker-range>\n\n <po-input\n #component\n *ngIf=\"compareTo(field.control, 'input')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-mask-format-model]=\"field.maskFormatModel\"\n [p-mask]=\"field.mask\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-pattern]=\"field.pattern\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-icon]=\"field.icon\"\n [p-placeholder]=\"field.placeholder\"\n [p-readonly]=\"field.readonly\"\n >\n </po-input>\n\n <po-number\n #component\n *ngIf=\"compareTo(field.control, 'number')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-min]=\"field.minValue\"\n [p-max]=\"field.maxValue\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-step]=\"field.step\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-icon]=\"field.icon\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-number>\n\n <po-decimal\n #component\n *ngIf=\"compareTo(field.control, 'decimal')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-disabled]=\"isDisabled(field)\"\n [p-decimals-length]=\"field.decimalsLength\"\n [p-thousand-maxlength]=\"field.thousandMaxlength\"\n [p-icon]=\"field.icon\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-locale]=\"field.locale\"\n [p-min]=\"field.minValue\"\n [p-max]=\"field.maxValue\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-decimal>\n\n <po-select\n #component\n *ngIf=\"compareTo(field.control, 'select')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-field-label]=\"field.fieldLabel\"\n [p-field-value]=\"field.fieldValue\"\n [p-disabled]=\"isDisabled(field)\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n [p-readonly]=\"field.readonly\"\n >\n </po-select>\n\n <po-radio-group\n #component\n *ngIf=\"compareTo(field.control, 'radioGroup')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-columns]=\"field.columns || 3\"\n [p-auto-focus]=\"field.focus\"\n [p-disabled]=\"isDisabled(field)\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-radio-group>\n\n <po-switch\n #component\n *ngIf=\"compareTo(field.control, 'switch')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-disabled]=\"isDisabled(field)\"\n [p-format-model]=\"field.formatModel\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-label-off]=\"field.booleanFalse\"\n [p-label-on]=\"field.booleanTrue\"\n [p-label-position]=\"field.labelPosition\"\n [p-hide-label-status]=\"field.hideLabelStatus\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-switch>\n\n <po-checkbox\n #component\n *ngIf=\"compareTo(field.control, 'checkbox')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-auto-focus]=\"field.focus\"\n [p-disabled]=\"isDisabled(field)\"\n [p-label]=\"field.label\"\n [p-size]=\"field.size\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-checkbox>\n\n <po-combo\n #component\n *ngIf=\"compareTo(field.control, 'combo')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n p-emit-object-value\n [p-auto-focus]=\"field.focus\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-field-label]=\"field.fieldLabel\"\n [p-field-value]=\"field.fieldValue\"\n [p-filter-params]=\"field.params\"\n [p-filter-service]=\"field.optionsService\"\n [p-help]=\"field.help\"\n [p-infinite-scroll]=\"field.infiniteScroll\"\n [p-infinite-scroll-distance]=\"field.infiniteScrollDistance || 100\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-options]=\"field.options\"\n [p-optional]=\"field.optional\"\n [p-sort]=\"field.sort\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field, $event)\"\n [p-icon]=\"field.icon\"\n [p-placeholder]=\"field.placeholder\"\n [p-filter-minlength]=\"field.filterMinlength\"\n [p-filter-mode]=\"field.filterMode\"\n [p-disabled-init-filter]=\"field.disabledInitFilter\"\n [p-disabled-tab-filter]=\"field.disabledTabFilter\"\n [p-debounce-time]=\"field.debounceTime\"\n [p-change-on-enter]=\"field.changeOnEnter\"\n >\n </po-combo>\n\n <po-lookup\n #component\n *ngIf=\"compareTo(field.control, 'lookup')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n p-field-label=\"label\"\n p-field-value=\"value\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-columns]=\"field.columns\"\n [p-disabled]=\"isDisabled(field)\"\n [p-field-label]=\"field.fieldLabel || 'label'\"\n [p-field-value]=\"field.fieldValue || 'value'\"\n [p-filter-params]=\"field.params\"\n [p-filter-service]=\"field.searchService\"\n [p-auto-focus]=\"field.focus\"\n [p-auto-height]=\"field.autoHeight\"\n [p-help]=\"field.help\"\n [p-field-format]=\"field.format\"\n [p-infinite-scroll]=\"field.infiniteScroll\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-multiple]=\"field.multiple\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n [p-advanced-filters]=\"field.advancedFilters\"\n (p-change-visible-columns)=\"field.changeVisibleColumns?.($event)\"\n (p-restore-column-manager)=\"field.columnRestoreManager?.($event)\"\n >\n </po-lookup>\n\n <po-checkbox-group\n #component\n *ngIf=\"compareTo(field.control, 'checkboxGroup')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-columns]=\"field.columns || 3\"\n [p-auto-focus]=\"field.focus\"\n [p-disabled]=\"isDisabled(field)\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-show-required]=\"field.showRequired\"\n [p-field-error-message]=\"field.errorMessage\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-checkbox-group>\n\n <po-multiselect\n #component\n *ngIf=\"compareTo(field.control, 'multiselect')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-disabled]=\"isDisabled(field)\"\n [p-auto-focus]=\"field.focus\"\n [p-auto-height]=\"field.autoHeight\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n [p-field-label]=\"field.fieldLabel\"\n [p-field-value]=\"field.fieldValue\"\n [p-filter-service]=\"field.optionsService\"\n [p-filter-mode]=\"field.filterMode\"\n [p-debounce-time]=\"field.debounceTime\"\n [p-sort]=\"field.sort\"\n [p-placeholder-search]=\"field.placeholderSearch\"\n [p-hide-search]=\"field.hideSearch\"\n [p-hide-select-all]=\"field.hideSelectAll\"\n >\n </po-multiselect>\n\n <po-textarea\n #component\n *ngIf=\"compareTo(field.control, 'textarea')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-disabled]=\"isDisabled(field)\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-show-required]=\"field.showRequired\"\n [p-rows]=\"field.rows\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-textarea>\n\n <po-password\n #component\n *ngIf=\"compareTo(field.control, 'password')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-hide-password-peek]=\"field.hidePasswordPeek\"\n [p-icon]=\"field.icon\"\n [p-label]=\"field.label\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-pattern]=\"field.pattern\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-password>\n\n <po-upload\n #component\n *ngIf=\"compareTo(field.control, 'upload')\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-auto-upload]=\"field.autoUpload\"\n [p-directory]=\"field.directory\"\n [p-disabled]=\"isDisabled(field)\"\n [p-drag-drop]=\"field.dragDrop\"\n [p-drag-drop-height]=\"field.dragDropHeight\"\n [p-restrictions]=\"field.restrictions\"\n [p-form-field]=\"field.formField\"\n [p-headers]=\"field.headers\"\n [p-help]=\"field.help\"\n [p-hide-restrictions-info]=\"field.hideRestrictionsInfo\"\n [p-hide-select-button]=\"field.hideSelectButton\"\n [p-hide-send-button]=\"field.hideSendButton\"\n [p-multiple]=\"field.multiple\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [name]=\"field.property\"\n (p-error)=\"field.onError($event)\"\n (p-success)=\"field.onSuccess($event)\"\n (p-upload)=\"field.onUpload($event)\"\n [p-optional]=\"field.optional\"\n [p-required]=\"field.required\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-url]=\"field.url\"\n >\n </po-upload>\n </ng-container>\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n" }]
574
+ args: [{ selector: 'po-dynamic-form-fields', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], providers: [PoDynamicFormValidationService], template: "<div class=\"po-row\" [class.po-dynamic]=\"hasContainers\" *ngIf=\"visibleFields && visibleFields.length > 0\">\n <ng-container\n *ngTemplateOutlet=\"\n hasContainers ? poContentContainer : poContent;\n context: { $implicit: hasContainers ? containerFields : visibleFields }\n \"\n ></ng-container>\n</div>\n\n<ng-template #poContent let-fields>\n <ng-container *ngFor=\"let field of fields; trackBy: trackBy\">\n <po-divider *ngIf=\"field?.divider?.trim()\" class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n\n <po-datepicker\n #component\n *ngIf=\"compareTo(field.control, 'datepicker')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-error-async]=\"field.errorAsyncFunction\"\n [p-auto-focus]=\"field.focus\"\n [p-format]=\"field.format\"\n [p-help]=\"field.help\"\n [p-iso-format]=\"field.isoFormat\"\n [p-label]=\"field.label\"\n [p-locale]=\"field.locale\"\n [p-max-date]=\"field.maxValue\"\n [p-min-date]=\"field.minValue\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-datepicker>\n\n <po-datepicker-range\n #component\n *ngIf=\"compareTo(field.control, 'datepickerrange')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-max-date]=\"field.maxValue\"\n [p-min-date]=\"field.minValue\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-datepicker-range>\n\n <po-input\n #component\n *ngIf=\"compareTo(field.control, 'input')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-mask-format-model]=\"field.maskFormatModel\"\n [p-mask]=\"field.mask\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-pattern]=\"field.pattern\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-icon]=\"field.icon\"\n [p-placeholder]=\"field.placeholder\"\n [p-readonly]=\"field.readonly\"\n >\n </po-input>\n\n <po-number\n #component\n *ngIf=\"compareTo(field.control, 'number')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-min]=\"field.minValue\"\n [p-max]=\"field.maxValue\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-step]=\"field.step\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-icon]=\"field.icon\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-number>\n\n <po-decimal\n #component\n *ngIf=\"compareTo(field.control, 'decimal')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-disabled]=\"isDisabled(field)\"\n [p-decimals-length]=\"field.decimalsLength\"\n [p-thousand-maxlength]=\"field.thousandMaxlength\"\n [p-icon]=\"field.icon\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-locale]=\"field.locale\"\n [p-min]=\"field.minValue\"\n [p-max]=\"field.maxValue\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-decimal>\n\n <po-select\n #component\n *ngIf=\"compareTo(field.control, 'select')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-field-label]=\"field.fieldLabel\"\n [p-field-value]=\"field.fieldValue\"\n [p-disabled]=\"isDisabled(field)\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n [p-readonly]=\"field.readonly\"\n >\n </po-select>\n\n <po-radio-group\n #component\n *ngIf=\"compareTo(field.control, 'radioGroup')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-columns]=\"field.columns || 3\"\n [p-auto-focus]=\"field.focus\"\n [p-disabled]=\"isDisabled(field)\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-radio-group>\n\n <po-switch\n #component\n *ngIf=\"compareTo(field.control, 'switch')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-disabled]=\"isDisabled(field)\"\n [p-format-model]=\"field.formatModel\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-label-off]=\"field.booleanFalse\"\n [p-label-on]=\"field.booleanTrue\"\n [p-label-position]=\"field.labelPosition\"\n [p-hide-label-status]=\"field.hideLabelStatus\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-switch>\n\n <po-checkbox\n #component\n *ngIf=\"compareTo(field.control, 'checkbox')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-auto-focus]=\"field.focus\"\n [p-disabled]=\"isDisabled(field)\"\n [p-label]=\"field.label\"\n [p-size]=\"field.size\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-checkbox>\n\n <po-combo\n #component\n *ngIf=\"compareTo(field.control, 'combo')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n p-emit-object-value\n [p-auto-focus]=\"field.focus\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-field-label]=\"field.fieldLabel\"\n [p-field-value]=\"field.fieldValue\"\n [p-filter-params]=\"field.params\"\n [p-filter-service]=\"field.optionsService\"\n [p-help]=\"field.help\"\n [p-infinite-scroll]=\"field.infiniteScroll\"\n [p-infinite-scroll-distance]=\"field.infiniteScrollDistance || 100\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-options]=\"field.options\"\n [p-optional]=\"field.optional\"\n [p-sort]=\"field.sort\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field, $event)\"\n [p-icon]=\"field.icon\"\n [p-placeholder]=\"field.placeholder\"\n [p-filter-minlength]=\"field.filterMinlength\"\n [p-filter-mode]=\"field.filterMode\"\n [p-disabled-init-filter]=\"field.disabledInitFilter\"\n [p-disabled-tab-filter]=\"field.disabledTabFilter\"\n [p-debounce-time]=\"field.debounceTime\"\n [p-change-on-enter]=\"field.changeOnEnter\"\n >\n </po-combo>\n\n <po-lookup\n #component\n *ngIf=\"compareTo(field.control, 'lookup')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n p-field-label=\"label\"\n p-field-value=\"value\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-columns]=\"field.columns\"\n [p-disabled]=\"isDisabled(field)\"\n [p-field-label]=\"field.fieldLabel || 'label'\"\n [p-field-value]=\"field.fieldValue || 'value'\"\n [p-filter-params]=\"field.params\"\n [p-filter-service]=\"field.searchService\"\n [p-auto-focus]=\"field.focus\"\n [p-auto-height]=\"field.autoHeight\"\n [p-help]=\"field.help\"\n [p-field-format]=\"field.format\"\n [p-infinite-scroll]=\"field.infiniteScroll\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-multiple]=\"field.multiple\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n [p-advanced-filters]=\"field.advancedFilters\"\n (p-change-visible-columns)=\"field.changeVisibleColumns?.($event)\"\n (p-restore-column-manager)=\"field.columnRestoreManager?.($event)\"\n >\n </po-lookup>\n\n <po-checkbox-group\n #component\n *ngIf=\"compareTo(field.control, 'checkboxGroup')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-columns]=\"field.columns || 3\"\n [p-auto-focus]=\"field.focus\"\n [p-disabled]=\"isDisabled(field)\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-show-required]=\"field.showRequired\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n (p-change)=\"onChangeField(field)\"\n >\n </po-checkbox-group>\n\n <po-multiselect\n #component\n *ngIf=\"compareTo(field.control, 'multiselect')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-disabled]=\"isDisabled(field)\"\n [p-auto-focus]=\"field.focus\"\n [p-auto-height]=\"field.autoHeight\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [p-optional]=\"field.optional\"\n [p-options]=\"field.options\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n [p-placeholder]=\"field.placeholder\"\n [p-field-label]=\"field.fieldLabel\"\n [p-field-value]=\"field.fieldValue\"\n [p-filter-service]=\"field.optionsService\"\n [p-filter-mode]=\"field.filterMode\"\n [p-debounce-time]=\"field.debounceTime\"\n [p-sort]=\"field.sort\"\n [p-placeholder-search]=\"field.placeholderSearch\"\n [p-hide-search]=\"field.hideSearch\"\n [p-hide-select-all]=\"field.hideSelectAll\"\n >\n </po-multiselect>\n\n <po-textarea\n #component\n *ngIf=\"compareTo(field.control, 'textarea')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-disabled]=\"isDisabled(field)\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-label]=\"field.label\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-optional]=\"field.optional\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-field-error-message]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-show-required]=\"field.showRequired\"\n [p-rows]=\"field.rows\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-textarea>\n\n <po-password\n #component\n *ngIf=\"compareTo(field.control, 'password')\"\n [name]=\"field.property\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-clean]=\"field.clean\"\n [p-disabled]=\"isDisabled(field)\"\n [p-error-pattern]=\"field.errorMessage\"\n [p-error-limit]=\"field.errorLimit\"\n [p-error-async-properties]=\"field.errorAsyncProperties\"\n [p-auto-focus]=\"field.focus\"\n [p-help]=\"field.help\"\n [p-hide-password-peek]=\"field.hidePasswordPeek\"\n [p-icon]=\"field.icon\"\n [p-label]=\"field.label\"\n [p-maxlength]=\"field.maxLength\"\n [p-minlength]=\"field.minLength\"\n [p-no-autocomplete]=\"field.noAutocomplete\"\n [p-optional]=\"field.optional\"\n [p-pattern]=\"field.pattern\"\n [p-readonly]=\"field.readonly\"\n [p-required]=\"field.required\"\n [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-placeholder]=\"field.placeholder\"\n >\n </po-password>\n\n <po-upload\n #component\n *ngIf=\"compareTo(field.control, 'upload')\"\n [(ngModel)]=\"value[field.property]\"\n [ngClass]=\"field.componentClass\"\n [p-auto-upload]=\"field.autoUpload\"\n [p-directory]=\"field.directory\"\n [p-disabled]=\"isDisabled(field)\"\n [p-drag-drop]=\"field.dragDrop\"\n [p-drag-drop-height]=\"field.dragDropHeight\"\n [p-restrictions]=\"field.restrictions\"\n [p-form-field]=\"field.formField\"\n [p-headers]=\"field.headers\"\n [p-help]=\"field.help\"\n [p-hide-restrictions-info]=\"field.hideRestrictionsInfo\"\n [p-hide-select-button]=\"field.hideSelectButton\"\n [p-hide-send-button]=\"field.hideSendButton\"\n [p-multiple]=\"field.multiple\"\n [p-label]=\"field.label\"\n [p-literals]=\"field.literals\"\n [name]=\"field.property\"\n [p-custom-action]=\"field.customAction\"\n (p-custom-action-click)=\"field.customActionClick($event)\"\n (p-error)=\"field.onError($event)\"\n (p-success)=\"field.onSuccess($event)\"\n (p-upload)=\"field.onUpload($event)\"\n [p-optional]=\"field.optional\"\n [p-required]=\"field.required\"\n [p-show-required]=\"field.showRequired\"\n (p-change)=\"onChangeField(field)\"\n (p-change-model)=\"onChangeFieldModel(field)\"\n [p-url]=\"field.url\"\n >\n </po-upload>\n </ng-container>\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n" }]
575
575
  }], () => [{ type: i1.TitleCasePipe }, { type: i2.PoDynamicFormValidationService }, { type: i0.ChangeDetectorRef }, { type: i3.NgForm }], { components: [{
576
576
  type: ViewChildren,
577
577
  args: ['component']
578
578
  }] }); })();
579
579
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoDynamicFormFieldsComponent, { className: "PoDynamicFormFieldsComponent", filePath: "lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.ts", lineNumber: 23 }); })();
580
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy1mb3JtLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZHluYW1pYy9wby1keW5hbWljLWZvcm0vcG8tZHluYW1pYy1mb3JtLWZpZWxkcy9wby1keW5hbWljLWZvcm0tZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1keW5hbWljL3BvLWR5bmFtaWMtZm9ybS9wby1keW5hbWljLWZvcm0tZmllbGRzL3BvLWR5bmFtaWMtZm9ybS1maWVsZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQXVDLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbEgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDTnpGLHdCQUtnQjs7O0lBTmxCLDhCQUF5RztJQUN2RyxxR0FLQztJQUNILGlCQUFNOzs7OztJQVBjLGtEQUFrQztJQUVqRCxjQUVRO0lBQUEsQUFGUiw4RkFFUSw2SEFFYjs7O0lBS0ksaUNBQW9HOzs7SUFBeEMsMENBQXlCOzs7O0lBRXJGLDRDQTBCQztJQXRCQywyYUFBbUM7SUFvQm5DLDRSQUFZLDhCQUFvQixLQUFDO0lBR25DLGlCQUFnQjs7OztJQXhCZCx3Q0FBdUI7SUFDdkIsK0RBQW1DO0lBcUJuQyxBQUZBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURB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QixFQUFFLENBQUM7Z0JBQzFCLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7c0ZBdFNVLDRCQUE0Qjs2REFBNUIsNEJBQTRCOzs7Ozs4Q0FGNUIsQ0FBQyw4QkFBOEIsQ0FBQyxFQUQ1QixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQzZhckUsQUF2YkEsQUFUQSw2RUFBeUcsaUhBU3RFLGlIQXViUzs7WUFoY1ksd0VBQStDOzs7aUZEc0IxRiw0QkFBNEI7Y0FOeEMsU0FBUzsyQkFDRSx3QkFBd0IsaUJBRW5CLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLGFBQ3hELENBQUMsOEJBQThCLENBQUM7Z0pBR2hCLFVBQVU7a0JBQXBDLFlBQVk7bUJBQUMsV0FBVzs7a0ZBRGQsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFBvRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4uL3BvLWR5bmFtaWMtZm9ybS1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9EeW5hbWljRm9ybUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJy4uL3BvLWR5bmFtaWMtZm9ybS12YWxpZGF0aW9uL3BvLWR5bmFtaWMtZm9ybS1maWVsZC12YWxpZGF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0R5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wby1keW5hbWljLWZvcm0tdmFsaWRhdGlvbi9wby1keW5hbWljLWZvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRHluYW1pY0Zvcm1GaWVsZHNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1keW5hbWljLWZvcm0tZmllbGRzLWJhc2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIGRlIGNyaWHDp8OjbyBkb3MgY2FtcG9zIGRpbsOibWljb3MuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWR5bmFtaWMtZm9ybS1maWVsZHMnLFxuICB0ZW1wbGF0ZVVybDogJ3BvLWR5bmFtaWMtZm9ybS1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdGb3JtIH1dLFxuICBwcm92aWRlcnM6IFtQb0R5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvRHluYW1pY0Zvcm1GaWVsZHNDb21wb25lbnQgZXh0ZW5kcyBQb0R5bmFtaWNGb3JtRmllbGRzQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGRyZW4oJ2NvbXBvbmVudCcpIGNvbXBvbmVudHM6IFF1ZXJ5TGlzdDx7IG5hbWU6IHN0cmluZzsgZm9jdXM6ICgpID0+IHZvaWQgfT47XG5cbiAgcHJpdmF0ZSBwcmV2aW91c1ZhbHVlID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGl0bGVDYXNlUGlwZTogVGl0bGVDYXNlUGlwZSxcbiAgICBwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBQb0R5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VzOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGZvcm06IE5nRm9ybVxuICApIHtcbiAgICBzdXBlcih0aXRsZUNhc2VQaXBlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5maWVsZHMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUZpZWxkcyA9IHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpO1xuXG4gICAgICBpZiAoY2hhbmdlcy5maWVsZHMucHJldmlvdXNWYWx1ZSAmJiB0aGlzLmhhc0NvbnRhaW5lcigpKSB7XG4gICAgICAgIHRoaXMuaGFzQ2hhbmdlQ29udGFpbmVyKGNoYW5nZXMuZmllbGRzLnByZXZpb3VzVmFsdWUsIGNoYW5nZXMuZmllbGRzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghY2hhbmdlcy5maWVsZHMucHJldmlvdXNWYWx1ZSB8fCAhY2hhbmdlcy5maWVsZHMuY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9jdXMocHJvcGVydHk6IHN0cmluZykge1xuICAgIGNvbnN0IGZvdW5kQ29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRzLmZpbmQoY29tcG9uZW50ID0+IGNvbXBvbmVudC5uYW1lID09PSBwcm9wZXJ0eSk7XG4gICAgaWYgKGZvdW5kQ29tcG9uZW50KSB7XG4gICAgICBmb3VuZENvbXBvbmVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGlzRGlzYWJsZWQoZmllbGQ6IFBvRHluYW1pY0Zvcm1GaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRm9ybTtcbiAgfVxuXG4gIGFzeW5jIG9uQ2hhbmdlRmllbGQodmlzaWJsZUZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGQsIG9iamVjdFZhbHVlPzogYW55KSB7XG4gICAgY29uc3QgeyBwcm9wZXJ0eSB9ID0gdmlzaWJsZUZpZWxkO1xuICAgIGNvbnN0IGlzQm9vbGVhblR5cGUgPSB2aXNpYmxlRmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nO1xuICAgIGNvbnN0IGlzQ2hhbmdlZFZhbHVlRmllbGQgPSB0aGlzLnByZXZpb3VzVmFsdWVbcHJvcGVydHldICE9PSB0aGlzLnZhbHVlW3Byb3BlcnR5XTtcblxuICAgIGlmICh2aXNpYmxlRmllbGQub3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMub2JqZWN0VmFsdWUuZW1pdChvYmplY3RWYWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gdmVyaWZpY2Egc2UgbyBmb3JtdWxhcmlvIGVzdGEgdG91Y2hlZCBwYXJhIG7Do28gZGlzcGFyYXIgbyB2YWxpZGF0ZSBhbyBjYXJyZWdhciBhIHRlbGEuXG4gICAgaWYgKCh0aGlzLmZvcm0udG91Y2hlZCB8fCBpc0Jvb2xlYW5UeXBlKSAmJiBpc0NoYW5nZWRWYWx1ZUZpZWxkKSB7XG4gICAgICBjb25zdCB7IGNoYW5nZWRGaWVsZCwgY2hhbmdlZEZpZWxkSW5kZXggfSA9IHRoaXMuZ2V0RmllbGQocHJvcGVydHkpO1xuXG4gICAgICBpZiAoY2hhbmdlZEZpZWxkLnZhbGlkYXRlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVGaWVsZChjaGFuZ2VkRmllbGQsIGNoYW5nZWRGaWVsZEluZGV4LCB2aXNpYmxlRmllbGQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRyaWdnZXJWYWxpZGF0aW9uT25Gb3JtKGNoYW5nZWRGaWVsZEluZGV4KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVByZXZpb3VzVmFsdWUoKTtcbiAgfVxuXG4gIC8vZW1pdGUgbyB2YWxvciBhIGNhZGEgY2FyYWN0ZXJlIGRpZ2l0YWRvIG5vIGlucHV0XG4gIG9uQ2hhbmdlRmllbGRNb2RlbCh2aXNpYmxlRmllbGQ6IFBvRHluYW1pY0Zvcm1GaWVsZCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRlT25JbnB1dCkge1xuICAgICAgY29uc3QgeyBwcm9wZXJ0eSB9ID0gdmlzaWJsZUZpZWxkO1xuICAgICAgY29uc3QgeyBjaGFuZ2VkRmllbGRJbmRleCB9ID0gdGhpcy5nZXRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICB0aGlzLnRyaWdnZXJWYWxpZGF0aW9uT25Gb3JtKGNoYW5nZWRGaWVsZEluZGV4KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQcmV2aW91c1ZhbHVlKCkge1xuICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSkpO1xuICB9XG5cbiAgdHJhY2tCeShpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWVsZFZhbGlkYXRpb24oaW5kZXg6IG51bWJlciwgdmFsaWRhdGVkRmllbGQ6IFBvRHluYW1pY0Zvcm1GaWVsZFZhbGlkYXRpb24pIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW2luZGV4XTtcblxuICAgIHRoaXMuZmllbGRzW2luZGV4XSA9IHsgLi4uZmllbGQsIC4uLnZhbGlkYXRlZEZpZWxkLmZpZWxkIH07XG4gICAgdGhpcy51cGRhdGVGaWVsZHMoKTtcblxuICAgIGlmICh2YWxpZGF0ZWRGaWVsZC5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSkge1xuICAgICAgdGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0gPSB2YWxpZGF0ZWRGaWVsZC52YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZXMuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKHZhbGlkYXRlZEZpZWxkLmZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKGZpZWxkLnByb3BlcnR5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjaGFuZ2VkRmllbGRJbmRleCA9IHRoaXMuZmllbGRzLmZpbmRJbmRleChmaWVsZCA9PiBmaWVsZC5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xuICAgIGNvbnN0IGNoYW5nZWRGaWVsZCA9IHRoaXMuZmllbGRzW2NoYW5nZWRGaWVsZEluZGV4XTtcblxuICAgIHJldHVybiB7IGNoYW5nZWRGaWVsZCwgY2hhbmdlZEZpZWxkSW5kZXggfTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlclZhbGlkYXRpb25PbkZvcm0oY2hhbmdlZEZpZWxkSW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGlzVmFsaWRhdGFibGVGaWVsZCA9IHRoaXMudmFsaWRhdGVGaWVsZHM/Lmxlbmd0aFxuICAgICAgPyB0aGlzLnZhbGlkYXRlRmllbGRzQ2hlY2tlcih0aGlzLnZhbGlkYXRlRmllbGRzLCB0aGlzLmZpZWxkc1tjaGFuZ2VkRmllbGRJbmRleF0ucHJvcGVydHkpXG4gICAgICA6IHRydWU7XG4gICAgY29uc3QgaGFzVmFsaWRhdGlvbkZvcm0gPSB0aGlzLnZhbGlkYXRlICYmIGlzVmFsaWRhdGFibGVGaWVsZCAmJiB0aGlzLmZvcm1WYWxpZGF0ZS5vYnNlcnZlcnMubGVuZ3RoO1xuXG4gICAgaWYgKGhhc1ZhbGlkYXRpb25Gb3JtKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSB0aGlzLmZpZWxkc1tjaGFuZ2VkRmllbGRJbmRleF07XG4gICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5lbWl0KHVwZGF0ZWRGaWVsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWVsZHMoKSB7XG4gICAgdGhpcy5maWVsZHNDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkcyk7XG4gICAgdGhpcy52aXNpYmxlRmllbGRzID0gdGhpcy5nZXRWaXNpYmxlRmllbGRzKCk7XG4gICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZHNDaGVja2VyKHZhbGlkYXRlRmllbGRzOiBBcnJheTxzdHJpbmc+LCBwcm9wZXJ0eUZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGRbJ3Byb3BlcnR5J10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsaWRhdGVGaWVsZHMuc29tZSh2YWxpZGF0ZUZpZWxkSXRlbSA9PiB2YWxpZGF0ZUZpZWxkSXRlbSA9PT0gcHJvcGVydHlGaWVsZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlRmllbGQoZmllbGQ6IFBvRHluYW1pY0Zvcm1GaWVsZCwgZmllbGRJbmRleDogbnVtYmVyLCB2aXNpYmxlRmllbGQ6IFBvRHluYW1pY0Zvcm1GaWVsZCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV07XG5cbiAgICBjb25zdCBwcmV2aW91c0Rpc2FibGVkID0gdmlzaWJsZUZpZWxkLmRpc2FibGVkO1xuICAgIHZpc2libGVGaWVsZC5kaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VzLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRGaWVsZCA9IGF3YWl0IHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2VuZEZpZWxkQ2hhbmdlKGZpZWxkLCB2YWx1ZSkudG9Qcm9taXNlKCk7XG4gICAgICB0aGlzLmFwcGx5RmllbGRWYWxpZGF0aW9uKGZpZWxkSW5kZXgsIHZhbGlkYXRlZEZpZWxkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHZpc2libGVGaWVsZC5kaXNhYmxlZCA9IHByZXZpb3VzRGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNDaGFuZ2VDb250YWluZXIocHJldmlvdXM6IEFycmF5PFBvRHluYW1pY0Zvcm1GaWVsZD4sIGN1cnJlbnQ6IEFycmF5PFBvRHluYW1pY0Zvcm1GaWVsZD4pOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2QXJyYXkgPSBwcmV2aW91cy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgY29udGFpbmVyOiBpdGVtLmNvbnRhaW5lciB8fCBudWxsLFxuICAgICAgcHJvcGVydHk6IGl0ZW0ucHJvcGVydHksXG4gICAgICBpbmRleCxcbiAgICAgIG9yZGVyOiBpdGVtLm9yZGVyLFxuICAgICAgdmlzaWJsZTogaXRlbS52aXNpYmxlID8/IHRydWVcbiAgICB9KSk7XG5cbiAgICBjb25zdCBjdXJyQXJyYXkgPSBjdXJyZW50Lm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICBjb250YWluZXI6IGl0ZW0uY29udGFpbmVyIHx8IG51bGwsXG4gICAgICBwcm9wZXJ0eTogaXRlbS5wcm9wZXJ0eSxcbiAgICAgIGluZGV4LFxuICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICB2aXNpYmxlOiBpdGVtLnZpc2libGUgPz8gdHJ1ZVxuICAgIH0pKTtcblxuICAgIGNvbnN0IHByZXZDb250YWluZXJzID0gcHJldkFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0uY29udGFpbmVyKTtcbiAgICBjb25zdCBjdXJyQ29udGFpbmVycyA9IGN1cnJBcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLmNvbnRhaW5lcik7XG5cbiAgICBjb25zdCBwcmV2T3JkZXIgPSBwcmV2QXJyYXkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5vcmRlcik7XG4gICAgY29uc3QgY3Vyck9yZGVyID0gY3VyckFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0ub3JkZXIpO1xuXG4gICAgY29uc3QgcHJldlZpc2libGVUcnVlID0gcHJldkFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0udmlzaWJsZSA9PT0gdHJ1ZSk7XG4gICAgY29uc3QgY3VyclZpc2libGVUcnVlID0gY3VyckFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0udmlzaWJsZSA9PT0gdHJ1ZSk7XG5cbiAgICBjb25zdCBwcmV2VmlzaWJsZUZhbHNlID0gcHJldkFycmF5LmZpbHRlcihpdGVtID0+ICFpdGVtLnZpc2libGUpO1xuICAgIGNvbnN0IGN1cnJWaXNpYmxlRmFsc2UgPSBjdXJyQXJyYXkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0udmlzaWJsZSk7XG5cbiAgICAvLyBWZXJpZmljYSBtdWRhbsOnYSBuYSBxdWFudGlkYWRlIGRlIGNvbnRhaW5lcnNcbiAgICBpZiAocHJldkNvbnRhaW5lcnMubGVuZ3RoICE9PSBjdXJyQ29udGFpbmVycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY2EgbXVkYW7Dp2EgbmEgcXVhbnRpZGFkZSBkZSBvcmRlclxuICAgIGlmIChwcmV2T3JkZXIubGVuZ3RoICE9PSBjdXJyT3JkZXIubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNhIG11ZGFuw6dhIG5hIHF1YW50aWRhZGUgZGUgdmlzaWJsZVxuICAgIGlmIChwcmV2VmlzaWJsZVRydWUubGVuZ3RoICE9PSBjdXJyVmlzaWJsZVRydWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNhIG11ZGFuw6dhIG5hIHF1YW50aWRhZGUgZGUgdmlzaWJsZVxuICAgIGlmIChwcmV2VmlzaWJsZUZhbHNlLmxlbmd0aCAhPT0gY3VyclZpc2libGVGYWxzZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGN1cnJDb250YWluZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzQ29udGFpbmVyKHByZXZDb250YWluZXJzLCBjdXJyQ29udGFpbmVycywgJ2NvbnRhaW5lcicpO1xuICAgIH1cblxuICAgIGlmIChjdXJyT3JkZXIubGVuZ3RoKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZXNDb250YWluZXIocHJldk9yZGVyLCBjdXJyT3JkZXIsICdvcmRlcicpO1xuICAgIH1cblxuICAgIGlmIChjdXJyVmlzaWJsZVRydWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZXNDb250YWluZXIocHJldlZpc2libGVUcnVlLCBjdXJyVmlzaWJsZVRydWUsICd2aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJWaXNpYmxlRmFsc2UubGVuZ3RoKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZXNDb250YWluZXIocHJldlZpc2libGVGYWxzZSwgY3VyclZpc2libGVGYWxzZSwgJ3Zpc2libGUnKTtcbiAgICB9XG5cbiAgICAvL2F0dWFsaXphIGNvbnRhaW5lciBzZW0gbXVkYW7Dp2EgbmEgZXN0cnV0dXJhIGRhIGludGVyZmFjZVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGlmZk9iamVjdHNBcnJheShwcmV2aW91cywgdGhpcy5nZXRWaXNpYmxlRmllbGRzKCkpO1xuICAgIHRoaXMuY29udGFpbmVyRmllbGRzID0gdGhpcy51cGRhdGVGaWVsZENvbnRhaW5lcihyZXN1bHQsIHRoaXMuY29udGFpbmVyRmllbGRzKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmllbGRDb250YWluZXIoY2hhbmdlcywgY29udGFpbmVyRmllbGRzKSB7XG4gICAgY29uc3QgbWFwY2hhbmdlcyA9IG5ldyBNYXAoY2hhbmdlcy5tYXAob2JqID0+IFtvYmoucHJvcGVydHksIG9ial0pKTtcblxuICAgIGNvbnRhaW5lckZpZWxkcy5mb3JFYWNoKHN1YkFycmF5ID0+IHtcbiAgICAgIHN1YkFycmF5LmZvckVhY2goKHN1Ykl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW06IGFueSA9IG1hcGNoYW5nZXMuZ2V0KHN1Ykl0ZW0ucHJvcGVydHkpO1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHN1YkFycmF5W2luZGV4XSA9IHsgLi4uc3ViSXRlbSwgLi4uaXRlbSB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb250YWluZXJGaWVsZHM7XG4gIH1cblxuICBwcml2YXRlIGRpZmZPYmplY3RzQXJyYXkob2xkQXJyYXksIG5ld0FycmF5KSB7XG4gICAgY29uc3QgZGlmZmVyZW5jZXMgPSBbXTtcblxuICAgIG5ld0FycmF5LmZvckVhY2gobmV3T2JqID0+IHtcbiAgICAgIGNvbnN0IG9sZE9iaiA9IG9sZEFycmF5LmZpbmQobyA9PiBvLnByb3BlcnR5ID09PSBuZXdPYmoucHJvcGVydHkpO1xuXG4gICAgICBpZiAoIW9sZE9iaikge1xuICAgICAgICAvLyBTZSBvIG9iamV0byDDqSBub3ZvLCBhZGljaW9uYSB0b2RvIG8gb2JqZXRvIGNvbSBhIHByb3ByaWVkYWRlIFwicHJvcGVydHlcIlxuICAgICAgICBkaWZmZXJlbmNlcy5wdXNoKHsgLi4ubmV3T2JqIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVmVyaWZpY2FyIHNlIGjDoSBkaWZlcmVuw6dhcyBuYXMgcHJvcHJpZWRhZGVzXG4gICAgICAgIGNvbnN0IGRpZmYgPSB7IHByb3BlcnR5OiBuZXdPYmoucHJvcGVydHkgfTtcbiAgICAgICAgbGV0IGhhc0RpZmZlcmVuY2VzID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV3T2JqKSB7XG4gICAgICAgICAgaWYgKG5ld09ialtrZXldICE9PSBvbGRPYmpba2V5XSkge1xuICAgICAgICAgICAgZGlmZltrZXldID0gbmV3T2JqW2tleV07XG4gICAgICAgICAgICBoYXNEaWZmZXJlbmNlcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0RpZmZlcmVuY2VzKSB7XG4gICAgICAgICAgZGlmZmVyZW5jZXMucHVzaChkaWZmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy9yZXRvcm5hIG11ZGFuw6dhcyBub3MgZmllbGRzIHBhcmEgYXR1YWxpemHDp8OjbyBkbyBjb250YWluZXJGaWVsZHNcbiAgICByZXR1cm4gZGlmZmVyZW5jZXM7XG4gIH1cblxuICBwcml2YXRlIGhhc0NvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlRmllbGRzICYmIHRoaXMudmlzaWJsZUZpZWxkcy5zb21lKGZpZWxkID0+IGZpZWxkLmNvbnRhaW5lcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5nZXNDb250YWluZXIocHJldkNvbnRhaW5lcnMsIGN1cnJDb250YWluZXJzLCBrZXkpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZDb250YWluZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwcmV2ID0gcHJldkNvbnRhaW5lcnNbaV07XG4gICAgICBjb25zdCBjdXJyID0gY3VyckNvbnRhaW5lcnNbaV07XG5cbiAgICAgIC8vVmVyaWZpY2Egc2UgY29udGFpbmVyIG11ZG91IGRlIHBvc2nDp8Ojb1xuICAgICAgaWYgKHByZXZba2V5XSA9PT0gY3VycltrZXldICYmIHByZXYuaW5kZXggIT09IGN1cnIuaW5kZXgpIHtcbiAgICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy9WZXJpZmljYSBzZSBmb2kgYXBlbmFzIG11ZGFuw6dhIGRhIHN0cmluZyBlbSBjYXNvIGRvIGNvbnRhaW5lciBvdSB2YWxvciBubyBvcmRlclxuICAgICAgaWYgKHByZXZba2V5XSAhPT0gY3VycltrZXldICYmIHByZXYuaW5kZXggPT09IGN1cnIuaW5kZXgpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ29yZGVyJykge1xuICAgICAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGFpbmVyRmllbGRzLmZvckVhY2goc3ViSXRlbSA9PlxuICAgICAgICAgIHN1Ykl0ZW0uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnByb3BlcnR5ID09PSBjdXJyLnByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIGl0ZW1ba2V5XSA9IGN1cnJba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy92ZXJpZmljYSBzZSBtYW50ZXZlIG8gbWVzbW8gbsO6bWVybyBkZSBjb250YWluZXIsIG1hcyBhbHRlcm91IHByb3BlcnR5IGRvIGNvbnRhaW5lclxuICAgICAgaWYgKHByZXZba2V5XSAhPT0gY3VycltrZXldICYmIHByZXYucHJvcGVydHkgIT09IGN1cnIucHJvcGVydHkpIHtcbiAgICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXJvd1wiIFtjbGFzcy5wby1keW5hbWljXT1cImhhc0NvbnRhaW5lcnNcIiAqbmdJZj1cInZpc2libGVGaWVsZHMgJiYgdmlzaWJsZUZpZWxkcy5sZW5ndGggPiAwXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgaGFzQ29udGFpbmVycyA/IHBvQ29udGVudENvbnRhaW5lciA6IHBvQ29udGVudDtcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBoYXNDb250YWluZXJzID8gY29udGFpbmVyRmllbGRzIDogdmlzaWJsZUZpZWxkcyB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9Db250ZW50IGxldC1maWVsZHM+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxwby1kaXZpZGVyICpuZ0lmPVwiZmllbGQ/LmRpdmlkZXI/LnRyaW0oKVwiIGNsYXNzPVwicG8tc20tMTJcIiBbcC1sYWJlbF09XCJmaWVsZC5kaXZpZGVyXCI+IDwvcG8tZGl2aWRlcj5cblxuICAgIDxwby1kYXRlcGlja2VyXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnZGF0ZXBpY2tlcicpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLWVycm9yLWFzeW5jXT1cImZpZWxkLmVycm9yQXN5bmNGdW5jdGlvblwiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWZvcm1hdF09XCJmaWVsZC5mb3JtYXRcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWlzby1mb3JtYXRdPVwiZmllbGQuaXNvRm9ybWF0XCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxvY2FsZV09XCJmaWVsZC5sb2NhbGVcIlxuICAgICAgW3AtbWF4LWRhdGVdPVwiZmllbGQubWF4VmFsdWVcIlxuICAgICAgW3AtbWluLWRhdGVdPVwiZmllbGQubWluVmFsdWVcIlxuICAgICAgW3Atbm8tYXV0b2NvbXBsZXRlXT1cImZpZWxkLm5vQXV0b2NvbXBsZXRlXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgID5cbiAgICA8L3BvLWRhdGVwaWNrZXI+XG5cbiAgICA8cG8tZGF0ZXBpY2tlci1yYW5nZVxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2RhdGVwaWNrZXJyYW5nZScpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxpdGVyYWxzXT1cImZpZWxkLmxpdGVyYWxzXCJcbiAgICAgIFtwLW1heC1kYXRlXT1cImZpZWxkLm1heFZhbHVlXCJcbiAgICAgIFtwLW1pbi1kYXRlXT1cImZpZWxkLm1pblZhbHVlXCJcbiAgICAgIFtwLW5vLWF1dG9jb21wbGV0ZV09XCJmaWVsZC5ub0F1dG9jb21wbGV0ZVwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1yZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgID5cbiAgICA8L3BvLWRhdGVwaWNrZXItcmFuZ2U+XG5cbiAgICA8cG8taW5wdXRcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdpbnB1dCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLWVycm9yLWFzeW5jLXByb3BlcnRpZXNdPVwiZmllbGQuZXJyb3JBc3luY1Byb3BlcnRpZXNcIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgICAgW3AtbWFzay1mb3JtYXQtbW9kZWxdPVwiZmllbGQubWFza0Zvcm1hdE1vZGVsXCJcbiAgICAgIFtwLW1hc2tdPVwiZmllbGQubWFza1wiXG4gICAgICBbcC1tYXhsZW5ndGhdPVwiZmllbGQubWF4TGVuZ3RoXCJcbiAgICAgIFtwLW1pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGhcIlxuICAgICAgW3Atbm8tYXV0b2NvbXBsZXRlXT1cImZpZWxkLm5vQXV0b2NvbXBsZXRlXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLXBhdHRlcm5dPVwiZmllbGQucGF0dGVyblwiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1yZXF1aXJlZC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLnJlcXVpcmVkRmllbGRFcnJvck1lc3NhZ2VcIlxuICAgICAgW3Atc2hvdy1yZXF1aXJlZF09XCJmaWVsZC5zaG93UmVxdWlyZWRcIlxuICAgICAgKHAtY2hhbmdlKT1cIm9uQ2hhbmdlRmllbGQoZmllbGQpXCJcbiAgICAgIChwLWNoYW5nZS1tb2RlbCk9XCJvbkNoYW5nZUZpZWxkTW9kZWwoZmllbGQpXCJcbiAgICAgIFtwLWljb25dPVwiZmllbGQuaWNvblwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICBbcC1yZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXG4gICAgPlxuICAgIDwvcG8taW5wdXQ+XG5cbiAgICA8cG8tbnVtYmVyXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnbnVtYmVyJylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtY2xlYW5dPVwiZmllbGQuY2xlYW5cIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtZXJyb3ItcGF0dGVybl09XCJmaWVsZC5lcnJvck1lc3NhZ2VcIlxuICAgICAgW3AtZXJyb3ItYXN5bmMtcHJvcGVydGllc109XCJmaWVsZC5lcnJvckFzeW5jUHJvcGVydGllc1wiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1taW5dPVwiZmllbGQubWluVmFsdWVcIlxuICAgICAgW3AtbWF4XT1cImZpZWxkLm1heFZhbHVlXCJcbiAgICAgIFtwLW1heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW3AtbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwiZmllbGQubm9BdXRvY29tcGxldGVcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atc3RlcF09XCJmaWVsZC5zdGVwXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICA+XG4gICAgPC9wby1udW1iZXI+XG5cbiAgICA8cG8tZGVjaW1hbFxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2RlY2ltYWwnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1jbGVhbl09XCJmaWVsZC5jbGVhblwiXG4gICAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1hc3luYy1wcm9wZXJ0aWVzXT1cImZpZWxkLmVycm9yQXN5bmNQcm9wZXJ0aWVzXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWRlY2ltYWxzLWxlbmd0aF09XCJmaWVsZC5kZWNpbWFsc0xlbmd0aFwiXG4gICAgICBbcC10aG91c2FuZC1tYXhsZW5ndGhdPVwiZmllbGQudGhvdXNhbmRNYXhsZW5ndGhcIlxuICAgICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxvY2FsZV09XCJmaWVsZC5sb2NhbGVcIlxuICAgICAgW3AtbWluXT1cImZpZWxkLm1pblZhbHVlXCJcbiAgICAgIFtwLW1heF09XCJmaWVsZC5tYXhWYWx1ZVwiXG4gICAgICBbcC1tYXhsZW5ndGhdPVwiZmllbGQubWF4TGVuZ3RoXCJcbiAgICAgIFtwLW1pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGhcIlxuICAgICAgW3Atbm8tYXV0b2NvbXBsZXRlXT1cImZpZWxkLm5vQXV0b2NvbXBsZXRlXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgID5cbiAgICA8L3BvLWRlY2ltYWw+XG5cbiAgICA8cG8tc2VsZWN0XG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnc2VsZWN0JylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtZmllbGQtbGFiZWxdPVwiZmllbGQuZmllbGRMYWJlbFwiXG4gICAgICBbcC1maWVsZC12YWx1ZV09XCJmaWVsZC5maWVsZFZhbHVlXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1vcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxuICAgICAgW3AtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgW3AtZmllbGQtZXJyb3ItbWVzc2FnZV09XCJmaWVsZC5lcnJvck1lc3NhZ2VcIlxuICAgICAgW3Atc2hvdy1yZXF1aXJlZF09XCJmaWVsZC5zaG93UmVxdWlyZWRcIlxuICAgICAgKHAtY2hhbmdlKT1cIm9uQ2hhbmdlRmllbGQoZmllbGQpXCJcbiAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICA+XG4gICAgPC9wby1zZWxlY3Q+XG5cbiAgICA8cG8tcmFkaW8tZ3JvdXBcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdyYWRpb0dyb3VwJylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtY29sdW1uc109XCJmaWVsZC5jb2x1bW5zIHx8IDNcIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tcmFkaW8tZ3JvdXA+XG5cbiAgICA8cG8tc3dpdGNoXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnc3dpdGNoJylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtZm9ybWF0LW1vZGVsXT1cImZpZWxkLmZvcm1hdE1vZGVsXCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1sYWJlbC1vZmZdPVwiZmllbGQuYm9vbGVhbkZhbHNlXCJcbiAgICAgIFtwLWxhYmVsLW9uXT1cImZpZWxkLmJvb2xlYW5UcnVlXCJcbiAgICAgIFtwLWxhYmVsLXBvc2l0aW9uXT1cImZpZWxkLmxhYmVsUG9zaXRpb25cIlxuICAgICAgW3AtaGlkZS1sYWJlbC1zdGF0dXNdPVwiZmllbGQuaGlkZUxhYmVsU3RhdHVzXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tc3dpdGNoPlxuXG4gICAgPHBvLWNoZWNrYm94XG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnY2hlY2tib3gnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLXNpemVdPVwiZmllbGQuc2l6ZVwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgID5cbiAgICA8L3BvLWNoZWNrYm94PlxuXG4gICAgPHBvLWNvbWJvXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnY29tYm8nKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBwLWVtaXQtb2JqZWN0LXZhbHVlXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWZpZWxkLWxhYmVsXT1cImZpZWxkLmZpZWxkTGFiZWxcIlxuICAgICAgW3AtZmllbGQtdmFsdWVdPVwiZmllbGQuZmllbGRWYWx1ZVwiXG4gICAgICBbcC1maWx0ZXItcGFyYW1zXT1cImZpZWxkLnBhcmFtc1wiXG4gICAgICBbcC1maWx0ZXItc2VydmljZV09XCJmaWVsZC5vcHRpb25zU2VydmljZVwiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtaW5maW5pdGUtc2Nyb2xsXT1cImZpZWxkLmluZmluaXRlU2Nyb2xsXCJcbiAgICAgIFtwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZV09XCJmaWVsZC5pbmZpbml0ZVNjcm9sbERpc3RhbmNlIHx8IDEwMFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1saXRlcmFsc109XCJmaWVsZC5saXRlcmFsc1wiXG4gICAgICBbcC1vcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atc29ydF09XCJmaWVsZC5zb3J0XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkLCAkZXZlbnQpXCJcbiAgICAgIFtwLWljb25dPVwiZmllbGQuaWNvblwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICBbcC1maWx0ZXItbWlubGVuZ3RoXT1cImZpZWxkLmZpbHRlck1pbmxlbmd0aFwiXG4gICAgICBbcC1maWx0ZXItbW9kZV09XCJmaWVsZC5maWx0ZXJNb2RlXCJcbiAgICAgIFtwLWRpc2FibGVkLWluaXQtZmlsdGVyXT1cImZpZWxkLmRpc2FibGVkSW5pdEZpbHRlclwiXG4gICAgICBbcC1kaXNhYmxlZC10YWItZmlsdGVyXT1cImZpZWxkLmRpc2FibGVkVGFiRmlsdGVyXCJcbiAgICAgIFtwLWRlYm91bmNlLXRpbWVdPVwiZmllbGQuZGVib3VuY2VUaW1lXCJcbiAgICAgIFtwLWNoYW5nZS1vbi1lbnRlcl09XCJmaWVsZC5jaGFuZ2VPbkVudGVyXCJcbiAgICA+XG4gICAgPC9wby1jb21ibz5cblxuICAgIDxwby1sb29rdXBcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdsb29rdXAnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBwLWZpZWxkLWxhYmVsPVwibGFiZWxcIlxuICAgICAgcC1maWVsZC12YWx1ZT1cInZhbHVlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWNvbHVtbnNdPVwiZmllbGQuY29sdW1uc1wiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1maWVsZC1sYWJlbF09XCJmaWVsZC5maWVsZExhYmVsIHx8ICdsYWJlbCdcIlxuICAgICAgW3AtZmllbGQtdmFsdWVdPVwiZmllbGQuZmllbGRWYWx1ZSB8fCAndmFsdWUnXCJcbiAgICAgIFtwLWZpbHRlci1wYXJhbXNdPVwiZmllbGQucGFyYW1zXCJcbiAgICAgIFtwLWZpbHRlci1zZXJ2aWNlXT1cImZpZWxkLnNlYXJjaFNlcnZpY2VcIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1hdXRvLWhlaWdodF09XCJmaWVsZC5hdXRvSGVpZ2h0XCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1maWVsZC1mb3JtYXRdPVwiZmllbGQuZm9ybWF0XCJcbiAgICAgIFtwLWluZmluaXRlLXNjcm9sbF09XCJmaWVsZC5pbmZpbml0ZVNjcm9sbFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1saXRlcmFsc109XCJmaWVsZC5saXRlcmFsc1wiXG4gICAgICBbcC1tdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiXG4gICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwiZmllbGQubm9BdXRvY29tcGxldGVcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3AtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgW3AtZmllbGQtZXJyb3ItbWVzc2FnZV09XCJmaWVsZC5lcnJvck1lc3NhZ2VcIlxuICAgICAgW3Atc2hvdy1yZXF1aXJlZF09XCJmaWVsZC5zaG93UmVxdWlyZWRcIlxuICAgICAgKHAtY2hhbmdlKT1cIm9uQ2hhbmdlRmllbGQoZmllbGQpXCJcbiAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgIFtwLWFkdmFuY2VkLWZpbHRlcnNdPVwiZmllbGQuYWR2YW5jZWRGaWx0ZXJzXCJcbiAgICAgIChwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMpPVwiZmllbGQuY2hhbmdlVmlzaWJsZUNvbHVtbnM/LigkZXZlbnQpXCJcbiAgICAgIChwLXJlc3RvcmUtY29sdW1uLW1hbmFnZXIpPVwiZmllbGQuY29sdW1uUmVzdG9yZU1hbmFnZXI/LigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9wby1sb29rdXA+XG5cbiAgICA8cG8tY2hlY2tib3gtZ3JvdXBcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdjaGVja2JveEdyb3VwJylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtY29sdW1uc109XCJmaWVsZC5jb2x1bW5zIHx8IDNcIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIFtwLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tY2hlY2tib3gtZ3JvdXA+XG5cbiAgICA8cG8tbXVsdGlzZWxlY3RcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdtdWx0aXNlbGVjdCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtYXV0by1oZWlnaHRdPVwiZmllbGQuYXV0b0hlaWdodFwiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgICAgW3AtbGl0ZXJhbHNdPVwiZmllbGQubGl0ZXJhbHNcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICBbcC1maWVsZC1sYWJlbF09XCJmaWVsZC5maWVsZExhYmVsXCJcbiAgICAgIFtwLWZpZWxkLXZhbHVlXT1cImZpZWxkLmZpZWxkVmFsdWVcIlxuICAgICAgW3AtZmlsdGVyLXNlcnZpY2VdPVwiZmllbGQub3B0aW9uc1NlcnZpY2VcIlxuICAgICAgW3AtZmlsdGVyLW1vZGVdPVwiZmllbGQuZmlsdGVyTW9kZVwiXG4gICAgICBbcC1kZWJvdW5jZS10aW1lXT1cImZpZWxkLmRlYm91bmNlVGltZVwiXG4gICAgICBbcC1zb3J0XT1cImZpZWxkLnNvcnRcIlxuICAgICAgW3AtcGxhY2Vob2xkZXItc2VhcmNoXT1cImZpZWxkLnBsYWNlaG9sZGVyU2VhcmNoXCJcbiAgICAgIFtwLWhpZGUtc2VhcmNoXT1cImZpZWxkLmhpZGVTZWFyY2hcIlxuICAgICAgW3AtaGlkZS1zZWxlY3QtYWxsXT1cImZpZWxkLmhpZGVTZWxlY3RBbGxcIlxuICAgID5cbiAgICA8L3BvLW11bHRpc2VsZWN0PlxuXG4gICAgPHBvLXRleHRhcmVhXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAndGV4dGFyZWEnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1tYXhsZW5ndGhdPVwiZmllbGQubWF4TGVuZ3RoXCJcbiAgICAgIFtwLW1pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGhcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3AtcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxuICAgICAgW3AtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgW3AtZmllbGQtZXJyb3ItbWVzc2FnZV09XCJmaWVsZC5lcnJvck1lc3NhZ2VcIlxuICAgICAgW3Atc2hvdy1yZXF1aXJlZF09XCJmaWVsZC5zaG93UmVxdWlyZWRcIlxuICAgICAgW3Atcm93c109XCJmaWVsZC5yb3dzXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICAocC1jaGFuZ2UtbW9kZWwpPVwib25DaGFuZ2VGaWVsZE1vZGVsKGZpZWxkKVwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgPlxuICAgIDwvcG8tdGV4dGFyZWE+XG5cbiAgICA8cG8tcGFzc3dvcmRcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdwYXNzd29yZCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLWVycm9yLWFzeW5jLXByb3BlcnRpZXNdPVwiZmllbGQuZXJyb3JBc3luY1Byb3BlcnRpZXNcIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtaGlkZS1wYXNzd29yZC1wZWVrXT1cImZpZWxkLmhpZGVQYXNzd29yZFBlZWtcIlxuICAgICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW1heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW3AtbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwiZmllbGQubm9BdXRvY29tcGxldGVcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3AtcGF0dGVybl09XCJmaWVsZC5wYXR0ZXJuXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgID5cbiAgICA8L3BvLXBhc3N3b3JkPlxuXG4gICAgPHBvLXVwbG9hZFxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ3VwbG9hZCcpXCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWF1dG8tdXBsb2FkXT1cImZpZWxkLmF1dG9VcGxvYWRcIlxuICAgICAgW3AtZGlyZWN0b3J5XT1cImZpZWxkLmRpcmVjdG9yeVwiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1kcmFnLWRyb3BdPVwiZmllbGQuZHJhZ0Ryb3BcIlxuICAgICAgW3AtZHJhZy1kcm9wLWhlaWdodF09XCJmaWVsZC5kcmFnRHJvcEhlaWdodFwiXG4gICAgICBbcC1yZXN0cmljdGlvbnNdPVwiZmllbGQucmVzdHJpY3Rpb25zXCJcbiAgICAgIFtwLWZvcm0tZmllbGRdPVwiZmllbGQuZm9ybUZpZWxkXCJcbiAgICAgIFtwLWhlYWRlcnNdPVwiZmllbGQuaGVhZGVyc1wiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtaGlkZS1yZXN0cmljdGlvbnMtaW5mb109XCJmaWVsZC5oaWRlUmVzdHJpY3Rpb25zSW5mb1wiXG4gICAgICBbcC1oaWRlLXNlbGVjdC1idXR0b25dPVwiZmllbGQuaGlkZVNlbGVjdEJ1dHRvblwiXG4gICAgICBbcC1oaWRlLXNlbmQtYnV0dG9uXT1cImZpZWxkLmhpZGVTZW5kQnV0dG9uXCJcbiAgICAgIFtwLW11bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxpdGVyYWxzXT1cImZpZWxkLmxpdGVyYWxzXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIChwLWVycm9yKT1cImZpZWxkLm9uRXJyb3IoJGV2ZW50KVwiXG4gICAgICAocC1zdWNjZXNzKT1cImZpZWxkLm9uU3VjY2VzcygkZXZlbnQpXCJcbiAgICAgIChwLXVwbG9hZCk9XCJmaWVsZC5vblVwbG9hZCgkZXZlbnQpXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICAocC1jaGFuZ2UtbW9kZWwpPVwib25DaGFuZ2VGaWVsZE1vZGVsKGZpZWxkKVwiXG4gICAgICBbcC11cmxdPVwiZmllbGQudXJsXCJcbiAgICA+XG4gICAgPC9wby11cGxvYWQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwb0NvbnRlbnRDb250YWluZXIgbGV0LWZpZWxkcz5cbiAgPHBvLWR5bmFtaWMtY29udGFpbmVyIFtwLWZpZWxkc109XCJmaWVsZHNcIiBbcC1jb250ZW50XT1cInBvQ29udGVudFwiPjwvcG8tZHluYW1pYy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
580
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy1mb3JtLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZHluYW1pYy9wby1keW5hbWljLWZvcm0vcG8tZHluYW1pYy1mb3JtLWZpZWxkcy9wby1keW5hbWljLWZvcm0tZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1keW5hbWljL3BvLWR5bmFtaWMtZm9ybS9wby1keW5hbWljLWZvcm0tZmllbGRzL3BvLWR5bmFtaWMtZm9ybS1maWVsZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQXVDLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbEgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDTnpGLHdCQUtnQjs7O0lBTmxCLDhCQUF5RztJQUN2RyxxR0FLQztJQUNILGlCQUFNOzs7OztJQVBjLGtEQUFrQztJQUVqRCxjQUVRO0lBQUEsQUFGUiw4RkFFUSw2SEFFYjs7O0lBS0ksaUNBQW9HOzs7SUFBeEMsMENBQXlCOzs7O0lBRXJGLDRDQTJCQztJQXZCQywyYUFBbUM7SUFxQm5DLDRSQUFZLDhCQUFvQixLQUFDO0lBR25DLGlCQUFnQjs7OztJQXpCZCx3Q0FBdUI7SUFDdkIsK0RBQW1DO0lBc0JuQyxBQUZBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURB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eEIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELG9GQUFvRjtZQUNwRixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3NGQXRTVSw0QkFBNEI7NkRBQTVCLDRCQUE0Qjs7Ozs7OENBRjVCLENBQUMsOEJBQThCLENBQUMsRUFENUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7WUM0YnJFLEFBdGNBLEFBVEEsNkVBQXlHLGlIQVN0RSxpSEFzY1M7O1lBL2NZLHdFQUErQzs7O2lGRHNCMUYsNEJBQTRCO2NBTnhDLFNBQVM7MkJBQ0Usd0JBQXdCLGlCQUVuQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxhQUN4RCxDQUFDLDhCQUE4QixDQUFDO2dKQUdoQixVQUFVO2tCQUFwQyxZQUFZO21CQUFDLFdBQVc7O2tGQURkLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25DaGFuZ2VzLCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBQb0R5bmFtaWNGb3JtRmllbGQgfSBmcm9tICcuLi9wby1keW5hbWljLWZvcm0tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRHluYW1pY0Zvcm1GaWVsZFZhbGlkYXRpb24gfSBmcm9tICcuLi9wby1keW5hbWljLWZvcm0tdmFsaWRhdGlvbi9wby1keW5hbWljLWZvcm0tZmllbGQtdmFsaWRhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9EeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vcG8tZHluYW1pYy1mb3JtLXZhbGlkYXRpb24vcG8tZHluYW1pYy1mb3JtLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb0R5bmFtaWNGb3JtRmllbGRzQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tZHluYW1pYy1mb3JtLWZpZWxkcy1iYXNlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSBkZSBjcmlhw6fDo28gZG9zIGNhbXBvcyBkaW7Dom1pY29zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1keW5hbWljLWZvcm0tZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICdwby1keW5hbWljLWZvcm0tZmllbGRzLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XSxcbiAgcHJvdmlkZXJzOiBbUG9EeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNGb3JtRmllbGRzQ29tcG9uZW50IGV4dGVuZHMgUG9EeW5hbWljRm9ybUZpZWxkc0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkcmVuKCdjb21wb25lbnQnKSBjb21wb25lbnRzOiBRdWVyeUxpc3Q8eyBuYW1lOiBzdHJpbmc7IGZvY3VzOiAoKSA9PiB2b2lkIH0+O1xuXG4gIHByaXZhdGUgcHJldmlvdXNWYWx1ZSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRpdGxlQ2FzZVBpcGU6IFRpdGxlQ2FzZVBpcGUsXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogUG9EeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlczogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmb3JtOiBOZ0Zvcm1cbiAgKSB7XG4gICAgc3VwZXIodGl0bGVDYXNlUGlwZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZmllbGRzKSB7XG4gICAgICB0aGlzLnZpc2libGVGaWVsZHMgPSB0aGlzLmdldFZpc2libGVGaWVsZHMoKTtcblxuICAgICAgaWYgKGNoYW5nZXMuZmllbGRzLnByZXZpb3VzVmFsdWUgJiYgdGhpcy5oYXNDb250YWluZXIoKSkge1xuICAgICAgICB0aGlzLmhhc0NoYW5nZUNvbnRhaW5lcihjaGFuZ2VzLmZpZWxkcy5wcmV2aW91c1ZhbHVlLCBjaGFuZ2VzLmZpZWxkcy5jdXJyZW50VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNoYW5nZXMuZmllbGRzLnByZXZpb3VzVmFsdWUgfHwgIWNoYW5nZXMuZmllbGRzLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvY3VzKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBmb3VuZENvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50cy5maW5kKGNvbXBvbmVudCA9PiBjb21wb25lbnQubmFtZSA9PT0gcHJvcGVydHkpO1xuICAgIGlmIChmb3VuZENvbXBvbmVudCkge1xuICAgICAgZm91bmRDb21wb25lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBpc0Rpc2FibGVkKGZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZvcm07XG4gIH1cblxuICBhc3luYyBvbkNoYW5nZUZpZWxkKHZpc2libGVGaWVsZDogUG9EeW5hbWljRm9ybUZpZWxkLCBvYmplY3RWYWx1ZT86IGFueSkge1xuICAgIGNvbnN0IHsgcHJvcGVydHkgfSA9IHZpc2libGVGaWVsZDtcbiAgICBjb25zdCBpc0Jvb2xlYW5UeXBlID0gdmlzaWJsZUZpZWxkLnR5cGUgPT09ICdib29sZWFuJztcbiAgICBjb25zdCBpc0NoYW5nZWRWYWx1ZUZpZWxkID0gdGhpcy5wcmV2aW91c1ZhbHVlW3Byb3BlcnR5XSAhPT0gdGhpcy52YWx1ZVtwcm9wZXJ0eV07XG5cbiAgICBpZiAodmlzaWJsZUZpZWxkLm9wdGlvbnNTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm9iamVjdFZhbHVlLmVtaXQob2JqZWN0VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIHZlcmlmaWNhIHNlIG8gZm9ybXVsYXJpbyBlc3RhIHRvdWNoZWQgcGFyYSBuw6NvIGRpc3BhcmFyIG8gdmFsaWRhdGUgYW8gY2FycmVnYXIgYSB0ZWxhLlxuICAgIGlmICgodGhpcy5mb3JtLnRvdWNoZWQgfHwgaXNCb29sZWFuVHlwZSkgJiYgaXNDaGFuZ2VkVmFsdWVGaWVsZCkge1xuICAgICAgY29uc3QgeyBjaGFuZ2VkRmllbGQsIGNoYW5nZWRGaWVsZEluZGV4IH0gPSB0aGlzLmdldEZpZWxkKHByb3BlcnR5KTtcblxuICAgICAgaWYgKGNoYW5nZWRGaWVsZC52YWxpZGF0ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlRmllbGQoY2hhbmdlZEZpZWxkLCBjaGFuZ2VkRmllbGRJbmRleCwgdmlzaWJsZUZpZWxkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmlnZ2VyVmFsaWRhdGlvbk9uRm9ybShjaGFuZ2VkRmllbGRJbmRleCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVQcmV2aW91c1ZhbHVlKCk7XG4gIH1cblxuICAvL2VtaXRlIG8gdmFsb3IgYSBjYWRhIGNhcmFjdGVyZSBkaWdpdGFkbyBubyBpbnB1dFxuICBvbkNoYW5nZUZpZWxkTW9kZWwodmlzaWJsZUZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGQpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0ZU9uSW5wdXQpIHtcbiAgICAgIGNvbnN0IHsgcHJvcGVydHkgfSA9IHZpc2libGVGaWVsZDtcbiAgICAgIGNvbnN0IHsgY2hhbmdlZEZpZWxkSW5kZXggfSA9IHRoaXMuZ2V0RmllbGQocHJvcGVydHkpO1xuICAgICAgdGhpcy50cmlnZ2VyVmFsaWRhdGlvbk9uRm9ybShjaGFuZ2VkRmllbGRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUHJldmlvdXNWYWx1ZSgpIHtcbiAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpKTtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmllbGRWYWxpZGF0aW9uKGluZGV4OiBudW1iZXIsIHZhbGlkYXRlZEZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGRWYWxpZGF0aW9uKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkc1tpbmRleF07XG5cbiAgICB0aGlzLmZpZWxkc1tpbmRleF0gPSB7IC4uLmZpZWxkLCAuLi52YWxpZGF0ZWRGaWVsZC5maWVsZCB9O1xuICAgIHRoaXMudXBkYXRlRmllbGRzKCk7XG5cbiAgICBpZiAodmFsaWRhdGVkRmllbGQuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgIHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldID0gdmFsaWRhdGVkRmllbGQudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VzLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmICh2YWxpZGF0ZWRGaWVsZC5mb2N1cykge1xuICAgICAgdGhpcy5mb2N1cyhmaWVsZC5wcm9wZXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgY29uc3QgY2hhbmdlZEZpZWxkSW5kZXggPSB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICBjb25zdCBjaGFuZ2VkRmllbGQgPSB0aGlzLmZpZWxkc1tjaGFuZ2VkRmllbGRJbmRleF07XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkRmllbGQsIGNoYW5nZWRGaWVsZEluZGV4IH07XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJWYWxpZGF0aW9uT25Gb3JtKGNoYW5nZWRGaWVsZEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpc1ZhbGlkYXRhYmxlRmllbGQgPSB0aGlzLnZhbGlkYXRlRmllbGRzPy5sZW5ndGhcbiAgICAgID8gdGhpcy52YWxpZGF0ZUZpZWxkc0NoZWNrZXIodGhpcy52YWxpZGF0ZUZpZWxkcywgdGhpcy5maWVsZHNbY2hhbmdlZEZpZWxkSW5kZXhdLnByb3BlcnR5KVxuICAgICAgOiB0cnVlO1xuICAgIGNvbnN0IGhhc1ZhbGlkYXRpb25Gb3JtID0gdGhpcy52YWxpZGF0ZSAmJiBpc1ZhbGlkYXRhYmxlRmllbGQgJiYgdGhpcy5mb3JtVmFsaWRhdGUub2JzZXJ2ZXJzLmxlbmd0aDtcblxuICAgIGlmIChoYXNWYWxpZGF0aW9uRm9ybSkge1xuICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdGhpcy5maWVsZHNbY2hhbmdlZEZpZWxkSW5kZXhdO1xuICAgICAgdGhpcy5mb3JtVmFsaWRhdGUuZW1pdCh1cGRhdGVkRmllbGQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmllbGRzKCkge1xuICAgIHRoaXMuZmllbGRzQ2hhbmdlLmVtaXQodGhpcy5maWVsZHMpO1xuICAgIHRoaXMudmlzaWJsZUZpZWxkcyA9IHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpO1xuICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRmllbGRzQ2hlY2tlcih2YWxpZGF0ZUZpZWxkczogQXJyYXk8c3RyaW5nPiwgcHJvcGVydHlGaWVsZDogUG9EeW5hbWljRm9ybUZpZWxkWydwcm9wZXJ0eSddKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRmllbGRzLnNvbWUodmFsaWRhdGVGaWVsZEl0ZW0gPT4gdmFsaWRhdGVGaWVsZEl0ZW0gPT09IHByb3BlcnR5RmllbGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUZpZWxkKGZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGQsIGZpZWxkSW5kZXg6IG51bWJlciwgdmlzaWJsZUZpZWxkOiBQb0R5bmFtaWNGb3JtRmllbGQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldO1xuXG4gICAgY29uc3QgcHJldmlvdXNEaXNhYmxlZCA9IHZpc2libGVGaWVsZC5kaXNhYmxlZDtcbiAgICB2aXNpYmxlRmllbGQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlcy5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsaWRhdGVkRmllbGQgPSBhd2FpdCB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnNlbmRGaWVsZENoYW5nZShmaWVsZCwgdmFsdWUpLnRvUHJvbWlzZSgpO1xuICAgICAgdGhpcy5hcHBseUZpZWxkVmFsaWRhdGlvbihmaWVsZEluZGV4LCB2YWxpZGF0ZWRGaWVsZCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB2aXNpYmxlRmllbGQuZGlzYWJsZWQgPSBwcmV2aW91c0Rpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzQ2hhbmdlQ29udGFpbmVyKHByZXZpb3VzOiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+LCBjdXJyZW50OiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+KTogdm9pZCB7XG4gICAgY29uc3QgcHJldkFycmF5ID0gcHJldmlvdXMubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgIGNvbnRhaW5lcjogaXRlbS5jb250YWluZXIgfHwgbnVsbCxcbiAgICAgIHByb3BlcnR5OiBpdGVtLnByb3BlcnR5LFxuICAgICAgaW5kZXgsXG4gICAgICBvcmRlcjogaXRlbS5vcmRlcixcbiAgICAgIHZpc2libGU6IGl0ZW0udmlzaWJsZSA/PyB0cnVlXG4gICAgfSkpO1xuXG4gICAgY29uc3QgY3VyckFycmF5ID0gY3VycmVudC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgY29udGFpbmVyOiBpdGVtLmNvbnRhaW5lciB8fCBudWxsLFxuICAgICAgcHJvcGVydHk6IGl0ZW0ucHJvcGVydHksXG4gICAgICBpbmRleCxcbiAgICAgIG9yZGVyOiBpdGVtLm9yZGVyLFxuICAgICAgdmlzaWJsZTogaXRlbS52aXNpYmxlID8/IHRydWVcbiAgICB9KSk7XG5cbiAgICBjb25zdCBwcmV2Q29udGFpbmVycyA9IHByZXZBcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLmNvbnRhaW5lcik7XG4gICAgY29uc3QgY3VyckNvbnRhaW5lcnMgPSBjdXJyQXJyYXkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jb250YWluZXIpO1xuXG4gICAgY29uc3QgcHJldk9yZGVyID0gcHJldkFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0ub3JkZXIpO1xuICAgIGNvbnN0IGN1cnJPcmRlciA9IGN1cnJBcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLm9yZGVyKTtcblxuICAgIGNvbnN0IHByZXZWaXNpYmxlVHJ1ZSA9IHByZXZBcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLnZpc2libGUgPT09IHRydWUpO1xuICAgIGNvbnN0IGN1cnJWaXNpYmxlVHJ1ZSA9IGN1cnJBcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLnZpc2libGUgPT09IHRydWUpO1xuXG4gICAgY29uc3QgcHJldlZpc2libGVGYWxzZSA9IHByZXZBcnJheS5maWx0ZXIoaXRlbSA9PiAhaXRlbS52aXNpYmxlKTtcbiAgICBjb25zdCBjdXJyVmlzaWJsZUZhbHNlID0gY3VyckFycmF5LmZpbHRlcihpdGVtID0+ICFpdGVtLnZpc2libGUpO1xuXG4gICAgLy8gVmVyaWZpY2EgbXVkYW7Dp2EgbmEgcXVhbnRpZGFkZSBkZSBjb250YWluZXJzXG4gICAgaWYgKHByZXZDb250YWluZXJzLmxlbmd0aCAhPT0gY3VyckNvbnRhaW5lcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNhIG11ZGFuw6dhIG5hIHF1YW50aWRhZGUgZGUgb3JkZXJcbiAgICBpZiAocHJldk9yZGVyLmxlbmd0aCAhPT0gY3Vyck9yZGVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljYSBtdWRhbsOnYSBuYSBxdWFudGlkYWRlIGRlIHZpc2libGVcbiAgICBpZiAocHJldlZpc2libGVUcnVlLmxlbmd0aCAhPT0gY3VyclZpc2libGVUcnVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljYSBtdWRhbsOnYSBuYSBxdWFudGlkYWRlIGRlIHZpc2libGVcbiAgICBpZiAocHJldlZpc2libGVGYWxzZS5sZW5ndGggIT09IGN1cnJWaXNpYmxlRmFsc2UubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjdXJyQ29udGFpbmVycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlc0NvbnRhaW5lcihwcmV2Q29udGFpbmVycywgY3VyckNvbnRhaW5lcnMsICdjb250YWluZXInKTtcbiAgICB9XG5cbiAgICBpZiAoY3Vyck9yZGVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzQ29udGFpbmVyKHByZXZPcmRlciwgY3Vyck9yZGVyLCAnb3JkZXInKTtcbiAgICB9XG5cbiAgICBpZiAoY3VyclZpc2libGVUcnVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzQ29udGFpbmVyKHByZXZWaXNpYmxlVHJ1ZSwgY3VyclZpc2libGVUcnVlLCAndmlzaWJsZScpO1xuICAgIH1cblxuICAgIGlmIChjdXJyVmlzaWJsZUZhbHNlLmxlbmd0aCkge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzQ29udGFpbmVyKHByZXZWaXNpYmxlRmFsc2UsIGN1cnJWaXNpYmxlRmFsc2UsICd2aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgLy9hdHVhbGl6YSBjb250YWluZXIgc2VtIG11ZGFuw6dhIG5hIGVzdHJ1dHVyYSBkYSBpbnRlcmZhY2VcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmRpZmZPYmplY3RzQXJyYXkocHJldmlvdXMsIHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpKTtcbiAgICB0aGlzLmNvbnRhaW5lckZpZWxkcyA9IHRoaXMudXBkYXRlRmllbGRDb250YWluZXIocmVzdWx0LCB0aGlzLmNvbnRhaW5lckZpZWxkcyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpZWxkQ29udGFpbmVyKGNoYW5nZXMsIGNvbnRhaW5lckZpZWxkcykge1xuICAgIGNvbnN0IG1hcGNoYW5nZXMgPSBuZXcgTWFwKGNoYW5nZXMubWFwKG9iaiA9PiBbb2JqLnByb3BlcnR5LCBvYmpdKSk7XG5cbiAgICBjb250YWluZXJGaWVsZHMuZm9yRWFjaChzdWJBcnJheSA9PiB7XG4gICAgICBzdWJBcnJheS5mb3JFYWNoKChzdWJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtOiBhbnkgPSBtYXBjaGFuZ2VzLmdldChzdWJJdGVtLnByb3BlcnR5KTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICBzdWJBcnJheVtpbmRleF0gPSB7IC4uLnN1Ykl0ZW0sIC4uLml0ZW0gfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29udGFpbmVyRmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWZmT2JqZWN0c0FycmF5KG9sZEFycmF5LCBuZXdBcnJheSkge1xuICAgIGNvbnN0IGRpZmZlcmVuY2VzID0gW107XG5cbiAgICBuZXdBcnJheS5mb3JFYWNoKG5ld09iaiA9PiB7XG4gICAgICBjb25zdCBvbGRPYmogPSBvbGRBcnJheS5maW5kKG8gPT4gby5wcm9wZXJ0eSA9PT0gbmV3T2JqLnByb3BlcnR5KTtcblxuICAgICAgaWYgKCFvbGRPYmopIHtcbiAgICAgICAgLy8gU2UgbyBvYmpldG8gw6kgbm92bywgYWRpY2lvbmEgdG9kbyBvIG9iamV0byBjb20gYSBwcm9wcmllZGFkZSBcInByb3BlcnR5XCJcbiAgICAgICAgZGlmZmVyZW5jZXMucHVzaCh7IC4uLm5ld09iaiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzZSBow6EgZGlmZXJlbsOnYXMgbmFzIHByb3ByaWVkYWRlc1xuICAgICAgICBjb25zdCBkaWZmID0geyBwcm9wZXJ0eTogbmV3T2JqLnByb3BlcnR5IH07XG4gICAgICAgIGxldCBoYXNEaWZmZXJlbmNlcyA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld09iaikge1xuICAgICAgICAgIGlmIChuZXdPYmpba2V5XSAhPT0gb2xkT2JqW2tleV0pIHtcbiAgICAgICAgICAgIGRpZmZba2V5XSA9IG5ld09ialtrZXldO1xuICAgICAgICAgICAgaGFzRGlmZmVyZW5jZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNEaWZmZXJlbmNlcykge1xuICAgICAgICAgIGRpZmZlcmVuY2VzLnB1c2goZGlmZik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vcmV0b3JuYSBtdWRhbsOnYXMgbm9zIGZpZWxkcyBwYXJhIGF0dWFsaXphw6fDo28gZG8gY29udGFpbmVyRmllbGRzXG4gICAgcmV0dXJuIGRpZmZlcmVuY2VzO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUZpZWxkcyAmJiB0aGlzLnZpc2libGVGaWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC5jb250YWluZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzQ29udGFpbmVyKHByZXZDb250YWluZXJzLCBjdXJyQ29udGFpbmVycywga2V5KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2Q29udGFpbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcHJldiA9IHByZXZDb250YWluZXJzW2ldO1xuICAgICAgY29uc3QgY3VyciA9IGN1cnJDb250YWluZXJzW2ldO1xuXG4gICAgICAvL1ZlcmlmaWNhIHNlIGNvbnRhaW5lciBtdWRvdSBkZSBwb3Npw6fDo29cbiAgICAgIGlmIChwcmV2W2tleV0gPT09IGN1cnJba2V5XSAmJiBwcmV2LmluZGV4ICE9PSBjdXJyLmluZGV4KSB7XG4gICAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vVmVyaWZpY2Egc2UgZm9pIGFwZW5hcyBtdWRhbsOnYSBkYSBzdHJpbmcgZW0gY2FzbyBkbyBjb250YWluZXIgb3UgdmFsb3Igbm8gb3JkZXJcbiAgICAgIGlmIChwcmV2W2tleV0gIT09IGN1cnJba2V5XSAmJiBwcmV2LmluZGV4ID09PSBjdXJyLmluZGV4KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdvcmRlcicpIHtcbiAgICAgICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRhaW5lckZpZWxkcy5mb3JFYWNoKHN1Ykl0ZW0gPT5cbiAgICAgICAgICBzdWJJdGVtLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5wcm9wZXJ0eSA9PT0gY3Vyci5wcm9wZXJ0eSkge1xuICAgICAgICAgICAgICBpdGVtW2tleV0gPSBjdXJyW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vdmVyaWZpY2Egc2UgbWFudGV2ZSBvIG1lc21vIG7Dum1lcm8gZGUgY29udGFpbmVyLCBtYXMgYWx0ZXJvdSBwcm9wZXJ0eSBkbyBjb250YWluZXJcbiAgICAgIGlmIChwcmV2W2tleV0gIT09IGN1cnJba2V5XSAmJiBwcmV2LnByb3BlcnR5ICE9PSBjdXJyLnByb3BlcnR5KSB7XG4gICAgICAgIHRoaXMuc2V0Q29udGFpbmVyRmllbGRzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby1yb3dcIiBbY2xhc3MucG8tZHluYW1pY109XCJoYXNDb250YWluZXJzXCIgKm5nSWY9XCJ2aXNpYmxlRmllbGRzICYmIHZpc2libGVGaWVsZHMubGVuZ3RoID4gMFwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIGhhc0NvbnRhaW5lcnMgPyBwb0NvbnRlbnRDb250YWluZXIgOiBwb0NvbnRlbnQ7XG4gICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogaGFzQ29udGFpbmVycyA/IGNvbnRhaW5lckZpZWxkcyA6IHZpc2libGVGaWVsZHMgfVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BvQ29udGVudCBsZXQtZmllbGRzPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICA8cG8tZGl2aWRlciAqbmdJZj1cImZpZWxkPy5kaXZpZGVyPy50cmltKClcIiBjbGFzcz1cInBvLXNtLTEyXCIgW3AtbGFiZWxdPVwiZmllbGQuZGl2aWRlclwiPiA8L3BvLWRpdmlkZXI+XG5cbiAgICA8cG8tZGF0ZXBpY2tlclxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2RhdGVwaWNrZXInKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1jbGVhbl09XCJmaWVsZC5jbGVhblwiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLWVycm9yLWFzeW5jXT1cImZpZWxkLmVycm9yQXN5bmNGdW5jdGlvblwiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWZvcm1hdF09XCJmaWVsZC5mb3JtYXRcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWlzby1mb3JtYXRdPVwiZmllbGQuaXNvRm9ybWF0XCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxvY2FsZV09XCJmaWVsZC5sb2NhbGVcIlxuICAgICAgW3AtbWF4LWRhdGVdPVwiZmllbGQubWF4VmFsdWVcIlxuICAgICAgW3AtbWluLWRhdGVdPVwiZmllbGQubWluVmFsdWVcIlxuICAgICAgW3Atbm8tYXV0b2NvbXBsZXRlXT1cImZpZWxkLm5vQXV0b2NvbXBsZXRlXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgID5cbiAgICA8L3BvLWRhdGVwaWNrZXI+XG5cbiAgICA8cG8tZGF0ZXBpY2tlci1yYW5nZVxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2RhdGVwaWNrZXJyYW5nZScpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxpdGVyYWxzXT1cImZpZWxkLmxpdGVyYWxzXCJcbiAgICAgIFtwLW1heC1kYXRlXT1cImZpZWxkLm1heFZhbHVlXCJcbiAgICAgIFtwLW1pbi1kYXRlXT1cImZpZWxkLm1pblZhbHVlXCJcbiAgICAgIFtwLW5vLWF1dG9jb21wbGV0ZV09XCJmaWVsZC5ub0F1dG9jb21wbGV0ZVwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1yZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tZGF0ZXBpY2tlci1yYW5nZT5cblxuICAgIDxwby1pbnB1dFxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2lucHV0JylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtY2xlYW5dPVwiZmllbGQuY2xlYW5cIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtZXJyb3ItcGF0dGVybl09XCJmaWVsZC5lcnJvck1lc3NhZ2VcIlxuICAgICAgW3AtZXJyb3ItbGltaXRdPVwiZmllbGQuZXJyb3JMaW1pdFwiXG4gICAgICBbcC1lcnJvci1hc3luYy1wcm9wZXJ0aWVzXT1cImZpZWxkLmVycm9yQXN5bmNQcm9wZXJ0aWVzXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW1hc2stZm9ybWF0LW1vZGVsXT1cImZpZWxkLm1hc2tGb3JtYXRNb2RlbFwiXG4gICAgICBbcC1tYXNrXT1cImZpZWxkLm1hc2tcIlxuICAgICAgW3AtbWF4bGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aFwiXG4gICAgICBbcC1taW5sZW5ndGhdPVwiZmllbGQubWluTGVuZ3RoXCJcbiAgICAgIFtwLW5vLWF1dG9jb21wbGV0ZV09XCJmaWVsZC5ub0F1dG9jb21wbGV0ZVwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1wYXR0ZXJuXT1cImZpZWxkLnBhdHRlcm5cIlxuICAgICAgW3AtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgW3AtcmVxdWlyZWQtZmllbGQtZXJyb3ItbWVzc2FnZV09XCJmaWVsZC5yZXF1aXJlZEZpZWxkRXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICAocC1jaGFuZ2UtbW9kZWwpPVwib25DaGFuZ2VGaWVsZE1vZGVsKGZpZWxkKVwiXG4gICAgICBbcC1pY29uXT1cImZpZWxkLmljb25cIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgW3AtcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxuICAgID5cbiAgICA8L3BvLWlucHV0PlxuXG4gICAgPHBvLW51bWJlclxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ251bWJlcicpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLWVycm9yLWxpbWl0XT1cImZpZWxkLmVycm9yTGltaXRcIlxuICAgICAgW3AtZXJyb3ItYXN5bmMtcHJvcGVydGllc109XCJmaWVsZC5lcnJvckFzeW5jUHJvcGVydGllc1wiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1taW5dPVwiZmllbGQubWluVmFsdWVcIlxuICAgICAgW3AtbWF4XT1cImZpZWxkLm1heFZhbHVlXCJcbiAgICAgIFtwLW1heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW3AtbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwiZmllbGQubm9BdXRvY29tcGxldGVcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atc3RlcF09XCJmaWVsZC5zdGVwXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICA+XG4gICAgPC9wby1udW1iZXI+XG5cbiAgICA8cG8tZGVjaW1hbFxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2RlY2ltYWwnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1jbGVhbl09XCJmaWVsZC5jbGVhblwiXG4gICAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLWVycm9yLWFzeW5jLXByb3BlcnRpZXNdPVwiZmllbGQuZXJyb3JBc3luY1Byb3BlcnRpZXNcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtZGVjaW1hbHMtbGVuZ3RoXT1cImZpZWxkLmRlY2ltYWxzTGVuZ3RoXCJcbiAgICAgIFtwLXRob3VzYW5kLW1heGxlbmd0aF09XCJmaWVsZC50aG91c2FuZE1heGxlbmd0aFwiXG4gICAgICBbcC1pY29uXT1cImZpZWxkLmljb25cIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgICAgW3AtbG9jYWxlXT1cImZpZWxkLmxvY2FsZVwiXG4gICAgICBbcC1taW5dPVwiZmllbGQubWluVmFsdWVcIlxuICAgICAgW3AtbWF4XT1cImZpZWxkLm1heFZhbHVlXCJcbiAgICAgIFtwLW1heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW3AtbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwiZmllbGQubm9BdXRvY29tcGxldGVcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3AtcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxuICAgICAgW3AtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgW3AtcmVxdWlyZWQtZmllbGQtZXJyb3ItbWVzc2FnZV09XCJmaWVsZC5yZXF1aXJlZEZpZWxkRXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICAocC1jaGFuZ2UtbW9kZWwpPVwib25DaGFuZ2VGaWVsZE1vZGVsKGZpZWxkKVwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgPlxuICAgIDwvcG8tZGVjaW1hbD5cblxuICAgIDxwby1zZWxlY3RcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdzZWxlY3QnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1maWVsZC1sYWJlbF09XCJmaWVsZC5maWVsZExhYmVsXCJcbiAgICAgIFtwLWZpZWxkLXZhbHVlXT1cImZpZWxkLmZpZWxkVmFsdWVcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLW9wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICBbcC1yZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXG4gICAgPlxuICAgIDwvcG8tc2VsZWN0PlxuXG4gICAgPHBvLXJhZGlvLWdyb3VwXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAncmFkaW9Hcm91cCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNvbHVtbnNdPVwiZmllbGQuY29sdW1ucyB8fCAzXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLW9wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tcmFkaW8tZ3JvdXA+XG5cbiAgICA8cG8tc3dpdGNoXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnc3dpdGNoJylcIlxuICAgICAgW25hbWVdPVwiZmllbGQucHJvcGVydHlcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVtmaWVsZC5wcm9wZXJ0eV1cIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtZm9ybWF0LW1vZGVsXT1cImZpZWxkLmZvcm1hdE1vZGVsXCJcbiAgICAgIFtwLWhlbHBdPVwiZmllbGQuaGVscFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1sYWJlbC1vZmZdPVwiZmllbGQuYm9vbGVhbkZhbHNlXCJcbiAgICAgIFtwLWxhYmVsLW9uXT1cImZpZWxkLmJvb2xlYW5UcnVlXCJcbiAgICAgIFtwLWxhYmVsLXBvc2l0aW9uXT1cImZpZWxkLmxhYmVsUG9zaXRpb25cIlxuICAgICAgW3AtaGlkZS1sYWJlbC1zdGF0dXNdPVwiZmllbGQuaGlkZUxhYmVsU3RhdHVzXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tc3dpdGNoPlxuXG4gICAgPHBvLWNoZWNrYm94XG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnY2hlY2tib3gnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLXNpemVdPVwiZmllbGQuc2l6ZVwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgID5cbiAgICA8L3BvLWNoZWNrYm94PlxuXG4gICAgPHBvLWNvbWJvXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnY29tYm8nKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBwLWVtaXQtb2JqZWN0LXZhbHVlXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWNsZWFuXT1cImZpZWxkLmNsZWFuXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWZpZWxkLWxhYmVsXT1cImZpZWxkLmZpZWxkTGFiZWxcIlxuICAgICAgW3AtZmllbGQtdmFsdWVdPVwiZmllbGQuZmllbGRWYWx1ZVwiXG4gICAgICBbcC1maWx0ZXItcGFyYW1zXT1cImZpZWxkLnBhcmFtc1wiXG4gICAgICBbcC1maWx0ZXItc2VydmljZV09XCJmaWVsZC5vcHRpb25zU2VydmljZVwiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtaW5maW5pdGUtc2Nyb2xsXT1cImZpZWxkLmluZmluaXRlU2Nyb2xsXCJcbiAgICAgIFtwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZV09XCJmaWVsZC5pbmZpbml0ZVNjcm9sbERpc3RhbmNlIHx8IDEwMFwiXG4gICAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgICBbcC1saXRlcmFsc109XCJmaWVsZC5saXRlcmFsc1wiXG4gICAgICBbcC1vcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atc29ydF09XCJmaWVsZC5zb3J0XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLWVycm9yLWxpbWl0XT1cImZpZWxkLmVycm9yTGltaXRcIlxuICAgICAgW3Atc2hvdy1yZXF1aXJlZF09XCJmaWVsZC5zaG93UmVxdWlyZWRcIlxuICAgICAgKHAtY2hhbmdlKT1cIm9uQ2hhbmdlRmllbGQoZmllbGQsICRldmVudClcIlxuICAgICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgIFtwLWZpbHRlci1taW5sZW5ndGhdPVwiZmllbGQuZmlsdGVyTWlubGVuZ3RoXCJcbiAgICAgIFtwLWZpbHRlci1tb2RlXT1cImZpZWxkLmZpbHRlck1vZGVcIlxuICAgICAgW3AtZGlzYWJsZWQtaW5pdC1maWx0ZXJdPVwiZmllbGQuZGlzYWJsZWRJbml0RmlsdGVyXCJcbiAgICAgIFtwLWRpc2FibGVkLXRhYi1maWx0ZXJdPVwiZmllbGQuZGlzYWJsZWRUYWJGaWx0ZXJcIlxuICAgICAgW3AtZGVib3VuY2UtdGltZV09XCJmaWVsZC5kZWJvdW5jZVRpbWVcIlxuICAgICAgW3AtY2hhbmdlLW9uLWVudGVyXT1cImZpZWxkLmNoYW5nZU9uRW50ZXJcIlxuICAgID5cbiAgICA8L3BvLWNvbWJvPlxuXG4gICAgPHBvLWxvb2t1cFxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ2xvb2t1cCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIHAtZmllbGQtbGFiZWw9XCJsYWJlbFwiXG4gICAgICBwLWZpZWxkLXZhbHVlPVwidmFsdWVcIlxuICAgICAgW25nQ2xhc3NdPVwiZmllbGQuY29tcG9uZW50Q2xhc3NcIlxuICAgICAgW3AtY2xlYW5dPVwiZmllbGQuY2xlYW5cIlxuICAgICAgW3AtY29sdW1uc109XCJmaWVsZC5jb2x1bW5zXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWZpZWxkLWxhYmVsXT1cImZpZWxkLmZpZWxkTGFiZWwgfHwgJ2xhYmVsJ1wiXG4gICAgICBbcC1maWVsZC12YWx1ZV09XCJmaWVsZC5maWVsZFZhbHVlIHx8ICd2YWx1ZSdcIlxuICAgICAgW3AtZmlsdGVyLXBhcmFtc109XCJmaWVsZC5wYXJhbXNcIlxuICAgICAgW3AtZmlsdGVyLXNlcnZpY2VdPVwiZmllbGQuc2VhcmNoU2VydmljZVwiXG4gICAgICBbcC1hdXRvLWZvY3VzXT1cImZpZWxkLmZvY3VzXCJcbiAgICAgIFtwLWF1dG8taGVpZ2h0XT1cImZpZWxkLmF1dG9IZWlnaHRcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWZpZWxkLWZvcm1hdF09XCJmaWVsZC5mb3JtYXRcIlxuICAgICAgW3AtaW5maW5pdGUtc2Nyb2xsXT1cImZpZWxkLmluZmluaXRlU2Nyb2xsXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxpdGVyYWxzXT1cImZpZWxkLmxpdGVyYWxzXCJcbiAgICAgIFtwLW11bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCJcbiAgICAgIFtwLW5vLWF1dG9jb21wbGV0ZV09XCJmaWVsZC5ub0F1dG9jb21wbGV0ZVwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgICBbcC1wbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICBbcC1hZHZhbmNlZC1maWx0ZXJzXT1cImZpZWxkLmFkdmFuY2VkRmlsdGVyc1wiXG4gICAgICAocC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zKT1cImZpZWxkLmNoYW5nZVZpc2libGVDb2x1bW5zPy4oJGV2ZW50KVwiXG4gICAgICAocC1yZXN0b3JlLWNvbHVtbi1tYW5hZ2VyKT1cImZpZWxkLmNvbHVtblJlc3RvcmVNYW5hZ2VyPy4oJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvcG8tbG9va3VwPlxuXG4gICAgPHBvLWNoZWNrYm94LWdyb3VwXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAnY2hlY2tib3hHcm91cCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWNvbHVtbnNdPVwiZmllbGQuY29sdW1ucyB8fCAzXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChmaWVsZClcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW9wdGlvbmFsXT1cImZpZWxkLm9wdGlvbmFsXCJcbiAgICAgIFtwLW9wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIChwLWNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKGZpZWxkKVwiXG4gICAgPlxuICAgIDwvcG8tY2hlY2tib3gtZ3JvdXA+XG5cbiAgICA8cG8tbXVsdGlzZWxlY3RcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICdtdWx0aXNlbGVjdCcpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtYXV0by1oZWlnaHRdPVwiZmllbGQuYXV0b0hlaWdodFwiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgICAgW3AtbGl0ZXJhbHNdPVwiZmllbGQubGl0ZXJhbHNcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3Atb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQuZXJyb3JNZXNzYWdlXCJcbiAgICAgIFtwLWVycm9yLWxpbWl0XT1cImZpZWxkLmVycm9yTGltaXRcIlxuICAgICAgW3Atc2hvdy1yZXF1aXJlZF09XCJmaWVsZC5zaG93UmVxdWlyZWRcIlxuICAgICAgKHAtY2hhbmdlKT1cIm9uQ2hhbmdlRmllbGQoZmllbGQpXCJcbiAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgIFtwLWZpZWxkLWxhYmVsXT1cImZpZWxkLmZpZWxkTGFiZWxcIlxuICAgICAgW3AtZmllbGQtdmFsdWVdPVwiZmllbGQuZmllbGRWYWx1ZVwiXG4gICAgICBbcC1maWx0ZXItc2VydmljZV09XCJmaWVsZC5vcHRpb25zU2VydmljZVwiXG4gICAgICBbcC1maWx0ZXItbW9kZV09XCJmaWVsZC5maWx0ZXJNb2RlXCJcbiAgICAgIFtwLWRlYm91bmNlLXRpbWVdPVwiZmllbGQuZGVib3VuY2VUaW1lXCJcbiAgICAgIFtwLXNvcnRdPVwiZmllbGQuc29ydFwiXG4gICAgICBbcC1wbGFjZWhvbGRlci1zZWFyY2hdPVwiZmllbGQucGxhY2Vob2xkZXJTZWFyY2hcIlxuICAgICAgW3AtaGlkZS1zZWFyY2hdPVwiZmllbGQuaGlkZVNlYXJjaFwiXG4gICAgICBbcC1oaWRlLXNlbGVjdC1hbGxdPVwiZmllbGQuaGlkZVNlbGVjdEFsbFwiXG4gICAgPlxuICAgIDwvcG8tbXVsdGlzZWxlY3Q+XG5cbiAgICA8cG8tdGV4dGFyZWFcbiAgICAgICNjb21wb25lbnRcbiAgICAgICpuZ0lmPVwiY29tcGFyZVRvKGZpZWxkLmNvbnRyb2wsICd0ZXh0YXJlYScpXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoZmllbGQpXCJcbiAgICAgIFtwLWF1dG8tZm9jdXNdPVwiZmllbGQuZm9jdXNcIlxuICAgICAgW3AtaGVscF09XCJmaWVsZC5oZWxwXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW1heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW3AtbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1yZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1maWVsZC1lcnJvci1tZXNzYWdlXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLXNob3ctcmVxdWlyZWRdPVwiZmllbGQuc2hvd1JlcXVpcmVkXCJcbiAgICAgIFtwLXJvd3NdPVwiZmllbGQucm93c1wiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgID5cbiAgICA8L3BvLXRleHRhcmVhPlxuXG4gICAgPHBvLXBhc3N3b3JkXG4gICAgICAjY29tcG9uZW50XG4gICAgICAqbmdJZj1cImNvbXBhcmVUbyhmaWVsZC5jb250cm9sLCAncGFzc3dvcmQnKVwiXG4gICAgICBbbmFtZV09XCJmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlW2ZpZWxkLnByb3BlcnR5XVwiXG4gICAgICBbbmdDbGFzc109XCJmaWVsZC5jb21wb25lbnRDbGFzc1wiXG4gICAgICBbcC1jbGVhbl09XCJmaWVsZC5jbGVhblwiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImZpZWxkLmVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1lcnJvci1saW1pdF09XCJmaWVsZC5lcnJvckxpbWl0XCJcbiAgICAgIFtwLWVycm9yLWFzeW5jLXByb3BlcnRpZXNdPVwiZmllbGQuZXJyb3JBc3luY1Byb3BlcnRpZXNcIlxuICAgICAgW3AtYXV0by1mb2N1c109XCJmaWVsZC5mb2N1c1wiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtaGlkZS1wYXNzd29yZC1wZWVrXT1cImZpZWxkLmhpZGVQYXNzd29yZFBlZWtcIlxuICAgICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLW1heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW3AtbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwiZmllbGQubm9BdXRvY29tcGxldGVcIlxuICAgICAgW3Atb3B0aW9uYWxdPVwiZmllbGQub3B0aW9uYWxcIlxuICAgICAgW3AtcGF0dGVybl09XCJmaWVsZC5wYXR0ZXJuXCJcbiAgICAgIFtwLXJlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcbiAgICAgIFtwLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFtwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VdPVwiZmllbGQucmVxdWlyZWRGaWVsZEVycm9yTWVzc2FnZVwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgID5cbiAgICA8L3BvLXBhc3N3b3JkPlxuXG4gICAgPHBvLXVwbG9hZFxuICAgICAgI2NvbXBvbmVudFxuICAgICAgKm5nSWY9XCJjb21wYXJlVG8oZmllbGQuY29udHJvbCwgJ3VwbG9hZCcpXCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVbZmllbGQucHJvcGVydHldXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNvbXBvbmVudENsYXNzXCJcbiAgICAgIFtwLWF1dG8tdXBsb2FkXT1cImZpZWxkLmF1dG9VcGxvYWRcIlxuICAgICAgW3AtZGlyZWN0b3J5XT1cImZpZWxkLmRpcmVjdG9yeVwiXG4gICAgICBbcC1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGZpZWxkKVwiXG4gICAgICBbcC1kcmFnLWRyb3BdPVwiZmllbGQuZHJhZ0Ryb3BcIlxuICAgICAgW3AtZHJhZy1kcm9wLWhlaWdodF09XCJmaWVsZC5kcmFnRHJvcEhlaWdodFwiXG4gICAgICBbcC1yZXN0cmljdGlvbnNdPVwiZmllbGQucmVzdHJpY3Rpb25zXCJcbiAgICAgIFtwLWZvcm0tZmllbGRdPVwiZmllbGQuZm9ybUZpZWxkXCJcbiAgICAgIFtwLWhlYWRlcnNdPVwiZmllbGQuaGVhZGVyc1wiXG4gICAgICBbcC1oZWxwXT1cImZpZWxkLmhlbHBcIlxuICAgICAgW3AtaGlkZS1yZXN0cmljdGlvbnMtaW5mb109XCJmaWVsZC5oaWRlUmVzdHJpY3Rpb25zSW5mb1wiXG4gICAgICBbcC1oaWRlLXNlbGVjdC1idXR0b25dPVwiZmllbGQuaGlkZVNlbGVjdEJ1dHRvblwiXG4gICAgICBbcC1oaWRlLXNlbmQtYnV0dG9uXT1cImZpZWxkLmhpZGVTZW5kQnV0dG9uXCJcbiAgICAgIFtwLW11bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCJcbiAgICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICAgIFtwLWxpdGVyYWxzXT1cImZpZWxkLmxpdGVyYWxzXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkLnByb3BlcnR5XCJcbiAgICAgIFtwLWN1c3RvbS1hY3Rpb25dPVwiZmllbGQuY3VzdG9tQWN0aW9uXCJcbiAgICAgIChwLWN1c3RvbS1hY3Rpb24tY2xpY2spPVwiZmllbGQuY3VzdG9tQWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAocC1lcnJvcik9XCJmaWVsZC5vbkVycm9yKCRldmVudClcIlxuICAgICAgKHAtc3VjY2Vzcyk9XCJmaWVsZC5vblN1Y2Nlc3MoJGV2ZW50KVwiXG4gICAgICAocC11cGxvYWQpPVwiZmllbGQub25VcGxvYWQoJGV2ZW50KVwiXG4gICAgICBbcC1vcHRpb25hbF09XCJmaWVsZC5vcHRpb25hbFwiXG4gICAgICBbcC1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbcC1zaG93LXJlcXVpcmVkXT1cImZpZWxkLnNob3dSZXF1aXJlZFwiXG4gICAgICAocC1jaGFuZ2UpPVwib25DaGFuZ2VGaWVsZChmaWVsZClcIlxuICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cIm9uQ2hhbmdlRmllbGRNb2RlbChmaWVsZClcIlxuICAgICAgW3AtdXJsXT1cImZpZWxkLnVybFwiXG4gICAgPlxuICAgIDwvcG8tdXBsb2FkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9Db250ZW50Q29udGFpbmVyIGxldC1maWVsZHM+XG4gIDxwby1keW5hbWljLWNvbnRhaW5lciBbcC1maWVsZHNdPVwiZmllbGRzXCIgW3AtY29udGVudF09XCJwb0NvbnRlbnRcIj48L3BvLWR5bmFtaWMtY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==