@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,15 +1,17 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CostItemCalculationType, Currency, } from '@hitsoft/kadooglu-keops/proxy';
2
+ import { Currency } from '@hitsoft/kadooglu-keops/proxy';
3
3
  import { CURRENCY_OPTIONS } from '../../../utils/currency.utils';
4
+ import { isRateCostItem } from '../../../shared/cost-item-classification.utils';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "@angular/forms";
7
8
  import * as i3 from "devextreme-angular";
8
9
  import * as i4 from "devextreme-angular/core";
9
- import * as i5 from "@abp/ng.core";
10
+ import * as i5 from "../../../shared/amount-currency-input/amount-currency-input.component";
11
+ import * as i6 from "@abp/ng.core";
10
12
  export class CostCalculationInputsComponent {
11
13
  constructor() {
12
- this.RateType = CostItemCalculationType.Rate;
14
+ this.isRate = isRateCostItem;
13
15
  this.currencyOptions = CURRENCY_OPTIONS;
14
16
  this.itemsDataSource = null;
15
17
  this.parameters = [];
@@ -58,10 +60,10 @@ export class CostCalculationInputsComponent {
58
60
  }
59
61
  }
60
62
  CostCalculationInputsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- CostCalculationInputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: { itemsDataSource: "itemsDataSource", itemDisplayExpr: "itemDisplayExpr", parameters: "parameters", parameterDisplayExpr: "parameterDisplayExpr", stages: "stages", selectedItemCode: "selectedItemCode", selectedParameterCode: "selectedParameterCode", rawOilPrice: "rawOilPrice", rawOilCurrency: "rawOilCurrency", systemRateUsd: "systemRateUsd", systemRateEur: "systemRateEur", rateUsd: "rateUsd", rateEur: "rateEur" }, outputs: { selectedItemCodeChange: "selectedItemCodeChange", selectedParameterCodeChange: "selectedParameterCodeChange", rawOilPriceChange: "rawOilPriceChange", rawOilCurrencyChange: "rawOilCurrencyChange", rateUsdChange: "rateUsdChange", rateEurChange: "rateEurChange", itemChange: "itemChange", parameterChange: "parameterChange", recalc: "recalc" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"rawOilPrice\" (ngModelChange)=\"onRawOilPriceChange()\" />\r\n <select\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"rawOilCurrency\"\r\n (ngModelChange)=\"onRawOilCurrencyChange()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"item.calculationType === RateType\">%</span>\r\n <select\r\n *ngIf=\"item.calculationType !== RateType\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
63
+ CostCalculationInputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: { itemsDataSource: "itemsDataSource", itemDisplayExpr: "itemDisplayExpr", parameters: "parameters", parameterDisplayExpr: "parameterDisplayExpr", stages: "stages", selectedItemCode: "selectedItemCode", selectedParameterCode: "selectedParameterCode", rawOilPrice: "rawOilPrice", rawOilCurrency: "rawOilCurrency", systemRateUsd: "systemRateUsd", systemRateEur: "systemRateEur", rateUsd: "rateUsd", rateEur: "rateEur" }, outputs: { selectedItemCodeChange: "selectedItemCodeChange", selectedParameterCodeChange: "selectedParameterCodeChange", rawOilPriceChange: "rawOilPriceChange", rawOilCurrencyChange: "rawOilCurrencyChange", rateUsdChange: "rateUsdChange", rateEurChange: "rateEurChange", itemChange: "itemChange", parameterChange: "parameterChange", recalc: "recalc" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <lib-amount-currency-input\r\n [(ngModel)]=\"rawOilPrice\"\r\n (ngModelChange)=\"onRawOilPriceChange()\"\r\n [(currency)]=\"rawOilCurrency\"\r\n (currencyChange)=\"onRawOilCurrencyChange()\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"isRate(item)\">%</span>\r\n <select\r\n *ngIf=\"!isRate(item)\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.AmountCurrencyInputComponent, selector: "lib-amount-currency-input", inputs: ["currencyOptions", "currency"], outputs: ["currencyChange"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] });
62
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationInputsComponent, decorators: [{
63
65
  type: Component,
64
- args: [{ selector: 'lib-cost-calculation-inputs', template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"rawOilPrice\" (ngModelChange)=\"onRawOilPriceChange()\" />\r\n <select\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"rawOilCurrency\"\r\n (ngModelChange)=\"onRawOilCurrencyChange()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"item.calculationType === RateType\">%</span>\r\n <select\r\n *ngIf=\"item.calculationType !== RateType\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
66
+ args: [{ selector: 'lib-cost-calculation-inputs', template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <lib-amount-currency-input\r\n [(ngModel)]=\"rawOilPrice\"\r\n (ngModelChange)=\"onRawOilPriceChange()\"\r\n [(currency)]=\"rawOilCurrency\"\r\n (currencyChange)=\"onRawOilCurrencyChange()\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"isRate(item)\">%</span>\r\n <select\r\n *ngIf=\"!isRate(item)\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
65
67
  }], propDecorators: { itemsDataSource: [{
66
68
  type: Input
67
69
  }], itemDisplayExpr: [{
@@ -107,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
107
109
  }], recalc: [{
108
110
  type: Output
109
111
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLFFBQVEsR0FDVCxNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBTWpFLE1BQU0sT0FBTyw4QkFBOEI7SUFKM0M7UUFLVyxhQUFRLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsZ0JBQWdCLENBQUM7UUFFbkMsb0JBQWUsR0FBc0IsSUFBSSxDQUFDO1FBRzFDLGVBQVUsR0FBdUIsRUFBRSxDQUFDO1FBR3BDLFdBQU0sR0FBMkIsRUFBRSxDQUFDO1FBRXBDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdEMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFNUQsMEJBQXFCLEdBQWtCLElBQUksQ0FBQztRQUMzQyxnQ0FBMkIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUVqRSxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNmLHNCQUFpQixH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LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBEYXRhU291cmNlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29zdFBhcmFtZXRlckR0byxcclxuICBJdGVtRHRvLFxyXG4gIENvc3RJdGVtQ2FsY3VsYXRpb25UeXBlLFxyXG4gIEN1cnJlbmN5LFxyXG59IGZyb20gJ0BoaXRzb2Z0L2thZG9vZ2x1LWtlb3BzL3Byb3h5JztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uU3RhZ2UgfSBmcm9tICcuLi9jb3N0LWNhbGN1bGF0aW9uLm1vZGVscyc7XHJcbmltcG9ydCB7IENVUlJFTkNZX09QVElPTlMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jdXJyZW5jeS51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uLWlucHV0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nvc3QtY2FsY3VsYXRpb24taW5wdXRzLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvc3RDYWxjdWxhdGlvbklucHV0c0NvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHkgUmF0ZVR5cGUgPSBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZS5SYXRlO1xyXG4gIHJlYWRvbmx5IGN1cnJlbmN5T3B0aW9ucyA9IENVUlJFTkNZX09QVElPTlM7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGl0ZW1EaXNwbGF5RXhwciE6IChpdGVtOiBJdGVtRHRvKSA9PiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IENvc3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhcmFtZXRlckRpc3BsYXlFeHByITogKHA6IENvc3RQYXJhbWV0ZXJEdG8pID0+IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFBhcmFtZXRlckNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFBhcmFtZXRlckNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHJhd09pbFByaWNlID0gMDtcclxuICBAT3V0cHV0KCkgcmF3T2lsUHJpY2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgQElucHV0KCkgcmF3T2lsQ3VycmVuY3k6IEN1cnJlbmN5ID0gQ3VycmVuY3kuVVNEO1xyXG4gIEBPdXRwdXQoKSByYXdPaWxDdXJyZW5jeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VycmVuY3k+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHN5c3RlbVJhdGVVc2QgPSAwO1xyXG4gIEBJbnB1dCgpIHN5c3RlbVJhdGVFdXIgPSAwO1xyXG5cclxuICBASW5wdXQoKSByYXRlVXNkID0gMDtcclxuICBAT3V0cHV0KCkgcmF0ZVVzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBASW5wdXQoKSByYXRlRXVyID0gMDtcclxuICBAT3V0cHV0KCkgcmF0ZUV1ckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgcGFyYW1ldGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSByZWNhbGMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG9uSXRlbVNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1Db2RlKTtcclxuICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblBhcmFtZXRlclNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmFtZXRlckNvZGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkUGFyYW1ldGVyQ29kZSk7XHJcbiAgICB0aGlzLnBhcmFtZXRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblJhd09pbFByaWNlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF3T2lsUHJpY2VDaGFuZ2UsIHRoaXMucmF3T2lsUHJpY2UpO1xyXG4gIH1cclxuICBvblJhd09pbEN1cnJlbmN5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF3T2lsQ3VycmVuY3lDaGFuZ2UsIHRoaXMucmF3T2lsQ3VycmVuY3kpO1xyXG4gIH1cclxuICBvblJhdGVVc2RDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRBbmRSZWNhbGModGhpcy5yYXRlVXNkQ2hhbmdlLCB0aGlzLnJhdGVVc2QpO1xyXG4gIH1cclxuICBvblJhdGVFdXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRBbmRSZWNhbGModGhpcy5yYXRlRXVyQ2hhbmdlLCB0aGlzLnJhdGVFdXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0QW5kUmVjYWxjPFQ+KGVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxUPiwgdmFsdWU6IFQpOiB2b2lkIHtcclxuICAgIGVtaXR0ZXIuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnJlY2FsYy5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGZ3LWJvbGRcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6SW5wdXRzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpJdGVtJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbXNEYXRhU291cmNlXCJcclxuICAgICAgICB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICBbZGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2VhcmNoRXhwcl09XCJbJ2NvZGUnLCAnbmFtZSddXCJcclxuICAgICAgICBzZWFyY2hNb2RlPVwiY29udGFpbnNcIlxyXG4gICAgICAgIFtzZWFyY2hUaW1lb3V0XT1cIjIwMFwiXHJcbiAgICAgICAgW21pblNlYXJjaExlbmd0aF09XCIwXCJcclxuICAgICAgICBbc2hvd0RhdGFCZWZvcmVTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZEl0ZW1Db2RlXCJcclxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25JdGVtU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgaXQgb2YgJ2l0ZW0nXCIgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgW3RpdGxlXT1cIml0ZW1EaXNwbGF5RXhwcihpdClcIj5cclxuICAgICAgICAgIHt7IGl0ZW1EaXNwbGF5RXhwcihpdCkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpDb3N0UGFyYW1ldGVyJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwicGFyYW1ldGVyc1wiXHJcbiAgICAgICAgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgW2Rpc3BsYXlFeHByXT1cInBhcmFtZXRlckRpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkUGFyYW1ldGVyQ29kZVwiXHJcbiAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uUGFyYW1ldGVyU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgPjwvZHgtc2VsZWN0LWJveD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC11cHBlcmNhc2Ugc21hbGwgbWItMlwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpSYXRlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0yIG1iLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpTeXN0ZW1Vc2RSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IHN5c3RlbVJhdGVVc2QgfCBudW1iZXIgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpTeXN0ZW1FdXJSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IHN5c3RlbVJhdGVFdXIgfCBudW1iZXIgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGctMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgWyhuZ01vZGVsKV09XCJyYXRlVXNkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXRlVXNkQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkV1clJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgWyhuZ01vZGVsKV09XCJyYXRlRXVyXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXRlRXVyQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF3T2lsUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwicmF3T2lsUHJpY2VcIiAobmdNb2RlbENoYW5nZSk9XCJvblJhd09pbFByaWNlQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZmxleC1ncm93LTAgdy1hdXRvXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmF3T2lsQ3VycmVuY3lcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXdPaWxDdXJyZW5jeUNoYW5nZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGN1cnJlbmN5T3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImMudmFsdWVcIj57eyBjLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2Ygc3RhZ2VzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC11cHBlcmNhc2Ugc21hbGwgZnctYm9sZCBib3JkZXItYm90dG9tIHBiLTFcIj5cclxuICAgICAgICAgIDxzcGFuPnt7IHN0YWdlLmdyb3VwQ29kZSB9fSAtIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7IHN0YWdlLmdyb3VwTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhZ2UuaXRlbXNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj5cclxuICAgICAgICAgIHt7IGl0ZW0uY29zdEl0ZW1OYW1lIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJyZWNhbGMuZW1pdCgpXCIgLz5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiICpuZ0lmPVwiaXRlbS5jYWxjdWxhdGlvblR5cGUgPT09IFJhdGVUeXBlXCI+JTwvc3Bhbj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmNhbGN1bGF0aW9uVHlwZSAhPT0gUmF0ZVR5cGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZsZXgtZ3Jvdy0wIHctYXV0b1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5jdXJyZW5jeVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlY2FsYy5lbWl0KClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGN1cnJlbmN5T3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImMudmFsdWVcIj57eyBjLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIHRleHQtbXV0ZWQgc21hbGwgZnN0LWl0YWxpY1wiICpuZ0lmPVwic3RhZ2UuaXRlbXMubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAg4oCUIHt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpOb0l0ZW1zJyB8IGFicExvY2FsaXphdGlvbiB9fSDigJRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQTZCLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7QUFNaEYsTUFBTSxPQUFPLDhCQUE4QjtJQUozQztRQUtXLFdBQU0sR0FBRyxjQUFjLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxnQkFBZ0IsQ0FBQztRQUVuQyxvQkFBZSxHQUFzQixJQUFJLENBQUM7UUFHMUMsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFHcEMsV0FBTSxHQUEyQixFQUFFLENBQUM7UUFFcEMscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN0QywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUU1RCwwQkFBcUIsR0FBa0IsSUFBSSxDQUFDO1FBQzNDLGdDQUEyQixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRWpFLGdCQUFXLEdBQUcsQ0FB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cG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IERhdGFTb3VyY2UgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2RhdGFfc291cmNlJztcclxuaW1wb3J0IHsgQ29zdFBhcmFtZXRlckR0bywgSXRlbUR0bywgQ3VycmVuY3kgfSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IENvc3RDYWxjdWxhdGlvblN0YWdlIH0gZnJvbSAnLi4vY29zdC1jYWxjdWxhdGlvbi5tb2RlbHMnO1xyXG5pbXBvcnQgeyBDVVJSRU5DWV9PUFRJT05TIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY3VycmVuY3kudXRpbHMnO1xyXG5pbXBvcnQgeyBpc1JhdGVDb3N0SXRlbSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb3N0LWl0ZW0tY2xhc3NpZmljYXRpb24udXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LWNhbGN1bGF0aW9uLWlucHV0cy5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3N0Q2FsY3VsYXRpb25JbnB1dHNDb21wb25lbnQge1xyXG4gIHJlYWRvbmx5IGlzUmF0ZSA9IGlzUmF0ZUNvc3RJdGVtO1xyXG4gIHJlYWRvbmx5IGN1cnJlbmN5T3B0aW9ucyA9IENVUlJFTkNZX09QVElPTlM7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGl0ZW1EaXNwbGF5RXhwciE6IChpdGVtOiBJdGVtRHRvKSA9PiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IENvc3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhcmFtZXRlckRpc3BsYXlFeHByITogKHA6IENvc3RQYXJhbWV0ZXJEdG8pID0+IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFBhcmFtZXRlckNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFBhcmFtZXRlckNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHJhd09pbFByaWNlID0gMDtcclxuICBAT3V0cHV0KCkgcmF3T2lsUHJpY2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgQElucHV0KCkgcmF3T2lsQ3VycmVuY3k6IEN1cnJlbmN5ID0gQ3VycmVuY3kuVVNEO1xyXG4gIEBPdXRwdXQoKSByYXdPaWxDdXJyZW5jeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VycmVuY3k+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHN5c3RlbVJhdGVVc2QgPSAwO1xyXG4gIEBJbnB1dCgpIHN5c3RlbVJhdGVFdXIgPSAwO1xyXG5cclxuICBASW5wdXQoKSByYXRlVXNkID0gMDtcclxuICBAT3V0cHV0KCkgcmF0ZVVzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBASW5wdXQoKSByYXRlRXVyID0gMDtcclxuICBAT3V0cHV0KCkgcmF0ZUV1ckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgcGFyYW1ldGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSByZWNhbGMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG9uSXRlbVNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1Db2RlKTtcclxuICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblBhcmFtZXRlclNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmFtZXRlckNvZGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkUGFyYW1ldGVyQ29kZSk7XHJcbiAgICB0aGlzLnBhcmFtZXRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblJhd09pbFByaWNlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF3T2lsUHJpY2VDaGFuZ2UsIHRoaXMucmF3T2lsUHJpY2UpO1xyXG4gIH1cclxuICBvblJhd09pbEN1cnJlbmN5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF3T2lsQ3VycmVuY3lDaGFuZ2UsIHRoaXMucmF3T2lsQ3VycmVuY3kpO1xyXG4gIH1cclxuICBvblJhdGVVc2RDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRBbmRSZWNhbGModGhpcy5yYXRlVXNkQ2hhbmdlLCB0aGlzLnJhdGVVc2QpO1xyXG4gIH1cclxuICBvblJhdGVFdXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRBbmRSZWNhbGModGhpcy5yYXRlRXVyQ2hhbmdlLCB0aGlzLnJhdGVFdXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0QW5kUmVjYWxjPFQ+KGVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxUPiwgdmFsdWU6IFQpOiB2b2lkIHtcclxuICAgIGVtaXR0ZXIuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnJlY2FsYy5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGZ3LWJvbGRcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6SW5wdXRzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpJdGVtJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbXNEYXRhU291cmNlXCJcclxuICAgICAgICB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICBbZGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2VhcmNoRXhwcl09XCJbJ2NvZGUnLCAnbmFtZSddXCJcclxuICAgICAgICBzZWFyY2hNb2RlPVwiY29udGFpbnNcIlxyXG4gICAgICAgIFtzZWFyY2hUaW1lb3V0XT1cIjIwMFwiXHJcbiAgICAgICAgW21pblNlYXJjaExlbmd0aF09XCIwXCJcclxuICAgICAgICBbc2hvd0RhdGFCZWZvcmVTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZEl0ZW1Db2RlXCJcclxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25JdGVtU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgaXQgb2YgJ2l0ZW0nXCIgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgW3RpdGxlXT1cIml0ZW1EaXNwbGF5RXhwcihpdClcIj5cclxuICAgICAgICAgIHt7IGl0ZW1EaXNwbGF5RXhwcihpdCkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpDb3N0UGFyYW1ldGVyJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwicGFyYW1ldGVyc1wiXHJcbiAgICAgICAgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgW2Rpc3BsYXlFeHByXT1cInBhcmFtZXRlckRpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkUGFyYW1ldGVyQ29kZVwiXHJcbiAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uUGFyYW1ldGVyU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgPjwvZHgtc2VsZWN0LWJveD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC11cHBlcmNhc2Ugc21hbGwgbWItMlwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpSYXRlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0yIG1iLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpTeXN0ZW1Vc2RSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IHN5c3RlbVJhdGVVc2QgfCBudW1iZXIgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpTeXN0ZW1FdXJSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IHN5c3RlbVJhdGVFdXIgfCBudW1iZXIgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGctMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgWyhuZ01vZGVsKV09XCJyYXRlVXNkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXRlVXNkQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkV1clJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgWyhuZ01vZGVsKV09XCJyYXRlRXVyXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXRlRXVyQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF3T2lsUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGxpYi1hbW91bnQtY3VycmVuY3ktaW5wdXRcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblJhd09pbFByaWNlQ2hhbmdlKClcIlxyXG4gICAgICAgIFsoY3VycmVuY3kpXT1cInJhd09pbEN1cnJlbmN5XCJcclxuICAgICAgICAoY3VycmVuY3lDaGFuZ2UpPVwib25SYXdPaWxDdXJyZW5jeUNoYW5nZSgpXCJcclxuICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0YWdlIG9mIHN0YWdlc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtdXBwZXJjYXNlIHNtYWxsIGZ3LWJvbGQgYm9yZGVyLWJvdHRvbSBwYi0xXCI+XHJcbiAgICAgICAgICA8c3Bhbj57eyBzdGFnZS5ncm91cENvZGUgfX0gLSA8L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj57eyBzdGFnZS5ncm91cE5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMlwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN0YWdlLml0ZW1zXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+XHJcbiAgICAgICAgICB7eyBpdGVtLmNvc3RJdGVtTmFtZSB9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVjYWxjLmVtaXQoKVwiIC8+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiAqbmdJZj1cImlzUmF0ZShpdGVtKVwiPiU8L3NwYW4+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzUmF0ZShpdGVtKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZmxleC1ncm93LTAgdy1hdXRvXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmN1cnJlbmN5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVjYWxjLmVtaXQoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgY3VycmVuY3lPcHRpb25zXCIgW25nVmFsdWVdPVwiYy52YWx1ZVwiPnt7IGMubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgdGV4dC1tdXRlZCBzbWFsbCBmc3QtaXRhbGljXCIgKm5nSWY9XCJzdGFnZS5pdGVtcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICDigJQge3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOk5vSXRlbXMnIHwgYWJwTG9jYWxpemF0aW9uIH19IOKAlFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -2,9 +2,11 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import { forkJoin } from 'rxjs';
3
3
  import DataSource from 'devextreme/data/data_source';
4
4
  import ArrayStore from 'devextreme/data/array_store';
5
- import { ExchangeRateSource, Currency, CostItemCalculationType, } from '@hitsoft/kadooglu-keops/proxy';
5
+ import { Currency, CostParameterCategoryParentCode, } from '@hitsoft/kadooglu-keops/proxy';
6
6
  import { buildRoleGroups, calculateCost } from '../engine';
7
7
  import { parseDecimal } from '../../../utils/number.utils';
8
+ import { resolveSystemRates } from '../../../utils/exchange-rate.utils';
9
+ import { isRateCostItem } from '../../../shared/cost-item-classification.utils';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@hitsoft/kadooglu-keops/proxy";
10
12
  import * as i2 from "@abp/ng.components/page";
@@ -13,8 +15,9 @@ import * as i4 from "./cost-calculation-results.component";
13
15
  import * as i5 from "./cost-calculation-result-sum.component";
14
16
  import * as i6 from "@abp/ng.core";
15
17
  export class CostCalculationComponent {
16
- constructor(parameterService, costItemService, costGroupService, exchangeRateService, itemService) {
18
+ constructor(parameterService, costParameterCategoryService, costItemService, costGroupService, exchangeRateService, itemService) {
17
19
  this.parameterService = parameterService;
20
+ this.costParameterCategoryService = costParameterCategoryService;
18
21
  this.costItemService = costItemService;
19
22
  this.costGroupService = costGroupService;
20
23
  this.exchangeRateService = exchangeRateService;
@@ -49,7 +52,7 @@ export class CostCalculationComponent {
49
52
  costItems: this.costItemService.getList(),
50
53
  groups: this.costGroupService.getList(),
51
54
  rate: this.exchangeRateService.get(),
52
- lookups: this.parameterService.getCodeLookups(),
55
+ lookups: this.costParameterCategoryService.getList(),
53
56
  items: this.itemService.getList(this.itemCodePrefix),
54
57
  }).subscribe(({ parameters, costItems, groups, rate, lookups, items }) => {
55
58
  this.parameters = parameters ?? [];
@@ -59,15 +62,16 @@ export class CostCalculationComponent {
59
62
  paginate: true,
60
63
  pageSize: 50,
61
64
  });
62
- this.productGroupNames = this.toNameMap(lookups?.productGroups);
63
- this.regionNames = this.toNameMap(lookups?.regions);
65
+ const categories = lookups ?? [];
66
+ this.productGroupNames = this.toNameMap(categories.filter(x => x.parentCode === CostParameterCategoryParentCode.Code1));
67
+ this.regionNames = this.toNameMap(categories.filter(x => x.parentCode === CostParameterCategoryParentCode.Code4));
64
68
  this.costItemsByCode = new Map();
65
69
  for (const ci of costItems ?? []) {
66
70
  if (ci.code)
67
71
  this.costItemsByCode.set(ci.code, ci);
68
72
  }
69
73
  this.groups = (groups ?? []).slice().sort((a, b) => a.displayOrder - b.displayOrder);
70
- const [usd, eur] = this.resolveRates(rate);
74
+ const [usd, eur] = resolveSystemRates(rate);
71
75
  this.systemRateUsd = usd;
72
76
  this.systemRateEur = eur;
73
77
  this.rateUsd = usd;
@@ -115,7 +119,7 @@ export class CostCalculationComponent {
115
119
  if (!costItem)
116
120
  continue;
117
121
  const stored = valuesByCode.get(code);
118
- const isRate = costItem.calculationType === CostItemCalculationType.Rate;
122
+ const isRate = isRateCostItem(costItem);
119
123
  items.push({
120
124
  costItemCode: code,
121
125
  costItemName: costItem.name ?? code,
@@ -147,19 +151,11 @@ export class CostCalculationComponent {
147
151
  print() {
148
152
  window.print();
149
153
  }
150
- resolveRates(rate) {
151
- if (!rate)
152
- return [0, 0];
153
- if (rate.source === ExchangeRateSource.Fixed) {
154
- return [rate.fixedUsdRate ?? 0, rate.fixedEurRate ?? 0];
155
- }
156
- return [rate.cbExchangeRate?.usdBuyingRate ?? 0, rate.cbExchangeRate?.eurBuyingRate ?? 0];
157
- }
158
154
  }
159
- CostCalculationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, deps: [{ token: i1.CostParameterService }, { token: i1.CostItemService }, { token: i1.CostGroupService }, { token: i1.ExchangeRateService }, { token: i1.ItemService }], target: i0.ɵɵFactoryTarget.Component });
155
+ CostCalculationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, deps: [{ token: i1.CostParameterService }, { token: i1.CostParameterCategoryService }, { token: i1.CostItemService }, { token: i1.CostGroupService }, { token: i1.ExchangeRateService }, { token: i1.ItemService }], target: i0.ɵɵFactoryTarget.Component });
160
156
  CostCalculationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationComponent, selector: "lib-cost-calculation", ngImport: i0, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(selectedParameterCode)]=\"selectedParameterCode\"\r\n [(rawOilPrice)]=\"rawOilPrice\"\r\n [(rawOilCurrency)]=\"rawOilCurrency\"\r\n [systemRateUsd]=\"systemRateUsd\"\r\n [systemRateEur]=\"systemRateEur\"\r\n [(rateUsd)]=\"rateUsd\"\r\n [(rateEur)]=\"rateEur\"\r\n (itemChange)=\"onItemChange()\"\r\n (parameterChange)=\"onParameterChange()\"\r\n (recalc)=\"calculate()\"\r\n ></lib-cost-calculation-inputs>\r\n </div>\r\n\r\n <div class=\"col-lg-8 mb-3\">\r\n <div class=\"d-print-none\">\r\n <lib-cost-calculation-result-sum [roleGroups]=\"roleGroups\"></lib-cost-calculation-result-sum>\r\n </div>\r\n <div id=\"cost-calculation-results\">\r\n <lib-cost-calculation-results [result]=\"result\" [roleGroups]=\"roleGroups\" [itemName]=\"selectedItemName\" [rateUsd]=\"rateUsd\" [rateEur]=\"rateEur\"></lib-cost-calculation-results>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: ["@media print{body *{visibility:hidden}#cost-calculation-results,#cost-calculation-results *{visibility:visible}#cost-calculation-results{position:absolute;inset:0;width:100%}}\n"], dependencies: [{ kind: "component", type: i2.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i2.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i3.CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: ["itemsDataSource", "itemDisplayExpr", "parameters", "parameterDisplayExpr", "stages", "selectedItemCode", "selectedParameterCode", "rawOilPrice", "rawOilCurrency", "systemRateUsd", "systemRateEur", "rateUsd", "rateEur"], outputs: ["selectedItemCodeChange", "selectedParameterCodeChange", "rawOilPriceChange", "rawOilCurrencyChange", "rateUsdChange", "rateEurChange", "itemChange", "parameterChange", "recalc"] }, { kind: "component", type: i4.CostCalculationResultsComponent, selector: "lib-cost-calculation-results", inputs: ["result", "roleGroups", "itemName", "rateUsd", "rateEur"] }, { kind: "component", type: i5.CostCalculationResultSumComponent, selector: "lib-cost-calculation-result-sum", inputs: ["roleGroups"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }], encapsulation: i0.ViewEncapsulation.None });
161
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, decorators: [{
162
158
  type: Component,
163
159
  args: [{ selector: 'lib-cost-calculation', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(selectedParameterCode)]=\"selectedParameterCode\"\r\n [(rawOilPrice)]=\"rawOilPrice\"\r\n [(rawOilCurrency)]=\"rawOilCurrency\"\r\n [systemRateUsd]=\"systemRateUsd\"\r\n [systemRateEur]=\"systemRateEur\"\r\n [(rateUsd)]=\"rateUsd\"\r\n [(rateEur)]=\"rateEur\"\r\n (itemChange)=\"onItemChange()\"\r\n (parameterChange)=\"onParameterChange()\"\r\n (recalc)=\"calculate()\"\r\n ></lib-cost-calculation-inputs>\r\n </div>\r\n\r\n <div class=\"col-lg-8 mb-3\">\r\n <div class=\"d-print-none\">\r\n <lib-cost-calculation-result-sum [roleGroups]=\"roleGroups\"></lib-cost-calculation-result-sum>\r\n </div>\r\n <div id=\"cost-calculation-results\">\r\n <lib-cost-calculation-results [result]=\"result\" [roleGroups]=\"roleGroups\" [itemName]=\"selectedItemName\" [rateUsd]=\"rateUsd\" [rateEur]=\"rateEur\"></lib-cost-calculation-results>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: ["@media print{body *{visibility:hidden}#cost-calculation-results,#cost-calculation-results *{visibility:visible}#cost-calculation-results{position:absolute;inset:0;width:100%}}\n"] }]
164
- }], ctorParameters: function () { return [{ type: i1.CostParameterService }, { type: i1.CostItemService }, { type: i1.CostGroupService }, { type: i1.ExchangeRateService }, { type: i1.ItemService }]; } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFZTCxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLHVCQUF1QixHQUN4QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUVsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBUTNELE1BQU0sT0FBTyx3QkFBd0I7SUE0Qm5DLFlBQ21CLGdCQUFzQyxFQUN0QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLFdBQXdCO1FBSnhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4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QUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7O3FIQXZLVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0REM5QnJDLDQ1REE0Q0E7MkZEZGEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgQXJyYXlTdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvYXJyYXlfc3RvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvc3RHcm91cFNlcnZpY2UsXHJcbiAgQ29zdEl0ZW1TZXJ2aWNlLFxyXG4gIENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gIEV4Y2hhbmdlUmF0ZVNlcnZpY2UsXHJcbiAgSXRlbVNlcnZpY2UsXHJcbiAgSXRlbUR0byxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG8sXHJcbiAgQ29zdFBhcmFtZXRlckR0byxcclxuICBDb3N0SXRlbUR0byxcclxuICBDb3N0R3JvdXBEdG8sXHJcbiAgRXhjaGFuZ2VSYXRlRHRvLFxyXG4gIEV4Y2hhbmdlUmF0ZVNvdXJjZSxcclxuICBDdXJyZW5jeSxcclxuICBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZSxcclxufSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IGJ1aWxkUm9sZUdyb3VwcywgY2FsY3VsYXRlQ29zdCwgQ29zdFJlc3VsdCwgUm9sZUdyb3VwIH0gZnJvbSAnLi4vZW5naW5lJztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uSXRlbSwgQ29zdENhbGN1bGF0aW9uU3RhZ2UgfSBmcm9tICcuLi9jb3N0LWNhbGN1bGF0aW9uLm1vZGVscyc7XHJcbmltcG9ydCB7IHBhcnNlRGVjaW1hbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL251bWJlci51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3N0Q2FsY3VsYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGl0ZW1Db2RlUHJlZml4ID0gJzA1JztcclxuICBwcm9kdWN0SXRlbXM6IEl0ZW1EdG9bXSA9IFtdO1xyXG4gIGl0ZW1zRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSXRlbU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwYXJhbWV0ZXJzOiBDb3N0UGFyYW1ldGVyRHRvW10gPSBbXTtcclxuICBzZWxlY3RlZFBhcmFtZXRlckNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICByYXdPaWxQcmljZSA9IDA7XHJcbiAgcmF3T2lsQ3VycmVuY3kgPSBDdXJyZW5jeS5VU0Q7XHJcblxyXG4gIHN5c3RlbVJhdGVVc2QgPSAwO1xyXG4gIHN5c3RlbVJhdGVFdXIgPSAwO1xyXG5cclxuICByYXRlVXNkID0gMDtcclxuICByYXRlRXVyID0gMDtcclxuXHJcbiAgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdID0gW107XHJcbiAgcmVzdWx0OiBDb3N0UmVzdWx0IHwgbnVsbCA9IG51bGw7XHJcbiAgcm9sZUdyb3VwczogUm9sZUdyb3VwW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjb3N0SXRlbXNCeUNvZGUgPSBuZXcgTWFwPHN0cmluZywgQ29zdEl0ZW1EdG8+KCk7XHJcbiAgcHJpdmF0ZSBncm91cHM6IENvc3RHcm91cER0b1tdID0gW107XHJcbiAgcHJpdmF0ZSBwcm9kdWN0R3JvdXBOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgcHJpdmF0ZSByZWdpb25OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTZXJ2aWNlOiBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29zdEl0ZW1TZXJ2aWNlOiBDb3N0SXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvc3RHcm91cFNlcnZpY2U6IENvc3RHcm91cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2hhbmdlUmF0ZVNlcnZpY2U6IEV4Y2hhbmdlUmF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxjdWxhdGUoKTtcclxuXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIGNvc3RJdGVtczogdGhpcy5jb3N0SXRlbVNlcnZpY2UuZ2V0TGlzdCgpLFxyXG4gICAgICBncm91cHM6IHRoaXMuY29zdEdyb3VwU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIHJhdGU6IHRoaXMuZXhjaGFuZ2VSYXRlU2VydmljZS5nZXQoKSxcclxuICAgICAgbG9va3VwczogdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENvZGVMb29rdXBzKCksXHJcbiAgICAgIGl0ZW1zOiB0aGlzLml0ZW1TZXJ2aWNlLmdldExpc3QodGhpcy5pdGVtQ29kZVByZWZpeCksXHJcbiAgICB9KS5zdWJzY3JpYmUoKHsgcGFyYW1ldGVycywgY29zdEl0ZW1zLCBncm91cHMsIHJhdGUsIGxvb2t1cHMsIGl0ZW1zIH0pID0+IHtcclxuICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyA/PyBbXTtcclxuICAgICAgdGhpcy5wcm9kdWN0SXRlbXMgPSBpdGVtcyA/PyBbXTtcclxuICAgICAgdGhpcy5pdGVtc0RhdGFTb3VyY2UgPSBuZXcgRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgc3RvcmU6IG5ldyBBcnJheVN0b3JlKHsga2V5OiAnY29kZScsIGRhdGE6IHRoaXMucHJvZHVjdEl0ZW1zIH0pLFxyXG4gICAgICAgIHBhZ2luYXRlOiB0cnVlLFxyXG4gICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnByb2R1Y3RHcm91cE5hbWVzID0gdGhpcy50b05hbWVNYXAobG9va3Vwcz8ucHJvZHVjdEdyb3Vwcyk7XHJcbiAgICAgIHRoaXMucmVnaW9uTmFtZXMgPSB0aGlzLnRvTmFtZU1hcChsb29rdXBzPy5yZWdpb25zKTtcclxuXHJcbiAgICAgIHRoaXMuY29zdEl0ZW1zQnlDb2RlID0gbmV3IE1hcDxzdHJpbmcsIENvc3RJdGVtRHRvPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNpIG9mIGNvc3RJdGVtcyA/PyBbXSkge1xyXG4gICAgICAgIGlmIChjaS5jb2RlKSB0aGlzLmNvc3RJdGVtc0J5Q29kZS5zZXQoY2kuY29kZSwgY2kpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdyb3VwcyA9IChncm91cHMgPz8gW10pLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS5kaXNwbGF5T3JkZXIgLSBiLmRpc3BsYXlPcmRlcik7XHJcblxyXG4gICAgICBjb25zdCBbdXNkLCBldXJdID0gdGhpcy5yZXNvbHZlUmF0ZXMocmF0ZSk7XHJcbiAgICAgIHRoaXMuc3lzdGVtUmF0ZVVzZCA9IHVzZDtcclxuICAgICAgdGhpcy5zeXN0ZW1SYXRlRXVyID0gZXVyO1xyXG4gICAgICB0aGlzLnJhdGVVc2QgPSB1c2Q7XHJcbiAgICAgIHRoaXMucmF0ZUV1ciA9IGV1cjtcclxuXHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhcmFtZXRlckxhYmVsKHA6IENvc3RQYXJhbWV0ZXJEdG8pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJvZHVjdEdyb3VwID0gdGhpcy5wcm9kdWN0R3JvdXBOYW1lcy5nZXQocC5wcm9kdWN0R3JvdXAgPz8gJycpID8/IHAucHJvZHVjdEdyb3VwO1xyXG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5yZWdpb25OYW1lcy5nZXQocC5yZWdpb24gPz8gJycpID8/IHAucmVnaW9uO1xyXG4gICAgcmV0dXJuIFtwcm9kdWN0R3JvdXAsIHJlZ2lvbl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyDigJQgJykgfHwgKHAuY29kZSA/PyAnJyk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5wcm9kdWN0SXRlbXMuZmluZCh4ID0+IHguY29kZSA9PT0gdGhpcy5zZWxlY3RlZEl0ZW1Db2RlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IGl0ZW0/Lm5hbWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGl0ZW1EaXNwbGF5RXhwciA9IChpdGVtOiBJdGVtRHRvKTogc3RyaW5nID0+XHJcbiAgICBpdGVtID8gW2l0ZW0uY29kZSwgaXRlbS5uYW1lXS5maWx0ZXIoQm9vbGVhbikuam9pbignIOKAlCAnKSA6ICcnO1xyXG5cclxuICByZWFkb25seSBwYXJhbWV0ZXJEaXNwbGF5RXhwciA9IChwOiBDb3N0UGFyYW1ldGVyRHRvKTogc3RyaW5nID0+XHJcbiAgICBwID8gdGhpcy5wYXJhbWV0ZXJMYWJlbChwKSA6ICcnO1xyXG5cclxuICBwcml2YXRlIHRvTmFtZU1hcChvcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG9bXSB8IHVuZGVmaW5lZCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMgPz8gW10pIHtcclxuICAgICAgaWYgKG9wdGlvbi5jb2RlKSBtYXAuc2V0KG9wdGlvbi5jb2RlLCBvcHRpb24ubmFtZSA/PyBvcHRpb24uY29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgb25QYXJhbWV0ZXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXIgPSB0aGlzLnBhcmFtZXRlcnMuZmluZChwID0+IHAuY29kZSA9PT0gdGhpcy5zZWxlY3RlZFBhcmFtZXRlckNvZGUpO1xyXG4gICAgdGhpcy5zdGFnZXMgPSBwYXJhbWV0ZXIgPyB0aGlzLmJ1aWxkU3RhZ2VzKHBhcmFtZXRlcikgOiBbXTtcclxuICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWVzQnlDb2RlKFxyXG4gICAgcGFyYW1ldGVyOiBDb3N0UGFyYW1ldGVyRHRvLFxyXG4gICk6IE1hcDxzdHJpbmcsIHsgdmFsdWU6IG51bWJlcjsgY3VycmVuY3k/OiBDdXJyZW5jeSB9PiB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgeyB2YWx1ZTogbnVtYmVyOyBjdXJyZW5jeT86IEN1cnJlbmN5IH0+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcGFyYW1ldGVyLml0ZW1zID8/IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvc3RJdGVtQ29kZSkge1xyXG4gICAgICAgIG1hcC5zZXQoaXRlbS5jb3N0SXRlbUNvZGUsIHsgdmFsdWU6IHBhcnNlRGVjaW1hbChpdGVtLnZhbHVlKSwgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3kgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU3RhZ2VzKHBhcmFtZXRlcjogQ29zdFBhcmFtZXRlckR0byk6IENvc3RDYWxjdWxhdGlvblN0YWdlW10ge1xyXG4gICAgY29uc3QgdmFsdWVzQnlDb2RlID0gdGhpcy5idWlsZFZhbHVlc0J5Q29kZShwYXJhbWV0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW1zOiBDb3N0Q2FsY3VsYXRpb25JdGVtW10gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjb2RlIG9mIGdyb3VwLml0ZW1Db2RlcyA/PyBbXSkge1xyXG4gICAgICAgIGNvbnN0IGNvc3RJdGVtID0gdGhpcy5jb3N0SXRlbXNCeUNvZGUuZ2V0KGNvZGUpO1xyXG4gICAgICAgIGlmICghY29zdEl0ZW0pIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IHZhbHVlc0J5Q29kZS5nZXQoY29kZSk7XHJcbiAgICAgICAgY29uc3QgaXNSYXRlID0gY29zdEl0ZW0uY2FsY3VsYXRpb25UeXBlID09PSBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZS5SYXRlO1xyXG4gICAgICAgIGl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29zdEl0ZW1Db2RlOiBjb2RlLFxyXG4gICAgICAgICAgY29zdEl0ZW1OYW1lOiBjb3N0SXRlbS5uYW1lID8/IGNvZGUsXHJcbiAgICAgICAgICBjYWxjdWxhdGlvblR5cGU6IGNvc3RJdGVtLmNhbGN1bGF0aW9uVHlwZSxcclxuICAgICAgICAgIHN5c3RlbUNvZGU6IGNvc3RJdGVtLnN5c3RlbUNvZGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgY3VycmVuY3k6IHN0b3JlZD8uY3VycmVuY3kgPz8gKGlzUmF0ZSA/IHVuZGVmaW5lZCA6IEN1cnJlbmN5LlRSWSksXHJcbiAgICAgICAgICB2YWx1ZTogc3RvcmVkPy52YWx1ZSA/PyAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZ3JvdXBDb2RlOiBncm91cC5jb2RlID8/ICcnLFxyXG4gICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSA/PyAnJyxcclxuICAgICAgICBkaXNwbGF5T3JkZXI6IGdyb3VwLmRpc3BsYXlPcmRlcixcclxuICAgICAgICBncm91cFJvbGU6IGdyb3VwLmdyb3VwUm9sZSxcclxuICAgICAgICBpdGVtcyxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXN1bHQgPSBjYWxjdWxhdGVDb3N0KHtcclxuICAgICAgcmF3T2lsUHJpY2U6IHBhcnNlRGVjaW1hbCh0aGlzLnJhd09pbFByaWNlKSxcclxuICAgICAgcmF3T2lsQ3VycmVuY3k6IHRoaXMucmF3T2lsQ3VycmVuY3ksXHJcbiAgICAgIHJhdGVVc2Q6IHBhcnNlRGVjaW1hbCh0aGlzLnJhdGVVc2QpLFxyXG4gICAgICByYXRlRXVyOiBwYXJzZURlY2ltYWwodGhpcy5yYXRlRXVyKSxcclxuICAgICAgc3RhZ2VzOiB0aGlzLnN0YWdlcyxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yb2xlR3JvdXBzID0gYnVpbGRSb2xlR3JvdXBzKHRoaXMucmVzdWx0LnJhd09pbCwgdGhpcy5yZXN1bHQuc3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIHByaW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LnByaW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVSYXRlcyhyYXRlOiBFeGNoYW5nZVJhdGVEdG8pOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICAgIGlmICghcmF0ZSkgcmV0dXJuIFswLCAwXTtcclxuICAgIGlmIChyYXRlLnNvdXJjZSA9PT0gRXhjaGFuZ2VSYXRlU291cmNlLkZpeGVkKSB7XHJcbiAgICAgIHJldHVybiBbcmF0ZS5maXhlZFVzZFJhdGUgPz8gMCwgcmF0ZS5maXhlZEV1clJhdGUgPz8gMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3JhdGUuY2JFeGNoYW5nZVJhdGU/LnVzZEJ1eWluZ1JhdGUgPz8gMCwgcmF0ZS5jYkV4Y2hhbmdlUmF0ZT8uZXVyQnV5aW5nUmF0ZSA/PyAwXTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMSBwdC0wIHB0LW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByaW50KClcIiBbZGlzYWJsZWRdPVwiIXJlc3VsdFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wcmludCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlByaW50JyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbWItM1wiPlxyXG4gICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24taW5wdXRzXHJcbiAgICAgICAgW2l0ZW1zRGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtpdGVtRGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICBbcGFyYW1ldGVyRGlzcGxheUV4cHJdPVwicGFyYW1ldGVyRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzdGFnZXNdPVwic3RhZ2VzXCJcclxuICAgICAgICBbKHNlbGVjdGVkSXRlbUNvZGUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIFsoc2VsZWN0ZWRQYXJhbWV0ZXJDb2RlKV09XCJzZWxlY3RlZFBhcmFtZXRlckNvZGVcIlxyXG4gICAgICAgIFsocmF3T2lsUHJpY2UpXT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICBbKHJhd09pbEN1cnJlbmN5KV09XCJyYXdPaWxDdXJyZW5jeVwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVVc2RdPVwic3lzdGVtUmF0ZVVzZFwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVFdXJdPVwic3lzdGVtUmF0ZUV1clwiXHJcbiAgICAgICAgWyhyYXRlVXNkKV09XCJyYXRlVXNkXCJcclxuICAgICAgICBbKHJhdGVFdXIpXT1cInJhdGVFdXJcIlxyXG4gICAgICAgIChpdGVtQ2hhbmdlKT1cIm9uSXRlbUNoYW5nZSgpXCJcclxuICAgICAgICAocGFyYW1ldGVyQ2hhbmdlKT1cIm9uUGFyYW1ldGVyQ2hhbmdlKClcIlxyXG4gICAgICAgIChyZWNhbGMpPVwiY2FsY3VsYXRlKClcIlxyXG4gICAgICA+PC9saWItY29zdC1jYWxjdWxhdGlvbi1pbnB1dHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1wcmludC1ub25lXCI+XHJcbiAgICAgICAgPGxpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdC1zdW0gW3JvbGVHcm91cHNdPVwicm9sZUdyb3Vwc1wiPjwvbGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgaWQ9XCJjb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHNcIj5cclxuICAgICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0cyBbcmVzdWx0XT1cInJlc3VsdFwiIFtyb2xlR3JvdXBzXT1cInJvbGVHcm91cHNcIiBbaXRlbU5hbWVdPVwic2VsZWN0ZWRJdGVtTmFtZVwiIFtyYXRlVXNkXT1cInJhdGVVc2RcIiBbcmF0ZUV1cl09XCJyYXRlRXVyXCI+PC9saWItY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
160
+ }], ctorParameters: function () { return [{ type: i1.CostParameterService }, { type: i1.CostParameterCategoryService }, { type: i1.CostItemService }, { type: i1.CostGroupService }, { type: i1.ExchangeRateService }, { type: i1.ItemService }]; } });
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFXTCxRQUFRLEVBQ1IsK0JBQStCLEdBRWhDLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXlCLE1BQU0sV0FBVyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7O0FBUWhGLE1BQU0sT0FBTyx3QkFBd0I7SUE0Qm5DLFlBQ21CLGdCQUFzQyxFQUN0Qyw0QkFBMEQsRUFDMUQsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxXQUF3QjtRQUx4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGlD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LENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7cUhBcktVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDREQy9CckMsNDVEQTRDQTsyRkRiYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBEYXRhU291cmNlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCBBcnJheVN0b3JlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9hcnJheV9zdG9yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29zdEdyb3VwU2VydmljZSxcclxuICBDb3N0SXRlbVNlcnZpY2UsXHJcbiAgQ29zdFBhcmFtZXRlckNhdGVnb3J5U2VydmljZSxcclxuICBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICBFeGNoYW5nZVJhdGVTZXJ2aWNlLFxyXG4gIEl0ZW1TZXJ2aWNlLFxyXG4gIEl0ZW1EdG8sXHJcbiAgQ29zdFBhcmFtZXRlckR0byxcclxuICBDb3N0SXRlbUR0byxcclxuICBDb3N0R3JvdXBEdG8sXHJcbiAgQ3VycmVuY3ksXHJcbiAgQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZSxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG8sXHJcbn0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBidWlsZFJvbGVHcm91cHMsIGNhbGN1bGF0ZUNvc3QsIENvc3RSZXN1bHQsIFJvbGVHcm91cCB9IGZyb20gJy4uL2VuZ2luZSc7XHJcbmltcG9ydCB7IENvc3RDYWxjdWxhdGlvbkl0ZW0sIENvc3RDYWxjdWxhdGlvblN0YWdlIH0gZnJvbSAnLi4vY29zdC1jYWxjdWxhdGlvbi5tb2RlbHMnO1xyXG5pbXBvcnQgeyBwYXJzZURlY2ltYWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9udW1iZXIudXRpbHMnO1xyXG5pbXBvcnQgeyByZXNvbHZlU3lzdGVtUmF0ZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9leGNoYW5nZS1yYXRlLnV0aWxzJztcclxuaW1wb3J0IHsgaXNSYXRlQ29zdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29zdC1pdGVtLWNsYXNzaWZpY2F0aW9uLnV0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvc3QtY2FsY3VsYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvc3RDYWxjdWxhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgaXRlbUNvZGVQcmVmaXggPSAnMDUnO1xyXG4gIHByb2R1Y3RJdGVtczogSXRlbUR0b1tdID0gW107XHJcbiAgaXRlbXNEYXRhU291cmNlOiBEYXRhU291cmNlIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRJdGVtQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRJdGVtTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHBhcmFtZXRlcnM6IENvc3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xyXG4gIHNlbGVjdGVkUGFyYW1ldGVyQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHJhd09pbFByaWNlID0gMDtcclxuICByYXdPaWxDdXJyZW5jeSA9IEN1cnJlbmN5LlVTRDtcclxuXHJcbiAgc3lzdGVtUmF0ZVVzZCA9IDA7XHJcbiAgc3lzdGVtUmF0ZUV1ciA9IDA7XHJcblxyXG4gIHJhdGVVc2QgPSAwO1xyXG4gIHJhdGVFdXIgPSAwO1xyXG5cclxuICBzdGFnZXM6IENvc3RDYWxjdWxhdGlvblN0YWdlW10gPSBbXTtcclxuICByZXN1bHQ6IENvc3RSZXN1bHQgfCBudWxsID0gbnVsbDtcclxuICByb2xlR3JvdXBzOiBSb2xlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGNvc3RJdGVtc0J5Q29kZSA9IG5ldyBNYXA8c3RyaW5nLCBDb3N0SXRlbUR0bz4oKTtcclxuICBwcml2YXRlIGdyb3VwczogQ29zdEdyb3VwRHRvW10gPSBbXTtcclxuICBwcml2YXRlIHByb2R1Y3RHcm91cE5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICBwcml2YXRlIHJlZ2lvbk5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlclNlcnZpY2U6IENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3N0UGFyYW1ldGVyQ2F0ZWdvcnlTZXJ2aWNlOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3N0SXRlbVNlcnZpY2U6IENvc3RJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29zdEdyb3VwU2VydmljZTogQ29zdEdyb3VwU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhjaGFuZ2VSYXRlU2VydmljZTogRXhjaGFuZ2VSYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZSgpO1xyXG5cclxuICAgIGZvcmtKb2luKHtcclxuICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldExpc3QoKSxcclxuICAgICAgY29zdEl0ZW1zOiB0aGlzLmNvc3RJdGVtU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIGdyb3VwczogdGhpcy5jb3N0R3JvdXBTZXJ2aWNlLmdldExpc3QoKSxcclxuICAgICAgcmF0ZTogdGhpcy5leGNoYW5nZVJhdGVTZXJ2aWNlLmdldCgpLFxyXG4gICAgICBsb29rdXBzOiB0aGlzLmNvc3RQYXJhbWV0ZXJDYXRlZ29yeVNlcnZpY2UuZ2V0TGlzdCgpLFxyXG4gICAgICBpdGVtczogdGhpcy5pdGVtU2VydmljZS5nZXRMaXN0KHRoaXMuaXRlbUNvZGVQcmVmaXgpLFxyXG4gICAgfSkuc3Vic2NyaWJlKCh7IHBhcmFtZXRlcnMsIGNvc3RJdGVtcywgZ3JvdXBzLCByYXRlLCBsb29rdXBzLCBpdGVtcyB9KSA9PiB7XHJcbiAgICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMgPz8gW107XHJcbiAgICAgIHRoaXMucHJvZHVjdEl0ZW1zID0gaXRlbXMgPz8gW107XHJcbiAgICAgIHRoaXMuaXRlbXNEYXRhU291cmNlID0gbmV3IERhdGFTb3VyY2Uoe1xyXG4gICAgICAgIHN0b3JlOiBuZXcgQXJyYXlTdG9yZSh7IGtleTogJ2NvZGUnLCBkYXRhOiB0aGlzLnByb2R1Y3RJdGVtcyB9KSxcclxuICAgICAgICBwYWdpbmF0ZTogdHJ1ZSxcclxuICAgICAgICBwYWdlU2l6ZTogNTAsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGxvb2t1cHMgPz8gW107XHJcbiAgICAgIHRoaXMucHJvZHVjdEdyb3VwTmFtZXMgPSB0aGlzLnRvTmFtZU1hcChcclxuICAgICAgICBjYXRlZ29yaWVzLmZpbHRlcih4ID0+IHgucGFyZW50Q29kZSA9PT0gQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlMSksXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmVnaW9uTmFtZXMgPSB0aGlzLnRvTmFtZU1hcChcclxuICAgICAgICBjYXRlZ29yaWVzLmZpbHRlcih4ID0+IHgucGFyZW50Q29kZSA9PT0gQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlNCksXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNvc3RJdGVtc0J5Q29kZSA9IG5ldyBNYXA8c3RyaW5nLCBDb3N0SXRlbUR0bz4oKTtcclxuICAgICAgZm9yIChjb25zdCBjaSBvZiBjb3N0SXRlbXMgPz8gW10pIHtcclxuICAgICAgICBpZiAoY2kuY29kZSkgdGhpcy5jb3N0SXRlbXNCeUNvZGUuc2V0KGNpLmNvZGUsIGNpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5ncm91cHMgPSAoZ3JvdXBzID8/IFtdKS5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEuZGlzcGxheU9yZGVyIC0gYi5kaXNwbGF5T3JkZXIpO1xyXG5cclxuICAgICAgY29uc3QgW3VzZCwgZXVyXSA9IHJlc29sdmVTeXN0ZW1SYXRlcyhyYXRlKTtcclxuICAgICAgdGhpcy5zeXN0ZW1SYXRlVXNkID0gdXNkO1xyXG4gICAgICB0aGlzLnN5c3RlbVJhdGVFdXIgPSBldXI7XHJcbiAgICAgIHRoaXMucmF0ZVVzZCA9IHVzZDtcclxuICAgICAgdGhpcy5yYXRlRXVyID0gZXVyO1xyXG5cclxuICAgICAgdGhpcy5jYWxjdWxhdGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcGFyYW1ldGVyTGFiZWwocDogQ29zdFBhcmFtZXRlckR0byk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwcm9kdWN0R3JvdXAgPSB0aGlzLnByb2R1Y3RHcm91cE5hbWVzLmdldChwLnByb2R1Y3RHcm91cCA/PyAnJykgPz8gcC5wcm9kdWN0R3JvdXA7XHJcbiAgICBjb25zdCByZWdpb24gPSB0aGlzLnJlZ2lvbk5hbWVzLmdldChwLnJlZ2lvbiA/PyAnJykgPz8gcC5yZWdpb247XHJcbiAgICByZXR1cm4gW3Byb2R1Y3RHcm91cCwgcmVnaW9uXS5maWx0ZXIoQm9vbGVhbikuam9pbignIOKAlCAnKSB8fCAocC5jb2RlID8/ICcnKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnByb2R1Y3RJdGVtcy5maW5kKHggPT4geC5jb2RlID09PSB0aGlzLnNlbGVjdGVkSXRlbUNvZGUpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gaXRlbT8ubmFtZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgaXRlbURpc3BsYXlFeHByID0gKGl0ZW06IEl0ZW1EdG8pOiBzdHJpbmcgPT5cclxuICAgIGl0ZW0gPyBbaXRlbS5jb2RlLCBpdGVtLm5hbWVdLmZpbHRlcihCb29sZWFuKS5qb2luKCcg4oCUICcpIDogJyc7XHJcblxyXG4gIHJlYWRvbmx5IHBhcmFtZXRlckRpc3BsYXlFeHByID0gKHA6IENvc3RQYXJhbWV0ZXJEdG8pOiBzdHJpbmcgPT5cclxuICAgIHAgPyB0aGlzLnBhcmFtZXRlckxhYmVsKHApIDogJyc7XHJcblxyXG4gIHByaXZhdGUgdG9OYW1lTWFwKG9wdGlvbnM6IENvc3RQYXJhbWV0ZXJDYXRlZ29yeUR0b1tdIHwgdW5kZWZpbmVkKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucyA/PyBbXSkge1xyXG4gICAgICBpZiAob3B0aW9uLmNvZGUpIG1hcC5zZXQob3B0aW9uLmNvZGUsIG9wdGlvbi5uYW1lID8/IG9wdGlvbi5jb2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtYXA7XHJcbiAgfVxyXG5cclxuICBvblBhcmFtZXRlckNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmFtZXRlciA9IHRoaXMucGFyYW1ldGVycy5maW5kKHAgPT4gcC5jb2RlID09PSB0aGlzLnNlbGVjdGVkUGFyYW1ldGVyQ29kZSk7XHJcbiAgICB0aGlzLnN0YWdlcyA9IHBhcmFtZXRlciA/IHRoaXMuYnVpbGRTdGFnZXMocGFyYW1ldGVyKSA6IFtdO1xyXG4gICAgdGhpcy5jYWxjdWxhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRWYWx1ZXNCeUNvZGUoXHJcbiAgICBwYXJhbWV0ZXI6IENvc3RQYXJhbWV0ZXJEdG8sXHJcbiAgKTogTWFwPHN0cmluZywgeyB2YWx1ZTogbnVtYmVyOyBjdXJyZW5jeT86IEN1cnJlbmN5IH0+IHtcclxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCB7IHZhbHVlOiBudW1iZXI7IGN1cnJlbmN5PzogQ3VycmVuY3kgfT4oKTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBwYXJhbWV0ZXIuaXRlbXMgPz8gW10pIHtcclxuICAgICAgaWYgKGl0ZW0uY29zdEl0ZW1Db2RlKSB7XHJcbiAgICAgICAgbWFwLnNldChpdGVtLmNvc3RJdGVtQ29kZSwgeyB2YWx1ZTogcGFyc2VEZWNpbWFsKGl0ZW0udmFsdWUpLCBjdXJyZW5jeTogaXRlbS5jdXJyZW5jeSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTdGFnZXMocGFyYW1ldGVyOiBDb3N0UGFyYW1ldGVyRHRvKTogQ29zdENhbGN1bGF0aW9uU3RhZ2VbXSB7XHJcbiAgICBjb25zdCB2YWx1ZXNCeUNvZGUgPSB0aGlzLmJ1aWxkVmFsdWVzQnlDb2RlKHBhcmFtZXRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cHMubWFwKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgaXRlbXM6IENvc3RDYWxjdWxhdGlvbkl0ZW1bXSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvZGUgb2YgZ3JvdXAuaXRlbUNvZGVzID8/IFtdKSB7XHJcbiAgICAgICAgY29uc3QgY29zdEl0ZW0gPSB0aGlzLmNvc3RJdGVtc0J5Q29kZS5nZXQoY29kZSk7XHJcbiAgICAgICAgaWYgKCFjb3N0SXRlbSkgY29udGludWU7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkID0gdmFsdWVzQnlDb2RlLmdldChjb2RlKTtcclxuICAgICAgICBjb25zdCBpc1JhdGUgPSBpc1JhdGVDb3N0SXRlbShjb3N0SXRlbSk7XHJcbiAgICAgICAgaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICBjb3N0SXRlbUNvZGU6IGNvZGUsXHJcbiAgICAgICAgICBjb3N0SXRlbU5hbWU6IGNvc3RJdGVtLm5hbWUgPz8gY29kZSxcclxuICAgICAgICAgIGNhbGN1bGF0aW9uVHlwZTogY29zdEl0ZW0uY2FsY3VsYXRpb25UeXBlLFxyXG4gICAgICAgICAgc3lzdGVtQ29kZTogY29zdEl0ZW0uc3lzdGVtQ29kZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBjdXJyZW5jeTogc3RvcmVkPy5jdXJyZW5jeSA/PyAoaXNSYXRlID8gdW5kZWZpbmVkIDogQ3VycmVuY3kuVFJZKSxcclxuICAgICAgICAgIHZhbHVlOiBzdG9yZWQ/LnZhbHVlID8/IDAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBncm91cENvZGU6IGdyb3VwLmNvZGUgPz8gJycsXHJcbiAgICAgICAgZ3JvdXBOYW1lOiBncm91cC5uYW1lID8/ICcnLFxyXG4gICAgICAgIGRpc3BsYXlPcmRlcjogZ3JvdXAuZGlzcGxheU9yZGVyLFxyXG4gICAgICAgIGdyb3VwUm9sZTogZ3JvdXAuZ3JvdXBSb2xlLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc3VsdCA9IGNhbGN1bGF0ZUNvc3Qoe1xyXG4gICAgICByYXdPaWxQcmljZTogcGFyc2VEZWNpbWFsKHRoaXMucmF3T2lsUHJpY2UpLFxyXG4gICAgICByYXdPaWxDdXJyZW5jeTogdGhpcy5yYXdPaWxDdXJyZW5jeSxcclxuICAgICAgcmF0ZVVzZDogcGFyc2VEZWNpbWFsKHRoaXMucmF0ZVVzZCksXHJcbiAgICAgIHJhdGVFdXI6IHBhcnNlRGVjaW1hbCh0aGlzLnJhdGVFdXIpLFxyXG4gICAgICBzdGFnZXM6IHRoaXMuc3RhZ2VzLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJvbGVHcm91cHMgPSBidWlsZFJvbGVHcm91cHModGhpcy5yZXN1bHQucmF3T2lsLCB0aGlzLnJlc3VsdC5zdGFnZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpbnQoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucHJpbnQoKTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMSBwdC0wIHB0LW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByaW50KClcIiBbZGlzYWJsZWRdPVwiIXJlc3VsdFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wcmludCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlByaW50JyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbWItM1wiPlxyXG4gICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24taW5wdXRzXHJcbiAgICAgICAgW2l0ZW1zRGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtpdGVtRGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICBbcGFyYW1ldGVyRGlzcGxheUV4cHJdPVwicGFyYW1ldGVyRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzdGFnZXNdPVwic3RhZ2VzXCJcclxuICAgICAgICBbKHNlbGVjdGVkSXRlbUNvZGUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIFsoc2VsZWN0ZWRQYXJhbWV0ZXJDb2RlKV09XCJzZWxlY3RlZFBhcmFtZXRlckNvZGVcIlxyXG4gICAgICAgIFsocmF3T2lsUHJpY2UpXT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICBbKHJhd09pbEN1cnJlbmN5KV09XCJyYXdPaWxDdXJyZW5jeVwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVVc2RdPVwic3lzdGVtUmF0ZVVzZFwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVFdXJdPVwic3lzdGVtUmF0ZUV1clwiXHJcbiAgICAgICAgWyhyYXRlVXNkKV09XCJyYXRlVXNkXCJcclxuICAgICAgICBbKHJhdGVFdXIpXT1cInJhdGVFdXJcIlxyXG4gICAgICAgIChpdGVtQ2hhbmdlKT1cIm9uSXRlbUNoYW5nZSgpXCJcclxuICAgICAgICAocGFyYW1ldGVyQ2hhbmdlKT1cIm9uUGFyYW1ldGVyQ2hhbmdlKClcIlxyXG4gICAgICAgIChyZWNhbGMpPVwiY2FsY3VsYXRlKClcIlxyXG4gICAgICA+PC9saWItY29zdC1jYWxjdWxhdGlvbi1pbnB1dHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1wcmludC1ub25lXCI+XHJcbiAgICAgICAgPGxpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdC1zdW0gW3JvbGVHcm91cHNdPVwicm9sZUdyb3Vwc1wiPjwvbGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgaWQ9XCJjb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHNcIj5cclxuICAgICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0cyBbcmVzdWx0XT1cInJlc3VsdFwiIFtyb2xlR3JvdXBzXT1cInJvbGVHcm91cHNcIiBbaXRlbU5hbWVdPVwic2VsZWN0ZWRJdGVtTmFtZVwiIFtyYXRlVXNkXT1cInJhdGVVc2RcIiBbcmF0ZUV1cl09XCJyYXRlRXVyXCI+PC9saWItY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
@@ -1,5 +1,6 @@
1
- import { CostItemCalculationType, CostItemSystemCode } from '@hitsoft/kadooglu-keops/proxy';
1
+ import { CostItemSystemCode } from '@hitsoft/kadooglu-keops/proxy';
2
2
  import { parseDecimal } from '../../../utils/number.utils';
3
+ import { isRateCostItem } from '../../../shared/cost-item-classification.utils';
3
4
  import { toAmount, toBaseUsd } from './currency.utils';
4
5
  export function buildComputedBaseByCode(resolvedItems, loss, profit) {
5
6
  return new Map([
@@ -36,7 +37,7 @@ export function buildCostStages(stages, computedBaseByCode, itemsByCode, rateUsd
36
37
  calculationType: item.calculationType,
37
38
  systemCode: item.systemCode,
38
39
  currency: item.currency,
39
- ratePercent: item.calculationType === CostItemCalculationType.Rate
40
+ ratePercent: isRateCostItem(item)
40
41
  ? parseDecimal(itemsByCode.get(item.systemCode)?.value ?? 0)
41
42
  : undefined,
42
43
  amount: toAmount(itemUsd, rateUsd, rateEur),
@@ -52,4 +53,4 @@ export function buildCostStages(stages, computedBaseByCode, itemsByCode, rateUsd
52
53
  };
53
54
  });
54
55
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9lbmdpbmUvc3RhZ2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2RCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLGFBQTRCLEVBQzVCLElBQVksRUFDWixNQUFjO0lBRWQsT0FBTyxJQUFJLEdBQUcsQ0FBQztRQUNiLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDN0MsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsaUJBQWlCLENBQUM7UUFDdkUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNuRCxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7UUFDL0IsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsZ0JBQWdCLENBQUM7UUFDckUsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsb0JBQW9CLENBQUM7UUFDN0UsQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsRUFBRSxhQUFhLENBQUMsd0JBQXdCLENBQUM7UUFDckYsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUN2RCxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsY0FBYyxDQUFDO1FBQ2pFLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFDN0QsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNuRCxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQzNELENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLG9CQUFvQixDQUFDO1FBQzdFLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQztLQUN4QyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBOEIsRUFDOUIsa0JBQXVDLEVBQ3ZDLFdBQTZDLEVBQzdDLE9BQWUsRUFDZixPQUFlO0lBRWYsT0FBTyxNQUFNO1NBQ1YsS0FBSyxFQUFFO1NBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQy9DLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNYLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN0QixNQUFNLEtBQUssR0FBZSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQyxNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUk7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0UsYUFBYSxJQUFJLE9BQU8sQ0FBQztZQUN6QixPQUFPO2dCQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQ3JDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixXQUFXLEVBQ1QsSUFBSSxDQUFDLGVBQWUsS0FBSyx1QkFBdUIsQ0FBQyxJQUFJO29CQUNuRCxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQzdELENBQUMsQ0FBQyxTQUFTO2dCQUNmLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7YUFDNUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixLQUFLO1lBQ0wsUUFBUSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztTQUNwRCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUsIENvc3RJdGVtU3lzdGVtQ29kZSB9IGZyb20gJ0BoaXRzb2Z0L2thZG9vZ2x1LWtlb3BzL3Byb3h5JztcclxuaW1wb3J0IHsgcGFyc2VEZWNpbWFsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbnVtYmVyLnV0aWxzJztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uSXRlbSwgQ29zdENhbGN1bGF0aW9uU3RhZ2UgfSBmcm9tICcuLi9jb3N0LWNhbGN1bGF0aW9uLm1vZGVscyc7XHJcbmltcG9ydCB7IHRvQW1vdW50LCB0b0Jhc2VVc2QgfSBmcm9tICcuL2N1cnJlbmN5LnV0aWxzJztcclxuaW1wb3J0IHsgQ29zdExpbmUsIENvc3RTdGFnZSwgUmVzb2x2ZWRJdGVtcyB9IGZyb20gJy4vbW9kZWxzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbXB1dGVkQmFzZUJ5Q29kZShcclxuICByZXNvbHZlZEl0ZW1zOiBSZXNvbHZlZEl0ZW1zLFxyXG4gIGxvc3M6IG51bWJlcixcclxuICBwcm9maXQ6IG51bWJlcixcclxuKTogTWFwPG51bWJlciwgbnVtYmVyPiB7XHJcbiAgcmV0dXJuIG5ldyBNYXAoW1xyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5Qb3J0LCByZXNvbHZlZEl0ZW1zLnBvcnRdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5JbnNwZWN0aW9uQ3VzdG9tcywgcmVzb2x2ZWRJdGVtcy5pbnNwZWN0aW9uQ3VzdG9tc10sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLkZyZWlnaHQsIHJlc29sdmVkSXRlbXMuZnJlaWdodF0sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLkxvc3MsIGxvc3NdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5SZWZpbmVyeU92ZXJoZWFkLCByZXNvbHZlZEl0ZW1zLnJlZmluZXJ5T3ZlcmhlYWRdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5SZWZpbmVyeUF1eE1hdGVyaWFscywgcmVzb2x2ZWRJdGVtcy5yZWZpbmVyeUF1eE1hdGVyaWFsc10sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLkZpbGxpbmdQYWNrYWdpbmdPdmVyaGVhZCwgcmVzb2x2ZWRJdGVtcy5maWxsaW5nUGFja2FnaW5nT3ZlcmhlYWRdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5QYWNrYWdpbmcsIHJlc29sdmVkSXRlbXMucGFja2FnaW5nXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuU2FsZXNNYXJrZXRpbmcsIHJlc29sdmVkSXRlbXMuc2FsZXNNYXJrZXRpbmddLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5HZW5lcmFsQWRtaW4sIHJlc29sdmVkSXRlbXMuZ2VuZXJhbEFkbWluXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuRmluYW5jZSwgcmVzb2x2ZWRJdGVtcy5maW5hbmNlXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuQ29udGluZ2VuY3ksIHJlc29sdmVkSXRlbXMuY29udGluZ2VuY3ldLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5WYXJpYWJsZURlcHJlY2lhdGlvbiwgcmVzb2x2ZWRJdGVtcy52YXJpYWJsZURlcHJlY2lhdGlvbl0sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLlByb2ZpdFJhdGUsIHByb2ZpdF0sXHJcbiAgXSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvc3RTdGFnZXMoXHJcbiAgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdLFxyXG4gIGNvbXB1dGVkQmFzZUJ5Q29kZTogTWFwPG51bWJlciwgbnVtYmVyPixcclxuICBpdGVtc0J5Q29kZTogTWFwPG51bWJlciwgQ29zdENhbGN1bGF0aW9uSXRlbT4sXHJcbiAgcmF0ZVVzZDogbnVtYmVyLFxyXG4gIHJhdGVFdXI6IG51bWJlcixcclxuKTogQ29zdFN0YWdlW10ge1xyXG4gIHJldHVybiBzdGFnZXNcclxuICAgIC5zbGljZSgpXHJcbiAgICAuc29ydCgoYSwgYikgPT4gYS5kaXNwbGF5T3JkZXIgLSBiLmRpc3BsYXlPcmRlcilcclxuICAgIC5tYXAoc3RhZ2UgPT4ge1xyXG4gICAgICBsZXQgc3RhZ2VUb3RhbFVzZCA9IDA7XHJcbiAgICAgIGNvbnN0IGxpbmVzOiBDb3N0TGluZVtdID0gc3RhZ2UuaXRlbXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Vc2QgPVxyXG4gICAgICAgICAgaXRlbS5zeXN0ZW1Db2RlICE9IG51bGxcclxuICAgICAgICAgICAgPyAoY29tcHV0ZWRCYXNlQnlDb2RlLmdldChpdGVtLnN5c3RlbUNvZGUpID8/IDApXHJcbiAgICAgICAgICAgIDogdG9CYXNlVXNkKHBhcnNlRGVjaW1hbChpdGVtLnZhbHVlKSwgaXRlbS5jdXJyZW5jeSwgcmF0ZVVzZCwgcmF0ZUV1cik7XHJcbiAgICAgICAgc3RhZ2VUb3RhbFVzZCArPSBpdGVtVXNkO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBjb3N0SXRlbUNvZGU6IGl0ZW0uY29zdEl0ZW1Db2RlLFxyXG4gICAgICAgICAgY29zdEl0ZW1OYW1lOiBpdGVtLmNvc3RJdGVtTmFtZSxcclxuICAgICAgICAgIGNhbGN1bGF0aW9uVHlwZTogaXRlbS5jYWxjdWxhdGlvblR5cGUsXHJcbiAgICAgICAgICBzeXN0ZW1Db2RlOiBpdGVtLnN5c3RlbUNvZGUsXHJcbiAgICAgICAgICBjdXJyZW5jeTogaXRlbS5jdXJyZW5jeSxcclxuICAgICAgICAgIHJhdGVQZXJjZW50OlxyXG4gICAgICAgICAgICBpdGVtLmNhbGN1bGF0aW9uVHlwZSA9PT0gQ29zdEl0ZW1DYWxjdWxhdGlvblR5cGUuUmF0ZVxyXG4gICAgICAgICAgICAgID8gcGFyc2VEZWNpbWFsKGl0ZW1zQnlDb2RlLmdldChpdGVtLnN5c3RlbUNvZGUhKT8udmFsdWUgPz8gMClcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGFtb3VudDogdG9BbW91bnQoaXRlbVVzZCwgcmF0ZVVzZCwgcmF0ZUV1ciksXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZ3JvdXBDb2RlOiBzdGFnZS5ncm91cENvZGUsXHJcbiAgICAgICAgZ3JvdXBOYW1lOiBzdGFnZS5ncm91cE5hbWUsXHJcbiAgICAgICAgZGlzcGxheU9yZGVyOiBzdGFnZS5kaXNwbGF5T3JkZXIsXHJcbiAgICAgICAgZ3JvdXBSb2xlOiBzdGFnZS5ncm91cFJvbGUsXHJcbiAgICAgICAgbGluZXMsXHJcbiAgICAgICAgc3VidG90YWw6IHRvQW1vdW50KHN0YWdlVG90YWxVc2QsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbn1cclxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9lbmdpbmUvc3RhZ2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHdkQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxhQUE0QixFQUM1QixJQUFZLEVBQ1osTUFBYztJQUVkLE9BQU8sSUFBSSxHQUFHLENBQUM7UUFDYixDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQzdDLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDbkQsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1FBQy9CLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JFLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLG9CQUFvQixDQUFDO1FBQzdFLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLHdCQUF3QixDQUFDO1FBQ3JGLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDdkQsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUNqRSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDO1FBQzdELENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDbkQsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUMzRCxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztRQUM3RSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUM7S0FDeEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQThCLEVBQzlCLGtCQUF1QyxFQUN2QyxXQUE2QyxFQUM3QyxPQUFlLEVBQ2YsT0FBZTtJQUVmLE9BQU8sTUFBTTtTQUNWLEtBQUssRUFBRTtTQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUMvQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDWCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQWUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0MsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJO2dCQUNyQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzNFLGFBQWEsSUFBSSxPQUFPLENBQUM7WUFDekIsT0FBTztnQkFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNyQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsV0FBVyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQzthQUM1QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLEtBQUs7WUFDTCxRQUFRLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO1NBQ3BELENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3N0SXRlbVN5c3RlbUNvZGUgfSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IHBhcnNlRGVjaW1hbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL251bWJlci51dGlscyc7XHJcbmltcG9ydCB7IGlzUmF0ZUNvc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Nvc3QtaXRlbS1jbGFzc2lmaWNhdGlvbi51dGlscyc7XHJcbmltcG9ydCB7IENvc3RDYWxjdWxhdGlvbkl0ZW0sIENvc3RDYWxjdWxhdGlvblN0YWdlIH0gZnJvbSAnLi4vY29zdC1jYWxjdWxhdGlvbi5tb2RlbHMnO1xyXG5pbXBvcnQgeyB0b0Ftb3VudCwgdG9CYXNlVXNkIH0gZnJvbSAnLi9jdXJyZW5jeS51dGlscyc7XHJcbmltcG9ydCB7IENvc3RMaW5lLCBDb3N0U3RhZ2UsIFJlc29sdmVkSXRlbXMgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb21wdXRlZEJhc2VCeUNvZGUoXHJcbiAgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyxcclxuICBsb3NzOiBudW1iZXIsXHJcbiAgcHJvZml0OiBudW1iZXIsXHJcbik6IE1hcDxudW1iZXIsIG51bWJlcj4ge1xyXG4gIHJldHVybiBuZXcgTWFwKFtcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuUG9ydCwgcmVzb2x2ZWRJdGVtcy5wb3J0XSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuSW5zcGVjdGlvbkN1c3RvbXMsIHJlc29sdmVkSXRlbXMuaW5zcGVjdGlvbkN1c3RvbXNdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5GcmVpZ2h0LCByZXNvbHZlZEl0ZW1zLmZyZWlnaHRdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5Mb3NzLCBsb3NzXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuUmVmaW5lcnlPdmVyaGVhZCwgcmVzb2x2ZWRJdGVtcy5yZWZpbmVyeU92ZXJoZWFkXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuUmVmaW5lcnlBdXhNYXRlcmlhbHMsIHJlc29sdmVkSXRlbXMucmVmaW5lcnlBdXhNYXRlcmlhbHNdLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5GaWxsaW5nUGFja2FnaW5nT3ZlcmhlYWQsIHJlc29sdmVkSXRlbXMuZmlsbGluZ1BhY2thZ2luZ092ZXJoZWFkXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuUGFja2FnaW5nLCByZXNvbHZlZEl0ZW1zLnBhY2thZ2luZ10sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLlNhbGVzTWFya2V0aW5nLCByZXNvbHZlZEl0ZW1zLnNhbGVzTWFya2V0aW5nXSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuR2VuZXJhbEFkbWluLCByZXNvbHZlZEl0ZW1zLmdlbmVyYWxBZG1pbl0sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLkZpbmFuY2UsIHJlc29sdmVkSXRlbXMuZmluYW5jZV0sXHJcbiAgICBbQ29zdEl0ZW1TeXN0ZW1Db2RlLkNvbnRpbmdlbmN5LCByZXNvbHZlZEl0ZW1zLmNvbnRpbmdlbmN5XSxcclxuICAgIFtDb3N0SXRlbVN5c3RlbUNvZGUuVmFyaWFibGVEZXByZWNpYXRpb24sIHJlc29sdmVkSXRlbXMudmFyaWFibGVEZXByZWNpYXRpb25dLFxyXG4gICAgW0Nvc3RJdGVtU3lzdGVtQ29kZS5Qcm9maXRSYXRlLCBwcm9maXRdLFxyXG4gIF0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb3N0U3RhZ2VzKFxyXG4gIHN0YWdlczogQ29zdENhbGN1bGF0aW9uU3RhZ2VbXSxcclxuICBjb21wdXRlZEJhc2VCeUNvZGU6IE1hcDxudW1iZXIsIG51bWJlcj4sXHJcbiAgaXRlbXNCeUNvZGU6IE1hcDxudW1iZXIsIENvc3RDYWxjdWxhdGlvbkl0ZW0+LFxyXG4gIHJhdGVVc2Q6IG51bWJlcixcclxuICByYXRlRXVyOiBudW1iZXIsXHJcbik6IENvc3RTdGFnZVtdIHtcclxuICByZXR1cm4gc3RhZ2VzXHJcbiAgICAuc2xpY2UoKVxyXG4gICAgLnNvcnQoKGEsIGIpID0+IGEuZGlzcGxheU9yZGVyIC0gYi5kaXNwbGF5T3JkZXIpXHJcbiAgICAubWFwKHN0YWdlID0+IHtcclxuICAgICAgbGV0IHN0YWdlVG90YWxVc2QgPSAwO1xyXG4gICAgICBjb25zdCBsaW5lczogQ29zdExpbmVbXSA9IHN0YWdlLml0ZW1zLm1hcChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtVXNkID1cclxuICAgICAgICAgIGl0ZW0uc3lzdGVtQ29kZSAhPSBudWxsXHJcbiAgICAgICAgICAgID8gKGNvbXB1dGVkQmFzZUJ5Q29kZS5nZXQoaXRlbS5zeXN0ZW1Db2RlKSA/PyAwKVxyXG4gICAgICAgICAgICA6IHRvQmFzZVVzZChwYXJzZURlY2ltYWwoaXRlbS52YWx1ZSksIGl0ZW0uY3VycmVuY3ksIHJhdGVVc2QsIHJhdGVFdXIpO1xyXG4gICAgICAgIHN0YWdlVG90YWxVc2QgKz0gaXRlbVVzZDtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY29zdEl0ZW1Db2RlOiBpdGVtLmNvc3RJdGVtQ29kZSxcclxuICAgICAgICAgIGNvc3RJdGVtTmFtZTogaXRlbS5jb3N0SXRlbU5hbWUsXHJcbiAgICAgICAgICBjYWxjdWxhdGlvblR5cGU6IGl0ZW0uY2FsY3VsYXRpb25UeXBlLFxyXG4gICAgICAgICAgc3lzdGVtQ29kZTogaXRlbS5zeXN0ZW1Db2RlLFxyXG4gICAgICAgICAgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3ksXHJcbiAgICAgICAgICByYXRlUGVyY2VudDogaXNSYXRlQ29zdEl0ZW0oaXRlbSlcclxuICAgICAgICAgICAgPyBwYXJzZURlY2ltYWwoaXRlbXNCeUNvZGUuZ2V0KGl0ZW0uc3lzdGVtQ29kZSEpPy52YWx1ZSA/PyAwKVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGFtb3VudDogdG9BbW91bnQoaXRlbVVzZCwgcmF0ZVVzZCwgcmF0ZUV1ciksXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZ3JvdXBDb2RlOiBzdGFnZS5ncm91cENvZGUsXHJcbiAgICAgICAgZ3JvdXBOYW1lOiBzdGFnZS5ncm91cE5hbWUsXHJcbiAgICAgICAgZGlzcGxheU9yZGVyOiBzdGFnZS5kaXNwbGF5T3JkZXIsXHJcbiAgICAgICAgZ3JvdXBSb2xlOiBzdGFnZS5ncm91cFJvbGUsXHJcbiAgICAgICAgbGluZXMsXHJcbiAgICAgICAgc3VidG90YWw6IHRvQW1vdW50KHN0YWdlVG90YWxVc2QsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbn1cclxuIl19
@@ -6,6 +6,7 @@ import { ThemeSharedModule } from '@abp/ng.theme.shared';
6
6
  import { PageModule } from '@abp/ng.components/page';
7
7
  import { CommercialUiModule } from '@volo/abp.commercial.ng.ui';
8
8
  import { DxSelectBoxModule } from 'devextreme-angular';
9
+ import { SharedUiModule } from '../../shared/shared-ui.module';
9
10
  import { CostCalculationComponent } from './components/cost-calculation.component';
10
11
  import { CostCalculationInputsComponent } from './components/cost-calculation-inputs.component';
11
12
  import { CostCalculationResultsComponent } from './components/cost-calculation-results.component';
@@ -26,7 +27,8 @@ HitCostCalculationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0"
26
27
  PageModule,
27
28
  CommercialUiModule,
28
29
  HitCostCalculationRoutingModule,
29
- DxSelectBoxModule] });
30
+ DxSelectBoxModule,
31
+ SharedUiModule] });
30
32
  HitCostCalculationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitCostCalculationModule, imports: [CommonModule,
31
33
  FormsModule,
32
34
  ReactiveFormsModule,
@@ -35,7 +37,8 @@ HitCostCalculationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0"
35
37
  PageModule,
36
38
  CommercialUiModule,
37
39
  HitCostCalculationRoutingModule,
38
- DxSelectBoxModule] });
40
+ DxSelectBoxModule,
41
+ SharedUiModule] });
39
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitCostCalculationModule, decorators: [{
40
43
  type: NgModule,
41
44
  args: [{
@@ -55,10 +58,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
55
58
  CommercialUiModule,
56
59
  HitCostCalculationRoutingModule,
57
60
  DxSelectBoxModule,
61
+ SharedUiModule,
58
62
  ],
59
63
  }]
60
64
  }] });
