@bnsights/bbsf-controls 1.0.109 → 1.0.111

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 (282) hide show
  1. package/README.md +8 -0
  2. package/{esm2020 → esm2022}/bnsights-bbsf-controls.mjs +4 -4
  3. package/esm2022/bnsights-test-test-controls.mjs +5 -0
  4. package/{esm2020 → esm2022}/lib/Shared/Components/app-base-component.mjs +226 -226
  5. package/{esm2020 → esm2022}/lib/Shared/Components/ng-tag-input.mjs +176 -176
  6. package/{esm2020 → esm2022}/lib/Shared/Directives/template-name.directive.mjs +18 -18
  7. package/{esm2020 → esm2022}/lib/Shared/Enums/CalendarView.mjs +7 -7
  8. package/{esm2020 → esm2022}/lib/Shared/Enums/ControlLayout.mjs +5 -5
  9. package/{esm2020 → esm2022}/lib/Shared/Enums/Countries.mjs +246 -246
  10. package/{esm2020 → esm2022}/lib/Shared/Enums/Enums.mjs +32 -32
  11. package/{esm2020 → esm2022}/lib/Shared/Enums/FileType.mjs +21 -21
  12. package/{esm2020 → esm2022}/lib/Shared/Enums/FilterType.mjs +10 -10
  13. package/{esm2020 → esm2022}/lib/Shared/Enums/FontSize.mjs +6 -6
  14. package/{esm2020 → esm2022}/lib/Shared/Enums/ForceDirection.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/Shared/Enums/IconPosition.mjs +5 -5
  16. package/{esm2020 → esm2022}/lib/Shared/Enums/ImageType.mjs +9 -9
  17. package/{esm2020 → esm2022}/lib/Shared/Enums/InputType.mjs +9 -9
  18. package/{esm2020 → esm2022}/lib/Shared/Enums/Insert.mjs +8 -8
  19. package/{esm2020 → esm2022}/lib/Shared/Enums/LanguageMode.mjs +10 -10
  20. package/{esm2020 → esm2022}/lib/Shared/Enums/LanguageValidation.mjs +5 -5
  21. package/{esm2020 → esm2022}/lib/Shared/Enums/Misc.mjs +6 -6
  22. package/{esm2020 → esm2022}/lib/Shared/Enums/PagingActionMode.mjs +5 -5
  23. package/{esm2020 → esm2022}/lib/Shared/Enums/Para.mjs +8 -8
  24. package/{esm2020 → esm2022}/lib/Shared/Enums/PickerType.mjs +6 -6
  25. package/{esm2020 → esm2022}/lib/Shared/Enums/SelectMode.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/Shared/Enums/StartView.mjs +6 -6
  27. package/{esm2020 → esm2022}/lib/Shared/Enums/Style.mjs +7 -7
  28. package/{esm2020 → esm2022}/lib/Shared/Enums/StyleConfirmationMode.mjs +6 -6
  29. package/{esm2020 → esm2022}/lib/Shared/Enums/TagInputView.mjs +6 -6
  30. package/esm2022/lib/Shared/Enums/map-enums.mjs +7 -0
  31. package/{esm2020 → esm2022}/lib/Shared/Enums/menu-list-enum.mjs +5 -5
  32. package/{esm2020 → esm2022}/lib/Shared/Models/Attribute.mjs +2 -2
  33. package/{esm2020 → esm2022}/lib/Shared/Models/AutocompleteDTO.mjs +7 -7
  34. package/{esm2020 → esm2022}/lib/Shared/Models/AutocompleteOptions.mjs +23 -23
  35. package/{esm2020 → esm2022}/lib/Shared/Models/CalendarEventDTO.mjs +2 -2
  36. package/{esm2020 → esm2022}/lib/Shared/Models/CalendarOptions.mjs +18 -18
  37. package/{esm2020 → esm2022}/lib/Shared/Models/CancelDTO.mjs +6 -6
  38. package/{esm2020 → esm2022}/lib/Shared/Models/CaptchaStyle.mjs +2 -2
  39. package/{esm2020 → esm2022}/lib/Shared/Models/CheckBoxOptions.mjs +10 -10
  40. package/{esm2020 → esm2022}/lib/Shared/Models/ConfirmationModalOptions.mjs +38 -38
  41. package/{esm2020 → esm2022}/lib/Shared/Models/ControlOptionsBase.mjs +12 -12
  42. package/{esm2020 → esm2022}/lib/Shared/Models/CustomValidation.mjs +13 -13
  43. package/{esm2020 → esm2022}/lib/Shared/Models/DropdownListItem.mjs +2 -2
  44. package/{esm2020 → esm2022}/lib/Shared/Models/DropdownOptions.mjs +15 -15
  45. package/{esm2020 → esm2022}/lib/Shared/Models/EditPersonalImage.mjs +6 -6
  46. package/{esm2020 → esm2022}/lib/Shared/Models/EnglishArabicDTO.mjs +10 -10
  47. package/{esm2020 → esm2022}/lib/Shared/Models/FileDTO.mjs +1 -1
  48. package/{esm2020 → esm2022}/lib/Shared/Models/FileUploadModel.mjs +2 -2
  49. package/{esm2020 → esm2022}/lib/Shared/Models/FileUploadOptions.mjs +10 -10
  50. package/{esm2020 → esm2022}/lib/Shared/Models/FilterItem.mjs +7 -7
  51. package/{esm2020 → esm2022}/lib/Shared/Models/FormOptions.mjs +27 -27
  52. package/{esm2020 → esm2022}/lib/Shared/Models/HtmlEditorOptions.mjs +11 -11
  53. package/{esm2020 → esm2022}/lib/Shared/Models/ImageUploadOptions.mjs +13 -13
  54. package/esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs +10 -0
  55. package/{esm2020 → esm2022}/lib/Shared/Models/MapAutocompleteDTO.mjs +5 -5
  56. package/{esm2020 → esm2022}/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs +8 -8
  57. package/{esm2020 → esm2022}/lib/Shared/Models/MultiLingualTextAreaOptions.mjs +8 -8
  58. package/{esm2020 → esm2022}/lib/Shared/Models/MultilingualControlOptionsBase.mjs +15 -15
  59. package/{esm2020 → esm2022}/lib/Shared/Models/MultilingualTextBoxOptions.mjs +13 -13
  60. package/{esm2020 → esm2022}/lib/Shared/Models/MultipleFileUploadModel.mjs +8 -8
  61. package/{esm2020 → esm2022}/lib/Shared/Models/PagingDTO.mjs +12 -12
  62. package/{esm2020 → esm2022}/lib/Shared/Models/PagingOptions.mjs +46 -46
  63. package/{esm2020 → esm2022}/lib/Shared/Models/PagingPayload.mjs +2 -2
  64. package/{esm2020 → esm2022}/lib/Shared/Models/PhoneOptions.mjs +12 -12
  65. package/{esm2020 → esm2022}/lib/Shared/Models/ProfileImageUploadOptions.mjs +10 -10
  66. package/{esm2020 → esm2022}/lib/Shared/Models/ProfilePictureDTO.mjs +2 -2
  67. package/{esm2020 → esm2022}/lib/Shared/Models/RadioButtonItem.mjs +2 -2
  68. package/{esm2020 → esm2022}/lib/Shared/Models/RadioButtonOptions.mjs +3 -3
  69. package/{esm2020 → esm2022}/lib/Shared/Models/RangeNumber.mjs +2 -2
  70. package/{esm2020 → esm2022}/lib/Shared/Models/Recaptcha.mjs +5 -5
  71. package/{esm2020 → esm2022}/lib/Shared/Models/RecaptchaOptions.mjs +21 -21
  72. package/{esm2020 → esm2022}/lib/Shared/Models/RepeaterField.mjs +2 -2
  73. package/{esm2020 → esm2022}/lib/Shared/Models/RepeaterOptions.mjs +12 -12
  74. package/{esm2020 → esm2022}/lib/Shared/Models/SaveDTO.mjs +6 -6
  75. package/{esm2020 → esm2022}/lib/Shared/Models/TagsInputDTO.mjs +2 -2
  76. package/{esm2020 → esm2022}/lib/Shared/Models/TagsInputOptions.mjs +40 -40
  77. package/{esm2020 → esm2022}/lib/Shared/Models/TextAreaOptions.mjs +3 -3
  78. package/{esm2020 → esm2022}/lib/Shared/Models/TextBoxOptions.mjs +22 -22
  79. package/{esm2020 → esm2022}/lib/Shared/Models/ToggleslideOptions.mjs +8 -8
  80. package/{esm2020 → esm2022}/lib/Shared/Models/UploadPersonalImage.mjs +6 -6
  81. package/{esm2020 → esm2022}/lib/Shared/Models/bread-crumb.mjs +7 -7
  82. package/{esm2020 → esm2022}/lib/Shared/Models/control-filter-Item.mjs +5 -5
  83. package/{esm2020 → esm2022}/lib/Shared/Models/datePickerOptions.mjs +22 -22
  84. package/{esm2020 → esm2022}/lib/Shared/Models/filter-options.mjs +8 -8
  85. package/{esm2020 → esm2022}/lib/Shared/Models/page-header-options.mjs +77 -77
  86. package/{esm2020 → esm2022}/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -21
  87. package/{esm2020 → esm2022}/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -21
  88. package/{esm2020 → esm2022}/lib/Shared/config/environment.mjs +11 -11
  89. package/{esm2020 → esm2022}/lib/Shared/default_intl.mjs +29 -29
  90. package/{esm2020 → esm2022}/lib/Shared/services/ControlUtility.mjs +162 -162
  91. package/{esm2020 → esm2022}/lib/Shared/services/GlobalSettings.service.mjs +30 -30
  92. package/esm2022/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  93. package/{esm2020 → esm2022}/lib/Shared/services/render-component-service.service.mjs +30 -30
  94. package/esm2022/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
  95. package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
  96. package/esm2022/lib/controls/Calendar/Calendar.component.mjs +173 -0
  97. package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
  98. package/{esm2020 → esm2022}/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -136
  99. package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
  100. package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +193 -0
  101. package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
  102. package/{esm2020 → esm2022}/lib/controls/Form/Form.component.mjs +101 -101
  103. package/esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
  104. package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  105. package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +404 -0
  106. package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  107. package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
  108. package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
  109. package/{esm2020 → esm2022}/lib/controls/Paging/JwPagination.component.mjs +121 -121
  110. package/{esm2020 → esm2022}/lib/controls/Paging/Paging.component.mjs +312 -312
  111. package/esm2022/lib/controls/Phone/Phone.component.mjs +129 -0
  112. package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
  113. package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
  114. package/{esm2020 → esm2022}/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -135
  115. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater/repeater.component.mjs +125 -125
  116. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -750
  117. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -21
  118. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -108
  119. package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
  120. package/esm2022/lib/controls/TextArea/TextArea.component.mjs +196 -0
  121. package/esm2022/lib/controls/TextBox/TextBox.component.mjs +306 -0
  122. package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
  123. package/esm2022/lib/controls/bbsf-controls.module.mjs +339 -0
  124. package/{esm2020 → esm2022}/lib/controls/page-header-component/page-header-component.component.mjs +37 -37
  125. package/{esm2020 → esm2022}/public-api.mjs +128 -130
  126. package/{fesm2020 → fesm2022}/bnsights-bbsf-controls.mjs +8802 -8736
  127. package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -0
  128. package/{fesm2015/bnsights-bbsf-controls.mjs → fesm2022/bnsights-test-test-controls.mjs} +8803 -8798
  129. package/fesm2022/bnsights-test-test-controls.mjs.map +1 -0
  130. package/index.d.ts +5 -5
  131. package/lib/Shared/Components/app-base-component.d.ts +58 -58
  132. package/lib/Shared/Components/ng-tag-input.d.ts +50 -50
  133. package/lib/Shared/Directives/template-name.directive.d.ts +9 -9
  134. package/lib/Shared/Enums/CalendarView.d.ts +6 -6
  135. package/lib/Shared/Enums/ControlLayout.d.ts +4 -4
  136. package/lib/Shared/Enums/Countries.d.ts +245 -245
  137. package/lib/Shared/Enums/Enums.d.ts +30 -30
  138. package/lib/Shared/Enums/FileType.d.ts +20 -20
  139. package/lib/Shared/Enums/FilterType.d.ts +9 -9
  140. package/lib/Shared/Enums/FontSize.d.ts +5 -5
  141. package/lib/Shared/Enums/ForceDirection.d.ts +4 -4
  142. package/lib/Shared/Enums/IconPosition.d.ts +4 -4
  143. package/lib/Shared/Enums/ImageType.d.ts +8 -8
  144. package/lib/Shared/Enums/InputType.d.ts +8 -8
  145. package/lib/Shared/Enums/Insert.d.ts +7 -7
  146. package/lib/Shared/Enums/LanguageMode.d.ts +9 -9
  147. package/lib/Shared/Enums/LanguageValidation.d.ts +4 -4
  148. package/lib/Shared/Enums/Misc.d.ts +5 -5
  149. package/lib/Shared/Enums/PagingActionMode.d.ts +4 -4
  150. package/lib/Shared/Enums/Para.d.ts +7 -7
  151. package/lib/Shared/Enums/PickerType.d.ts +5 -5
  152. package/lib/Shared/Enums/SelectMode.d.ts +4 -4
  153. package/lib/Shared/Enums/StartView.d.ts +5 -5
  154. package/lib/Shared/Enums/Style.d.ts +6 -6
  155. package/lib/Shared/Enums/StyleConfirmationMode.d.ts +5 -5
  156. package/lib/Shared/Enums/TagInputView.d.ts +5 -5
  157. package/lib/Shared/Enums/map-enums.d.ts +5 -0
  158. package/lib/Shared/Enums/menu-list-enum.d.ts +4 -4
  159. package/lib/Shared/Models/Attribute.d.ts +4 -4
  160. package/lib/Shared/Models/AutocompleteDTO.d.ts +5 -5
  161. package/lib/Shared/Models/AutocompleteOptions.d.ts +40 -40
  162. package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -8
  163. package/lib/Shared/Models/CalendarOptions.d.ts +23 -23
  164. package/lib/Shared/Models/CancelDTO.d.ts +5 -5
  165. package/lib/Shared/Models/CaptchaStyle.d.ts +7 -7
  166. package/lib/Shared/Models/CheckBoxOptions.d.ts +7 -7
  167. package/lib/Shared/Models/ConfirmationModalOptions.d.ts +21 -21
  168. package/lib/Shared/Models/ControlOptionsBase.d.ts +44 -44
  169. package/lib/Shared/Models/CustomValidation.d.ts +10 -10
  170. package/lib/Shared/Models/DropdownListItem.d.ts +4 -4
  171. package/lib/Shared/Models/DropdownOptions.d.ts +33 -33
  172. package/lib/Shared/Models/EditPersonalImage.d.ts +5 -5
  173. package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -4
  174. package/lib/Shared/Models/FileDTO.d.ts +19 -19
  175. package/lib/Shared/Models/FileUploadModel.d.ts +4 -4
  176. package/lib/Shared/Models/FileUploadOptions.d.ts +19 -19
  177. package/lib/Shared/Models/FilterItem.d.ts +13 -13
  178. package/lib/Shared/Models/FormOptions.d.ts +16 -16
  179. package/lib/Shared/Models/HtmlEditorOptions.d.ts +31 -31
  180. package/lib/Shared/Models/ImageUploadOptions.d.ts +23 -23
  181. package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +8 -6
  182. package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -7
  183. package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +22 -22
  184. package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +12 -12
  185. package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +77 -77
  186. package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +12 -12
  187. package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -7
  188. package/lib/Shared/Models/PagingDTO.d.ts +11 -11
  189. package/lib/Shared/Models/PagingOptions.d.ts +56 -56
  190. package/lib/Shared/Models/PagingPayload.d.ts +5 -5
  191. package/lib/Shared/Models/PhoneOptions.d.ts +21 -21
  192. package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +28 -28
  193. package/lib/Shared/Models/ProfilePictureDTO.d.ts +13 -13
  194. package/lib/Shared/Models/RadioButtonItem.d.ts +4 -4
  195. package/lib/Shared/Models/RadioButtonOptions.d.ts +8 -8
  196. package/lib/Shared/Models/RangeNumber.d.ts +4 -4
  197. package/lib/Shared/Models/Recaptcha.d.ts +6 -6
  198. package/lib/Shared/Models/RecaptchaOptions.d.ts +18 -18
  199. package/lib/Shared/Models/RepeaterField.d.ts +7 -7
  200. package/lib/Shared/Models/RepeaterOptions.d.ts +19 -19
  201. package/lib/Shared/Models/SaveDTO.d.ts +5 -5
  202. package/lib/Shared/Models/TagsInputDTO.d.ts +6 -6
  203. package/lib/Shared/Models/TagsInputOptions.d.ts +57 -57
  204. package/lib/Shared/Models/TextAreaOptions.d.ts +23 -23
  205. package/lib/Shared/Models/TextBoxOptions.d.ts +37 -37
  206. package/lib/Shared/Models/ToggleslideOptions.d.ts +9 -9
  207. package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -5
  208. package/lib/Shared/Models/bread-crumb.d.ts +6 -6
  209. package/lib/Shared/Models/control-filter-Item.d.ts +6 -6
  210. package/lib/Shared/Models/datePickerOptions.d.ts +29 -29
  211. package/lib/Shared/Models/filter-options.d.ts +7 -7
  212. package/lib/Shared/Models/page-header-options.d.ts +71 -71
  213. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +10 -10
  214. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +10 -10
  215. package/lib/Shared/config/environment.d.ts +1 -1
  216. package/lib/Shared/default_intl.d.ts +21 -21
  217. package/lib/Shared/services/ControlUtility.d.ts +32 -32
  218. package/lib/Shared/services/GlobalSettings.service.d.ts +17 -17
  219. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +10 -10
  220. package/lib/Shared/services/render-component-service.service.d.ts +10 -10
  221. package/lib/Shared/services/validationErrorMassage.service.d.ts +14 -14
  222. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +59 -59
  223. package/lib/controls/Calendar/Calendar.component.d.ts +42 -42
  224. package/lib/controls/CheckBox/CheckBox.component.d.ts +37 -37
  225. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +29 -29
  226. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +61 -61
  227. package/lib/controls/DropdownList/DropdownList.component.d.ts +55 -55
  228. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +58 -58
  229. package/lib/controls/Form/Form.component.d.ts +28 -28
  230. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +49 -49
  231. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +70 -70
  232. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +70 -54
  233. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +65 -65
  234. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +74 -74
  235. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +73 -73
  236. package/lib/controls/Paging/JwPagination.component.d.ts +27 -27
  237. package/lib/controls/Paging/Paging.component.d.ts +57 -57
  238. package/lib/controls/Phone/Phone.component.d.ts +43 -43
  239. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +69 -69
  240. package/lib/controls/RadioButton/RadioButton.component.d.ts +37 -37
  241. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +41 -41
  242. package/lib/controls/Repeater/repeater/repeater.component.d.ts +29 -29
  243. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +23 -23
  244. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +11 -11
  245. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +19 -19
  246. package/lib/controls/TagsInput/TagsInput.component.d.ts +58 -58
  247. package/lib/controls/TextArea/TextArea.component.d.ts +51 -51
  248. package/lib/controls/TextBox/TextBox.component.d.ts +66 -66
  249. package/lib/controls/Toggleslide/toggleslide.component.d.ts +33 -33
  250. package/lib/controls/bbsf-controls.module.d.ts +70 -77
  251. package/lib/controls/page-header-component/page-header-component.component.d.ts +20 -20
  252. package/package.json +54 -63
  253. package/public-api.d.ts +118 -117
  254. package/src/lib/assets/Style-rtl.scss +46 -28
  255. package/src/lib/assets/Style.scss +4 -4
  256. package/src/lib/assets/images/marker-pin.svg +4 -0
  257. package/src/lib/assets/sass/base.scss +73 -21
  258. package/esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs +0 -4
  259. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
  260. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -170
  261. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -262
  262. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -173
  263. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -117
  264. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -223
  265. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -194
  266. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -447
  267. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -226
  268. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -350
  269. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -325
  270. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -427
  271. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -429
  272. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -428
  273. package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -129
  274. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -376
  275. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -109
  276. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -277
  277. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -196
  278. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -312
  279. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -90
  280. package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -361
  281. package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
  282. package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
