@sapphire-ion/framework 1.2.63 → 1.3.2

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 (498) hide show
  1. package/build.ps1 +39 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +43 -47
  4. package/src/lib/classes/comparison/comparison-operator.ts +17 -0
  5. package/src/lib/classes/comparison/comparison-value-type.ts +34 -0
  6. package/src/lib/classes/comparison/comparison.ts +45 -0
  7. package/src/lib/classes/comparison/properties/bool-property.ts +16 -0
  8. package/src/lib/classes/comparison/properties/date-property.ts +28 -0
  9. package/src/lib/classes/comparison/properties/datetime-property.ts +28 -0
  10. package/src/lib/classes/comparison/properties/decimal-property.ts +28 -0
  11. package/src/lib/classes/comparison/properties/enum-property.ts +28 -0
  12. package/src/lib/classes/comparison/properties/implicit-property.ts +13 -0
  13. package/src/lib/classes/comparison/properties/int-property.ts +28 -0
  14. package/src/lib/classes/comparison/properties/long-property.ts +28 -0
  15. package/src/lib/classes/comparison/properties/string-property.ts +16 -0
  16. package/src/lib/classes/comparison/properties/time-property.ts +28 -0
  17. package/{lib/classes/credentials.d.ts → src/lib/classes/credentials.ts} +5 -5
  18. package/src/lib/classes/environment.ts +37 -0
  19. package/src/lib/classes/filters/view-filtros.ts +18 -0
  20. package/src/lib/classes/infinite-scroll.ts +112 -0
  21. package/src/lib/classes/inputs/table-field-form-builder.ts +12 -0
  22. package/src/lib/classes/inputs/table-field.ts +62 -0
  23. package/src/lib/classes/page-option.ts +8 -0
  24. package/src/lib/classes/routes/default-routing-factory.ts +24 -0
  25. package/src/lib/classes/routes/id-preloader-configuration.ts +21 -0
  26. package/src/lib/classes/routes/route-data.ts +9 -0
  27. package/src/lib/components/carousel/carousel-image/carousel-image.component.html +4 -0
  28. package/src/lib/components/carousel/carousel-image/carousel-image.component.ts +15 -0
  29. package/src/lib/components/carousel/carousel-item/carousel-item.component.html +3 -0
  30. package/src/lib/components/carousel/carousel-item/carousel-item.component.ts +14 -0
  31. package/src/lib/components/carousel/carousel.component.html +22 -0
  32. package/src/lib/components/carousel/carousel.component.ts +83 -0
  33. package/src/lib/components/carousel/carousel.module.ts +20 -0
  34. package/src/lib/components/carousel/i-carousel-item.component.ts +8 -0
  35. package/src/lib/components/content-block/content-block.component.html +6 -0
  36. package/src/lib/components/content-block/content-block.component.ts +25 -0
  37. package/src/lib/components/default/default-list/abstract-list.ts +56 -0
  38. package/src/lib/components/default/default-list/default-list.component.html +60 -0
  39. package/src/lib/components/default/default-list/default-list.component.ts +72 -0
  40. package/src/lib/components/default/default-list/header-list/header-list.component.html +32 -0
  41. package/src/lib/components/default/default-list/header-list/header-list.component.ts +85 -0
  42. package/src/lib/components/default/default-list/list.ts +127 -0
  43. package/src/lib/components/default/default-pagination/default-pagination.component.html +52 -0
  44. package/src/lib/components/default/default-pagination/default-pagination.component.ts +118 -0
  45. package/src/lib/components/default/default-table/default-table.component.html +104 -0
  46. package/src/lib/components/default/default-table/default-table.component.ts +255 -0
  47. package/src/lib/components/default/default-table/th-filter/th-filter.component.html +69 -0
  48. package/src/lib/components/default/default-table/th-filter/th-filter.component.ts +205 -0
  49. package/src/lib/components/default/default-view/abstract-view.ts +25 -0
  50. package/src/lib/components/default/default-view/default-view.component.html +111 -0
  51. package/src/lib/components/default/default-view/default-view.component.ts +56 -0
  52. package/src/lib/components/default/default-view/header-view/header-view.component.html +64 -0
  53. package/src/lib/components/default/default-view/header-view/header-view.component.ts +62 -0
  54. package/src/lib/components/default/default-view/view.ts +195 -0
  55. package/src/lib/components/default/default.module.ts +61 -0
  56. package/src/lib/components/default-page/default.page.html +63 -0
  57. package/src/lib/components/default-page/default.page.ts +84 -0
  58. package/src/lib/components/drag-drop-file/drag-drop-file.directive.ts +44 -0
  59. package/src/lib/components/drag-drop-file/drag-drop-file.module.ts +21 -0
  60. package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html +5 -0
  61. package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts +17 -0
  62. package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html +12 -0
  63. package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts +35 -0
  64. package/src/lib/components/drawer/drawer-group/drawer-group.component.html +79 -0
  65. package/src/lib/components/drawer/drawer-group/drawer-group.component.ts +49 -0
  66. package/src/lib/components/drawer/drawer.component.html +120 -0
  67. package/src/lib/components/drawer/drawer.component.ts +157 -0
  68. package/src/lib/components/drawer/menu.ts +20 -0
  69. package/src/lib/components/filter/filter.component.html +43 -0
  70. package/src/lib/components/filter/filter.component.ts +141 -0
  71. package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html +35 -0
  72. package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts +19 -0
  73. package/src/lib/components/image/image.component.html +17 -0
  74. package/src/lib/components/image/image.component.ts +95 -0
  75. package/src/lib/components/info-popover/info-popover.component.html +23 -0
  76. package/src/lib/components/info-popover/info-popover.component.ts +75 -0
  77. package/src/lib/components/inputs/custom-input.ts +94 -0
  78. package/src/lib/components/inputs/input-bool/input-bool.component.html +26 -0
  79. package/src/lib/components/inputs/input-bool/input-bool.component.ts +39 -0
  80. package/src/lib/components/inputs/input-bool/input-bool.configuration.ts +14 -0
  81. package/src/lib/components/inputs/input-cep/input-cep.component.html +27 -0
  82. package/src/lib/components/inputs/input-cep/input-cep.component.ts +41 -0
  83. package/src/lib/components/inputs/input-cep/input-cep.configuration.ts +4 -0
  84. package/src/lib/components/inputs/input-color/input-color.component.html +79 -0
  85. package/src/lib/components/inputs/input-color/input-color.component.ts +544 -0
  86. package/{lib/components/inputs/input-configuration.d.ts → src/lib/components/inputs/input-configuration.ts} +23 -10
  87. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html +28 -0
  88. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts +99 -0
  89. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.ts +4 -0
  90. package/src/lib/components/inputs/input-date/input-date.component.html +89 -0
  91. package/src/lib/components/inputs/input-date/input-date.component.ts +269 -0
  92. package/src/lib/components/inputs/input-date/input-date.configuration.ts +8 -0
  93. package/src/lib/components/inputs/input-decimal/input-decimal.component.html +32 -0
  94. package/src/lib/components/inputs/input-decimal/input-decimal.component.ts +283 -0
  95. package/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts +47 -0
  96. package/src/lib/components/inputs/input-default-configurations.ts +15 -0
  97. package/src/lib/components/inputs/input-file/download-button/download-button.component.html +56 -0
  98. package/src/lib/components/inputs/input-file/download-button/download-button.component.ts +91 -0
  99. package/src/lib/components/inputs/input-file/input-file.component.html +56 -0
  100. package/src/lib/components/inputs/input-file/input-file.component.ts +97 -0
  101. package/src/lib/components/inputs/input-file/input-file.configuration.ts +25 -0
  102. package/src/lib/components/inputs/input-icon/fluenticons.ts +3733 -0
  103. package/src/lib/components/inputs/input-icon/input-icon.component.html +8 -0
  104. package/src/lib/components/inputs/input-icon/input-icon.component.ts +52 -0
  105. package/src/lib/components/inputs/input-icon/ionicons.ts +1359 -0
  106. package/src/lib/components/inputs/input-provider-factory.ts +12 -0
  107. package/src/lib/components/inputs/input-select/directives/sion-label-template.directive.ts +19 -0
  108. package/src/lib/components/inputs/input-select/directives/sion-option-template.directive.ts +16 -0
  109. package/src/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.ts +19 -0
  110. package/src/lib/components/inputs/input-select/input-select.component.html +176 -0
  111. package/src/lib/components/inputs/input-select/input-select.component.ts +366 -0
  112. package/src/lib/components/inputs/input-select/input.select.configuration.ts +300 -0
  113. package/src/lib/components/inputs/input-string/input-string.component.html +27 -0
  114. package/src/lib/components/inputs/input-string/input-string.component.ts +31 -0
  115. package/src/lib/components/inputs/input-string/input-string.configuration.ts +20 -0
  116. package/src/lib/components/inputs/input-telefone/input-telefone.component.html +29 -0
  117. package/src/lib/components/inputs/input-telefone/input-telefone.component.ts +63 -0
  118. package/src/lib/components/inputs/input-telefone/input-telefone.configuration.ts +8 -0
  119. package/src/lib/components/inputs/input-textarea/input-textarea.component.html +27 -0
  120. package/src/lib/components/inputs/input-textarea/input-textarea.component.ts +75 -0
  121. package/src/lib/components/inputs/input-textarea/input-textarea.configuration.ts +7 -0
  122. package/src/lib/components/inputs/input-type.ts +22 -0
  123. package/src/lib/components/inputs/input-validators.ts +111 -0
  124. package/src/lib/components/inputs/inputs.module.ts +74 -0
  125. package/src/lib/components/loading/loading.component.html +28 -0
  126. package/src/lib/components/loading/loading.component.ts +29 -0
  127. package/src/lib/components/login/login-admin/login-admin.component.html +28 -0
  128. package/src/lib/components/login/login-admin/login-admin.component.ts +51 -0
  129. package/src/lib/components/login/login.component.html +104 -0
  130. package/src/lib/components/login/login.component.ts +96 -0
  131. package/src/lib/components/main-content/main-content.component.html +145 -0
  132. package/src/lib/components/main-content/main-content.component.ts +93 -0
  133. package/src/lib/components/popover/sion-popover/sion-popover.component.html +21 -0
  134. package/src/lib/components/popover/sion-popover/sion-popover.component.ts +182 -0
  135. package/src/lib/components/popover/sion-popover.module.ts +12 -0
  136. package/src/lib/components/sion-card/sion-card.component.html +12 -0
  137. package/src/lib/components/sion-card/sion-card.component.ts +23 -0
  138. package/src/lib/components/stepper/step/step.component.html +11 -0
  139. package/src/lib/components/stepper/step/step.component.ts +44 -0
  140. package/src/lib/components/stepper/stepper.component.html +3 -0
  141. package/src/lib/components/stepper/stepper.component.ts +37 -0
  142. package/src/lib/components/stepper/stepper.module.ts +15 -0
  143. package/src/lib/components/tabs/tab/tab.component.html +8 -0
  144. package/src/lib/components/tabs/tab/tab.component.ts +28 -0
  145. package/src/lib/components/tabs/tabs/tabs.component.html +14 -0
  146. package/src/lib/components/tabs/tabs/tabs.component.ts +42 -0
  147. package/src/lib/components/tabs/tabs.module.ts +15 -0
  148. package/src/lib/components/text-tooltip/text-tooltip.component.html +8 -0
  149. package/src/lib/components/text-tooltip/text-tooltip.component.scss +0 -0
  150. package/src/lib/components/text-tooltip/text-tooltip.component.ts +45 -0
  151. package/src/lib/components/tooltip/tooltip.component.html +53 -0
  152. package/src/lib/components/tooltip/tooltip.component.ts +16 -0
  153. package/src/lib/core.module.ts +29 -0
  154. package/src/lib/directives/ng-var.directive.ts +26 -0
  155. package/src/lib/guards/auth.guard.ts +19 -0
  156. package/src/lib/guards/error.interceptor.ts +108 -0
  157. package/src/lib/guards/token.interceptor.ts +28 -0
  158. package/src/lib/index.ts +191 -0
  159. package/src/lib/pipes/secure.pipe.ts +39 -0
  160. package/src/lib/services/auth.service.ts +150 -0
  161. package/src/lib/services/crypto.service.ts +164 -0
  162. package/src/lib/services/environment.service.ts +17 -0
  163. package/src/lib/services/generic.service.ts +85 -0
  164. package/src/lib/services/modal-focus-trap.service.ts +65 -0
  165. package/src/lib/services/navigation-context.service.ts +121 -0
  166. package/src/lib/services/popover-focus-trap.service.ts +65 -0
  167. package/src/lib/services/route/route.cache.service.ts +17 -0
  168. package/src/lib/services/route/route.provider.service.ts +49 -0
  169. package/src/lib/services/usuario.service.ts +44 -0
  170. package/src/lib/services/utils.service.ts +216 -0
  171. package/src/lib/services/web/api-url-provider.service.ts +48 -0
  172. package/src/lib/services/web/http.ativo.service.ts +37 -0
  173. package/src/lib/services/web/http.service.ts +206 -0
  174. package/src/lib/services/web/storage.service.ts +210 -0
  175. package/src/public-api.ts +5 -0
  176. package/tailwind.config.js +27 -0
  177. package/tsconfig.lib.json +29 -0
  178. package/tsconfig.lib.prod.json +23 -0
  179. package/tsconfig.spec.json +27 -0
  180. package/esm2022/lib/classes/comparison/comparison-operator.mjs +0 -18
  181. package/esm2022/lib/classes/comparison/comparison-value-type.mjs +0 -25
  182. package/esm2022/lib/classes/comparison/comparison.mjs +0 -41
  183. package/esm2022/lib/classes/comparison/properties/bool-property.mjs +0 -15
  184. package/esm2022/lib/classes/comparison/properties/date-property.mjs +0 -27
  185. package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +0 -27
  186. package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +0 -27
  187. package/esm2022/lib/classes/comparison/properties/enum-property.mjs +0 -27
  188. package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +0 -12
  189. package/esm2022/lib/classes/comparison/properties/int-property.mjs +0 -27
  190. package/esm2022/lib/classes/comparison/properties/long-property.mjs +0 -27
  191. package/esm2022/lib/classes/comparison/properties/string-property.mjs +0 -15
  192. package/esm2022/lib/classes/comparison/properties/time-property.mjs +0 -27
  193. package/esm2022/lib/classes/credentials.mjs +0 -2
  194. package/esm2022/lib/classes/environment.mjs +0 -34
  195. package/esm2022/lib/classes/filters/view-filtros.mjs +0 -18
  196. package/esm2022/lib/classes/infinite-scroll.mjs +0 -90
  197. package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +0 -10
  198. package/esm2022/lib/classes/inputs/table-field.mjs +0 -79
  199. package/esm2022/lib/classes/page-option.mjs +0 -2
  200. package/esm2022/lib/classes/routes/default-routing-factory.mjs +0 -23
  201. package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +0 -22
  202. package/esm2022/lib/classes/routes/route-data.mjs +0 -9
  203. package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +0 -18
  204. package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +0 -15
  205. package/esm2022/lib/components/carousel/carousel.component.mjs +0 -79
  206. package/esm2022/lib/components/carousel/carousel.module.mjs +0 -31
  207. package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +0 -16
  208. package/esm2022/lib/components/content-block/content-block.component.mjs +0 -27
  209. package/esm2022/lib/components/default/default-list/abstract-list.mjs +0 -49
  210. package/esm2022/lib/components/default/default-list/default-list.component.mjs +0 -95
  211. package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +0 -98
  212. package/esm2022/lib/components/default/default-list/list.mjs +0 -120
  213. package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +0 -123
  214. package/esm2022/lib/components/default/default-table/default-table.component.mjs +0 -216
  215. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +0 -212
  216. package/esm2022/lib/components/default/default-view/abstract-view.mjs +0 -22
  217. package/esm2022/lib/components/default/default-view/default-view.component.mjs +0 -76
  218. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +0 -81
  219. package/esm2022/lib/components/default/default-view/view.mjs +0 -198
  220. package/esm2022/lib/components/default/default.module.mjs +0 -98
  221. package/esm2022/lib/components/default-page/default.page.mjs +0 -75
  222. package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +0 -60
  223. package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +0 -31
  224. package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +0 -15
  225. package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +0 -34
  226. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +0 -52
  227. package/esm2022/lib/components/drawer/drawer.component.mjs +0 -156
  228. package/esm2022/lib/components/drawer/menu.mjs +0 -15
  229. package/esm2022/lib/components/filter/filter.component.mjs +0 -145
  230. package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +0 -17
  231. package/esm2022/lib/components/image/image.component.mjs +0 -91
  232. package/esm2022/lib/components/info-popover/info-popover.component.mjs +0 -91
  233. package/esm2022/lib/components/inputs/custom-input.mjs +0 -85
  234. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +0 -46
  235. package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +0 -16
  236. package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +0 -50
  237. package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +0 -4
  238. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +0 -481
  239. package/esm2022/lib/components/inputs/input-configuration.mjs +0 -2
  240. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +0 -116
  241. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +0 -6
  242. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +0 -263
  243. package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +0 -11
  244. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +0 -276
  245. package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +0 -50
  246. package/esm2022/lib/components/inputs/input-default-configurations.mjs +0 -14
  247. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +0 -102
  248. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +0 -100
  249. package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +0 -24
  250. package/esm2022/lib/components/inputs/input-icon/fluenticons.mjs +0 -3734
  251. package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +0 -60
  252. package/esm2022/lib/components/inputs/input-icon/ionicons.mjs +0 -1360
  253. package/esm2022/lib/components/inputs/input-provider-factory.mjs +0 -12
  254. package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +0 -16
  255. package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +0 -16
  256. package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +0 -16
  257. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +0 -376
  258. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +0 -233
  259. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +0 -41
  260. package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +0 -20
  261. package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +0 -74
  262. package/esm2022/lib/components/inputs/input-telefone/input-telefone.configuration.mjs +0 -12
  263. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +0 -82
  264. package/esm2022/lib/components/inputs/input-textarea/input-textarea.configuration.mjs +0 -7
  265. package/esm2022/lib/components/inputs/input-type.mjs +0 -24
  266. package/esm2022/lib/components/inputs/input-validators.mjs +0 -121
  267. package/esm2022/lib/components/inputs/inputs.module.mjs +0 -133
  268. package/esm2022/lib/components/loading/loading.component.mjs +0 -34
  269. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +0 -52
  270. package/esm2022/lib/components/login/login.component.mjs +0 -99
  271. package/esm2022/lib/components/main-content/main-content.component.mjs +0 -100
  272. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +0 -182
  273. package/esm2022/lib/components/popover/sion-popover.module.mjs +0 -21
  274. package/esm2022/lib/components/sion-card/sion-card.component.mjs +0 -26
  275. package/esm2022/lib/components/stepper/step/step.component.mjs +0 -43
  276. package/esm2022/lib/components/stepper/stepper.component.mjs +0 -36
  277. package/esm2022/lib/components/stepper/stepper.module.mjs +0 -25
  278. package/esm2022/lib/components/tabs/tab/tab.component.mjs +0 -41
  279. package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +0 -56
  280. package/esm2022/lib/components/tabs/tabs.module.mjs +0 -22
  281. package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +0 -51
  282. package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -21
  283. package/esm2022/lib/core.module.mjs +0 -38
  284. package/esm2022/lib/directives/ng-var.directive.mjs +0 -29
  285. package/esm2022/lib/guards/auth.guard.mjs +0 -26
  286. package/esm2022/lib/guards/error.interceptor.mjs +0 -107
  287. package/esm2022/lib/guards/token.interceptor.mjs +0 -25
  288. package/esm2022/lib/index.mjs +0 -188
  289. package/esm2022/lib/pipes/secure.pipe.mjs +0 -42
  290. package/esm2022/lib/services/auth.service.mjs +0 -146
  291. package/esm2022/lib/services/environment.service.mjs +0 -26
  292. package/esm2022/lib/services/generic.service.mjs +0 -84
  293. package/esm2022/lib/services/modal-focus-trap.service.mjs +0 -62
  294. package/esm2022/lib/services/navigation-context.service.mjs +0 -111
  295. package/esm2022/lib/services/popover-focus-trap.service.mjs +0 -62
  296. package/esm2022/lib/services/route/route.cache.service.mjs +0 -15
  297. package/esm2022/lib/services/route/route.provider.service.mjs +0 -42
  298. package/esm2022/lib/services/usuario.service.mjs +0 -49
  299. package/esm2022/lib/services/utils.service.mjs +0 -190
  300. package/esm2022/lib/services/web/api-url-provider.service.mjs +0 -29
  301. package/esm2022/lib/services/web/http.ativo.service.mjs +0 -37
  302. package/esm2022/lib/services/web/http.service.mjs +0 -184
  303. package/esm2022/lib/services/web/storage.service.mjs +0 -186
  304. package/esm2022/public-api.mjs +0 -5
  305. package/esm2022/sapphire-ion-framework.mjs +0 -5
  306. package/fesm2022/sapphire-ion-framework.mjs +0 -12491
  307. package/fesm2022/sapphire-ion-framework.mjs.map +0 -1
  308. package/index.d.ts +0 -5
  309. package/lib/classes/comparison/comparison-operator.d.ts +0 -9
  310. package/lib/classes/comparison/comparison-value-type.d.ts +0 -23
  311. package/lib/classes/comparison/comparison.d.ts +0 -25
  312. package/lib/classes/comparison/properties/bool-property.d.ts +0 -7
  313. package/lib/classes/comparison/properties/date-property.d.ts +0 -11
  314. package/lib/classes/comparison/properties/datetime-property.d.ts +0 -11
  315. package/lib/classes/comparison/properties/decimal-property.d.ts +0 -11
  316. package/lib/classes/comparison/properties/enum-property.d.ts +0 -11
  317. package/lib/classes/comparison/properties/implicit-property.d.ts +0 -6
  318. package/lib/classes/comparison/properties/int-property.d.ts +0 -11
  319. package/lib/classes/comparison/properties/long-property.d.ts +0 -11
  320. package/lib/classes/comparison/properties/string-property.d.ts +0 -7
  321. package/lib/classes/comparison/properties/time-property.d.ts +0 -11
  322. package/lib/classes/environment.d.ts +0 -14
  323. package/lib/classes/filters/view-filtros.d.ts +0 -10
  324. package/lib/classes/infinite-scroll.d.ts +0 -26
  325. package/lib/classes/inputs/table-field-form-builder.d.ts +0 -5
  326. package/lib/classes/inputs/table-field.d.ts +0 -20
  327. package/lib/classes/page-option.d.ts +0 -7
  328. package/lib/classes/routes/default-routing-factory.d.ts +0 -8
  329. package/lib/classes/routes/id-preloader-configuration.d.ts +0 -28
  330. package/lib/classes/routes/route-data.d.ts +0 -5
  331. package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +0 -10
  332. package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +0 -9
  333. package/lib/components/carousel/carousel.component.d.ts +0 -32
  334. package/lib/components/carousel/carousel.module.d.ts +0 -12
  335. package/lib/components/carousel/i-carousel-item.component.d.ts +0 -9
  336. package/lib/components/content-block/content-block.component.d.ts +0 -15
  337. package/lib/components/default/default-list/abstract-list.d.ts +0 -21
  338. package/lib/components/default/default-list/default-list.component.d.ts +0 -47
  339. package/lib/components/default/default-list/header-list/header-list.component.d.ts +0 -45
  340. package/lib/components/default/default-list/list.d.ts +0 -40
  341. package/lib/components/default/default-pagination/default-pagination.component.d.ts +0 -36
  342. package/lib/components/default/default-table/default-table.component.d.ts +0 -90
  343. package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +0 -23
  344. package/lib/components/default/default-view/abstract-view.d.ts +0 -18
  345. package/lib/components/default/default-view/default-view.component.d.ts +0 -40
  346. package/lib/components/default/default-view/header-view/header-view.component.d.ts +0 -36
  347. package/lib/components/default/default-view/view.d.ts +0 -67
  348. package/lib/components/default/default.module.d.ts +0 -31
  349. package/lib/components/default-page/default.page.d.ts +0 -35
  350. package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +0 -14
  351. package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +0 -10
  352. package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +0 -9
  353. package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +0 -13
  354. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +0 -22
  355. package/lib/components/drawer/drawer.component.d.ts +0 -31
  356. package/lib/components/drawer/menu.d.ts +0 -9
  357. package/lib/components/filter/filter.component.d.ts +0 -29
  358. package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +0 -8
  359. package/lib/components/image/image.component.d.ts +0 -23
  360. package/lib/components/info-popover/info-popover.component.d.ts +0 -15
  361. package/lib/components/inputs/custom-input.d.ts +0 -40
  362. package/lib/components/inputs/input-bool/input-bool.component.d.ts +0 -16
  363. package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +0 -17
  364. package/lib/components/inputs/input-cep/input-cep.component.d.ts +0 -18
  365. package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +0 -3
  366. package/lib/components/inputs/input-color/input-color.component.d.ts +0 -77
  367. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +0 -19
  368. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +0 -5
  369. package/lib/components/inputs/input-date/input-date.component.d.ts +0 -61
  370. package/lib/components/inputs/input-date/input-date.configuration.d.ts +0 -11
  371. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +0 -27
  372. package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +0 -28
  373. package/lib/components/inputs/input-default-configurations.d.ts +0 -13
  374. package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +0 -40
  375. package/lib/components/inputs/input-file/input-file.component.d.ts +0 -28
  376. package/lib/components/inputs/input-file/input-file.configuration.d.ts +0 -8
  377. package/lib/components/inputs/input-icon/fluenticons.d.ts +0 -1
  378. package/lib/components/inputs/input-icon/input-icon.component.d.ts +0 -20
  379. package/lib/components/inputs/input-icon/ionicons.d.ts +0 -1
  380. package/lib/components/inputs/input-provider-factory.d.ts +0 -4
  381. package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +0 -18
  382. package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +0 -14
  383. package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +0 -18
  384. package/lib/components/inputs/input-select/input-select.component.d.ts +0 -83
  385. package/lib/components/inputs/input-select/input.select.configuration.d.ts +0 -127
  386. package/lib/components/inputs/input-string/input-string.component.d.ts +0 -14
  387. package/lib/components/inputs/input-string/input-string.configuration.d.ts +0 -15
  388. package/lib/components/inputs/input-telefone/input-telefone.component.d.ts +0 -19
  389. package/lib/components/inputs/input-telefone/input-telefone.configuration.d.ts +0 -9
  390. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +0 -17
  391. package/lib/components/inputs/input-textarea/input-textarea.configuration.d.ts +0 -4
  392. package/lib/components/inputs/input-type.d.ts +0 -22
  393. package/lib/components/inputs/input-validators.d.ts +0 -25
  394. package/lib/components/inputs/inputs.module.d.ts +0 -33
  395. package/lib/components/loading/loading.component.d.ts +0 -18
  396. package/lib/components/login/login-admin/login-admin.component.d.ts +0 -20
  397. package/lib/components/login/login.component.d.ts +0 -29
  398. package/lib/components/main-content/main-content.component.d.ts +0 -27
  399. package/lib/components/popover/sion-popover/sion-popover.component.d.ts +0 -43
  400. package/lib/components/popover/sion-popover.module.d.ts +0 -9
  401. package/lib/components/sion-card/sion-card.component.d.ts +0 -11
  402. package/lib/components/stepper/step/step.component.d.ts +0 -15
  403. package/lib/components/stepper/stepper.component.d.ts +0 -14
  404. package/lib/components/stepper/stepper.module.d.ts +0 -10
  405. package/lib/components/tabs/tab/tab.component.d.ts +0 -19
  406. package/lib/components/tabs/tabs/tabs.component.d.ts +0 -18
  407. package/lib/components/tabs/tabs.module.d.ts +0 -12
  408. package/lib/components/text-tooltip/text-tooltip.component.d.ts +0 -16
  409. package/lib/components/tooltip/tooltip.component.d.ts +0 -7
  410. package/lib/core.module.d.ts +0 -16
  411. package/lib/directives/ng-var.directive.d.ts +0 -12
  412. package/lib/guards/auth.guard.d.ts +0 -11
  413. package/lib/guards/error.interceptor.d.ts +0 -32
  414. package/lib/guards/token.interceptor.d.ts +0 -11
  415. package/lib/index.d.ts +0 -118
  416. package/lib/pipes/secure.pipe.d.ts +0 -15
  417. package/lib/services/auth.service.d.ts +0 -47
  418. package/lib/services/environment.service.d.ts +0 -10
  419. package/lib/services/generic.service.d.ts +0 -22
  420. package/lib/services/modal-focus-trap.service.d.ts +0 -13
  421. package/lib/services/navigation-context.service.d.ts +0 -14
  422. package/lib/services/popover-focus-trap.service.d.ts +0 -13
  423. package/lib/services/route/route.cache.service.d.ts +0 -7
  424. package/lib/services/route/route.provider.service.d.ts +0 -13
  425. package/lib/services/usuario.service.d.ts +0 -21
  426. package/lib/services/utils.service.d.ts +0 -53
  427. package/lib/services/web/api-url-provider.service.d.ts +0 -13
  428. package/lib/services/web/http.ativo.service.d.ts +0 -20
  429. package/lib/services/web/http.service.d.ts +0 -59
  430. package/lib/services/web/storage.service.d.ts +0 -46
  431. package/public-api.d.ts +0 -1
  432. /package/{themes → src/lib}/compiled-styles.scss +0 -0
  433. /package/{themes → src/lib}/components/carousel/carousel-image/carousel-image.component.scss +0 -0
  434. /package/{themes → src/lib}/components/carousel/carousel-item/carousel-item.component.scss +0 -0
  435. /package/{themes → src/lib}/components/carousel/carousel.component.scss +0 -0
  436. /package/{themes → src/lib}/components/content-block/content-block.component.scss +0 -0
  437. /package/{themes → src/lib}/components/default/default-list/default-list.component.scss +0 -0
  438. /package/{themes → src/lib}/components/default/default-list/header-list/header-list.component.scss +0 -0
  439. /package/{themes → src/lib}/components/default/default-pagination/default-pagination.component.scss +0 -0
  440. /package/{themes → src/lib}/components/default/default-table/default-table.component.scss +0 -0
  441. /package/{themes → src/lib}/components/default/default-table/th-filter/th-filter.component.scss +0 -0
  442. /package/{themes → src/lib}/components/default/default-view/default-view.component.scss +0 -0
  443. /package/{themes → src/lib}/components/default/default-view/header-view/header-view.component.scss +0 -0
  444. /package/{themes → src/lib}/components/default-page/default.page.scss +0 -0
  445. /package/{themes → src/lib}/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +0 -0
  446. /package/{themes → src/lib}/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
  447. /package/{themes → src/lib}/components/drawer/drawer-group/drawer-group.component.scss +0 -0
  448. /package/{themes → src/lib}/components/drawer/drawer.component.scss +0 -0
  449. /package/{themes → src/lib}/components/filter/filter.component.scss +0 -0
  450. /package/{themes → src/lib}/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +0 -0
  451. /package/{themes → src/lib}/components/image/image.component.scss +0 -0
  452. /package/{themes → src/lib}/components/info-popover/info-popover.component.scss +0 -0
  453. /package/{themes → src/lib}/components/inputs/input-bool/input-bool.component.scss +0 -0
  454. /package/{themes → src/lib}/components/inputs/input-cep/input-cep.component.scss +0 -0
  455. /package/{themes → src/lib}/components/inputs/input-color/input-color.component.scss +0 -0
  456. /package/{themes/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss → src/lib/components/inputs/input-color/input-color.configuration.ts} +0 -0
  457. /package/{themes/components/inputs/input-icon/input-icon.component.scss → src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss} +0 -0
  458. /package/{themes → src/lib}/components/inputs/input-date/input-date.component.scss +0 -0
  459. /package/{themes → src/lib}/components/inputs/input-decimal/input-decimal.component.scss +0 -0
  460. /package/{themes → src/lib}/components/inputs/input-file/download-button/download-button.component.scss +0 -0
  461. /package/{themes → src/lib}/components/inputs/input-file/input-file.component.scss +0 -0
  462. /package/{themes/components/inputs/input-string/input-string.component.scss → src/lib/components/inputs/input-icon/input-icon.component.scss} +0 -0
  463. /package/{themes → src/lib}/components/inputs/input-select/input-select.component.scss +0 -0
  464. /package/{themes/components/inputs/input-telefone/input-telefone.component.scss → src/lib/components/inputs/input-string/input-string.component.scss} +0 -0
  465. /package/{themes/components/loading/loading.component.scss → src/lib/components/inputs/input-telefone/input-telefone.component.scss} +0 -0
  466. /package/{themes → src/lib}/components/inputs/input-textarea/input-textarea.component.scss +0 -0
  467. /package/{themes → src/lib}/components/inputs/inputs.scss +0 -0
  468. /package/{themes/components/sion-card/sion-card.component.scss → src/lib/components/loading/loading.component.scss} +0 -0
  469. /package/{themes → src/lib}/components/login/login-admin/login-admin.component.scss +0 -0
  470. /package/{themes → src/lib}/components/login/login.component.scss +0 -0
  471. /package/{themes → src/lib}/components/main-content/main-content.component.scss +0 -0
  472. /package/{themes → src/lib}/components/popover/sion-popover/sion-popover.component.scss +0 -0
  473. /package/{themes/components/stepper/stepper.component.scss → src/lib/components/sion-card/sion-card.component.scss} +0 -0
  474. /package/{themes → src/lib}/components/stepper/step/step.component.scss +0 -0
  475. /package/{themes/components/tabs/tab/tab.component.scss → src/lib/components/stepper/stepper.component.scss} +0 -0
  476. /package/{themes/components/text-tooltip/text-tooltip.component.scss → src/lib/components/tabs/tab/tab.component.scss} +0 -0
  477. /package/{themes → src/lib}/components/tabs/tabs/tabs.component.scss +0 -0
  478. /package/{themes → src/lib}/components/tooltip/tooltip.component.scss +0 -0
  479. /package/{themes → src/lib}/styles/components.scss +0 -0
  480. /package/{themes → src/lib}/styles/core.styles.scss +0 -0
  481. /package/{themes → src/lib}/styles/ionic/ion-action-sheet.scss +0 -0
  482. /package/{themes → src/lib}/styles/ionic/ion-alert.scss +0 -0
  483. /package/{themes → src/lib}/styles/ionic/ion-button.scss +0 -0
  484. /package/{themes → src/lib}/styles/ionic/ion-card.scss +0 -0
  485. /package/{themes → src/lib}/styles/ionic/ion-content.scss +0 -0
  486. /package/{themes → src/lib}/styles/ionic/ion-datetime.scss +0 -0
  487. /package/{themes → src/lib}/styles/ionic/ion-item.scss +0 -0
  488. /package/{themes → src/lib}/styles/ionic/ion-list.scss +0 -0
  489. /package/{themes → src/lib}/styles/ionic/ion-modal.scss +0 -0
  490. /package/{themes → src/lib}/styles/ionic/ion-popover.scss +0 -0
  491. /package/{themes → src/lib}/styles/ionic/ion-progress-bar.scss +0 -0
  492. /package/{themes → src/lib}/styles/ionic/ion-searchbar.scss +0 -0
  493. /package/{themes → src/lib}/styles/ionic/ion-toast.scss +0 -0
  494. /package/{themes → src/lib}/styles/ionic.scss +0 -0
  495. /package/{themes → src/lib}/styles/login-default.scss +0 -0
  496. /package/{themes → src/lib}/styles/mixins.scss +0 -0
  497. /package/{themes → src/lib}/styles/styles.scss +0 -0
  498. /package/{themes → src/lib}/styles/translucid.scss +0 -0
