@hitsoft/kadooglu-keops 0.0.2 → 0.0.3

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 (268) hide show
  1. package/config/enums/route-names.d.ts +15 -1
  2. package/esm2020/config/enums/route-names.mjs +1 -1
  3. package/esm2020/config/providers/route.provider.mjs +132 -4
  4. package/esm2020/lib/features/bl-tracking/components/bl-tracking-form.component.mjs +82 -0
  5. package/esm2020/lib/features/bl-tracking/components/bl-tracking.component.mjs +65 -0
  6. package/esm2020/lib/features/bl-tracking/hit-bl-tracking-routing.module.mjs +29 -0
  7. package/esm2020/lib/features/bl-tracking/hit-bl-tracking.module.mjs +58 -0
  8. package/esm2020/lib/features/carriers/components/carrier-form.component.mjs +78 -0
  9. package/esm2020/lib/features/carriers/components/carriers.component.mjs +66 -0
  10. package/esm2020/lib/features/carriers/hit-carriers-routing.module.mjs +29 -0
  11. package/esm2020/lib/features/carriers/hit-carriers.module.mjs +58 -0
  12. package/esm2020/lib/features/container-loading-counts/components/container-loading-counts.component.mjs +2 -2
  13. package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.mjs +6 -5
  14. package/esm2020/lib/features/cost-calculation/components/cost-calculation-inputs.component.mjs +8 -6
  15. package/esm2020/lib/features/cost-calculation/components/cost-calculation.component.mjs +14 -18
  16. package/esm2020/lib/features/cost-calculation/engine/stage-builder.mjs +4 -3
  17. package/esm2020/lib/features/cost-calculation/hit-cost-calculation.module.mjs +7 -3
  18. package/esm2020/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.mjs +1 -4
  19. package/esm2020/lib/features/cost-parameters/components/cost-parameter-form.component.mjs +19 -35
  20. package/esm2020/lib/features/cost-parameters/components/cost-parameters.component.mjs +17 -10
  21. package/esm2020/lib/features/destination-ports/components/destination-port-form.component.mjs +86 -0
  22. package/esm2020/lib/features/destination-ports/components/destination-ports.component.mjs +74 -0
  23. package/esm2020/lib/features/destination-ports/hit-destination-ports-routing.module.mjs +29 -0
  24. package/esm2020/lib/features/destination-ports/hit-destination-ports.module.mjs +58 -0
  25. package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.mjs +80 -0
  26. package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.mjs +65 -0
  27. package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.mjs +29 -0
  28. package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.mjs +58 -0
  29. package/esm2020/lib/features/freight-offers/components/freight-offer-copy.component.mjs +67 -0
  30. package/esm2020/lib/features/freight-offers/components/freight-offer-form.component.mjs +181 -0
  31. package/esm2020/lib/features/freight-offers/components/freight-offers.component.mjs +159 -0
  32. package/esm2020/lib/features/freight-offers/hit-freight-offers-routing.module.mjs +29 -0
  33. package/esm2020/lib/features/freight-offers/hit-freight-offers.module.mjs +62 -0
  34. package/esm2020/lib/features/incoterms/components/incoterm-form.component.mjs +81 -0
  35. package/esm2020/lib/features/incoterms/components/incoterms.component.mjs +65 -0
  36. package/esm2020/lib/features/incoterms/hit-incoterms-routing.module.mjs +29 -0
  37. package/esm2020/lib/features/incoterms/hit-incoterms.module.mjs +58 -0
  38. package/esm2020/lib/features/index.mjs +29 -1
  39. package/esm2020/lib/features/item-package-groups/components/item-package-group-form.component.mjs +78 -0
  40. package/esm2020/lib/features/item-package-groups/components/item-package-groups.component.mjs +69 -0
  41. package/esm2020/lib/features/item-package-groups/hit-item-package-groups-routing.module.mjs +29 -0
  42. package/esm2020/lib/features/item-package-groups/hit-item-package-groups.module.mjs +58 -0
  43. package/esm2020/lib/features/item-package-types/components/item-package-type-form.component.mjs +78 -0
  44. package/esm2020/lib/features/item-package-types/components/item-package-types.component.mjs +69 -0
  45. package/esm2020/lib/features/item-package-types/hit-item-package-types-routing.module.mjs +29 -0
  46. package/esm2020/lib/features/item-package-types/hit-item-package-types.module.mjs +58 -0
  47. package/esm2020/lib/features/item-product-types/components/item-product-type-form.component.mjs +78 -0
  48. package/esm2020/lib/features/item-product-types/components/item-product-types.component.mjs +69 -0
  49. package/esm2020/lib/features/item-product-types/hit-item-product-types-routing.module.mjs +29 -0
  50. package/esm2020/lib/features/item-product-types/hit-item-product-types.module.mjs +58 -0
  51. package/esm2020/lib/features/lines/components/line-form.component.mjs +78 -0
  52. package/esm2020/lib/features/lines/components/lines.component.mjs +66 -0
  53. package/esm2020/lib/features/lines/hit-lines-routing.module.mjs +29 -0
  54. package/esm2020/lib/features/lines/hit-lines.module.mjs +58 -0
  55. package/esm2020/lib/features/packaging-prices/components/packaging-price-form.component.mjs +4 -9
  56. package/esm2020/lib/features/packaging-prices/packaging-price-calculator.mjs +1 -1
  57. package/esm2020/lib/features/pos/components/pos-form.component.mjs +77 -0
  58. package/esm2020/lib/features/pos/components/pos.component.mjs +65 -0
  59. package/esm2020/lib/features/pos/hit-pos-routing.module.mjs +29 -0
  60. package/esm2020/lib/features/pos/hit-pos.module.mjs +58 -0
  61. package/esm2020/lib/features/price-parameter-types/components/price-parameter-types.component.mjs +3 -3
  62. package/esm2020/lib/features/price-parameters/components/price-parameter-form-cost-items.component.mjs +32 -0
  63. package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.mjs +52 -0
  64. package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.mjs +84 -0
  65. package/esm2020/lib/features/price-parameters/components/price-parameter-form-items.component.mjs +43 -0
  66. package/esm2020/lib/features/price-parameters/components/price-parameter-form-price-lists.component.mjs +42 -0
  67. package/esm2020/lib/features/price-parameters/components/price-parameter-form.component.mjs +252 -0
  68. package/esm2020/lib/features/price-parameters/components/price-parameters.component.mjs +78 -0
  69. package/esm2020/lib/features/price-parameters/hit-price-parameters-routing.module.mjs +46 -0
  70. package/esm2020/lib/features/price-parameters/hit-price-parameters.module.mjs +93 -0
  71. package/esm2020/lib/features/price-parameters/price-parameter-cost-match.service.mjs +21 -0
  72. package/esm2020/lib/features/price-parameters/price-parameter-form-data.service.mjs +50 -0
  73. package/esm2020/lib/features/price-parameters/price-parameter-l10n-helper.mjs +7 -0
  74. package/esm2020/lib/features/price-parameters/price-parameter-lookups.service.mjs +32 -0
  75. package/esm2020/lib/kadooglu-keops-routing.module.mjs +25 -1
  76. package/esm2020/lib/shared/amount-currency-input/amount-currency-input.component.mjs +66 -0
  77. package/esm2020/lib/shared/cost-item-classification.utils.mjs +12 -0
  78. package/esm2020/lib/shared/cost-item-rows.builder.mjs +40 -0
  79. package/esm2020/lib/shared/pipes/resolve-code-name.pipe.mjs +16 -0
  80. package/esm2020/lib/shared/shared-ui.module.mjs +20 -0
  81. package/esm2020/lib/utils/currency.utils.mjs +3 -1
  82. package/esm2020/lib/utils/exchange-rate.utils.mjs +12 -0
  83. package/esm2020/proxy/bl-tracking/dtos/index.mjs +2 -0
  84. package/esm2020/proxy/bl-tracking/dtos/models.mjs +2 -0
  85. package/esm2020/proxy/business-partners/dtos/index.mjs +2 -0
  86. package/esm2020/proxy/business-partners/dtos/models.mjs +2 -0
  87. package/esm2020/proxy/carriers/dtos/index.mjs +2 -0
  88. package/esm2020/proxy/carriers/dtos/models.mjs +2 -0
  89. package/esm2020/proxy/container-loading-counts/dtos/models.mjs +1 -1
  90. package/esm2020/proxy/controllers/bl-tracking.service.mjs +36 -0
  91. package/esm2020/proxy/controllers/business-partner.service.mjs +22 -0
  92. package/esm2020/proxy/controllers/carrier.service.mjs +36 -0
  93. package/esm2020/proxy/controllers/container-loading-count.service.mjs +5 -5
  94. package/esm2020/proxy/controllers/cost-parameter.service.mjs +1 -5
  95. package/esm2020/proxy/controllers/destination-port.service.mjs +44 -0
  96. package/esm2020/proxy/controllers/fob-inland-definition.service.mjs +36 -0
  97. package/esm2020/proxy/controllers/freight-offer.service.mjs +57 -0
  98. package/esm2020/proxy/controllers/incoterm.service.mjs +36 -0
  99. package/esm2020/proxy/controllers/index.mjs +15 -1
  100. package/esm2020/proxy/controllers/item-package-group.service.mjs +40 -0
  101. package/esm2020/proxy/controllers/item-package-type.service.mjs +40 -0
  102. package/esm2020/proxy/controllers/item-product-type.service.mjs +40 -0
  103. package/esm2020/proxy/controllers/line.service.mjs +36 -0
  104. package/esm2020/proxy/controllers/pos.service.mjs +36 -0
  105. package/esm2020/proxy/controllers/price-list.service.mjs +28 -0
  106. package/esm2020/proxy/controllers/price-parameter.service.mjs +40 -0
  107. package/esm2020/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +1 -4
  108. package/esm2020/proxy/cost-parameters/dtos/models.mjs +1 -1
  109. package/esm2020/proxy/destination-ports/dtos/index.mjs +2 -0
  110. package/esm2020/proxy/destination-ports/dtos/models.mjs +2 -0
  111. package/esm2020/proxy/fob-inland-definitions/dtos/index.mjs +2 -0
  112. package/esm2020/proxy/fob-inland-definitions/dtos/models.mjs +2 -0
  113. package/esm2020/proxy/freight-offers/dtos/index.mjs +2 -0
  114. package/esm2020/proxy/freight-offers/dtos/models.mjs +2 -0
  115. package/esm2020/proxy/incoterms/dtos/index.mjs +2 -0
  116. package/esm2020/proxy/incoterms/dtos/models.mjs +2 -0
  117. package/esm2020/proxy/item-package-groups/dtos/index.mjs +2 -0
  118. package/esm2020/proxy/item-package-groups/dtos/models.mjs +2 -0
  119. package/esm2020/proxy/item-package-types/dtos/index.mjs +2 -0
  120. package/esm2020/proxy/item-package-types/dtos/models.mjs +2 -0
  121. package/esm2020/proxy/item-product-types/dtos/index.mjs +2 -0
  122. package/esm2020/proxy/item-product-types/dtos/models.mjs +2 -0
  123. package/esm2020/proxy/lines/dtos/index.mjs +2 -0
  124. package/esm2020/proxy/lines/dtos/models.mjs +2 -0
  125. package/esm2020/proxy/pos/dtos/index.mjs +2 -0
  126. package/esm2020/proxy/pos/dtos/models.mjs +2 -0
  127. package/esm2020/proxy/price-lists/dtos/index.mjs +2 -0
  128. package/esm2020/proxy/price-lists/dtos/models.mjs +2 -0
  129. package/esm2020/proxy/price-parameters/dtos/index.mjs +2 -0
  130. package/esm2020/proxy/price-parameters/dtos/models.mjs +2 -0
  131. package/esm2020/proxy/price-parameters/price-parameter-status.enum.mjs +9 -0
  132. package/esm2020/proxy/public-api.mjs +16 -1
  133. package/fesm2015/hitsoft-kadooglu-keops-config.mjs +131 -3
  134. package/fesm2015/hitsoft-kadooglu-keops-config.mjs.map +1 -1
  135. package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs +498 -12
  136. package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs.map +1 -1
  137. package/fesm2015/hitsoft-kadooglu-keops.mjs +3958 -719
  138. package/fesm2015/hitsoft-kadooglu-keops.mjs.map +1 -1
  139. package/fesm2020/hitsoft-kadooglu-keops-config.mjs +131 -3
  140. package/fesm2020/hitsoft-kadooglu-keops-config.mjs.map +1 -1
  141. package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs +498 -12
  142. package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs.map +1 -1
  143. package/fesm2020/hitsoft-kadooglu-keops.mjs +3934 -708
  144. package/fesm2020/hitsoft-kadooglu-keops.mjs.map +1 -1
  145. package/lib/features/bl-tracking/components/bl-tracking-form.component.d.ts +24 -0
  146. package/lib/features/bl-tracking/components/bl-tracking.component.d.ts +22 -0
  147. package/lib/features/bl-tracking/hit-bl-tracking-routing.module.d.ts +7 -0
  148. package/lib/features/bl-tracking/hit-bl-tracking.module.d.ts +18 -0
  149. package/lib/features/carriers/components/carrier-form.component.d.ts +24 -0
  150. package/lib/features/carriers/components/carriers.component.d.ts +22 -0
  151. package/lib/features/carriers/hit-carriers-routing.module.d.ts +7 -0
  152. package/lib/features/carriers/hit-carriers.module.d.ts +18 -0
  153. package/lib/features/container-loading-counts/components/container-loading-counts.component.d.ts +2 -2
  154. package/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.d.ts +1 -1
  155. package/lib/features/cost-calculation/components/cost-calculation-inputs.component.d.ts +3 -2
  156. package/lib/features/cost-calculation/components/cost-calculation.component.d.ts +3 -3
  157. package/lib/features/cost-calculation/hit-cost-calculation.module.d.ts +2 -1
  158. package/lib/features/cost-parameters/components/cost-parameter-form.component.d.ts +9 -6
  159. package/lib/features/cost-parameters/components/cost-parameters.component.d.ts +6 -5
  160. package/lib/features/destination-ports/components/destination-port-form.component.d.ts +25 -0
  161. package/lib/features/destination-ports/components/destination-ports.component.d.ts +24 -0
  162. package/lib/features/destination-ports/hit-destination-ports-routing.module.d.ts +7 -0
  163. package/lib/features/destination-ports/hit-destination-ports.module.d.ts +18 -0
  164. package/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.d.ts +24 -0
  165. package/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.d.ts +22 -0
  166. package/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.d.ts +7 -0
  167. package/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.d.ts +18 -0
  168. package/lib/features/freight-offers/components/freight-offer-copy.component.d.ts +22 -0
  169. package/lib/features/freight-offers/components/freight-offer-form.component.d.ts +49 -0
  170. package/lib/features/freight-offers/components/freight-offers.component.d.ts +47 -0
  171. package/lib/features/freight-offers/hit-freight-offers-routing.module.d.ts +7 -0
  172. package/lib/features/freight-offers/hit-freight-offers.module.d.ts +19 -0
  173. package/lib/features/incoterms/components/incoterm-form.component.d.ts +24 -0
  174. package/lib/features/incoterms/components/incoterms.component.d.ts +22 -0
  175. package/lib/features/incoterms/hit-incoterms-routing.module.d.ts +7 -0
  176. package/lib/features/incoterms/hit-incoterms.module.d.ts +18 -0
  177. package/lib/features/index.d.ts +21 -0
  178. package/lib/features/item-package-groups/components/item-package-group-form.component.d.ts +24 -0
  179. package/lib/features/item-package-groups/components/item-package-groups.component.d.ts +22 -0
  180. package/lib/features/item-package-groups/hit-item-package-groups-routing.module.d.ts +7 -0
  181. package/lib/features/item-package-groups/hit-item-package-groups.module.d.ts +18 -0
  182. package/lib/features/item-package-types/components/item-package-type-form.component.d.ts +24 -0
  183. package/lib/features/item-package-types/components/item-package-types.component.d.ts +22 -0
  184. package/lib/features/item-package-types/hit-item-package-types-routing.module.d.ts +7 -0
  185. package/lib/features/item-package-types/hit-item-package-types.module.d.ts +18 -0
  186. package/lib/features/item-product-types/components/item-product-type-form.component.d.ts +24 -0
  187. package/lib/features/item-product-types/components/item-product-types.component.d.ts +22 -0
  188. package/lib/features/item-product-types/hit-item-product-types-routing.module.d.ts +7 -0
  189. package/lib/features/item-product-types/hit-item-product-types.module.d.ts +18 -0
  190. package/lib/features/lines/components/line-form.component.d.ts +24 -0
  191. package/lib/features/lines/components/lines.component.d.ts +22 -0
  192. package/lib/features/lines/hit-lines-routing.module.d.ts +7 -0
  193. package/lib/features/lines/hit-lines.module.d.ts +18 -0
  194. package/lib/features/pos/components/pos-form.component.d.ts +24 -0
  195. package/lib/features/pos/components/pos.component.d.ts +22 -0
  196. package/lib/features/pos/hit-pos-routing.module.d.ts +7 -0
  197. package/lib/features/pos/hit-pos.module.d.ts +18 -0
  198. package/lib/features/price-parameters/components/price-parameter-form-cost-items.component.d.ts +15 -0
  199. package/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.d.ts +24 -0
  200. package/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.d.ts +22 -0
  201. package/lib/features/price-parameters/components/price-parameter-form-items.component.d.ts +15 -0
  202. package/lib/features/price-parameters/components/price-parameter-form-price-lists.component.d.ts +15 -0
  203. package/lib/features/price-parameters/components/price-parameter-form.component.d.ts +70 -0
  204. package/lib/features/price-parameters/components/price-parameters.component.d.ts +27 -0
  205. package/lib/features/price-parameters/hit-price-parameters-routing.module.d.ts +7 -0
  206. package/lib/features/price-parameters/hit-price-parameters.module.d.ts +24 -0
  207. package/lib/features/price-parameters/price-parameter-cost-match.service.d.ts +10 -0
  208. package/lib/features/price-parameters/price-parameter-form-data.service.d.ts +26 -0
  209. package/lib/features/price-parameters/price-parameter-l10n-helper.d.ts +2 -0
  210. package/lib/features/price-parameters/price-parameter-lookups.service.d.ts +16 -0
  211. package/lib/shared/amount-currency-input/amount-currency-input.component.d.ts +23 -0
  212. package/lib/shared/cost-item-classification.utils.d.ts +7 -0
  213. package/lib/shared/cost-item-rows.builder.d.ts +11 -0
  214. package/lib/shared/pipes/resolve-code-name.pipe.d.ts +11 -0
  215. package/lib/shared/shared-ui.module.d.ts +10 -0
  216. package/lib/utils/currency.utils.d.ts +1 -0
  217. package/lib/utils/exchange-rate.utils.d.ts +2 -0
  218. package/package.json +1 -1
  219. package/proxy/bl-tracking/dtos/index.d.ts +1 -0
  220. package/proxy/bl-tracking/dtos/models.d.ts +25 -0
  221. package/proxy/business-partners/dtos/index.d.ts +1 -0
  222. package/proxy/business-partners/dtos/models.d.ts +4 -0
  223. package/proxy/carriers/dtos/index.d.ts +1 -0
  224. package/proxy/carriers/dtos/models.d.ts +10 -0
  225. package/proxy/container-loading-counts/dtos/models.d.ts +1 -1
  226. package/proxy/controllers/bl-tracking.service.d.ts +14 -0
  227. package/proxy/controllers/business-partner.service.d.ts +11 -0
  228. package/proxy/controllers/carrier.service.d.ts +14 -0
  229. package/proxy/controllers/container-loading-count.service.d.ts +2 -2
  230. package/proxy/controllers/cost-parameter.service.d.ts +1 -2
  231. package/proxy/controllers/destination-port.service.d.ts +17 -0
  232. package/proxy/controllers/fob-inland-definition.service.d.ts +14 -0
  233. package/proxy/controllers/freight-offer.service.d.ts +19 -0
  234. package/proxy/controllers/incoterm.service.d.ts +14 -0
  235. package/proxy/controllers/index.d.ts +14 -0
  236. package/proxy/controllers/item-package-group.service.d.ts +15 -0
  237. package/proxy/controllers/item-package-type.service.d.ts +15 -0
  238. package/proxy/controllers/item-product-type.service.d.ts +15 -0
  239. package/proxy/controllers/line.service.d.ts +14 -0
  240. package/proxy/controllers/pos.service.d.ts +14 -0
  241. package/proxy/controllers/price-list.service.d.ts +12 -0
  242. package/proxy/controllers/price-parameter.service.d.ts +15 -0
  243. package/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.d.ts +1 -4
  244. package/proxy/cost-parameters/dtos/models.d.ts +0 -8
  245. package/proxy/destination-ports/dtos/index.d.ts +1 -0
  246. package/proxy/destination-ports/dtos/models.d.ts +19 -0
  247. package/proxy/fob-inland-definitions/dtos/index.d.ts +1 -0
  248. package/proxy/fob-inland-definitions/dtos/models.d.ts +19 -0
  249. package/proxy/freight-offers/dtos/index.d.ts +1 -0
  250. package/proxy/freight-offers/dtos/models.d.ts +66 -0
  251. package/proxy/incoterms/dtos/index.d.ts +1 -0
  252. package/proxy/incoterms/dtos/models.d.ts +22 -0
  253. package/proxy/item-package-groups/dtos/index.d.ts +1 -0
  254. package/proxy/item-package-groups/dtos/models.d.ts +13 -0
  255. package/proxy/item-package-types/dtos/index.d.ts +1 -0
  256. package/proxy/item-package-types/dtos/models.d.ts +13 -0
  257. package/proxy/item-product-types/dtos/index.d.ts +1 -0
  258. package/proxy/item-product-types/dtos/models.d.ts +13 -0
  259. package/proxy/lines/dtos/index.d.ts +1 -0
  260. package/proxy/lines/dtos/models.d.ts +10 -0
  261. package/proxy/pos/dtos/index.d.ts +1 -0
  262. package/proxy/pos/dtos/models.d.ts +10 -0
  263. package/proxy/price-lists/dtos/index.d.ts +1 -0
  264. package/proxy/price-lists/dtos/models.d.ts +10 -0
  265. package/proxy/price-parameters/dtos/index.d.ts +1 -0
  266. package/proxy/price-parameters/dtos/models.d.ts +78 -0
  267. package/proxy/price-parameters/price-parameter-status.enum.d.ts +6 -0
  268. package/proxy/public-api.d.ts +15 -0