@@ -0,0 +1,223 @@
1
+ import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ import { PickerType } from '../../Shared/Enums/PickerType';
4
+ import { StartView } from '../../Shared/Enums/StartView';
5
+ import { SelectMode } from '../../Shared/Enums/SelectMode';
6
+ import { OwlDateTimeIntl } from '@danielmoncada/angular-datetime-picker';
7
+ import { DefaultIntl } from '../../Shared/default_intl';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "../../Shared/services/OnPagingFiltersChange.service";
11
+ import * as i3 from "../../Shared/services/validationErrorMassage.service";
12
+ import * as i4 from "../../Shared/services/ControlUtility";
13
+ import * as i5 from "@angular/forms";
14
+ import * as i6 from "@bnsights/bbsf-utilities";
15
+ import * as i7 from "@danielmoncada/angular-datetime-picker";
16
+ import * as i8 from "@angular/cdk/bidi";
17
+ import * as i9 from "ngx-intl-tel-input";
18
+ export class DateInputComponent {
19
+ static { this.controlContainerstatic = null; }
20
+ // tslint:disable-next-line: max-line-length
21
+ constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService, dateTimeAdapter) {
22
+ this.datepipe = datepipe;
23
+ this.onChangeService = onChangeService;
24
+ this.ErrorHandler = ErrorHandler;
25
+ this.controlUtility = controlUtility;
26
+ this.controlContainer = controlContainer;
27
+ this.DateInputControlHost = DateInputControlHost;
28
+ this.UtilityService = UtilityService;
29
+ this.translate = translate;
30
+ this.controlValidationService = controlValidationService;
31
+ this.dateTimeAdapter = dateTimeAdapter;
32
+ this.OnChange = new EventEmitter();
33
+ this.markAllAsTouched = false;
34
+ this.validationRules = [];
35
+ this.validationRulesasync = [];
36
+ this.comparedControl = null;
37
+ this.dateError = false;
38
+ this.resetError = () => {
39
+ this.controlValidationService.removeGlobalError();
40
+ };
41
+ this.checkIfEndDateAfterStartDate = () => {
42
+ if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {
43
+ return null;
44
+ }
45
+ if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {
46
+ this.comparedControl.setErrors(null);
47
+ return null;
48
+ }
49
+ else {
50
+ this.comparedControl.setErrors(null);
51
+ return { InvalidEndDate: true };
52
+ }
53
+ };
54
+ this.checkIfStartDateBeForEndDate = () => {
55
+ if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {
56
+ return null;
57
+ }
58
+ if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {
59
+ this.group.get(this.options.Name).setErrors(null);
60
+ return null;
61
+ }
62
+ else {
63
+ this.group.get(this.options.Name).setErrors(null);
64
+ return { InvalidStartDate: true };
65
+ }
66
+ };
67
+ //External Method
68
+ this.RemoveRequiredValidation = () => {
69
+ this.controlUtility.RemoveRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options);
70
+ };
71
+ //External Method
72
+ this.AddRequiredValidation = () => {
73
+ this.controlUtility.AddRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options);
74
+ };
75
+ //External Method
76
+ this.RemoveCustomValidation = (CustomValidation) => {
77
+ this.controlUtility.RemoveCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation);
78
+ };
79
+ //External Method
80
+ this.AddCustomValidation = (CustomValidation) => {
81
+ this.controlUtility.AddCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation);
82
+ };
83
+ //External Method
84
+ this.IsValid = () => {
85
+ this.controlUtility.IsValid(this.DatePickerFormControl);
86
+ };
87
+ DateInputComponent.controlContainerstatic = this.controlContainer;
88
+ }
89
+ ngOnInit() {
90
+ if (this.options.ForceDirection)
91
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
92
+ else
93
+ this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
94
+ if (this.options.StartView == 3)
95
+ this.startView = 'multi-year';
96
+ else {
97
+ this.startView = StartView[this.options.StartView].toLowerCase();
98
+ }
99
+ // Update the DateTimeAdapter Language with the current thread langauge
100
+ this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
101
+ this.controlValidationService.isCreatedBefor = false;
102
+ this.group.addControl(this.options.Name, new FormControl(''));
103
+ this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
104
+ this.DatePickerFormControl.setValue(this.options.Value);
105
+ if (this.options.CustomValidation.length > 0) {
106
+ let Validations = this.options.CustomValidation;
107
+ for (let index = 0; index < Validations.length; index++) {
108
+ const Validation = Validations[index];
109
+ this.validationRules.push(Validation.functionBody);
110
+ }
111
+ }
112
+ if (this.options.IsRequired) {
113
+ this.validationRules.push(Validators.required);
114
+ }
115
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
116
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
117
+ if (this.options.IsDisabled) {
118
+ this.DatePickerFormControl.disable();
119
+ }
120
+ if (this.options.StartControlToCompareWith) {
121
+ if (this.group.get(this.options.StartControlToCompareWith)) {
122
+ this.comparedControl = this.group.get(this.options.StartControlToCompareWith);
123
+ this.subscribeDateChanges();
124
+ }
125
+ }
126
+ this.DatePickerFormControl.setValidators(this.validationRules);
127
+ this.DatePickerFormControl.setAsyncValidators(this.validationRulesasync);
128
+ this.DateInputControlHost.ngSubmit.subscribe((value) => {
129
+ this.group.markAllAsTouched();
130
+ this.markAllAsTouched = true;
131
+ });
132
+ }
133
+ ngAfterViewInit() {
134
+ this.controlUtility.setAttributeForControl(this.options);
135
+ }
136
+ showGlobalError() {
137
+ this.controlUtility.showGlobalError();
138
+ }
139
+ getErrorValidation(ErrorList) {
140
+ if (this.markAllAsTouched && this.group.invalid) {
141
+ this.showGlobalError();
142
+ this.markAllAsTouched = false;
143
+ }
144
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
145
+ }
146
+ copyInputMessage(inputElement) {
147
+ this.controlUtility.CopyInputMessage(inputElement);
148
+ }
149
+ getSelectMode(type) {
150
+ let Value = SelectMode[type];
151
+ return Value.toLowerCase();
152
+ }
153
+ getPickerType(type) {
154
+ let Value = PickerType[type];
155
+ return Value.toLowerCase();
156
+ }
157
+ getStartView(type) {
158
+ if (type == 3)
159
+ return 'multi-year';
160
+ else {
161
+ const Value = StartView[type].toLowerCase();
162
+ return Value;
163
+ }
164
+ }
165
+ onDateSelect(item) {
166
+ if (!item)
167
+ return;
168
+ let DateValue;
169
+ var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
170
+ if (this.options.SelectMode == 2) {
171
+ for (let index = 0; index < item.value.length; index++) {
172
+ item.value[index] = new Date(item.value[index] - tzoffset).toISOString().slice(0, -1);
173
+ }
174
+ DateValue = item.value;
175
+ }
176
+ else {
177
+ DateValue = new Date(item.value - tzoffset).toISOString().slice(0, -1);
178
+ }
179
+ this.DatePickerFormControl.setValue(DateValue);
180
+ this.onChangeService.ChangeValue(this.options.Name);
181
+ let originalValue = DateValue;
182
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
183
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
184
+ }
185
+ //Use this line to enable two way binding.
186
+ this.options.Value = originalValue;
187
+ this.OnChange.emit(originalValue);
188
+ }
189
+ subscribeDateChanges() {
190
+ const startDateChanges = this.comparedControl.valueChanges;
191
+ const endDateChanges = this.group.get(this.options.Name).valueChanges;
192
+ startDateChanges.subscribe(start => {
193
+ this.comparedControl.addValidators(this.checkIfStartDateBeForEndDate);
194
+ this.comparedControl.updateValueAndValidity();
195
+ });
196
+ endDateChanges.subscribe(end => {
197
+ this.DatePickerFormControl.addValidators(this.checkIfEndDateAfterStartDate);
198
+ this.DatePickerFormControl.updateValueAndValidity();
199
+ });
200
+ }
201
+ getDateValue() {
202
+ return this.options.Value ? this.datepipe.transform(this.options.Value, 'MMM d, y, h:mm a') : this.UtilityService.getResourceValue('NA');
203
+ }
204
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.DatePipe }, { token: i2.OnPagingFiltersChangeService }, { token: i3.ErrorMassageValidation }, { token: i4.ControlUtility }, { token: i5.ControlContainer, optional: true }, { token: i5.FormGroupDirective }, { token: i6.UtilityService }, { token: i6.BBSFTranslateService }, { token: i6.ControlValidationService }, { token: i7.DateTimeAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
205
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DateInputComponent, selector: "BBSF-DateTimePicker", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, providers: [
206
+ { provide: OwlDateTimeIntl, useClass: DefaultIntl }
207
+ ], ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-datetime-picker\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\" [dir]=\"textDir\" class=\"form-control bnsights-control\r\n {{options.ExtraClasses}} \" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\" [class.is-invalid]=\"DatePickerFormControl.invalid &&\r\n DatePickerFormControl.touched\" [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\"\r\n [selectMode]=\"getSelectMode(options.SelectMode)\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\" [startView]=\"startView\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0\r\n 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\"\r\n fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\"\r\n d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\"\r\n fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\">{{getDateValue()}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DatePickerFormControl.invalid &&\r\n DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched\r\n )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i9.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i7.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["owlDateTimeTrigger", "disabled"] }, { kind: "directive", type: i7.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["required", "owlDateTime", "owlDateTimeFilter", "_disabled", "min", "max", "selectMode", "rangeSeparator", "value", "values"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i7.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["backdropClass", "panelClass", "startAt", "endAt", "pickerType", "pickerMode", "disabled", "opened", "scrollStrategy"], outputs: ["afterPickerClosed", "beforePickerOpen", "afterPickerOpen", "yearSelected", "monthSelected", "dateSelected"], exportAs: ["owlDateTime"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] }); }
208
+ }
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DateInputComponent, decorators: [{
210
+ type: Component,
211
+ args: [{ selector: 'BBSF-DateTimePicker', providers: [
212
+ { provide: OwlDateTimeIntl, useClass: DefaultIntl }
213
+ ], template: "<div class=\"form-group bbsf-control bbsf-datetime-picker\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\" [dir]=\"textDir\" class=\"form-control bnsights-control\r\n {{options.ExtraClasses}} \" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\" [class.is-invalid]=\"DatePickerFormControl.invalid &&\r\n DatePickerFormControl.touched\" [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\"\r\n [selectMode]=\"getSelectMode(options.SelectMode)\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\" [startView]=\"startView\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0\r\n 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\"\r\n fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\"\r\n d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\"\r\n fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\">{{getDateValue()}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DatePickerFormControl.invalid &&\r\n DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched\r\n )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>" }]
214
+ }], ctorParameters: () => [{ type: i1.DatePipe }, { type: i2.OnPagingFiltersChangeService }, { type: i3.ErrorMassageValidation }, { type: i4.ControlUtility }, { type: i5.ControlContainer, decorators: [{
215
+ type: Optional
216
+ }] }, { type: i5.FormGroupDirective }, { type: i6.UtilityService }, { type: i6.BBSFTranslateService }, { type: i6.ControlValidationService }, { type: i7.DateTimeAdapter }], propDecorators: { group: [{
217
+ type: Input
218
+ }], options: [{
219
+ type: Input
220
+ }], OnChange: [{
221
+ type: Output
222
+ }] } });
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0RhdGVUaW1lUGlja2VyL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9EYXRlVGltZVBpY2tlci9EYXRlVGltZVBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUszRCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTeEQsTUFBTSxPQUFPLGtCQUFrQjthQUN0QiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyw0Q0FBNEM7SUFDNUMsWUFBbUIsUUFBa0IsRUFBVSxlQUE2QyxFQUFVLFlBQW9DLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQVMsb0JBQXdDLEVBQVUsY0FBOEIsRUFBVSxTQUErQixFQUFVLHdCQUFrRCxFQUFVLGVBQXFDO1FBQXBjLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxvQkFBZSxHQUFm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QUFxQixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBb0RELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNJLENBQUM7OEdBbE5VLGtCQUFrQjtrR0FBbEIsa0JBQWtCLGlJQUpsQjtZQUNULEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO1NBQ3BELDBCQ3JCSCwyekdBb0RNOzsyRkQ3Qk8sa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLHFCQUFxQixhQUVwQjt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtxQkFDcEQ7OzBCQUtvTCxRQUFROytNQUdwTCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgQ29udHJvbENvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlck9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL2RhdGVQaWNrZXJPcHRpb25zJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFBpY2tlclR5cGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvUGlja2VyVHlwZSc7XHJcbmltcG9ydCB7IFN0YXJ0VmlldyB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9TdGFydFZpZXcnO1xyXG5pbXBvcnQgeyBTZWxlY3RNb2RlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL1NlbGVjdE1vZGUnO1xyXG5pbXBvcnQgeyBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL09uUGFnaW5nRmlsdGVyc0NoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEYXRlVGltZUFkYXB0ZXIsIE93bERhdGVUaW1lSW50bCB9IGZyb20gJ0BkYW5pZWxtb25jYWRhL2FuZ3VsYXItZGF0ZXRpbWUtcGlja2VyJztcclxuaW1wb3J0ICogYXMgZGF0ZVRpbWVDbGFzcyBmcm9tICdAZGFuaWVsbW9uY2FkYS9hbmd1bGFyLWRhdGV0aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IERlZmF1bHRJbnRsIH0gZnJvbSAnLi4vLi4vU2hhcmVkL2RlZmF1bHRfaW50bCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtRGF0ZVRpbWVQaWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9EYXRlVGltZVBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IE93bERhdGVUaW1lSW50bCwgdXNlQ2xhc3M6IERlZmF1bHRJbnRsIH1cclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0ZXBpcGU6IERhdGVQaXBlLCBwcml2YXRlIG9uQ2hhbmdlU2VydmljZTogT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSwgcHJpdmF0ZSBFcnJvckhhbmRsZXI6IEVycm9yTWFzc2FnZVZhbGlkYXRpb24sIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBEYXRlSW5wdXRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGU6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIGRhdGVUaW1lQWRhcHRlcjogRGF0ZVRpbWVBZGFwdGVyPGFueT4pIHtcclxuICAgIERhdGVJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERhdGVQaWNrZXJPcHRpb25zO1xyXG4gIERhdGVQaWNrZXJGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIEBPdXRwdXQoKSBPbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBjb21wYXJlZENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IG51bGw7XHJcbiAgZGF0ZUVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdGV4dERpcjtcclxuICBzdGFydFZpZXc7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbilcclxuICAgICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uID09IDIgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRleHREaXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuU3RhcnRWaWV3ID09IDMpXHJcbiAgICAgIHRoaXMuc3RhcnRWaWV3ID0gJ211bHRpLXllYXInO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RhcnRWaWV3ID0gKFN0YXJ0Vmlld1t0aGlzLm9wdGlvbnMuU3RhcnRWaWV3XSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKClcclxuICAgIH1cclxuICAgIC8vIFVwZGF0ZSB0aGUgRGF0ZVRpbWVBZGFwdGVyIExhbmd1YWdlIHdpdGggdGhlIGN1cnJlbnQgdGhyZWFkIGxhbmdhdWdlXHJcbiAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5zZXRMb2NhbGUodGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKSA9PSBcImFyXCIgPyBcImFyXCIgOiBcImVuLVVLXCIpO1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcbiAgICB0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlN0YXJ0Q29udHJvbFRvQ29tcGFyZVdpdGgpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5TdGFydENvbnRyb2xUb0NvbXBhcmVXaXRoKSkge1xyXG4gICAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sID0gdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLlN0YXJ0Q29udHJvbFRvQ29tcGFyZVdpdGgpXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVEYXRlQ2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIHRoaXMuRGF0ZUlucHV0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudClcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdE1vZGUodHlwZTogbnVtYmVyKSB7XHJcbiAgICBsZXQgVmFsdWUgPSAoU2VsZWN0TW9kZVt0eXBlXSBhcyBzdHJpbmcpXHJcbiAgICByZXR1cm4gVmFsdWUudG9Mb3dlckNhc2UoKSBhcyBkYXRlVGltZUNsYXNzLlNlbGVjdE1vZGVcclxuICB9XHJcbiAgZ2V0UGlja2VyVHlwZSh0eXBlOiBudW1iZXIpIHtcclxuICAgIGxldCBWYWx1ZSA9IChQaWNrZXJUeXBlW3R5cGVdIGFzIHN0cmluZylcclxuICAgIHJldHVybiBWYWx1ZS50b0xvd2VyQ2FzZSgpIGFzIGRhdGVUaW1lQ2xhc3MuUGlja2VyVHlwZVxyXG4gIH1cclxuICBnZXRTdGFydFZpZXcodHlwZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZSA9PSAzKVxyXG4gICAgICByZXR1cm4gJ211bHRpLXllYXInO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IFZhbHVlID0gKFN0YXJ0Vmlld1t0eXBlXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKClcclxuICAgICAgcmV0dXJuIFZhbHVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgb25EYXRlU2VsZWN0KGl0ZW0pIHtcclxuICAgIGlmICghaXRlbSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgbGV0IERhdGVWYWx1ZTtcclxuICAgIHZhciB0em9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7IC8vb2Zmc2V0IGluIG1pbGxpc2Vjb25kc1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuU2VsZWN0TW9kZSA9PSAyKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtLnZhbHVlLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGl0ZW0udmFsdWVbaW5kZXhdID0gbmV3IERhdGUoaXRlbS52YWx1ZVtpbmRleF0gLSB0em9mZnNldCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAtMSk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIERhdGVWYWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgRGF0ZVZhbHVlID0gbmV3IERhdGUoaXRlbS52YWx1ZSAtIHR6b2Zmc2V0KS50b0lTT1N0cmluZygpLnNsaWNlKDAsIC0xKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRWYWx1ZShEYXRlVmFsdWUpXHJcbiAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5DaGFuZ2VWYWx1ZSh0aGlzLm9wdGlvbnMuTmFtZSk7XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IERhdGVWYWx1ZTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoICYmIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKVxyXG4gICAgfVxyXG4gICAgLy9Vc2UgdGhpcyBsaW5lIHRvIGVuYWJsZSB0d28gd2F5IGJpbmRpbmcuXHJcbiAgICB0aGlzLm9wdGlvbnMuVmFsdWUgPSBvcmlnaW5hbFZhbHVlO1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlRGF0ZUNoYW5nZXMoKSB7XHJcbiAgICBjb25zdCBzdGFydERhdGVDaGFuZ2VzID0gdGhpcy5jb21wYXJlZENvbnRyb2wudmFsdWVDaGFuZ2VzO1xyXG4gICAgY29uc3QgZW5kRGF0ZUNoYW5nZXMgPSB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsdWVDaGFuZ2VzO1xyXG4gICAgc3RhcnREYXRlQ2hhbmdlcy5zdWJzY3JpYmUoc3RhcnQgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMuY2hlY2tJZlN0YXJ0RGF0ZUJlRm9yRW5kRGF0ZSk7XHJcbiAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0pO1xyXG4gICAgZW5kRGF0ZUNoYW5nZXMuc3Vic2NyaWJlKGVuZCA9PiB7XHJcbiAgICAgIHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5jaGVja0lmRW5kRGF0ZUFmdGVyU3RhcnREYXRlKTtcclxuICAgICAgdGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmRW5kRGF0ZUFmdGVyU3RhcnREYXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ldyBEYXRlKHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlKSA8IG5ldyBEYXRlKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5jb21wYXJlZENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIHJldHVybiB7IEludmFsaWRFbmREYXRlOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfTtcclxuICBjaGVja0lmU3RhcnREYXRlQmVGb3JFbmREYXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ldyBEYXRlKHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlKSA8IG5ldyBEYXRlKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgcmV0dXJuIHsgSW52YWxpZFN0YXJ0RGF0ZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG5cclxuICBnZXREYXRlVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLlZhbHVlID8gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0odGhpcy5vcHRpb25zLlZhbHVlLCAnTU1NIGQsIHksIGg6bW0gYScpIDogdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtZGF0ZXRpbWUtcGlja2VyXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMuVmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgPCEtLWxhYmVsLS0+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5IaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWxcclxuICAgICAge3tvcHRpb25zLkxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAge3tvcHRpb25zLkxhYmVsVmFsdWV9fVxyXG4gICAgPC9sYWJlbD5cclxuICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuU2hvd0FzdGVyaXNrJiZvcHRpb25zLklzUmVxdWlyZWQpfHwob3B0aW9ucy5Jc1JlcXVpcmVkKSkmJiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCJcclxuICAgICAgYXJpYS1yZXF1aXJlZD1cInRydWVcIj4qPC9zcGFuPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS1pbnB1dC0tPlxyXG4gICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGRhdGVUaW1lQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdCgkZXZlbnQpXCIgW2Rpcl09XCJ0ZXh0RGlyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFxyXG4gICAgICAgIHt7b3B0aW9ucy5FeHRyYUNsYXNzZXN9fSBcIiBbbmdDbGFzc109XCIob3B0aW9ucy5WaWV3VHlwZT09MSk/Jyc6J2NvbC1tZC05J1wiIGFyaWEtZGVzY3JpYmVkYnk9XCJlbWFpbC1lcnJvclwiIGFyaWEtaW52YWxpZD1cInRydWVcIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5OYW1lfX1cIiBbb3dsRGF0ZVRpbWVdPVwiZHQxXCIgW293bERhdGVUaW1lVHJpZ2dlcl09XCJkdDFcIiBbY2xhc3MuaXMtaW52YWxpZF09XCJEYXRlUGlja2VyRm9ybUNvbnRyb2wuaW52YWxpZCAmJlxyXG4gICAgICAgIERhdGVQaWNrZXJGb3JtQ29udHJvbC50b3VjaGVkXCIgW21pbl09XCJvcHRpb25zLlN0YXJ0RGF0ZVwiIFttYXhdPVwib3B0aW9ucy5FbmREYXRlXCIgW2hvdXIxMlRpbWVyXT1cIm9wdGlvbnMuSG91cjEyVGltZXJcIlxyXG4gICAgICAgIFtzZWxlY3RNb2RlXT1cImdldFNlbGVjdE1vZGUob3B0aW9ucy5TZWxlY3RNb2RlKVwiIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLlBsYWNlaG9sZGVyfX1cIiBpZD1cInt7b3B0aW9ucy5OYW1lfX1cIiAjRGF0ZWlucHV0PlxyXG5cclxuICAgICAgPG93bC1kYXRlLXRpbWUgW3BpY2tlclR5cGVdPVwiZ2V0UGlja2VyVHlwZShvcHRpb25zLlBpY2tlclR5cGUpXCIgW3N0YXJ0Vmlld109XCJzdGFydFZpZXdcIiBbZmlyc3REYXlPZldlZWtdPVwib3B0aW9ucy5GaXJzdERheU9mV2Vla1wiXHJcbiAgICAgICAgW2hvdXIxMlRpbWVyXT1cIm9wdGlvbnMuSG91cjEyVGltZXJcIiAjZHQxPjwvb3dsLWRhdGUtdGltZT5cclxuICAgICAgPCEtLWljb24tLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjb3B5LWNsaXBib2FyZFwiIFtvd2xEYXRlVGltZVRyaWdnZXJdPVwiZHQxXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvblwiPlxyXG4gICAgICAgICAgPHN2ZyBpZD1cIkdyb3VwXzM1NlwiIGRhdGEtbmFtZT1cIkdyb3VwIDM1NlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMFxyXG4gICAgICAgICAgICAwIDQ4IDQ4XCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiUGF0aF82NzM3XCIgZGF0YS1uYW1lPVwiUGF0aCA2NzM3XCIgZD1cIk0xMS41ODMsMWExLDEsMCwwLDAtMiwwVjUuN2gyWlwiIHN0eWxlPVwiXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBpZD1cIlBhdGhfNjczOFwiIGRhdGEtbmFtZT1cIlBhdGggNjczOFwiIGQ9XCJNMzguNDE3LDFhMSwxLDAsMCwwLTIsMFY1LjdoMlpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiUGF0aF82NzM5XCIgZGF0YS1uYW1lPVwiUGF0aCA2NzM5XCIgZD1cIk0wLDQzLjE0NkMwLDQ1LjgyMiwxLjgyNiw0OCw0LjA3LDQ4SDQzLjkyOEM0Ni4xNzQsNDgsNDgsNDUuODIyLDQ4LDQzLjE0NlYxNy4xMjFIMFpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCIjZDVkNWQ1XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBpZD1cIlBhdGhfNjc0MFwiIGRhdGEtbmFtZT1cIlBhdGggNjc0MFwiXHJcbiAgICAgICAgICAgICAgZD1cIk00My45MjksNS43SDM4LjQxN3Y1LjUxMmExLDEsMCwxLDEtMiwwVjUuN0gxMS41ODN2NS41MTJhMSwxLDAsMSwxLTIsMFY1LjdINC4wN0MxLjgyNiw1LjcsMCw3Ljg3NywwLDEwLjU1NXY0LjU2Nkg0OFYxMC41NTVDNDgsNy44NzcsNDYuMTc0LDUuNyw0My45MjksNS43WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiM1OTU5NTlcIj48L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSByZWFkb25seSAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLklzUmVhZG9ubHlcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3tnZXREYXRlVmFsdWUoKX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5Jc1JlYWRvbmx5XCI+XHJcbiAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLkxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgPCEtLSByZXF1aXJlZFRleHQtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihEYXRlUGlja2VyRm9ybUNvbnRyb2wuaW52YWxpZCAmJlxyXG4gICAgICBEYXRlUGlja2VyRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAge3tnZXRFcnJvclZhbGlkYXRpb24oRGF0ZVBpY2tlckZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWRcclxuICAgICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj57e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,193 @@
1
+ import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ import { ForceDirection } from '../../Shared/Enums/ForceDirection';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../Shared/services/OnPagingFiltersChange.service";
6
+ import * as i2 from "../../Shared/services/ControlUtility";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@bnsights/bbsf-utilities";
9
+ import * as i5 from "../../Shared/services/GlobalSettings.service";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@ng-select/ng-select";
12
+ import * as i8 from "ngx-intl-tel-input";
13
+ export class DropdownListComponent {
14
+ static { this.controlContainerstatic = null; }
15
+ // tslint:disable-next-line: max-line-length
16
+ constructor(onChangeService, controlUtility, controlContainer, DropdownListControlHost, UtilityService, controlValidationService, globalSettings) {
17
+ this.onChangeService = onChangeService;
18
+ this.controlUtility = controlUtility;
19
+ this.controlContainer = controlContainer;
20
+ this.DropdownListControlHost = DropdownListControlHost;
21
+ this.UtilityService = UtilityService;
22
+ this.controlValidationService = controlValidationService;
23
+ this.globalSettings = globalSettings;
24
+ this.dropdownSettings = {};
25
+ this.SelectedList = [];
26
+ this.OnChange = new EventEmitter();
27
+ this.onClear = new EventEmitter();
28
+ this.markAllAsTouched = false;
29
+ this.controlChanged = false;
30
+ this.validationRules = [];
31
+ this.validationRulesasync = [];
32
+ this.ForceDirection = ForceDirection;
33
+ this.resetError = () => {
34
+ this.controlValidationService.removeGlobalError();
35
+ };
36
+ //External Method
37
+ this.RemoveRequiredValidation = () => {
38
+ this.controlUtility.RemoveRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options);
39
+ };
40
+ //External Method
41
+ this.AddRequiredValidation = () => {
42
+ this.controlUtility.AddRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options);
43
+ };
44
+ //External Method
45
+ this.RemoveCustomValidation = (CustomValidation) => {
46
+ this.controlUtility.RemoveCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation);
47
+ };
48
+ //External Method
49
+ this.AddCustomValidation = (CustomValidation) => {
50
+ this.controlUtility.AddCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation);
51
+ };
52
+ //External Method
53
+ this.IsValid = () => {
54
+ this.controlUtility.IsValid(this.DropdownListFormControl);
55
+ };
56
+ //Update items (data source) of drop down
57
+ this.UpdateDataSource = (dataSource) => {
58
+ this.options.DataSource = dataSource;
59
+ };
60
+ DropdownListComponent.controlContainerstatic = this.controlContainer;
61
+ //console.log(environment["BBSF_AdminUrl"]);
62
+ }
63
+ ngOnInit() {
64
+ if (this.options.ForceDirection)
65
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
66
+ else
67
+ this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
68
+ this.controlValidationService.isCreatedBefor = false;
69
+ this.SelectedList = this.options.SelectedItems;
70
+ this.dropdownSettings = {
71
+ singleSelection: this.options.SingleSelection,
72
+ text: "Select",
73
+ selectAllText: 'Select All',
74
+ unSelectAllText: 'UnSelect All',
75
+ enableSearchFilter: this.options.AllowSearchFilter,
76
+ classes: this.options.Classes,
77
+ disabled: this.options.IsDisabled,
78
+ showCheckbox: this.options.ShowCheckbox,
79
+ enableCheckAll: this.options.EnableCheckAll,
80
+ itemsShowLimit: this.options.ItemsShowLimit,
81
+ allowSearchFilter: this.options.AllowSearchFilter,
82
+ showSelectedItemsAtTop: true,
83
+ limitSelection: this.options.LimitSelection,
84
+ searchPlaceholderText: this.options.Placeholder,
85
+ labelKey: "value",
86
+ primaryKey: "key"
87
+ };
88
+ this.group.addControl(this.options.Name, new FormControl(''));
89
+ this.DropdownListFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
90
+ if (!this.options.ViewType)
91
+ this.options.ViewType = this.globalSettings.ViewType;
92
+ if (this.options.CustomValidation.length > 0) {
93
+ let Validations = this.options.CustomValidation;
94
+ for (let index = 0; index < Validations.length; index++) {
95
+ const Validation = Validations[index];
96
+ this.validationRules.push(Validation.functionBody);
97
+ }
98
+ }
99
+ if (this.options.IsRequired) {
100
+ this.validationRules.push(Validators.required);
101
+ }
102
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
103
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
104
+ this.DropdownListFormControl.setValidators(this.validationRules);
105
+ this.DropdownListFormControl.setAsyncValidators(this.validationRulesasync);
106
+ if (this.options.IsDisabled) {
107
+ this.DropdownListFormControl.disable();
108
+ }
109
+ this.DropdownListControlHost.ngSubmit.subscribe((value) => {
110
+ this.group.markAllAsTouched();
111
+ this.markAllAsTouched = true;
112
+ });
113
+ }
114
+ ngAfterViewInit() {
115
+ this.controlUtility.setAttributeForControl(this.options);
116
+ }
117
+ showGlobalError() {
118
+ this.controlUtility.showGlobalError();
119
+ }
120
+ getErrorValidation(ErrorList) {
121
+ if (this.markAllAsTouched && this.group.invalid) {
122
+ this.showGlobalError();
123
+ this.markAllAsTouched = false;
124
+ }
125
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
126
+ }
127
+ getSelectedItemValue() {
128
+ if (this.options.SelectedItems) {
129
+ if (this.options.SingleSelection)
130
+ return this.options.DataSource.filter(item => item[this.options.ItemTempletkey] == this.options.SelectedItems)[0][this.options.ItemTempletvalue];
131
+ else
132
+ return this.options.DataSource.filter(item => this.options.SelectedItems.includes(item[this.options.ItemTempletkey])).map(item => item[this.options.ItemTempletvalue]);
133
+ }
134
+ else
135
+ return this.UtilityService.getResourceValue('NA');
136
+ }
137
+ onItemSelect() {
138
+ this.onChangeService.ChangeValue(this.options.Name);
139
+ let originalValue = this.options.SelectedItems;
140
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
141
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
142
+ }
143
+ this.OnChange.emit(originalValue);
144
+ //console.log(this.DropdownListFormControl.value)
145
+ }
146
+ Clear() {
147
+ //console.log("Clear")
148
+ this.DropdownListFormControl.setValue(this.SelectedItems);
149
+ this.onChangeService.ChangeValue(this.options.Name);
150
+ this.OnChange.emit();
151
+ }
152
+ onSelectAll(items) {
153
+ this.SelectedItems = items;
154
+ this.DropdownListFormControl.setValue(this.SelectedItems);
155
+ }
156
+ onDeselect(items) {
157
+ this.DropdownListFormControl.setValue(this.SelectedItems);
158
+ if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {
159
+ this.DropdownListFormControl.markAsTouched();
160
+ this.DropdownListFormControl.invalid;
161
+ }
162
+ }
163
+ onDeselectAll(items) {
164
+ this.DropdownListFormControl.setValue(this.SelectedItems);
165
+ if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {
166
+ this.DropdownListFormControl.markAsTouched();
167
+ this.DropdownListFormControl.invalid;
168
+ }
169
+ }
170
+ onDropDownClose() {
171
+ if ((this.SelectedItems == undefined || this.SelectedItems.length == 0) && this.options.IsRequired == true) {
172
+ this.DropdownListFormControl.markAsTouched();
173
+ this.DropdownListFormControl.invalid;
174
+ }
175
+ }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DropdownListComponent, deps: [{ token: i1.OnPagingFiltersChangeService }, { token: i2.ControlUtility }, { token: i3.ControlContainer, optional: true }, { token: i3.FormGroupDirective }, { token: i4.UtilityService }, { token: i4.ControlValidationService }, { token: i5.GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange", onClear: "onClear" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.DisableBootstrapSelect==false&&!options.IsReadonly\"\r\n [attr.dir]=\"options.ForceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"options.NotFoundText\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\" [(ngModel)]=\"options.SelectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.DisabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.DisableBootstrapSelect&&!options.IsReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.ForceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.SelectedItems\" [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--{{UtilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i7.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i8.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i6.KeyValuePipe, name: "keyvalue" }] }); }
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DropdownListComponent, decorators: [{
180
+ type: Component,
181
+ args: [{ selector: 'BBSF-DropdownList', template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\"\r\n class=\"text-danger\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.DisableBootstrapSelect==false&&!options.IsReadonly\"\r\n [attr.dir]=\"options.ForceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"options.NotFoundText\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\" [(ngModel)]=\"options.SelectedItems\"\r\n (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.DisabledItemsTooltipValue : ''}}\"\r\n id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\"\r\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.DisableBootstrapSelect&&!options.IsReadonly\" class=\"form-control\"\r\n [attr.dir]=\"options.ForceDirection==2?'rtl':'auto'\" (change)=\"onItemSelect()\"\r\n [(ngModel)]=\"options.SelectedItems\" [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--{{UtilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>" }]
182
+ }], ctorParameters: () => [{ type: i1.OnPagingFiltersChangeService }, { type: i2.ControlUtility }, { type: i3.ControlContainer, decorators: [{
183
+ type: Optional
184
+ }] }, { type: i3.FormGroupDirective }, { type: i4.UtilityService }, { type: i4.ControlValidationService }, { type: i5.GlobalSettings }], propDecorators: { group: [{
185
+ type: Input
186
+ }], options: [{
187
+ type: Input
188
+ }], OnChange: [{
189
+ type: Output
190
+ }], onClear: [{
191
+ type: Output
192
+ }] } });
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBZ0IsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLHFCQUFxQjthQUN6QiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyw0Q0FBNEM7SUFDNUMsWUFBb0IsZUFBNkMsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyx1QkFBMkMsRUFDNU0sY0FBOEIsRUFBVSx3QkFBa0QsRUFDekYsY0FBOEI7UUFGcEIsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQW9CO1FBQzVNLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDekYsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBT3hDLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUV0QixpQkFBWSxHQUFVLEVBQUUsQ0FBQTtRQUNkLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVsQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQix5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFMUIsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUF1RWhDLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFBO1FBcUVELGlCQUFpQjtRQUNqQiw2QkFBd0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDaEgsQ0FBQyxDQUFBO1FBRUQsaUJBQWlCO1FBQ2pCLDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3RyxDQUFDLENBQUE7UUFFRCxpQkFBaUI7UUFDakIsMkJBQXNCLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNsSCxDQUFDLENBQUE7UUFDRCxpQkFBaUI7UUFDakIsd0JBQW1CLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUMvRyxDQUFDLENBQUE7UUFDRCxpQkFBaUI7UUFDakIsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQzNELENBQUMsQ0FBQTtRQUVELHlDQUF5QztRQUN6QyxxQkFBZ0IsR0FBRyxDQUFDLFVBQThCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDdkMsQ0FBQyxDQUFBO1FBMUxDLHFCQUFxQixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyRSw0Q0FBNEM7SUFDOUMsQ0FBQztJQWlCRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOztZQUVoRSxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMxRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQTtRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFBO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRztZQUN0QixlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO1lBQzdDLElBQUksRUFBRSxRQUFRO1lBQ2QsYUFBYSxFQUFFLFlBQVk7WUFDM0IsZUFBZSxFQUFFLGNBQWM7WUFDL0Isa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7WUFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7WUFDdkMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUMzQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQzNDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCO1lBQ2pELHNCQUFzQixFQUFFLElBQUk7WUFDNUIsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUMzQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDL0MsUUFBUSxFQUFFLE9BQU87WUFDakIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7UUFHL0csSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFBO1lBQy9DLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN2RCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNwRDtTQUVGO1FBSUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FFaEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4RixJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0UsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFBO1FBQzlCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUlELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBT0QsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQVM7UUFDMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7U0FDOUI7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTs7Z0JBRWhKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7U0FDeks7O1lBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ25HLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDekc7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNqQyxpREFBaUQ7SUFDbkQsQ0FBQztJQUNELEtBQUs7UUFDSCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDdkUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7U0FFdEM7SUFFSCxDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUN2RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztTQUV0QztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUMxRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztTQUV0QztJQUNILENBQUM7OEdBcEtVLHFCQUFxQjtrR0FBckIscUJBQXFCLGdLQ2hCbEMsMGxJQWdFTTs7MkZEaERPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFFRSxtQkFBbUI7OzBCQU0rRSxRQUFROzJLQU0zRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUtJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bkxpc3RJdGVtJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JjZURpcmVjdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9Gb3JjZURpcmVjdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Ecm9wZG93bkxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9Ecm9wZG93bkxpc3QuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgRHJvcGRvd25MaXN0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHB1YmxpYyBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgRHJvcGRvd25MaXN0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgICAvL2NvbnNvbGUubG9nKGVudmlyb25tZW50W1wiQkJTRl9BZG1pblVybFwiXSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIERyb3Bkb3duTGlzdEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgZHJvcGRvd25TZXR0aW5ncyA9IHt9O1xyXG4gIFNlbGVjdGVkSXRlbXM6IERyb3Bkb3duTGlzdEl0ZW1bXVxyXG4gIFNlbGVjdGVkTGlzdDogYW55W10gPSBbXVxyXG4gIEBPdXRwdXQoKSBPbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb250cm9sQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgdGV4dERpcjtcclxuICBGb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbilcclxuICAgICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uID09IDIgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRleHREaXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuU2VsZWN0ZWRMaXN0ID0gdGhpcy5vcHRpb25zLlNlbGVjdGVkSXRlbXNcclxuICAgIHRoaXMuZHJvcGRvd25TZXR0aW5ncyA9IHtcclxuICAgICAgc2luZ2xlU2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uLFxyXG4gICAgICB0ZXh0OiBcIlNlbGVjdFwiLFxyXG4gICAgICBzZWxlY3RBbGxUZXh0OiAnU2VsZWN0IEFsbCcsXHJcbiAgICAgIHVuU2VsZWN0QWxsVGV4dDogJ1VuU2VsZWN0IEFsbCcsXHJcbiAgICAgIGVuYWJsZVNlYXJjaEZpbHRlcjogdGhpcy5vcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyLFxyXG4gICAgICBjbGFzc2VzOiB0aGlzLm9wdGlvbnMuQ2xhc3NlcyxcclxuICAgICAgZGlzYWJsZWQ6IHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gICAgICBzaG93Q2hlY2tib3g6IHRoaXMub3B0aW9ucy5TaG93Q2hlY2tib3gsXHJcbiAgICAgIGVuYWJsZUNoZWNrQWxsOiB0aGlzLm9wdGlvbnMuRW5hYmxlQ2hlY2tBbGwsXHJcbiAgICAgIGl0ZW1zU2hvd0xpbWl0OiB0aGlzLm9wdGlvbnMuSXRlbXNTaG93TGltaXQsXHJcbiAgICAgIGFsbG93U2VhcmNoRmlsdGVyOiB0aGlzLm9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIsXHJcbiAgICAgIHNob3dTZWxlY3RlZEl0ZW1zQXRUb3A6IHRydWUsXHJcbiAgICAgIGxpbWl0U2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMuTGltaXRTZWxlY3Rpb24sXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyVGV4dDogdGhpcy5vcHRpb25zLlBsYWNlaG9sZGVyLFxyXG4gICAgICBsYWJlbEtleTogXCJ2YWx1ZVwiLFxyXG4gICAgICBwcmltYXJ5S2V5OiBcImtleVwiXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuVmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5WaWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuVmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG4gICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZEl0ZW1WYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuU2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLlNpbmdsZVNlbGVjdGlvbilcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLkRhdGFTb3VyY2UuZmlsdGVyKGl0ZW0gPT4gaXRlbVt0aGlzLm9wdGlvbnMuSXRlbVRlbXBsZXRrZXldID09IHRoaXMub3B0aW9ucy5TZWxlY3RlZEl0ZW1zKVswXVt0aGlzLm9wdGlvbnMuSXRlbVRlbXBsZXR2YWx1ZV1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuRGF0YVNvdXJjZS5maWx0ZXIoaXRlbSA9PiB0aGlzLm9wdGlvbnMuU2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtW3RoaXMub3B0aW9ucy5JdGVtVGVtcGxldGtleV0pKS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMub3B0aW9ucy5JdGVtVGVtcGxldHZhbHVlXSlcclxuICAgIH0gZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0KCkge1xyXG4gICAgdGhpcy5vbkNoYW5nZVNlcnZpY2UuQ2hhbmdlVmFsdWUodGhpcy5vcHRpb25zLk5hbWUpXHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMub3B0aW9ucy5TZWxlY3RlZEl0ZW1zO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICB9XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSlcclxuICAgIC8vY29uc29sZS5sb2codGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC52YWx1ZSlcclxuICB9XHJcbiAgQ2xlYXIoKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQ2xlYXJcIilcclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5TZWxlY3RlZEl0ZW1zKTtcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5OYW1lKVxyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KClcclxuICB9XHJcbiAgb25TZWxlY3RBbGwoaXRlbXMpIHtcclxuICAgIHRoaXMuU2VsZWN0ZWRJdGVtcyA9IGl0ZW1zO1xyXG4gICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLlNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuICBvbkRlc2VsZWN0KGl0ZW1zKSB7XHJcbiAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuU2VsZWN0ZWRJdGVtcyk7XHJcbiAgICBpZiAoKHRoaXMuU2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCkgJiYgdGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIG9uRGVzZWxlY3RBbGwoaXRlbXMpIHtcclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5TZWxlY3RlZEl0ZW1zKTtcclxuICAgIGlmICgodGhpcy5TZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwKSAmJiB0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Ecm9wRG93bkNsb3NlKCkge1xyXG4gICAgaWYgKCh0aGlzLlNlbGVjdGVkSXRlbXMgPT0gdW5kZWZpbmVkIHx8IHRoaXMuU2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCkgJiYgdGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbiAgLy9VcGRhdGUgaXRlbXMgKGRhdGEgc291cmNlKSBvZiBkcm9wIGRvd25cclxuICBVcGRhdGVEYXRhU291cmNlID0gKGRhdGFTb3VyY2U6IERyb3Bkb3duTGlzdEl0ZW1bXSkgPT4ge1xyXG4gICAgdGhpcy5vcHRpb25zLkRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLWRyb3Bkb3duXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMuVmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgPCEtLWxhYmVsLS0+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5IaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLkxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAge3tvcHRpb25zLkxhYmVsVmFsdWV9fVxyXG4gICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuU2hvd0FzdGVyaXNrJiZvcHRpb25zLklzUmVxdWlyZWQpfHwob3B0aW9ucy5Jc1JlcXVpcmVkKSkmJiFvcHRpb25zLklzUmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBhcmlhLXJlcXVpcmVkPVwidHJ1ZVwiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS1pbnB1dCBlbmFibGVkIGJvb3RzdHJhcCBzZWxlY3QtLT5cclxuICAgICAgPG5nLXNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiICpuZ0lmPVwib3B0aW9ucy5EaXNhYmxlQm9vdHN0cmFwU2VsZWN0PT1mYWxzZSYmIW9wdGlvbnMuSXNSZWFkb25seVwiXHJcbiAgICAgICAgW2F0dHIuZGlyXT1cIm9wdGlvbnMuRm9yY2VEaXJlY3Rpb249PTI/J3J0bCc6J2F1dG8nXCIgKGNoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoKVwiXHJcbiAgICAgICAgW2JpbmRWYWx1ZV09XCJvcHRpb25zLkl0ZW1UZW1wbGV0a2V5XCIgW2JpbmRMYWJlbF09XCJvcHRpb25zLkl0ZW1UZW1wbGV0dmFsdWVcIiBbaXRlbXNdPVwib3B0aW9ucy5EYXRhU291cmNlXCJcclxuICAgICAgICBbbm90Rm91bmRUZXh0XT1cIm9wdGlvbnMuTm90Rm91bmRUZXh0XCIgW21heFNlbGVjdGVkSXRlbXNdPVwib3B0aW9ucy5MaW1pdFNlbGVjdGlvblwiXHJcbiAgICAgICAgW3NlYXJjaGFibGVdPVwib3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlclwiIFttdWx0aXBsZV09XCIhb3B0aW9ucy5TaW5nbGVTZWxlY3Rpb25cIiBbcmVhZG9ubHldPVwib3B0aW9ucy5Jc0Rpc2FibGVkXCJcclxuICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIiBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5QbGFjZWhvbGRlcn19XCIgaWQ9XCJ7e29wdGlvbnMuTmFtZX19XCIgW3NlbGVjdGFibGVHcm91cF09XCJ0cnVlXCJcclxuICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5OYW1lfX1cIiBbKG5nTW9kZWwpXT1cIm9wdGlvbnMuU2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoKVwiIChjbGVhcik9XCJDbGVhcigpXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJEcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkICYmIERyb3Bkb3duTGlzdEZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cIm9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uICA/IHRydWUgOiBmYWxzZVwiPlxyXG4gICAgICAgIDwhLS1ObyBjaGVja2JveC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFvcHRpb25zLlNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbFwiIHRpdGxlPVwie3tpdGVtLmRpc2FibGVkID8gb3B0aW9ucy5EaXNhYmxlZEl0ZW1zVG9vbHRpcFZhbHVlIDogJyd9fVwiXHJcbiAgICAgICAgICAgIGlkPXt7aXRlbS5rZXl9fT57e2l0ZW0udmFsdWV9fTwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8IS0tY2hlY2tib3gtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25zLlNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBiYnNmLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJiYnNmLWNoZWNrYm94LWlucHV0XCIgaWQ9XCJpdGVtLXt7aW5kZXh9fVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgW25nTW9kZWxdPVwiaXRlbSQuc2VsZWN0ZWRcIiAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdWJ0ZXh0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbFwiIGlkPXt7aXRlbS5rZXl9fT57e2l0ZW0udmFsdWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgIDwhLS1pbnB1dCBkaXNhYmxlZCBib290c3RyYXAgc2VsZWN0LS0+XHJcbiAgICAgIDxzZWxlY3QgKm5nSWY9XCJvcHRpb25zLkRpc2FibGVCb290c3RyYXBTZWxlY3QmJiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgW2F0dHIuZGlyXT1cIm9wdGlvbnMuRm9yY2VEaXJlY3Rpb249PTI/J3J0bCc6J2F1dG8nXCIgKGNoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoKVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLlNlbGVjdGVkSXRlbXNcIiBbZGlzYWJsZWRdPVwib3B0aW9ucy5Jc0Rpc2FibGVkXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD4tLXt7VXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcInNlbGVjdFwiKX19LS08L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnMuRGF0YVNvdXJjZVwiIHZhbHVlPVwie3tpdGVtLmtleX19XCIgW25nVmFsdWVdPVwiaXRlbS5rZXlcIj5cclxuICAgICAgICAgIHt7aXRlbS52YWx1ZX19XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5Jc1JlYWRvbmx5XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3tnZXRTZWxlY3RlZEl0ZW1WYWx1ZSgpfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLklzUmVhZG9ubHlcIj5cclxuICAgICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jb250cm9sLWRlc2NcIiAqbmdJZj1cIm9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiE9bnVsbFwiPnt7b3B0aW9ucy5MYWJlbERlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihEcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkICYmIERyb3Bkb3duTGlzdEZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihEcm9wZG93bkxpc3RGb3JtQ29udHJvbC5lcnJvcnN8a2V5dmFsdWUpfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj5cclxuICAgICAgICB7e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19