@bnsights/bbsf-controls 1.0.87 → 1.0.89

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 (218) hide show
  1. package/README.md +6 -2
  2. package/bnsights-bbsf-controls-1.0.89.tgz +0 -0
  3. package/bnsights-bbsf-controls.d.ts +1 -1
  4. package/bnsights-bbsf-controls.metadata.json +1 -0
  5. package/bundles/bnsights-bbsf-controls.umd.js +9454 -0
  6. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -0
  7. package/esm2015/bnsights-bbsf-controls.js +6 -0
  8. package/esm2015/lib/Shared/Directives/template-name.directive.js +18 -0
  9. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +20 -0
  10. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +20 -0
  11. package/esm2015/lib/Shared/components/app-base-component.js +202 -0
  12. package/esm2015/lib/Shared/components/ng-tag-input.js +323 -0
  13. package/esm2015/lib/Shared/default_intl.js +29 -0
  14. package/esm2015/lib/Shared/services/ControlUtility.js +164 -0
  15. package/esm2015/lib/Shared/services/GlobalSettings.service.js +28 -0
  16. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +22 -0
  17. package/esm2015/lib/Shared/services/render-component-service.service.js +30 -0
  18. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +137 -0
  19. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +249 -0
  20. package/esm2015/lib/controls/Calendar/Calendar.component.js +177 -0
  21. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +115 -0
  22. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +139 -0
  23. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +221 -0
  24. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +179 -0
  25. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +451 -0
  26. package/esm2015/lib/controls/Form/Form.component.js +106 -0
  27. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +223 -0
  28. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +347 -0
  29. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +325 -0
  30. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +429 -0
  31. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +430 -0
  32. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +429 -0
  33. package/esm2015/lib/controls/Paging/JwPagination.component.js +129 -0
  34. package/esm2015/lib/controls/Paging/Paging.component.js +312 -0
  35. package/esm2015/lib/controls/Phone/Phone.component.js +124 -0
  36. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +349 -0
  37. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +108 -0
  38. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +132 -0
  39. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +117 -0
  40. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +748 -0
  41. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +19 -0
  42. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +108 -0
  43. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +269 -0
  44. package/esm2015/lib/controls/TextArea/TextArea.component.js +192 -0
  45. package/esm2015/lib/controls/TextBox/TextBox.component.js +263 -0
  46. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +84 -0
  47. package/esm2015/lib/controls/bbsf-controls.module.js +239 -0
  48. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +32 -0
  49. package/fesm2015/{bnsights-bbsf-controls.mjs → bnsights-bbsf-controls.js} +1511 -1630
  50. package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
  51. package/lib/Shared/Directives/template-name.directive.d.ts +0 -3
  52. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +0 -3
  53. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +0 -3
  54. package/lib/Shared/components/app-base-component.d.ts +1 -3
  55. package/lib/Shared/components/ng-tag-input.d.ts +0 -3
  56. package/lib/Shared/default_intl.d.ts +0 -3
  57. package/lib/Shared/services/ControlUtility.d.ts +0 -3
  58. package/lib/Shared/services/GlobalSettings.service.d.ts +0 -3
  59. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +0 -3
  60. package/lib/Shared/services/render-component-service.service.d.ts +0 -3
  61. package/lib/Shared/services/validationErrorMassage.service.d.ts +0 -3
  62. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +0 -3
  63. package/lib/controls/Calendar/Calendar.component.d.ts +5 -9
  64. package/lib/controls/CheckBox/CheckBox.component.d.ts +0 -3
  65. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +0 -3
  66. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +0 -3
  67. package/lib/controls/DropdownList/DropdownList.component.d.ts +0 -3
  68. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +0 -3
  69. package/lib/controls/Form/Form.component.d.ts +0 -3
  70. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +0 -3
  71. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +0 -3
  72. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +0 -3
  73. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +0 -3
  74. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +0 -3
  75. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +0 -3
  76. package/lib/controls/Paging/JwPagination.component.d.ts +0 -3
  77. package/lib/controls/Paging/Paging.component.d.ts +0 -3
  78. package/lib/controls/Phone/Phone.component.d.ts +0 -3
  79. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +0 -3
  80. package/lib/controls/RadioButton/RadioButton.component.d.ts +0 -3
  81. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +0 -3
  82. package/lib/controls/Repeater/repeater/repeater.component.d.ts +0 -3
  83. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +0 -3
  84. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +0 -3
  85. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +0 -3
  86. package/lib/controls/TagsInput/TagsInput.component.d.ts +0 -3
  87. package/lib/controls/TextArea/TextArea.component.d.ts +0 -3
  88. package/lib/controls/TextBox/TextBox.component.d.ts +0 -3
  89. package/lib/controls/Toggleslide/toggleslide.component.d.ts +0 -3
  90. package/lib/controls/bbsf-controls.module.d.ts +0 -74
  91. package/lib/controls/page-header-component/page-header-component.component.d.ts +0 -3
  92. package/package.json +15 -27
  93. package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
  94. package/esm2020/bnsights-bbsf-controls.mjs +0 -5
  95. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +0 -18
  96. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +0 -21
  97. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +0 -21
  98. package/esm2020/lib/Shared/components/app-base-component.mjs +0 -198
  99. package/esm2020/lib/Shared/components/ng-tag-input.mjs +0 -336
  100. package/esm2020/lib/Shared/default_intl.mjs +0 -29
  101. package/esm2020/lib/Shared/services/ControlUtility.mjs +0 -162
  102. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +0 -30
  103. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
  104. package/esm2020/lib/Shared/services/render-component-service.service.mjs +0 -30
  105. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -137
  106. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -245
  107. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -172
  108. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -114
  109. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +0 -136
  110. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -217
  111. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -179
  112. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -453
  113. package/esm2020/lib/controls/Form/Form.component.mjs +0 -101
  114. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -223
  115. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -350
  116. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -325
  117. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -427
  118. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -427
  119. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -426
  120. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +0 -156
  121. package/esm2020/lib/controls/Paging/Paging.component.mjs +0 -312
  122. package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -124
  123. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -354
  124. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -106
  125. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +0 -132
  126. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +0 -125
  127. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +0 -750
  128. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +0 -21
  129. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +0 -108
  130. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -268
  131. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -192
  132. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -266
  133. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -84
  134. package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -401
  135. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +0 -37
  136. package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
  137. package/fesm2020/bnsights-bbsf-controls.mjs +0 -8938
  138. package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
  139. /package/{esm2020/lib/Shared/Enums/CalendarView.mjs → esm2015/lib/Shared/Enums/CalendarView.js} +0 -0
  140. /package/{esm2020/lib/Shared/Enums/ControlLayout.mjs → esm2015/lib/Shared/Enums/ControlLayout.js} +0 -0
  141. /package/{esm2020/lib/Shared/Enums/Countries.mjs → esm2015/lib/Shared/Enums/Countries.js} +0 -0
  142. /package/{esm2020/lib/Shared/Enums/Enums.mjs → esm2015/lib/Shared/Enums/Enums.js} +0 -0
  143. /package/{esm2020/lib/Shared/Enums/FileType.mjs → esm2015/lib/Shared/Enums/FileType.js} +0 -0
  144. /package/{esm2020/lib/Shared/Enums/FilterType.mjs → esm2015/lib/Shared/Enums/FilterType.js} +0 -0
  145. /package/{esm2020/lib/Shared/Enums/FontSize.mjs → esm2015/lib/Shared/Enums/FontSize.js} +0 -0
  146. /package/{esm2020/lib/Shared/Enums/ForceDirection.mjs → esm2015/lib/Shared/Enums/ForceDirection.js} +0 -0
  147. /package/{esm2020/lib/Shared/Enums/IconPosition.mjs → esm2015/lib/Shared/Enums/IconPosition.js} +0 -0
  148. /package/{esm2020/lib/Shared/Enums/ImageType.mjs → esm2015/lib/Shared/Enums/ImageType.js} +0 -0
  149. /package/{esm2020/lib/Shared/Enums/InputType.mjs → esm2015/lib/Shared/Enums/InputType.js} +0 -0
  150. /package/{esm2020/lib/Shared/Enums/Insert.mjs → esm2015/lib/Shared/Enums/Insert.js} +0 -0
  151. /package/{esm2020/lib/Shared/Enums/LanguageMode.mjs → esm2015/lib/Shared/Enums/LanguageMode.js} +0 -0
  152. /package/{esm2020/lib/Shared/Enums/LanguageValidation.mjs → esm2015/lib/Shared/Enums/LanguageValidation.js} +0 -0
  153. /package/{esm2020/lib/Shared/Enums/Misc.mjs → esm2015/lib/Shared/Enums/Misc.js} +0 -0
  154. /package/{esm2020/lib/Shared/Enums/PagingActionMode.mjs → esm2015/lib/Shared/Enums/PagingActionMode.js} +0 -0
  155. /package/{esm2020/lib/Shared/Enums/Para.mjs → esm2015/lib/Shared/Enums/Para.js} +0 -0
  156. /package/{esm2020/lib/Shared/Enums/PickerType.mjs → esm2015/lib/Shared/Enums/PickerType.js} +0 -0
  157. /package/{esm2020/lib/Shared/Enums/SelectMode.mjs → esm2015/lib/Shared/Enums/SelectMode.js} +0 -0
  158. /package/{esm2020/lib/Shared/Enums/StartView.mjs → esm2015/lib/Shared/Enums/StartView.js} +0 -0
  159. /package/{esm2020/lib/Shared/Enums/Style.mjs → esm2015/lib/Shared/Enums/Style.js} +0 -0
  160. /package/{esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs → esm2015/lib/Shared/Enums/StyleConfirmationMode.js} +0 -0
  161. /package/{esm2020/lib/Shared/Enums/TagInputView.mjs → esm2015/lib/Shared/Enums/TagInputView.js} +0 -0
  162. /package/{esm2020/lib/Shared/Enums/menu-list-enum.mjs → esm2015/lib/Shared/Enums/menu-list-enum.js} +0 -0
  163. /package/{esm2020/lib/Shared/Models/Attribute.mjs → esm2015/lib/Shared/Models/Attribute.js} +0 -0
  164. /package/{esm2020/lib/Shared/Models/AutocompleteDTO.mjs → esm2015/lib/Shared/Models/AutocompleteDTO.js} +0 -0
  165. /package/{esm2020/lib/Shared/Models/AutocompleteOptions.mjs → esm2015/lib/Shared/Models/AutocompleteOptions.js} +0 -0
  166. /package/{esm2020/lib/Shared/Models/CalendarEventDTO.mjs → esm2015/lib/Shared/Models/CalendarEventDTO.js} +0 -0
  167. /package/{esm2020/lib/Shared/Models/CalendarOptions.mjs → esm2015/lib/Shared/Models/CalendarOptions.js} +0 -0
  168. /package/{esm2020/lib/Shared/Models/CancelDTO.mjs → esm2015/lib/Shared/Models/CancelDTO.js} +0 -0
  169. /package/{esm2020/lib/Shared/Models/CaptchaStyle.mjs → esm2015/lib/Shared/Models/CaptchaStyle.js} +0 -0
  170. /package/{esm2020/lib/Shared/Models/CheckBoxOptions.mjs → esm2015/lib/Shared/Models/CheckBoxOptions.js} +0 -0
  171. /package/{esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs → esm2015/lib/Shared/Models/ConfirmationModalOptions.js} +0 -0
  172. /package/{esm2020/lib/Shared/Models/ControlOptionsBase.mjs → esm2015/lib/Shared/Models/ControlOptionsBase.js} +0 -0
  173. /package/{esm2020/lib/Shared/Models/CustomValidation.mjs → esm2015/lib/Shared/Models/CustomValidation.js} +0 -0
  174. /package/{esm2020/lib/Shared/Models/DropdownListItem.mjs → esm2015/lib/Shared/Models/DropdownListItem.js} +0 -0
  175. /package/{esm2020/lib/Shared/Models/DropdownOptions.mjs → esm2015/lib/Shared/Models/DropdownOptions.js} +0 -0
  176. /package/{esm2020/lib/Shared/Models/EditPersonalImage.mjs → esm2015/lib/Shared/Models/EditPersonalImage.js} +0 -0
  177. /package/{esm2020/lib/Shared/Models/EnglishArabicDTO.mjs → esm2015/lib/Shared/Models/EnglishArabicDTO.js} +0 -0
  178. /package/{esm2020/lib/Shared/Models/FileDTO.mjs → esm2015/lib/Shared/Models/FileDTO.js} +0 -0
  179. /package/{esm2020/lib/Shared/Models/FileUploadModel.mjs → esm2015/lib/Shared/Models/FileUploadModel.js} +0 -0
  180. /package/{esm2020/lib/Shared/Models/FileUploadOptions.mjs → esm2015/lib/Shared/Models/FileUploadOptions.js} +0 -0
  181. /package/{esm2020/lib/Shared/Models/FilterItem.mjs → esm2015/lib/Shared/Models/FilterItem.js} +0 -0
  182. /package/{esm2020/lib/Shared/Models/FormOptions.mjs → esm2015/lib/Shared/Models/FormOptions.js} +0 -0
  183. /package/{esm2020/lib/Shared/Models/HtmlEditorOptions.mjs → esm2015/lib/Shared/Models/HtmlEditorOptions.js} +0 -0
  184. /package/{esm2020/lib/Shared/Models/ImageUploadOptions.mjs → esm2015/lib/Shared/Models/ImageUploadOptions.js} +0 -0
  185. /package/{esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs → esm2015/lib/Shared/Models/MapAutoCompleteOptions.js} +0 -0
  186. /package/{esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs → esm2015/lib/Shared/Models/MapAutocompleteDTO.js} +0 -0
  187. /package/{esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs → esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js} +0 -0
  188. /package/{esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs → esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js} +0 -0
  189. /package/{esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs → esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js} +0 -0
  190. /package/{esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs → esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js} +0 -0
  191. /package/{esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs → esm2015/lib/Shared/Models/MultipleFileUploadModel.js} +0 -0
  192. /package/{esm2020/lib/Shared/Models/PagingDTO.mjs → esm2015/lib/Shared/Models/PagingDTO.js} +0 -0
  193. /package/{esm2020/lib/Shared/Models/PagingOptions.mjs → esm2015/lib/Shared/Models/PagingOptions.js} +0 -0
  194. /package/{esm2020/lib/Shared/Models/PagingPayload.mjs → esm2015/lib/Shared/Models/PagingPayload.js} +0 -0
  195. /package/{esm2020/lib/Shared/Models/PhoneOptions.mjs → esm2015/lib/Shared/Models/PhoneOptions.js} +0 -0
  196. /package/{esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs → esm2015/lib/Shared/Models/ProfileImageUploadOptions.js} +0 -0
  197. /package/{esm2020/lib/Shared/Models/ProfilePictureDTO.mjs → esm2015/lib/Shared/Models/ProfilePictureDTO.js} +0 -0
  198. /package/{esm2020/lib/Shared/Models/RadioButtonItem.mjs → esm2015/lib/Shared/Models/RadioButtonItem.js} +0 -0
  199. /package/{esm2020/lib/Shared/Models/RadioButtonOptions.mjs → esm2015/lib/Shared/Models/RadioButtonOptions.js} +0 -0
  200. /package/{esm2020/lib/Shared/Models/RangeNumber.mjs → esm2015/lib/Shared/Models/RangeNumber.js} +0 -0
  201. /package/{esm2020/lib/Shared/Models/Recaptcha.mjs → esm2015/lib/Shared/Models/Recaptcha.js} +0 -0
  202. /package/{esm2020/lib/Shared/Models/RecaptchaOptions.mjs → esm2015/lib/Shared/Models/RecaptchaOptions.js} +0 -0
  203. /package/{esm2020/lib/Shared/Models/RepeaterField.mjs → esm2015/lib/Shared/Models/RepeaterField.js} +0 -0
  204. /package/{esm2020/lib/Shared/Models/RepeaterOptions.mjs → esm2015/lib/Shared/Models/RepeaterOptions.js} +0 -0
  205. /package/{esm2020/lib/Shared/Models/SaveDTO.mjs → esm2015/lib/Shared/Models/SaveDTO.js} +0 -0
  206. /package/{esm2020/lib/Shared/Models/TagsInputDTO.mjs → esm2015/lib/Shared/Models/TagsInputDTO.js} +0 -0
  207. /package/{esm2020/lib/Shared/Models/TagsInputOptions.mjs → esm2015/lib/Shared/Models/TagsInputOptions.js} +0 -0
  208. /package/{esm2020/lib/Shared/Models/TextAreaOptions.mjs → esm2015/lib/Shared/Models/TextAreaOptions.js} +0 -0
  209. /package/{esm2020/lib/Shared/Models/TextBoxOptions.mjs → esm2015/lib/Shared/Models/TextBoxOptions.js} +0 -0
  210. /package/{esm2020/lib/Shared/Models/ToggleslideOptions.mjs → esm2015/lib/Shared/Models/ToggleslideOptions.js} +0 -0
  211. /package/{esm2020/lib/Shared/Models/UploadPersonalImage.mjs → esm2015/lib/Shared/Models/UploadPersonalImage.js} +0 -0
  212. /package/{esm2020/lib/Shared/Models/bread-crumb.mjs → esm2015/lib/Shared/Models/bread-crumb.js} +0 -0
  213. /package/{esm2020/lib/Shared/Models/control-filter-Item.mjs → esm2015/lib/Shared/Models/control-filter-Item.js} +0 -0
  214. /package/{esm2020/lib/Shared/Models/datePickerOptions.mjs → esm2015/lib/Shared/Models/datePickerOptions.js} +0 -0
  215. /package/{esm2020/lib/Shared/Models/filter-options.mjs → esm2015/lib/Shared/Models/filter-options.js} +0 -0
  216. /package/{esm2020/lib/Shared/Models/page-header-options.mjs → esm2015/lib/Shared/Models/page-header-options.js} +0 -0
  217. /package/{esm2020/lib/Shared/config/environment.mjs → esm2015/lib/Shared/config/environment.js} +0 -0
  218. /package/{esm2020/public-api.mjs → esm2015/public-api.js} +0 -0
