@hitsoft/kadooglu-keops 0.0.1 → 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 (565) 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-definitions/components/container-definition-form.component.mjs +2 -2
  13. package/esm2020/lib/features/container-definitions/components/container-definitions.component.mjs +2 -2
  14. package/esm2020/lib/features/container-loading-counts/components/container-loading-counts.component.mjs +4 -4
  15. package/esm2020/lib/features/container-loading-scenarios/components/container-loading-scenarios.component.mjs +2 -2
  16. package/esm2020/lib/features/container-loading-scenarios/container-loading-scenario-l10n-helper.mjs +2 -2
  17. package/esm2020/lib/features/container-mix-types/components/container-mix-type-form.component.mjs +2 -2
  18. package/esm2020/lib/features/container-mix-types/components/container-mix-types.component.mjs +2 -2
  19. package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.mjs +7 -6
  20. package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacity-form.component.mjs +2 -2
  21. package/esm2020/lib/features/cost-calculation/components/cost-calculation-inputs.component.mjs +20 -11
  22. package/esm2020/lib/features/cost-calculation/components/cost-calculation-result-sum.component.mjs +2 -2
  23. package/esm2020/lib/features/cost-calculation/components/cost-calculation.component.mjs +16 -22
  24. package/esm2020/lib/features/cost-calculation/cost-calculation.models.mjs +1 -1
  25. package/esm2020/lib/features/cost-calculation/engine/currency.utils.mjs +2 -2
  26. package/esm2020/lib/features/cost-calculation/engine/item-resolver.mjs +2 -2
  27. package/esm2020/lib/features/cost-calculation/engine/models.mjs +2 -2
  28. package/esm2020/lib/features/cost-calculation/engine/stage-builder.mjs +4 -4
  29. package/esm2020/lib/features/cost-calculation/hit-cost-calculation.module.mjs +7 -3
  30. package/esm2020/lib/features/cost-groups/components/cost-group-form.component.mjs +3 -3
  31. package/esm2020/lib/features/cost-groups/components/cost-groups.component.mjs +3 -3
  32. package/esm2020/lib/features/cost-groups/cost-group-role-l10n-helper.mjs +2 -2
  33. package/esm2020/lib/features/cost-items/components/cost-item-form.component.mjs +8 -7
  34. package/esm2020/lib/features/cost-items/components/cost-items.component.mjs +2 -2
  35. package/esm2020/lib/features/cost-items/cost-item-l10n-helper.mjs +2 -2
  36. package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.mjs +2 -2
  37. package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.mjs +4 -4
  38. package/esm2020/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.mjs +2 -5
  39. package/esm2020/lib/features/cost-parameters/components/cost-parameter-form.component.mjs +20 -38
  40. package/esm2020/lib/features/cost-parameters/components/cost-parameters.component.mjs +18 -11
  41. package/esm2020/lib/features/cost-parameters/cost-parameter-l10n-helper.mjs +2 -2
  42. package/esm2020/lib/features/destination-ports/components/destination-port-form.component.mjs +86 -0
  43. package/esm2020/lib/features/destination-ports/components/destination-ports.component.mjs +74 -0
  44. package/esm2020/lib/features/destination-ports/hit-destination-ports-routing.module.mjs +29 -0
  45. package/esm2020/lib/features/destination-ports/hit-destination-ports.module.mjs +58 -0
  46. package/esm2020/lib/features/exchange-rates/components/central-bank-rates.component.mjs +1 -1
  47. package/esm2020/lib/features/exchange-rates/components/exchange-rates.component.mjs +2 -2
  48. package/esm2020/lib/features/exchange-rates/components/fixed-rates-form.component.mjs +3 -3
  49. package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.mjs +80 -0
  50. package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.mjs +65 -0
  51. package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.mjs +29 -0
  52. package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.mjs +58 -0
  53. package/esm2020/lib/features/freight-offers/components/freight-offer-copy.component.mjs +67 -0
  54. package/esm2020/lib/features/freight-offers/components/freight-offer-form.component.mjs +181 -0
  55. package/esm2020/lib/features/freight-offers/components/freight-offers.component.mjs +159 -0
  56. package/esm2020/lib/features/freight-offers/hit-freight-offers-routing.module.mjs +29 -0
  57. package/esm2020/lib/features/freight-offers/hit-freight-offers.module.mjs +62 -0
  58. package/esm2020/lib/features/incoterms/components/incoterm-form.component.mjs +81 -0
  59. package/esm2020/lib/features/incoterms/components/incoterms.component.mjs +65 -0
  60. package/esm2020/lib/features/incoterms/hit-incoterms-routing.module.mjs +29 -0
  61. package/esm2020/lib/features/incoterms/hit-incoterms.module.mjs +58 -0
  62. package/esm2020/lib/features/index.mjs +29 -1
  63. package/esm2020/lib/features/item-package-groups/components/item-package-group-form.component.mjs +78 -0
  64. package/esm2020/lib/features/item-package-groups/components/item-package-groups.component.mjs +69 -0
  65. package/esm2020/lib/features/item-package-groups/hit-item-package-groups-routing.module.mjs +29 -0
  66. package/esm2020/lib/features/item-package-groups/hit-item-package-groups.module.mjs +58 -0
  67. package/esm2020/lib/features/item-package-types/components/item-package-type-form.component.mjs +78 -0
  68. package/esm2020/lib/features/item-package-types/components/item-package-types.component.mjs +69 -0
  69. package/esm2020/lib/features/item-package-types/hit-item-package-types-routing.module.mjs +29 -0
  70. package/esm2020/lib/features/item-package-types/hit-item-package-types.module.mjs +58 -0
  71. package/esm2020/lib/features/item-product-types/components/item-product-type-form.component.mjs +78 -0
  72. package/esm2020/lib/features/item-product-types/components/item-product-types.component.mjs +69 -0
  73. package/esm2020/lib/features/item-product-types/hit-item-product-types-routing.module.mjs +29 -0
  74. package/esm2020/lib/features/item-product-types/hit-item-product-types.module.mjs +58 -0
  75. package/esm2020/lib/features/lines/components/line-form.component.mjs +78 -0
  76. package/esm2020/lib/features/lines/components/lines.component.mjs +66 -0
  77. package/esm2020/lib/features/lines/hit-lines-routing.module.mjs +29 -0
  78. package/esm2020/lib/features/lines/hit-lines.module.mjs +58 -0
  79. package/esm2020/lib/features/packaging-materials/components/packaging-material-form.component.mjs +2 -2
  80. package/esm2020/lib/features/packaging-materials/components/packaging-materials.component.mjs +2 -2
  81. package/esm2020/lib/features/packaging-prices/components/packaging-price-form.component.mjs +6 -11
  82. package/esm2020/lib/features/packaging-prices/components/packaging-prices.component.mjs +2 -2
  83. package/esm2020/lib/features/packaging-prices/packaging-price-calculator.mjs +2 -2
  84. package/esm2020/lib/features/packaging-prices/packaging-price-excel.service.mjs +2 -2
  85. package/esm2020/lib/features/packaging-prices/packaging-price-form.factory.mjs +1 -1
  86. package/esm2020/lib/features/packaging-prices/packaging-price-lines.builder.mjs +2 -2
  87. package/esm2020/lib/features/packaging-types/components/packaging-type-form.component.mjs +2 -2
  88. package/esm2020/lib/features/packaging-types/components/packaging-types.component.mjs +2 -2
  89. package/esm2020/lib/features/pallet-definitions/components/pallet-definition-form.component.mjs +2 -2
  90. package/esm2020/lib/features/pallet-definitions/components/pallet-definitions.component.mjs +2 -2
  91. package/esm2020/lib/features/pos/components/pos-form.component.mjs +77 -0
  92. package/esm2020/lib/features/pos/components/pos.component.mjs +65 -0
  93. package/esm2020/lib/features/pos/hit-pos-routing.module.mjs +29 -0
  94. package/esm2020/lib/features/pos/hit-pos.module.mjs +58 -0
  95. package/esm2020/lib/features/price-parameter-types/components/price-parameter-type-form.component.mjs +2 -2
  96. package/esm2020/lib/features/price-parameter-types/components/price-parameter-types.component.mjs +4 -4
  97. package/esm2020/lib/features/price-parameters/components/price-parameter-form-cost-items.component.mjs +32 -0
  98. package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.mjs +52 -0
  99. package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.mjs +84 -0
  100. package/esm2020/lib/features/price-parameters/components/price-parameter-form-items.component.mjs +43 -0
  101. package/esm2020/lib/features/price-parameters/components/price-parameter-form-price-lists.component.mjs +42 -0
  102. package/esm2020/lib/features/price-parameters/components/price-parameter-form.component.mjs +252 -0
  103. package/esm2020/lib/features/price-parameters/components/price-parameters.component.mjs +78 -0
  104. package/esm2020/lib/features/price-parameters/hit-price-parameters-routing.module.mjs +46 -0
  105. package/esm2020/lib/features/price-parameters/hit-price-parameters.module.mjs +93 -0
  106. package/esm2020/lib/features/price-parameters/price-parameter-cost-match.service.mjs +21 -0
  107. package/esm2020/lib/features/price-parameters/price-parameter-form-data.service.mjs +50 -0
  108. package/esm2020/lib/features/price-parameters/price-parameter-l10n-helper.mjs +7 -0
  109. package/esm2020/lib/features/price-parameters/price-parameter-lookups.service.mjs +32 -0
  110. package/esm2020/lib/features/sap-sales-persons/components/sap-sales-person-form.component.mjs +3 -3
  111. package/esm2020/lib/features/sap-sales-persons/components/sap-sales-persons.component.mjs +5 -3
  112. package/esm2020/lib/features/settings/components/cost-settings.component.mjs +2 -2
  113. package/esm2020/lib/kadooglu-keops-routing.module.mjs +25 -1
  114. package/esm2020/lib/shared/amount-currency-input/amount-currency-input.component.mjs +66 -0
  115. package/esm2020/lib/shared/cost-item-classification.utils.mjs +12 -0
  116. package/esm2020/lib/shared/cost-item-rows.builder.mjs +40 -0
  117. package/esm2020/lib/shared/pipes/resolve-code-name.pipe.mjs +16 -0
  118. package/esm2020/lib/shared/shared-ui.module.mjs +20 -0
  119. package/esm2020/lib/utils/currency.utils.mjs +4 -2
  120. package/esm2020/lib/utils/exchange-rate.utils.mjs +12 -0
  121. package/esm2020/proxy/bl-tracking/dtos/index.mjs +2 -0
  122. package/esm2020/proxy/bl-tracking/dtos/models.mjs +2 -0
  123. package/esm2020/{lib/proxy/cost-items → proxy/business-partners}/dtos/index.mjs +1 -1
  124. package/esm2020/proxy/business-partners/dtos/models.mjs +2 -0
  125. package/esm2020/proxy/carriers/dtos/index.mjs +2 -0
  126. package/esm2020/proxy/carriers/dtos/models.mjs +2 -0
  127. package/esm2020/{lib/proxy/exchange-rates → proxy/container-definitions}/dtos/index.mjs +1 -1
  128. package/esm2020/proxy/container-definitions/dtos/models.mjs +2 -0
  129. package/esm2020/proxy/container-loading-counts/dtos/index.mjs +2 -0
  130. package/esm2020/proxy/container-loading-counts/dtos/models.mjs +2 -0
  131. package/esm2020/proxy/container-loading-counts/loading-target-kind.enum.mjs +8 -0
  132. package/esm2020/proxy/container-loading-scenarios/dtos/index.mjs +2 -0
  133. package/esm2020/proxy/container-loading-scenarios/dtos/models.mjs +2 -0
  134. package/esm2020/proxy/container-loading-scenarios/pallet-status.enum.mjs +8 -0
  135. package/esm2020/proxy/container-mix-types/dtos/index.mjs +2 -0
  136. package/esm2020/proxy/container-mix-types/dtos/models.mjs +2 -0
  137. package/esm2020/proxy/container-pallet-capacities/dtos/index.mjs +2 -0
  138. package/esm2020/proxy/container-pallet-capacities/dtos/models.mjs +2 -0
  139. package/esm2020/proxy/controllers/bl-tracking.service.mjs +36 -0
  140. package/esm2020/proxy/controllers/business-partner.service.mjs +22 -0
  141. package/esm2020/proxy/controllers/carrier.service.mjs +36 -0
  142. package/esm2020/proxy/controllers/container-definition.service.mjs +40 -0
  143. package/esm2020/proxy/controllers/container-loading-count.service.mjs +31 -0
  144. package/esm2020/proxy/controllers/container-loading-scenario.service.mjs +27 -0
  145. package/esm2020/proxy/controllers/container-mix-type.service.mjs +40 -0
  146. package/esm2020/proxy/controllers/container-pallet-capacity.service.mjs +40 -0
  147. package/esm2020/proxy/controllers/cost-group.service.mjs +40 -0
  148. package/esm2020/proxy/controllers/cost-item.service.mjs +40 -0
  149. package/esm2020/proxy/controllers/cost-parameter-category.service.mjs +40 -0
  150. package/esm2020/proxy/controllers/cost-parameter.service.mjs +36 -0
  151. package/esm2020/proxy/controllers/cost-settings.service.mjs +27 -0
  152. package/esm2020/proxy/controllers/destination-port.service.mjs +44 -0
  153. package/esm2020/proxy/controllers/exchange-rate.service.mjs +27 -0
  154. package/esm2020/proxy/controllers/fob-inland-definition.service.mjs +36 -0
  155. package/esm2020/proxy/controllers/freight-offer.service.mjs +57 -0
  156. package/esm2020/proxy/controllers/incoterm.service.mjs +36 -0
  157. package/esm2020/proxy/controllers/index.mjs +33 -0
  158. package/esm2020/proxy/controllers/item-package-group.service.mjs +40 -0
  159. package/esm2020/proxy/controllers/item-package-type.service.mjs +40 -0
  160. package/esm2020/proxy/controllers/item-product-type.service.mjs +40 -0
  161. package/esm2020/proxy/controllers/item.service.mjs +23 -0
  162. package/esm2020/proxy/controllers/line.service.mjs +36 -0
  163. package/esm2020/proxy/controllers/packaging-material.service.mjs +40 -0
  164. package/esm2020/proxy/controllers/packaging-price.service.mjs +55 -0
  165. package/esm2020/proxy/controllers/packaging-type.service.mjs +40 -0
  166. package/esm2020/proxy/controllers/pallet-definition.service.mjs +40 -0
  167. package/esm2020/proxy/controllers/pos.service.mjs +36 -0
  168. package/esm2020/proxy/controllers/price-list.service.mjs +28 -0
  169. package/esm2020/proxy/controllers/price-parameter-type.service.mjs +40 -0
  170. package/esm2020/proxy/controllers/price-parameter.service.mjs +40 -0
  171. package/esm2020/proxy/controllers/sap-sales-person.service.mjs +27 -0
  172. package/esm2020/proxy/cost-groups/cost-group-role.enum.mjs +10 -0
  173. package/esm2020/proxy/cost-groups/dtos/index.mjs +2 -0
  174. package/esm2020/proxy/cost-groups/dtos/models.mjs +2 -0
  175. package/esm2020/proxy/cost-items/cost-item-calculation-type.enum.mjs +9 -0
  176. package/esm2020/{lib/proxy → proxy}/cost-items/cost-item-system-code.enum.mjs +1 -1
  177. package/esm2020/proxy/cost-items/dtos/index.mjs +2 -0
  178. package/esm2020/proxy/cost-items/dtos/models.mjs +2 -0
  179. package/esm2020/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +8 -0
  180. package/esm2020/{lib/proxy/pallet-definitions → proxy/cost-parameter-categories}/dtos/index.mjs +1 -1
  181. package/esm2020/proxy/cost-parameter-categories/dtos/models.mjs +2 -0
  182. package/esm2020/proxy/cost-parameters/cost-parameter-status.enum.mjs +9 -0
  183. package/esm2020/proxy/cost-parameters/dtos/index.mjs +2 -0
  184. package/esm2020/proxy/cost-parameters/dtos/models.mjs +2 -0
  185. package/esm2020/proxy/currencies/currency.enum.mjs +9 -0
  186. package/esm2020/proxy/currencies/index.mjs +2 -0
  187. package/esm2020/proxy/destination-ports/dtos/index.mjs +2 -0
  188. package/esm2020/proxy/destination-ports/dtos/models.mjs +2 -0
  189. package/esm2020/proxy/exchange-rates/dtos/index.mjs +2 -0
  190. package/esm2020/proxy/exchange-rates/dtos/models.mjs +2 -0
  191. package/esm2020/proxy/exchange-rates/exchange-rate-source.enum.mjs +8 -0
  192. package/esm2020/{lib/proxy/cost-parameters → proxy/fob-inland-definitions}/dtos/index.mjs +1 -1
  193. package/esm2020/proxy/fob-inland-definitions/dtos/models.mjs +2 -0
  194. package/esm2020/proxy/freight-offers/dtos/index.mjs +2 -0
  195. package/esm2020/proxy/freight-offers/dtos/models.mjs +2 -0
  196. package/esm2020/proxy/hitsoft-kadooglu-keops-proxy.mjs +5 -0
  197. package/esm2020/proxy/incoterms/dtos/index.mjs +2 -0
  198. package/esm2020/proxy/incoterms/dtos/models.mjs +2 -0
  199. package/esm2020/proxy/item-package-groups/dtos/index.mjs +2 -0
  200. package/esm2020/proxy/item-package-groups/dtos/models.mjs +2 -0
  201. package/esm2020/{lib/proxy/cost-groups → proxy/item-package-types}/dtos/index.mjs +1 -1
  202. package/esm2020/proxy/item-package-types/dtos/models.mjs +2 -0
  203. package/esm2020/proxy/item-product-types/dtos/index.mjs +2 -0
  204. package/esm2020/proxy/item-product-types/dtos/models.mjs +2 -0
  205. package/esm2020/proxy/items/dtos/index.mjs +2 -0
  206. package/esm2020/proxy/items/dtos/models.mjs +2 -0
  207. package/esm2020/proxy/lines/dtos/index.mjs +2 -0
  208. package/esm2020/proxy/lines/dtos/models.mjs +2 -0
  209. package/esm2020/proxy/packaging-materials/dtos/index.mjs +2 -0
  210. package/esm2020/proxy/packaging-materials/dtos/models.mjs +2 -0
  211. package/esm2020/proxy/packaging-prices/dtos/index.mjs +2 -0
  212. package/esm2020/proxy/packaging-prices/dtos/models.mjs +2 -0
  213. package/esm2020/proxy/packaging-types/dtos/index.mjs +2 -0
  214. package/esm2020/proxy/packaging-types/dtos/models.mjs +2 -0
  215. package/esm2020/proxy/pallet-definitions/dtos/index.mjs +2 -0
  216. package/esm2020/proxy/pallet-definitions/dtos/models.mjs +2 -0
  217. package/esm2020/proxy/pos/dtos/index.mjs +2 -0
  218. package/esm2020/proxy/pos/dtos/models.mjs +2 -0
  219. package/esm2020/proxy/price-lists/dtos/index.mjs +2 -0
  220. package/esm2020/proxy/price-lists/dtos/models.mjs +2 -0
  221. package/esm2020/proxy/price-parameter-types/dtos/index.mjs +2 -0
  222. package/esm2020/proxy/price-parameter-types/dtos/models.mjs +2 -0
  223. package/esm2020/proxy/price-parameters/dtos/index.mjs +2 -0
  224. package/esm2020/proxy/price-parameters/dtos/models.mjs +2 -0
  225. package/esm2020/proxy/price-parameters/price-parameter-status.enum.mjs +9 -0
  226. package/esm2020/proxy/public-api.mjs +45 -0
  227. package/esm2020/proxy/sales-persons/dtos/index.mjs +2 -0
  228. package/esm2020/proxy/sales-persons/dtos/models.mjs +2 -0
  229. package/esm2020/proxy/settings/index.mjs +2 -0
  230. package/esm2020/proxy/settings/models.mjs +2 -0
  231. package/esm2020/public-api.mjs +1 -2
  232. package/fesm2015/hitsoft-kadooglu-keops-config.mjs +131 -3
  233. package/fesm2015/hitsoft-kadooglu-keops-config.mjs.map +1 -1
  234. package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs +1185 -0
  235. package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs.map +1 -0
  236. package/fesm2015/hitsoft-kadooglu-keops.mjs +4082 -1728
  237. package/fesm2015/hitsoft-kadooglu-keops.mjs.map +1 -1
  238. package/fesm2020/hitsoft-kadooglu-keops-config.mjs +131 -3
  239. package/fesm2020/hitsoft-kadooglu-keops-config.mjs.map +1 -1
  240. package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs +1185 -0
  241. package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs.map +1 -0
  242. package/fesm2020/hitsoft-kadooglu-keops.mjs +4070 -1729
  243. package/fesm2020/hitsoft-kadooglu-keops.mjs.map +1 -1
  244. package/lib/features/bl-tracking/components/bl-tracking-form.component.d.ts +24 -0
  245. package/lib/features/bl-tracking/components/bl-tracking.component.d.ts +22 -0
  246. package/lib/features/bl-tracking/hit-bl-tracking-routing.module.d.ts +7 -0
  247. package/lib/features/bl-tracking/hit-bl-tracking.module.d.ts +18 -0
  248. package/lib/features/carriers/components/carrier-form.component.d.ts +24 -0
  249. package/lib/features/carriers/components/carriers.component.d.ts +22 -0
  250. package/lib/features/carriers/hit-carriers-routing.module.d.ts +7 -0
  251. package/lib/features/carriers/hit-carriers.module.d.ts +18 -0
  252. package/lib/features/container-definitions/components/container-definition-form.component.d.ts +1 -2
  253. package/lib/features/container-definitions/components/container-definitions.component.d.ts +1 -2
  254. package/lib/features/container-loading-counts/components/container-loading-counts.component.d.ts +2 -5
  255. package/lib/features/container-loading-scenarios/components/container-loading-scenarios.component.d.ts +1 -5
  256. package/lib/features/container-loading-scenarios/container-loading-scenario-l10n-helper.d.ts +1 -1
  257. package/lib/features/container-mix-types/components/container-mix-type-form.component.d.ts +1 -2
  258. package/lib/features/container-mix-types/components/container-mix-types.component.d.ts +1 -2
  259. package/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.d.ts +2 -5
  260. package/lib/features/container-pallet-capacities/components/container-pallet-capacity-form.component.d.ts +1 -4
  261. package/lib/features/cost-calculation/components/cost-calculation-inputs.component.d.ts +3 -5
  262. package/lib/features/cost-calculation/components/cost-calculation-results.component.d.ts +1 -1
  263. package/lib/features/cost-calculation/components/cost-calculation.component.d.ts +3 -6
  264. package/lib/features/cost-calculation/cost-calculation.models.d.ts +1 -3
  265. package/lib/features/cost-calculation/engine/currency.utils.d.ts +1 -1
  266. package/lib/features/cost-calculation/engine/models.d.ts +1 -3
  267. package/lib/features/cost-calculation/hit-cost-calculation.module.d.ts +2 -1
  268. package/lib/features/cost-groups/components/cost-group-form.component.d.ts +2 -4
  269. package/lib/features/cost-groups/components/cost-groups.component.d.ts +1 -5
  270. package/lib/features/cost-groups/cost-group-role-l10n-helper.d.ts +1 -1
  271. package/lib/features/cost-items/components/cost-item-form.component.d.ts +1 -3
  272. package/lib/features/cost-items/components/cost-items.component.d.ts +1 -2
  273. package/lib/features/cost-items/cost-item-l10n-helper.d.ts +1 -1
  274. package/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.d.ts +1 -2
  275. package/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.d.ts +1 -3
  276. package/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.d.ts +1 -1
  277. package/lib/features/cost-parameters/components/cost-parameter-form.component.d.ts +9 -9
  278. package/lib/features/cost-parameters/components/cost-parameters.component.d.ts +6 -6
  279. package/lib/features/cost-parameters/cost-parameter-l10n-helper.d.ts +1 -1
  280. package/lib/features/destination-ports/components/destination-port-form.component.d.ts +25 -0
  281. package/lib/features/destination-ports/components/destination-ports.component.d.ts +24 -0
  282. package/lib/features/destination-ports/hit-destination-ports-routing.module.d.ts +7 -0
  283. package/lib/features/destination-ports/hit-destination-ports.module.d.ts +18 -0
  284. package/lib/features/exchange-rates/components/central-bank-rates.component.d.ts +1 -1
  285. package/lib/features/exchange-rates/components/exchange-rates.component.d.ts +1 -2
  286. package/lib/features/exchange-rates/components/fixed-rates-form.component.d.ts +1 -3
  287. package/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.d.ts +24 -0
  288. package/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.d.ts +22 -0
  289. package/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.d.ts +7 -0
  290. package/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.d.ts +18 -0
  291. package/lib/features/freight-offers/components/freight-offer-copy.component.d.ts +22 -0
  292. package/lib/features/freight-offers/components/freight-offer-form.component.d.ts +49 -0
  293. package/lib/features/freight-offers/components/freight-offers.component.d.ts +47 -0
  294. package/lib/features/freight-offers/hit-freight-offers-routing.module.d.ts +7 -0
  295. package/lib/features/freight-offers/hit-freight-offers.module.d.ts +19 -0
  296. package/lib/features/incoterms/components/incoterm-form.component.d.ts +24 -0
  297. package/lib/features/incoterms/components/incoterms.component.d.ts +22 -0
  298. package/lib/features/incoterms/hit-incoterms-routing.module.d.ts +7 -0
  299. package/lib/features/incoterms/hit-incoterms.module.d.ts +18 -0
  300. package/lib/features/index.d.ts +21 -0
  301. package/lib/features/item-package-groups/components/item-package-group-form.component.d.ts +24 -0
  302. package/lib/features/item-package-groups/components/item-package-groups.component.d.ts +22 -0
  303. package/lib/features/item-package-groups/hit-item-package-groups-routing.module.d.ts +7 -0
  304. package/lib/features/item-package-groups/hit-item-package-groups.module.d.ts +18 -0
  305. package/lib/features/item-package-types/components/item-package-type-form.component.d.ts +24 -0
  306. package/lib/features/item-package-types/components/item-package-types.component.d.ts +22 -0
  307. package/lib/features/item-package-types/hit-item-package-types-routing.module.d.ts +7 -0
  308. package/lib/features/item-package-types/hit-item-package-types.module.d.ts +18 -0
  309. package/lib/features/item-product-types/components/item-product-type-form.component.d.ts +24 -0
  310. package/lib/features/item-product-types/components/item-product-types.component.d.ts +22 -0
  311. package/lib/features/item-product-types/hit-item-product-types-routing.module.d.ts +7 -0
  312. package/lib/features/item-product-types/hit-item-product-types.module.d.ts +18 -0
  313. package/lib/features/lines/components/line-form.component.d.ts +24 -0
  314. package/lib/features/lines/components/lines.component.d.ts +22 -0
  315. package/lib/features/lines/hit-lines-routing.module.d.ts +7 -0
  316. package/lib/features/lines/hit-lines.module.d.ts +18 -0
  317. package/lib/features/packaging-materials/components/packaging-material-form.component.d.ts +1 -3
  318. package/lib/features/packaging-materials/components/packaging-materials.component.d.ts +1 -2
  319. package/lib/features/packaging-prices/components/packaging-price-form.component.d.ts +1 -3
  320. package/lib/features/packaging-prices/components/packaging-prices.component.d.ts +1 -3
  321. package/lib/features/packaging-prices/packaging-price-calculator.d.ts +1 -1
  322. package/lib/features/packaging-prices/packaging-price-excel.service.d.ts +1 -2
  323. package/lib/features/packaging-prices/packaging-price-form.factory.d.ts +1 -1
  324. package/lib/features/packaging-prices/packaging-price-lines.builder.d.ts +1 -1
  325. package/lib/features/packaging-types/components/packaging-type-form.component.d.ts +1 -2
  326. package/lib/features/packaging-types/components/packaging-types.component.d.ts +1 -2
  327. package/lib/features/pallet-definitions/components/pallet-definition-form.component.d.ts +1 -2
  328. package/lib/features/pallet-definitions/components/pallet-definitions.component.d.ts +1 -2
  329. package/lib/features/pos/components/pos-form.component.d.ts +24 -0
  330. package/lib/features/pos/components/pos.component.d.ts +22 -0
  331. package/lib/features/pos/hit-pos-routing.module.d.ts +7 -0
  332. package/lib/features/pos/hit-pos.module.d.ts +18 -0
  333. package/lib/features/price-parameter-types/components/price-parameter-type-form.component.d.ts +1 -2
  334. package/lib/features/price-parameter-types/components/price-parameter-types.component.d.ts +1 -2
  335. package/lib/features/price-parameters/components/price-parameter-form-cost-items.component.d.ts +15 -0
  336. package/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.d.ts +24 -0
  337. package/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.d.ts +22 -0
  338. package/lib/features/price-parameters/components/price-parameter-form-items.component.d.ts +15 -0
  339. package/lib/features/price-parameters/components/price-parameter-form-price-lists.component.d.ts +15 -0
  340. package/lib/features/price-parameters/components/price-parameter-form.component.d.ts +70 -0
  341. package/lib/features/price-parameters/components/price-parameters.component.d.ts +27 -0
  342. package/lib/features/price-parameters/hit-price-parameters-routing.module.d.ts +7 -0
  343. package/lib/features/price-parameters/hit-price-parameters.module.d.ts +24 -0
  344. package/lib/features/price-parameters/price-parameter-cost-match.service.d.ts +10 -0
  345. package/lib/features/price-parameters/price-parameter-form-data.service.d.ts +26 -0
  346. package/lib/features/price-parameters/price-parameter-l10n-helper.d.ts +2 -0
  347. package/lib/features/price-parameters/price-parameter-lookups.service.d.ts +16 -0
  348. package/lib/features/sap-sales-persons/components/sap-sales-person-form.component.d.ts +1 -2
  349. package/lib/features/sap-sales-persons/components/sap-sales-persons.component.d.ts +1 -2
  350. package/lib/features/settings/components/cost-settings.component.d.ts +1 -1
  351. package/lib/shared/amount-currency-input/amount-currency-input.component.d.ts +23 -0
  352. package/lib/shared/cost-item-classification.utils.d.ts +7 -0
  353. package/lib/shared/cost-item-rows.builder.d.ts +11 -0
  354. package/lib/shared/pipes/resolve-code-name.pipe.d.ts +11 -0
  355. package/lib/shared/shared-ui.module.d.ts +10 -0
  356. package/lib/utils/currency.utils.d.ts +2 -1
  357. package/lib/utils/exchange-rate.utils.d.ts +2 -0
  358. package/package.json +9 -1
  359. package/proxy/bl-tracking/dtos/models.d.ts +25 -0
  360. package/proxy/business-partners/dtos/models.d.ts +4 -0
  361. package/proxy/carriers/dtos/models.d.ts +10 -0
  362. package/{lib/proxy → proxy}/container-loading-counts/dtos/models.d.ts +1 -1
  363. package/proxy/controllers/bl-tracking.service.d.ts +14 -0
  364. package/proxy/controllers/business-partner.service.d.ts +11 -0
  365. package/proxy/controllers/carrier.service.d.ts +14 -0
  366. package/{lib/proxy → proxy}/controllers/container-loading-count.service.d.ts +2 -2
  367. package/{lib/proxy → proxy}/controllers/cost-parameter.service.d.ts +1 -2
  368. package/proxy/controllers/destination-port.service.d.ts +17 -0
  369. package/proxy/controllers/fob-inland-definition.service.d.ts +14 -0
  370. package/proxy/controllers/freight-offer.service.d.ts +19 -0
  371. package/proxy/controllers/incoterm.service.d.ts +14 -0
  372. package/{lib/proxy → proxy}/controllers/index.d.ts +14 -0
  373. package/proxy/controllers/item-package-group.service.d.ts +15 -0
  374. package/proxy/controllers/item-package-type.service.d.ts +15 -0
  375. package/proxy/controllers/item-product-type.service.d.ts +15 -0
  376. package/proxy/controllers/line.service.d.ts +14 -0
  377. package/proxy/controllers/pos.service.d.ts +14 -0
  378. package/proxy/controllers/price-list.service.d.ts +12 -0
  379. package/proxy/controllers/price-parameter.service.d.ts +15 -0
  380. package/{lib/proxy → proxy}/cost-parameter-categories/cost-parameter-category-parent-code.enum.d.ts +1 -4
  381. package/{lib/proxy → proxy}/cost-parameters/dtos/models.d.ts +0 -8
  382. package/proxy/destination-ports/dtos/models.d.ts +19 -0
  383. package/proxy/fob-inland-definitions/dtos/models.d.ts +19 -0
  384. package/proxy/freight-offers/dtos/models.d.ts +66 -0
  385. package/proxy/incoterms/dtos/models.d.ts +22 -0
  386. package/proxy/index.d.ts +5 -0
  387. package/proxy/item-package-groups/dtos/models.d.ts +13 -0
  388. package/proxy/item-package-types/dtos/index.d.ts +1 -0
  389. package/proxy/item-package-types/dtos/models.d.ts +13 -0
  390. package/proxy/item-product-types/dtos/index.d.ts +1 -0
  391. package/proxy/item-product-types/dtos/models.d.ts +13 -0
  392. package/proxy/items/dtos/index.d.ts +1 -0
  393. package/proxy/lines/dtos/index.d.ts +1 -0
  394. package/proxy/lines/dtos/models.d.ts +10 -0
  395. package/proxy/packaging-materials/dtos/index.d.ts +1 -0
  396. package/proxy/packaging-prices/dtos/index.d.ts +1 -0
  397. package/proxy/packaging-types/dtos/index.d.ts +1 -0
  398. package/proxy/pallet-definitions/dtos/index.d.ts +1 -0
  399. package/proxy/pos/dtos/index.d.ts +1 -0
  400. package/proxy/pos/dtos/models.d.ts +10 -0
  401. package/proxy/price-lists/dtos/index.d.ts +1 -0
  402. package/proxy/price-lists/dtos/models.d.ts +10 -0
  403. package/proxy/price-parameter-types/dtos/index.d.ts +1 -0
  404. package/proxy/price-parameters/dtos/index.d.ts +1 -0
  405. package/proxy/price-parameters/dtos/models.d.ts +78 -0
  406. package/proxy/price-parameters/price-parameter-status.enum.d.ts +6 -0
  407. package/proxy/public-api.d.ts +43 -0
  408. package/proxy/sales-persons/dtos/index.d.ts +1 -0
  409. package/proxy/settings/index.d.ts +1 -0
  410. package/public-api.d.ts +0 -1
  411. package/esm2020/lib/proxy/container-definitions/dtos/index.mjs +0 -2
  412. package/esm2020/lib/proxy/container-definitions/dtos/models.mjs +0 -2
  413. package/esm2020/lib/proxy/container-definitions/index.mjs +0 -3
  414. package/esm2020/lib/proxy/container-loading-counts/dtos/index.mjs +0 -2
  415. package/esm2020/lib/proxy/container-loading-counts/dtos/models.mjs +0 -2
  416. package/esm2020/lib/proxy/container-loading-counts/index.mjs +0 -4
  417. package/esm2020/lib/proxy/container-loading-counts/loading-target-kind.enum.mjs +0 -8
  418. package/esm2020/lib/proxy/container-loading-scenarios/dtos/index.mjs +0 -2
  419. package/esm2020/lib/proxy/container-loading-scenarios/dtos/models.mjs +0 -2
  420. package/esm2020/lib/proxy/container-loading-scenarios/index.mjs +0 -4
  421. package/esm2020/lib/proxy/container-loading-scenarios/pallet-status.enum.mjs +0 -8
  422. package/esm2020/lib/proxy/container-mix-types/dtos/index.mjs +0 -2
  423. package/esm2020/lib/proxy/container-mix-types/dtos/models.mjs +0 -2
  424. package/esm2020/lib/proxy/container-mix-types/index.mjs +0 -3
  425. package/esm2020/lib/proxy/container-pallet-capacities/dtos/index.mjs +0 -2
  426. package/esm2020/lib/proxy/container-pallet-capacities/dtos/models.mjs +0 -2
  427. package/esm2020/lib/proxy/container-pallet-capacities/index.mjs +0 -3
  428. package/esm2020/lib/proxy/controllers/container-definition.service.mjs +0 -40
  429. package/esm2020/lib/proxy/controllers/container-loading-count.service.mjs +0 -31
  430. package/esm2020/lib/proxy/controllers/container-loading-scenario.service.mjs +0 -27
  431. package/esm2020/lib/proxy/controllers/container-mix-type.service.mjs +0 -40
  432. package/esm2020/lib/proxy/controllers/container-pallet-capacity.service.mjs +0 -40
  433. package/esm2020/lib/proxy/controllers/cost-group.service.mjs +0 -40
  434. package/esm2020/lib/proxy/controllers/cost-item.service.mjs +0 -40
  435. package/esm2020/lib/proxy/controllers/cost-parameter-category.service.mjs +0 -40
  436. package/esm2020/lib/proxy/controllers/cost-parameter.service.mjs +0 -40
  437. package/esm2020/lib/proxy/controllers/cost-settings.service.mjs +0 -27
  438. package/esm2020/lib/proxy/controllers/exchange-rate.service.mjs +0 -27
  439. package/esm2020/lib/proxy/controllers/index.mjs +0 -19
  440. package/esm2020/lib/proxy/controllers/item.service.mjs +0 -23
  441. package/esm2020/lib/proxy/controllers/packaging-material.service.mjs +0 -40
  442. package/esm2020/lib/proxy/controllers/packaging-price.service.mjs +0 -55
  443. package/esm2020/lib/proxy/controllers/packaging-type.service.mjs +0 -40
  444. package/esm2020/lib/proxy/controllers/pallet-definition.service.mjs +0 -40
  445. package/esm2020/lib/proxy/controllers/price-parameter-type.service.mjs +0 -40
  446. package/esm2020/lib/proxy/controllers/sap-sales-person.service.mjs +0 -27
  447. package/esm2020/lib/proxy/cost-groups/cost-group-role.enum.mjs +0 -10
  448. package/esm2020/lib/proxy/cost-groups/dtos/models.mjs +0 -2
  449. package/esm2020/lib/proxy/cost-groups/index.mjs +0 -4
  450. package/esm2020/lib/proxy/cost-items/cost-item-calculation-type.enum.mjs +0 -9
  451. package/esm2020/lib/proxy/cost-items/dtos/models.mjs +0 -2
  452. package/esm2020/lib/proxy/cost-items/index.mjs +0 -5
  453. package/esm2020/lib/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +0 -11
  454. package/esm2020/lib/proxy/cost-parameter-categories/dtos/index.mjs +0 -2
  455. package/esm2020/lib/proxy/cost-parameter-categories/dtos/models.mjs +0 -2
  456. package/esm2020/lib/proxy/cost-parameter-categories/index.mjs +0 -4
  457. package/esm2020/lib/proxy/cost-parameters/cost-parameter-status.enum.mjs +0 -9
  458. package/esm2020/lib/proxy/cost-parameters/dtos/models.mjs +0 -2
  459. package/esm2020/lib/proxy/cost-parameters/index.mjs +0 -4
  460. package/esm2020/lib/proxy/currencies/currency.enum.mjs +0 -9
  461. package/esm2020/lib/proxy/currencies/index.mjs +0 -2
  462. package/esm2020/lib/proxy/exchange-rates/dtos/models.mjs +0 -2
  463. package/esm2020/lib/proxy/exchange-rates/exchange-rate-source.enum.mjs +0 -8
  464. package/esm2020/lib/proxy/exchange-rates/index.mjs +0 -4
  465. package/esm2020/lib/proxy/index.mjs +0 -22
  466. package/esm2020/lib/proxy/items/dtos/index.mjs +0 -2
  467. package/esm2020/lib/proxy/items/dtos/models.mjs +0 -2
  468. package/esm2020/lib/proxy/items/index.mjs +0 -3
  469. package/esm2020/lib/proxy/packaging-materials/dtos/index.mjs +0 -2
  470. package/esm2020/lib/proxy/packaging-materials/dtos/models.mjs +0 -2
  471. package/esm2020/lib/proxy/packaging-materials/index.mjs +0 -3
  472. package/esm2020/lib/proxy/packaging-prices/dtos/index.mjs +0 -2
  473. package/esm2020/lib/proxy/packaging-prices/dtos/models.mjs +0 -2
  474. package/esm2020/lib/proxy/packaging-prices/index.mjs +0 -3
  475. package/esm2020/lib/proxy/packaging-types/dtos/index.mjs +0 -2
  476. package/esm2020/lib/proxy/packaging-types/dtos/models.mjs +0 -2
  477. package/esm2020/lib/proxy/packaging-types/index.mjs +0 -3
  478. package/esm2020/lib/proxy/pallet-definitions/dtos/models.mjs +0 -2
  479. package/esm2020/lib/proxy/pallet-definitions/index.mjs +0 -3
  480. package/esm2020/lib/proxy/price-parameter-types/dtos/index.mjs +0 -2
  481. package/esm2020/lib/proxy/price-parameter-types/dtos/models.mjs +0 -2
  482. package/esm2020/lib/proxy/price-parameter-types/index.mjs +0 -3
  483. package/esm2020/lib/proxy/sales-persons/dtos/index.mjs +0 -2
  484. package/esm2020/lib/proxy/sales-persons/dtos/models.mjs +0 -2
  485. package/esm2020/lib/proxy/sales-persons/index.mjs +0 -3
  486. package/esm2020/lib/proxy/settings/index.mjs +0 -2
  487. package/esm2020/lib/proxy/settings/models.mjs +0 -2
  488. package/lib/proxy/container-definitions/index.d.ts +0 -2
  489. package/lib/proxy/container-loading-counts/index.d.ts +0 -3
  490. package/lib/proxy/container-loading-scenarios/index.d.ts +0 -3
  491. package/lib/proxy/container-mix-types/index.d.ts +0 -2
  492. package/lib/proxy/container-pallet-capacities/index.d.ts +0 -2
  493. package/lib/proxy/cost-groups/index.d.ts +0 -3
  494. package/lib/proxy/cost-items/index.d.ts +0 -4
  495. package/lib/proxy/cost-parameter-categories/index.d.ts +0 -3
  496. package/lib/proxy/cost-parameters/index.d.ts +0 -3
  497. package/lib/proxy/exchange-rates/index.d.ts +0 -3
  498. package/lib/proxy/index.d.ts +0 -21
  499. package/lib/proxy/items/index.d.ts +0 -2
  500. package/lib/proxy/packaging-materials/index.d.ts +0 -2
  501. package/lib/proxy/packaging-prices/index.d.ts +0 -2
  502. package/lib/proxy/packaging-types/index.d.ts +0 -2
  503. package/lib/proxy/pallet-definitions/index.d.ts +0 -2
  504. package/lib/proxy/price-parameter-types/index.d.ts +0 -2
  505. package/lib/proxy/sales-persons/index.d.ts +0 -2
  506. /package/{lib/proxy/container-definitions → proxy/bl-tracking}/dtos/index.d.ts +0 -0
  507. /package/{lib/proxy/container-loading-counts → proxy/business-partners}/dtos/index.d.ts +0 -0
  508. /package/{lib/proxy/container-loading-scenarios → proxy/carriers}/dtos/index.d.ts +0 -0
  509. /package/{lib/proxy/container-mix-types → proxy/container-definitions}/dtos/index.d.ts +0 -0
  510. /package/{lib/proxy → proxy}/container-definitions/dtos/models.d.ts +0 -0
  511. /package/{lib/proxy/container-pallet-capacities → proxy/container-loading-counts}/dtos/index.d.ts +0 -0
  512. /package/{lib/proxy → proxy}/container-loading-counts/loading-target-kind.enum.d.ts +0 -0
  513. /package/{lib/proxy/cost-groups → proxy/container-loading-scenarios}/dtos/index.d.ts +0 -0
  514. /package/{lib/proxy → proxy}/container-loading-scenarios/dtos/models.d.ts +0 -0
  515. /package/{lib/proxy → proxy}/container-loading-scenarios/pallet-status.enum.d.ts +0 -0
  516. /package/{lib/proxy/cost-items → proxy/container-mix-types}/dtos/index.d.ts +0 -0
  517. /package/{lib/proxy → proxy}/container-mix-types/dtos/models.d.ts +0 -0
  518. /package/{lib/proxy/cost-parameter-categories → proxy/container-pallet-capacities}/dtos/index.d.ts +0 -0
  519. /package/{lib/proxy → proxy}/container-pallet-capacities/dtos/models.d.ts +0 -0
  520. /package/{lib/proxy → proxy}/controllers/container-definition.service.d.ts +0 -0
  521. /package/{lib/proxy → proxy}/controllers/container-loading-scenario.service.d.ts +0 -0
  522. /package/{lib/proxy → proxy}/controllers/container-mix-type.service.d.ts +0 -0
  523. /package/{lib/proxy → proxy}/controllers/container-pallet-capacity.service.d.ts +0 -0
  524. /package/{lib/proxy → proxy}/controllers/cost-group.service.d.ts +0 -0
  525. /package/{lib/proxy → proxy}/controllers/cost-item.service.d.ts +0 -0
  526. /package/{lib/proxy → proxy}/controllers/cost-parameter-category.service.d.ts +0 -0
  527. /package/{lib/proxy → proxy}/controllers/cost-settings.service.d.ts +0 -0
  528. /package/{lib/proxy → proxy}/controllers/exchange-rate.service.d.ts +0 -0
  529. /package/{lib/proxy → proxy}/controllers/item.service.d.ts +0 -0
  530. /package/{lib/proxy → proxy}/controllers/packaging-material.service.d.ts +0 -0
  531. /package/{lib/proxy → proxy}/controllers/packaging-price.service.d.ts +0 -0
  532. /package/{lib/proxy → proxy}/controllers/packaging-type.service.d.ts +0 -0
  533. /package/{lib/proxy → proxy}/controllers/pallet-definition.service.d.ts +0 -0
  534. /package/{lib/proxy → proxy}/controllers/price-parameter-type.service.d.ts +0 -0
  535. /package/{lib/proxy → proxy}/controllers/sap-sales-person.service.d.ts +0 -0
  536. /package/{lib/proxy → proxy}/cost-groups/cost-group-role.enum.d.ts +0 -0
  537. /package/{lib/proxy/cost-parameters → proxy/cost-groups}/dtos/index.d.ts +0 -0
  538. /package/{lib/proxy → proxy}/cost-groups/dtos/models.d.ts +0 -0
  539. /package/{lib/proxy → proxy}/cost-items/cost-item-calculation-type.enum.d.ts +0 -0
  540. /package/{lib/proxy → proxy}/cost-items/cost-item-system-code.enum.d.ts +0 -0
  541. /package/{lib/proxy/exchange-rates → proxy/cost-items}/dtos/index.d.ts +0 -0
  542. /package/{lib/proxy → proxy}/cost-items/dtos/models.d.ts +0 -0
  543. /package/{lib/proxy/items → proxy/cost-parameter-categories}/dtos/index.d.ts +0 -0
  544. /package/{lib/proxy → proxy}/cost-parameter-categories/dtos/models.d.ts +0 -0
  545. /package/{lib/proxy → proxy}/cost-parameters/cost-parameter-status.enum.d.ts +0 -0
  546. /package/{lib/proxy/packaging-materials → proxy/cost-parameters}/dtos/index.d.ts +0 -0
  547. /package/{lib/proxy → proxy}/currencies/currency.enum.d.ts +0 -0
  548. /package/{lib/proxy → proxy}/currencies/index.d.ts +0 -0
  549. /package/{lib/proxy/packaging-prices → proxy/destination-ports}/dtos/index.d.ts +0 -0
  550. /package/{lib/proxy/packaging-types → proxy/exchange-rates}/dtos/index.d.ts +0 -0
  551. /package/{lib/proxy → proxy}/exchange-rates/dtos/models.d.ts +0 -0
  552. /package/{lib/proxy → proxy}/exchange-rates/exchange-rate-source.enum.d.ts +0 -0
  553. /package/{lib/proxy/pallet-definitions → proxy/fob-inland-definitions}/dtos/index.d.ts +0 -0
  554. /package/{lib/proxy/price-parameter-types → proxy/freight-offers}/dtos/index.d.ts +0 -0
  555. /package/{lib/proxy/sales-persons → proxy/incoterms}/dtos/index.d.ts +0 -0
  556. /package/{lib/proxy/settings → proxy/item-package-groups/dtos}/index.d.ts +0 -0
  557. /package/{lib/proxy → proxy}/items/dtos/models.d.ts +0 -0
  558. /package/{lib/proxy → proxy}/packaging-materials/dtos/models.d.ts +0 -0
  559. /package/{lib/proxy → proxy}/packaging-prices/dtos/models.d.ts +0 -0
  560. /package/{lib/proxy → proxy}/packaging-types/dtos/models.d.ts +0 -0
  561. /package/{lib/proxy → proxy}/pallet-definitions/dtos/models.d.ts +0 -0
  562. /package/{lib/proxy → proxy}/price-parameter-types/dtos/models.d.ts +0 -0
  563. /package/{lib/proxy → proxy}/sales-persons/dtos/models.d.ts +0 -0
  564. /package/{lib/proxy → proxy}/settings/models.d.ts +0 -0
  565. /package/{src/lib/proxy → proxy/src}/README.md +0 -0