@@ -1,27 +1,30 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { finalize } from 'rxjs/operators';
4
- import { CostItemCalculationType, Currency, CostParameterStatus, } from '@hitsoft/kadooglu-keops/proxy';
4
+ import { CostItemCalculationType, CostParameterStatus, } from '@hitsoft/kadooglu-keops/proxy';
5
5
  import { statusLabels } from '../cost-parameter-l10n-helper';
6
6
  import { calculationTypeLabels } from '../../cost-items/cost-item-l10n-helper';
7
7
  import { CURRENCY_OPTIONS } from '../../../utils/currency.utils';
8
+ import { isRateCostItem, isCustomCostItem } from '../../../shared/cost-item-classification.utils';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/forms";
10
11
  import * as i2 from "@hitsoft/kadooglu-keops/proxy";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@abp/ng.core";
13
- import * as i5 from "@abp/ng.theme.shared";
14
- import * as i6 from "@ng-bootstrap/ng-bootstrap";
12
+ import * as i3 from "../../../shared/cost-item-rows.builder";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "@abp/ng.core";
15
+ import * as i6 from "@abp/ng.theme.shared";
16
+ import * as i7 from "@ng-bootstrap/ng-bootstrap";
15
17
  const statusOptions = [
16
18
  CostParameterStatus.InProgress,
17
19
  CostParameterStatus.Active,
18
20
  CostParameterStatus.Passive,
19
21
  ].map(value => ({ value, label: statusLabels[value] }));
