@mediusinc/mng-commons 0.17.5 → 0.18.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  2. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  3. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  4. package/esm2020/lib/api/models/index.mjs +8 -8
  5. package/esm2020/lib/api/models/mappers.mjs +12 -12
  6. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  7. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  8. package/esm2020/lib/api/models/query-result.model.mjs +23 -23
  9. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  10. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  11. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
  12. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
  13. package/esm2020/lib/api/services/index.mjs +3 -3
  14. package/esm2020/lib/api/utils/index.mjs +2 -2
  15. package/esm2020/lib/api/utils/medius-rest.util.mjs +212 -212
  16. package/esm2020/lib/api/utils/object-serializer.util.mjs +247 -247
  17. package/esm2020/lib/components/action/action.component.mjs +213 -213
  18. package/esm2020/lib/components/action/editor/action-editor.component.mjs +272 -269
  19. package/esm2020/lib/components/action/index.mjs +3 -3
  20. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  21. package/esm2020/lib/components/action/models/action-execution.model.mjs +240 -240
  22. package/esm2020/lib/components/action/models/index.mjs +3 -3
  23. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +10 -10
  24. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  25. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +299 -299
  26. package/esm2020/lib/components/form/date-range/date-range.component.mjs +108 -108
  27. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +193 -193
  28. package/esm2020/lib/components/form/editor/form-editor.component.mjs +219 -213
  29. package/esm2020/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +39 -0
  30. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +50 -49
  31. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +45 -44
  32. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +26 -25
  33. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +103 -102
  34. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +24 -23
  35. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +181 -180
  36. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +168 -167
  37. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +149 -148
  38. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
  39. package/esm2020/lib/components/form/formly/fields/index.mjs +11 -10
  40. package/esm2020/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +15 -0
  41. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +15 -15
  42. package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -3
  43. package/esm2020/lib/components/form/index.mjs +4 -4
  44. package/esm2020/lib/components/form/models/field-action-context.model.mjs +2 -0
  45. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  46. package/esm2020/lib/components/form/models/form-editor.interface.mjs +2 -0
  47. package/esm2020/lib/components/form/models/index.mjs +3 -2
  48. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  49. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  50. package/esm2020/lib/components/layout/index.mjs +7 -7
  51. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  52. package/esm2020/lib/components/layout/menu-item.component.mjs +267 -267
  53. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  54. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  55. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  56. package/esm2020/lib/components/layout/topbar.component.mjs +64 -64
  57. package/esm2020/lib/components/layout/version.component.mjs +57 -57
  58. package/esm2020/lib/components/tableview/index.mjs +6 -6
  59. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  60. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  61. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +81 -81
  62. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +52 -52
  63. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +119 -119
  64. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +74 -73
  65. package/esm2020/lib/components/tableview/table/table.component.mjs +559 -559
  66. package/esm2020/lib/components/tableview/tableview.component.mjs +112 -112
  67. package/esm2020/lib/config/formly.config.mjs +186 -181
  68. package/esm2020/lib/config/index.mjs +1 -1
  69. package/esm2020/lib/config/models/config.model.mjs +2 -0
  70. package/esm2020/lib/config/models/formly-config.model.mjs +2 -0
  71. package/esm2020/lib/config/models/index.mjs +3 -3
  72. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  73. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  74. package/esm2020/lib/data-providers/index.mjs +6 -6
  75. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  76. package/esm2020/lib/data-providers/table.data-provider.mjs +37 -37
  77. package/esm2020/lib/data-providers/tableview-crud.data-provider.mjs +23 -23
  78. package/esm2020/lib/data-providers/tableview.data-provider.mjs +58 -58
  79. package/esm2020/lib/descriptors/action/action-confirmation.descriptor.mjs +76 -76
  80. package/esm2020/lib/descriptors/action-button.descriptor.mjs +59 -59
  81. package/esm2020/lib/descriptors/action.descriptor.mjs +548 -548
  82. package/esm2020/lib/descriptors/column.descriptor.mjs +381 -374
  83. package/esm2020/lib/descriptors/editor.descriptor.mjs +251 -246
  84. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  85. package/esm2020/lib/descriptors/field.descriptor.mjs +902 -864
  86. package/esm2020/lib/descriptors/filter.descriptor.mjs +320 -320
  87. package/esm2020/lib/descriptors/index.mjs +11 -11
  88. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  89. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  90. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  91. package/esm2020/lib/descriptors/model.descriptor.mjs +44 -44
  92. package/esm2020/lib/descriptors/table.descriptor.mjs +463 -463
  93. package/esm2020/lib/descriptors/tableview.descriptor.mjs +323 -323
  94. package/esm2020/lib/descriptors/types/action.type.mjs +25 -25
  95. package/esm2020/lib/descriptors/types/column.type.mjs +12 -11
  96. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  97. package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
  98. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  99. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  100. package/esm2020/lib/descriptors/types/table.type.mjs +26 -26
  101. package/esm2020/lib/directives/component.directive.mjs +43 -43
  102. package/esm2020/lib/directives/index.mjs +2 -2
  103. package/esm2020/lib/directives/template.directive.mjs +27 -27
  104. package/esm2020/lib/mng-commons.module.mjs +466 -463
  105. package/esm2020/lib/models/column-value.model.mjs +1 -1
  106. package/esm2020/lib/models/enum.model.mjs +1 -1
  107. package/esm2020/lib/models/error.model.mjs +1 -1
  108. package/esm2020/lib/models/formly-field.model.mjs +2 -2
  109. package/esm2020/lib/models/index.mjs +9 -9
  110. package/esm2020/lib/models/menu.model.mjs +1 -1
  111. package/esm2020/lib/models/tableview-attr.model.mjs +1 -1
  112. package/esm2020/lib/models/user.model.mjs +1 -1
  113. package/esm2020/lib/models/version.model.mjs +1 -1
  114. package/esm2020/lib/models/view-container.model.mjs +1 -1
  115. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  116. package/esm2020/lib/pipes/class-map.pipe.mjs +21 -21
  117. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  118. package/esm2020/lib/pipes/enumerate-async.pipe.mjs +37 -37
  119. package/esm2020/lib/pipes/enumerate.pipe.mjs +54 -54
  120. package/esm2020/lib/pipes/getter.pipe.mjs +20 -20
  121. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  122. package/esm2020/lib/pipes/index.mjs +10 -10
  123. package/esm2020/lib/pipes/json-path.pipe.mjs +78 -78
  124. package/esm2020/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +1 -1
  125. package/esm2020/lib/pipes/models/internal/index.mjs +1 -1
  126. package/esm2020/lib/pipes/parametrize.pipe.mjs +84 -84
  127. package/esm2020/lib/pipes/template.pipe.mjs +23 -23
  128. package/esm2020/lib/router/index.mjs +2 -2
  129. package/esm2020/lib/router/models/index.mjs +1 -1
  130. package/esm2020/lib/router/models/router.model.mjs +1 -1
  131. package/esm2020/lib/router/route-builder.mjs +425 -425
  132. package/esm2020/lib/router/tableview-route-builder.mjs +183 -183
  133. package/esm2020/lib/security/authorization.guard.mjs +25 -25
  134. package/esm2020/lib/security/authorization.service.mjs +46 -46
  135. package/esm2020/lib/security/authorization.util.mjs +15 -15
  136. package/esm2020/lib/security/index.mjs +3 -3
  137. package/esm2020/lib/security/model/authorization.type.mjs +7 -7
  138. package/esm2020/lib/security/model/index.mjs +3 -3
  139. package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
  140. package/esm2020/lib/security/model/permissions.model.mjs +86 -86
  141. package/esm2020/lib/services/action-executor.service.mjs +547 -547
  142. package/esm2020/lib/services/commons.service.mjs +354 -354
  143. package/esm2020/lib/services/configuration.service.mjs +119 -119
  144. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  145. package/esm2020/lib/services/index.mjs +6 -6
  146. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  147. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  148. package/esm2020/lib/services/internal/index.mjs +2 -2
  149. package/esm2020/lib/services/navigation.service.mjs +47 -47
  150. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  151. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  152. package/esm2020/lib/services/providers/index.mjs +2 -2
  153. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  154. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  155. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  156. package/esm2020/lib/services/tokens/index.mjs +4 -4
  157. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  158. package/esm2020/lib/services/version.service.mjs +38 -38
  159. package/esm2020/lib/services/view-container.component.service.mjs +47 -47
  160. package/esm2020/lib/styles/button-style.builder.mjs +164 -164
  161. package/esm2020/lib/styles/index.mjs +2 -2
  162. package/esm2020/lib/styles/models/index.mjs +2 -2
  163. package/esm2020/lib/styles/models/style-level.enum.mjs +11 -11
  164. package/esm2020/lib/styles/models/style-size.enum.mjs +8 -8
  165. package/esm2020/lib/styles/styles.util.mjs +41 -41
  166. package/esm2020/lib/types/index.mjs +2 -2
  167. package/esm2020/lib/types/type.decorator.mjs +21 -21
  168. package/esm2020/lib/types/type.model.mjs +1 -1
  169. package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
  170. package/esm2020/lib/utils/date.util.mjs +117 -117
  171. package/esm2020/lib/utils/editor-formly.util.mjs +263 -251
  172. package/esm2020/lib/utils/enum.util.mjs +81 -81
  173. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  174. package/esm2020/lib/utils/index.mjs +9 -9
  175. package/esm2020/lib/utils/model.util.mjs +68 -68
  176. package/esm2020/lib/utils/notification.util.mjs +45 -45
  177. package/esm2020/lib/utils/route.util.mjs +23 -23
  178. package/esm2020/lib/utils/string.util.mjs +26 -26
  179. package/esm2020/lib/utils/tableview.util.mjs +143 -143
  180. package/esm2020/lib/utils/type.util.mjs +92 -92
  181. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  182. package/esm2020/public-api.mjs +54 -54
  183. package/fesm2015/mediusinc-mng-commons.mjs +12803 -12682
  184. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  185. package/fesm2020/mediusinc-mng-commons.mjs +12647 -12528
  186. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  187. package/index.d.ts +5 -5
  188. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  189. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  190. package/lib/api/models/filter-param.model.d.ts +23 -23
  191. package/lib/api/models/index.d.ts +8 -8
  192. package/lib/api/models/mappers.d.ts +6 -6
  193. package/lib/api/models/query-mode.model.d.ts +16 -16
  194. package/lib/api/models/query-param.model.d.ts +31 -31
  195. package/lib/api/models/query-result.model.d.ts +24 -24
  196. package/lib/api/models/serialization.model.d.ts +8 -8
  197. package/lib/api/services/api.abstract.service.d.ts +24 -24
  198. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  199. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  200. package/lib/api/services/index.d.ts +3 -3
  201. package/lib/api/utils/index.d.ts +2 -2
  202. package/lib/api/utils/medius-rest.util.d.ts +16 -16
  203. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  204. package/lib/components/action/action.component.d.ts +69 -69
  205. package/lib/components/action/editor/action-editor.component.d.ts +63 -63
  206. package/lib/components/action/index.d.ts +3 -3
  207. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  208. package/lib/components/action/models/action-execution.model.d.ts +131 -131
  209. package/lib/components/action/models/index.d.ts +3 -3
  210. package/lib/components/action/models/tableview-action-default-categories.model.d.ts +10 -10
  211. package/lib/components/action/route/action-route.component.d.ts +31 -31
  212. package/lib/components/form/autocomplete/autocomplete.component.d.ts +61 -61
  213. package/lib/components/form/date-range/date-range.component.d.ts +28 -28
  214. package/lib/components/form/dropdown/dropdown.component.d.ts +52 -52
  215. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  216. package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +13 -0
  217. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +16 -15
  218. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +15 -14
  219. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +14 -13
  220. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +24 -23
  221. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +11 -10
  222. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +46 -45
  223. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +21 -20
  224. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +37 -36
  225. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +7 -6
  226. package/lib/components/form/formly/fields/index.d.ts +10 -9
  227. package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +6 -0
  228. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  229. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  230. package/lib/components/form/index.d.ts +4 -4
  231. package/lib/components/form/models/field-action-context.model.d.ts +17 -0
  232. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  233. package/lib/components/form/models/form-editor.interface.d.ts +10 -0
  234. package/lib/components/form/models/index.d.ts +2 -1
  235. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  236. package/lib/components/layout/footer.component.d.ts +9 -9
  237. package/lib/components/layout/index.d.ts +7 -7
  238. package/lib/components/layout/main-layout.component.d.ts +20 -20
  239. package/lib/components/layout/menu-item.component.d.ts +52 -52
  240. package/lib/components/layout/menu.component.d.ts +10 -10
  241. package/lib/components/layout/services/index.d.ts +1 -1
  242. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  243. package/lib/components/layout/topbar.component.d.ts +28 -28
  244. package/lib/components/layout/version.component.d.ts +19 -19
  245. package/lib/components/tableview/index.d.ts +6 -6
  246. package/lib/components/tableview/models/index.d.ts +1 -1
  247. package/lib/components/tableview/models/table.event.d.ts +17 -17
  248. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +26 -26
  249. package/lib/components/tableview/route/tableview-route.component.d.ts +18 -18
  250. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +38 -38
  251. package/lib/components/tableview/table/column-value/column-value.component.d.ts +30 -29
  252. package/lib/components/tableview/table/table.component.d.ts +113 -113
  253. package/lib/components/tableview/tableview.component.d.ts +48 -48
  254. package/lib/config/formly.config.d.ts +16 -16
  255. package/lib/config/index.d.ts +1 -1
  256. package/lib/config/models/{mng-config.model.d.ts → config.model.d.ts} +36 -36
  257. package/lib/config/models/formly-config.model.d.ts +11 -0
  258. package/lib/config/models/index.d.ts +2 -2
  259. package/lib/data-providers/base.data-provider.d.ts +14 -14
  260. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  261. package/lib/data-providers/index.d.ts +6 -6
  262. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  263. package/lib/data-providers/table.data-provider.d.ts +27 -27
  264. package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -8
  265. package/lib/data-providers/tableview.data-provider.d.ts +37 -37
  266. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +36 -36
  267. package/lib/descriptors/action-button.descriptor.d.ts +22 -22
  268. package/lib/descriptors/action.descriptor.d.ts +212 -212
  269. package/lib/descriptors/column.descriptor.d.ts +123 -122
  270. package/lib/descriptors/editor.descriptor.d.ts +95 -94
  271. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  272. package/lib/descriptors/field.descriptor.d.ts +324 -309
  273. package/lib/descriptors/filter.descriptor.d.ts +112 -112
  274. package/lib/descriptors/index.d.ts +11 -11
  275. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  276. package/lib/descriptors/interfaces/index.d.ts +2 -2
  277. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  278. package/lib/descriptors/model.descriptor.d.ts +18 -18
  279. package/lib/descriptors/table.descriptor.d.ts +182 -182
  280. package/lib/descriptors/tableview.descriptor.d.ts +122 -122
  281. package/lib/descriptors/types/action.type.d.ts +21 -21
  282. package/lib/descriptors/types/column.type.d.ts +10 -9
  283. package/lib/descriptors/types/editor.type.d.ts +6 -6
  284. package/lib/descriptors/types/field.type.d.ts +44 -44
  285. package/lib/descriptors/types/filter.type.d.ts +27 -27
  286. package/lib/descriptors/types/index.d.ts +6 -6
  287. package/lib/descriptors/types/table.type.d.ts +22 -22
  288. package/lib/directives/component.directive.d.ts +16 -16
  289. package/lib/directives/index.d.ts +2 -2
  290. package/lib/directives/template.directive.d.ts +13 -13
  291. package/lib/mng-commons.module.d.ts +94 -93
  292. package/lib/models/column-value.model.d.ts +4 -4
  293. package/lib/models/enum.model.d.ts +6 -6
  294. package/lib/models/error.model.d.ts +14 -14
  295. package/lib/models/formly-field.model.d.ts +16 -16
  296. package/lib/models/index.d.ts +9 -9
  297. package/lib/models/menu.model.d.ts +27 -27
  298. package/lib/models/tableview-attr.model.d.ts +9 -9
  299. package/lib/models/user.model.d.ts +8 -8
  300. package/lib/models/version.model.d.ts +18 -18
  301. package/lib/models/view-container.model.d.ts +37 -37
  302. package/lib/pipes/boolean.pipe.d.ts +7 -7
  303. package/lib/pipes/class-map.pipe.d.ts +7 -7
  304. package/lib/pipes/enum.pipe.d.ts +8 -8
  305. package/lib/pipes/enumerate-async.pipe.d.ts +14 -14
  306. package/lib/pipes/enumerate.pipe.d.ts +21 -21
  307. package/lib/pipes/getter.pipe.d.ts +7 -7
  308. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  309. package/lib/pipes/index.d.ts +10 -10
  310. package/lib/pipes/json-path.pipe.d.ts +13 -13
  311. package/lib/pipes/models/internal/enumrate-pipe-i18n.model.d.ts +5 -5
  312. package/lib/pipes/models/internal/index.d.ts +1 -1
  313. package/lib/pipes/parametrize.pipe.d.ts +13 -13
  314. package/lib/pipes/template.pipe.d.ts +10 -10
  315. package/lib/router/index.d.ts +2 -2
  316. package/lib/router/models/index.d.ts +1 -1
  317. package/lib/router/models/router.model.d.ts +33 -33
  318. package/lib/router/route-builder.d.ts +98 -98
  319. package/lib/router/tableview-route-builder.d.ts +37 -37
  320. package/lib/security/authorization.guard.d.ts +11 -11
  321. package/lib/security/authorization.service.d.ts +19 -19
  322. package/lib/security/authorization.util.d.ts +5 -5
  323. package/lib/security/index.d.ts +3 -3
  324. package/lib/security/model/authorization.type.d.ts +6 -6
  325. package/lib/security/model/index.d.ts +3 -3
  326. package/lib/security/model/permission-service.interface.d.ts +6 -6
  327. package/lib/security/model/permissions.model.d.ts +37 -37
  328. package/lib/services/action-executor.service.d.ts +149 -149
  329. package/lib/services/commons.service.d.ts +81 -81
  330. package/lib/services/configuration.service.d.ts +45 -45
  331. package/lib/services/error-mapper.service.d.ts +7 -7
  332. package/lib/services/index.d.ts +6 -6
  333. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  334. package/lib/services/internal/commons-init.service.d.ts +16 -16
  335. package/lib/services/internal/index.d.ts +2 -2
  336. package/lib/services/navigation.service.d.ts +14 -14
  337. package/lib/services/providers/config-service.provider.d.ts +6 -6
  338. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  339. package/lib/services/providers/index.d.ts +2 -2
  340. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  341. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  342. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  343. package/lib/services/tokens/index.d.ts +4 -4
  344. package/lib/services/tokens/module-config.token.d.ts +3 -3
  345. package/lib/services/version.service.d.ts +13 -13
  346. package/lib/services/view-container.component.service.d.ts +28 -28
  347. package/lib/styles/button-style.builder.d.ts +67 -67
  348. package/lib/styles/index.d.ts +2 -2
  349. package/lib/styles/models/index.d.ts +2 -2
  350. package/lib/styles/models/style-level.enum.d.ts +10 -10
  351. package/lib/styles/models/style-size.enum.d.ts +7 -7
  352. package/lib/styles/styles.util.d.ts +14 -14
  353. package/lib/types/index.d.ts +2 -2
  354. package/lib/types/type.decorator.d.ts +4 -4
  355. package/lib/types/type.model.d.ts +23 -23
  356. package/lib/utils/action-data-provider.util.d.ts +20 -20
  357. package/lib/utils/date.util.d.ts +7 -7
  358. package/lib/utils/editor-formly.util.d.ts +12 -11
  359. package/lib/utils/enum.util.d.ts +50 -50
  360. package/lib/utils/i18n.util.d.ts +56 -56
  361. package/lib/utils/index.d.ts +9 -9
  362. package/lib/utils/model.util.d.ts +8 -8
  363. package/lib/utils/notification.util.d.ts +11 -11
  364. package/lib/utils/route.util.d.ts +4 -4
  365. package/lib/utils/string.util.d.ts +4 -4
  366. package/lib/utils/tableview.util.d.ts +39 -39
  367. package/lib/utils/type.util.d.ts +57 -57
  368. package/mediusinc-mng-commons-0.18.0-rc.1.tgz +0 -0
  369. package/package.json +1 -1
  370. package/public-api.d.ts +34 -34
  371. package/scss/mng-overrides/_theme_datatable.scss +9 -3
  372. package/version-info.json +6 -6
  373. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +0 -15
  374. package/esm2020/lib/config/models/mng-config.model.mjs +0 -2
  375. package/esm2020/lib/config/models/mng-formly-config-model.mjs +0 -2
  376. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +0 -6
  377. package/lib/config/models/mng-formly-config-model.d.ts +0 -17