61
65
  export function loadHitCostCalculationModuleAsChild() {
62
66
  return Promise.resolve(HitCostCalculationModule);
63
67
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWNvc3QtY2FsY3VsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2hpdC1jb3N0LWNhbGN1bGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDdkcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBcUJ4RixNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsaUJBakJqQyx3QkFBd0I7UUFDeEIsOEJBQThCO1FBQzlCLCtCQUErQjtRQUMvQixpQ0FBaUMsYUFHakMsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsVUFBVTtRQUNWLGlCQUFpQjtRQUNqQixVQUFVO1FBQ1Ysa0JBQWtCO1FBQ2xCLCtCQUErQjtRQUMvQixpQkFBaUI7c0hBR1Isd0JBQXdCLFlBWGpDLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGtCQUFrQjtRQUNsQiwrQkFBK0I7UUFDL0IsaUJBQWlCOzJGQUdSLHdCQUF3QjtrQkFuQnBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHdCQUF3Qjt3QkFDeEIsOEJBQThCO3dCQUM5QiwrQkFBK0I7d0JBQy9CLGlDQUFpQztxQkFDbEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIsK0JBQStCO3dCQUMvQixpQkFBaUI7cUJBQ2xCO2lCQUNGOztBQUdELE1BQU0sVUFBVSxtQ0FBbUM7SUFDakQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IFBhZ2VNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvbXBvbmVudHMvcGFnZSc7XHJcbmltcG9ydCB7IENvbW1lcmNpYWxVaU1vZHVsZSB9IGZyb20gJ0B2b2xvL2FicC5jb21tZXJjaWFsLm5nLnVpJztcclxuaW1wb3J0IHsgRHhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25JbnB1dHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uUmVzdWx0c0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uUmVzdWx0U3VtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIaXRDb3N0Q2FsY3VsYXRpb25Sb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9oaXQtY29zdC1jYWxjdWxhdGlvbi1yb3V0aW5nLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQ29zdENhbGN1bGF0aW9uQ29tcG9uZW50LFxyXG4gICAgQ29zdENhbGN1bGF0aW9uSW5wdXRzQ29tcG9uZW50LFxyXG4gICAgQ29zdENhbGN1bGF0aW9uUmVzdWx0c0NvbXBvbmVudCxcclxuICAgIENvc3RDYWxjdWxhdGlvblJlc3VsdFN1bUNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvcmVNb2R1bGUsXHJcbiAgICBUaGVtZVNoYXJlZE1vZHVsZSxcclxuICAgIFBhZ2VNb2R1bGUsXHJcbiAgICBDb21tZXJjaWFsVWlNb2R1bGUsXHJcbiAgICBIaXRDb3N0Q2FsY3VsYXRpb25Sb3V0aW5nTW9kdWxlLFxyXG4gICAgRHhTZWxlY3RCb3hNb2R1bGUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdENvc3RDYWxjdWxhdGlvbk1vZHVsZSB7fVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRIaXRDb3N0Q2FsY3VsYXRpb25Nb2R1bGVBc0NoaWxkKCkge1xyXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoSGl0Q29zdENhbGN1bGF0aW9uTW9kdWxlKTtcclxufVxyXG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWNvc3QtY2FsY3VsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2hpdC1jb3N0LWNhbGN1bGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQXNCeEYsTUFBTSxPQUFPLHdCQUF3Qjs7cUhBQXhCLHdCQUF3QjtzSEFBeEIsd0JBQXdCLGlCQWxCakMsd0JBQXdCO1FBQ3hCLDhCQUE4QjtRQUM5QiwrQkFBK0I7UUFDL0IsaUNBQWlDLGFBR2pDLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGtCQUFrQjtRQUNsQiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLGNBQWM7c0hBR0wsd0JBQXdCLFlBWmpDLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGtCQUFrQjtRQUNsQiwrQkFBK0I7UUFDL0IsaUJBQWlCO1FBQ2pCLGNBQWM7MkZBR0wsd0JBQXdCO2tCQXBCcEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4Qiw4QkFBOEI7d0JBQzlCLCtCQUErQjt3QkFDL0IsaUNBQWlDO3FCQUNsQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1Ysa0JBQWtCO3dCQUNsQiwrQkFBK0I7d0JBQy9CLGlCQUFpQjt3QkFDakIsY0FBYztxQkFDZjtpQkFDRjs7QUFHRCxNQUFNLFVBQVUsbUNBQW1DO0lBQ2pELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBQYWdlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL3BhZ2UnO1xyXG5pbXBvcnQgeyBDb21tZXJjaWFsVWlNb2R1bGUgfSBmcm9tICdAdm9sby9hYnAuY29tbWVyY2lhbC5uZy51aSc7XHJcbmltcG9ydCB7IER4U2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgU2hhcmVkVWlNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLXVpLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvc3RDYWxjdWxhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvc3RDYWxjdWxhdGlvbklucHV0c0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLWlucHV0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25SZXN1bHRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25SZXN1bHRTdW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1yZXN1bHQtc3VtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhpdENvc3RDYWxjdWxhdGlvblJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2hpdC1jb3N0LWNhbGN1bGF0aW9uLXJvdXRpbmcubW9kdWxlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBDb3N0Q2FsY3VsYXRpb25Db21wb25lbnQsXHJcbiAgICBDb3N0Q2FsY3VsYXRpb25JbnB1dHNDb21wb25lbnQsXHJcbiAgICBDb3N0Q2FsY3VsYXRpb25SZXN1bHRzQ29tcG9uZW50LFxyXG4gICAgQ29zdENhbGN1bGF0aW9uUmVzdWx0U3VtQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZU1vZHVsZSxcclxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxyXG4gICAgUGFnZU1vZHVsZSxcclxuICAgIENvbW1lcmNpYWxVaU1vZHVsZSxcclxuICAgIEhpdENvc3RDYWxjdWxhdGlvblJvdXRpbmdNb2R1bGUsXHJcbiAgICBEeFNlbGVjdEJveE1vZHVsZSxcclxuICAgIFNoYXJlZFVpTW9kdWxlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRDb3N0Q2FsY3VsYXRpb25Nb2R1bGUge31cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkSGl0Q29zdENhbGN1bGF0aW9uTW9kdWxlQXNDaGlsZCgpIHtcclxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEhpdENvc3RDYWxjdWxhdGlvbk1vZHVsZSk7XHJcbn1cclxuIl19
@@ -1,9 +1,6 @@
1
1
  import { CostParameterCategoryParentCode } from '@hitsoft/kadooglu-keops/proxy';
2
2
  export const parentCodeLabels = {
3
3
  [CostParameterCategoryParentCode.Code1]: 'Keops::CostParameterCategories:ParentCode:Code1',
4
- [CostParameterCategoryParentCode.Code2]: 'Keops::CostParameterCategories:ParentCode:Code2',
5
- [CostParameterCategoryParentCode.Code3]: 'Keops::CostParameterCategories:ParentCode:Code3',
6
4
  [CostParameterCategoryParentCode.Code4]: 'Keops::CostParameterCategories:ParentCode:Code4',
7
- [CostParameterCategoryParentCode.Code5]: 'Keops::CostParameterCategories:ParentCode:Code5',
8
5
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1wYXJhbWV0ZXItY2F0ZWdvcnktbDEwbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtcGFyYW1ldGVyLWNhdGVnb3JpZXMvY29zdC1wYXJhbWV0ZXItY2F0ZWdvcnktbDEwbi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9EO0lBQy9FLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0lBQzFGLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0lBQzFGLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0lBQzFGLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0lBQzFGLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0NBQzNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlIH0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhcmVudENvZGVMYWJlbHM6IFJlY29yZDxDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlLCBzdHJpbmc+ID0ge1xyXG4gIFtDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlLkNvZGUxXTogJ0tlb3BzOjpDb3N0UGFyYW1ldGVyQ2F0ZWdvcmllczpQYXJlbnRDb2RlOkNvZGUxJyxcclxuICBbQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlMl06ICdLZW9wczo6Q29zdFBhcmFtZXRlckNhdGVnb3JpZXM6UGFyZW50Q29kZTpDb2RlMicsXHJcbiAgW0Nvc3RQYXJhbWV0ZXJDYXRlZ29yeVBhcmVudENvZGUuQ29kZTNdOiAnS2VvcHM6OkNvc3RQYXJhbWV0ZXJDYXRlZ29yaWVzOlBhcmVudENvZGU6Q29kZTMnLFxyXG4gIFtDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlLkNvZGU0XTogJ0tlb3BzOjpDb3N0UGFyYW1ldGVyQ2F0ZWdvcmllczpQYXJlbnRDb2RlOkNvZGU0JyxcclxuICBbQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlNV06ICdLZW9wczo6Q29zdFBhcmFtZXRlckNhdGVnb3JpZXM6UGFyZW50Q29kZTpDb2RlNScsXHJcbn07XHJcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1wYXJhbWV0ZXItY2F0ZWdvcnktbDEwbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtcGFyYW1ldGVyLWNhdGVnb3JpZXMvY29zdC1wYXJhbWV0ZXItY2F0ZWdvcnktbDEwbi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9EO0lBQy9FLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0lBQzFGLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsaURBQWlEO0NBQzNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlIH0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhcmVudENvZGVMYWJlbHM6IFJlY29yZDxDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlLCBzdHJpbmc+ID0ge1xyXG4gIFtDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlQYXJlbnRDb2RlLkNvZGUxXTogJ0tlb3BzOjpDb3N0UGFyYW1ldGVyQ2F0ZWdvcmllczpQYXJlbnRDb2RlOkNvZGUxJyxcclxuICBbQ29zdFBhcmFtZXRlckNhdGVnb3J5UGFyZW50Q29kZS5Db2RlNF06ICdLZW9wczo6Q29zdFBhcmFtZXRlckNhdGVnb3JpZXM6UGFyZW50Q29kZTpDb2RlNCcsXHJcbn07XHJcbiJdfQ==