@@ -0,0 +1,429 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
3
+ import { FormControl, Validators, FormGroup, ControlContainer, FormGroupDirective } from '@angular/forms';
4
+ import { InputType } from '../../Shared/Enums/InputType';
5
+ import { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';
6
+ import { ControlUtility } from '../../Shared/services/ControlUtility';
7
+ import { LanguageMode } from '../../Shared/Enums/LanguageMode';
8
+ import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
9
+ import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
10
+ export class MultiLingualHtmlEditorComponent {
11
+ constructor(MultiLingualHtmlEditorFormControlHost, controlContainer, controlUtility, UtilityService, controlValidationService, globalSettings) {
12
+ this.MultiLingualHtmlEditorFormControlHost = MultiLingualHtmlEditorFormControlHost;
13
+ this.controlContainer = controlContainer;
14
+ this.controlUtility = controlUtility;
15
+ this.UtilityService = UtilityService;
16
+ this.controlValidationService = controlValidationService;
17
+ this.globalSettings = globalSettings;
18
+ this.OnChange = new EventEmitter();
19
+ this.CurrentLanguage = "";
20
+ this.ArabicValidationRules = [];
21
+ this.ArabicValidationRulesasync = [];
22
+ this.EnglishValidationRules = [];
23
+ this.EnglishValidationRulesasync = [];
24
+ this.markAllAsTouched = false;
25
+ this.validationRules = [];
26
+ this.validationRulesasync = [];
27
+ this.ArabicLetterOnly = "";
28
+ this.EnglishLetterOnly = "";
29
+ this.englishValue = null;
30
+ this.arabicValue = null;
31
+ this.resetError = () => {
32
+ this.controlValidationService.RemoveGlobalError();
33
+ };
34
+ //External Method
35
+ this.RemoveRequiredValidation = () => {
36
+ this.controlUtility.RemoveRequiredValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, this.options);
37
+ this.controlUtility.RemoveRequiredValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, this.options);
38
+ };
39
+ //External Method
40
+ this.AddRequiredValidation = () => {
41
+ this.controlUtility.AddRequiredValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, this.options);
42
+ this.controlUtility.AddRequiredValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, this.options);
43
+ };
44
+ //External Method
45
+ this.RemoveCustomValidation = (CustomValidation) => {
46
+ this.controlUtility.RemoveCustomValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, CustomValidation);
47
+ this.controlUtility.RemoveCustomValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, CustomValidation);
48
+ };
49
+ //External Method
50
+ this.AddCustomValidation = (CustomValidation) => {
51
+ this.controlUtility.AddCustomValidation(this.EnglishHtmlEditorFormControl, this.EnglishValidationRules, CustomValidation);
52
+ this.controlUtility.AddCustomValidation(this.ArabicHtmlEditorFormControl, this.ArabicValidationRules, CustomValidation);
53
+ };
54
+ //External Method
55
+ this.IsValid = () => {
56
+ this.controlUtility.IsValid(this.EnglishHtmlEditorFormControl);
57
+ this.controlUtility.IsValid(this.ArabicHtmlEditorFormControl);
58
+ };
59
+ MultiLingualHtmlEditorComponent.controlContainerstatic = this.controlContainer;
60
+ }
61
+ ;
62
+ getCustomErrorsMassages() {
63
+ this.ArabicLetterOnly = this.UtilityService.getResourceValue("ArabicLetterOnly");
64
+ this.EnglishLetterOnly = this.UtilityService.getResourceValue("EnglishLetterOnly");
65
+ }
66
+ ngOnInit() {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ if (!this.options.ViewType)
69
+ this.options.ViewType = this.globalSettings.ViewType;
70
+ if (!this.options.LanguageMode)
71
+ this.options.LanguageMode = this.globalSettings.LanguageMode;
72
+ this.editorEnglishConfig = {
73
+ editable: !this.options.IsDisabled,
74
+ spellcheck: true,
75
+ height: this.options.Height.toString(),
76
+ minHeight: this.options.Height.toString(),
77
+ maxHeight: 'auto',
78
+ width: 'auto',
79
+ minWidth: 'auto',
80
+ translate: 'yes',
81
+ enableToolbar: true,
82
+ showToolbar: true,
83
+ placeholder: this.options.EnglishPlaceholder,
84
+ defaultParagraphSeparator: '',
85
+ defaultFontName: '',
86
+ defaultFontSize: '',
87
+ fonts: [
88
+ { class: 'arial', name: 'Arial' },
89
+ { class: 'times-new-roman', name: 'Times New Roman' },
90
+ { class: 'calibri', name: 'Calibri' },
91
+ { class: 'comic-sans-ms', name: 'Comic Sans MS' }
92
+ ],
93
+ customClasses: [
94
+ {
95
+ name: 'quote',
96
+ class: 'quote',
97
+ },
98
+ {
99
+ name: 'redText',
100
+ class: 'redText'
101
+ },
102
+ {
103
+ name: 'titleText',
104
+ class: 'titleText',
105
+ tag: 'h1',
106
+ },
107
+ ],
108
+ uploadUrl: 'v1/image',
109
+ uploadWithCredentials: false,
110
+ sanitize: false,
111
+ toolbarPosition: 'top',
112
+ toolbarHiddenButtons: []
113
+ };
114
+ this.editorArabicConfig = {
115
+ editable: !this.options.IsDisabled,
116
+ spellcheck: true,
117
+ height: this.options.Height.toString(),
118
+ minHeight: this.options.Height.toString(),
119
+ maxHeight: 'auto',
120
+ width: 'auto',
121
+ minWidth: 'auto',
122
+ translate: 'yes',
123
+ enableToolbar: true,
124
+ showToolbar: true,
125
+ placeholder: this.options.ArabicPlaceholder,
126
+ defaultParagraphSeparator: '',
127
+ defaultFontName: '',
128
+ defaultFontSize: '',
129
+ fonts: [
130
+ { class: 'arial', name: 'Arial' },
131
+ { class: 'times-new-roman', name: 'Times New Roman' },
132
+ { class: 'calibri', name: 'Calibri' },
133
+ { class: 'comic-sans-ms', name: 'Comic Sans MS' }
134
+ ],
135
+ customClasses: [
136
+ {
137
+ name: 'quote',
138
+ class: 'quote',
139
+ },
140
+ {
141
+ name: 'redText',
142
+ class: 'redText'
143
+ },
144
+ {
145
+ name: 'titleText',
146
+ class: 'titleText',
147
+ tag: 'h1',
148
+ },
149
+ ],
150
+ uploadUrl: 'v1/image',
151
+ uploadWithCredentials: false,
152
+ sanitize: false,
153
+ toolbarPosition: 'top',
154
+ toolbarHiddenButtons: []
155
+ };
156
+ this.controlValidationService.isCreatedBefor = false;
157
+ this.CurrentLanguage = yield this.UtilityService.getCurrentLanguage();
158
+ // UtilityService.Translator.onLangChange.subscribe((event: LangChangeEvent) => {
159
+ // this.CurrentLanguage = event.lang
160
+ // this.showInputUsingLanguageMode();
161
+ // });
162
+ // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];
163
+ // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']
164
+ // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']
165
+ // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']
166
+ // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']
167
+ // this.ArabicConfig = {
168
+ // placeholder: this.options.ArabicPlaceholder,
169
+ // height: `${this.options.Height}px`,
170
+ // toolbar: [
171
+ // ['misc', this.miscList],
172
+ // ['style', this.styleList],
173
+ // ['fontsize', this.fontsizeList],
174
+ // ['para', this.paraList],
175
+ // ['insert', this.insertList]
176
+ // ],
177
+ // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']
178
+ // }
179
+ // this.EnglishConfig = {
180
+ // placeholder: this.options.EnglishPlaceholder,
181
+ // height: `${this.options.Height}px`,
182
+ // toolbar: [
183
+ // ['misc', this.miscList],
184
+ // ['style', this.styleList],
185
+ // ['fontsize', this.fontsizeList],
186
+ // ['para', this.paraList],
187
+ // ['insert', this.insertList]
188
+ // ],
189
+ // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']
190
+ // }
191
+ this.MultilingualHtmlEditorgroup = new FormGroup({});
192
+ ;
193
+ this.MultilingualHtmlEditorgroup.addControl("Arabic", new FormControl(''));
194
+ this.MultilingualHtmlEditorgroup.addControl("English", new FormControl(''));
195
+ this.ArabicHtmlEditorFormControl = this.MultilingualHtmlEditorgroup.controls["Arabic"]; // new FormControl('',validationRules);
196
+ this.EnglishHtmlEditorFormControl = this.MultilingualHtmlEditorgroup.controls["English"]; // new FormControl('',validationRules);
197
+ this.group.addControl(this.options.Name, new FormGroup(this.MultilingualHtmlEditorgroup.controls));
198
+ this.getCustomErrorsMassages();
199
+ switch (this.options.Type) {
200
+ case InputType.Email:
201
+ this.EnglishValidationRules.push(Validators.compose([
202
+ this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/, { EmailValidationKey: "" }),
203
+ ]));
204
+ this.ArabicValidationRules.push(Validators.compose([
205
+ this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/, { EmailValidationKey: "" }),
206
+ ]));
207
+ break;
208
+ case InputType.Number:
209
+ this.EnglishValidationRules.push(Validators.pattern('^[0-9]+(\.?[0-9]+)?$'));
210
+ this.ArabicValidationRules.push(Validators.pattern('^[0-9]+(\.?[0-9]+)?$'));
211
+ break;
212
+ }
213
+ if (this.options.CustomValidation.length > 0) {
214
+ let Validations = this.options.CustomValidation;
215
+ for (let index = 0; index < Validations.length; index++) {
216
+ const Validation = Validations[index];
217
+ this.EnglishValidationRules.push(Validation.functionBody);
218
+ this.ArabicValidationRules.push(Validation.functionBody);
219
+ }
220
+ }
221
+ if (this.options.MinLength > 0) {
222
+ this.ArabicValidationRules.push(Validators.minLength(this.options.MinLength));
223
+ this.EnglishValidationRules.push(Validators.minLength(this.options.MinLength));
224
+ }
225
+ if (this.options.MaxLength > 0) {
226
+ this.EnglishValidationRules.push(Validators.maxLength(this.options.MaxLength));
227
+ this.ArabicValidationRules.push(Validators.maxLength(this.options.MaxLength));
228
+ }
229
+ if (this.options.LabelKey != null && this.options.LabelKey != "") {
230
+ this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + " " + this.UtilityService.getResourceValue("InArabic");
231
+ this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.LabelKey) + " " + this.UtilityService.getResourceValue("InEnglish");
232
+ }
233
+ else {
234
+ if (this.options.ArabicLabelKey != null && this.options.ArabicLabelKey != "")
235
+ this.options.ArabicLabelValue = this.UtilityService.getResourceValue(this.options.ArabicLabelKey);
236
+ if (this.options.EnglishLabelKey != null && this.options.EnglishLabelKey != "")
237
+ this.options.EnglishLabelValue = this.UtilityService.getResourceValue(this.options.EnglishLabelKey);
238
+ }
239
+ this.showInputUsingLanguageMode();
240
+ this.ArabicValidationRules.push(Validators.compose([
241
+ this.controlUtility.patternValidator(/^[\u0621-\u064A\u0660-\u0669 ]+$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
242
+ ]));
243
+ this.EnglishValidationRules.push(Validators.compose([
244
+ this.controlUtility.patternValidator(/^[~`!@#$%^&*()‘’“”_+=[\]\\{}|;':",.\/<>?a-zA-Z0-9- ]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
245
+ ]));
246
+ // this.ArabicHtmlEditorFormControl.setValidators(this.ArabicValidationRules);
247
+ // this.ArabicHtmlEditorFormControl.setAsyncValidators(this.ArabicValidationRulesasync);
248
+ this.EnglishHtmlEditorFormControl.setValidators(this.EnglishValidationRules);
249
+ this.EnglishHtmlEditorFormControl.setAsyncValidators(this.EnglishValidationRulesasync);
250
+ if (this.options.IsDisabled) {
251
+ this.EnglishHtmlEditorFormControl.disable();
252
+ this.ArabicHtmlEditorFormControl.disable();
253
+ }
254
+ this.ArabicHtmlEditorFormControl.setValue(this.options.Value.Arabic);
255
+ this.EnglishHtmlEditorFormControl.setValue(this.options.Value.English);
256
+ this.MultiLingualHtmlEditorFormControlHost.ngSubmit.subscribe((value) => {
257
+ this.group.markAllAsTouched();
258
+ this.markAllAsTouched = true;
259
+ });
260
+ });
261
+ }
262
+ ngAfterViewChecked() {
263
+ let dir = this.UtilityService.getCurrentLanguage() == "en" ? "ltr" : "rtl";
264
+ var angularEditor = document.getElementsByClassName("angular-editor-toolbar ng-star-inserted");
265
+ for (let index = 0; index < angularEditor.length; index++) {
266
+ const element = angularEditor[index];
267
+ element.setAttribute("dir", dir);
268
+ }
269
+ }
270
+ onTextChange(type) {
271
+ if (type == "en") {
272
+ this.MultilingualHtmlEditorgroup.controls["English"].setValue(this.MultilingualHtmlEditorgroup.controls["English"].value.trim());
273
+ this.englishValue = this.MultilingualHtmlEditorgroup.controls["English"].value == null ? "" : this.MultilingualHtmlEditorgroup.controls["English"].value;
274
+ if (this.englishValue) {
275
+ this.EnglishHtmlEditorFormControl.setValue(this.englishValue);
276
+ let originalValue = this.englishValue;
277
+ if (this.options.PatchFunction && this.options.PatchPath && this.EnglishHtmlEditorFormControl.valid) {
278
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
279
+ }
280
+ }
281
+ let EngliswordCountArray = this.EnglishHtmlEditorFormControl.value.split(" ").length;
282
+ if (EngliswordCountArray > 0) {
283
+ if (EngliswordCountArray > this.options.MaxWordCount)
284
+ this.MultilingualHtmlEditorgroup.controls["English"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });
285
+ this.MultilingualHtmlEditorgroup.controls["English"].markAsTouched();
286
+ this.MultilingualHtmlEditorgroup.controls["English"].invalid;
287
+ }
288
+ }
289
+ if (type == "ar") {
290
+ this.MultilingualHtmlEditorgroup.controls["Arabic"].setValue(this.MultilingualHtmlEditorgroup.controls["Arabic"].value.trim());
291
+ this.arabicValue = this.MultilingualHtmlEditorgroup.controls["Arabic"].value == null ? "" : this.MultilingualHtmlEditorgroup.controls["Arabic"].value;
292
+ if (this.arabicValue) {
293
+ this.ArabicHtmlEditorFormControl.setValue(this.arabicValue);
294
+ let originalValue = this.arabicValue;
295
+ if (this.options.PatchFunction && this.options.PatchPath && this.ArabicHtmlEditorFormControl.valid) {
296
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
297
+ }
298
+ }
299
+ let ArabicwordCountArray = this.ArabicHtmlEditorFormControl.value.split(" ").length;
300
+ if (ArabicwordCountArray > 0) {
301
+ if (ArabicwordCountArray > this.options.MaxWordCount)
302
+ this.MultilingualHtmlEditorgroup.controls["Arabic"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });
303
+ this.MultilingualHtmlEditorgroup.controls["Arabic"].markAsTouched();
304
+ this.MultilingualHtmlEditorgroup.controls["Arabic"].invalid;
305
+ }
306
+ }
307
+ let mulitLangModel = new EnglishArabicDTO();
308
+ mulitLangModel.Arabic = this.arabicValue;
309
+ mulitLangModel.English = this.englishValue;
310
+ this.OnChange.emit(mulitLangModel);
311
+ if (this.arabicValue && this.englishValue)
312
+ this.group.get(this.options.Name).setValue(mulitLangModel);
313
+ //Use this line to enable two way binding.
314
+ this.options.Value = mulitLangModel;
315
+ }
316
+ showGlobalError() {
317
+ this.controlUtility.showGlobalError();
318
+ }
319
+ getErrorValidation(ErrorList) {
320
+ if (this.markAllAsTouched && this.group.invalid) {
321
+ this.showGlobalError();
322
+ this.markAllAsTouched = false;
323
+ }
324
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
325
+ }
326
+ showInputUsingLanguageMode() {
327
+ this.ArabicValidationRules = this.ArabicValidationRules.filter(item => item !== Validators.required);
328
+ this.EnglishValidationRules = this.EnglishValidationRules.filter(item => item !== Validators.required);
329
+ this.ArabicHtmlEditorFormControl.clearValidators();
330
+ this.EnglishHtmlEditorFormControl.clearValidators();
331
+ this.ArabicHtmlEditorFormControl.updateValueAndValidity();
332
+ this.EnglishHtmlEditorFormControl.updateValueAndValidity();
333
+ switch (this.options.LanguageMode) {
334
+ case LanguageMode.Both_Languages_are_visible:
335
+ this.ShowArabicHtmlEditor = true;
336
+ this.ShowEnglishHtmlEditor = true;
337
+ if (this.options.IsRequired == true) {
338
+ this.EnglishValidationRules.push(Validators.required);
339
+ this.ArabicValidationRules.push(Validators.required);
340
+ this.IsShowAsteriskInArabic = true;
341
+ this.IsShowAsteriskInEnglish = true;
342
+ }
343
+ break;
344
+ case LanguageMode.Arabic_Language_only_is_visible:
345
+ this.ShowArabicHtmlEditor = true;
346
+ break;
347
+ case LanguageMode.English_Language_only_is_visible:
348
+ this.ShowEnglishHtmlEditor = true;
349
+ break;
350
+ case LanguageMode.Both_Languages_are_visible_but_only_current_language_is_required:
351
+ this.ShowArabicHtmlEditor = true;
352
+ this.ShowEnglishHtmlEditor = true;
353
+ if (this.CurrentLanguage == 'ar') {
354
+ if (this.options.IsRequired == true) {
355
+ this.ArabicValidationRules.push(Validators.required);
356
+ this.IsShowAsteriskInArabic = true;
357
+ }
358
+ }
359
+ if (this.CurrentLanguage == 'en') {
360
+ if (this.options.IsRequired == true) {
361
+ this.EnglishValidationRules.push(Validators.required);
362
+ this.IsShowAsteriskInEnglish = true;
363
+ }
364
+ }
365
+ break;
366
+ case LanguageMode.Both_Languages_but_only_Arabic_is_required:
367
+ this.ShowArabicHtmlEditor = true;
368
+ this.ShowEnglishHtmlEditor = true;
369
+ if (this.options.IsRequired == true) {
370
+ this.ArabicValidationRules.push(Validators.required);
371
+ this.IsShowAsteriskInArabic = true;
372
+ }
373
+ break;
374
+ case LanguageMode.Both_Languages_but_only_English_is_required:
375
+ this.ShowArabicHtmlEditor = true;
376
+ this.ShowEnglishHtmlEditor = true;
377
+ if (this.options.IsRequired == true) {
378
+ this.EnglishValidationRules.push(Validators.required);
379
+ this.IsShowAsteriskInEnglish = true;
380
+ }
381
+ break;
382
+ case LanguageMode.Current_Language_only_is_visible_and_required:
383
+ if (this.CurrentLanguage == 'ar') {
384
+ this.ShowArabicHtmlEditor = true;
385
+ this.ShowEnglishHtmlEditor = false;
386
+ if (this.options.IsRequired == true) {
387
+ this.ArabicValidationRules.push(Validators.required);
388
+ this.IsShowAsteriskInArabic = true;
389
+ }
390
+ }
391
+ if (this.CurrentLanguage == 'en') {
392
+ this.ShowArabicHtmlEditor = false;
393
+ this.ShowEnglishHtmlEditor = true;
394
+ if (this.options.IsRequired == true) {
395
+ this.EnglishValidationRules.push(Validators.required);
396
+ this.IsShowAsteriskInEnglish = true;
397
+ }
398
+ }
399
+ break;
400
+ default:
401
+ break;
402
+ }
403
+ this.ArabicHtmlEditorFormControl.setValidators(this.ArabicValidationRules);
404
+ this.EnglishHtmlEditorFormControl.setValidators(this.EnglishValidationRules);
405
+ this.ArabicHtmlEditorFormControl.updateValueAndValidity();
406
+ this.EnglishHtmlEditorFormControl.updateValueAndValidity();
407
+ }
408
+ }
409
+ MultiLingualHtmlEditorComponent.controlContainerstatic = null;
410
+ MultiLingualHtmlEditorComponent.decorators = [
411
+ { type: Component, args: [{
412
+ selector: 'BBSF-MultiLingualHtmlEditor',
413
+ template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control form-group bbsf-multilang-htmleditor mb-0\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"row\">\r\n <!--English htmleditor-->\r\n <div [ngClass] =\"ShowArabicHtmlEditor? 'col-md-6' : 'col-md-12'\" *ngIf=\"ShowEnglishHtmlEditor\" class=\" bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor class=\"{{options.ExtraClasses_EN}}\" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic htmleditor-->\r\n <div *ngIf=\"ShowArabicHtmlEditor\" [ngClass] =\"ShowEnglishHtmlEditor? 'col-md-6' : 'col-md-12'\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor dir=\"rtl\" class=\"{{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
414
+ },] }
415
+ ];
416
+ MultiLingualHtmlEditorComponent.ctorParameters = () => [
417
+ { type: FormGroupDirective },
418
+ { type: ControlContainer, decorators: [{ type: Optional }] },
419
+ { type: ControlUtility },
420
+ { type: UtilityService },
421
+ { type: ControlValidationService },
422
+ { type: GlobalSettings }
423
+ ];
424
+ MultiLingualHtmlEditorComponent.propDecorators = {
425
+ group: [{ type: Input }],
426
+ options: [{ type: Input }],
427
+ OnChange: [{ type: Output }]
428
+ };
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvTXVsdGlMaW5ndWFsSHRtbEVkaXRvci9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFNOUUsTUFBTSxPQUFPLCtCQUErQjtJQUsxQyxZQUFtQixxQ0FBeUQsRUFBc0IsZ0JBQWtDLEVBQzFILGNBQThCLEVBQVUsY0FBOEIsRUFBVSx3QkFBa0QsRUFDbEksY0FBOEI7UUFGckIsMENBQXFDLEdBQXJDLHFDQUFxQyxDQUFvQjtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzFILG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3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QUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL011bHRpTGluZ3VhbEh0bWxFZGl0b3JPcHRpb25zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBMYW5ndWFnZU1vZGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvTGFuZ3VhZ2VNb2RlJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckNvbmZpZyB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG5cclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLU11bHRpTGluZ3VhbEh0bWxFZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlMaW5ndWFsSHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICBJc1Nob3dBc3Rlcmlza0luQXJhYmljOiBib29sZWFuO1xyXG4gIElzU2hvd0FzdGVyaXNrSW5FbmdsaXNoOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBNdWx0aUxpbmd1YWxIdG1sRWRpdG9yRm9ybUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBjb250cm9sVmFsaWRhdGlvblNlcnZpY2U6IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzXHJcbiAgKSB7XHJcbiAgICBNdWx0aUxpbmd1YWxIdG1sRWRpdG9yQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIE11bHRpVGV4dEFyZWFGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIE11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cDogRm9ybUdyb3VwO1xyXG4gIEFyYWJpY0NvbmZpZzogYW55XHJcbiAgRW5nbGlzaENvbmZpZzogYW55XHJcbiAgZWRpdG9yRW5nbGlzaENvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZ1xyXG4gIGVkaXRvckFyYWJpY0NvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZ1xyXG5cclxuICBtaXNjTGlzdDogYW55XHJcbiAgc3R5bGVMaXN0OiBhbnlcclxuICBmb250c2l6ZUxpc3Q6IGFueVxyXG4gIHBhcmFMaXN0OiBhbnlcclxuICBpbnNlcnRMaXN0OiBhbnlcclxuXHJcbiAgQ3VycmVudExhbmd1YWdlOiBzdHJpbmcgPSBcIlwiOztcclxuICBTaG93QXJhYmljSHRtbEVkaXRvcjogYm9vbGVhblxyXG4gIFNob3dFbmdsaXNoSHRtbEVkaXRvcjogYm9vbGVhblxyXG4gIEFyYWJpY1ZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIEFyYWJpY1ZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgRW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIEVuZ2xpc2hWYWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG5cclxuICBBcmFiaWNMZXR0ZXJPbmx5OnN0cmluZz1cIlwiXHJcbiAgRW5nbGlzaExldHRlck9ubHk6c3RyaW5nPVwiXCJcclxuXHJcbiAgZW5nbGlzaFZhbHVlPW51bGxcclxuICBhcmFiaWNWYWx1ZT1udWxsXHJcblxyXG4gZ2V0Q3VzdG9tRXJyb3JzTWFzc2FnZXMoKSB7XHJcbiAgICB0aGlzLkFyYWJpY0xldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBcmFiaWNMZXR0ZXJPbmx5XCIpO1xyXG4gICAgdGhpcy5FbmdsaXNoTGV0dGVyT25seSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuZ2xpc2hMZXR0ZXJPbmx5XCIpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLkxhbmd1YWdlTW9kZTtcclxuXHJcbiAgICB0aGlzLmVkaXRvckVuZ2xpc2hDb25maWcgPSB7XHJcbiAgICAgIGVkaXRhYmxlOiAhdGhpcy5vcHRpb25zLklzRGlzYWJsZWQsXHJcbiAgICAgIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgICAgIGhlaWdodDogdGhpcy5vcHRpb25zLkhlaWdodC50b1N0cmluZygpLFxyXG4gICAgICBtaW5IZWlnaHQ6IHRoaXMub3B0aW9ucy5IZWlnaHQudG9TdHJpbmcoKSxcclxuICAgICAgbWF4SGVpZ2h0OiAgJ2F1dG8nLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBtaW5XaWR0aDogJ2F1dG8nLFxyXG4gICAgICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gICAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5FbmdsaXNoUGxhY2Vob2xkZXIsXHJcbiAgICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgICBkZWZhdWx0Rm9udE5hbWU6ICcnLFxyXG4gICAgICBkZWZhdWx0Rm9udFNpemU6ICcnLFxyXG4gICAgICBmb250czogW1xyXG4gICAgICAgIHtjbGFzczogJ2FyaWFsJywgbmFtZTogJ0FyaWFsJ30sXHJcbiAgICAgICAge2NsYXNzOiAndGltZXMtbmV3LXJvbWFuJywgbmFtZTogJ1RpbWVzIE5ldyBSb21hbid9LFxyXG4gICAgICAgIHtjbGFzczogJ2NhbGlicmknLCBuYW1lOiAnQ2FsaWJyaSd9LFxyXG4gICAgICAgIHtjbGFzczogJ2NvbWljLXNhbnMtbXMnLCBuYW1lOiAnQ29taWMgU2FucyBNUyd9XHJcbiAgICAgIF0sXHJcbiAgICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdxdW90ZScsXHJcbiAgICAgICAgY2xhc3M6ICdxdW90ZScsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAncmVkVGV4dCcsXHJcbiAgICAgICAgY2xhc3M6ICdyZWRUZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3RpdGxlVGV4dCcsXHJcbiAgICAgICAgY2xhc3M6ICd0aXRsZVRleHQnLFxyXG4gICAgICAgIHRhZzogJ2gxJyxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB1cGxvYWRVcmw6ICd2MS9pbWFnZScsXHJcbiAgICB1cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgICBzYW5pdGl6ZTogZmFsc2UsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuXHJcbiAgICBdXHJcbn07XHJcblxyXG5cclxudGhpcy5lZGl0b3JBcmFiaWNDb25maWcgPSB7XHJcbiAgZWRpdGFibGU6ICF0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCxcclxuICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gIGhlaWdodDogdGhpcy5vcHRpb25zLkhlaWdodC50b1N0cmluZygpLFxyXG4gIG1pbkhlaWdodDogdGhpcy5vcHRpb25zLkhlaWdodC50b1N0cmluZygpLFxyXG4gIG1heEhlaWdodDogICdhdXRvJyxcclxuICB3aWR0aDogJ2F1dG8nLFxyXG4gIG1pbldpZHRoOiAnYXV0bycsXHJcbiAgdHJhbnNsYXRlOiAneWVzJyxcclxuICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gIHNob3dUb29sYmFyOiB0cnVlLFxyXG4gIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuQXJhYmljUGxhY2Vob2xkZXIsXHJcbiAgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjogJycsXHJcbiAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICBkZWZhdWx0Rm9udFNpemU6ICcnLFxyXG4gIGZvbnRzOiBbXHJcbiAgICB7Y2xhc3M6ICdhcmlhbCcsIG5hbWU6ICdBcmlhbCd9LFxyXG4gICAge2NsYXNzOiAndGltZXMtbmV3LXJvbWFuJywgbmFtZTogJ1RpbWVzIE5ldyBSb21hbid9LFxyXG4gICAge2NsYXNzOiAnY2FsaWJyaScsIG5hbWU6ICdDYWxpYnJpJ30sXHJcbiAgICB7Y2xhc3M6ICdjb21pYy1zYW5zLW1zJywgbmFtZTogJ0NvbWljIFNhbnMgTVMnfVxyXG4gIF0sXHJcbiAgY3VzdG9tQ2xhc3NlczogW1xyXG4gIHtcclxuICAgIG5hbWU6ICdxdW90ZScsXHJcbiAgICBjbGFzczogJ3F1b3RlJyxcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICdyZWRUZXh0JyxcclxuICAgIGNsYXNzOiAncmVkVGV4dCdcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICd0aXRsZVRleHQnLFxyXG4gICAgY2xhc3M6ICd0aXRsZVRleHQnLFxyXG4gICAgdGFnOiAnaDEnLFxyXG4gIH0sXHJcbl0sXHJcbnVwbG9hZFVybDogJ3YxL2ltYWdlJyxcclxudXBsb2FkV2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcclxuICBzYW5pdGl6ZTogZmFsc2UsXHJcbnRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbnRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcblxyXG5dXHJcbn07XHJcblxyXG50aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcblxyXG4gICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPWF3YWl0IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XHJcblxyXG4gICAgLy8gVXRpbGl0eVNlcnZpY2UuVHJhbnNsYXRvci5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gZXZlbnQubGFuZ1xyXG4gICAgLy8gICB0aGlzLnNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCk7XHJcblxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLm1pc2NMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9NaXNjICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgOiBbJ2NvZGV2aWV3JywgJ3VuZG8nLCAncmVkbyddO1xyXG4gICAgLy8gdGhpcy5zdHlsZUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1N0eWxlICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1N0eWxlIDogWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnY2xlYXInXVxyXG4gICAgLy8gdGhpcy5mb250c2l6ZUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0ZvbnRTaXplICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0ZvbnRTaXplIDogWydmb250bmFtZScsICdmb250c2l6ZScsICdjb2xvciddXHJcbiAgICAvLyB0aGlzLnBhcmFMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9QYXJhICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgOiBbJ3N0eWxlJywgJ3VsJywgJ29sJywgJ3BhcmFncmFwaCcsICdoZWlnaHQnXVxyXG4gICAgLy8gdGhpcy5pbnNlcnRMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfSW5zZXJ0IDogWyd0YWJsZScsICdwaWN0dXJlJywgJ2xpbmsnLCAndmlkZW8nLCAnaHInXVxyXG5cclxuICAgIC8vIHRoaXMuQXJhYmljQ29uZmlnID0ge1xyXG4gICAgLy8gICBwbGFjZWhvbGRlcjogdGhpcy5vcHRpb25zLkFyYWJpY1BsYWNlaG9sZGVyLFxyXG4gICAgLy8gICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cHhgLFxyXG4gICAgLy8gICB0b29sYmFyOiBbXHJcbiAgICAvLyAgICAgWydtaXNjJywgdGhpcy5taXNjTGlzdF0sXHJcbiAgICAvLyAgICAgWydzdHlsZScsIHRoaXMuc3R5bGVMaXN0XSxcclxuICAgIC8vICAgICBbJ2ZvbnRzaXplJywgdGhpcy5mb250c2l6ZUxpc3RdLFxyXG4gICAgLy8gICAgIFsncGFyYScsIHRoaXMucGFyYUxpc3RdLFxyXG4gICAgLy8gICAgIFsnaW5zZXJ0JywgdGhpcy5pbnNlcnRMaXN0XVxyXG4gICAgLy8gICBdLFxyXG4gICAgLy8gICBmb250TmFtZXM6IFsnSGVsdmV0aWNhJywgJ0FyaWFsJywgJ0FyaWFsIEJsYWNrJywgJ0NvbWljIFNhbnMgTVMnLCAnQ291cmllciBOZXcnLCAnUm9ib3RvJywgJ1RpbWVzJ11cclxuXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLkVuZ2xpc2hDb25maWcgPSB7XHJcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuRW5nbGlzaFBsYWNlaG9sZGVyLFxyXG4gICAgLy8gICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cHhgLFxyXG4gICAgLy8gICB0b29sYmFyOiBbXHJcbiAgICAvLyAgICAgWydtaXNjJywgdGhpcy5taXNjTGlzdF0sXHJcbiAgICAvLyAgICAgWydzdHlsZScsIHRoaXMuc3R5bGVMaXN0XSxcclxuICAgIC8vICAgICBbJ2ZvbnRzaXplJywgdGhpcy5mb250c2l6ZUxpc3RdLFxyXG4gICAgLy8gICAgIFsncGFyYScsIHRoaXMucGFyYUxpc3RdLFxyXG4gICAgLy8gICAgIFsnaW5zZXJ0JywgdGhpcy5pbnNlcnRMaXN0XVxyXG4gICAgLy8gICBdLFxyXG4gICAgLy8gICBmb250TmFtZXM6IFsnSGVsdmV0aWNhJywgJ0FyaWFsJywgJ0FyaWFsIEJsYWNrJywgJ0NvbWljIFNhbnMgTVMnLCAnQ291cmllciBOZXcnLCAnUm9ib3RvJywgJ1RpbWVzJ11cclxuXHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cCA9IG5ldyBGb3JtR3JvdXAoe30pOztcclxuICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmFkZENvbnRyb2woXCJBcmFiaWNcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5hZGRDb250cm9sKFwiRW5nbGlzaFwiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sID0gdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbCA9IHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUdyb3VwKHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzKSk7XHJcbiAgICB0aGlzLmdldEN1c3RvbUVycm9yc01hc3NhZ2VzKCk7XHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5UeXBlKSB7XHJcbiAgICAgIGNhc2UgSW5wdXRUeXBlLkVtYWlsOlxyXG4gICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bYS16MC05Ll8lKy1dK0BbYS16MC05Li1dK1xcLlthLXpdezIsNH0kLywgeyBFbWFpbFZhbGlkYXRpb25LZXk6IFwiXCIgfSksXHJcblxyXG4gICAgICAgIF0pKTtcclxuICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bYS16MC05Ll8lKy1dK0BbYS16MC05Li1dK1xcLlthLXpdezIsNH0kLywgeyBFbWFpbFZhbGlkYXRpb25LZXk6IFwiXCIgfSksXHJcblxyXG4gICAgICAgIF0pKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBJbnB1dFR5cGUuTnVtYmVyOlxyXG4gICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybignXlswLTldKyhcXC4/WzAtOV0rKT8kJykpO1xyXG4gICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5NaW5MZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5vcHRpb25zLk1pbkxlbmd0aCkpO1xyXG4gICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKSk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSkgKyBcIiBcIiArIHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluQXJhYmljXCIpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KSArIFwiIFwiICsgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5FbmdsaXNoXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuQXJhYmljTGFiZWxLZXkpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLkVuZ2xpc2hMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpO1xyXG4gICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bXFx1MDYyMS1cXHUwNjRBXFx1MDY2MC1cXHUwNjY5IF0rJC8sIHsgQXJhYmljTGV0dGVyT25seTogdGhpcy5BcmFiaWNMZXR0ZXJPbmx5IH0pLFxyXG5cclxuICAgIF0pKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlt+YCFAIyQlXiYqKCnigJjigJnigJzigJ1fKz1bXFxdXFxcXHt9fDsnOlwiLC5cXC88Pj9hLXpBLVowLTktIF0qJC8sIHsgRW5nbGlzaExldHRlck9ubHk6IHRoaXMuRW5nbGlzaExldHRlck9ubHkgfSksXHJcblxyXG4gICAgXSkpO1xyXG4gICAgLy8gdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICAvLyB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5BcmFiaWMpXHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLlZhbHVlLkVuZ2xpc2gpXHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbEh0bWxFZGl0b3JGb3JtQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6dm9pZCB7XHJcbiAgICBsZXQgZGlyPXRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJlblwiID8gXCJsdHJcIiA6IFwicnRsXCJcclxuICAgIHZhciBhbmd1bGFyRWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFuZ3VsYXItZWRpdG9yLXRvb2xiYXIgbmctc3Rhci1pbnNlcnRlZFwiKTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhbmd1bGFyRWRpdG9yLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gYW5ndWxhckVkaXRvcltpbmRleF07XHJcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGlyXCIsZGlyICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVGV4dENoYW5nZSh0eXBlOnN0cmluZykge1xyXG5cclxuICAgIGlmKHR5cGU9PVwiZW5cIil7XHJcbiAgICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5zZXRWYWx1ZSh0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0udmFsdWUudHJpbSgpKTtcclxuICAgICAgdGhpcy5lbmdsaXNoVmFsdWUgPSB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0udmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0udmFsdWU7XHJcbiAgICAgIGlmKCB0aGlzLmVuZ2xpc2hWYWx1ZSl7XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZW5nbGlzaFZhbHVlKTtcclxuICAgICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5lbmdsaXNoVmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gLHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBFbmdsaXN3b3JkQ291bnRBcnJheSA9ICh0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wudmFsdWUgYXMgc3RyaW5nKS5zcGxpdChcIiBcIikubGVuZ3RoXHJcbiAgICAgIGlmIChFbmdsaXN3b3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgICBpZiAoRW5nbGlzd29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KVxyXG4gICAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdLnNldEVycm9ycyh7IE1heFdvcmRDb3VudFZhbGlkYXRpb25LZXk6IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgfSlcclxuICAgICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0ubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdLmludmFsaWRcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYodHlwZT09XCJhclwiKVxyXG4gICAge1xyXG4gICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXS5zZXRWYWx1ZSh0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXS52YWx1ZS50cmltKCkpO1xyXG5cclxuICAgICAgdGhpcy5hcmFiaWNWYWx1ZSA9IHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLnZhbHVlID09IG51bGwgPyBcIlwiIDogdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0udmFsdWU7XHJcblxyXG4gICAgICBpZih0aGlzLmFyYWJpY1ZhbHVlKXtcclxuICAgICAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmFyYWJpY1ZhbHVlKTtcclxuICAgICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5hcmFiaWNWYWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShvcmlnaW5hbFZhbHVlLHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICx0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IEFyYWJpY3dvcmRDb3VudEFycmF5ID0gKHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbHVlIGFzIHN0cmluZykuc3BsaXQoXCIgXCIpLmxlbmd0aFxyXG4gICAgICBpZiAoQXJhYmljd29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgaWYgKEFyYWJpY3dvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudClcclxuICAgICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pXHJcbiAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0ubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0uaW52YWxpZFxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBtdWxpdExhbmdNb2RlbCA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKClcclxuICAgIG11bGl0TGFuZ01vZGVsLkFyYWJpYyA9IHRoaXMuYXJhYmljVmFsdWU7XHJcbiAgICBtdWxpdExhbmdNb2RlbC5FbmdsaXNoID0gdGhpcy5lbmdsaXNoVmFsdWVcclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdChtdWxpdExhbmdNb2RlbClcclxuICAgIGlmKHRoaXMuYXJhYmljVmFsdWUmJnRoaXMuZW5nbGlzaFZhbHVlKVxyXG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnNldFZhbHVlKG11bGl0TGFuZ01vZGVsKVxyXG4gICAgLy9Vc2UgdGhpcyBsaW5lIHRvIGVuYWJsZSB0d28gd2F5IGJpbmRpbmcuXHJcbiAgICB0aGlzLm9wdGlvbnMuVmFsdWU9bXVsaXRMYW5nTW9kZWw7XHJcbiAgfVxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuUmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcblxyXG4gICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSkge1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZTpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYz10cnVlO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaD10cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQXJhYmljX0xhbmd1YWdlX29ubHlfaXNfdmlzaWJsZTpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuRW5nbGlzaF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY0h0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuQ3VycmVudExhbmd1YWdlID09ICdhcicpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYz10cnVlO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuQ3VycmVudExhbmd1YWdlID09ICdlbicpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19idXRfb25seV9BcmFiaWNfaXNfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljPXRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19idXRfb25seV9FbmdsaXNoX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY0h0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQ3VycmVudF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGVfYW5kX3JlcXVpcmVkOlxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljPXRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljSHRtbEVkaXRvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoPXRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbClcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbClcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==