@@ -1,213 +1,213 @@
1
- import { FilterMatchMode } from 'primeng/api';
2
- import { FilterTypeEnum } from '../../descriptors/types';
3
- import { DateUtil } from '../../utils';
4
- import { MediusFilterMatchType, MediusQueryParamBuilder } from '../models';
5
- export class MediusRestUtil {
6
- static fromAngularQueryParamsToMediusQueryParams(params, filterDescriptors, defaultItemsPerPage = 10, defaultOffset = 0) {
7
- const offset = params['first'] ? parseInt(params['first']) : defaultOffset;
8
- const itemsPerPage = params['rows'] ? parseInt(params['rows']) : defaultItemsPerPage;
9
- const mediusParamsBuilder = MediusQueryParamBuilder.create(itemsPerPage, offset);
10
- if (params['sort']) {
11
- for (const sort of params['sort'].split(',')) {
12
- const qpSortSplit = sort.split(':');
13
- const field = qpSortSplit[0];
14
- const asc = qpSortSplit.length > 1 ? qpSortSplit[1] === 'asc' : true;
15
- mediusParamsBuilder.withSort(field, asc);
16
- }
17
- }
18
- if (params['filter']) {
19
- const filterSplit = params['filter'].split(';');
20
- for (const filterField of filterSplit) {
21
- const filterFieldSplit = filterField.split(':');
22
- const field = filterFieldSplit[0];
23
- const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';
24
- // prepare value
25
- let value = filterFieldSplit.length > 2 ? filterFieldSplit.slice(2).join(':') : '';
26
- let valueTo = undefined;
27
- if (value.startsWith("'")) {
28
- value = value.substring(1, value.length - 1);
29
- }
30
- if (value.startsWith('[') && value.endsWith(']')) {
31
- value = value
32
- .substring(1, value.length - 1)
33
- .split(',')
34
- .map((v) => (v.startsWith("'") ? v.substring(1, v.length - 1) : v));
35
- }
36
- if (operator === 'ft') {
37
- valueTo = value[1];
38
- value = value[0];
39
- }
40
- const filterDescriptor = filterDescriptors.find(f => f.property === field);
41
- const matchMode = MediusRestUtil.getMapping(operator, filterDescriptor?.filterType, 1);
42
- if (matchMode && filterDescriptor) {
43
- mediusParamsBuilder.withFilter(filterDescriptor.property, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(matchMode[0]));
44
- }
45
- }
46
- }
47
- return mediusParamsBuilder.build();
48
- }
49
- static fromPrimeLazyLoadEventToAngularQueryParams(event, defaultItemsPerPage = 10, defaultOffset = 0) {
50
- const params = {
51
- first: null,
52
- rows: null,
53
- sort: null,
54
- filter: null
55
- };
56
- if (event.first && event.first !== defaultOffset && event.first > 0) {
57
- params['first'] = event.first;
58
- }
59
- if (event.rows && event.rows !== defaultItemsPerPage && event.rows > 0) {
60
- params['rows'] = event.rows;
61
- }
62
- if (event.multiSortMeta?.length) {
63
- params['sort'] = event.multiSortMeta?.map(s => `${s.field}${s.order === 1 ? '' : ':desc'}`).join(',');
64
- }
65
- if (event.filters) {
66
- const filters = [];
67
- for (const field in event.filters) {
68
- const primeOperator = event.filters[field].matchMode;
69
- let value = event.filters[field].value;
70
- const operatorMapping = primeOperator ? MediusRestUtil.getMapping(primeOperator, undefined, 0) : undefined;
71
- if (operatorMapping && typeof value !== 'undefined' && value !== null) {
72
- let doAddFilter = false;
73
- if (typeof value === 'string' && value.length > 0) {
74
- value = `'${value}'`;
75
- doAddFilter = true;
76
- }
77
- else if (typeof value === 'number') {
78
- doAddFilter = true;
79
- }
80
- else if (typeof value === 'boolean') {
81
- doAddFilter = true;
82
- }
83
- else if (Array.isArray(value)) {
84
- const joinedValue = value
85
- .map(v => {
86
- if (v instanceof Date) {
87
- // for query params, always convert to iso string, correct transformation will be done later
88
- return v.toISOString();
89
- }
90
- return v;
91
- })
92
- .join(',');
93
- value = `[${joinedValue}]`;
94
- doAddFilter = true;
95
- }
96
- else if (value instanceof Date) {
97
- // for query params, always convert to iso string, correct transformation will be done later
98
- value = value.toISOString();
99
- doAddFilter = true;
100
- }
101
- if (doAddFilter) {
102
- filters.push(`${field}:${operatorMapping[1]}:${value}`);
103
- }
104
- }
105
- }
106
- if (filters.length > 0) {
107
- params['filter'] = filters.join(';');
108
- }
109
- }
110
- return params;
111
- }
112
- static modifyFilterProperties(mediusQueryParams, filterDescriptors) {
113
- for (const filterParam of mediusQueryParams.filterParams ?? []) {
114
- const filterDescriptor = filterDescriptors.find(f => f.property === filterParam.property);
115
- filterParam.property = filterDescriptor?.filterProperty ?? filterParam.property;
116
- if (filterDescriptor?.filterType === FilterTypeEnum.Date) {
117
- if (filterParam.filterMatchType === MediusFilterMatchType.Equals) {
118
- // convert date equals filter to date range
119
- const filterDate = filterParam.filterValue;
120
- const startDate = new Date(filterDate);
121
- const endDate = new Date(startDate);
122
- if (filterDescriptor.datePickerShowTime) {
123
- startDate.setHours(startDate.getHours(), startDate.getMinutes(), 0, 0);
124
- endDate.setHours(endDate.getHours(), endDate.getMinutes() + 1, 0, 0);
125
- }
126
- else {
127
- startDate.setHours(0, 0, 0, 0);
128
- endDate.setHours(0, 0, 0, 0);
129
- endDate.setDate(endDate.getDate() + 1);
130
- }
131
- filterParam.filterMatchType = MediusFilterMatchType.FromTo;
132
- filterParam.filterValue = startDate;
133
- filterParam.filterValueTo = endDate;
134
- }
135
- // transform dates to correct iso string
136
- if (typeof filterParam.filterValue !== 'undefined') {
137
- if (Array.isArray(filterParam.filterValue)) {
138
- filterParam.filterValue = filterParam.filterValue.map(v => DateUtil.toIsoString(v, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone));
139
- }
140
- else {
141
- filterParam.filterValue = DateUtil.toIsoString(filterParam.filterValue, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone);
142
- }
143
- }
144
- if (typeof filterParam.filterValueTo !== 'undefined') {
145
- if (Array.isArray(filterParam.filterValueTo)) {
146
- filterParam.filterValueTo = filterParam.filterValueTo.map(v => DateUtil.toIsoString(v, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone));
147
- }
148
- else {
149
- filterParam.filterValueTo = DateUtil.toIsoString(filterParam.filterValueTo, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone);
150
- }
151
- }
152
- }
153
- }
154
- }
155
- static fromPrimeLazyLoadEventToMediusQueryParams(event) {
156
- const queryParamBuilder = MediusQueryParamBuilder.create(event.rows, event.first);
157
- // apply sorting
158
- if (event.multiSortMeta) {
159
- event.multiSortMeta.forEach(msm => queryParamBuilder.withSort(msm.field, msm.order === 1));
160
- }
161
- // apply filtering
162
- if (event.filters) {
163
- for (const key of Object.keys(event.filters)) {
164
- const filterEvent = event.filters[key];
165
- if (Array.isArray(filterEvent)) {
166
- filterEvent.filter(e => e.value).forEach(e => MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, e));
167
- }
168
- else if (typeof filterEvent === 'object') {
169
- if (filterEvent.value) {
170
- MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, filterEvent);
171
- }
172
- }
173
- }
174
- }
175
- return queryParamBuilder.build();
176
- }
177
- static addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, property, filterMetadata) {
178
- const matchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(filterMetadata.matchMode ?? 'equals');
179
- queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);
180
- }
181
- static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode, dataType) {
182
- return MediusRestUtil.getMapping(matchMode, dataType)?.[2] ?? MediusFilterMatchType.Equals;
183
- }
184
- static getMapping(matchMode, dataType, idx = 0) {
185
- const mappings = MediusRestUtil.matchModeMapping.filter(m => m[idx] === matchMode && (!dataType || !m[3] || dataType === m[3]));
186
- if (mappings.length === 0) {
187
- return null;
188
- }
189
- else if (mappings.length === 1) {
190
- return mappings[0];
191
- }
192
- else {
193
- return mappings.sort((m1, m2) => (m2[3] ?? -1) - (m1[3] ?? -1))[0];
194
- }
195
- }
196
- }
197
- // first value is from primeNG, second is for use in query params
198
- MediusRestUtil.matchModeMapping = [
199
- [FilterMatchMode.CONTAINS, 'c', MediusFilterMatchType.Contains, null],
200
- [FilterMatchMode.ENDS_WITH, 'ew', MediusFilterMatchType.EndsWith, null],
201
- [FilterMatchMode.EQUALS, 'eq', MediusFilterMatchType.Equals, null],
202
- [FilterMatchMode.GREATER_THAN, 'gt', MediusFilterMatchType.GreaterThan, null],
203
- [FilterMatchMode.LESS_THAN, 'lt', MediusFilterMatchType.SmallerThan, null],
204
- [FilterMatchMode.STARTS_WITH, 'sw', MediusFilterMatchType.StartsWith, null],
205
- [FilterMatchMode.IN, 'in', MediusFilterMatchType.In, null],
206
- [FilterMatchMode.NOT_EQUALS, 'neq', MediusFilterMatchType.NotEquals, null],
207
- [FilterMatchMode.BETWEEN, 'ft', MediusFilterMatchType.FromTo, FilterTypeEnum.Date],
208
- [FilterMatchMode.DATE_IS, 'dteq', MediusFilterMatchType.Equals, FilterTypeEnum.Date],
209
- [FilterMatchMode.DATE_BEFORE, 'lt', MediusFilterMatchType.SmallerThan, FilterTypeEnum.Date],
210
- [FilterMatchMode.DATE_AFTER, 'gt', MediusFilterMatchType.GreaterThan, FilterTypeEnum.Date],
211
- [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterTypeEnum.Date]
212
- ];
1
+ import { FilterMatchMode } from 'primeng/api';
2
+ import { FilterTypeEnum } from '../../descriptors/types';
3
+ import { DateUtil } from '../../utils';
4
+ import { MediusFilterMatchType, MediusQueryParamBuilder } from '../models';
5
+ export class MediusRestUtil {
6
+ static fromAngularQueryParamsToMediusQueryParams(params, filterDescriptors, defaultItemsPerPage = 10, defaultOffset = 0) {
7
+ const offset = params['first'] ? parseInt(params['first']) : defaultOffset;
8
+ const itemsPerPage = params['rows'] ? parseInt(params['rows']) : defaultItemsPerPage;
9
+ const mediusParamsBuilder = MediusQueryParamBuilder.create(itemsPerPage, offset);
10
+ if (params['sort']) {
11
+ for (const sort of params['sort'].split(',')) {
12
+ const qpSortSplit = sort.split(':');
13
+ const field = qpSortSplit[0];
14
+ const asc = qpSortSplit.length > 1 ? qpSortSplit[1] === 'asc' : true;
15
+ mediusParamsBuilder.withSort(field, asc);
16
+ }
17
+ }
18
+ if (params['filter']) {
19
+ const filterSplit = params['filter'].split(';');
20
+ for (const filterField of filterSplit) {
21
+ const filterFieldSplit = filterField.split(':');
22
+ const field = filterFieldSplit[0];
23
+ const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';
24
+ // prepare value
25
+ let value = filterFieldSplit.length > 2 ? filterFieldSplit.slice(2).join(':') : '';
26
+ let valueTo = undefined;
27
+ if (value.startsWith("'")) {
28
+ value = value.substring(1, value.length - 1);
29
+ }
30
+ if (value.startsWith('[') && value.endsWith(']')) {
31
+ value = value
32
+ .substring(1, value.length - 1)
33
+ .split(',')
34
+ .map((v) => (v.startsWith("'") ? v.substring(1, v.length - 1) : v));
35
+ }
36
+ if (operator === 'ft') {
37
+ valueTo = value[1];
38
+ value = value[0];
39
+ }
40
+ const filterDescriptor = filterDescriptors.find(f => f.property === field);
41
+ const matchMode = MediusRestUtil.getMapping(operator, filterDescriptor?.filterType, 1);
42
+ if (matchMode && filterDescriptor) {
43
+ mediusParamsBuilder.withFilter(filterDescriptor.property, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(matchMode[0]));
44
+ }
45
+ }
46
+ }
47
+ return mediusParamsBuilder.build();
48
+ }
49
+ static fromPrimeLazyLoadEventToAngularQueryParams(event, defaultItemsPerPage = 10, defaultOffset = 0) {
50
+ const params = {
51
+ first: null,
52
+ rows: null,
53
+ sort: null,
54
+ filter: null
55
+ };
56
+ if (event.first && event.first !== defaultOffset && event.first > 0) {
57
+ params['first'] = event.first;
58
+ }
59
+ if (event.rows && event.rows !== defaultItemsPerPage && event.rows > 0) {
60
+ params['rows'] = event.rows;
61
+ }
62
+ if (event.multiSortMeta?.length) {
63
+ params['sort'] = event.multiSortMeta?.map(s => `${s.field}${s.order === 1 ? '' : ':desc'}`).join(',');
64
+ }
65
+ if (event.filters) {
66
+ const filters = [];
67
+ for (const field in event.filters) {
68
+ const primeOperator = event.filters[field].matchMode;
69
+ let value = event.filters[field].value;
70
+ const operatorMapping = primeOperator ? MediusRestUtil.getMapping(primeOperator, undefined, 0) : undefined;
71
+ if (operatorMapping && typeof value !== 'undefined' && value !== null) {
72
+ let doAddFilter = false;
73
+ if (typeof value === 'string' && value.length > 0) {
74
+ value = `'${value}'`;
75
+ doAddFilter = true;
76
+ }
77
+ else if (typeof value === 'number') {
78
+ doAddFilter = true;
79
+ }
80
+ else if (typeof value === 'boolean') {
81
+ doAddFilter = true;
82
+ }
83
+ else if (Array.isArray(value)) {
84
+ const joinedValue = value
85
+ .map(v => {
86
+ if (v instanceof Date) {
87
+ // for query params, always convert to iso string, correct transformation will be done later
88
+ return v.toISOString();
89
+ }
90
+ return v;
91
+ })
92
+ .join(',');
93
+ value = `[${joinedValue}]`;
94
+ doAddFilter = true;
95
+ }
96
+ else if (value instanceof Date) {
97
+ // for query params, always convert to iso string, correct transformation will be done later
98
+ value = value.toISOString();
99
+ doAddFilter = true;
100
+ }
101
+ if (doAddFilter) {
102
+ filters.push(`${field}:${operatorMapping[1]}:${value}`);
103
+ }
104
+ }
105
+ }
106
+ if (filters.length > 0) {
107
+ params['filter'] = filters.join(';');
108
+ }
109
+ }
110
+ return params;
111
+ }
112
+ static modifyFilterProperties(mediusQueryParams, filterDescriptors) {
113
+ for (const filterParam of mediusQueryParams.filterParams ?? []) {
114
+ const filterDescriptor = filterDescriptors.find(f => f.property === filterParam.property);
115
+ filterParam.property = filterDescriptor?.filterProperty ?? filterParam.property;
116
+ if (filterDescriptor?.filterType === FilterTypeEnum.Date) {
117
+ if (filterParam.filterMatchType === MediusFilterMatchType.Equals) {
118
+ // convert date equals filter to date range
119
+ const filterDate = filterParam.filterValue;
120
+ const startDate = new Date(filterDate);
121
+ const endDate = new Date(startDate);
122
+ if (filterDescriptor.datePickerShowTime) {
123
+ startDate.setHours(startDate.getHours(), startDate.getMinutes(), 0, 0);
124
+ endDate.setHours(endDate.getHours(), endDate.getMinutes() + 1, 0, 0);
125
+ }
126
+ else {
127
+ startDate.setHours(0, 0, 0, 0);
128
+ endDate.setHours(0, 0, 0, 0);
129
+ endDate.setDate(endDate.getDate() + 1);
130
+ }
131
+ filterParam.filterMatchType = MediusFilterMatchType.FromTo;
132
+ filterParam.filterValue = startDate;
133
+ filterParam.filterValueTo = endDate;
134
+ }
135
+ // transform dates to correct iso string
136
+ if (typeof filterParam.filterValue !== 'undefined') {
137
+ if (Array.isArray(filterParam.filterValue)) {
138
+ filterParam.filterValue = filterParam.filterValue.map(v => DateUtil.toIsoString(v, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone));
139
+ }
140
+ else {
141
+ filterParam.filterValue = DateUtil.toIsoString(filterParam.filterValue, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone);
142
+ }
143
+ }
144
+ if (typeof filterParam.filterValueTo !== 'undefined') {
145
+ if (Array.isArray(filterParam.filterValueTo)) {
146
+ filterParam.filterValueTo = filterParam.filterValueTo.map(v => DateUtil.toIsoString(v, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone));
147
+ }
148
+ else {
149
+ filterParam.filterValueTo = DateUtil.toIsoString(filterParam.filterValueTo, filterDescriptor.datePickerValueInUtc, filterDescriptor.datePickerValueWithTimezone);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ static fromPrimeLazyLoadEventToMediusQueryParams(event) {
156
+ const queryParamBuilder = MediusQueryParamBuilder.create(event.rows, event.first);
157
+ // apply sorting
158
+ if (event.multiSortMeta) {
159
+ event.multiSortMeta.forEach(msm => queryParamBuilder.withSort(msm.field, msm.order === 1));
160
+ }
161
+ // apply filtering
162
+ if (event.filters) {
163
+ for (const key of Object.keys(event.filters)) {
164
+ const filterEvent = event.filters[key];
165
+ if (Array.isArray(filterEvent)) {
166
+ filterEvent.filter(e => e.value).forEach(e => MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, e));
167
+ }
168
+ else if (typeof filterEvent === 'object') {
169
+ if (filterEvent.value) {
170
+ MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, filterEvent);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ return queryParamBuilder.build();
176
+ }
177
+ static addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, property, filterMetadata) {
178
+ const matchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(filterMetadata.matchMode ?? 'equals');
179
+ queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);
180
+ }
181
+ static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode, dataType) {
182
+ return MediusRestUtil.getMapping(matchMode, dataType)?.[2] ?? MediusFilterMatchType.Equals;
183
+ }
184
+ static getMapping(matchMode, dataType, idx = 0) {
185
+ const mappings = MediusRestUtil.matchModeMapping.filter(m => m[idx] === matchMode && (!dataType || !m[3] || dataType === m[3]));
186
+ if (mappings.length === 0) {
187
+ return null;
188
+ }
189
+ else if (mappings.length === 1) {
190
+ return mappings[0];
191
+ }
192
+ else {
193
+ return mappings.sort((m1, m2) => (m2[3] ?? -1) - (m1[3] ?? -1))[0];
194
+ }
195
+ }
196
+ }
197
+ // first value is from primeNG, second is for use in query params
198
+ MediusRestUtil.matchModeMapping = [
199
+ [FilterMatchMode.CONTAINS, 'c', MediusFilterMatchType.Contains, null],
200
+ [FilterMatchMode.ENDS_WITH, 'ew', MediusFilterMatchType.EndsWith, null],
201
+ [FilterMatchMode.EQUALS, 'eq', MediusFilterMatchType.Equals, null],
202
+ [FilterMatchMode.GREATER_THAN, 'gt', MediusFilterMatchType.GreaterThan, null],
203
+ [FilterMatchMode.LESS_THAN, 'lt', MediusFilterMatchType.SmallerThan, null],
204
+ [FilterMatchMode.STARTS_WITH, 'sw', MediusFilterMatchType.StartsWith, null],
205
+ [FilterMatchMode.IN, 'in', MediusFilterMatchType.In, null],
206
+ [FilterMatchMode.NOT_EQUALS, 'neq', MediusFilterMatchType.NotEquals, null],
207
+ [FilterMatchMode.BETWEEN, 'ft', MediusFilterMatchType.FromTo, FilterTypeEnum.Date],
208
+ [FilterMatchMode.DATE_IS, 'dteq', MediusFilterMatchType.Equals, FilterTypeEnum.Date],
209
+ [FilterMatchMode.DATE_BEFORE, 'lt', MediusFilterMatchType.SmallerThan, FilterTypeEnum.Date],
210
+ [FilterMatchMode.DATE_AFTER, 'gt', MediusFilterMatchType.GreaterThan, FilterTypeEnum.Date],
211
+ [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterTypeEnum.Date]
212
+ ];
213
213
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzLXJlc3QudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3V0aWxzL21lZGl1cy1yZXN0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGVBQWUsRUFBZ0MsTUFBTSxhQUFhLENBQUM7QUFHM0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLHFCQUFxQixFQUFvQix1QkFBdUIsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUzRixNQUFNLE9BQU8sY0FBYztJQWtCaEIsTUFBTSxDQUFDLHlDQUF5QyxDQUNuRCxNQUFjLEVBQ2QsaUJBQStDLEVBQy9DLG1CQUFtQixHQUFHLEVBQUUsRUFDeEIsYUFBYSxHQUFHLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMzRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFFckYsTUFBTSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWpGLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzVDO1NBQ0o7UUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELEtBQUssTUFBTSxXQUFXLElBQUksV0FBVyxFQUFFO2dCQUNuQyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUUxRSxnQkFBZ0I7Z0JBQ2hCLElBQUksS0FBSyxHQUFRLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEYsSUFBSSxPQUFPLEdBQVEsU0FBUyxDQUFDO2dCQUM3QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNoRDtnQkFDRCxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDOUMsS0FBSyxHQUFHLEtBQUs7eUJBQ1IsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt5QkFDOUIsS0FBSyxDQUFDLEdBQUcsQ0FBQzt5QkFDVixHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbkY7Z0JBRUQsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO29CQUNuQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNwQjtnQkFFRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxTQUFTLElBQUksZ0JBQWdCLEVBQUU7b0JBQy9CLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsMENBQTBDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdEo7YUFDSjtTQUNKO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sTUFBTSxDQUFDLDBDQUEwQyxDQUFDLEtBQW9CLEVBQUUsbUJBQW1CLEdBQUcsRUFBRSxFQUFFLGFBQWEsR0FBRyxDQUFDO1FBQ3RILE1BQU0sTUFBTSxHQUFXO1lBQ25CLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLGFBQWEsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNqQztRQUNELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRTtZQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekc7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDZixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUMvQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDckQsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzNHLElBQUksZUFBZSxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUNuRSxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3hCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUMvQyxLQUFLLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQzt3QkFDckIsV0FBVyxHQUFHLElBQUksQ0FBQztxQkFDdEI7eUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7d0JBQ2xDLFdBQVcsR0FBRyxJQUFJLENBQUM7cUJBQ3RCO3lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO3dCQUNuQyxXQUFXLEdBQUcsSUFBSSxDQUFDO3FCQUN0Qjt5QkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQzdCLE1BQU0sV0FBVyxHQUFHLEtBQUs7NkJBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTs0QkFDTCxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0NBQ25CLDRGQUE0RjtnQ0FDNUYsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7NkJBQzFCOzRCQUNELE9BQU8sQ0FBQyxDQUFDO3dCQUNiLENBQUMsQ0FBQzs2QkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBRWYsS0FBSyxHQUFHLElBQUksV0FBVyxHQUFHLENBQUM7d0JBQzNCLFdBQVcsR0FBRyxJQUFJLENBQUM7cUJBQ3RCO3lCQUFNLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTt3QkFDOUIsNEZBQTRGO3dCQUM1RixLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUM1QixXQUFXLEdBQUcsSUFBSSxDQUFDO3FCQUN0QjtvQkFFRCxJQUFJLFdBQVcsRUFBRTt3QkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO3FCQUMzRDtpQkFDSjthQUNKO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDcEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEM7U0FDSjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsaUJBQW1DLEVBQUUsaUJBQStDO1FBQ3JILEtBQUssTUFBTSxXQUFXLElBQUksaUJBQWlCLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRTtZQUM1RCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFGLFdBQVcsQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLEVBQUUsY0FBYyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDaEYsSUFBSSxnQkFBZ0IsRUFBRSxVQUFVLEtBQUssY0FBYyxDQUFDLElBQUksRUFBRTtnQkFDdEQsSUFBSSxXQUFXLENBQUMsZUFBZSxLQUFLLHFCQUFxQixDQUFDLE1BQU0sRUFBRTtvQkFDOUQsMkNBQTJDO29CQUMzQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsV0FBbUIsQ0FBQztvQkFFbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUVwQyxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFO3dCQUNyQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN2RSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDeEU7eUJBQU07d0JBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQzFDO29CQUVELFdBQVcsQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDO29CQUMzRCxXQUFXLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztvQkFDcEMsV0FBVyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7aUJBQ3ZDO2dCQUVELHdDQUF3QztnQkFDeEMsSUFBSSxPQUFPLFdBQVcsQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO29CQUNoRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFO3dCQUN4QyxXQUFXLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLENBQy9HLENBQUM7cUJBQ0w7eUJBQU07d0JBQ0gsV0FBVyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUMxQyxXQUFXLENBQUMsV0FBVyxFQUN2QixnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFDckMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQy9DLENBQUM7cUJBQ0w7aUJBQ0o7Z0JBQ0QsSUFBSSxPQUFPLFdBQVcsQ0FBQyxhQUFhLEtBQUssV0FBVyxFQUFFO29CQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFO3dCQUMxQyxXQUFXLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzFELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLENBQy9HLENBQUM7cUJBQ0w7eUJBQU07d0JBQ0gsV0FBVyxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUM1QyxXQUFXLENBQUMsYUFBYSxFQUN6QixnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFDckMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQy9DLENBQUM7cUJBQ0w7aUJBQ0o7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxLQUFvQjtRQUN4RSxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsRixnQkFBZ0I7UUFDaEIsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBRUQsa0JBQWtCO1FBQ2xCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNmLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDM0IsV0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLHNDQUFzQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN6SjtxQkFBTSxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRTtvQkFDeEMsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO3dCQUNuQixjQUFjLENBQUMsc0NBQXNDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO3FCQUM5RjtpQkFDSjthQUNKO1NBQ0o7UUFFRCxPQUFPLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxNQUFNLENBQUMsc0NBQXNDLENBQUMsaUJBQTBDLEVBQUUsUUFBZ0IsRUFBRSxjQUE4QjtRQUM3SSxNQUFNLFNBQVMsR0FBMEIsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLENBQUM7UUFDekksaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU0sTUFBTSxDQUFDLDBDQUEwQyxDQUFDLFNBQWlCLEVBQUUsUUFBeUI7UUFDakcsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztJQUMvRixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFpQixFQUFFLFFBQXlCLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RCO2FBQU07WUFDSCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RTtJQUNMLENBQUM7O0FBOU9ELGlFQUFpRTtBQUN6QywrQkFBZ0IsR0FBNEI7SUFDaEUsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQ3JFLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztJQUN2RSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO0lBQzdFLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztJQUMxRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDM0UsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQzFELENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztJQUMxRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ2xGLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUscUJBQXFCLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDcEYsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQztJQUMzRixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQzFGLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUM7Q0FDN0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0ZpbHRlck1hdGNoTW9kZSwgRmlsdGVyTWV0YWRhdGEsIExhenlMb2FkRXZlbnR9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0ZpbHRlclR5cGVFbnVtfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge01hdGNoTW9kZU1hcFR5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7RGF0ZVV0aWx9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLCBNZWRpdXNRdWVyeVBhcmFtLCBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlcn0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIE1lZGl1c1Jlc3RVdGlsIHtcbiAgICAvLyBmaXJzdCB2YWx1ZSBpcyBmcm9tIHByaW1lTkcsIHNlY29uZCBpcyBmb3IgdXNlIGluIHF1ZXJ5IHBhcmFtc1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IG1hdGNoTW9kZU1hcHBpbmc6IEFycmF5PE1hdGNoTW9kZU1hcFR5cGU+ID0gW1xuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLkNPTlRBSU5TLCAnYycsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Db250YWlucywgbnVsbF0sXG4gICAgICAgIFtGaWx0ZXJNYXRjaE1vZGUuRU5EU19XSVRILCAnZXcnLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRW5kc1dpdGgsIG51bGxdLFxuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUywgJ2VxJywgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkVxdWFscywgbnVsbF0sXG4gICAgICAgIFtGaWx0ZXJNYXRjaE1vZGUuR1JFQVRFUl9USEFOLCAnZ3QnLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuR3JlYXRlclRoYW4sIG51bGxdLFxuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLkxFU1NfVEhBTiwgJ2x0JywgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLlNtYWxsZXJUaGFuLCBudWxsXSxcbiAgICAgICAgW0ZpbHRlck1hdGNoTW9kZS5TVEFSVFNfV0lUSCwgJ3N3JywgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLlN0YXJ0c1dpdGgsIG51bGxdLFxuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLklOLCAnaW4nLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuSW4sIG51bGxdLFxuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLk5PVF9FUVVBTFMsICduZXEnLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuTm90RXF1YWxzLCBudWxsXSxcbiAgICAgICAgW0ZpbHRlck1hdGNoTW9kZS5CRVRXRUVOLCAnZnQnLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRnJvbVRvLCBGaWx0ZXJUeXBlRW51bS5EYXRlXSxcbiAgICAgICAgW0ZpbHRlck1hdGNoTW9kZS5EQVRFX0lTLCAnZHRlcScsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5FcXVhbHMsIEZpbHRlclR5cGVFbnVtLkRhdGVdLFxuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQkVGT1JFLCAnbHQnLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuU21hbGxlclRoYW4sIEZpbHRlclR5cGVFbnVtLkRhdGVdLFxuICAgICAgICBbRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQUZURVIsICdndCcsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5HcmVhdGVyVGhhbiwgRmlsdGVyVHlwZUVudW0uRGF0ZV0sXG4gICAgICAgIFtGaWx0ZXJNYXRjaE1vZGUuREFURV9JU19OT1QsICduZXEnLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuTm90RXF1YWxzLCBGaWx0ZXJUeXBlRW51bS5EYXRlXVxuICAgIF07XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Bbmd1bGFyUXVlcnlQYXJhbXNUb01lZGl1c1F1ZXJ5UGFyYW1zKFxuICAgICAgICBwYXJhbXM6IFBhcmFtcyxcbiAgICAgICAgZmlsdGVyRGVzY3JpcHRvcnM6IEFycmF5PEZpbHRlckRlc2NyaXB0b3I8YW55Pj4sXG4gICAgICAgIGRlZmF1bHRJdGVtc1BlclBhZ2UgPSAxMCxcbiAgICAgICAgZGVmYXVsdE9mZnNldCA9IDBcbiAgICApOiBNZWRpdXNRdWVyeVBhcmFtIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGFyYW1zWydmaXJzdCddID8gcGFyc2VJbnQocGFyYW1zWydmaXJzdCddKSA6IGRlZmF1bHRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUGFnZSA9IHBhcmFtc1sncm93cyddID8gcGFyc2VJbnQocGFyYW1zWydyb3dzJ10pIDogZGVmYXVsdEl0ZW1zUGVyUGFnZTtcblxuICAgICAgICBjb25zdCBtZWRpdXNQYXJhbXNCdWlsZGVyID0gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKGl0ZW1zUGVyUGFnZSwgb2Zmc2V0KTtcblxuICAgICAgICBpZiAocGFyYW1zWydzb3J0J10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc29ydCBvZiBwYXJhbXNbJ3NvcnQnXS5zcGxpdCgnLCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXBTb3J0U3BsaXQgPSBzb3J0LnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBxcFNvcnRTcGxpdFswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhc2MgPSBxcFNvcnRTcGxpdC5sZW5ndGggPiAxID8gcXBTb3J0U3BsaXRbMV0gPT09ICdhc2MnIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICBtZWRpdXNQYXJhbXNCdWlsZGVyLndpdGhTb3J0KGZpZWxkLCBhc2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXNbJ2ZpbHRlciddKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJTcGxpdCA9IHBhcmFtc1snZmlsdGVyJ10uc3BsaXQoJzsnKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyRmllbGQgb2YgZmlsdGVyU3BsaXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJGaWVsZFNwbGl0ID0gZmlsdGVyRmllbGQuc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlckZpZWxkU3BsaXRbMF07XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXJGaWVsZFNwbGl0Lmxlbmd0aCA+IDEgPyBmaWx0ZXJGaWVsZFNwbGl0WzFdIDogJ2VxJztcblxuICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgdmFsdWVcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IGFueSA9IGZpbHRlckZpZWxkU3BsaXQubGVuZ3RoID4gMiA/IGZpbHRlckZpZWxkU3BsaXQuc2xpY2UoMikuam9pbignOicpIDogJyc7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlVG86IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChcIidcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSwgdmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdbJykgJiYgdmFsdWUuZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiAodi5zdGFydHNXaXRoKFwiJ1wiKSA/IHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSkgOiB2KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlVG8gPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVswXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gZmlsdGVyRGVzY3JpcHRvcnMuZmluZChmID0+IGYucHJvcGVydHkgPT09IGZpZWxkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaE1vZGUgPSBNZWRpdXNSZXN0VXRpbC5nZXRNYXBwaW5nKG9wZXJhdG9yLCBmaWx0ZXJEZXNjcmlwdG9yPy5maWx0ZXJUeXBlLCAxKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hNb2RlICYmIGZpbHRlckRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVkaXVzUGFyYW1zQnVpbGRlci53aXRoRmlsdGVyKGZpbHRlckRlc2NyaXB0b3IucHJvcGVydHksIHZhbHVlLCB2YWx1ZVRvLCBNZWRpdXNSZXN0VXRpbC5nZXRNZWRpdXNGaWx0ZXJNYXRjaFR5cGVGcm9tUHJpbWVNYXRjaE1vZGUobWF0Y2hNb2RlWzBdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1lZGl1c1BhcmFtc0J1aWxkZXIuYnVpbGQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21QcmltZUxhenlMb2FkRXZlbnRUb0FuZ3VsYXJRdWVyeVBhcmFtcyhldmVudDogTGF6eUxvYWRFdmVudCwgZGVmYXVsdEl0ZW1zUGVyUGFnZSA9IDEwLCBkZWZhdWx0T2Zmc2V0ID0gMCk6IFBhcmFtcyB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogUGFyYW1zID0ge1xuICAgICAgICAgICAgZmlyc3Q6IG51bGwsXG4gICAgICAgICAgICByb3dzOiBudWxsLFxuICAgICAgICAgICAgc29ydDogbnVsbCxcbiAgICAgICAgICAgIGZpbHRlcjogbnVsbFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChldmVudC5maXJzdCAmJiBldmVudC5maXJzdCAhPT0gZGVmYXVsdE9mZnNldCAmJiBldmVudC5maXJzdCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtc1snZmlyc3QnXSA9IGV2ZW50LmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5yb3dzICYmIGV2ZW50LnJvd3MgIT09IGRlZmF1bHRJdGVtc1BlclBhZ2UgJiYgZXZlbnQucm93cyA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtc1sncm93cyddID0gZXZlbnQucm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5tdWx0aVNvcnRNZXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmFtc1snc29ydCddID0gZXZlbnQubXVsdGlTb3J0TWV0YT8ubWFwKHMgPT4gYCR7cy5maWVsZH0ke3Mub3JkZXIgPT09IDEgPyAnJyA6ICc6ZGVzYyd9YCkuam9pbignLCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgaW4gZXZlbnQuZmlsdGVycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByaW1lT3BlcmF0b3IgPSBldmVudC5maWx0ZXJzW2ZpZWxkXS5tYXRjaE1vZGU7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZlbnQuZmlsdGVyc1tmaWVsZF0udmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3JNYXBwaW5nID0gcHJpbWVPcGVyYXRvciA/IE1lZGl1c1Jlc3RVdGlsLmdldE1hcHBpbmcocHJpbWVPcGVyYXRvciwgdW5kZWZpbmVkLCAwKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3JNYXBwaW5nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvQWRkRmlsdGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYCcke3ZhbHVlfSdgO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9BZGRGaWx0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvQWRkRmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9BZGRGaWx0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqb2luZWRWYWx1ZSA9IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgcXVlcnkgcGFyYW1zLCBhbHdheXMgY29udmVydCB0byBpc28gc3RyaW5nLCBjb3JyZWN0IHRyYW5zZm9ybWF0aW9uIHdpbGwgYmUgZG9uZSBsYXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYFske2pvaW5lZFZhbHVlfV1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9BZGRGaWx0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHF1ZXJ5IHBhcmFtcywgYWx3YXlzIGNvbnZlcnQgdG8gaXNvIHN0cmluZywgY29ycmVjdCB0cmFuc2Zvcm1hdGlvbiB3aWxsIGJlIGRvbmUgbGF0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvQWRkRmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb0FkZEZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKGAke2ZpZWxkfToke29wZXJhdG9yTWFwcGluZ1sxXX06JHt2YWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNbJ2ZpbHRlciddID0gZmlsdGVycy5qb2luKCc7Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbW9kaWZ5RmlsdGVyUHJvcGVydGllcyhtZWRpdXNRdWVyeVBhcmFtczogTWVkaXVzUXVlcnlQYXJhbSwgZmlsdGVyRGVzY3JpcHRvcnM6IEFycmF5PEZpbHRlckRlc2NyaXB0b3I8YW55Pj4pIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWx0ZXJQYXJhbSBvZiBtZWRpdXNRdWVyeVBhcmFtcy5maWx0ZXJQYXJhbXMgPz8gW10pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckRlc2NyaXB0b3IgPSBmaWx0ZXJEZXNjcmlwdG9ycy5maW5kKGYgPT4gZi5wcm9wZXJ0eSA9PT0gZmlsdGVyUGFyYW0ucHJvcGVydHkpO1xuICAgICAgICAgICAgZmlsdGVyUGFyYW0ucHJvcGVydHkgPSBmaWx0ZXJEZXNjcmlwdG9yPy5maWx0ZXJQcm9wZXJ0eSA/PyBmaWx0ZXJQYXJhbS5wcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJEZXNjcmlwdG9yPy5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtLmZpbHRlck1hdGNoVHlwZSA9PT0gTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkVxdWFscykge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IGRhdGUgZXF1YWxzIGZpbHRlciB0byBkYXRlIHJhbmdlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckRhdGUgPSBmaWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZSBhcyBEYXRlO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKGZpbHRlckRhdGUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoc3RhcnREYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS5zZXRIb3VycyhzdGFydERhdGUuZ2V0SG91cnMoKSwgc3RhcnREYXRlLmdldE1pbnV0ZXMoKSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlLnNldEhvdXJzKGVuZERhdGUuZ2V0SG91cnMoKSwgZW5kRGF0ZS5nZXRNaW51dGVzKCkgKyAxLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtLmZpbHRlck1hdGNoVHlwZSA9IE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Gcm9tVG87XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtLmZpbHRlclZhbHVlID0gc3RhcnREYXRlO1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZVRvID0gZW5kRGF0ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm0gZGF0ZXMgdG8gY29ycmVjdCBpc28gc3RyaW5nXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyUGFyYW0uZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZSA9IGZpbHRlclBhcmFtLmZpbHRlclZhbHVlLm1hcCh2ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVV0aWwudG9Jc29TdHJpbmcodiwgZmlsdGVyRGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVJblV0YywgZmlsdGVyRGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVXaXRoVGltZXpvbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW0uZmlsdGVyVmFsdWUgPSBEYXRlVXRpbC50b0lzb1N0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJEZXNjcmlwdG9yLmRhdGVQaWNrZXJWYWx1ZUluVXRjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckRlc2NyaXB0b3IuZGF0ZVBpY2tlclZhbHVlV2l0aFRpbWV6b25lXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmlsdGVyUGFyYW0uZmlsdGVyVmFsdWVUbyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyUGFyYW0uZmlsdGVyVmFsdWVUbykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtLmZpbHRlclZhbHVlVG8gPSBmaWx0ZXJQYXJhbS5maWx0ZXJWYWx1ZVRvLm1hcCh2ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVV0aWwudG9Jc29TdHJpbmcodiwgZmlsdGVyRGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVJblV0YywgZmlsdGVyRGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVXaXRoVGltZXpvbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW0uZmlsdGVyVmFsdWVUbyA9IERhdGVVdGlsLnRvSXNvU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtLmZpbHRlclZhbHVlVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyRGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVJblV0YyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJEZXNjcmlwdG9yLmRhdGVQaWNrZXJWYWx1ZVdpdGhUaW1lem9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVByaW1lTGF6eUxvYWRFdmVudFRvTWVkaXVzUXVlcnlQYXJhbXMoZXZlbnQ6IExhenlMb2FkRXZlbnQpOiBNZWRpdXNRdWVyeVBhcmFtIHtcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoZXZlbnQucm93cywgZXZlbnQuZmlyc3QpO1xuXG4gICAgICAgIC8vIGFwcGx5IHNvcnRpbmdcbiAgICAgICAgaWYgKGV2ZW50Lm11bHRpU29ydE1ldGEpIHtcbiAgICAgICAgICAgIGV2ZW50Lm11bHRpU29ydE1ldGEuZm9yRWFjaChtc20gPT4gcXVlcnlQYXJhbUJ1aWxkZXIud2l0aFNvcnQobXNtLmZpZWxkLCBtc20ub3JkZXIgPT09IDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFwcGx5IGZpbHRlcmluZ1xuICAgICAgICBpZiAoZXZlbnQuZmlsdGVycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZXZlbnQuZmlsdGVycykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJFdmVudCA9IGV2ZW50LmZpbHRlcnNba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJFdmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgKGZpbHRlckV2ZW50IGFzIEZpbHRlck1ldGFkYXRhW10pLmZpbHRlcihlID0+IGUudmFsdWUpLmZvckVhY2goZSA9PiBNZWRpdXNSZXN0VXRpbC5hZGRNZWRpdXNGaWx0ZXJGcm9tUHJpbWVGaWx0ZXJNZXRhZGF0YShxdWVyeVBhcmFtQnVpbGRlciwga2V5LCBlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyRXZlbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJFdmVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgTWVkaXVzUmVzdFV0aWwuYWRkTWVkaXVzRmlsdGVyRnJvbVByaW1lRmlsdGVyTWV0YWRhdGEocXVlcnlQYXJhbUJ1aWxkZXIsIGtleSwgZmlsdGVyRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1CdWlsZGVyLmJ1aWxkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRNZWRpdXNGaWx0ZXJGcm9tUHJpbWVGaWx0ZXJNZXRhZGF0YShxdWVyeVBhcmFtQnVpbGRlcjogTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIsIHByb3BlcnR5OiBzdHJpbmcsIGZpbHRlck1ldGFkYXRhOiBGaWx0ZXJNZXRhZGF0YSkge1xuICAgICAgICBjb25zdCBtYXRjaFR5cGU6IE1lZGl1c0ZpbHRlck1hdGNoVHlwZSA9IE1lZGl1c1Jlc3RVdGlsLmdldE1lZGl1c0ZpbHRlck1hdGNoVHlwZUZyb21QcmltZU1hdGNoTW9kZShmaWx0ZXJNZXRhZGF0YS5tYXRjaE1vZGUgPz8gJ2VxdWFscycpO1xuICAgICAgICBxdWVyeVBhcmFtQnVpbGRlci53aXRoRmlsdGVyKHByb3BlcnR5LCBmaWx0ZXJNZXRhZGF0YS52YWx1ZSwgdW5kZWZpbmVkLCBtYXRjaFR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWVkaXVzRmlsdGVyTWF0Y2hUeXBlRnJvbVByaW1lTWF0Y2hNb2RlKG1hdGNoTW9kZTogc3RyaW5nLCBkYXRhVHlwZT86IEZpbHRlclR5cGVFbnVtKTogTWVkaXVzRmlsdGVyTWF0Y2hUeXBlIHtcbiAgICAgICAgcmV0dXJuIE1lZGl1c1Jlc3RVdGlsLmdldE1hcHBpbmcobWF0Y2hNb2RlLCBkYXRhVHlwZSk/LlsyXSA/PyBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRXF1YWxzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWFwcGluZyhtYXRjaE1vZGU6IHN0cmluZywgZGF0YVR5cGU/OiBGaWx0ZXJUeXBlRW51bSwgaWR4ID0gMCk6IE1hdGNoTW9kZU1hcFR5cGUgfCBudWxsIHtcbiAgICAgICAgY29uc3QgbWFwcGluZ3MgPSBNZWRpdXNSZXN0VXRpbC5tYXRjaE1vZGVNYXBwaW5nLmZpbHRlcihtID0+IG1baWR4XSA9PT0gbWF0Y2hNb2RlICYmICghZGF0YVR5cGUgfHwgIW1bM10gfHwgZGF0YVR5cGUgPT09IG1bM10pKTtcbiAgICAgICAgaWYgKG1hcHBpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAobWFwcGluZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGluZ3NbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGluZ3Muc29ydCgobTEsIG0yKSA9PiAobTJbM10gPz8gLTEpIC0gKG0xWzNdID8/IC0xKSlbMF07XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=