@@ -1,212 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';
2
- import { TableField } from '../../../../classes/inputs/table-field';
3
- import { InputType } from '../../../inputs/input-type';
4
- import { Utils } from '../../../../services/utils.service';
5
- import { InputDecimalConfiguration, InputCurrencyConfiguration, InputNumberConfiguration } from '../../../inputs/input-decimal/input-decimal.configuration';
6
- import { InputStringConfiguration } from '../../../inputs/input-string/input-string.configuration';
7
- import { InputSelectConfiguration } from '../../../inputs/input-select/input.select.configuration';
8
- import { InputDateConfiguration } from '../../../inputs/input-date/input-date.configuration';
9
- import { InputFileConfiguration } from '../../../inputs/input-file/input-file.configuration';
10
- import { InputBoolConfiguration } from '../../../inputs/input-bool/input-bool.configuration';
11
- import { ImplicitProperty } from '../../../../classes/comparison/properties/implicit-property';
12
- import { DecimalProperty } from '../../../../classes/comparison/properties/decimal-property';
13
- import { StringProperty } from '../../../../classes/comparison/properties/string-property';
14
- import { BoolProperty } from '../../../../classes/comparison/properties/bool-property';
15
- import { DateProperty } from '../../../../classes/comparison/properties/date-property';
16
- import { InputDateComponent } from '../../../inputs/input-date/input-date.component';
17
- import { InputCpfCnpjConfiguration } from '../../../inputs/input-cpf-cnpj/input-cpf-cnpj.configuration';
18
- import { InputCepConfiguration } from '../../../inputs/input-cep/input-cep.configuration';
19
- import { ComparisonValueType } from '../../../../classes/comparison/comparison-value-type';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@ionic/angular";
22
- import * as i2 from "../../../inputs/input-cep/input-cep.component";
23
- import * as i3 from "../../../inputs/input-cpf-cnpj/input-cpf-cnpj.component";
24
- import * as i4 from "../../../inputs/input-date/input-date.component";
25
- import * as i5 from "../../../inputs/input-decimal/input-decimal.component";
26
- import * as i6 from "../../../inputs/input-select/input-select.component";
27
- import * as i7 from "../../../inputs/input-string/input-string.component";
28
- import * as i8 from "@angular/forms";
29
- export class ThFilterComponent {
30
- constructor() {
31
- this.guid = Utils.GenerateGUID();
32
- this.isFilterActive = false;
33
- this.model = null;
34
- this.modelMinimum = null;
35
- this.modelMaximum = null;
36
- this.changeEmitter = new EventEmitter();
37
- }
38
- ngOnInit() {
39
- this.configuration = this.field.configuration;
40
- if (!this.configuration) {
41
- if ([InputType.Date, InputType.DateTime, InputType.Time].includes(this.field.type)) {
42
- this.configuration = new InputDateConfiguration();
43
- }
44
- else if (this.field.type == InputType.File) {
45
- this.configuration = new InputFileConfiguration();
46
- }
47
- else if (this.field.type == InputType.Number) {
48
- this.configuration = new InputNumberConfiguration();
49
- }
50
- else if (this.field.type == InputType.Decimal) {
51
- this.configuration = new InputDecimalConfiguration();
52
- }
53
- else if (this.field.type == InputType.Currency) {
54
- this.configuration = new InputCurrencyConfiguration();
55
- }
56
- else if (this.field.type == InputType.String) {
57
- this.configuration = new InputStringConfiguration();
58
- }
59
- else if (this.field.type == InputType.Select) {
60
- this.configuration = new InputSelectConfiguration();
61
- }
62
- else if (this.field.type == InputType.TextArea) {
63
- this.configuration = new InputStringConfiguration();
64
- }
65
- else if (this.field.type == InputType.Bool) {
66
- this.configuration = new InputBoolConfiguration();
67
- }
68
- else if (this.field.type == InputType.Cpf) {
69
- this.configuration = new InputCpfCnpjConfiguration("CPF");
70
- }
71
- else if (this.field.type == InputType.Cnpj) {
72
- this.configuration = new InputCpfCnpjConfiguration("CNPJ");
73
- }
74
- else if (this.field.type == InputType.CpfCnpj) {
75
- this.configuration = new InputCpfCnpjConfiguration("CPFCNPJ");
76
- }
77
- else if (this.field.type == InputType.Cep) {
78
- this.configuration = new InputCepConfiguration();
79
- }
80
- }
81
- if (this.configuration instanceof InputSelectConfiguration) {
82
- this.configuration = new InputSelectConfiguration(this.configuration.bindValue, this.configuration.bindLabel, true, true, this.configuration.loadFrom, true);
83
- this.configuration.popoverConfiguration.flip = false;
84
- }
85
- if (this.configuration instanceof InputDateConfiguration) {
86
- this.configuration = new InputDateConfiguration(true);
87
- }
88
- if (this.field.type == InputType.Bool) {
89
- if (this.field.index == "ativo") {
90
- this.configuration = this.configuration = new InputSelectConfiguration('value', 'label', true, true, [
91
- { label: 'Somente Ativos', value: true },
92
- { label: 'Somente Não Ativos', value: false },
93
- ]);
94
- this.model = true;
95
- }
96
- else {
97
- this.configuration = new InputSelectConfiguration('value', 'label', true, false, [
98
- { label: 'Sim', value: true },
99
- { label: 'Não', value: false },
100
- ]);
101
- }
102
- }
103
- }
104
- Change() {
105
- if (((typeof (this.model) == 'string' && !this.model) ||
106
- this.model == null ||
107
- (Array.isArray(this.model) && this.model.length == 0)) &&
108
- !this.modelMinimum && !this.modelMaximum) {
109
- this.SetInactive();
110
- return;
111
- }
112
- if ([InputType.Currency, InputType.Decimal, InputType.Number].includes(this.field.type)) {
113
- var Comparison = [];
114
- if (this.modelMinimum) {
115
- var Bigger = new DecimalProperty(this.field.index).GreaterThanOrEqual(this.modelMinimum);
116
- Comparison = [Bigger];
117
- }
118
- if (this.modelMaximum) {
119
- var Smaller = new DecimalProperty(this.field.index).LessThanOrEqual(this.modelMaximum);
120
- if (Comparison.length) {
121
- Comparison.push(Smaller);
122
- }
123
- else {
124
- Comparison = [Smaller];
125
- }
126
- }
127
- this.field.filter = Comparison;
128
- this.isFilterActive = true;
129
- this.changeEmitter.emit();
130
- return;
131
- }
132
- else if ([InputType.String, InputType.TextArea, InputType.Cep, InputType.Cpf, InputType.Cnpj, InputType.CpfCnpj].includes(this.field.type)) {
133
- this.field.filter = [new StringProperty(this.field.index).IsContainedIn(this.model)];
134
- this.isFilterActive = true;
135
- this.changeEmitter.emit();
136
- return;
137
- }
138
- else if (this.field.type == InputType.Select) {
139
- this.field.filter = [new ImplicitProperty(this.field.index).IsContainedIn(this.model)];
140
- this.isFilterActive = true;
141
- this.changeEmitter.emit();
142
- return;
143
- }
144
- else if (this.field.type == InputType.Bool) {
145
- this.field.filter = [new BoolProperty(this.field.index).Equals(this.model)];
146
- this.isFilterActive = true;
147
- this.changeEmitter.emit();
148
- return;
149
- }
150
- else if ([InputType.Date, InputType.DateTime].includes(this.field.type)) {
151
- if (this.field.type == InputType.Date) {
152
- if (this.modelMinimum) {
153
- this.modelMinimum = this.modelMinimum.split("T")[0] + "T00:00:00";
154
- }
155
- if (this.modelMaximum) {
156
- this.modelMaximum = this.modelMaximum.split("T")[0] + "T23:59:59";
157
- }
158
- }
159
- const valueType = (this.field.type == InputType.DateTime)
160
- ? ComparisonValueType.DateTime
161
- : ComparisonValueType.Date;
162
- let ComparisonList = [];
163
- if (this.modelMinimum) {
164
- let c = new DateProperty(this.field.index)
165
- .GreaterThanOrEqual(this.modelMinimum);
166
- c.valueType = valueType;
167
- ComparisonList = [c];
168
- }
169
- if (this.modelMaximum) {
170
- let c = new DateProperty(this.field.index)
171
- .LessThanOrEqual(this.modelMaximum);
172
- c.valueType = valueType;
173
- if (ComparisonList.length) {
174
- ComparisonList.push(c);
175
- }
176
- else {
177
- ComparisonList = [c];
178
- }
179
- }
180
- this.field.filter = ComparisonList;
181
- this.isFilterActive = true;
182
- this.changeEmitter.emit();
183
- return;
184
- }
185
- this.changeEmitter.emit();
186
- }
187
- SetInactive() {
188
- this.field.filter = null;
189
- this.isFilterActive = false;
190
- this.changeEmitter.emit();
191
- return;
192
- }
193
- WillDismiss() {
194
- console.log(this.lstInputDate.toArray());
195
- this.lstInputDate.forEach(i => i.Dismiss());
196
- }
197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, viewQueries: [{ propertyName: "lstInputDate", predicate: InputDateComponent, descendants: true }], ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover class=\"th-filter\" fill=\"solid\" #popover triggerAction=\"click\" (onWillDismiss)=\"WillDismiss()\">\r\n <ng-template>\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea', 'Cpf', 'Cnpj', 'CpfCnpj', 'Cep'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n @case(\"Cep\") {\r\n <input-cep (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cep>\r\n }\r\n @case ('Cpf') {\r\n <input-cpf (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf>\r\n }\r\n @case ('Cnpj') {\r\n <input-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cnpj>\r\n }\r\n @case ('CpfCnpj') {\r\n <input-cpf-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf-cnpj>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n</ion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonPopover, selector: "ion-popover" }, { kind: "component", type: i2.InputCepComponent, selector: "input-cep", inputs: ["configuration"] }, { kind: "component", type: i3.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i5.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i6.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i7.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
199
- }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThFilterComponent, decorators: [{
201
- type: Component,
202
- args: [{ selector: 'th-filter', template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover class=\"th-filter\" fill=\"solid\" #popover triggerAction=\"click\" (onWillDismiss)=\"WillDismiss()\">\r\n <ng-template>\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea', 'Cpf', 'Cnpj', 'CpfCnpj', 'Cep'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n @case(\"Cep\") {\r\n <input-cep (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cep>\r\n }\r\n @case ('Cpf') {\r\n <input-cpf (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf>\r\n }\r\n @case ('Cnpj') {\r\n <input-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cnpj>\r\n }\r\n @case ('CpfCnpj') {\r\n <input-cpf-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf-cnpj>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n</ion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"] }]
203
- }], ctorParameters: () => [], propDecorators: { field: [{
204
- type: Input
205
- }], changeEmitter: [{
206
- type: Output,
207
- args: ['change']
208
- }], lstInputDate: [{
209
- type: ViewChildren,
210
- args: [InputDateComponent]
211
- }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdGFibGUvdGgtZmlsdGVyL3RoLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL3RoLWZpbHRlci90aC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM1SixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0Ys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LENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBM0tVLGlCQUFpQjttR0FBakIsaUJBQWlCLG9KQXVLZCxrQkFBa0IsZ0RDdk1sQyx1OElBcUVBOzs0RkRyQ2EsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7d0RBTVosS0FBSztzQkFBYixLQUFLO2dCQWdFWSxhQUFhO3NCQUE5QixNQUFNO3VCQUFDLFFBQVE7Z0JBcUdrQixZQUFZO3NCQUE3QyxZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuLCB2aWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZCc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC10eXBlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uLCBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGVjaW1hbC9pbnB1dC1kZWNpbWFsLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtc3RyaW5nL2lucHV0LXN0cmluZy5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGF0ZS9pbnB1dC1kYXRlLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRCb29sQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1ib29sL2lucHV0LWJvb2wuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1jb25maWd1cmF0aW9uJztcclxuXHJcbmltcG9ydCB7IEltcGxpY2l0UHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9pbXBsaWNpdC1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IERlY2ltYWxQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2RlY2ltYWwtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBTdHJpbmdQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL3N0cmluZy1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IEJvb2xQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2Jvb2wtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBEYXRlUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9kYXRlLXByb3BlcnR5JztcclxuXHJcbmltcG9ydCB7IENvbXBhcmlzb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvbic7XHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1jcGYtY25wai9pbnB1dC1jcGYtY25wai5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRDZXBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWNlcC9pbnB1dC1jZXAuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IENvbXBhcmlzb25WYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvbi12YWx1ZS10eXBlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RoLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RoLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGgtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkIDogVGFibGVGaWVsZCBcclxuXHJcbiAgZ3VpZDogc3RyaW5nID0gVXRpbHMuR2VuZXJhdGVHVUlEKCk7XHJcbiAgY29uZmlndXJhdGlvbjogSW5wdXRDb25maWd1cmF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZmllbGQuY29uZmlndXJhdGlvbjtcclxuICAgIFxyXG4gICAgaWYoIXRoaXMuY29uZmlndXJhdGlvbil7XHJcbiAgICAgIGlmKFtJbnB1dFR5cGUuRGF0ZSwgSW5wdXRUeXBlLkRhdGVUaW1lLCBJbnB1dFR5cGUuVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKCkgfSBlbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuRmlsZSAgICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRGaWxlQ29uZmlndXJhdGlvbigpICAgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLk51bWJlciAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5EZWNpbWFsICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKCkgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQ3VycmVuY3kpeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKSB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLlN0cmluZyAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3QgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oKSAgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuVGV4dEFyZWEpeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uKCk7ICB9ZWxzZSBcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5Cb29sICAgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEJvb2xDb25maWd1cmF0aW9uKCk7ICAgIH0gZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkNwZiAgICAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oXCJDUEZcIik7IH0gIGVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5DbnBqICAgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dENwZkNucGpDb25maWd1cmF0aW9uKFwiQ05QSlwiKTsgfSAgZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkNwZkNucGogKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oXCJDUEZDTlBKXCIpOyB9IGVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5DZXAgICAgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dENlcENvbmZpZ3VyYXRpb24oKTsgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24gaW5zdGFuY2VvZiBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pe1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iaW5kVmFsdWUsXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmJpbmRMYWJlbCxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICk7XHJcbiAgICAgICh0aGlzLmNvbmZpZ3VyYXRpb24gYXMgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKS5wb3BvdmVyQ29uZmlndXJhdGlvbi5mbGlwID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uIGluc3RhbmNlb2YgSW5wdXREYXRlQ29uZmlndXJhdGlvbil7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgIGlmKHRoaXMuZmllbGQuaW5kZXggPT0gXCJhdGl2b1wiKXtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKCd2YWx1ZScsICdsYWJlbCcsIHRydWUsIHRydWUsIFtcclxuICAgICAgICAgIHsgbGFiZWw6ICdTb21lbnRlIEF0aXZvcycgICAgLCB2YWx1ZTogdHJ1ZSAgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdTb21lbnRlIE7Do28gQXRpdm9zJywgdmFsdWU6IGZhbHNlIH0sXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKCd2YWx1ZScsICdsYWJlbCcsIHRydWUsIGZhbHNlLCBbXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU2ltJywgdmFsdWU6IHRydWUgIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnTsOjbycsIHZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIF0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRmlsdGVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIG1vZGVsOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBtb2RlbE1pbmltdW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIG1vZGVsTWF4aW11bTogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgnY2hhbmdlJykgY2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIENoYW5nZSgpOiB2b2lke1xyXG4gICAgICBpZigoKHR5cGVvZih0aGlzLm1vZGVsKSA9PSAnc3RyaW5nJyAmJiAhdGhpcy5tb2RlbCkgfHwgXHJcbiAgICAgICAgICAgdGhpcy5tb2RlbCA9PSBudWxsIHx8IFxyXG4gICAgICAgICAgIChBcnJheS5pc0FycmF5KHRoaXMubW9kZWwpICYmIHRoaXMubW9kZWwubGVuZ3RoID09IDApKSAmJiBcclxuICAgICAgICAhdGhpcy5tb2RlbE1pbmltdW0gJiYgIXRoaXMubW9kZWxNYXhpbXVtKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5TZXRJbmFjdGl2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoW0lucHV0VHlwZS5DdXJyZW5jeSwgSW5wdXRUeXBlLkRlY2ltYWwsIElucHV0VHlwZS5OdW1iZXJdLmluY2x1ZGVzKHRoaXMuZmllbGQudHlwZSkpe1xyXG4gICAgICAgIHZhciBDb21wYXJpc29uOiBDb21wYXJpc29uW10gPSBbXTtcclxuICAgICAgICBpZih0aGlzLm1vZGVsTWluaW11bSl7XHJcbiAgICAgICAgICB2YXIgQmlnZ2VyICA9IG5ldyBEZWNpbWFsUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuR3JlYXRlclRoYW5PckVxdWFsKHRoaXMubW9kZWxNaW5pbXVtKTtcclxuICAgICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5tb2RlbE1heGltdW0pe1xyXG4gICAgICAgICAgdmFyIFNtYWxsZXIgPSBuZXcgRGVjaW1hbFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLkxlc3NUaGFuT3JFcXVhbCh0aGlzLm1vZGVsTWF4aW11bSk7XHJcbiAgICAgICAgICBpZihDb21wYXJpc29uLmxlbmd0aCl7IENvbXBhcmlzb24ucHVzaChTbWFsbGVyKTsgfSBcclxuICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgIHsgQ29tcGFyaXNvbiA9IFtTbWFsbGVyXTsgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZC5maWx0ZXIgPSBDb21wYXJpc29uO1xyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9ZWxzZVxyXG4gICAgICBpZihbSW5wdXRUeXBlLlN0cmluZywgSW5wdXRUeXBlLlRleHRBcmVhLCBJbnB1dFR5cGUuQ2VwLCBJbnB1dFR5cGUuQ3BmLCBJbnB1dFR5cGUuQ25waiwgSW5wdXRUeXBlLkNwZkNucGpdLmluY2x1ZGVzKHRoaXMuZmllbGQudHlwZSkpe1xyXG4gICAgICAgIHRoaXMuZmllbGQuZmlsdGVyICAgPSBbbmV3IFN0cmluZ1Byb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLklzQ29udGFpbmVkSW4odGhpcy5tb2RlbCldO1xyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLlNlbGVjdCl7XHJcbiAgICAgICAgdGhpcy5maWVsZC5maWx0ZXIgICA9IFtuZXcgSW1wbGljaXRQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5Jc0NvbnRhaW5lZEluKHRoaXMubW9kZWwpXTtcclxuICAgICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5Cb29sKXtcclxuICAgICAgICB0aGlzLmZpZWxkLmZpbHRlciAgID0gW25ldyBCb29sUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuRXF1YWxzKHRoaXMubW9kZWwpXTtcclxuICAgICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgIGlmIChbSW5wdXRUeXBlLkRhdGUsIElucHV0VHlwZS5EYXRlVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSkge1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZWxNaW5pbXVtKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbE1pbmltdW0gPSB0aGlzLm1vZGVsTWluaW11bS5zcGxpdChcIlRcIilbMF0gKyBcIlQwMDowMDowMFwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1vZGVsTWF4aW11bSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxNYXhpbXVtID0gdGhpcy5tb2RlbE1heGltdW0uc3BsaXQoXCJUXCIpWzBdICsgXCJUMjM6NTk6NTlcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbHVlVHlwZSA9ICh0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGVUaW1lKVxyXG4gICAgICAgID8gQ29tcGFyaXNvblZhbHVlVHlwZS5EYXRlVGltZVxyXG4gICAgICAgIDogQ29tcGFyaXNvblZhbHVlVHlwZS5EYXRlO1xyXG5cclxuICAgIGxldCBDb21wYXJpc29uTGlzdDogQ29tcGFyaXNvbltdID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZWxNaW5pbXVtKSB7XHJcbiAgICAgIGxldCBjID0gbmV3IERhdGVQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAuR3JlYXRlclRoYW5PckVxdWFsKHRoaXMubW9kZWxNaW5pbXVtKTtcclxuXHJcbiAgICAgIGMudmFsdWVUeXBlID0gdmFsdWVUeXBlOyAgXHJcbiAgICAgIENvbXBhcmlzb25MaXN0ID0gW2NdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vZGVsTWF4aW11bSkge1xyXG4gICAgICBsZXQgYyA9IG5ldyBEYXRlUHJvcGVydHkodGhpcy5maWVsZC5pbmRleClcclxuICAgICAgICAgICAgICAgICAgLkxlc3NUaGFuT3JFcXVhbCh0aGlzLm1vZGVsTWF4aW11bSk7XHJcblxyXG4gICAgICBjLnZhbHVlVHlwZSA9IHZhbHVlVHlwZTsgIFxyXG4gICAgICBpZiAoQ29tcGFyaXNvbkxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgQ29tcGFyaXNvbkxpc3QucHVzaChjKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBDb21wYXJpc29uTGlzdCA9IFtjXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmllbGQuZmlsdGVyID0gQ29tcGFyaXNvbkxpc3Q7XHJcbiAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgU2V0SW5hY3RpdmUoKTogdm9pZHtcclxuICAgIHRoaXMuZmllbGQuZmlsdGVyID0gbnVsbDtcclxuICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKElucHV0RGF0ZUNvbXBvbmVudCkgbHN0SW5wdXREYXRlOiBRdWVyeUxpc3Q8SW5wdXREYXRlQ29tcG9uZW50PjtcclxuICBXaWxsRGlzbWlzcygpOiB2b2lke1xyXG4gICAgY29uc29sZS5sb2codGhpcy5sc3RJbnB1dERhdGUudG9BcnJheSgpKTtcclxuICAgIHRoaXMubHN0SW5wdXREYXRlLmZvckVhY2goaSA9PiBpLkRpc21pc3MoKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2FuY2hvciBjbGFzcz1cImgtNSBhc3BlY3Qtc3F1YXJlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgPGlvbi1pY29uIG5hbWU9XCJmaWx0ZXItY2lyY2xlXCIgKGNsaWNrKT1cInBvcG92ZXIucHJlc2VudCgkZXZlbnQpXCIgY2xhc3M9XCJ0ZXh0LXhsIGFsaWduLXN1YiBzaXplLWZ1bGxcIiBbY29sb3JdPVwiaXNGaWx0ZXJBY3RpdmUgPyAnc2Vjb25kYXJ5JyA6ICdtZWRpdW0nIFwiPjwvaW9uLWljb24+XHJcbjwvZGl2PlxyXG5cclxuPGlvbi1wb3BvdmVyIGNsYXNzPVwidGgtZmlsdGVyXCIgZmlsbD1cInNvbGlkXCIgI3BvcG92ZXIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCIgKG9uV2lsbERpc21pc3MpPVwiV2lsbERpc21pc3MoKVwiPlxyXG4gIDxuZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTcyIGZsZXggZmxleC1jb2wgZ2FwLTIgcC0yXCIgPlxyXG4gICAgICBAaWYoIVsnU2VsZWN0JywgJ0Jvb2wnLCAnU3RyaW5nJywgJ1RleHRBcmVhJywgJ0NwZicsICdDbnBqJywgJ0NwZkNucGonLCAnQ2VwJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpe1xyXG4gICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj4gIEZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX0gPC9pb24tbGFiZWw+XHJcbiAgICAgIH1cclxuICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgIEBjYXNlICgnU3RyaW5nJykge1xyXG4gICAgICAgICAgPGlucHV0LXN0cmluZyBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIiAoYmx1cik9XCJDaGFuZ2UoKVwiPjwvaW5wdXQtc3RyaW5nPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ051bWJlcicpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1udW1iZXIgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtbnVtYmVyPlxyXG4gICAgICAgICAgICA8aW5wdXQtbnVtYmVyIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiVmFsb3IgTWF4aW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtbnVtYmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnRGVjaW1hbCcpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1kZWNpbWFsIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiVmFsb3IgTcOtbmltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRlY2ltYWw+XHJcbiAgICAgICAgICAgIDxpbnB1dC1kZWNpbWFsIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiVmFsb3IgTWF4aW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0N1cnJlbmN5Jykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWN1cnJlbmN5IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiVmFsb3IgTcOtbmltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgICA8aW5wdXQtY3VycmVuY3kgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1jdXJyZW5jeT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ1NlbGVjdCcpIHtcclxuICAgICAgICAgIDxpbnB1dC1zZWxlY3QgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXNlbGVjdD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdUZXh0QXJlYScpIHtcclxuICAgICAgICAgIDxpbnB1dC1zdHJpbmcgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiPjwvaW5wdXQtc3RyaW5nPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0Jvb2wnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtc2VsZWN0IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIiBwbGFjZWhvbGRlcj1cIlwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXNlbGVjdD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdEYXRlJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1kYXRlIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiRGF0YSBNw61uaW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJEYXRhIE1heGltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdEYXRlVGltZScpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1kYXRlLXRpbWUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJEYXRhIE3DrW5pbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlLXRpbWU+XHJcbiAgICAgICAgICAgIDxpbnB1dC1kYXRlLXRpbWUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJEYXRhIE1heGltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZShcIkNlcFwiKSB7XHJcbiAgICAgICAgICA8aW5wdXQtY2VwIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIj48L2lucHV0LWNlcD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdDcGYnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtY3BmIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIj48L2lucHV0LWNwZj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdDbnBqJykge1xyXG4gICAgICAgICAgPGlucHV0LWNucGogKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiPjwvaW5wdXQtY25waj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdDcGZDbnBqJykge1xyXG4gICAgICAgICAgPGlucHV0LWNwZi1jbnBqIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIj48L2lucHV0LWNwZi1jbnBqPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9pb24tcG9wb3Zlcj5cclxuIl19
@@ -1,22 +0,0 @@
1
- import { Component, ViewChild } from "@angular/core";
2
- import { DefaultViewComponent } from "./default-view.component";
3
- import * as i0 from "@angular/core";
4
- /** Componente padrão para a invocação do DefaultView */
5
- export class AbstractView {
6
- ngOnInit() {
7
- this.id = this.genericService.GetId(this.activatedRoute, 0);
8
- }
9
- static GetProvider(component) {
10
- return [{ provide: AbstractView, useExisting: component }];
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AbstractView, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AbstractView, selector: "ng-component", viewQueries: [{ propertyName: "DefaultView", first: true, predicate: (DefaultViewComponent), descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AbstractView, decorators: [{
16
- type: Component,
17
- args: [{ template: '' }]
18
- }], propDecorators: { DefaultView: [{
19
- type: ViewChild,
20
- args: [(DefaultViewComponent)]
21
- }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9hYnN0cmFjdC12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVoRSx3REFBd0Q7QUFFeEQsTUFBTSxPQUFnQixZQUFZO0lBT2hDLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUdNLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUztRQUNqQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQzVELENBQUM7K0dBZG1CLFlBQVk7bUdBQVosWUFBWSxpR0FXckIsQ0FBQSxvQkFBeUIsQ0FBQSxnREFaZixFQUFFOzs0RkFDSCxZQUFZO2tCQURqQyxTQUFTOytCQUFhLEVBQUU7OEJBWXNCLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsQ0FBQSxvQkFBeUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlZmF1bHRWaWV3Q29tcG9uZW50IH0gZnJvbSBcIi4vZGVmYXVsdC12aWV3LmNvbXBvbmVudFwiO1xyXG5cclxuLyoqIENvbXBvbmVudGUgcGFkcsOjbyBwYXJhIGEgaW52b2Nhw6fDo28gZG8gRGVmYXVsdFZpZXcgKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJywgc3R5bGVzOiAnJyB9KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RWaWV3PFQgZXh0ZW5kcyBIdHRwU2VydmljZT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyBzZXJ2aWNlICAgICAgIDogVDtcclxuICBwdWJsaWMgZ2VuZXJpY1NlcnZpY2U6IEdlbmVyaWNTZXJ2aWNlO1xyXG4gIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgXHJcbiAgcHVibGljIGlkOiBudW1iZXI7XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCAwKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoRGVmYXVsdFZpZXdDb21wb25lbnQ8YW55PikgcHVibGljIERlZmF1bHRWaWV3OiBEZWZhdWx0Vmlld0NvbXBvbmVudDxhbnk+O1xyXG4gIHB1YmxpYyBzdGF0aWMgR2V0UHJvdmlkZXIoY29tcG9uZW50KTogYW55W117XHJcbiAgICByZXR1cm4gW3sgcHJvdmlkZTogQWJzdHJhY3RWaWV3LCB1c2VFeGlzdGluZzogY29tcG9uZW50IH1dXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,76 +0,0 @@
1
- import { FormBuilder } from '@angular/forms';
2
- import { Component, ElementRef, Input } from '@angular/core';
3
- import { ActivatedRoute } from '@angular/router';
4
- import { NavController } from '@ionic/angular';
5
- import { GenericService } from '../../../services/generic.service';
6
- import { View } from './view';
7
- import { InputType } from '../../inputs/input-type';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- import * as i2 from "@angular/router";
11
- import * as i3 from "../../../services/generic.service";
12
- import * as i4 from "@ionic/angular";
13
- import * as i5 from "@angular/common";
14
- import * as i6 from "../../inputs/input-bool/input-bool.component";
15
- import * as i7 from "../../inputs/input-cep/input-cep.component";
16
- import * as i8 from "../../inputs/input-color/input-color.component";
17
- import * as i9 from "../../inputs/input-cpf-cnpj/input-cpf-cnpj.component";
18
- import * as i10 from "../../inputs/input-date/input-date.component";
19
- import * as i11 from "../../inputs/input-decimal/input-decimal.component";
20
- import * as i12 from "../../inputs/input-file/input-file.component";
21
- import * as i13 from "../../inputs/input-icon/input-icon.component";
22
- import * as i14 from "../../inputs/input-select/input-select.component";
23
- import * as i15 from "../../inputs/input-string/input-string.component";
24
- import * as i16 from "../../inputs/input-telefone/input-telefone.component";
25
- import * as i17 from "../../inputs/input-textarea/input-textarea.component";
26
- import * as i18 from "./header-view/header-view.component";
27
- /** Componente View Padão */
28
- export class DefaultViewComponent extends View {
29
- constructor(fb, elementRef, activatedRoute, genericService, navController) {
30
- super();
31
- this.fb = fb;
32
- this.elementRef = elementRef;
33
- this.activatedRoute = activatedRoute;
34
- this.genericService = genericService;
35
- this.navController = navController;
36
- /** Remove o botão de voltar */
37
- this.noBack = false;
38
- /** Remove o botão NOVO da listagem */
39
- this.noNew = false;
40
- /** Remove os breadcrumbs da listagem */
41
- this.noBreadcrumbs = false;
42
- /** Habilita/Desabilita o focus no primeiro campo da view
43
- * 1 - para ativar no novo e no editar
44
- * 2 - para ativar apenas no novo
45
- * 3 - para desativar para os dois casos
46
- * [Padrão 2]
47
- */
48
- this.focusInFirstField = 2;
49
- this.InputType = InputType;
50
- /**
51
- * Rota para voltar, caso não seja definida, o componente irá tentar usar rota do ionic
52
- */
53
- this.backRouterLink = undefined;
54
- }
55
- async ngOnInit() {
56
- this.startInFirstField = this.focusInFirstField;
57
- await super.ngOnInit();
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultViewComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }, { token: i2.ActivatedRoute }, { token: i3.GenericService }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DefaultViewComponent, selector: "default-view", inputs: { noBack: "noBack", noNew: "noNew", noBreadcrumbs: "noBreadcrumbs", focusInFirstField: "focusInFirstField", backRouterLink: "backRouterLink" }, usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-telefone-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone-celular>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"], dependencies: [{ kind: "component", type: i4.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i4.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.InputBoolComponent, selector: "input-bool", inputs: ["configuration"] }, { kind: "component", type: i7.InputCepComponent, selector: "input-cep", inputs: ["configuration"] }, { kind: "component", type: i8.InputColorComponent, selector: "input-color" }, { kind: "component", type: i9.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i10.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i11.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i12.InputFileComponent, selector: "input-file", inputs: ["configuration"] }, { kind: "component", type: i13.InputIconComponent, selector: "input-icon" }, { kind: "component", type: i14.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i15.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "component", type: i16.InputTelefoneComponent, selector: "input-telefone, input-celular, input-telefone-celular", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i17.InputTextareaComponent, selector: "input-textarea", inputs: ["configuration"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i18.HeaderViewComponent, selector: "header-view", inputs: ["novo", "loading", "progress", "focusInFirstField", "noBack", "noNew", "useDefaultRouting", "backRouterLink"], outputs: ["save"] }] }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultViewComponent, decorators: [{
63
- type: Component,
64
- args: [{ selector: 'default-view', template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-telefone-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone-celular>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"] }]
65
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ElementRef }, { type: i2.ActivatedRoute }, { type: i3.GenericService }, { type: i4.NavController }], propDecorators: { noBack: [{
66
- type: Input
67
- }], noNew: [{
68
- type: Input
69
- }], noBreadcrumbs: [{
70
- type: Input
71
- }], focusInFirstField: [{
72
- type: Input
73
- }], backRouterLink: [{
74
- type: Input
75
- }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9kZWZhdWx0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRCw0QkFBNEI7QUFNNUIsTUFBTSxPQUFPLG9CQUErRCxTQUFRLElBQU87SUF5QnpGLFlBQ2tCLEVBQWUsRUFDZixVQUFzQixFQUN0QixjQUE4QixFQUM5QixjQUE4QixFQUM5QixhQUE0QjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUxNLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1QjlDLCtCQUErQjtRQUN0QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHNDQUFzQztRQUM3QixVQUFLLEdBQWEsS0FBSyxDQUFDO1FBQ2pDLHdDQUF3QztRQUMvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUN4Qzs7Ozs7V0FLRztRQUNNLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUV2QyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBSXRCOztVQUVFO1FBQ08sbUJBQWMsR0FBeUMsU0FBUyxDQUFDO0lBUTdELENBQUM7SUFFTCxLQUFLLENBQUMsUUFBUTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2hELE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3hCLENBQUM7K0dBcENVLG9CQUFvQjttR0FBcEIsb0JBQW9CLG1PQ2xCakMsd3dRQThHYzs7NEZENUZELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOytMQU9mLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgICAgICB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuL3ZpZXcnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBWaWV3IFBhZMOjbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0Vmlld0NvbXBvbmVudDxUIGV4dGVuZHMgSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvPiBleHRlbmRzIFZpZXc8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogUmVtb3ZlIG8gYm90w6NvIGRlIHZvbHRhciAqL1xyXG4gIEBJbnB1dCgpIG5vQmFjazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gTk9WTyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vTmV3IDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgb3MgYnJlYWRjcnVtYnMgZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub0JyZWFkY3J1bWJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEhhYmlsaXRhL0Rlc2FiaWxpdGEgbyBmb2N1cyBubyBwcmltZWlybyBjYW1wbyBkYSB2aWV3XHJcbiAgICogMSAtIHBhcmEgYXRpdmFyIG5vIG5vdm8gZSBubyBlZGl0YXJcclxuICAgKiAyIC0gcGFyYSBhdGl2YXIgYXBlbmFzIG5vIG5vdm9cclxuICAgKiAzIC0gcGFyYSBkZXNhdGl2YXIgcGFyYSBvcyBkb2lzIGNhc29zXHJcbiAgICogICAgIFtQYWRyw6NvIDJdXHJcbiAgICovXHJcbiAgQElucHV0KCkgZm9jdXNJbkZpcnN0RmllbGQ6IG51bWJlciA9IDI7XHJcblxyXG4gIElucHV0VHlwZSA9IElucHV0VHlwZTtcclxuXHJcblxyXG4gIFxyXG4gIC8qKiAgXHJcbiAgICogUm90YSBwYXJhIHZvbHRhciwgY2FzbyBuw6NvIHNlamEgZGVmaW5pZGEsIG8gY29tcG9uZW50ZSBpcsOhIHRlbnRhciB1c2FyIHJvdGEgZG8gaW9uaWNcclxuICAqL1xyXG4gIEBJbnB1dCgpIGJhY2tSb3V0ZXJMaW5rOiBzdHJpbmcgfCBhbnlbXSB8IFVybFRyZWUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHB1YmxpYyBvdmVycmlkZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcclxuICApIHsgc3VwZXIoKTsgfVxyXG5cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3RhcnRJbkZpcnN0RmllbGQgPSB0aGlzLmZvY3VzSW5GaXJzdEZpZWxkO1xyXG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKVxyXG4gIH1cclxufSIsIjxpb24tY29udGVudCBjbGFzcz1cImJnLXRyYW5zcGFyZW50XCI+IFxyXG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgW25nQ2xhc3NdPVwieychcC0wIHRyYW5zbHVjaWQtcHJpbWFyeS1iYWNrZ3JvdW5kJzogbmVzdGVkfVwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgIEBpZiAoIW5vQnJlYWRjcnVtYnMpIHtcclxuICAgICAgPGlvbi1icmVhZGNydW1icz5cclxuICAgICAgICA8aW9uLWJyZWFkY3J1bWIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJOYXZpZ2F0ZVRvTGlzdCgpXCI+XHJcbiAgICAgICAgICB7e3NlcnZpY2UudGl0bGV9fVxyXG4gICAgICAgIDwvaW9uLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgPGlvbi1icmVhZGNydW1iPiBcclxuICAgICAgICAgIHt7aWQgPT0gMCA/ICdOb3ZvIFJlZ2lzdHJvJyA6ICdFZGl0YXIgUmVnaXN0cm8nIH19IFxyXG4gICAgICAgIDwvaW9uLWJyZWFkY3J1bWI+XHJcbiAgICAgIDwvaW9uLWJyZWFkY3J1bWJzPlxyXG4gICAgfVxyXG4gICAgXHJcbiAgICA8aW9uLWNhcmQ+XHJcbiAgICAgIDxpb24tY2FyZC1oZWFkZXIgY2xhc3M9XCIhYmxvY2tcIj5cclxuICAgICAgICBAaWYgKHNlcnZpY2UpIHtcclxuICAgICAgICAgIDxoZWFkZXItdmlldyBcclxuICAgICAgICAgICAgKm5nSWY9XCJzZXJ2aWNlXCIgXHJcbiAgICAgICAgICAgIFtub3ZvXT1cImlkID09IDBcIiBcclxuICAgICAgICAgICAgW3VzZURlZmF1bHRSb3V0aW5nXT1cIm5lc3RlZFwiIFxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCIgXHJcbiAgICAgICAgICAgIFtwcm9ncmVzc109XCJwcm9ncmVzc1wiIFxyXG4gICAgICAgICAgICAoc2F2ZSk9XCJTYXZlKClcIiBcclxuICAgICAgICAgICAgW25vQmFja109XCJub0JhY2tcIiBcclxuICAgICAgICAgICAgW25vTmV3XT1cIm5vTmV3XCJcclxuICAgICAgICAgICAgW2JhY2tSb3V0ZXJMaW5rXT1cImJhY2tSb3V0ZXJMaW5rXCJcclxuICAgICAgICAgID48L2hlYWRlci12aWV3PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGgtZnVsbCAhb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEyIGdhcC0yIHctZnVsbFwiICpuZ0lmPVwiZnJtXCIgW2Zvcm1Hcm91cF09XCJmcm1cIj5cclxuICBcclxuICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmIChmaWVsZC5pbmRleCAhPSAnaWQnKSB7XHJcbiAgICAgICAgICAgICAgQGlmICghZmllbGQuaGlkZGVuVmlldykge1xyXG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkJvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtYm9vbCAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiID48L2lucHV0LWJvb2w+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZXApe1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jZXAgICAgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2lucHV0LWNlcD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNvbG9yKXtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY29sb3IgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1jb2xvcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNwZkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY3BmICAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3BmPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuQ3BmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNwZiAgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNwZj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY25waiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY25waj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGF0ZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGltZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWN1cnJlbmN5ICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LW51bWJlciAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZmlsZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZmlsZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkljb24pIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtaWNvbiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXNlbGVjdCAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zdHJpbmcgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZWxlZm9uZUNlbHVsYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGVsZWZvbmUtY2VsdWxhciAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXRlbGVmb25lLWNlbHVsYXI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZWxlZm9uZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC10ZWxlZm9uZSAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC10ZWxlZm9uZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNlbHVsYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY2VsdWxhciAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY2VsdWxhcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlRleHRBcmVhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXRleHRhcmVhICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXRleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tZnVsbCByb3VuZGVkLTJ4bCBwLTMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiAqbmdJZj1cIiFzZXJ2aWNlIHx8IHNlcnZpY2UubHN0VGFibGVGaWVsZHMubGVuZ3RoID09IDBcIiBzdHlsZT1cImJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpO1wiPlxyXG4gICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ0ZXh0LTJ4bCB0ZXh0LWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwiYWxpZ24tc3ViIHRleHQtM3hsXCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+IFsgSW52YWxpZCBDb25maWd1cmF0aW9uIF1cclxuICAgICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L2lvbi1jYXJkPlxyXG4gIDwvZGl2PlxyXG48L2lvbi1jb250ZW50PiJdfQ==