@@ -0,0 +1,42 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@hitsoft/kadooglu-keops/proxy";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@abp/ng.core";
6
+ export class PriceParameterPriceListsTabComponent {
7
+ constructor(priceListService) {
8
+ this.priceListService = priceListService;
9
+ this.cpRegionCode = null;
10
+ this.ppTypeCode = null;
11
+ this.priceLists = [];
12
+ this.loading = false;
13
+ }
14
+ ngOnChanges() {
15
+ this.load();
16
+ }
17
+ load() {
18
+ if (!this.cpRegionCode || !this.ppTypeCode) {
19
+ this.priceLists = [];
20
+ return;
21
+ }
22
+ this.loading = true;
23
+ this.priceListService.getList(this.cpRegionCode, this.ppTypeCode).subscribe({
24
+ next: list => {
25
+ this.priceLists = list ?? [];
26
+ this.loading = false;
27
+ },
28
+ error: () => (this.loading = false),
29
+ });
30
+ }
31
+ }
32
+ PriceParameterPriceListsTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterPriceListsTabComponent, deps: [{ token: i1.PriceListService }], target: i0.ɵɵFactoryTarget.Component });
33
+ PriceParameterPriceListsTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PriceParameterPriceListsTabComponent, selector: "lib-price-parameter-price-lists-tab", inputs: { cpRegionCode: "cpRegionCode", ppTypeCode: "ppTypeCode" }, usesOnChanges: true, ngImport: i0, template: "<table class=\"table table-sm align-middle mt-3\">\r\n <thead>\r\n <tr>\r\n <th style=\"width: 140px\">{{ 'Keops::PriceParameters:PriceListNo' | abpLocalization }}</th>\r\n <th>{{ 'Keops::PriceParameters:PriceListName' | abpLocalization }}</th>\r\n <th style=\"width: 120px\">\r\n {{ 'Keops::PriceParameters:PriceListFactor' | abpLocalization }}\r\n </th>\r\n <th>{{ 'Keops::PriceParameters:PriceListBase' | abpLocalization }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceList of priceLists\">\r\n <td>\r\n <span class=\"badge bg-light text-dark border\">{{ priceList.priceListNo }}</span>\r\n </td>\r\n <td>{{ priceList.priceListName }}</td>\r\n <td>{{ priceList.factor }}</td>\r\n <td>{{ priceList.basePriceListName || '\u2014' }}</td>\r\n </tr>\r\n <tr *ngIf=\"!loading && priceLists.length === 0\">\r\n <td colspan=\"4\" class=\"text-center text-muted py-3\">\r\n {{ 'Keops::PriceParameters:NoData' | abpLocalization }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterPriceListsTabComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'lib-price-parameter-price-lists-tab', template: "<table class=\"table table-sm align-middle mt-3\">\r\n <thead>\r\n <tr>\r\n <th style=\"width: 140px\">{{ 'Keops::PriceParameters:PriceListNo' | abpLocalization }}</th>\r\n <th>{{ 'Keops::PriceParameters:PriceListName' | abpLocalization }}</th>\r\n <th style=\"width: 120px\">\r\n {{ 'Keops::PriceParameters:PriceListFactor' | abpLocalization }}\r\n </th>\r\n <th>{{ 'Keops::PriceParameters:PriceListBase' | abpLocalization }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceList of priceLists\">\r\n <td>\r\n <span class=\"badge bg-light text-dark border\">{{ priceList.priceListNo }}</span>\r\n </td>\r\n <td>{{ priceList.priceListName }}</td>\r\n <td>{{ priceList.factor }}</td>\r\n <td>{{ priceList.basePriceListName || '\u2014' }}</td>\r\n </tr>\r\n <tr *ngIf=\"!loading && priceLists.length === 0\">\r\n <td colspan=\"4\" class=\"text-center text-muted py-3\">\r\n {{ 'Keops::PriceParameters:NoData' | abpLocalization }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n" }]
37
+ }], ctorParameters: function () { return [{ type: i1.PriceListService }]; }, propDecorators: { cpRegionCode: [{
38
+ type: Input
39
+ }], ppTypeCode: [{
40
+ type: Input
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcGFyYW1ldGVyLWZvcm0tcHJpY2UtbGlzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0tcHJpY2UtbGlzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0tcHJpY2UtbGlzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7Ozs7O0FBTzVELE1BQU0sT0FBTyxvQ0FBb0M7SUFPL0MsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFOdEQsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBbUIsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFFa0QsQ0FBQztJQUVuRSxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDMUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lJQTNCVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQyxvS0NQakQsMGtDQTJCQTsyRkRwQmEsb0NBQW9DO2tCQUpoRCxTQUFTOytCQUNFLHFDQUFxQzt1R0FJdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByaWNlTGlzdER0bywgUHJpY2VMaXN0U2VydmljZSB9IGZyb20gJ0BoaXRzb2Z0L2thZG9vZ2x1LWtlb3BzL3Byb3h5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByaWNlLXBhcmFtZXRlci1wcmljZS1saXN0cy10YWInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljZS1wYXJhbWV0ZXItZm9ybS1wcmljZS1saXN0cy5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmljZVBhcmFtZXRlclByaWNlTGlzdHNUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGNwUmVnaW9uQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHBUeXBlQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaWNlTGlzdHM6IFByaWNlTGlzdER0b1tdID0gW107XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByaWNlTGlzdFNlcnZpY2U6IFByaWNlTGlzdFNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY3BSZWdpb25Db2RlIHx8ICF0aGlzLnBwVHlwZUNvZGUpIHtcclxuICAgICAgdGhpcy5wcmljZUxpc3RzID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmljZUxpc3RTZXJ2aWNlLmdldExpc3QodGhpcy5jcFJlZ2lvbkNvZGUsIHRoaXMucHBUeXBlQ29kZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogbGlzdCA9PiB7XHJcbiAgICAgICAgdGhpcy5wcmljZUxpc3RzID0gbGlzdCA/PyBbXTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSksXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc20gYWxpZ24tbWlkZGxlIG10LTNcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8dHI+XHJcbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxNDBweFwiPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByaWNlTGlzdE5vJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGg+XHJcbiAgICAgIDx0aD57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpQcmljZUxpc3ROYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGg+XHJcbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxMjBweFwiPlxyXG4gICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByaWNlTGlzdEZhY3RvcicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByaWNlTGlzdEJhc2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHk+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHByaWNlTGlzdCBvZiBwcmljZUxpc3RzXCI+XHJcbiAgICAgIDx0ZD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtZGFyayBib3JkZXJcIj57eyBwcmljZUxpc3QucHJpY2VMaXN0Tm8gfX08L3NwYW4+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0ZD57eyBwcmljZUxpc3QucHJpY2VMaXN0TmFtZSB9fTwvdGQ+XHJcbiAgICAgIDx0ZD57eyBwcmljZUxpc3QuZmFjdG9yIH19PC90ZD5cclxuICAgICAgPHRkPnt7IHByaWNlTGlzdC5iYXNlUHJpY2VMaXN0TmFtZSB8fCAn4oCUJyB9fTwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gICAgPHRyICpuZ0lmPVwiIWxvYWRpbmcgJiYgcHJpY2VMaXN0cy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTNcIj5cclxuICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpOb0RhdGEnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbjwvdGFibGU+XHJcbiJdfQ==
@@ -0,0 +1,252 @@
1
+ import { Component } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { finalize } from 'rxjs/operators';
4
+ import { Currency, PriceParameterStatus, } from '@hitsoft/kadooglu-keops/proxy';
5
+ import { statusLabels } from '../price-parameter-l10n-helper';
6
+ import { CURRENCY_OPTIONS, CURRENCY_OPTIONS_FX_ONLY } from '../../../utils/currency.utils';
7
+ import { isRateCostItem, isCustomCostItem } from '../../../shared/cost-item-classification.utils';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/router";
11
+ import * as i3 from "@abp/ng.theme.shared";
12
+ import * as i4 from "@hitsoft/kadooglu-keops/proxy";
13
+ import * as i5 from "../price-parameter-form-data.service";
14
+ import * as i6 from "../price-parameter-cost-match.service";
15
+ import * as i7 from "../../../shared/cost-item-rows.builder";
16
+ import * as i8 from "@angular/common";
17
+ import * as i9 from "@abp/ng.core";
18
+ import * as i10 from "@abp/ng.components/page";
19
+ import * as i11 from "@ng-bootstrap/ng-bootstrap";
20
+ import * as i12 from "devextreme-angular";
21
+ import * as i13 from "../../../shared/amount-currency-input/amount-currency-input.component";
22
+ import * as i14 from "./price-parameter-form-cost-items.component";
23
+ import * as i15 from "./price-parameter-form-price-lists.component";
24
+ import * as i16 from "./price-parameter-form-items.component";
25
+ import * as i17 from "./price-parameter-form-discount-rates.component";
26
+ const statusOptions = [
27
+ PriceParameterStatus.InProgress,
28
+ PriceParameterStatus.Active,
29
+ PriceParameterStatus.Passive,
30
+ ].map(value => ({ value, label: statusLabels[value] }));
31
+ const DEFAULT_DISCOUNT_ROWS = 10;
32
+ export class PriceParameterFormComponent {
33
+ constructor(fb, route, router, toaster, service, formDataService, costMatchService, rowsBuilder) {
34
+ this.fb = fb;
35
+ this.route = route;
36
+ this.router = router;
37
+ this.toaster = toaster;
38
+ this.service = service;
39
+ this.formDataService = formDataService;
40
+ this.costMatchService = costMatchService;
41
+ this.rowsBuilder = rowsBuilder;
42
+ this.saving = false;
43
+ this.editMode = false;
44
+ this.docEntry = null;
45
+ this.current = null;
46
+ this.costItems = [];
47
+ this.allCostItems = [];
48
+ this.typeOptions = [];
49
+ this.groupOptions = [];
50
+ this.regionOptions = [];
51
+ this.autoApplyEnabled = false;
52
+ this.systemRateUsd = 0;
53
+ this.systemRateEur = 0;
54
+ this.rateCurrency = Currency.USD;
55
+ this.businessPartnersDataSource = null;
56
+ this.selectedCustomerCode = null;
57
+ this.gekapCurrency = Currency.TRY;
58
+ this.rawOilCurrency = Currency.USD;
59
+ this.salesPriceExcludingPackagingCurrency = Currency.USD;
60
+ this.statusOptions = statusOptions;
61
+ this.currencyOptions = CURRENCY_OPTIONS;
62
+ this.rateCurrencyOptions = CURRENCY_OPTIONS_FX_ONLY;
63
+ this.customerDisplayExpr = (c) => c ? `${c.cardCode} - ${c.cardName}` : '';
64
+ this.isRate = isRateCostItem;
65
+ this.isCustom = isCustomCostItem;
66
+ }
67
+ ngOnInit() {
68
+ const docEntryParam = this.route.snapshot.paramMap.get('docEntry');
69
+ this.docEntry = docEntryParam != null ? Number(docEntryParam) : null;
70
+ this.editMode = this.docEntry != null && !Number.isNaN(this.docEntry);
71
+ this.form = this.fb.group({
72
+ typeCode: [null, [Validators.required]],
73
+ regionCode: [null, [Validators.required]],
74
+ groupCode: [null, [Validators.required]],
75
+ exchangeRate: [0],
76
+ fromDate: [{ value: null, disabled: this.editMode }, [Validators.required]],
77
+ toDate: [null, [Validators.required]],
78
+ status: [null, [Validators.required]],
79
+ description: [null, [Validators.maxLength(254)]],
80
+ customerCode: [null],
81
+ gekap: [0],
82
+ generalQuota: [0],
83
+ promotionalQuota: [0],
84
+ rawOilPrice: [0],
85
+ salesPriceExcludingPackaging: [0],
86
+ items: this.fb.array([]),
87
+ discounts: this.fb.array([]),
88
+ });
89
+ this.applyDiscounts(null);
90
+ this.form.get('regionCode').valueChanges.subscribe(() => this.onCombinationChange());
91
+ this.form.get('groupCode').valueChanges.subscribe(() => this.onCombinationChange());
92
+ this.load();
93
+ }
94
+ get itemsArray() {
95
+ return this.form.get('items');
96
+ }
97
+ get discountsArray() {
98
+ return this.form.get('discounts');
99
+ }
100
+ get title() {
101
+ return this.editMode
102
+ ? 'Keops::PriceParameters:EditTitle'
103
+ : 'Keops::PriceParameters:CreateTitle';
104
+ }
105
+ get selectedRegionCode() {
106
+ return this.form?.get('regionCode')?.value ?? null;
107
+ }
108
+ get selectedTypeCode() {
109
+ return this.form?.get('typeCode')?.value ?? null;
110
+ }
111
+ get selectedGroupCode() {
112
+ return this.form?.get('groupCode')?.value ?? null;
113
+ }
114
+ onRateCurrencyChange() {
115
+ this.form
116
+ .get('exchangeRate')
117
+ .setValue(this.rateCurrency === Currency.EUR ? this.systemRateEur : this.systemRateUsd);
118
+ }
119
+ goBack() {
120
+ this.router.navigate(['/keops/cost/price-parameters']);
121
+ }
122
+ save() {
123
+ if (this.form.invalid) {
124
+ this.form.markAllAsTouched();
125
+ return;
126
+ }
127
+ this.saving = true;
128
+ const input = {
129
+ ...this.form.getRawValue(),
130
+ customerCode: this.selectedCustomerCode,
131
+ gekapCurrency: this.gekapCurrency,
132
+ rawOilCurrency: this.rawOilCurrency,
133
+ salesPriceExcludingPackagingCurrency: this.salesPriceExcludingPackagingCurrency,
134
+ items: this.rowsBuilder.toInput(this.itemsArray),
135
+ discounts: this.discountsArray.controls
136
+ .map(group => group.value)
137
+ .filter(value => value.salesEmployeeCode != null)
138
+ .map(value => ({
139
+ salesEmployeeCode: value.salesEmployeeCode,
140
+ rate: value.rate,
141
+ })),
142
+ };
143
+ const request$ = this.editMode
144
+ ? this.service.update(this.docEntry, input)
145
+ : this.service.create(input);
146
+ request$.pipe(finalize(() => (this.saving = false))).subscribe({
147
+ next: () => {
148
+ this.toaster.success('AbpUi::SuccessfullySaved');
149
+ this.goBack();
150
+ },
151
+ });
152
+ }
153
+ load() {
154
+ this.formDataService.load(this.editMode ? this.docEntry : null).subscribe(data => {
155
+ this.typeOptions = data.typeOptions;
156
+ this.groupOptions = data.groupOptions;
157
+ this.regionOptions = data.regionOptions;
158
+ this.businessPartnersDataSource = data.businessPartnersDataSource;
159
+ this.allCostItems = data.costItems;
160
+ this.systemRateUsd = data.systemRateUsd;
161
+ this.systemRateEur = data.systemRateEur;
162
+ if (data.current) {
163
+ this.current = data.current;
164
+ this.patchFromCurrent(data.current);
165
+ }
166
+ else {
167
+ this.autoApplyEnabled = true;
168
+ this.onRateCurrencyChange();
169
+ }
170
+ });
171
+ }
172
+ patchFromCurrent(dto) {
173
+ this.form.patchValue({
174
+ typeCode: dto.typeCode ?? null,
175
+ regionCode: dto.regionCode ?? null,
176
+ groupCode: dto.groupCode ?? null,
177
+ exchangeRate: dto.exchangeRate ?? 0,
178
+ fromDate: this.toDateInput(dto.fromDate),
179
+ toDate: this.toDateInput(dto.toDate),
180
+ status: dto.status ?? PriceParameterStatus.Active,
181
+ description: dto.description ?? null,
182
+ customerCode: dto.customerCode ?? null,
183
+ gekap: dto.gekap ?? 0,
184
+ generalQuota: dto.generalQuota ?? 0,
185
+ promotionalQuota: dto.promotionalQuota ?? 0,
186
+ rawOilPrice: dto.rawOilPrice ?? 0,
187
+ salesPriceExcludingPackaging: dto.salesPriceExcludingPackaging ?? 0,
188
+ }, { emitEvent: false });
189
+ this.selectedCustomerCode = dto.customerCode ?? null;
190
+ this.gekapCurrency = dto.gekapCurrency ?? Currency.TRY;
191
+ this.rawOilCurrency = dto.rawOilCurrency ?? Currency.USD;
192
+ this.salesPriceExcludingPackagingCurrency =
193
+ dto.salesPriceExcludingPackagingCurrency ?? Currency.USD;
194
+ this.applyItems(dto.items);
195
+ this.applyDiscounts(dto.discounts);
196
+ this.autoApplyEnabled = true;
197
+ }
198
+ applyDiscounts(source) {
199
+ this.discountsArray.clear();
200
+ for (const discount of source ?? []) {
201
+ this.discountsArray.push(this.createDiscountRow(discount.salesEmployeeCode ?? null, discount.salesEmployeeName ?? null, discount.rate ?? null));
202
+ }
203
+ while (this.discountsArray.length < DEFAULT_DISCOUNT_ROWS) {
204
+ this.discountsArray.push(this.createDiscountRow(null, null, null));
205
+ }
206
+ }
207
+ createDiscountRow(salesEmployeeCode, salesEmployeeName, rate) {
208
+ return this.fb.group({
209
+ salesEmployeeCode: [salesEmployeeCode],
210
+ salesEmployeeName: [salesEmployeeName],
211
+ rate: [rate],
212
+ });
213
+ }
214
+ applyItems(source) {
215
+ this.costItems = this.allCostItems;
216
+ this.rowsBuilder.build(this.itemsArray, this.costItems, source);
217
+ }
218
+ clearItems() {
219
+ this.costItems = [];
220
+ this.itemsArray.clear();
221
+ }
222
+ onCombinationChange() {
223
+ if (!this.autoApplyEnabled) {
224
+ return;
225
+ }
226
+ const regionCode = this.form.get('regionCode').value;
227
+ const groupCode = this.form.get('groupCode').value;
228
+ if (!regionCode || !groupCode) {
229
+ this.clearItems();
230
+ return;
231
+ }
232
+ this.costMatchService.findMatch(regionCode, groupCode).subscribe(match => {
233
+ if (!match) {
234
+ this.clearItems();
235
+ return;
236
+ }
237
+ this.applyItems(match.items);
238
+ });
239
+ }
240
+ toDateInput(value) {
241
+ if (!value)
242
+ return null;
243
+ return value.substring(0, 10);
244
+ }
245
+ }
246
+ PriceParameterFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.ToasterService }, { token: i4.PriceParameterService }, { token: i5.PriceParameterFormDataService }, { token: i6.PriceParameterCostMatchService }, { token: i7.CostItemRowsBuilder }], target: i0.ɵɵFactoryTarget.Component });
247
+ PriceParameterFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PriceParameterFormComponent, selector: "lib-price-parameter-form", ngImport: i0, template: "<abp-page [title]=\"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 pe-0 d-flex gap-2\">\r\n <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"goBack()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i>\r\n {{ 'Keops::PriceParameters:BackToList' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-warning\" [disabled]=\"true\">\r\n {{ 'Keops::PriceParameters:UpdatePriceList' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-success\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <small class=\"text-muted\" *ngIf=\"editMode\">\r\n {{ 'Keops::PriceParameters:DocNum' | abpLocalization }}: {{ current?.docNum ?? '-' }} \u00B7\r\n {{ 'Keops::PriceParameters:DocDate' | abpLocalization }}:\r\n {{ (current?.docDate | shortDate) ?? '-' }}\r\n </small>\r\n <small class=\"text-muted ms-auto\">\r\n {{ 'Keops::PriceParameters:SystemRates' | abpLocalization }}: USD\r\n {{ systemRateUsd | number }} \u00B7 EUR {{ systemRateEur | number }}\r\n </small>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Type' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"typeCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let type of typeOptions\" [ngValue]=\"type.code\">\r\n {{ type.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"regionCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Group' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"groupCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let group of groupOptions\" [ngValue]=\"group.code\">\r\n {{ group.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:ExchangeRate' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"exchangeRate\"\r\n [(currency)]=\"rateCurrency\"\r\n (currencyChange)=\"onRateCurrencyChange()\"\r\n [currencyOptions]=\"rateCurrencyOptions\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:StartDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"fromDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:EndDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"toDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:SalesPriceExcludingPackaging' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"salesPriceExcludingPackaging\"\r\n [(currency)]=\"salesPriceExcludingPackagingCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"status\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:CustomerCode' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-select-box\r\n [dataSource]=\"businessPartnersDataSource\"\r\n valueExpr=\"cardCode\"\r\n [displayExpr]=\"customerDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['cardCode', 'cardName']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedCustomerCode\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Gekap' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"gekap\"\r\n [(currency)]=\"gekapCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:GeneralQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"generalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:PromotionalQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"promotionalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:RawOilPrice' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"rawOilPrice\"\r\n [(currency)]=\"rawOilCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Description' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"description\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\" [destroyOnHide]=\"false\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:CostParameters' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-cost-items-tab [costItems]=\"costItems\" [itemsArray]=\"itemsArray\">\r\n </lib-price-parameter-cost-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:PriceLists' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-price-lists-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [ppTypeCode]=\"selectedTypeCode\"\r\n ></lib-price-parameter-price-lists-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Items' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-items-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [cpGroupCode]=\"selectedGroupCode\"\r\n ></lib-price-parameter-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Discounts' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-discount-rates-tab [discountsArray]=\"discountsArray\">\r\n </lib-price-parameter-discount-rates-tab>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n</abp-page>\r\n", dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i10.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i10.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "directive", type: i11.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i11.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i11.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i11.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i11.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i12.DxDateBoxComponent, selector: "dx-date-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "adaptivityEnabled", "applyButtonText", "applyValueMode", "buttons", "calendarOptions", "cancelButtonText", "dateOutOfRangeMessage", "dateSerializationFormat", "deferRendering", "disabled", "disabledDates", "displayFormat", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "interval", "invalidDateMessage", "isValid", "label", "labelMode", "max", "maxLength", "min", "name", "opened", "openOnFieldClick", "pickerType", "placeholder", "readOnly", "rtlEnabled", "showAnalogClock", "showClearButton", "showDropDownButton", "spellcheck", "stylingMode", "tabIndex", "text", "todayButtonText", "type", "useMaskBehavior", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "adaptivityEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "calendarOptionsChange", "cancelButtonTextChange", "dateOutOfRangeMessageChange", "dateSerializationFormatChange", "deferRenderingChange", "disabledChange", "disabledDatesChange", "displayFormatChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "intervalChange", "invalidDateMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "maxLengthChange", "minChange", "nameChange", "openedChange", "openOnFieldClickChange", "pickerTypeChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showAnalogClockChange", "showClearButtonChange", "showDropDownButtonChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "todayButtonTextChange", "typeChange", "useMaskBehaviorChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i12.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: "component", type: i13.AmountCurrencyInputComponent, selector: "lib-amount-currency-input", inputs: ["currencyOptions", "currency"], outputs: ["currencyChange"] }, { kind: "component", type: i14.PriceParameterCostItemsTabComponent, selector: "lib-price-parameter-cost-items-tab", inputs: ["costItems", "itemsArray"] }, { kind: "component", type: i15.PriceParameterPriceListsTabComponent, selector: "lib-price-parameter-price-lists-tab", inputs: ["cpRegionCode", "ppTypeCode"] }, { kind: "component", type: i16.PriceParameterItemsTabComponent, selector: "lib-price-parameter-items-tab", inputs: ["cpRegionCode", "cpGroupCode"] }, { kind: "component", type: i17.PriceParameterDiscountRatesTabComponent, selector: "lib-price-parameter-discount-rates-tab", inputs: ["discountsArray"] }, { kind: "pipe", type: i8.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i9.ShortDatePipe, name: "shortDate" }] });
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterFormComponent, decorators: [{
249
+ type: Component,
250
+ args: [{ selector: 'lib-price-parameter-form', template: "<abp-page [title]=\"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 pe-0 d-flex gap-2\">\r\n <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"goBack()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i>\r\n {{ 'Keops::PriceParameters:BackToList' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-warning\" [disabled]=\"true\">\r\n {{ 'Keops::PriceParameters:UpdatePriceList' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-success\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <small class=\"text-muted\" *ngIf=\"editMode\">\r\n {{ 'Keops::PriceParameters:DocNum' | abpLocalization }}: {{ current?.docNum ?? '-' }} \u00B7\r\n {{ 'Keops::PriceParameters:DocDate' | abpLocalization }}:\r\n {{ (current?.docDate | shortDate) ?? '-' }}\r\n </small>\r\n <small class=\"text-muted ms-auto\">\r\n {{ 'Keops::PriceParameters:SystemRates' | abpLocalization }}: USD\r\n {{ systemRateUsd | number }} \u00B7 EUR {{ systemRateEur | number }}\r\n </small>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Type' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"typeCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let type of typeOptions\" [ngValue]=\"type.code\">\r\n {{ type.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"regionCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Group' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"groupCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let group of groupOptions\" [ngValue]=\"group.code\">\r\n {{ group.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:ExchangeRate' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"exchangeRate\"\r\n [(currency)]=\"rateCurrency\"\r\n (currencyChange)=\"onRateCurrencyChange()\"\r\n [currencyOptions]=\"rateCurrencyOptions\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:StartDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"fromDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:EndDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"toDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:SalesPriceExcludingPackaging' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"salesPriceExcludingPackaging\"\r\n [(currency)]=\"salesPriceExcludingPackagingCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"status\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:CustomerCode' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-select-box\r\n [dataSource]=\"businessPartnersDataSource\"\r\n valueExpr=\"cardCode\"\r\n [displayExpr]=\"customerDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['cardCode', 'cardName']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedCustomerCode\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Gekap' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"gekap\"\r\n [(currency)]=\"gekapCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:GeneralQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"generalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:PromotionalQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"promotionalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:RawOilPrice' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"rawOilPrice\"\r\n [(currency)]=\"rawOilCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Description' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"description\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\" [destroyOnHide]=\"false\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:CostParameters' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-cost-items-tab [costItems]=\"costItems\" [itemsArray]=\"itemsArray\">\r\n </lib-price-parameter-cost-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:PriceLists' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-price-lists-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [ppTypeCode]=\"selectedTypeCode\"\r\n ></lib-price-parameter-price-lists-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Items' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-items-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [cpGroupCode]=\"selectedGroupCode\"\r\n ></lib-price-parameter-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Discounts' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-discount-rates-tab [discountsArray]=\"discountsArray\">\r\n </lib-price-parameter-discount-rates-tab>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n</abp-page>\r\n" }]
251
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.ToasterService }, { type: i4.PriceParameterService }, { type: i5.PriceParameterFormDataService }, { type: i6.PriceParameterCostMatchService }, { type: i7.CostItemRowsBuilder }]; } });
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBSUwsUUFBUSxFQU1SLG9CQUFvQixHQUNyQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbEcsTUFBTSxhQUFhLEdBQUc7SUFDcEIsb0JBQW9CLENBQUMsVUFBVTtJQUMvQixvQkFBb0IsQ0FBQyxNQUFNO0lBQzNCLG9CQUFvQixDQUFDLE9BQU87Q0FDN0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVB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RSxPQUFPLElBQUksQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3dIQTdRVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixnRUNyQ3hDLCsxWkFvU0E7MkZEL1BhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCBEYXRhU291cmNlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCB7XHJcbiAgUHJpY2VQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gIEJ1c2luZXNzUGFydG5lckR0byxcclxuICBDb3N0SXRlbUR0byxcclxuICBDdXJyZW5jeSxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG8sXHJcbiAgUHJpY2VQYXJhbWV0ZXJUeXBlTG9va3VwRHRvLFxyXG4gIFByaWNlUGFyYW1ldGVyRHRvLFxyXG4gIFByaWNlUGFyYW1ldGVyRGlzY291bnREdG8sXHJcbiAgQ29zdFBhcmFtZXRlckl0ZW1EdG8sXHJcbiAgUHJpY2VQYXJhbWV0ZXJTdGF0dXMsXHJcbn0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBzdGF0dXNMYWJlbHMgfSBmcm9tICcuLi9wcmljZS1wYXJhbWV0ZXItbDEwbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBQcmljZVBhcmFtZXRlckZvcm1EYXRhU2VydmljZSB9IGZyb20gJy4uL3ByaWNlLXBhcmFtZXRlci1mb3JtLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFByaWNlUGFyYW1ldGVyQ29zdE1hdGNoU2VydmljZSB9IGZyb20gJy4uL3ByaWNlLXBhcmFtZXRlci1jb3N0LW1hdGNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDVVJSRU5DWV9PUFRJT05TLCBDVVJSRU5DWV9PUFRJT05TX0ZYX09OTFkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jdXJyZW5jeS51dGlscyc7XHJcbmltcG9ydCB7IGlzUmF0ZUNvc3RJdGVtLCBpc0N1c3RvbUNvc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Nvc3QtaXRlbS1jbGFzc2lmaWNhdGlvbi51dGlscyc7XHJcbmltcG9ydCB7IENvc3RJdGVtUm93c0J1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29zdC1pdGVtLXJvd3MuYnVpbGRlcic7XHJcblxyXG5jb25zdCBzdGF0dXNPcHRpb25zID0gW1xyXG4gIFByaWNlUGFyYW1ldGVyU3RhdHVzLkluUHJvZ3Jlc3MsXHJcbiAgUHJpY2VQYXJhbWV0ZXJTdGF0dXMuQWN0aXZlLFxyXG4gIFByaWNlUGFyYW1ldGVyU3RhdHVzLlBhc3NpdmUsXHJcbl0ubWFwKHZhbHVlID0+ICh7IHZhbHVlLCBsYWJlbDogc3RhdHVzTGFiZWxzW3ZhbHVlXSB9KSk7XHJcblxyXG5jb25zdCBERUZBVUxUX0RJU0NPVU5UX1JPV1MgPSAxMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByaWNlLXBhcmFtZXRlci1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpY2VQYXJhbWV0ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHNhdmluZyA9IGZhbHNlO1xyXG4gIGVkaXRNb2RlID0gZmFsc2U7XHJcbiAgZG9jRW50cnk6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIGN1cnJlbnQ6IFByaWNlUGFyYW1ldGVyRHRvIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvc3RJdGVtczogQ29zdEl0ZW1EdG9bXSA9IFtdO1xyXG4gIHByaXZhdGUgYWxsQ29zdEl0ZW1zOiBDb3N0SXRlbUR0b1tdID0gW107XHJcbiAgdHlwZU9wdGlvbnM6IFByaWNlUGFyYW1ldGVyVHlwZUxvb2t1cER0b1tdID0gW107XHJcbiAgZ3JvdXBPcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG9bXSA9IFtdO1xyXG4gIHJlZ2lvbk9wdGlvbnM6IENvc3RQYXJhbWV0ZXJDYXRlZ29yeUR0b1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgYXV0b0FwcGx5RW5hYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzeXN0ZW1SYXRlVXNkID0gMDtcclxuICBzeXN0ZW1SYXRlRXVyID0gMDtcclxuICByYXRlQ3VycmVuY3k6IEN1cnJlbmN5ID0gQ3VycmVuY3kuVVNEO1xyXG5cclxuICBidXNpbmVzc1BhcnRuZXJzRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ3VzdG9tZXJDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBnZWthcEN1cnJlbmN5OiBDdXJyZW5jeSA9IEN1cnJlbmN5LlRSWTtcclxuICByYXdPaWxDdXJyZW5jeTogQ3VycmVuY3kgPSBDdXJyZW5jeS5VU0Q7XHJcbiAgc2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZ0N1cnJlbmN5OiBDdXJyZW5jeSA9IEN1cnJlbmN5LlVTRDtcclxuXHJcbiAgcmVhZG9ubHkgc3RhdHVzT3B0aW9ucyA9IHN0YXR1c09wdGlvbnM7XHJcbiAgcmVhZG9ubHkgY3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OUztcclxuICByZWFkb25seSByYXRlQ3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OU19GWF9PTkxZO1xyXG5cclxuICByZWFkb25seSBjdXN0b21lckRpc3BsYXlFeHByID0gKGM6IEJ1c2luZXNzUGFydG5lckR0byB8IG51bGwpOiBzdHJpbmcgPT5cclxuICAgIGMgPyBgJHtjLmNhcmRDb2RlfSAtICR7Yy5jYXJkTmFtZX1gIDogJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBQcmljZVBhcmFtZXRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1EYXRhU2VydmljZTogUHJpY2VQYXJhbWV0ZXJGb3JtRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvc3RNYXRjaFNlcnZpY2U6IFByaWNlUGFyYW1ldGVyQ29zdE1hdGNoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm93c0J1aWxkZXI6IENvc3RJdGVtUm93c0J1aWxkZXIsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRvY0VudHJ5UGFyYW0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnZG9jRW50cnknKTtcclxuICAgIHRoaXMuZG9jRW50cnkgPSBkb2NFbnRyeVBhcmFtICE9IG51bGwgPyBOdW1iZXIoZG9jRW50cnlQYXJhbSkgOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0TW9kZSA9IHRoaXMuZG9jRW50cnkgIT0gbnVsbCAmJiAhTnVtYmVyLmlzTmFOKHRoaXMuZG9jRW50cnkpO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICB0eXBlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJlZ2lvbkNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBncm91cENvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBleGNoYW5nZVJhdGU6IFswXSxcclxuICAgICAgZnJvbURhdGU6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdGhpcy5lZGl0TW9kZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICB0b0RhdGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBzdGF0dXM6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBkZXNjcmlwdGlvbjogW251bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyNTQpXV0sXHJcbiAgICAgIGN1c3RvbWVyQ29kZTogW251bGxdLFxyXG4gICAgICBnZWthcDogWzBdLFxyXG4gICAgICBnZW5lcmFsUXVvdGE6IFswXSxcclxuICAgICAgcHJvbW90aW9uYWxRdW90YTogWzBdLFxyXG4gICAgICByYXdPaWxQcmljZTogWzBdLFxyXG4gICAgICBzYWxlc1ByaWNlRXhjbHVkaW5nUGFja2FnaW5nOiBbMF0sXHJcbiAgICAgIGl0ZW1zOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgZGlzY291bnRzOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXBwbHlEaXNjb3VudHMobnVsbCk7XHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCgncmVnaW9uQ29kZScpIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Db21iaW5hdGlvbkNoYW5nZSgpKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2dyb3VwQ29kZScpIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Db21iaW5hdGlvbkNoYW5nZSgpKTtcclxuXHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtc0FycmF5KCk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnaXRlbXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzY291bnRzQXJyYXkoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdkaXNjb3VudHMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRNb2RlXHJcbiAgICAgID8gJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6RWRpdFRpdGxlJ1xyXG4gICAgICA6ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkNyZWF0ZVRpdGxlJztcclxuICB9XHJcblxyXG4gIGdldCBzZWxlY3RlZFJlZ2lvbkNvZGUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQoJ3JlZ2lvbkNvZGUnKT8udmFsdWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBzZWxlY3RlZFR5cGVDb2RlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCd0eXBlQ29kZScpPy52YWx1ZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkR3JvdXBDb2RlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCdncm91cENvZGUnKT8udmFsdWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGlzUmF0ZSA9IGlzUmF0ZUNvc3RJdGVtO1xyXG4gIHJlYWRvbmx5IGlzQ3VzdG9tID0gaXNDdXN0b21Db3N0SXRlbTtcclxuXHJcbiAgb25SYXRlQ3VycmVuY3lDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1cclxuICAgICAgLmdldCgnZXhjaGFuZ2VSYXRlJykhXHJcbiAgICAgIC5zZXRWYWx1ZSh0aGlzLnJhdGVDdXJyZW5jeSA9PT0gQ3VycmVuY3kuRVVSID8gdGhpcy5zeXN0ZW1SYXRlRXVyIDogdGhpcy5zeXN0ZW1SYXRlVXNkKTtcclxuICB9XHJcblxyXG4gIGdvQmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2tlb3BzL2Nvc3QvcHJpY2UtcGFyYW1ldGVycyddKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksXHJcbiAgICAgIGN1c3RvbWVyQ29kZTogdGhpcy5zZWxlY3RlZEN1c3RvbWVyQ29kZSxcclxuICAgICAgZ2VrYXBDdXJyZW5jeTogdGhpcy5nZWthcEN1cnJlbmN5LFxyXG4gICAgICByYXdPaWxDdXJyZW5jeTogdGhpcy5yYXdPaWxDdXJyZW5jeSxcclxuICAgICAgc2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZ0N1cnJlbmN5OiB0aGlzLnNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmdDdXJyZW5jeSxcclxuICAgICAgaXRlbXM6IHRoaXMucm93c0J1aWxkZXIudG9JbnB1dCh0aGlzLml0ZW1zQXJyYXkpLFxyXG4gICAgICBkaXNjb3VudHM6IHRoaXMuZGlzY291bnRzQXJyYXkuY29udHJvbHNcclxuICAgICAgICAubWFwKGdyb3VwID0+IGdyb3VwLnZhbHVlKVxyXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUuc2FsZXNFbXBsb3llZUNvZGUgIT0gbnVsbClcclxuICAgICAgICAubWFwKHZhbHVlID0+ICh7XHJcbiAgICAgICAgICBzYWxlc0VtcGxveWVlQ29kZTogdmFsdWUuc2FsZXNFbXBsb3llZUNvZGUsXHJcbiAgICAgICAgICByYXRlOiB2YWx1ZS5yYXRlLFxyXG4gICAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCQgPSB0aGlzLmVkaXRNb2RlXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLmRvY0VudHJ5ISwgaW5wdXQpXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZShpbnB1dCk7XHJcblxyXG4gICAgcmVxdWVzdCQucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5zYXZpbmcgPSBmYWxzZSkpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MoJ0FicFVpOjpTdWNjZXNzZnVsbHlTYXZlZCcpO1xyXG4gICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybURhdGFTZXJ2aWNlLmxvYWQodGhpcy5lZGl0TW9kZSA/IHRoaXMuZG9jRW50cnkgOiBudWxsKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMudHlwZU9wdGlvbnMgPSBkYXRhLnR5cGVPcHRpb25zO1xyXG4gICAgICB0aGlzLmdyb3VwT3B0aW9ucyA9IGRhdGEuZ3JvdXBPcHRpb25zO1xyXG4gICAgICB0aGlzLnJlZ2lvbk9wdGlvbnMgPSBkYXRhLnJlZ2lvbk9wdGlvbnM7XHJcbiAgICAgIHRoaXMuYnVzaW5lc3NQYXJ0bmVyc0RhdGFTb3VyY2UgPSBkYXRhLmJ1c2luZXNzUGFydG5lcnNEYXRhU291cmNlO1xyXG4gICAgICB0aGlzLmFsbENvc3RJdGVtcyA9IGRhdGEuY29zdEl0ZW1zO1xyXG4gICAgICB0aGlzLnN5c3RlbVJhdGVVc2QgPSBkYXRhLnN5c3RlbVJhdGVVc2Q7XHJcbiAgICAgIHRoaXMuc3lzdGVtUmF0ZUV1ciA9IGRhdGEuc3lzdGVtUmF0ZUV1cjtcclxuXHJcbiAgICAgIGlmIChkYXRhLmN1cnJlbnQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkYXRhLmN1cnJlbnQ7XHJcbiAgICAgICAgdGhpcy5wYXRjaEZyb21DdXJyZW50KGRhdGEuY3VycmVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdXRvQXBwbHlFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9uUmF0ZUN1cnJlbmN5Q2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaEZyb21DdXJyZW50KGR0bzogUHJpY2VQYXJhbWV0ZXJEdG8pOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZUNvZGU6IGR0by50eXBlQ29kZSA/PyBudWxsLFxyXG4gICAgICAgIHJlZ2lvbkNvZGU6IGR0by5yZWdpb25Db2RlID8/IG51bGwsXHJcbiAgICAgICAgZ3JvdXBDb2RlOiBkdG8uZ3JvdXBDb2RlID8/IG51bGwsXHJcbiAgICAgICAgZXhjaGFuZ2VSYXRlOiBkdG8uZXhjaGFuZ2VSYXRlID8/IDAsXHJcbiAgICAgICAgZnJvbURhdGU6IHRoaXMudG9EYXRlSW5wdXQoZHRvLmZyb21EYXRlKSxcclxuICAgICAgICB0b0RhdGU6IHRoaXMudG9EYXRlSW5wdXQoZHRvLnRvRGF0ZSksXHJcbiAgICAgICAgc3RhdHVzOiBkdG8uc3RhdHVzID8/IFByaWNlUGFyYW1ldGVyU3RhdHVzLkFjdGl2ZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZHRvLmRlc2NyaXB0aW9uID8/IG51bGwsXHJcbiAgICAgICAgY3VzdG9tZXJDb2RlOiBkdG8uY3VzdG9tZXJDb2RlID8/IG51bGwsXHJcbiAgICAgICAgZ2VrYXA6IGR0by5nZWthcCA/PyAwLFxyXG4gICAgICAgIGdlbmVyYWxRdW90YTogZHRvLmdlbmVyYWxRdW90YSA/PyAwLFxyXG4gICAgICAgIHByb21vdGlvbmFsUXVvdGE6IGR0by5wcm9tb3Rpb25hbFF1b3RhID8/IDAsXHJcbiAgICAgICAgcmF3T2lsUHJpY2U6IGR0by5yYXdPaWxQcmljZSA/PyAwLFxyXG4gICAgICAgIHNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmc6IGR0by5zYWxlc1ByaWNlRXhjbHVkaW5nUGFja2FnaW5nID8/IDAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9LFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ3VzdG9tZXJDb2RlID0gZHRvLmN1c3RvbWVyQ29kZSA/PyBudWxsO1xyXG4gICAgdGhpcy5nZWthcEN1cnJlbmN5ID0gZHRvLmdla2FwQ3VycmVuY3kgPz8gQ3VycmVuY3kuVFJZO1xyXG4gICAgdGhpcy5yYXdPaWxDdXJyZW5jeSA9IGR0by5yYXdPaWxDdXJyZW5jeSA/PyBDdXJyZW5jeS5VU0Q7XHJcbiAgICB0aGlzLnNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmdDdXJyZW5jeSA9XHJcbiAgICAgIGR0by5zYWxlc1ByaWNlRXhjbHVkaW5nUGFja2FnaW5nQ3VycmVuY3kgPz8gQ3VycmVuY3kuVVNEO1xyXG5cclxuICAgIHRoaXMuYXBwbHlJdGVtcyhkdG8uaXRlbXMpO1xyXG4gICAgdGhpcy5hcHBseURpc2NvdW50cyhkdG8uZGlzY291bnRzKTtcclxuICAgIHRoaXMuYXV0b0FwcGx5RW5hYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5RGlzY291bnRzKFxyXG4gICAgc291cmNlOiBSZWFkb25seUFycmF5PFByaWNlUGFyYW1ldGVyRGlzY291bnREdG8+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY291bnRzQXJyYXkuY2xlYXIoKTtcclxuICAgIGZvciAoY29uc3QgZGlzY291bnQgb2Ygc291cmNlID8/IFtdKSB7XHJcbiAgICAgIHRoaXMuZGlzY291bnRzQXJyYXkucHVzaChcclxuICAgICAgICB0aGlzLmNyZWF0ZURpc2NvdW50Um93KFxyXG4gICAgICAgICAgZGlzY291bnQuc2FsZXNFbXBsb3llZUNvZGUgPz8gbnVsbCxcclxuICAgICAgICAgIGRpc2NvdW50LnNhbGVzRW1wbG95ZWVOYW1lID8/IG51bGwsXHJcbiAgICAgICAgICBkaXNjb3VudC5yYXRlID8/IG51bGwsXHJcbiAgICAgICAgKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB3aGlsZSAodGhpcy5kaXNjb3VudHNBcnJheS5sZW5ndGggPCBERUZBVUxUX0RJU0NPVU5UX1JPV1MpIHtcclxuICAgICAgdGhpcy5kaXNjb3VudHNBcnJheS5wdXNoKHRoaXMuY3JlYXRlRGlzY291bnRSb3cobnVsbCwgbnVsbCwgbnVsbCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEaXNjb3VudFJvdyhcclxuICAgIHNhbGVzRW1wbG95ZWVDb2RlOiBudW1iZXIgfCBudWxsLFxyXG4gICAgc2FsZXNFbXBsb3llZU5hbWU6IHN0cmluZyB8IG51bGwsXHJcbiAgICByYXRlOiBudW1iZXIgfCBudWxsLFxyXG4gICk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHNhbGVzRW1wbG95ZWVDb2RlOiBbc2FsZXNFbXBsb3llZUNvZGVdLFxyXG4gICAgICBzYWxlc0VtcGxveWVlTmFtZTogW3NhbGVzRW1wbG95ZWVOYW1lXSxcclxuICAgICAgcmF0ZTogW3JhdGVdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5SXRlbXMoc291cmNlOiBSZWFkb25seUFycmF5PENvc3RQYXJhbWV0ZXJJdGVtRHRvPiB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29zdEl0ZW1zID0gdGhpcy5hbGxDb3N0SXRlbXM7XHJcbiAgICB0aGlzLnJvd3NCdWlsZGVyLmJ1aWxkKHRoaXMuaXRlbXNBcnJheSwgdGhpcy5jb3N0SXRlbXMsIHNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFySXRlbXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvc3RJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5pdGVtc0FycmF5LmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ29tYmluYXRpb25DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYXV0b0FwcGx5RW5hYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVnaW9uQ29kZSA9IHRoaXMuZm9ybS5nZXQoJ3JlZ2lvbkNvZGUnKSEudmFsdWU7XHJcbiAgICBjb25zdCBncm91cENvZGUgPSB0aGlzLmZvcm0uZ2V0KCdncm91cENvZGUnKSEudmFsdWU7XHJcblxyXG4gICAgaWYgKCFyZWdpb25Db2RlIHx8ICFncm91cENvZGUpIHtcclxuICAgICAgdGhpcy5jbGVhckl0ZW1zKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvc3RNYXRjaFNlcnZpY2UuZmluZE1hdGNoKHJlZ2lvbkNvZGUsIGdyb3VwQ29kZSkuc3Vic2NyaWJlKG1hdGNoID0+IHtcclxuICAgICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJJdGVtcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hcHBseUl0ZW1zKG1hdGNoLml0ZW1zKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0RhdGVJbnB1dCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKDAsIDEwKTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCJ0aXRsZSB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIG14LTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTEgcHQtMCBwdC1tZC0yIHBlLTAgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWxlZnQgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkJhY2tUb0xpc3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6VXBkYXRlUHJpY2VMaXN0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXHJcbiAgICAgICAgICBidXR0b25DbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJzYXZpbmdcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0/LmludmFsaWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiICpuZ0lmPVwiZWRpdE1vZGVcIj5cclxuICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkRvY051bScgfCBhYnBMb2NhbGl6YXRpb24gfX06IHt7IGN1cnJlbnQ/LmRvY051bSA/PyAnLScgfX0gwrdcclxuICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkRvY0RhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19OlxyXG4gICAgICAgICAge3sgKGN1cnJlbnQ/LmRvY0RhdGUgfCBzaG9ydERhdGUpID8/ICctJyB9fVxyXG4gICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBtcy1hdXRvXCI+XHJcbiAgICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpTeXN0ZW1SYXRlcycgfCBhYnBMb2NhbGl6YXRpb24gfX06IFVTRFxyXG4gICAgICAgICAge3sgc3lzdGVtUmF0ZVVzZCB8IG51bWJlciB9fSDCtyBFVVIge3sgc3lzdGVtUmF0ZUV1ciB8IG51bWJlciB9fVxyXG4gICAgICAgIDwvc21hbGw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlR5cGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZUNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgZGlzYWJsZWQgaGlkZGVuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVPcHRpb25zXCIgW25nVmFsdWVdPVwidHlwZS5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdHlwZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC00IGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpSZWdpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVnaW9uQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZCBoaWRkZW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHJlZ2lvbiBvZiByZWdpb25PcHRpb25zXCIgW25nVmFsdWVdPVwicmVnaW9uLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByZWdpb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtNCBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6R3JvdXAnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIGRpc2FibGVkIGhpZGRlbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlNlbGVjdEFuT3B0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBPcHRpb25zXCIgW25nVmFsdWVdPVwiZ3JvdXAuY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkV4Y2hhbmdlUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1hbW91bnQtY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXhjaGFuZ2VSYXRlXCJcclxuICAgICAgICAgICAgICAgICAgWyhjdXJyZW5jeSldPVwicmF0ZUN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgKGN1cnJlbmN5Q2hhbmdlKT1cIm9uUmF0ZUN1cnJlbmN5Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3lPcHRpb25zXT1cInJhdGVDdXJyZW5jeU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlN0YXJ0RGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBkYXRlU2VyaWFsaXphdGlvbkZvcm1hdD1cInl5eXktTU0tZGRcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkVuZERhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgZGF0ZVNlcmlhbGl6YXRpb25Gb3JtYXQ9XCJ5eXl5LU1NLWRkXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidG9EYXRlXCJcclxuICAgICAgICAgICAgICAgID48L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtNCBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6U2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1hbW91bnQtY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoY3VycmVuY3kpXT1cInNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmdDdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saWItYW1vdW50LWN1cnJlbmN5LWlucHV0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC00IGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpTdGF0dXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIGRpc2FibGVkIGhpZGRlbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlNlbGVjdEFuT3B0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIHN0YXR1c09wdGlvbnNcIiBbbmdWYWx1ZV09XCJvcHQudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkN1c3RvbWVyQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3hcclxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiYnVzaW5lc3NQYXJ0bmVyc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJjYXJkQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RXhwcl09XCJjdXN0b21lckRpc3BsYXlFeHByXCJcclxuICAgICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzZWFyY2hFeHByXT1cIlsnY2FyZENvZGUnLCAnY2FyZE5hbWUnXVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaE1vZGU9XCJjb250YWluc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzZWFyY2hUaW1lb3V0XT1cIjIwMFwiXHJcbiAgICAgICAgICAgICAgICAgIFttaW5TZWFyY2hMZW5ndGhdPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93RGF0YUJlZm9yZVNlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwic2VsZWN0ZWRDdXN0b21lckNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgPjwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkdla2FwJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnZWthcFwiXHJcbiAgICAgICAgICAgICAgICAgIFsoY3VycmVuY3kpXT1cImdla2FwQ3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkdlbmVyYWxRdW90YScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJnZW5lcmFsUXVvdGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpVbml0OlRvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByb21vdGlvbmFsUXVvdGEnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW90aW9uYWxRdW90YVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlVuaXQ6VG9uJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtNCBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6UmF3T2lsUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItYW1vdW50LWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgWyhjdXJyZW5jeSldPVwicmF3T2lsQ3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByb3dzPVwiMlwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtdGFic1wiIFtkZXN0cm95T25IaWRlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICA8bGkgbmdiTmF2SXRlbT5cclxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpUYWI6Q29zdFBhcmFtZXRlcnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8bGliLXByaWNlLXBhcmFtZXRlci1jb3N0LWl0ZW1zLXRhYiBbY29zdEl0ZW1zXT1cImNvc3RJdGVtc1wiIFtpdGVtc0FycmF5XT1cIml0ZW1zQXJyYXlcIj5cclxuICAgICAgICAgICAgICA8L2xpYi1wcmljZS1wYXJhbWV0ZXItY29zdC1pdGVtcy10YWI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlRhYjpQcmljZUxpc3RzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGxpYi1wcmljZS1wYXJhbWV0ZXItcHJpY2UtbGlzdHMtdGFiXHJcbiAgICAgICAgICAgICAgICBbY3BSZWdpb25Db2RlXT1cInNlbGVjdGVkUmVnaW9uQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBbcHBUeXBlQ29kZV09XCJzZWxlY3RlZFR5cGVDb2RlXCJcclxuICAgICAgICAgICAgICA+PC9saWItcHJpY2UtcGFyYW1ldGVyLXByaWNlLWxpc3RzLXRhYj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgPGxpIG5nYk5hdkl0ZW0+XHJcbiAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+e3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6VGFiOkl0ZW1zJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGxpYi1wcmljZS1wYXJhbWV0ZXItaXRlbXMtdGFiXHJcbiAgICAgICAgICAgICAgICBbY3BSZWdpb25Db2RlXT1cInNlbGVjdGVkUmVnaW9uQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBbY3BHcm91cENvZGVdPVwic2VsZWN0ZWRHcm91cENvZGVcIlxyXG4gICAgICAgICAgICAgID48L2xpYi1wcmljZS1wYXJhbWV0ZXItaXRlbXMtdGFiPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICA8bGkgbmdiTmF2SXRlbT5cclxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpUYWI6RGlzY291bnRzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGxpYi1wcmljZS1wYXJhbWV0ZXItZGlzY291bnQtcmF0ZXMtdGFiIFtkaXNjb3VudHNBcnJheV09XCJkaXNjb3VudHNBcnJheVwiPlxyXG4gICAgICAgICAgICAgIDwvbGliLXByaWNlLXBhcmFtZXRlci1kaXNjb3VudC1yYXRlcy10YWI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==