20
22
  export class CostParameterFormComponent {
21
- constructor(fb, service, costItemService) {
23
+ constructor(fb, service, costItemService, rowsBuilder) {
22
24
  this.fb = fb;
23
25
  this.service = service;
24
26
  this.costItemService = costItemService;
27
+ this.rowsBuilder = rowsBuilder;
25
28
  this.visible = false;
26
29
  this.mode = 'create';
27
30
  this.current = null;
@@ -34,6 +37,8 @@ export class CostParameterFormComponent {
34
37
  this.statusOptions = statusOptions;
35
38
  this.currencyOptions = CURRENCY_OPTIONS;
36
39
  this.customLabel = calculationTypeLabels[CostItemCalculationType.Custom];
40
+ this.isRate = isRateCostItem;
41
+ this.isCustom = isCustomCostItem;
37
42
  }
38
43
  ngOnInit() {
39
44
  this.form = this.fb.group({
@@ -53,12 +58,6 @@ export class CostParameterFormComponent {
53
58
  ? 'Keops::CostParameters:CreateTitle'
54
59
  : 'Keops::CostParameters:EditTitle';
55
60
  }
56
- isRate(costItem) {
57
- return costItem.calculationType === CostItemCalculationType.Rate;
58
- }
59
- isCustom(costItem) {
60
- return costItem.calculationType === CostItemCalculationType.Custom;
61
- }
62
61
  onVisibleChange(value) {
63
62
  this.visible = value;
64
63
  this.visibleChange.emit(value);
@@ -69,16 +68,9 @@ export class CostParameterFormComponent {
69
68
  return;
70
69
  }
71
70
  this.saving = true;
72
- const { items, ...rest } = this.form.value;
73
71
  const input = {
74
- ...rest,
75
- items: this.costItems.map((costItem, index) => ({
76
- costItemCode: costItem.code,
77
- value: items[index].value != null && items[index].value !== ''
78
- ? String(items[index].value)
79
- : null,
80
- currency: this.isRate(costItem) || this.isCustom(costItem) ? null : items[index].currency,
81
- })),
72
+ ...this.form.value,
73
+ items: this.rowsBuilder.toInput(this.itemsArray),
82
74
  };
83
75
  const request$ = this.mode === 'create'
84
76
  ? this.service.create(input)
@@ -93,25 +85,17 @@ export class CostParameterFormComponent {
93
85
  }
94
86
  loadCostItems() {
95
87
  this.costItemService.getList().subscribe(data => {
96
- this.costItems = [...data].sort((a, b) => (a.code ?? '').localeCompare(b.code ?? '', undefined, { numeric: true }));
97
- const currentItemsByCode = new Map((this.current?.items ?? []).map(item => [item.costItemCode, item]));
98
- this.itemsArray.clear();
99
- this.costItems.forEach(costItem => {
100
- const currentItem = currentItemsByCode.get(costItem.code);
101
- this.itemsArray.push(this.fb.group({
102
- value: [currentItem?.value ?? null],
103
- currency: [currentItem?.currency ?? Currency.TRY],
104
- }));
105
- });
88
+ this.costItems = [...data].sort((a, b) => (a.displayOrder ?? 0) - (b.displayOrder ?? 0));
89
+ this.rowsBuilder.build(this.itemsArray, this.costItems, this.current?.items);
106
90
  });
107
91
  }
108
92
  }
109
- CostParameterFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostParameterFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.CostParameterService }, { token: i2.CostItemService }], target: i0.ɵɵFactoryTarget.Component });
110
- CostParameterFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostParameterFormComponent, selector: "lib-cost-parameter-form", inputs: { visible: "visible", mode: "mode", current: "current", productGroupOptions: "productGroupOptions", regionOptions: "regionOptions" }, outputs: { visibleChange: "visibleChange", saved: "saved" }, ngImport: i0, template: "<abp-modal\r\n [(visible)]=\"visible\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n [busy]=\"saving\"\r\n [options]=\"{ size: 'xl' }\"\r\n>\r\n <ng-template #abpHeader>\r\n <h3>{{ title | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::CostParameters:Info' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mb-3\">\r\n <label for=\"region\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"region\" class=\"form-select\" formControlName=\"region\">\r\n <option [ngValue]=\"null\" disabled hidden>{{ 'Keops::SelectAnOption' | abpLocalization }}</option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"productGroup\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:ProductGroup' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"productGroup\" class=\"form-select\" formControlName=\"productGroup\">\r\n <option [ngValue]=\"null\" disabled hidden>{{ 'Keops::SelectAnOption' | abpLocalization }}</option>\r\n <option *ngFor=\"let productGroup of productGroupOptions\" [ngValue]=\"productGroup.code\">\r\n {{ productGroup.name }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"status\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"status\" class=\"form-select\" formControlName=\"status\">\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"description\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Description' | abpLocalization }}\r\n </label>\r\n <textarea\r\n id=\"description\"\r\n class=\"form-control\"\r\n formControlName=\"description\"\r\n rows=\"3\"\r\n ></textarea>\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::CostParameters:ItemValues' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <table class=\"table table-sm align-middle\">\r\n <colgroup>\r\n <col style=\"width: 50%\" />\r\n <col style=\"width: 30%\" />\r\n <col style=\"width: 20%\" />\r\n </colgroup>\r\n <tbody formArrayName=\"items\">\r\n <tr *ngFor=\"let costItem of costItems; let i = index\" [formGroupName]=\"i\">\r\n <td>\r\n {{ costItem.name }}\r\n <span class=\"badge bg-info ms-1\" *ngIf=\"isCustom(costItem)\">\r\n {{ customLabel | abpLocalization }}\r\n </span>\r\n </td>\r\n <td>\r\n <input\r\n *ngIf=\"isCustom(costItem); else valueInput\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n disabled\r\n [placeholder]=\"'Keops::CostParameters:AutoCalculated' | abpLocalization\"\r\n />\r\n <ng-template #valueInput>\r\n <div class=\"input-group input-group-sm\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"value\" />\r\n <span class=\"input-group-text px-3\" *ngIf=\"isRate(costItem)\">%</span>\r\n </div>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <select\r\n *ngIf=\"!isRate(costItem) && !isCustom(costItem)\"\r\n class=\"form-select form-select-sm\"\r\n formControlName=\"currency\"\r\n >\r\n <option *ngFor=\"let currency of currencyOptions\" [ngValue]=\"currency.value\">\r\n {{ currency.label }}\r\n </option>\r\n </select>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i5.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i5.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
93
+ CostParameterFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostParameterFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.CostParameterService }, { token: i2.CostItemService }, { token: i3.CostItemRowsBuilder }], target: i0.ɵɵFactoryTarget.Component });
94
+ CostParameterFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostParameterFormComponent, selector: "lib-cost-parameter-form", inputs: { visible: "visible", mode: "mode", current: "current", productGroupOptions: "productGroupOptions", regionOptions: "regionOptions" }, outputs: { visibleChange: "visibleChange", saved: "saved" }, ngImport: i0, template: "<abp-modal\r\n [(visible)]=\"visible\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n [busy]=\"saving\"\r\n [options]=\"{ size: 'xl' }\"\r\n>\r\n <ng-template #abpHeader>\r\n <h3>{{ title | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::CostParameters:Info' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mb-3\">\r\n <label for=\"region\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"region\" class=\"form-select\" formControlName=\"region\">\r\n <option [ngValue]=\"null\" disabled hidden>{{ 'Keops::SelectAnOption' | abpLocalization }}</option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"productGroup\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:ProductGroup' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"productGroup\" class=\"form-select\" formControlName=\"productGroup\">\r\n <option [ngValue]=\"null\" disabled hidden>{{ 'Keops::SelectAnOption' | abpLocalization }}</option>\r\n <option *ngFor=\"let productGroup of productGroupOptions\" [ngValue]=\"productGroup.code\">\r\n {{ productGroup.name }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"status\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"status\" class=\"form-select\" formControlName=\"status\">\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"description\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Description' | abpLocalization }}\r\n </label>\r\n <textarea\r\n id=\"description\"\r\n class=\"form-control\"\r\n formControlName=\"description\"\r\n rows=\"3\"\r\n ></textarea>\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::CostParameters:ItemValues' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <table class=\"table table-sm align-middle\">\r\n <colgroup>\r\n <col style=\"width: 50%\" />\r\n <col style=\"width: 30%\" />\r\n <col style=\"width: 20%\" />\r\n </colgroup>\r\n <tbody formArrayName=\"items\">\r\n <tr *ngFor=\"let costItem of costItems; let i = index\" [formGroupName]=\"i\">\r\n <td>\r\n {{ costItem.name }}\r\n <span class=\"badge bg-info ms-1\" *ngIf=\"isCustom(costItem)\">\r\n {{ customLabel | abpLocalization }}\r\n </span>\r\n </td>\r\n <td>\r\n <input\r\n *ngIf=\"isCustom(costItem); else valueInput\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n disabled\r\n [placeholder]=\"'Keops::CostParameters:AutoCalculated' | abpLocalization\"\r\n />\r\n <ng-template #valueInput>\r\n <div class=\"input-group input-group-sm\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"value\" />\r\n <span class=\"input-group-text px-3\" *ngIf=\"isRate(costItem)\">%</span>\r\n </div>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <select\r\n *ngIf=\"!isRate(costItem) && !isCustom(costItem)\"\r\n class=\"form-select form-select-sm\"\r\n formControlName=\"currency\"\r\n >\r\n <option *ngFor=\"let currency of currencyOptions\" [ngValue]=\"currency.value\">\r\n {{ currency.label }}\r\n </option>\r\n </select>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i5.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i7.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
111
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostParameterFormComponent, decorators: [{
112
96
  type: Component,
113
97
  args: [{ selector: 'lib-cost-parameter-form', template: "<abp-modal\r\n [(visible)]=\"visible\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n [busy]=\"saving\"\r\n [options]=\"{ size: 'xl' }\"\r\n>\r\n <ng-template #abpHeader>\r\n <h3>{{ title | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::CostParameters:Info' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mb-3\">\r\n <label for=\"region\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"region\" class=\"form-select\" formControlName=\"region\">\r\n <option [ngValue]=\"null\" disabled hidden>{{ 'Keops::SelectAnOption' | abpLocalization }}</option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"productGroup\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:ProductGroup' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"productGroup\" class=\"form-select\" formControlName=\"productGroup\">\r\n <option [ngValue]=\"null\" disabled hidden>{{ 'Keops::SelectAnOption' | abpLocalization }}</option>\r\n <option *ngFor=\"let productGroup of productGroupOptions\" [ngValue]=\"productGroup.code\">\r\n {{ productGroup.name }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"status\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <select id=\"status\" class=\"form-select\" formControlName=\"status\">\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"description\" class=\"form-label\">\r\n {{ 'Keops::CostParameters:Description' | abpLocalization }}\r\n </label>\r\n <textarea\r\n id=\"description\"\r\n class=\"form-control\"\r\n formControlName=\"description\"\r\n rows=\"3\"\r\n ></textarea>\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::CostParameters:ItemValues' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <table class=\"table table-sm align-middle\">\r\n <colgroup>\r\n <col style=\"width: 50%\" />\r\n <col style=\"width: 30%\" />\r\n <col style=\"width: 20%\" />\r\n </colgroup>\r\n <tbody formArrayName=\"items\">\r\n <tr *ngFor=\"let costItem of costItems; let i = index\" [formGroupName]=\"i\">\r\n <td>\r\n {{ costItem.name }}\r\n <span class=\"badge bg-info ms-1\" *ngIf=\"isCustom(costItem)\">\r\n {{ customLabel | abpLocalization }}\r\n </span>\r\n </td>\r\n <td>\r\n <input\r\n *ngIf=\"isCustom(costItem); else valueInput\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n disabled\r\n [placeholder]=\"'Keops::CostParameters:AutoCalculated' | abpLocalization\"\r\n />\r\n <ng-template #valueInput>\r\n <div class=\"input-group input-group-sm\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"value\" />\r\n <span class=\"input-group-text px-3\" *ngIf=\"isRate(costItem)\">%</span>\r\n </div>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <select\r\n *ngIf=\"!isRate(costItem) && !isCustom(costItem)\"\r\n class=\"form-select form-select-sm\"\r\n formControlName=\"currency\"\r\n >\r\n <option *ngFor=\"let currency of currencyOptions\" [ngValue]=\"currency.value\">\r\n {{ currency.label }}\r\n </option>\r\n </select>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n" }]
114
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CostParameterService }, { type: i2.CostItemService }]; }, propDecorators: { visible: [{
98
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CostParameterService }, { type: i2.CostItemService }, { type: i3.CostItemRowsBuilder }]; }, propDecorators: { visible: [{
115
99
  type: Input
116
100
  }], mode: [{
117
101
  type: Input
@@ -126,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
126
110
  }], saved: [{
127
111
  type: Output
128
112
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1wYXJhbWV0ZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtcGFyYW1ldGVycy9jb21wb25lbnRzL2Nvc3QtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LXBhcmFtZXRlcnMvY29tcG9uZW50cy9jb3N0LXBhcmFtZXRlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUlMLHVCQUF1QixFQUN2QixRQUFRLEVBR1IsbUJBQW1CLEdBQ3BCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQUVqRSxNQUFNLGFBQWEsR0FBRztJQUNwQixtQkFBbUIsQ0FBQyxVQUFVO0lBQzlCLG1CQUFtQixDQUFDLE1BQU07SUFDMUIsbUJBQW1CLENBQUMsT0FBTztDQUM1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLENB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QUMsV0FBVyxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDO2lCQUNsRCxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEFySFUsMEJBQTBCOzJHQUExQiwwQkFBMEIsMFFDM0J2QyxrdkxBeUlBOzJGRDlHYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0UseUJBQXlCO21LQUkxQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBDb3N0SXRlbVNlcnZpY2UsXHJcbiAgQ29zdFBhcmFtZXRlclNlcnZpY2UsXHJcbiAgQ29zdEl0ZW1EdG8sXHJcbiAgQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUsXHJcbiAgQ3VycmVuY3ksXHJcbiAgQ29zdFBhcmFtZXRlckNhdGVnb3J5TG9va3VwRHRvLFxyXG4gIENvc3RQYXJhbWV0ZXJEdG8sXHJcbiAgQ29zdFBhcmFtZXRlclN0YXR1cyxcclxufSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IHN0YXR1c0xhYmVscyB9IGZyb20gJy4uL2Nvc3QtcGFyYW1ldGVyLWwxMG4taGVscGVyJztcclxuaW1wb3J0IHsgY2FsY3VsYXRpb25UeXBlTGFiZWxzIH0gZnJvbSAnLi4vLi4vY29zdC1pdGVtcy9jb3N0LWl0ZW0tbDEwbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBDVVJSRU5DWV9PUFRJT05TIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY3VycmVuY3kudXRpbHMnO1xyXG5cclxuY29uc3Qgc3RhdHVzT3B0aW9ucyA9IFtcclxuICBDb3N0UGFyYW1ldGVyU3RhdHVzLkluUHJvZ3Jlc3MsXHJcbiAgQ29zdFBhcmFtZXRlclN0YXR1cy5BY3RpdmUsXHJcbiAgQ29zdFBhcmFtZXRlclN0YXR1cy5QYXNzaXZlLFxyXG5dLm1hcCh2YWx1ZSA9PiAoeyB2YWx1ZSwgbGFiZWw6IHN0YXR1c0xhYmVsc1t2YWx1ZV0gfSkpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29zdC1wYXJhbWV0ZXItZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nvc3QtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29zdFBhcmFtZXRlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHZpc2libGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb2RlOiAnY3JlYXRlJyB8ICdlZGl0JyA9ICdjcmVhdGUnO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnQ6IENvc3RQYXJhbWV0ZXJEdG8gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwcm9kdWN0R3JvdXBPcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG9bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHJlZ2lvbk9wdGlvbnM6IENvc3RQYXJhbWV0ZXJDYXRlZ29yeUxvb2t1cER0b1tdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzYXZpbmcgPSBmYWxzZTtcclxuICBjb3N0SXRlbXM6IENvc3RJdGVtRHRvW10gPSBbXTtcclxuXHJcbiAgcmVhZG9ubHkgc3RhdHVzT3B0aW9ucyA9IHN0YXR1c09wdGlvbnM7XHJcbiAgcmVhZG9ubHkgY3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OUztcclxuICByZWFkb25seSBjdXN0b21MYWJlbCA9IGNhbGN1bGF0aW9uVHlwZUxhYmVsc1tDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZS5DdXN0b21dO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29zdEl0ZW1TZXJ2aWNlOiBDb3N0SXRlbVNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICByZWdpb246IFt0aGlzLmN1cnJlbnQ/LnJlZ2lvbiA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBwcm9kdWN0R3JvdXA6IFt0aGlzLmN1cnJlbnQ/LnByb2R1Y3RHcm91cCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBzdGF0dXM6IFt0aGlzLmN1cnJlbnQ/LnN0YXR1cyA/PyBDb3N0UGFyYW1ldGVyU3RhdHVzLkluUHJvZ3Jlc3MsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbdGhpcy5jdXJyZW50Py5kZXNjcmlwdGlvbiA/PyAnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMildXSxcclxuICAgICAgaXRlbXM6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2FkQ29zdEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbXNBcnJheSgpOiBGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2l0ZW1zJykgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnY3JlYXRlJ1xyXG4gICAgICA/ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6Q3JlYXRlVGl0bGUnXHJcbiAgICAgIDogJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpFZGl0VGl0bGUnO1xyXG4gIH1cclxuXHJcbiAgaXNSYXRlKGNvc3RJdGVtOiBDb3N0SXRlbUR0byk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvc3RJdGVtLmNhbGN1bGF0aW9uVHlwZSA9PT0gQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUuUmF0ZTtcclxuICB9XHJcblxyXG4gIGlzQ3VzdG9tKGNvc3RJdGVtOiBDb3N0SXRlbUR0byk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvc3RJdGVtLmNhbGN1bGF0aW9uVHlwZSA9PT0gQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUuQ3VzdG9tO1xyXG4gIH1cclxuXHJcbiAgb25WaXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB7IGl0ZW1zLCAuLi5yZXN0IH0gPSB0aGlzLmZvcm0udmFsdWU7XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSB7XHJcbiAgICAgIC4uLnJlc3QsXHJcbiAgICAgIGl0ZW1zOiB0aGlzLmNvc3RJdGVtcy5tYXAoKGNvc3RJdGVtLCBpbmRleCkgPT4gKHtcclxuICAgICAgICBjb3N0SXRlbUNvZGU6IGNvc3RJdGVtLmNvZGUsXHJcbiAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICBpdGVtc1tpbmRleF0udmFsdWUgIT0gbnVsbCAmJiBpdGVtc1tpbmRleF0udmFsdWUgIT09ICcnXHJcbiAgICAgICAgICAgID8gU3RyaW5nKGl0ZW1zW2luZGV4XS52YWx1ZSlcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIGN1cnJlbmN5OiB0aGlzLmlzUmF0ZShjb3N0SXRlbSkgfHwgdGhpcy5pc0N1c3RvbShjb3N0SXRlbSkgPyBudWxsIDogaXRlbXNbaW5kZXhdLmN1cnJlbmN5LFxyXG4gICAgICB9KSksXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QkID1cclxuICAgICAgdGhpcy5tb2RlID09PSAnY3JlYXRlJ1xyXG4gICAgICAgID8gdGhpcy5zZXJ2aWNlLmNyZWF0ZShpbnB1dClcclxuICAgICAgICA6IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5jdXJyZW50IS5jb2RlISwgaW5wdXQpO1xyXG5cclxuICAgIHJlcXVlc3QkLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuc2F2aW5nID0gZmFsc2UpKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdCgpO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ29zdEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb3N0SXRlbVNlcnZpY2UuZ2V0TGlzdCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5jb3N0SXRlbXMgPSBbLi4uZGF0YV0uc29ydCgoYSwgYikgPT5cclxuICAgICAgICAoYS5jb2RlID8/ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSA/PyAnJywgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSksXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBjdXJyZW50SXRlbXNCeUNvZGUgPSBuZXcgTWFwKFxyXG4gICAgICAgICh0aGlzLmN1cnJlbnQ/Lml0ZW1zID8/IFtdKS5tYXAoaXRlbSA9PiBbaXRlbS5jb3N0SXRlbUNvZGUsIGl0ZW1dKSxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuaXRlbXNBcnJheS5jbGVhcigpO1xyXG4gICAgICB0aGlzLmNvc3RJdGVtcy5mb3JFYWNoKGNvc3RJdGVtID0+IHtcclxuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGN1cnJlbnRJdGVtc0J5Q29kZS5nZXQoY29zdEl0ZW0uY29kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXRlbXNBcnJheS5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBbY3VycmVudEl0ZW0/LnZhbHVlID8/IG51bGxdLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogW2N1cnJlbnRJdGVtPy5jdXJyZW5jeSA/PyBDdXJyZW5jeS5UUlldLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1tb2RhbFxyXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcbiAgKHZpc2libGVDaGFuZ2UpPVwib25WaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG4gIFtidXN5XT1cInNhdmluZ1wiXHJcbiAgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgdGl0bGUgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtdGFic1wiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkluZm8nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlZ2lvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpSZWdpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJyZWdpb25cIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVnaW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZCBoaWRkZW4+e3sgJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHJlZ2lvbiBvZiByZWdpb25PcHRpb25zXCIgW25nVmFsdWVdPVwicmVnaW9uLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcmVnaW9uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByb2R1Y3RHcm91cFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpQcm9kdWN0R3JvdXAnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJwcm9kdWN0R3JvdXBcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdEdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZCBoaWRkZW4+e3sgJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHByb2R1Y3RHcm91cCBvZiBwcm9kdWN0R3JvdXBPcHRpb25zXCIgW25nVmFsdWVdPVwicHJvZHVjdEdyb3VwLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdEdyb3VwLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXR1c1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpTdGF0dXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzdGF0dXNcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2Ygc3RhdHVzT3B0aW9uc1wiIFtuZ1ZhbHVlXT1cIm9wdC52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICBpZD1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgIHJvd3M9XCIzXCJcclxuICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkl0ZW1WYWx1ZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogNTAlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogMzAlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogMjAlXCIgLz5cclxuICAgICAgICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY29zdEl0ZW0gb2YgY29zdEl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgY29zdEl0ZW0ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctaW5mbyBtcy0xXCIgKm5nSWY9XCJpc0N1c3RvbShjb3N0SXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGN1c3RvbUxhYmVsIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQ3VzdG9tKGNvc3RJdGVtKTsgZWxzZSB2YWx1ZUlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6Q29zdFBhcmFtZXRlcnM6QXV0b0NhbGN1bGF0ZWQnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWVJbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHQgcHgtM1wiICpuZ0lmPVwiaXNSYXRlKGNvc3RJdGVtKVwiPiU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSYXRlKGNvc3RJdGVtKSAmJiAhaXNDdXN0b20oY29zdEl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGN1cnJlbmN5IG9mIGN1cnJlbmN5T3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImN1cnJlbmN5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGN1cnJlbmN5LmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuXHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gYWJwQ2xvc2UgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIj5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcclxuICAgICAgYnV0dG9uQ2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICBbbG9hZGluZ109XCJzYXZpbmdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybT8uaW52YWxpZFwiXHJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1wYXJhbWV0ZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtcGFyYW1ldGVycy9jb21wb25lbnRzL2Nvc3QtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LXBhcmFtZXRlcnMvY29tcG9uZW50cy9jb3N0LXBhcmFtZXRlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUlMLHVCQUF1QixFQUV2QixtQkFBbUIsR0FFcEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7QUFHbEcsTUFBTSxhQUFhLEdBQUc7SUFDcEIsbUJBQW1CLENBQUMsVUFBVTtJQUM5QixtQkFBbUIsQ0FBQyxNQUFNO0lBQzFCLG1CQUFtQixDQUFDLE9BQU87Q0FDNUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxD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QUssQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUhBdkZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDBRQzVCdkMsa3ZMQXlJQTsyRkQ3R2EsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHlCQUF5QjtxTUFJMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgQ29zdEl0ZW1TZXJ2aWNlLFxyXG4gIENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gIENvc3RJdGVtRHRvLFxyXG4gIENvc3RJdGVtQ2FsY3VsYXRpb25UeXBlLFxyXG4gIENvc3RQYXJhbWV0ZXJEdG8sXHJcbiAgQ29zdFBhcmFtZXRlclN0YXR1cyxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG8sXHJcbn0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBzdGF0dXNMYWJlbHMgfSBmcm9tICcuLi9jb3N0LXBhcmFtZXRlci1sMTBuLWhlbHBlcic7XHJcbmltcG9ydCB7IGNhbGN1bGF0aW9uVHlwZUxhYmVscyB9IGZyb20gJy4uLy4uL2Nvc3QtaXRlbXMvY29zdC1pdGVtLWwxMG4taGVscGVyJztcclxuaW1wb3J0IHsgQ1VSUkVOQ1lfT1BUSU9OUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2N1cnJlbmN5LnV0aWxzJztcclxuaW1wb3J0IHsgaXNSYXRlQ29zdEl0ZW0sIGlzQ3VzdG9tQ29zdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29zdC1pdGVtLWNsYXNzaWZpY2F0aW9uLnV0aWxzJztcclxuaW1wb3J0IHsgQ29zdEl0ZW1Sb3dzQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb3N0LWl0ZW0tcm93cy5idWlsZGVyJztcclxuXHJcbmNvbnN0IHN0YXR1c09wdGlvbnMgPSBbXHJcbiAgQ29zdFBhcmFtZXRlclN0YXR1cy5JblByb2dyZXNzLFxyXG4gIENvc3RQYXJhbWV0ZXJTdGF0dXMuQWN0aXZlLFxyXG4gIENvc3RQYXJhbWV0ZXJTdGF0dXMuUGFzc2l2ZSxcclxuXS5tYXAodmFsdWUgPT4gKHsgdmFsdWUsIGxhYmVsOiBzdGF0dXNMYWJlbHNbdmFsdWVdIH0pKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvc3QtcGFyYW1ldGVyLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LXBhcmFtZXRlci1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvc3RQYXJhbWV0ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB2aXNpYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcclxuICBASW5wdXQoKSBjdXJyZW50OiBDb3N0UGFyYW1ldGVyRHRvIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHJvZHVjdEdyb3VwT3B0aW9uczogQ29zdFBhcmFtZXRlckNhdGVnb3J5RHRvW10gPSBbXTtcclxuICBASW5wdXQoKSByZWdpb25PcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG9bXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgY29zdEl0ZW1zOiBDb3N0SXRlbUR0b1tdID0gW107XHJcblxyXG4gIHJlYWRvbmx5IHN0YXR1c09wdGlvbnMgPSBzdGF0dXNPcHRpb25zO1xyXG4gIHJlYWRvbmx5IGN1cnJlbmN5T3B0aW9ucyA9IENVUlJFTkNZX09QVElPTlM7XHJcbiAgcmVhZG9ubHkgY3VzdG9tTGFiZWwgPSBjYWxjdWxhdGlvblR5cGVMYWJlbHNbQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUuQ3VzdG9tXTtcclxuICByZWFkb25seSBpc1JhdGUgPSBpc1JhdGVDb3N0SXRlbTtcclxuICByZWFkb25seSBpc0N1c3RvbSA9IGlzQ3VzdG9tQ29zdEl0ZW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3N0SXRlbVNlcnZpY2U6IENvc3RJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm93c0J1aWxkZXI6IENvc3RJdGVtUm93c0J1aWxkZXIsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICByZWdpb246IFt0aGlzLmN1cnJlbnQ/LnJlZ2lvbiA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBwcm9kdWN0R3JvdXA6IFt0aGlzLmN1cnJlbnQ/LnByb2R1Y3RHcm91cCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBzdGF0dXM6IFt0aGlzLmN1cnJlbnQ/LnN0YXR1cyA/PyBDb3N0UGFyYW1ldGVyU3RhdHVzLkluUHJvZ3Jlc3MsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbdGhpcy5jdXJyZW50Py5kZXNjcmlwdGlvbiA/PyAnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMildXSxcclxuICAgICAgaXRlbXM6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2FkQ29zdEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbXNBcnJheSgpOiBGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2l0ZW1zJykgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnY3JlYXRlJ1xyXG4gICAgICA/ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6Q3JlYXRlVGl0bGUnXHJcbiAgICAgIDogJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpFZGl0VGl0bGUnO1xyXG4gIH1cclxuXHJcbiAgb25WaXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxyXG4gICAgICBpdGVtczogdGhpcy5yb3dzQnVpbGRlci50b0lucHV0KHRoaXMuaXRlbXNBcnJheSksXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QkID1cclxuICAgICAgdGhpcy5tb2RlID09PSAnY3JlYXRlJ1xyXG4gICAgICAgID8gdGhpcy5zZXJ2aWNlLmNyZWF0ZShpbnB1dClcclxuICAgICAgICA6IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5jdXJyZW50IS5jb2RlISwgaW5wdXQpO1xyXG5cclxuICAgIHJlcXVlc3QkLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuc2F2aW5nID0gZmFsc2UpKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdCgpO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ29zdEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb3N0SXRlbVNlcnZpY2UuZ2V0TGlzdCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5jb3N0SXRlbXMgPSBbLi4uZGF0YV0uc29ydCgoYSwgYikgPT4gKGEuZGlzcGxheU9yZGVyID8/IDApIC0gKGIuZGlzcGxheU9yZGVyID8/IDApKTtcclxuXHJcbiAgICAgIHRoaXMucm93c0J1aWxkZXIuYnVpbGQodGhpcy5pdGVtc0FycmF5LCB0aGlzLmNvc3RJdGVtcywgdGhpcy5jdXJyZW50Py5pdGVtcyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1tb2RhbFxyXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcbiAgKHZpc2libGVDaGFuZ2UpPVwib25WaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG4gIFtidXN5XT1cInNhdmluZ1wiXHJcbiAgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgdGl0bGUgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtdGFic1wiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkluZm8nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlZ2lvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpSZWdpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJyZWdpb25cIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVnaW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZCBoaWRkZW4+e3sgJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHJlZ2lvbiBvZiByZWdpb25PcHRpb25zXCIgW25nVmFsdWVdPVwicmVnaW9uLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcmVnaW9uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByb2R1Y3RHcm91cFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpQcm9kdWN0R3JvdXAnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJwcm9kdWN0R3JvdXBcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdEdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZCBoaWRkZW4+e3sgJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHByb2R1Y3RHcm91cCBvZiBwcm9kdWN0R3JvdXBPcHRpb25zXCIgW25nVmFsdWVdPVwicHJvZHVjdEdyb3VwLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdEdyb3VwLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXR1c1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpTdGF0dXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzdGF0dXNcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2Ygc3RhdHVzT3B0aW9uc1wiIFtuZ1ZhbHVlXT1cIm9wdC52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICBpZD1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgIHJvd3M9XCIzXCJcclxuICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkl0ZW1WYWx1ZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogNTAlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogMzAlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogMjAlXCIgLz5cclxuICAgICAgICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY29zdEl0ZW0gb2YgY29zdEl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgY29zdEl0ZW0ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctaW5mbyBtcy0xXCIgKm5nSWY9XCJpc0N1c3RvbShjb3N0SXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGN1c3RvbUxhYmVsIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQ3VzdG9tKGNvc3RJdGVtKTsgZWxzZSB2YWx1ZUlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6Q29zdFBhcmFtZXRlcnM6QXV0b0NhbGN1bGF0ZWQnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWVJbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHQgcHgtM1wiICpuZ0lmPVwiaXNSYXRlKGNvc3RJdGVtKVwiPiU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSYXRlKGNvc3RJdGVtKSAmJiAhaXNDdXN0b20oY29zdEl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGN1cnJlbmN5IG9mIGN1cnJlbmN5T3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImN1cnJlbmN5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGN1cnJlbmN5LmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuXHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gYWJwQ2xvc2UgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIj5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcclxuICAgICAgYnV0dG9uQ2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICBbbG9hZGluZ109XCJzYXZpbmdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybT8uaW52YWxpZFwiXHJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcbiJdfQ==
@@ -1,5 +1,7 @@
1
1
  import { Component } from '@angular/core';
2
+ import { forkJoin } from 'rxjs';
2
3
  import { Confirmation } from '@abp/ng.theme.shared';
4
+ import { CostParameterCategoryParentCode, } from '@hitsoft/kadooglu-keops/proxy';
3
5
  import { statusLabels } from '../cost-parameter-l10n-helper';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@hitsoft/kadooglu-keops/proxy";
@@ -13,8 +15,9 @@ import * as i8 from "devextreme-angular/ui/nested";
13
15
  import * as i9 from "devextreme-angular/core";
14
16
  import * as i10 from "./cost-parameter-form.component";
15
17
  export class CostParametersComponent {
16
- constructor(service, toaster, confirmation) {
18
+ constructor(service, categoryService, toaster, confirmation) {
17
19
  this.service = service;
20
+ this.categoryService = categoryService;
18
21
  this.toaster = toaster;
19
22
  this.confirmation = confirmation;
20
23
  this.items = [];
@@ -25,8 +28,7 @@ export class CostParametersComponent {
25
28
  this.formMode = 'create';
26
29
  }
27
30
  ngOnInit() {
28
- this.loadCodeLookups();
29
- this.loadList();
31
+ this.load();
30
32
  }
31
33
  getStatusLabel(value) {
32
34
  return statusLabels[value] ?? '';
@@ -42,10 +44,15 @@ export class CostParametersComponent {
42
44
  return '';
43
45
  return options.find(x => x.code === code)?.name ?? code;
44
46
  }
45
- loadCodeLookups() {
46
- this.service.getCodeLookups().subscribe(data => {
47
- this.productGroupOptions = data.productGroups ?? [];
48
- this.regionOptions = data.regions ?? [];
47
+ load() {
48
+ forkJoin({
49
+ categories: this.categoryService.getList(),
50
+ items: this.service.getList(),
51
+ }).subscribe(({ categories, items }) => {
52
+ const categoryList = categories ?? [];
53
+ this.productGroupOptions = categoryList.filter(x => x.parentCode === CostParameterCategoryParentCode.Code1);
54
+ this.regionOptions = categoryList.filter(x => x.parentCode === CostParameterCategoryParentCode.Code4);
55
+ this.items = items;
49
56
  });
50
57
  }
51
58
  loadList() {
@@ -84,10 +91,10 @@ export class CostParametersComponent {
84
91
  });
85
92
  }
86
93
  }
87
- CostParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostParametersComponent, deps: [{ token: i1.CostParameterService }, { token: i2.ToasterService }, { token: i2.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
94
+ CostParametersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostParametersComponent, deps: [{ token: i1.CostParameterService }, { token: i1.CostParameterCategoryService }, { token: i2.ToasterService }, { token: i2.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
88
95
  CostParametersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostParametersComponent, selector: "lib-cost-parameters", ngImport: i0, template: "<abp-page [title]=\"'Keops::CostParameters:Title' | abpLocalization\">\n <abp-page-toolbar-container class=\"col\">\n <div class=\"row justify-content-end mx-0\" id=\"CostParametersToolbar\">\n <div class=\"col-auto px-1 pt-0 pt-md-2 pe-0\">\n <button\n *abpPermission=\"'KeopsCost.CostParameters.Create'\"\n id=\"create\"\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"openCreate()\"\n >\n <i class=\"fa fa-plus me-1\"></i>\n <span>{{ 'Keops::CostParameters:New' | abpLocalization }}</span>\n </button>\n </div>\n </div>\n </abp-page-toolbar-container>\n\n <div id=\"CostParametersWrapper\">\n <div class=\"card\">\n <div class=\"card-body\">\n <dx-data-grid\n [columnAutoWidth]=\"true\"\n [showBorders]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [dataSource]=\"items\"\n keyExpr=\"code\"\n columnResizingMode=\"widget\"\n >\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-search-panel\n [width]=\"200\"\n [visible]=\"true\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\"\n ></dxo-search-panel>\n <dxo-pager\n [visible]=\"true\"\n [showInfo]=\"true\"\n [allowedPageSizes]=\"[10, 20, 50]\"\n [showPageSizeSelector]=\"true\"\n [showNavigationButtons]=\"true\"\n ></dxo-pager>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxi-column\n [fixed]=\"true\"\n [allowFiltering]=\"false\"\n [allowHeaderFiltering]=\"false\"\n [allowReordering]=\"false\"\n [allowHiding]=\"false\"\n [allowGrouping]=\"false\"\n [allowSorting]=\"false\"\n cellTemplate=\"optTpl\"\n caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\"\n width=\"120\"\n >\n <div *dxTemplate=\"let row of 'optTpl'\">\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\n <button class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\n <i class=\"fa fa-cog me-1\"></i>\n {{ 'AbpUi::Actions' | abpLocalization }}\n </button>\n <div ngbDropdownMenu>\n <button\n *abpPermission=\"'KeopsCost.CostParameters.Update'\"\n ngbDropdownItem\n (click)=\"openEdit(row.data)\"\n >\n {{ 'AbpUi::Edit' | abpLocalization }}\n </button>\n <button\n *abpPermission=\"'KeopsCost.CostParameters.Delete'\"\n ngbDropdownItem\n (click)=\"remove(row.data)\"\n >\n {{ 'AbpUi::Delete' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"region\"\n cellTemplate=\"regionTpl\"\n caption=\"{{ 'Keops::CostParameters:Region' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'regionTpl'\">\n <span>{{ getRegionName(row.data.region) }}</span>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"productGroup\"\n cellTemplate=\"productGroupTpl\"\n caption=\"{{ 'Keops::CostParameters:ProductGroup' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'productGroupTpl'\">\n <span>{{ getProductGroupName(row.data.productGroup) }}</span>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"status\"\n width=\"160\"\n cellTemplate=\"statusTpl\"\n caption=\"{{ 'Keops::CostParameters:Status' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'statusTpl'\">\n <span>{{ getStatusLabel(row.data.status) | abpLocalization }}</span>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"description\"\n caption=\"{{ 'Keops::CostParameters:Description' | abpLocalization }}\"\n ></dxi-column>\n <dxi-column\n dataField=\"updateDate\"\n cellTemplate=\"updateTpl\"\n caption=\"{{ 'Keops::CostParameters:LastUpdate' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'updateTpl'\">\n <span>{{ row.data.updateDate | shortDate }} {{ row.data.updateTime?.substring(0, 5) }}</span>\n </div>\n </dxi-column>\n </dx-data-grid>\n </div>\n </div>\n </div>\n</abp-page>\n\n<lib-cost-parameter-form\n *ngIf=\"formVisible\"\n [(visible)]=\"formVisible\"\n [mode]=\"formMode\"\n [current]=\"selected\"\n [productGroupOptions]=\"productGroupOptions\"\n [regionOptions]=\"regionOptions\"\n (saved)=\"onSaved()\"\n></lib-cost-parameter-form>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i5.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i5.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "directive", type: i6.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i6.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i6.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i6.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i7.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i8.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i8.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i8.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i8.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i8.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i8.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "directive", type: i9.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i10.CostParameterFormComponent, selector: "lib-cost-parameter-form", inputs: ["visible", "mode", "current", "productGroupOptions", "regionOptions"], outputs: ["visibleChange", "saved"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i4.ShortDatePipe, name: "shortDate" }] });
89
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostParametersComponent, decorators: [{
90
97
  type: Component,
91
98
  args: [{ selector: 'lib-cost-parameters', template: "<abp-page [title]=\"'Keops::CostParameters:Title' | abpLocalization\">\n <abp-page-toolbar-container class=\"col\">\n <div class=\"row justify-content-end mx-0\" id=\"CostParametersToolbar\">\n <div class=\"col-auto px-1 pt-0 pt-md-2 pe-0\">\n <button\n *abpPermission=\"'KeopsCost.CostParameters.Create'\"\n id=\"create\"\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"openCreate()\"\n >\n <i class=\"fa fa-plus me-1\"></i>\n <span>{{ 'Keops::CostParameters:New' | abpLocalization }}</span>\n </button>\n </div>\n </div>\n </abp-page-toolbar-container>\n\n <div id=\"CostParametersWrapper\">\n <div class=\"card\">\n <div class=\"card-body\">\n <dx-data-grid\n [columnAutoWidth]=\"true\"\n [showBorders]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [allowColumnResizing]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [dataSource]=\"items\"\n keyExpr=\"code\"\n columnResizingMode=\"widget\"\n >\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-search-panel\n [width]=\"200\"\n [visible]=\"true\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\"\n ></dxo-search-panel>\n <dxo-pager\n [visible]=\"true\"\n [showInfo]=\"true\"\n [allowedPageSizes]=\"[10, 20, 50]\"\n [showPageSizeSelector]=\"true\"\n [showNavigationButtons]=\"true\"\n ></dxo-pager>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxi-column\n [fixed]=\"true\"\n [allowFiltering]=\"false\"\n [allowHeaderFiltering]=\"false\"\n [allowReordering]=\"false\"\n [allowHiding]=\"false\"\n [allowGrouping]=\"false\"\n [allowSorting]=\"false\"\n cellTemplate=\"optTpl\"\n caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\"\n width=\"120\"\n >\n <div *dxTemplate=\"let row of 'optTpl'\">\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\n <button class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\n <i class=\"fa fa-cog me-1\"></i>\n {{ 'AbpUi::Actions' | abpLocalization }}\n </button>\n <div ngbDropdownMenu>\n <button\n *abpPermission=\"'KeopsCost.CostParameters.Update'\"\n ngbDropdownItem\n (click)=\"openEdit(row.data)\"\n >\n {{ 'AbpUi::Edit' | abpLocalization }}\n </button>\n <button\n *abpPermission=\"'KeopsCost.CostParameters.Delete'\"\n ngbDropdownItem\n (click)=\"remove(row.data)\"\n >\n {{ 'AbpUi::Delete' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"region\"\n cellTemplate=\"regionTpl\"\n caption=\"{{ 'Keops::CostParameters:Region' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'regionTpl'\">\n <span>{{ getRegionName(row.data.region) }}</span>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"productGroup\"\n cellTemplate=\"productGroupTpl\"\n caption=\"{{ 'Keops::CostParameters:ProductGroup' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'productGroupTpl'\">\n <span>{{ getProductGroupName(row.data.productGroup) }}</span>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"status\"\n width=\"160\"\n cellTemplate=\"statusTpl\"\n caption=\"{{ 'Keops::CostParameters:Status' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'statusTpl'\">\n <span>{{ getStatusLabel(row.data.status) | abpLocalization }}</span>\n </div>\n </dxi-column>\n <dxi-column\n dataField=\"description\"\n caption=\"{{ 'Keops::CostParameters:Description' | abpLocalization }}\"\n ></dxi-column>\n <dxi-column\n dataField=\"updateDate\"\n cellTemplate=\"updateTpl\"\n caption=\"{{ 'Keops::CostParameters:LastUpdate' | abpLocalization }}\"\n >\n <div *dxTemplate=\"let row of 'updateTpl'\">\n <span>{{ row.data.updateDate | shortDate }} {{ row.data.updateTime?.substring(0, 5) }}</span>\n </div>\n </dxi-column>\n </dx-data-grid>\n </div>\n </div>\n </div>\n</abp-page>\n\n<lib-cost-parameter-form\n *ngIf=\"formVisible\"\n [(visible)]=\"formVisible\"\n [mode]=\"formMode\"\n [current]=\"selected\"\n [productGroupOptions]=\"productGroupOptions\"\n [regionOptions]=\"regionOptions\"\n (saved)=\"onSaved()\"\n></lib-cost-parameter-form>\n" }]
92
- }], ctorParameters: function () { return [{ type: i1.CostParameterService }, { type: i2.ToasterService }, { type: i2.ConfirmationService }]; } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvY29zdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvY29zdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBdUMsTUFBTSxzQkFBc0IsQ0FBQztBQU16RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7OztBQU03RCxNQUFNLE9BQU8sdUJBQXVCO0lBVWxDLFlBQ21CLE9BQTZCLEVBQzdCLE9BQXVCLEVBQ3ZCLFlBQWlDO1FBRmpDLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQVpwRCxVQUFLLEdBQXVCLEVBQUUsQ0FBQztRQUUvQix3QkFBbUIsR0FBcUMsRUFBRSxDQUFDO1FBQzNELGtCQUFhLEdBQXFDLEVBQUUsQ0FBQztRQUVyRCxhQUFRLEdBQTRCLElBQUksQ0FBQztRQUN6QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQXNCLFFBQVEsQ0FBQztJQU1wQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FB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aXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHtcclxuICBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG8sXHJcbiAgQ29zdFBhcmFtZXRlckR0byxcclxufSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IHN0YXR1c0xhYmVscyB9IGZyb20gJy4uL2Nvc3QtcGFyYW1ldGVyLWwxMG4taGVscGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvc3QtcGFyYW1ldGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nvc3QtcGFyYW1ldGVycy5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3N0UGFyYW1ldGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaXRlbXM6IENvc3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xyXG5cclxuICBwcm9kdWN0R3JvdXBPcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG9bXSA9IFtdO1xyXG4gIHJlZ2lvbk9wdGlvbnM6IENvc3RQYXJhbWV0ZXJDYXRlZ29yeUxvb2t1cER0b1tdID0gW107XHJcblxyXG4gIHNlbGVjdGVkOiBDb3N0UGFyYW1ldGVyRHRvIHwgbnVsbCA9IG51bGw7XHJcbiAgZm9ybVZpc2libGUgPSBmYWxzZTtcclxuICBmb3JtTW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRDb2RlTG9va3VwcygpO1xyXG4gICAgdGhpcy5sb2FkTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3RhdHVzTGFiZWxzW3ZhbHVlIGFzIGtleW9mIHR5cGVvZiBzdGF0dXNMYWJlbHNdID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdEdyb3VwTmFtZShjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlc29sdmVOYW1lKHRoaXMucHJvZHVjdEdyb3VwT3B0aW9ucywgY29kZSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZWdpb25OYW1lKGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZU5hbWUodGhpcy5yZWdpb25PcHRpb25zLCBjb2RlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZU5hbWUoXHJcbiAgICBvcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG9bXSxcclxuICAgIGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICghY29kZSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIG9wdGlvbnMuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSk/Lm5hbWUgPz8gY29kZTtcclxuICB9XHJcblxyXG4gIGxvYWRDb2RlTG9va3VwcygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5nZXRDb2RlTG9va3VwcygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wcm9kdWN0R3JvdXBPcHRpb25zID0gZGF0YS5wcm9kdWN0R3JvdXBzID8/IFtdO1xyXG4gICAgICB0aGlzLnJlZ2lvbk9wdGlvbnMgPSBkYXRhLnJlZ2lvbnMgPz8gW107XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRMaXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldExpc3QoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBkYXRhO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ3JlYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICB0aGlzLmZvcm1Nb2RlID0gJ2NyZWF0ZSc7XHJcbiAgICB0aGlzLmZvcm1WaXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9wZW5FZGl0KHJvdzogQ29zdFBhcmFtZXRlckR0byk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHJvdztcclxuICAgIHRoaXMuZm9ybU1vZGUgPSAnZWRpdCc7XHJcbiAgICB0aGlzLmZvcm1WaXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1WaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcclxuICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKCdBYnBVaTo6U3VjY2Vzc2Z1bGx5U2F2ZWQnKTtcclxuICAgIHRoaXMubG9hZExpc3QoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZShyb3c6IENvc3RQYXJhbWV0ZXJEdG8pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgIC53YXJuKCdBYnBVaTo6SXRlbVdpbGxCZURlbGV0ZWRNZXNzYWdlJywgJ0FicFVpOjpBcmVZb3VTdXJlJylcclxuICAgICAgLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09IENvbmZpcm1hdGlvbi5TdGF0dXMuY29uZmlybSkge1xyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZShyb3cuY29kZSEpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2VzcygnQWJwVWk6OlN1Y2Nlc3NmdWxseURlbGV0ZWQnKTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRMaXN0KCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidLZW9wczo6Q29zdFBhcmFtZXRlcnM6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+XG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWVuZCBteC0wXCIgaWQ9XCJDb3N0UGFyYW1ldGVyc1Rvb2xiYXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBweC0xIHB0LTAgcHQtbWQtMiBwZS0wXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqYWJwUGVybWlzc2lvbj1cIidLZW9wc0Nvc3QuQ29zdFBhcmFtZXRlcnMuQ3JlYXRlJ1wiXG4gICAgICAgICAgaWQ9XCJjcmVhdGVcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtZS0xXCI+PC9pPlxuICAgICAgICAgIDxzcGFuPnt7ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6TmV3JyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cblxuICA8ZGl2IGlkPVwiQ29zdFBhcmFtZXRlcnNXcmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgPGR4LWRhdGEtZ3JpZFxuICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxuICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxuICAgICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbXNcIlxuICAgICAgICAgIGtleUV4cHI9XCJjb2RlXCJcbiAgICAgICAgICBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxuICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cbiAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbFxuICAgICAgICAgICAgW3dpZHRoXT1cIjIwMFwiXG4gICAgICAgICAgICBbdmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWJwVWk6OlNlYXJjaCcgfCBhYnBMb2NhbGl6YXRpb25cIlxuICAgICAgICAgID48L2R4by1zZWFyY2gtcGFuZWw+XG4gICAgICAgICAgPGR4by1wYWdlclxuICAgICAgICAgICAgW3Zpc2libGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICA+PC9keG8tcGFnZXI+XG4gICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgIDxkeGktY29sdW1uXG4gICAgICAgICAgICBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2FsbG93SGlkaW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFthbGxvd1NvcnRpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgY2VsbFRlbXBsYXRlPVwib3B0VHBsXCJcbiAgICAgICAgICAgIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcbiAgICAgICAgICAgIHdpZHRoPVwiMTIwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3B0VHBsJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBuZ2JEcm9wZG93blRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1lLTFcIj48L2k+XG4gICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICphYnBQZXJtaXNzaW9uPVwiJ0tlb3BzQ29zdC5Db3N0UGFyYW1ldGVycy5VcGRhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRWRpdChyb3cuZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKmFicFBlcm1pc3Npb249XCInS2VvcHNDb3N0LkNvc3RQYXJhbWV0ZXJzLkRlbGV0ZSdcIlxuICAgICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShyb3cuZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZHhpLWNvbHVtbj5cbiAgICAgICAgICA8ZHhpLWNvbHVtblxuICAgICAgICAgICAgZGF0YUZpZWxkPVwicmVnaW9uXCJcbiAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cInJlZ2lvblRwbFwiXG4gICAgICAgICAgICBjYXB0aW9uPVwie3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpSZWdpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAncmVnaW9uVHBsJ1wiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRSZWdpb25OYW1lKHJvdy5kYXRhLnJlZ2lvbikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgICAgPGR4aS1jb2x1bW5cbiAgICAgICAgICAgIGRhdGFGaWVsZD1cInByb2R1Y3RHcm91cFwiXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJwcm9kdWN0R3JvdXBUcGxcIlxuICAgICAgICAgICAgY2FwdGlvbj1cInt7ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6UHJvZHVjdEdyb3VwJyB8IGFicExvY2FsaXphdGlvbiB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ3Byb2R1Y3RHcm91cFRwbCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0UHJvZHVjdEdyb3VwTmFtZShyb3cuZGF0YS5wcm9kdWN0R3JvdXApIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9keGktY29sdW1uPlxuICAgICAgICAgIDxkeGktY29sdW1uXG4gICAgICAgICAgICBkYXRhRmllbGQ9XCJzdGF0dXNcIlxuICAgICAgICAgICAgd2lkdGg9XCIxNjBcIlxuICAgICAgICAgICAgY2VsbFRlbXBsYXRlPVwic3RhdHVzVHBsXCJcbiAgICAgICAgICAgIGNhcHRpb249XCJ7eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOlN0YXR1cycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdzdGF0dXNUcGwnXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldFN0YXR1c0xhYmVsKHJvdy5kYXRhLnN0YXR1cykgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgICAgPGR4aS1jb2x1bW5cbiAgICAgICAgICAgIGRhdGFGaWVsZD1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGNhcHRpb249XCJ7eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVwiXG4gICAgICAgICAgPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICA8ZHhpLWNvbHVtblxuICAgICAgICAgICAgZGF0YUZpZWxkPVwidXBkYXRlRGF0ZVwiXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJ1cGRhdGVUcGxcIlxuICAgICAgICAgICAgY2FwdGlvbj1cInt7ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6TGFzdFVwZGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICd1cGRhdGVUcGwnXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5kYXRhLnVwZGF0ZURhdGUgfCBzaG9ydERhdGUgfX0ge3sgcm93LmRhdGEudXBkYXRlVGltZT8uc3Vic3RyaW5nKDAsIDUpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9keGktY29sdW1uPlxuICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYWJwLXBhZ2U+XG5cbjxsaWItY29zdC1wYXJhbWV0ZXItZm9ybVxuICAqbmdJZj1cImZvcm1WaXNpYmxlXCJcbiAgWyh2aXNpYmxlKV09XCJmb3JtVmlzaWJsZVwiXG4gIFttb2RlXT1cImZvcm1Nb2RlXCJcbiAgW2N1cnJlbnRdPVwic2VsZWN0ZWRcIlxuICBbcHJvZHVjdEdyb3VwT3B0aW9uc109XCJwcm9kdWN0R3JvdXBPcHRpb25zXCJcbiAgW3JlZ2lvbk9wdGlvbnNdPVwicmVnaW9uT3B0aW9uc1wiXG4gIChzYXZlZCk9XCJvblNhdmVkKClcIlxuPjwvbGliLWNvc3QtcGFyYW1ldGVyLWZvcm0+XG4iXX0=
99
+ }], ctorParameters: function () { return [{ type: i1.CostParameterService }, { type: i1.CostParameterCategoryService }, { type: i2.ToasterService }, { type: i2.ConfirmationService }]; } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvY29zdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvY29zdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFHTCwrQkFBK0IsR0FHaEMsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7OztBQU03RCxNQUFNLE9BQU8sdUJBQXVCO0lBVWxDLFlBQ21CLE9BQTZCLEVBQzdCLGVBQTZDLEVBQzdDLE9BQXVCLEVBQ3ZCLFlBQWlDO1FBSGpDLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUE4QjtRQUM3QyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFicEQsVUFBSyxHQUF1QixFQUFFLENBQUM7UUFFL0Isd0JBQW1CLEdBQStCLEVBQUUsQ0FBQztRQUNyRCxrQkFBYSxHQUErQixFQUFFLENBQUM7UUFFL0MsYUFBUSxHQUE0QixJQUFJLENBQUM7UUFDekMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIs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LE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ3ZDLElBQUksRUFBRSxHQUFHLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQzt3QkFDbkQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixDQUFDO2lCQUNGLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztvSEFoR1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMkRDaEJwQyxzdktBNElBOzJGRDVIYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHtcclxuICBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICBDb3N0UGFyYW1ldGVyRHRvLFxyXG4gIENvc3RQYXJhbWV0ZXJDYXRlZ29yeVBhcmVudENvZGUsXHJcbiAgQ29zdFBhcmFtZXRlckNhdGVnb3J5RHRvLFxyXG4gIENvc3RQYXJhbWV0ZXJDYXRlZ29yeVNlcnZpY2UsXHJcbn0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBzdGF0dXNMYWJlbHMgfSBmcm9tICcuLi9jb3N0LXBhcmFtZXRlci1sMTBuLWhlbHBlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LXBhcmFtZXRlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LXBhcmFtZXRlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29zdFBhcmFtZXRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGl0ZW1zOiBDb3N0UGFyYW1ldGVyRHRvW10gPSBbXTtcclxuXHJcbiAgcHJvZHVjdEdyb3VwT3B0aW9uczogQ29zdFBhcmFtZXRlckNhdGVnb3J5RHRvW10gPSBbXTtcclxuICByZWdpb25PcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG9bXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZDogQ29zdFBhcmFtZXRlckR0byB8IG51bGwgPSBudWxsO1xyXG4gIGZvcm1WaXNpYmxlID0gZmFsc2U7XHJcbiAgZm9ybU1vZGU6ICdjcmVhdGUnIHwgJ2VkaXQnID0gJ2NyZWF0ZSc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlTZXJ2aWNlOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0xhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0YXR1c0xhYmVsc1t2YWx1ZSBhcyBrZXlvZiB0eXBlb2Ygc3RhdHVzTGFiZWxzXSA/PyAnJztcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RHcm91cE5hbWUoY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlTmFtZSh0aGlzLnByb2R1Y3RHcm91cE9wdGlvbnMsIGNvZGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaW9uTmFtZShjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlc29sdmVOYW1lKHRoaXMucmVnaW9uT3B0aW9ucywgY29kZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVOYW1lKFxyXG4gICAgb3B0aW9uczogQ29zdFBhcmFtZXRlckNhdGVnb3J5RHRvW10sXHJcbiAgICBjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsLFxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvZGUpIHJldHVybiAnJztcclxuICAgIHJldHVybiBvcHRpb25zLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpPy5uYW1lID8/IGNvZGU7XHJcbiAgfVxyXG5cclxuICBsb2FkKCk6IHZvaWQge1xyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3J5U2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIGl0ZW1zOiB0aGlzLnNlcnZpY2UuZ2V0TGlzdCgpLFxyXG4gICAgfSkuc3Vic2NyaWJlKCh7IGNhdGVnb3JpZXMsIGl0ZW1zIH0pID0+IHtcclxuICAgICAgY29uc3QgY2F0ZWdvcnlMaXN0ID0gY2F0ZWdvcmllcyA/PyBbXTtcclxuICAgICAgdGhpcy5wcm9kdWN0R3JvdXBPcHRpb25zID0gY2F0ZWdvcnlMaXN0LmZpbHRlcihcclxuICAgICAgICB4ID0+IHgucGFyZW50Q29kZSA9PT0gQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlMSxcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yZWdpb25PcHRpb25zID0gY2F0ZWdvcnlMaXN0LmZpbHRlcihcclxuICAgICAgICB4ID0+IHgucGFyZW50Q29kZSA9PT0gQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlNCxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZExpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TGlzdCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pdGVtcyA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5DcmVhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcclxuICAgIHRoaXMuZm9ybU1vZGUgPSAnY3JlYXRlJztcclxuICAgIHRoaXMuZm9ybVZpc2libGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb3BlbkVkaXQocm93OiBDb3N0UGFyYW1ldGVyRHRvKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gcm93O1xyXG4gICAgdGhpcy5mb3JtTW9kZSA9ICdlZGl0JztcclxuICAgIHRoaXMuZm9ybVZpc2libGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybVZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MoJ0FicFVpOjpTdWNjZXNzZnVsbHlTYXZlZCcpO1xyXG4gICAgdGhpcy5sb2FkTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKHJvdzogQ29zdFBhcmFtZXRlckR0byk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgLndhcm4oJ0FicFVpOjpJdGVtV2lsbEJlRGVsZXRlZE1lc3NhZ2UnLCAnQWJwVWk6OkFyZVlvdVN1cmUnKVxyXG4gICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSB7XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKHJvdy5jb2RlISkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKCdBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZCcpO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZExpc3QoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpUaXRsZScgfCBhYnBMb2NhbGl6YXRpb25cIj5cbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIG14LTBcIiBpZD1cIkNvc3RQYXJhbWV0ZXJzVG9vbGJhclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTEgcHQtMCBwdC1tZC0yIHBlLTBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICphYnBQZXJtaXNzaW9uPVwiJ0tlb3BzQ29zdC5Db3N0UGFyYW1ldGVycy5DcmVhdGUnXCJcbiAgICAgICAgICBpZD1cImNyZWF0ZVwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuQ3JlYXRlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIj48L2k+XG4gICAgICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpOZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxuXG4gIDxkaXYgaWQ9XCJDb3N0UGFyYW1ldGVyc1dyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICA8ZHgtZGF0YS1ncmlkXG4gICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXG4gICAgICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbZGF0YVNvdXJjZV09XCJpdGVtc1wiXG4gICAgICAgICAga2V5RXhwcj1cImNvZGVcIlxuICAgICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XG4gICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxuICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsXG4gICAgICAgICAgICBbd2lkdGhdPVwiMjAwXCJcbiAgICAgICAgICAgIFt2aXNpYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBYnBVaTo6U2VhcmNoJyB8IGFicExvY2FsaXphdGlvblwiXG4gICAgICAgICAgPjwvZHhvLXNlYXJjaC1wYW5lbD5cbiAgICAgICAgICA8ZHhvLXBhZ2VyXG4gICAgICAgICAgICBbdmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93SW5mb109XCJ0cnVlXCJcbiAgICAgICAgICAgIFthbGxvd2VkUGFnZVNpemVzXT1cIlsxMCwgMjAsIDUwXVwiXG4gICAgICAgICAgICBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgID48L2R4by1wYWdlcj5cbiAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgPGR4aS1jb2x1bW5cbiAgICAgICAgICAgIFtmaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXG4gICAgICAgICAgICBbYWxsb3dIZWFkZXJGaWx0ZXJpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXG4gICAgICAgICAgICBbYWxsb3dIaWRpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2FsbG93U29ydGluZ109XCJmYWxzZVwiXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcHRUcGxcIlxuICAgICAgICAgICAgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxuICAgICAgICAgICAgd2lkdGg9XCIxMjBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcHRUcGwnXCI+XG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2cgbWUtMVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKmFicFBlcm1pc3Npb249XCInS2VvcHNDb3N0LkNvc3RQYXJhbWV0ZXJzLlVwZGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5FZGl0KHJvdy5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqYWJwUGVybWlzc2lvbj1cIidLZW9wc0Nvc3QuQ29zdFBhcmFtZXRlcnMuRGVsZXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKHJvdy5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9keGktY29sdW1uPlxuICAgICAgICAgIDxkeGktY29sdW1uXG4gICAgICAgICAgICBkYXRhRmllbGQ9XCJyZWdpb25cIlxuICAgICAgICAgICAgY2VsbFRlbXBsYXRlPVwicmVnaW9uVHBsXCJcbiAgICAgICAgICAgIGNhcHRpb249XCJ7eyAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJzOlJlZ2lvbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdyZWdpb25UcGwnXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldFJlZ2lvbk5hbWUocm93LmRhdGEucmVnaW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZHhpLWNvbHVtbj5cbiAgICAgICAgICA8ZHhpLWNvbHVtblxuICAgICAgICAgICAgZGF0YUZpZWxkPVwicHJvZHVjdEdyb3VwXCJcbiAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cInByb2R1Y3RHcm91cFRwbFwiXG4gICAgICAgICAgICBjYXB0aW9uPVwie3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpQcm9kdWN0R3JvdXAnIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAncHJvZHVjdEdyb3VwVHBsJ1wiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRQcm9kdWN0R3JvdXBOYW1lKHJvdy5kYXRhLnByb2R1Y3RHcm91cCkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgICAgPGR4aS1jb2x1bW5cbiAgICAgICAgICAgIGRhdGFGaWVsZD1cInN0YXR1c1wiXG4gICAgICAgICAgICB3aWR0aD1cIjE2MFwiXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJzdGF0dXNUcGxcIlxuICAgICAgICAgICAgY2FwdGlvbj1cInt7ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6U3RhdHVzJyB8IGFicExvY2FsaXphdGlvbiB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ3N0YXR1c1RwbCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0U3RhdHVzTGFiZWwocm93LmRhdGEuc3RhdHVzKSB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZHhpLWNvbHVtbj5cbiAgICAgICAgICA8ZHhpLWNvbHVtblxuICAgICAgICAgICAgZGF0YUZpZWxkPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY2FwdGlvbj1cInt7ICdLZW9wczo6Q29zdFBhcmFtZXRlcnM6RGVzY3JpcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcbiAgICAgICAgICA+PC9keGktY29sdW1uPlxuICAgICAgICAgIDxkeGktY29sdW1uXG4gICAgICAgICAgICBkYXRhRmllbGQ9XCJ1cGRhdGVEYXRlXCJcbiAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cInVwZGF0ZVRwbFwiXG4gICAgICAgICAgICBjYXB0aW9uPVwie3sgJ0tlb3BzOjpDb3N0UGFyYW1ldGVyczpMYXN0VXBkYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ3VwZGF0ZVRwbCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgcm93LmRhdGEudXBkYXRlRGF0ZSB8IHNob3J0RGF0ZSB9fSB7eyByb3cuZGF0YS51cGRhdGVUaW1lPy5zdWJzdHJpbmcoMCwgNSkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hYnAtcGFnZT5cblxuPGxpYi1jb3N0LXBhcmFtZXRlci1mb3JtXG4gICpuZ0lmPVwiZm9ybVZpc2libGVcIlxuICBbKHZpc2libGUpXT1cImZvcm1WaXNpYmxlXCJcbiAgW21vZGVdPVwiZm9ybU1vZGVcIlxuICBbY3VycmVudF09XCJzZWxlY3RlZFwiXG4gIFtwcm9kdWN0R3JvdXBPcHRpb25zXT1cInByb2R1Y3RHcm91cE9wdGlvbnNcIlxuICBbcmVnaW9uT3B0aW9uc109XCJyZWdpb25PcHRpb25zXCJcbiAgKHNhdmVkKT1cIm9uU2F2ZWQoKVwiXG4+PC9saWItY29zdC1wYXJhbWV0ZXItZm9ybT5cbiJdfQ==
@@ -0,0 +1,86 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { finalize } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@hitsoft/kadooglu-keops/proxy";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@abp/ng.core";
9
+ import * as i5 from "@abp/ng.theme.shared";
10
+ /**
11
+ * Varış limanı oluştur/güncelle formu.
12
+ * Ülke listesi üst bileşenden [countries] ile alınır; liman kodu SAP tarafında GUID'den üretilir.
13
+ */
14
+ export class DestinationPortFormComponent {
15
+ constructor(fb, service) {
16
+ this.fb = fb;
17
+ this.service = service;
18
+ this.visible = false;
19
+ this.mode = 'create';
20
+ this.current = null;
21
+ this.countries = [];
22
+ this.visibleChange = new EventEmitter();
23
+ this.saved = new EventEmitter();
24
+ this.saving = false;
25
+ }
26
+ ngOnInit() {
27
+ this.buildForm();
28
+ }
29
+ ngOnChanges(changes) {
30
+ if (changes['current'] || changes['mode']) {
31
+ this.buildForm();
32
+ }
33
+ }
34
+ buildForm() {
35
+ this.form = this.fb.group({
36
+ countryCode: [this.current?.countryCode ?? '', Validators.required],
37
+ portName: [this.current?.portName ?? '', [Validators.required, Validators.maxLength(100)]],
38
+ });
39
+ }
40
+ get title() {
41
+ return this.mode === 'create' ? 'Keops::DestinationPorts:CreateTitle' : 'Keops::DestinationPorts:EditTitle';
42
+ }
43
+ onVisibleChange(value) {
44
+ this.visible = value;
45
+ this.visibleChange.emit(value);
46
+ }
47
+ save() {
48
+ if (this.saving)
49
+ return;
50
+ if (this.form.invalid) {
51
+ this.form.markAllAsTouched();
52
+ return;
53
+ }
54
+ const value = this.form.value;
55
+ this.saving = true;
56
+ const request$ = this.mode === 'create'
57
+ ? this.service.create(value)
58
+ : this.service.update(this.current.code, value);
59
+ request$.pipe(finalize(() => (this.saving = false))).subscribe({
60
+ next: () => {
61
+ this.saved.emit();
62
+ this.visible = false;
63
+ this.visibleChange.emit(false);
64
+ },
65
+ });
66
+ }
67
+ }
68
+ DestinationPortFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DestinationPortFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DestinationPortService }], target: i0.ɵɵFactoryTarget.Component });
69
+ DestinationPortFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DestinationPortFormComponent, selector: "lib-destination-port-form", inputs: { visible: "visible", mode: "mode", current: "current", countries: "countries" }, outputs: { visibleChange: "visibleChange", saved: "saved" }, usesOnChanges: true, ngImport: i0, template: "<abp-modal [(visible)]=\"visible\" (visibleChange)=\"onVisibleChange($event)\" [busy]=\"saving\" [options]=\"{ size: 'md' }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ title | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <div class=\"mb-3\">\r\n <label for=\"countryCode\" class=\"form-label\">{{ 'Keops::DestinationPorts:CountryCode' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <select id=\"countryCode\" class=\"form-select\" formControlName=\"countryCode\">\r\n <option value=\"\"></option>\r\n <option *ngFor=\"let c of countries\" [value]=\"c.code\">{{ c.name }}</option>\r\n </select>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label for=\"portName\" class=\"form-label\">{{ 'Keops::DestinationPorts:PortName' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <input id=\"portName\" type=\"text\" class=\"form-control\" formControlName=\"portName\" />\r\n </div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">{{ 'AbpUi::Cancel' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonClass=\"btn btn-primary\" [loading]=\"saving\" [disabled]=\"saving || form?.invalid\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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: "directive", type: i4.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i5.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i5.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DestinationPortFormComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'lib-destination-port-form', template: "<abp-modal [(visible)]=\"visible\" (visibleChange)=\"onVisibleChange($event)\" [busy]=\"saving\" [options]=\"{ size: 'md' }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ title | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <div class=\"mb-3\">\r\n <label for=\"countryCode\" class=\"form-label\">{{ 'Keops::DestinationPorts:CountryCode' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <select id=\"countryCode\" class=\"form-select\" formControlName=\"countryCode\">\r\n <option value=\"\"></option>\r\n <option *ngFor=\"let c of countries\" [value]=\"c.code\">{{ c.name }}</option>\r\n </select>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label for=\"portName\" class=\"form-label\">{{ 'Keops::DestinationPorts:PortName' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <input id=\"portName\" type=\"text\" class=\"form-control\" formControlName=\"portName\" />\r\n </div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">{{ 'AbpUi::Cancel' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonClass=\"btn btn-primary\" [loading]=\"saving\" [disabled]=\"saving || form?.invalid\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n" }]
73
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DestinationPortService }]; }, propDecorators: { visible: [{
74
+ type: Input
75
+ }], mode: [{
76
+ type: Input
77
+ }], current: [{
78
+ type: Input
79
+ }], countries: [{
80
+ type: Input
81
+ }], visibleChange: [{
82
+ type: Output
83
+ }], saved: [{
84
+ type: Output
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdGluYXRpb24tcG9ydC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvZGVzdGluYXRpb24tcG9ydHMvY29tcG9uZW50cy9kZXN0aW5hdGlvbi1wb3J0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9kZXN0aW5hdGlvbi1wb3J0cy9jb21wb25lbnRzL2Rlc3RpbmF0aW9uLXBvcnQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPMUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDRCQUE0QjtJQVl2QyxZQUNtQixFQUFlLEVBQ2YsT0FBK0I7UUFEL0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBYnpDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsU0FBSSxHQUFzQixRQUFRLENBQUM7UUFDbkMsWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDMUMsY0FBUyxHQUF1QixFQUFFLENBQUM7UUFFbEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzVDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzNDLFdBQU0sR0FBRyxLQUFLLENBQUM7SUFLWixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkUsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDM0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QixPQUFPO1NBQ1I7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUVuQixNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQVEsQ0FBQyxJQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEQsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDN0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O3lIQWpFVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qiw2T0NiekMsNi9DQTRCQTsyRkRmYSw0QkFBNEI7a0JBUnhDLFNBQVM7K0JBQ0UsMkJBQTJCO3VJQVE1QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEZXN0aW5hdGlvblBvcnRTZXJ2aWNlLCBEZXN0aW5hdGlvblBvcnREdG8sIENvdW50cnlMb29rdXBEdG8gfSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1kZXN0aW5hdGlvbi1wb3J0LWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXN0aW5hdGlvbi1wb3J0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG4vKipcclxuICogVmFyxLHFnyBsaW1hbsSxIG9sdcWfdHVyL2fDvG5jZWxsZSBmb3JtdS5cclxuICogw5xsa2UgbGlzdGVzaSDDvHN0IGJpbGXFn2VuZGVuIFtjb3VudHJpZXNdIGlsZSBhbMSxbsSxcjsgbGltYW4ga29kdSBTQVAgdGFyYWbEsW5kYSBHVUlEJ2RlbiDDvHJldGlsaXIuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVzdGluYXRpb25Qb3J0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSB2aXNpYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcclxuICBASW5wdXQoKSBjdXJyZW50OiBEZXN0aW5hdGlvblBvcnREdG8gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBjb3VudHJpZXM6IENvdW50cnlMb29rdXBEdG9bXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IERlc3RpbmF0aW9uUG9ydFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY3VycmVudCddIHx8IGNoYW5nZXNbJ21vZGUnXSkge1xyXG4gICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgY291bnRyeUNvZGU6IFt0aGlzLmN1cnJlbnQ/LmNvdW50cnlDb2RlID8/ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcG9ydE5hbWU6IFt0aGlzLmN1cnJlbnQ/LnBvcnROYW1lID8/ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjcmVhdGUnID8gJ0tlb3BzOjpEZXN0aW5hdGlvblBvcnRzOkNyZWF0ZVRpdGxlJyA6ICdLZW9wczo6RGVzdGluYXRpb25Qb3J0czpFZGl0VGl0bGUnO1xyXG4gIH1cclxuXHJcbiAgb25WaXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm0udmFsdWU7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCQgPVxyXG4gICAgICB0aGlzLm1vZGUgPT09ICdjcmVhdGUnXHJcbiAgICAgICAgPyB0aGlzLnNlcnZpY2UuY3JlYXRlKHZhbHVlKVxyXG4gICAgICAgIDogdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLmN1cnJlbnQhLmNvZGUhLCB2YWx1ZSk7XHJcblxyXG4gICAgcmVxdWVzdCQucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5zYXZpbmcgPSBmYWxzZSkpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zYXZlZC5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgKHZpc2libGVDaGFuZ2UpPVwib25WaXNpYmxlQ2hhbmdlKCRldmVudClcIiBbYnVzeV09XCJzYXZpbmdcIiBbb3B0aW9uc109XCJ7IHNpemU6ICdtZCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPnt7IHRpdGxlIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50cnlDb2RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ0tlb3BzOjpEZXN0aW5hdGlvblBvcnRzOkNvdW50cnlDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgIDxzZWxlY3QgaWQ9XCJjb3VudHJ5Q29kZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5Q29kZVwiPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBjb3VudHJpZXNcIiBbdmFsdWVdPVwiYy5jb2RlXCI+e3sgYy5uYW1lIH19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJwb3J0TmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6RGVzdGluYXRpb25Qb3J0czpQb3J0TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX0gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgaWQ9XCJwb3J0TmFtZVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJwb3J0TmFtZVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiBhYnBDbG9zZSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiPnt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYnV0dG9uPlxyXG4gICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25DbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtsb2FkaW5nXT1cInNhdmluZ1wiIFtkaXNhYmxlZF09XCJzYXZpbmcgfHwgZm9ybT8uaW52YWxpZFwiIChjbGljayk9XCJzYXZlKClcIj5cclxuICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9hYnAtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG4iXX0=