@devx-commerce/plugin-gati 0.0.2 → 0.0.4

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 (283) hide show
  1. package/.medusa/server/development/erp-order-payload-example.js +76 -0
  2. package/.medusa/server/src/api/admin/erp-event/middlewares.js +17 -0
  3. package/.medusa/server/src/api/admin/erp-event/query-config.js +23 -0
  4. package/.medusa/server/src/api/admin/erp-event/route.js +22 -0
  5. package/.medusa/server/src/api/admin/erp-event/utils.js +20 -0
  6. package/.medusa/server/src/api/admin/erp-event/validators.js +9 -0
  7. package/.medusa/server/src/api/admin/middlewares.js +11 -0
  8. package/.medusa/server/src/api/erp/webhook/config.js +101 -0
  9. package/.medusa/server/src/api/erp/webhook/route.js +39 -48
  10. package/.medusa/server/src/api/erp/webhook/utils.js +61 -0
  11. package/.medusa/server/src/api/middlewares.js +15 -0
  12. package/.medusa/server/src/api/store/carts/[id]/custom-add-line-items/route.js +17 -0
  13. package/.medusa/server/src/api/store/carts/middleware.js +14 -0
  14. package/.medusa/server/src/api/store/custom-price/[variant_id]/route.js +25 -0
  15. package/.medusa/server/src/api/store/custom-price/middleware.js +13 -0
  16. package/.medusa/server/src/api/store/custom-price/query-config.js +11 -0
  17. package/.medusa/server/src/api/store/custom-price/validators.js +16 -0
  18. package/.medusa/server/src/api/store/middleware.js +15 -0
  19. package/.medusa/server/src/lib/api-response.js +103 -0
  20. package/.medusa/server/src/links/extended-product.js +10 -0
  21. package/.medusa/server/src/links/extended-variant.js +10 -0
  22. package/.medusa/server/src/modules/category-group-master/index.js +13 -0
  23. package/.medusa/server/src/modules/category-group-master/migrations/Migration20250729035221.js +16 -0
  24. package/.medusa/server/src/modules/category-group-master/models/category-group-master.js +13 -0
  25. package/.medusa/server/src/modules/category-group-master/service.js +10 -0
  26. package/.medusa/server/src/modules/category-master/index.js +13 -0
  27. package/.medusa/server/src/modules/category-master/migrations/Migration20250513122212.js +15 -0
  28. package/.medusa/server/src/modules/category-master/migrations/Migration20250519180539.js +14 -0
  29. package/.medusa/server/src/modules/category-master/migrations/Migration20250531004724.js +14 -0
  30. package/.medusa/server/src/modules/category-master/migrations/Migration20250729040659.js +18 -0
  31. package/.medusa/server/src/modules/category-master/models/category-master.js +17 -0
  32. package/.medusa/server/src/modules/category-master/service.js +10 -0
  33. package/.medusa/server/src/modules/collection-group-master/index.js +13 -0
  34. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20250531022203.js +15 -0
  35. package/.medusa/server/src/modules/collection-group-master/models/collection-group-master.js +12 -0
  36. package/.medusa/server/src/modules/collection-group-master/service.js +10 -0
  37. package/.medusa/server/src/modules/collection-master/index.js +13 -0
  38. package/.medusa/server/src/modules/collection-master/migrations/Migration20250513122211.js +16 -0
  39. package/.medusa/server/src/modules/collection-master/migrations/Migration20250531025048.js +14 -0
  40. package/.medusa/server/src/modules/collection-master/models/collection-master.js +15 -0
  41. package/.medusa/server/src/modules/collection-master/service.js +10 -0
  42. package/.medusa/server/src/modules/discount-master/index.js +13 -0
  43. package/.medusa/server/src/modules/discount-master/migrations/Migration20250707232514.js +21 -0
  44. package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051709.js +16 -0
  45. package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051737.js +14 -0
  46. package/.medusa/server/src/modules/discount-master/models/discount-master.js +62 -0
  47. package/.medusa/server/src/modules/discount-master/service.js +84 -0
  48. package/.medusa/server/src/modules/erp/migrations/Migration20250513121436.js +16 -0
  49. package/.medusa/server/src/modules/erp/models/erp.js +10 -0
  50. package/.medusa/server/src/modules/erp/service.js +67 -1
  51. package/.medusa/server/src/modules/erp-event/index.js +13 -0
  52. package/.medusa/server/src/modules/erp-event/migrations/Migration20250608221239.js +15 -0
  53. package/.medusa/server/src/modules/erp-event/models/erp-event.js +11 -0
  54. package/.medusa/server/src/modules/erp-event/service.js +10 -0
  55. package/.medusa/server/src/modules/extended-product/index.js +13 -0
  56. package/.medusa/server/src/modules/extended-product/migrations/Migration20250620030100.js +36 -0
  57. package/.medusa/server/src/modules/extended-product/migrations/Migration20250716041546.js +14 -0
  58. package/.medusa/server/src/modules/extended-product/models/extended-product.js +176 -0
  59. package/.medusa/server/src/modules/extended-product/service.js +13 -0
  60. package/.medusa/server/src/modules/extended-variant/index.js +13 -0
  61. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030335.js +32 -0
  62. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030522.js +20 -0
  63. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629220100.js +42 -0
  64. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629223425.js +14 -0
  65. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250704064831.js +14 -0
  66. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250716121609.js +14 -0
  67. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250725104852.js +14 -0
  68. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250726232339.js +14 -0
  69. package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +377 -0
  70. package/.medusa/server/src/modules/extended-variant/service.js +35 -0
  71. package/.medusa/server/src/modules/party-master/index.js +13 -0
  72. package/.medusa/server/src/modules/party-master/migrations/Migration20250604104235.js +16 -0
  73. package/.medusa/server/src/modules/party-master/migrations/Migration20250604115453.js +16 -0
  74. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120348.js +16 -0
  75. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120701.js +14 -0
  76. package/.medusa/server/src/modules/party-master/migrations/Migration20250608220924.js +16 -0
  77. package/.medusa/server/src/modules/party-master/migrations/Migration20250612225738.js +20 -0
  78. package/.medusa/server/src/modules/party-master/migrations/Migration20250612231031.js +16 -0
  79. package/.medusa/server/src/modules/party-master/migrations/Migration20250708123734.js +14 -0
  80. package/.medusa/server/src/modules/party-master/models/party-master.js +61 -0
  81. package/.medusa/server/src/modules/party-master/service.js +10 -0
  82. package/.medusa/server/src/modules/raw-master/index.js +13 -0
  83. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190057.js +16 -0
  84. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190322.js +14 -0
  85. package/.medusa/server/src/modules/raw-master/models/raw-master.js +17 -0
  86. package/.medusa/server/src/modules/raw-master/service.js +10 -0
  87. package/.medusa/server/src/modules/shape-master/index.js +13 -0
  88. package/.medusa/server/src/modules/shape-master/migrations/Migration20250509174455.js +16 -0
  89. package/.medusa/server/src/modules/shape-master/models/shape-master.js +13 -0
  90. package/.medusa/server/src/modules/shape-master/service.js +10 -0
  91. package/.medusa/server/src/modules/shipping-info-master/index.js +13 -0
  92. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713113247.js +17 -0
  93. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713121440.js +16 -0
  94. package/.medusa/server/src/modules/shipping-info-master/models/shipping-info-master.js +22 -0
  95. package/.medusa/server/src/modules/shipping-info-master/service.js +10 -0
  96. package/.medusa/server/src/modules/sub-category-master/index.js +13 -0
  97. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250513115356.js +15 -0
  98. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250519180538.js +14 -0
  99. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250531010409.js +14 -0
  100. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025135.js +16 -0
  101. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025307.js +22 -0
  102. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730032130.js +14 -0
  103. package/.medusa/server/src/modules/sub-category-master/models/sub-category-master.js +18 -0
  104. package/.medusa/server/src/modules/sub-category-master/service.js +10 -0
  105. package/.medusa/server/src/subscribers/capture-payment.js +36 -0
  106. package/.medusa/server/src/subscribers/category-group-master.js +121 -0
  107. package/.medusa/server/src/subscribers/category-master.js +133 -0
  108. package/.medusa/server/src/subscribers/collection-master.js +119 -0
  109. package/.medusa/server/src/subscribers/create-customer.js +67 -0
  110. package/.medusa/server/src/subscribers/mark-inward.js +77 -0
  111. package/.medusa/server/src/subscribers/party-master-location.js +126 -0
  112. package/.medusa/server/src/subscribers/party-master.js +247 -0
  113. package/.medusa/server/src/subscribers/product-update.js +58 -0
  114. package/.medusa/server/src/subscribers/shipping-info-master.js +136 -0
  115. package/.medusa/server/src/subscribers/sub-category-master.js +129 -0
  116. package/.medusa/server/src/utils/address-formatter.js +60 -0
  117. package/.medusa/server/src/utils/phone-mapper.js +28 -0
  118. package/.medusa/server/src/utils/state-helper.js +72 -0
  119. package/.medusa/server/src/workflows/add-to-cart/index.js +19 -0
  120. package/.medusa/server/src/workflows/add-to-cart/steps/get-variant-prices.js +103 -0
  121. package/.medusa/server/src/workflows/add-to-cart/steps/index.js +18 -0
  122. package/.medusa/server/src/workflows/add-to-cart/workflows/add-custom-to-cart.js +68 -0
  123. package/.medusa/server/src/workflows/add-to-cart/workflows/index.js +18 -0
  124. package/.medusa/server/src/workflows/category-group-master/index.js +58 -0
  125. package/.medusa/server/src/workflows/category-group-master/steps/create-category-group.js +20 -0
  126. package/.medusa/server/src/workflows/category-group-master/steps/delete-category-group.js +23 -0
  127. package/.medusa/server/src/workflows/category-group-master/steps/fetch-category-master.js +70 -0
  128. package/.medusa/server/src/workflows/category-group-master/steps/update-category-group.js +28 -0
  129. package/.medusa/server/src/workflows/category-master/index.js +58 -0
  130. package/.medusa/server/src/workflows/category-master/steps/create-category.js +24 -0
  131. package/.medusa/server/src/workflows/category-master/steps/delete-category.js +23 -0
  132. package/.medusa/server/src/workflows/category-master/steps/fetch-category-master.js +70 -0
  133. package/.medusa/server/src/workflows/category-master/steps/update-category.js +31 -0
  134. package/.medusa/server/src/workflows/collection-group-master/index.js +37 -0
  135. package/.medusa/server/src/workflows/collection-group-master/steps/create-category.js +49 -0
  136. package/.medusa/server/src/workflows/collection-group-master/steps/create-collection-group.js +19 -0
  137. package/.medusa/server/src/workflows/collection-group-master/steps/delete-collection-group.js +23 -0
  138. package/.medusa/server/src/workflows/collection-group-master/steps/fetch-collection-grp-master.js +70 -0
  139. package/.medusa/server/src/workflows/collection-group-master/steps/update-collection-group.js +27 -0
  140. package/.medusa/server/src/workflows/collection-master/index.js +68 -0
  141. package/.medusa/server/src/workflows/collection-master/steps/create-category.js +59 -0
  142. package/.medusa/server/src/workflows/collection-master/steps/create-collection.js +23 -0
  143. package/.medusa/server/src/workflows/collection-master/steps/delete-collection.js +22 -0
  144. package/.medusa/server/src/workflows/collection-master/steps/fetch-collection-master.js +70 -0
  145. package/.medusa/server/src/workflows/collection-master/steps/update-collection.js +32 -0
  146. package/.medusa/server/src/workflows/create-extended-product-from-product/index.js +96 -0
  147. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-extended-product.js +18 -0
  148. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-collection-lines.js +25 -0
  149. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-detail-lines.js +25 -0
  150. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-exploration-lines.js +25 -0
  151. package/.medusa/server/src/workflows/create-extended-variant-from-variant/index.js +84 -0
  152. package/.medusa/server/src/workflows/create-extended-variant-from-variant/steps/create-extended-variant.js +18 -0
  153. package/.medusa/server/src/workflows/create-extended-variant-from-variant/steps/create-style-detail-lines.js +25 -0
  154. package/.medusa/server/src/workflows/create-or-update-product-options/index.js +25 -0
  155. package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +28 -0
  156. package/.medusa/server/src/workflows/custom-prices/index.js +19 -0
  157. package/.medusa/server/src/workflows/custom-prices/steps/get-variant-prices.js +97 -0
  158. package/.medusa/server/src/workflows/custom-prices/steps/index.js +18 -0
  159. package/.medusa/server/src/workflows/custom-prices/workflows/fetch-custom-price.js +40 -0
  160. package/.medusa/server/src/workflows/custom-prices/workflows/index.js +18 -0
  161. package/.medusa/server/src/workflows/discount-master/index.js +19 -0
  162. package/.medusa/server/src/workflows/discount-master/steps/create-discount-detail.js +17 -0
  163. package/.medusa/server/src/workflows/discount-master/steps/create-discount.js +17 -0
  164. package/.medusa/server/src/workflows/discount-master/steps/index.js +20 -0
  165. package/.medusa/server/src/workflows/discount-master/steps/update-discount-with-details.js +14 -0
  166. package/.medusa/server/src/workflows/discount-master/steps/update-discount.js +40 -0
  167. package/.medusa/server/src/workflows/discount-master/types/index.js +3 -0
  168. package/.medusa/server/src/workflows/discount-master/workflows/create-discount.js +47 -0
  169. package/.medusa/server/src/workflows/discount-master/workflows/index.js +19 -0
  170. package/.medusa/server/src/workflows/discount-master/workflows/update-discount.js +23 -0
  171. package/.medusa/server/src/workflows/erp-event/index.js +10 -0
  172. package/.medusa/server/src/workflows/erp-event/steps/create-erp-event.js +18 -0
  173. package/.medusa/server/src/workflows/helpers/product-helper.js +584 -11
  174. package/.medusa/server/src/workflows/hooks/product-created.js +16 -0
  175. package/.medusa/server/src/workflows/hooks/product-updated.js +26 -0
  176. package/.medusa/server/src/workflows/hooks/variant-created.js +16 -0
  177. package/.medusa/server/src/workflows/hooks/variant-updated.js +16 -0
  178. package/.medusa/server/src/workflows/index.js +20 -0
  179. package/.medusa/server/src/workflows/inward-master/helper/index.js +373 -0
  180. package/.medusa/server/src/workflows/inward-master/index.js +19 -0
  181. package/.medusa/server/src/workflows/inward-master/steps/create-inward-detail-lines.js +19 -0
  182. package/.medusa/server/src/workflows/inward-master/steps/create-inward-exploration-lines.js +20 -0
  183. package/.medusa/server/src/workflows/inward-master/steps/create-inward-extra-charges-lines.js +20 -0
  184. package/.medusa/server/src/workflows/inward-master/steps/create-inward.js +21 -0
  185. package/.medusa/server/src/workflows/inward-master/steps/delete-inward-detail-lines.js +16 -0
  186. package/.medusa/server/src/workflows/inward-master/steps/delete-inward-exploration-lines.js +16 -0
  187. package/.medusa/server/src/workflows/inward-master/steps/delete-inward-extra-charges-lines.js +16 -0
  188. package/.medusa/server/src/workflows/inward-master/steps/delete-inward.js +20 -0
  189. package/.medusa/server/src/workflows/inward-master/steps/fetch-inward-master.js +70 -0
  190. package/.medusa/server/src/workflows/inward-master/steps/index.js +29 -0
  191. package/.medusa/server/src/workflows/inward-master/steps/update-instock.js +37 -0
  192. package/.medusa/server/src/workflows/inward-master/steps/update-inward.js +44 -0
  193. package/.medusa/server/src/workflows/inward-master/steps/update-variant-manage-inventory.js +36 -0
  194. package/.medusa/server/src/workflows/inward-master/types/index.js +3 -0
  195. package/.medusa/server/src/workflows/inward-master/workflows/create-inward.js +209 -0
  196. package/.medusa/server/src/workflows/inward-master/workflows/delete-inward.js +102 -0
  197. package/.medusa/server/src/workflows/inward-master/workflows/index.js +21 -0
  198. package/.medusa/server/src/workflows/inward-master/workflows/update-instock.js +102 -0
  199. package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +37 -0
  200. package/.medusa/server/src/workflows/orders/index.js +18 -0
  201. package/.medusa/server/src/workflows/orders/steps/index.js +18 -0
  202. package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +32 -0
  203. package/.medusa/server/src/workflows/orders/utils/order-helper.js +77 -0
  204. package/.medusa/server/src/workflows/orders/workflows/index.js +18 -0
  205. package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +42 -0
  206. package/.medusa/server/src/workflows/party-master/helpers/index.js +9 -0
  207. package/.medusa/server/src/workflows/party-master/index.js +19 -0
  208. package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +33 -0
  209. package/.medusa/server/src/workflows/party-master/steps/create-party.js +73 -0
  210. package/.medusa/server/src/workflows/party-master/steps/delete-party.js +23 -0
  211. package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +70 -0
  212. package/.medusa/server/src/workflows/party-master/steps/index.js +23 -0
  213. package/.medusa/server/src/workflows/party-master/steps/update-party-master-with-field.js +15 -0
  214. package/.medusa/server/src/workflows/party-master/steps/update-party.js +80 -0
  215. package/.medusa/server/src/workflows/party-master/workflows/create-customer-erp.js +11 -0
  216. package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +155 -0
  217. package/.medusa/server/src/workflows/party-master/workflows/create-party-workflow.js +13 -0
  218. package/.medusa/server/src/workflows/party-master/workflows/index.js +21 -0
  219. package/.medusa/server/src/workflows/party-master/workflows/update-party-master-with-field.js +11 -0
  220. package/.medusa/server/src/workflows/party-style-master/index.js +19 -0
  221. package/.medusa/server/src/workflows/party-style-master/steps/delete-party-style-master.js +40 -0
  222. package/.medusa/server/src/workflows/party-style-master/steps/fetch-party-styles.js +70 -0
  223. package/.medusa/server/src/workflows/party-style-master/steps/index.js +20 -0
  224. package/.medusa/server/src/workflows/party-style-master/steps/update-party-style-master.js +40 -0
  225. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +238 -0
  226. package/.medusa/server/src/workflows/party-style-master/types/index.js +3 -0
  227. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +388 -0
  228. package/.medusa/server/src/workflows/party-style-master/workflows/delete-party-style-master.js +98 -0
  229. package/.medusa/server/src/workflows/party-style-master/workflows/index.js +19 -0
  230. package/.medusa/server/src/workflows/party-style-master/workflows/update-party-style-master.js +26 -0
  231. package/.medusa/server/src/workflows/raw-master/index.js +30 -0
  232. package/.medusa/server/src/workflows/raw-master/steps/create-raw.js +24 -0
  233. package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +23 -0
  234. package/.medusa/server/src/workflows/raw-master/steps/fetch-raw-master.js +70 -0
  235. package/.medusa/server/src/workflows/raw-master/steps/update-raw.js +34 -0
  236. package/.medusa/server/src/workflows/shape-master/index.js +30 -0
  237. package/.medusa/server/src/workflows/shape-master/steps/create-shape.js +20 -0
  238. package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +23 -0
  239. package/.medusa/server/src/workflows/shape-master/steps/fetch-shape-master.js +70 -0
  240. package/.medusa/server/src/workflows/shape-master/steps/update-shape.js +30 -0
  241. package/.medusa/server/src/workflows/shipping-info-master/helper/index.js +23 -0
  242. package/.medusa/server/src/workflows/shipping-info-master/index.js +19 -0
  243. package/.medusa/server/src/workflows/shipping-info-master/steps/create-shipping-info-erp.js +10 -0
  244. package/.medusa/server/src/workflows/shipping-info-master/steps/create-shipping-info.js +17 -0
  245. package/.medusa/server/src/workflows/shipping-info-master/steps/delete-shipping-info.js +20 -0
  246. package/.medusa/server/src/workflows/shipping-info-master/steps/fetch-shipping-info-master.js +70 -0
  247. package/.medusa/server/src/workflows/shipping-info-master/steps/index.js +22 -0
  248. package/.medusa/server/src/workflows/shipping-info-master/steps/update-shipping-info.js +36 -0
  249. package/.medusa/server/src/workflows/shipping-info-master/types/index.js +3 -0
  250. package/.medusa/server/src/workflows/shipping-info-master/workflows/create-shipping-info.js +24 -0
  251. package/.medusa/server/src/workflows/shipping-info-master/workflows/delete-shipping-info.js +28 -0
  252. package/.medusa/server/src/workflows/shipping-info-master/workflows/index.js +20 -0
  253. package/.medusa/server/src/workflows/shipping-info-master/workflows/update-shipping-info.js +22 -0
  254. package/.medusa/server/src/workflows/style-master/index.js +19 -0
  255. package/.medusa/server/src/workflows/style-master/steps/delete-style-master.js +38 -0
  256. package/.medusa/server/src/workflows/style-master/steps/fetch-styles.js +70 -0
  257. package/.medusa/server/src/workflows/style-master/steps/index.js +19 -0
  258. package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master.js +329 -0
  259. package/.medusa/server/src/workflows/style-master/workflows/delete-style-master.js +24 -0
  260. package/.medusa/server/src/workflows/style-master/workflows/index.js +19 -0
  261. package/.medusa/server/src/workflows/sub-category-master/index.js +61 -0
  262. package/.medusa/server/src/workflows/sub-category-master/steps/create-category.js +62 -0
  263. package/.medusa/server/src/workflows/sub-category-master/steps/create-sub-category.js +24 -0
  264. package/.medusa/server/src/workflows/sub-category-master/steps/delete-sub-category.js +23 -0
  265. package/.medusa/server/src/workflows/sub-category-master/steps/fetch-category-master.js +70 -0
  266. package/.medusa/server/src/workflows/sub-category-master/steps/update-sub-category.js +33 -0
  267. package/.medusa/server/src/workflows/types/common.js +21 -0
  268. package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +48 -0
  269. package/.medusa/server/src/workflows/update-extended-product-from-product/steps/update-extended-product-from-product.js +56 -0
  270. package/.medusa/server/src/workflows/update-extended-product-from-product/steps/update-extended-product-with-field.js +15 -0
  271. package/.medusa/server/src/workflows/update-extended-variant-from-variant/index.js +19 -0
  272. package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/index.js +20 -0
  273. package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-batch.js +21 -0
  274. package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-from-variant.js +55 -0
  275. package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-with-field.js +15 -0
  276. package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/index.js +19 -0
  277. package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-from-variant.js +58 -0
  278. package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +45 -0
  279. package/package.json +6 -2
  280. package/.medusa/server/src/api/admin/plugin/route.js +0 -7
  281. package/.medusa/server/src/api/store/plugin/route.js +0 -7
  282. package/.medusa/server/src/workflows/create-or-update-style-master/index.js +0 -228
  283. package/.medusa/server/src/workflows/create-or-update-style-master/steps/index.js +0 -18
@@ -1,22 +1,595 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.genderMapper = exports.toKebabCase = void 0;
3
+ exports.mergeProductOptions = exports.createProductOptionsForPartyStyleId = exports.createProductOptionsStepFromData = exports.getPartyStyleExplorationLines = exports.getPartyStyleDetailLines = exports.getStyleCollectionLines = exports.getStyleExplorationLines = exports.getStyleDetailLines = exports.getExtendedVariantData = exports.getExtendedProductData = exports.getBaseMetalDetails = exports.calculateStyleCostsAndAmounts = exports.toKebabCase = void 0;
4
+ const common_1 = require("../types/common");
4
5
  const toKebabCase = (strings) => {
5
6
  return strings
7
+ .filter(Boolean)
6
8
  .join("-")
7
9
  .toLowerCase()
8
10
  .replace(/\s+/g, "-") // Replace spaces with hyphens
9
- .replace(/[^a-z0-9-]/g, ""); // Remove non-alphanumeric characters except hyphens
11
+ .replace(/[^a-z0-9-]/g, "")
12
+ .replace(/-{2,}/g, "-");
10
13
  };
11
14
  exports.toKebabCase = toKebabCase;
12
- const genderMapper = (gender) => {
13
- const genderMap = {
14
- MN: "Men",
15
- WN: "Women",
16
- UN: "Unisex",
17
- KD: "Kids",
15
+ const calculateStyleCostsAndAmounts = (styleDetails) => {
16
+ const metalTotalCost = styleDetails
17
+ .filter((detail) => detail.RawType === "Metal")
18
+ .reduce((acc, detail) => acc + detail.CostAmount, 0);
19
+ const diamondTotalCost = styleDetails
20
+ .filter((detail) => detail.RawType === "Diamond")
21
+ .reduce((acc, detail) => acc + detail.CostAmount, 0);
22
+ const stoneTotalCost = styleDetails
23
+ .filter((detail) => detail.RawType === "Stone" || detail.RawType === "Stone(Color Stone)")
24
+ .reduce((acc, detail) => acc + detail.CostAmount, 0);
25
+ const cpfTotalCost = styleDetails
26
+ .filter((detail) => detail.RawType === "Metal")
27
+ .reduce((acc, detail) => acc + detail.CPFCostAmt, 0);
28
+ const metalTotalAmount = styleDetails
29
+ .filter((detail) => detail.RawType === "Metal")
30
+ .reduce((acc, detail) => acc + detail.Amount, 0);
31
+ const diamondTotalAmount = styleDetails
32
+ .filter((detail) => detail.RawType === "Diamond")
33
+ .reduce((acc, detail) => acc + detail.Amount, 0);
34
+ const stoneTotalAmount = styleDetails
35
+ .filter((detail) => detail.RawType === "Stone" || detail.RawType === "Stone(Color Stone)")
36
+ .reduce((acc, detail) => acc + detail.Amount, 0);
37
+ const cpfTotalAmount = styleDetails
38
+ .filter((detail) => detail.RawType === "Metal")
39
+ .reduce((acc, detail) => acc + detail.CPFAmt, 0);
40
+ return {
41
+ metal_total_cost: metalTotalCost,
42
+ diamond_total_cost: diamondTotalCost,
43
+ stone_total_cost: stoneTotalCost,
44
+ cpf_total_cost: cpfTotalCost,
45
+ metal_total_amount: metalTotalAmount,
46
+ diamond_total_amount: diamondTotalAmount,
47
+ stone_total_amount: stoneTotalAmount,
48
+ cpf_total_amount: cpfTotalAmount,
18
49
  };
19
- return genderMap[gender] || "Unisex";
20
50
  };
21
- exports.genderMapper = genderMapper;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hlbHBlcnMvcHJvZHVjdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQU8sTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFpQixFQUFVLEVBQUU7SUFDdkQsT0FBTyxPQUFPO1NBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNULFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsOEJBQThCO1NBQ25ELE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxvREFBb0Q7QUFDckYsQ0FBQyxDQUFDO0FBTlcsUUFBQSxXQUFXLGVBTXRCO0FBRUssTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFjLEVBQVUsRUFBRTtJQUNyRCxNQUFNLFNBQVMsR0FBMkI7UUFDeEMsRUFBRSxFQUFFLEtBQUs7UUFDVCxFQUFFLEVBQUUsT0FBTztRQUNYLEVBQUUsRUFBRSxRQUFRO1FBQ1osRUFBRSxFQUFFLE1BQU07S0FDWCxDQUFDO0lBQ0YsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQVJXLFFBQUEsWUFBWSxnQkFRdkIifQ==
51
+ exports.calculateStyleCostsAndAmounts = calculateStyleCostsAndAmounts;
52
+ const getBaseMetalDetails = (styleDetails) => {
53
+ const baseMetalDetail = styleDetails.find((detail) => detail.RawType === "Metal" && detail.IsBase);
54
+ return {
55
+ baseMetal: baseMetalDetail?.RawCode || "",
56
+ baseMetalPurity: baseMetalDetail?.QlyCode || "",
57
+ baseMetalColor: baseMetalDetail?.ToneCode || "",
58
+ };
59
+ };
60
+ exports.getBaseMetalDetails = getBaseMetalDetails;
61
+ const getExtendedProductData = (styleData, baseMetalDetails, styleCalculations) => {
62
+ return {
63
+ style_id: styleData.StyleId,
64
+ style_date: styleData.StyleDate,
65
+ style_code: styleData.StyleCode,
66
+ style_alias_no: styleData.StyleAliasNo,
67
+ grp_group_no: styleData.GrpGroupNo,
68
+ category_group_name: styleData.CategoryGroupName,
69
+ category_group_code: styleData.CategoryGroupCode,
70
+ grp_no: styleData.GrpNo,
71
+ category: styleData.Category || "",
72
+ category_code: styleData.CategoryCode,
73
+ sub_itm_no: styleData.SubItmNo,
74
+ sub_category: styleData.SubCategory || "",
75
+ sub_category_code: styleData.SubCategoryCode,
76
+ manufacturer: styleData.Manufacturer || "",
77
+ manufacturer_no: styleData.ManufacturerNo || "",
78
+ make_type_no: styleData.MakeTypeNo,
79
+ make_type: styleData.MakeType || "",
80
+ make_type_code: styleData.MakeTypeCode,
81
+ stock_type_no: styleData.StockTypeNo,
82
+ stock_type: styleData.StockType || "",
83
+ stock_type_code: styleData.StockTypeCode,
84
+ item_size_id: styleData.ItemSizeId,
85
+ item_size: styleData.ItemSize || "",
86
+ item_size_name: styleData.ItemSizeName,
87
+ brand_no: styleData.BrandNo,
88
+ brand: styleData.Brand || "",
89
+ brand_name: styleData.BrandName,
90
+ gender_no: styleData.GenderNo,
91
+ gender: (0, common_1.genderMapper)(styleData.Gender),
92
+ gender_name: styleData.GenderName,
93
+ shape_code: styleData.StyleMstDetail.find((detail) => detail.IsCenterStone && detail.IsBase)?.ShapeCode || "",
94
+ is_complete: styleData.IsComplete || false,
95
+ restricted: styleData.Restricted || false,
96
+ currency: styleData.Currency || "INR",
97
+ rate_chart: styleData.RateChart || "",
98
+ discount_markup: styleData.DiscountMarkup || "",
99
+ cost: styleData.Cost || 0,
100
+ mrp: styleData.Mrp || 0,
101
+ hsn_code: styleData.HSN || "",
102
+ gross_weight: styleData.GrossWt || 0,
103
+ net_weight: styleData.NetWt || 0,
104
+ wax_weight: styleData.WaxWt || 0,
105
+ model_weight: styleData.ModelWt || 0,
106
+ metal: baseMetalDetails.baseMetal,
107
+ metal_purity: baseMetalDetails.baseMetalPurity,
108
+ metal_color: baseMetalDetails.baseMetalColor,
109
+ total_diamond_pcs: styleData.TotDiamondPcs || 0,
110
+ total_diamond_weight: styleData.TotDiamondWt || 0,
111
+ total_client_diamond_pcs: styleData.TotClientDiamondPcs || 0,
112
+ total_client_diamond_weight: styleData.TotClientDiamondWt || 0,
113
+ total_stone_pcs: styleData.TotStonePcs || 0,
114
+ total_stone_weight: styleData.TotStoneWt || 0,
115
+ total_cz_pcs: styleData.TotCzPcs || 0,
116
+ total_cz_weight: styleData.TotCzWt || 0,
117
+ web_description: styleData.WebDescription || "",
118
+ remarks: styleData.Remarks || "",
119
+ customer_remarks: styleData.CustomerRemarks || "",
120
+ special_remarks: styleData.SpecialRemarks || "",
121
+ metal_total_cost: styleCalculations.metal_total_cost,
122
+ diamond_total_cost: styleCalculations.diamond_total_cost,
123
+ stone_total_cost: styleCalculations.stone_total_cost,
124
+ cpf_total_cost: styleCalculations.cpf_total_cost,
125
+ metal_total_amount: styleCalculations.metal_total_amount,
126
+ diamond_total_amount: styleCalculations.diamond_total_amount,
127
+ stone_total_amount: styleCalculations.stone_total_amount,
128
+ cpf_total_amount: styleCalculations.cpf_total_amount,
129
+ };
130
+ };
131
+ exports.getExtendedProductData = getExtendedProductData;
132
+ const getExtendedVariantData = (styleData, baseMetalDetails, styleCalculations, salesChannelId) => {
133
+ return {
134
+ images: [],
135
+ thumbnail: "",
136
+ party_style_id: styleData.PartyStyleId,
137
+ party_style_date: styleData.PartyStyleDate,
138
+ party_style_code: styleData.PartyStyleCode,
139
+ party_style_alias_no: styleData.PartyStyleAliasNo,
140
+ party_style_sku_no: styleData.PartyStyleSKUNo,
141
+ style_id: styleData.StyleId,
142
+ style_code: styleData.StyleCode,
143
+ grp_group_no: styleData.GrpGroupNo,
144
+ category_group_name: styleData.CategoryGroupName,
145
+ category_group_code: styleData.CategoryGroupCode,
146
+ grp_no: styleData.GrpNo,
147
+ category: styleData.Category || "",
148
+ category_code: styleData.CategoryCode,
149
+ sub_itm_no: styleData.SubItmNo,
150
+ sub_category: styleData.SubCategory || "",
151
+ sub_category_code: styleData.SubCategoryCode,
152
+ manufacturer: styleData.Manufacturer || "",
153
+ manufacturer_no: styleData.ManufacturerNo || "",
154
+ make_type: styleData.MakeType || "",
155
+ make_type_no: styleData.MakeTypeNo,
156
+ make_type_code: styleData.MakeTypeCode,
157
+ stock_type_no: styleData.StockTypeNo,
158
+ stock_type: styleData.StockType || "",
159
+ stock_type_code: styleData.StockTypeCode,
160
+ item_size_id: styleData.ItemSizeId,
161
+ item_size: styleData.ItemSize || "",
162
+ item_size_name: styleData.ItemSizeName,
163
+ brand_no: styleData.BrandNo,
164
+ brand: styleData.Brand || "",
165
+ brand_name: styleData.BrandName || "",
166
+ gender_no: styleData.GenderNo,
167
+ gender: (0, common_1.genderMapper)(styleData.Gender),
168
+ gender_name: styleData.GenderName,
169
+ shape_code: styleData.PartyStyleMstDetail.find((detail) => detail.IsCenterStone && detail.IsBase)?.ShapeCode || "",
170
+ is_complete: styleData.IsComplete || false,
171
+ restricted: styleData.Restricted || false,
172
+ currency: styleData.Currency || "INR",
173
+ rate_chart: styleData.RateChart || "",
174
+ discount_markup: styleData.DiscountMarkup || "",
175
+ cost: styleData.Cost || 0,
176
+ mrp: styleData.Mrp || 0,
177
+ hsn_code: styleData.HSN || "",
178
+ gross_weight: styleData.GrossWt || 0,
179
+ net_weight: styleData.NetWt || 0,
180
+ wax_weight: styleData.WaxWt || 0,
181
+ model_weight: styleData.ModelWt || 0,
182
+ metal: baseMetalDetails.baseMetal,
183
+ metal_purity: baseMetalDetails.baseMetalPurity,
184
+ metal_color: baseMetalDetails.baseMetalColor,
185
+ total_diamond_pcs: styleData.TotDiamondPcs || 0,
186
+ total_diamond_weight: styleData.TotDiamondWt || 0,
187
+ total_client_diamond_pcs: styleData.TotClientDiamondPcs || 0,
188
+ total_client_diamond_weight: styleData.TotClientDiamondWt || 0,
189
+ total_stone_pcs: styleData.TotStonePcs || 0,
190
+ total_stone_weight: styleData.TotStoneWt || 0,
191
+ total_cz_pcs: styleData.TotCzPcs || 0,
192
+ total_cz_weight: styleData.TotCzWt || 0,
193
+ web_description: styleData.WebDescription || "",
194
+ remarks: styleData.Remarks || "",
195
+ customer_remarks: styleData.CustomerRemarks || "",
196
+ special_remarks: styleData.SpecialRemarks || "",
197
+ metal_total_cost: styleCalculations.metal_total_cost,
198
+ diamond_total_cost: styleCalculations.diamond_total_cost,
199
+ stone_total_cost: styleCalculations.stone_total_cost,
200
+ cpf_total_cost: styleCalculations.cpf_total_cost,
201
+ metal_total_amount: styleCalculations.metal_total_amount,
202
+ diamond_total_amount: styleCalculations.diamond_total_amount,
203
+ stone_total_amount: styleCalculations.stone_total_amount,
204
+ cpf_total_amount: styleCalculations.cpf_total_amount,
205
+ sales_channels: [salesChannelId],
206
+ is_default: false,
207
+ };
208
+ };
209
+ exports.getExtendedVariantData = getExtendedVariantData;
210
+ const getStyleDetailLines = (data) => {
211
+ return data.map((detail) => {
212
+ return {
213
+ style_id: detail.StyleId,
214
+ style_mst_detail_id: detail.StyleMstDetailId,
215
+ item_id: detail.ItemId,
216
+ item_name: detail.ItemName || "",
217
+ item_code: detail.ItemCode || "",
218
+ raw_type: detail.RawType || "",
219
+ material_group: detail.MaterialGroup || "",
220
+ raw_no: detail.RawNo || 0,
221
+ raw_code: detail.RawCode || "",
222
+ shape_no: detail.ShapeNo || 0,
223
+ shape_code: detail.ShapeCode || "",
224
+ qly_no: detail.QlyNo || 0,
225
+ qly_code: detail.QlyCode || "",
226
+ tone_no: detail.ToneNo || 0,
227
+ tone_code: detail.ToneCode || "",
228
+ description: detail.Description || "",
229
+ size: detail.Size || "",
230
+ size_no: detail.SizeNo || 0,
231
+ size_name: detail.SizeName || "",
232
+ accessories: detail.Accessories || "",
233
+ accessories_id: detail.AccessoriesId || 0,
234
+ accessories_name: detail.AccessoriesName || "",
235
+ setting: detail.Setting || "",
236
+ smd_set_no: detail.SMDSetNo || 0,
237
+ setting_name: detail.SettingName || "",
238
+ is_base: detail.IsBase || false,
239
+ is_center_stone: detail.IsCenterStone || false,
240
+ pieces: detail.Pieces || 0,
241
+ weight: detail.Weight || 0,
242
+ min_weight: detail.MinWeight || 0,
243
+ max_weight: detail.MaxWeight || 0,
244
+ stone_wt: detail.StoneWt || 0,
245
+ default_wt: detail.DefaultWt || 0,
246
+ raw_formula: detail.RawFormula || "",
247
+ cost_rate: detail.CostRate || 0,
248
+ cost_amount: detail.CostAmount || 0,
249
+ hand_cost_rate: detail.HandCostRate || 0,
250
+ hand_cost_amount: detail.HandCostAmount || 0,
251
+ set_cost_rate: detail.SetCostRate || 0,
252
+ set_cost_amount: detail.SetCostAmount || 0,
253
+ loss_cost_per: detail.LossCostPer || 0,
254
+ loss_cost_per_is_fix: detail.LossCostPerIsFix || false,
255
+ loss_cost_weight: detail.LossCostWeight || 0,
256
+ loss_cost_amt: detail.LossCostAmt || 0,
257
+ cpf_cost_rate: detail.CPFCostRate || 0,
258
+ cpf_cost_is_fix: detail.CPFCostIsFix || false,
259
+ cpf_cost_amt: detail.CPFCostAmt || 0,
260
+ rate: detail.Rate || 0,
261
+ amount: detail.Amount || 0,
262
+ hand_rate: detail.HandRate || 0,
263
+ hand_amount: detail.HandAmount || 0,
264
+ set_rate: detail.SetRate || 0,
265
+ set_amount: detail.SetAmount || 0,
266
+ loss_per: detail.LossPer || 0,
267
+ loss_per_is_fix: detail.LossPerIsFix || false,
268
+ loss_weight: detail.LossWeight || 0,
269
+ loss_amt: detail.LossAmt || 0,
270
+ cpf_rate: detail.CPFRate || 0,
271
+ cpf_is_fix: detail.CPFIsFix || false,
272
+ cpf_amt: detail.CPFAmt || 0,
273
+ };
274
+ });
275
+ };
276
+ exports.getStyleDetailLines = getStyleDetailLines;
277
+ const getStyleExplorationLines = (data) => {
278
+ return data.map((detail) => {
279
+ return {
280
+ style_id: detail.StyleId,
281
+ exploration_id: detail.ExplorationId,
282
+ exploration_name: detail.ExplorationName || "",
283
+ exploration_code: detail.ExplorationCode || "",
284
+ exploration_value: detail.ExplorationValue || "",
285
+ };
286
+ });
287
+ };
288
+ exports.getStyleExplorationLines = getStyleExplorationLines;
289
+ const getStyleCollectionLines = (data) => {
290
+ return data.map((detail) => {
291
+ return {
292
+ style_id: detail.StyleId,
293
+ desg_no: detail.DesgNo,
294
+ collection_name: detail.CollectionName || "",
295
+ collection_group_no: detail.CollectionGroupNo,
296
+ collection_group_name: detail.CollectionGroupName || "",
297
+ collection_group_code: detail.CollectionGroupCode || "",
298
+ };
299
+ });
300
+ };
301
+ exports.getStyleCollectionLines = getStyleCollectionLines;
302
+ const getPartyStyleDetailLines = (data) => {
303
+ return data.map((detail) => {
304
+ return {
305
+ party_style_id: detail.PartyStyleId,
306
+ party_style_mst_detail_id: detail.PartyStyleMstDetailId,
307
+ item_code: detail.ItemCode || "",
308
+ item_id: detail.ItemId || 0,
309
+ item_name: detail.ItemName || "",
310
+ raw_type: detail.RawType || "",
311
+ material_group: detail.MaterialGroup || "",
312
+ raw_no: detail.RawNo || 0,
313
+ raw_code: detail.RawCode || "",
314
+ shape_no: detail.ShapeNo || 0,
315
+ shape_code: detail.ShapeCode || "",
316
+ qly_no: detail.QlyNo || 0,
317
+ qly_code: detail.QlyCode || "",
318
+ tone_no: detail.ToneNo || 0,
319
+ tone_code: detail.ToneCode || "",
320
+ description: detail.Description || "",
321
+ size_no: detail.SizeNo || 0,
322
+ size: detail.Size || "",
323
+ size_name: detail.SizeName || "",
324
+ accessories_id: detail.AccessoriesId || 0,
325
+ accessories: detail.Accessories || "",
326
+ accessories_name: detail.AccessoriesName || "",
327
+ smd_set_no: detail.SMDSetNo || 0,
328
+ setting: detail.Setting || "",
329
+ setting_name: detail.SettingName || "",
330
+ is_base: detail.IsBase || false,
331
+ is_center_stone: detail.IsCenterStone || false,
332
+ pieces: detail.Pieces || 0,
333
+ weight: detail.Weight || 0,
334
+ min_weight: detail.MinWeight || 0,
335
+ max_weight: detail.MaxWeight || 0,
336
+ stone_wt: detail.StoneWt || 0,
337
+ default_wt: detail.DefaultWt || 0,
338
+ raw_formula: detail.RawFormula || "",
339
+ cost_rate: detail.CostRate || 0,
340
+ cost_amount: detail.CostAmount || 0,
341
+ hand_cost_rate: detail.HandCostRate || 0,
342
+ hand_cost_amount: detail.HandCostAmount || 0,
343
+ set_cost_rate: detail.SetCostRate || 0,
344
+ set_cost_amount: detail.SetCostAmount || 0,
345
+ loss_cost_per: detail.LossCostPer || 0,
346
+ loss_cost_per_is_fix: detail.LossCostPerIsFix || false,
347
+ loss_cost_weight: detail.LossCostWeight || 0,
348
+ loss_cost_amt: detail.LossCostAmt || 0,
349
+ cpf_cost_rate: detail.CPFCostRate || 0,
350
+ cpf_cost_is_fix: detail.CPFCostIsFix || false,
351
+ cpf_cost_amt: detail.CPFCostAmt || 0,
352
+ rate: detail.Rate || 0,
353
+ amount: detail.Amount || 0,
354
+ hand_rate: detail.HandRate || 0,
355
+ hand_amount: detail.HandAmount || 0,
356
+ set_rate: detail.SetRate || 0,
357
+ set_amount: detail.SetAmount || 0,
358
+ loss_per: detail.LossPer || 0,
359
+ loss_per_is_fix: detail.LossPerIsFix || false,
360
+ loss_weight: detail.LossWeight || 0,
361
+ loss_amt: detail.LossAmt || 0,
362
+ cpf_rate: detail.CPFRate || 0,
363
+ cpf_is_fix: detail.CPFIsFix || false,
364
+ cpf_amt: detail.CPFAmt || 0,
365
+ };
366
+ });
367
+ };
368
+ exports.getPartyStyleDetailLines = getPartyStyleDetailLines;
369
+ const getPartyStyleExplorationLines = (data) => {
370
+ return data.map((detail) => {
371
+ return {
372
+ party_style_id: detail.PartyStyleId,
373
+ exploration_id: detail.ExplorationId,
374
+ exploration_name: detail.ExplorationName || "",
375
+ exploration_code: detail.ExplorationCode || "",
376
+ exploration_value: detail.ExplorationValue || "",
377
+ };
378
+ });
379
+ };
380
+ exports.getPartyStyleExplorationLines = getPartyStyleExplorationLines;
381
+ const createProductOptionsStepFromData = (partyStyles) => {
382
+ // Group all styles by StyleId
383
+ const stylesByStyleId = new Map();
384
+ partyStyles?.forEach((style) => {
385
+ const styleId = String(style.StyleId);
386
+ if (!stylesByStyleId.has(styleId)) {
387
+ stylesByStyleId.set(styleId, []);
388
+ }
389
+ stylesByStyleId.get(styleId).push(style);
390
+ });
391
+ // Process each style group
392
+ return Array.from(stylesByStyleId.entries()).map(([styleId, styles]) => {
393
+ // Create sets to store unique values for each option type
394
+ const options = {
395
+ metals: new Set(),
396
+ metalColors: new Set(),
397
+ diamondQualities: new Set(),
398
+ sizes: new Set(),
399
+ };
400
+ // Track if all styles in the group have each option type
401
+ const optionAvailability = {
402
+ metals: true,
403
+ metalColors: true,
404
+ diamondQualities: true,
405
+ sizes: true,
406
+ };
407
+ // First, check option availability across all styles in this group
408
+ styles.forEach((style) => {
409
+ // Check Size availability
410
+ if (!style.ItemSize) {
411
+ optionAvailability.sizes = false;
412
+ }
413
+ // Check other options availability
414
+ let hasMetals = false;
415
+ let hasMetalColors = false;
416
+ let hasDiamondQualities = false;
417
+ style.PartyStyleMstDetail.forEach((detail) => {
418
+ if (detail.RawType === "Metal" && detail.IsBase) {
419
+ hasMetals = true;
420
+ hasMetalColors = true;
421
+ }
422
+ if (detail.RawType === "Diamond") {
423
+ hasDiamondQualities = true;
424
+ }
425
+ });
426
+ if (!hasMetals)
427
+ optionAvailability.metals = false;
428
+ if (!hasMetalColors)
429
+ optionAvailability.metalColors = false;
430
+ if (!hasDiamondQualities)
431
+ optionAvailability.diamondQualities = false;
432
+ });
433
+ // Now gather values only for available options
434
+ styles.forEach((style) => {
435
+ // Only collect size data if all items have it
436
+ if (optionAvailability.sizes && style.ItemSize) {
437
+ options.sizes.add(String(style.ItemSize));
438
+ }
439
+ // Process other options
440
+ style.PartyStyleMstDetail.forEach((detail) => {
441
+ if (optionAvailability.metals &&
442
+ detail.RawType === "Metal" &&
443
+ detail.IsBase) {
444
+ options.metals.add(`${detail.QlyCode}K ${detail.RawCode}`);
445
+ // Map ToneCode to color name if metal colors are available
446
+ if (optionAvailability.metalColors) {
447
+ if (detail.ToneCode === "R")
448
+ options.metalColors.add("Rose");
449
+ else if (detail.ToneCode === "Y")
450
+ options.metalColors.add("Yellow");
451
+ else if (detail.ToneCode === "W")
452
+ options.metalColors.add("White");
453
+ else if (detail.ToneCode === "YRW")
454
+ options.metalColors.add("YELLOW/ROSE/WHITE");
455
+ else if (detail.ToneCode === "YW")
456
+ options.metalColors.add("YELLOW/WHITE");
457
+ else if (detail.ToneCode === "RW")
458
+ options.metalColors.add("ROSE/WHITE");
459
+ else if (detail.ToneCode === "BU")
460
+ options.metalColors.add("BLUE");
461
+ else if (detail.ToneCode === "BL")
462
+ options.metalColors.add("BLACK");
463
+ }
464
+ }
465
+ if (optionAvailability.diamondQualities &&
466
+ detail.RawType === "Diamond" &&
467
+ detail.ToneCode &&
468
+ detail.QlyCode) {
469
+ options.diamondQualities.add(`${detail.ToneCode}/${detail.QlyCode}`);
470
+ }
471
+ });
472
+ });
473
+ const optionsArray = [];
474
+ if (optionAvailability.metals && options.metals.size > 0) {
475
+ optionsArray.push({ title: "Metal", values: Array.from(options.metals) });
476
+ }
477
+ if (optionAvailability.metalColors && options.metalColors.size > 0) {
478
+ optionsArray.push({
479
+ title: "Metal Color",
480
+ values: Array.from(options.metalColors),
481
+ });
482
+ }
483
+ if (optionAvailability.diamondQualities &&
484
+ options.diamondQualities.size > 0) {
485
+ optionsArray.push({
486
+ title: "Diamond Quality",
487
+ values: Array.from(options.diamondQualities),
488
+ });
489
+ }
490
+ if (optionAvailability.sizes && options.sizes.size > 0) {
491
+ optionsArray.push({ title: "Size", values: Array.from(options.sizes) });
492
+ }
493
+ return {
494
+ styleId,
495
+ options: optionsArray,
496
+ };
497
+ });
498
+ };
499
+ exports.createProductOptionsStepFromData = createProductOptionsStepFromData;
500
+ const createProductOptionsForPartyStyleId = (partyStyle, existingProduct) => {
501
+ const options = {
502
+ metals: new Set(),
503
+ metalColors: new Set(),
504
+ diamondQualities: new Set(),
505
+ sizes: new Set(),
506
+ };
507
+ // Size
508
+ if (partyStyle.ItemSize)
509
+ options.sizes.add(String(partyStyle.ItemSize));
510
+ // Track if this style has each option type
511
+ let hasMetalOption = false;
512
+ let hasDiamondOption = false;
513
+ partyStyle.PartyStyleMstDetail.forEach((detail) => {
514
+ if (detail.RawType === "Metal" && detail.IsBase) {
515
+ hasMetalOption = true;
516
+ options.metals.add(`${detail.QlyCode}K ${detail.RawCode}`);
517
+ // Map ToneCode to color name
518
+ if (detail.ToneCode === "R")
519
+ options.metalColors.add("Rose");
520
+ else if (detail.ToneCode === "Y")
521
+ options.metalColors.add("Yellow");
522
+ else if (detail.ToneCode === "W")
523
+ options.metalColors.add("White");
524
+ else if (detail.ToneCode === "YRW")
525
+ options.metalColors.add("YELLOW/ROSE/WHITE");
526
+ else if (detail.ToneCode === "YW")
527
+ options.metalColors.add("YELLOW/WHITE");
528
+ else if (detail.ToneCode === "RW")
529
+ options.metalColors.add("ROSE/WHITE");
530
+ else if (detail.ToneCode === "BU")
531
+ options.metalColors.add("BLUE");
532
+ else if (detail.ToneCode === "BL")
533
+ options.metalColors.add("BLACK");
534
+ }
535
+ if (detail.RawType === "Diamond" && detail.ToneCode && detail.QlyCode) {
536
+ hasDiamondOption = true;
537
+ options.diamondQualities.add(`${detail.ToneCode}/${detail.QlyCode}`);
538
+ }
539
+ });
540
+ // Prepare result object with only options that exist
541
+ const result = {};
542
+ // Only add options if they exist in the data
543
+ if (hasMetalOption &&
544
+ options.metals.size > 0 &&
545
+ existingProduct.options.find((option) => option.title === "Metal")) {
546
+ result["Metal"] = Array.from(options.metals)[0];
547
+ }
548
+ if (hasMetalOption &&
549
+ options.metalColors.size > 0 &&
550
+ existingProduct.options.find((option) => option.title === "Metal Color")) {
551
+ result["Metal Color"] = Array.from(options.metalColors)[0];
552
+ }
553
+ if (hasDiamondOption &&
554
+ options.diamondQualities.size > 0 &&
555
+ existingProduct.options.find((option) => option.title === "Diamond Quality")) {
556
+ result["Diamond Quality"] = Array.from(options.diamondQualities)[0];
557
+ }
558
+ if (partyStyle.ItemSize &&
559
+ options.sizes.size > 0 &&
560
+ existingProduct.options.find((option) => option.title === "Size")) {
561
+ result["Size"] = Array.from(options.sizes)[0];
562
+ }
563
+ return result;
564
+ };
565
+ exports.createProductOptionsForPartyStyleId = createProductOptionsForPartyStyleId;
566
+ const mergeProductOptions = (currentOptions, filteredOptions) => {
567
+ const mergedOptions = [];
568
+ // Create a map of existing options by title, excluding Default
569
+ const existingOptionsMap = new Map(currentOptions
570
+ .filter((opt) => opt.title !== "Default")
571
+ .map((opt) => [opt.title, opt.values.map((v) => v.value)]));
572
+ // Process all options (both existing and new)
573
+ const allOptions = new Map();
574
+ // Add existing options
575
+ for (const [title, values] of existingOptionsMap.entries()) {
576
+ allOptions.set(title, new Set(values));
577
+ }
578
+ // Add new options and merge values
579
+ for (const filteredOpt of filteredOptions) {
580
+ const existingValues = allOptions.get(filteredOpt.title) || new Set();
581
+ // Add new values to the set
582
+ filteredOpt.values.forEach((value) => existingValues.add(value));
583
+ allOptions.set(filteredOpt.title, existingValues);
584
+ }
585
+ // Convert back to the required format
586
+ for (const [title, values] of allOptions.entries()) {
587
+ mergedOptions.push({
588
+ title,
589
+ values: Array.from(values),
590
+ });
591
+ }
592
+ return mergedOptions;
593
+ };
594
+ exports.mergeProductOptions = mergeProductOptions;
595
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hlbHBlcnMvcHJvZHVjdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsNENBQStDO0FBRXhDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBaUIsRUFBVSxFQUFFO0lBQ3ZELE9BQU8sT0FBTztTQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ1QsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyw4QkFBOEI7U0FDbkQsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFSVyxRQUFBLFdBQVcsZUFRdEI7QUFFSyxNQUFNLDZCQUE2QixHQUFHLENBQzNDLFlBQTRELEVBQ3pDLEVBQUU7SUFDckIsTUFBTSxjQUFjLEdBQUcsWUFBWTtTQUNoQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWTtTQUNsQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sY0FBYyxHQUFHLFlBQVk7U0FDaEMsTUFBTSxDQUNMLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLG9CQUFvQixDQUN4RTtTQUNBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sWUFBWSxHQUFHLFlBQVk7U0FDOUIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztTQUM5QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV2RCxNQUFNLGdCQUFnQixHQUFHLFlBQVk7U0FDbEMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztTQUM5QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRCxNQUFNLGtCQUFrQixHQUFHLFlBQVk7U0FDcEMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztTQUNoRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRCxNQUFNLGdCQUFnQixHQUFHLFlBQVk7U0FDbEMsTUFBTSxDQUNMLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLG9CQUFvQixDQUN4RTtTQUNBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5ELE1BQU0sY0FBYyxHQUFHLFlBQVk7U0FDaEMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztTQUM5QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRCxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsY0FBYztRQUNoQyxrQkFBa0IsRUFBRSxnQkFBZ0I7UUFDcEMsZ0JBQWdCLEVBQUUsY0FBYztRQUNoQyxjQUFjLEVBQUUsWUFBWTtRQUM1QixrQkFBa0IsRUFBRSxnQkFBZ0I7UUFDcEMsb0JBQW9CLEVBQUUsa0JBQWtCO1FBQ3hDLGtCQUFrQixFQUFFLGdCQUFnQjtRQUNwQyxnQkFBZ0IsRUFBRSxjQUFjO0tBQ2pDLENBQUM7QUFDSixDQUFDLENBQUM7QUFuRFcsUUFBQSw2QkFBNkIsaUNBbUR4QztBQUVLLE1BQU0sbUJBQW1CLEdBQUcsQ0FDakMsWUFBNEQsRUFDNUQsRUFBRTtJQUNGLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQ3ZDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUN4RCxDQUFDO0lBRUYsT0FBTztRQUNMLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxJQUFJLEVBQUU7UUFDekMsZUFBZSxFQUFFLGVBQWUsRUFBRSxPQUFPLElBQUksRUFBRTtRQUMvQyxjQUFjLEVBQUUsZUFBZSxFQUFFLFFBQVEsSUFBSSxFQUFFO0tBQ2hELENBQUM7QUFDSixDQUFDLENBQUM7QUFaVyxRQUFBLG1CQUFtQix1QkFZOUI7QUFFSyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLFNBQTBCLEVBQzFCLGdCQUlDLEVBQ0QsaUJBQW9DLEVBQ3ZCLEVBQUU7SUFDZixPQUFPO1FBQ0wsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzNCLFVBQVUsRUFBRSxTQUFTLENBQUMsU0FBUztRQUMvQixVQUFVLEVBQUUsU0FBUyxDQUFDLFNBQVM7UUFDL0IsY0FBYyxFQUFFLFNBQVMsQ0FBQyxZQUFZO1FBQ3RDLFlBQVksRUFBRSxTQUFTLENBQUMsVUFBVTtRQUNsQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsaUJBQWlCO1FBQ2hELG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxpQkFBaUI7UUFDaEQsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLO1FBQ3ZCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxJQUFJLEVBQUU7UUFDbEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxZQUFZO1FBQ3JDLFVBQVUsRUFBRSxTQUFTLENBQUMsUUFBUTtRQUM5QixZQUFZLEVBQUUsU0FBUyxDQUFDLFdBQVcsSUFBSSxFQUFFO1FBQ3pDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxlQUFlO1FBQzVDLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUU7UUFDMUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUMvQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFVBQVU7UUFDbEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksRUFBRTtRQUNuQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFlBQVk7UUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxXQUFXO1FBQ3BDLFVBQVUsRUFBRSxTQUFTLENBQUMsU0FBUyxJQUFJLEVBQUU7UUFDckMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1FBQ3hDLFlBQVksRUFBRSxTQUFTLENBQUMsVUFBVTtRQUNsQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQ25DLGNBQWMsRUFBRSxTQUFTLENBQUMsWUFBWTtRQUN0QyxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU87UUFDM0IsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUM1QixVQUFVLEVBQUUsU0FBUyxDQUFDLFNBQVM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRO1FBQzdCLE1BQU0sRUFBRSxJQUFBLHFCQUFZLEVBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVU7UUFDakMsVUFBVSxFQUNSLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUMzQixDQUFDLE1BQXlCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FDckUsRUFBRSxTQUFTLElBQUksRUFBRTtRQUNwQixXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVUsSUFBSSxLQUFLO1FBQzFDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxJQUFJLEtBQUs7UUFDekMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksS0FBSztRQUNyQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFNBQVMsSUFBSSxFQUFFO1FBQ3JDLGVBQWUsRUFBRSxTQUFTLENBQUMsY0FBYyxJQUFJLEVBQUU7UUFDL0MsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN6QixHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUU7UUFDN0IsWUFBWSxFQUFFLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUNwQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDO1FBQ2hDLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDaEMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUNwQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsU0FBUztRQUNqQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsZUFBZTtRQUM5QyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsY0FBYztRQUM1QyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsYUFBYSxJQUFJLENBQUM7UUFDL0Msb0JBQW9CLEVBQUUsU0FBUyxDQUFDLFlBQVksSUFBSSxDQUFDO1FBQ2pELHdCQUF3QixFQUFFLFNBQVMsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDO1FBQzVELDJCQUEyQixFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO1FBQzlELGVBQWUsRUFBRSxTQUFTLENBQUMsV0FBVyxJQUFJLENBQUM7UUFDM0Msa0JBQWtCLEVBQUUsU0FBUyxDQUFDLFVBQVUsSUFBSSxDQUFDO1FBQzdDLFlBQVksRUFBRSxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUM7UUFDckMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUN2QyxlQUFlLEVBQUUsU0FBUyxDQUFDLGNBQWMsSUFBSSxFQUFFO1FBQy9DLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxJQUFJLEVBQUU7UUFDaEMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGVBQWUsSUFBSSxFQUFFO1FBQ2pELGVBQWUsRUFBRSxTQUFTLENBQUMsY0FBYyxJQUFJLEVBQUU7UUFDL0MsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCO1FBQ3BELGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLGtCQUFrQjtRQUN4RCxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7UUFDcEQsY0FBYyxFQUFFLGlCQUFpQixDQUFDLGNBQWM7UUFDaEQsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUMsa0JBQWtCO1FBQ3hELG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLG9CQUFvQjtRQUM1RCxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7UUFDeEQsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCO0tBQ3JELENBQUM7QUFDSixDQUFDLENBQUM7QUFoRlcsUUFBQSxzQkFBc0IsMEJBZ0ZqQztBQUVLLE1BQU0sc0JBQXNCLEdBQUcsQ0FDcEMsU0FBK0IsRUFDL0IsZ0JBSUMsRUFDRCxpQkFBb0MsRUFDcEMsY0FBc0IsRUFDdEIsRUFBRTtJQUNGLE9BQU87UUFDTCxNQUFNLEVBQUUsRUFBRTtRQUNWLFNBQVMsRUFBRSxFQUFFO1FBQ2IsY0FBYyxFQUFFLFNBQVMsQ0FBQyxZQUFZO1FBQ3RDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzFDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxpQkFBaUI7UUFDakQsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLGVBQWU7UUFDN0MsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzNCLFVBQVUsRUFBRSxTQUFTLENBQUMsU0FBUztRQUMvQixZQUFZLEVBQUUsU0FBUyxDQUFDLFVBQVU7UUFDbEMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLGlCQUFpQjtRQUNoRCxtQkFBbUIsRUFBRSxTQUFTLENBQUMsaUJBQWlCO1FBQ2hELE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSztRQUN2QixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQ2xDLGFBQWEsRUFBRSxTQUFTLENBQUMsWUFBWTtRQUNyQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFFBQVE7UUFDOUIsWUFBWSxFQUFFLFNBQVMsQ0FBQyxXQUFXLElBQUksRUFBRTtRQUN6QyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsZUFBZTtRQUM1QyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksSUFBSSxFQUFFO1FBQzFDLGVBQWUsRUFBRSxTQUFTLENBQUMsY0FBYyxJQUFJLEVBQUU7UUFDL0MsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksRUFBRTtRQUNuQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFVBQVU7UUFDbEMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxZQUFZO1FBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsV0FBVztRQUNwQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFNBQVMsSUFBSSxFQUFFO1FBQ3JDLGVBQWUsRUFBRSxTQUFTLENBQUMsYUFBYTtRQUN4QyxZQUFZLEVBQUUsU0FBUyxDQUFDLFVBQVU7UUFDbEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksRUFBRTtRQUNuQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFlBQVk7UUFDdEMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzNCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDNUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxTQUFTLElBQUksRUFBRTtRQUNyQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFFBQVE7UUFDN0IsTUFBTSxFQUFFLElBQUEscUJBQVksRUFBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3RDLFdBQVcsRUFBRSxTQUFTLENBQUMsVUFBVTtRQUNqQyxVQUFVLEVBQ1IsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDaEMsQ0FBQyxNQUE4QixFQUFFLEVBQUUsQ0FDakMsTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUN4QyxFQUFFLFNBQVMsSUFBSSxFQUFFO1FBQ3BCLFdBQVcsRUFBRSxTQUFTLENBQUMsVUFBVSxJQUFJLEtBQUs7UUFDMUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLElBQUksS0FBSztRQUN6QyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsSUFBSSxLQUFLO1FBQ3JDLFVBQVUsRUFBRSxTQUFTLENBQUMsU0FBUyxJQUFJLEVBQUU7UUFDckMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUMvQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3pCLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDdkIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRTtRQUM3QixZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDO1FBQ3BDLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDaEMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUNoQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDO1FBQ3BDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTO1FBQ2pDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxlQUFlO1FBQzlDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxjQUFjO1FBQzVDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxhQUFhLElBQUksQ0FBQztRQUMvQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsWUFBWSxJQUFJLENBQUM7UUFDakQsd0JBQXdCLEVBQUUsU0FBUyxDQUFDLG1CQUFtQixJQUFJLENBQUM7UUFDNUQsMkJBQTJCLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixJQUFJLENBQUM7UUFDOUQsZUFBZSxFQUFFLFNBQVMsQ0FBQyxXQUFXLElBQUksQ0FBQztRQUMzQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsVUFBVSxJQUFJLENBQUM7UUFDN0MsWUFBWSxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQztRQUNyQyxlQUFlLEVBQUUsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDO1FBQ3ZDLGVBQWUsRUFBRSxTQUFTLENBQUMsY0FBYyxJQUFJLEVBQUU7UUFDL0MsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRTtRQUNoQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsZUFBZSxJQUFJLEVBQUU7UUFDakQsZUFBZSxFQUFFLFNBQVMsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUMvQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7UUFDcEQsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUMsa0JBQWtCO1FBQ3hELGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLGdCQUFnQjtRQUNwRCxjQUFjLEVBQUUsaUJBQWlCLENBQUMsY0FBYztRQUNoRCxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7UUFDeEQsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUMsb0JBQW9CO1FBQzVELGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLGtCQUFrQjtRQUN4RCxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7UUFDcEQsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDO1FBQ2hDLFVBQVUsRUFBRSxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDLENBQUM7QUF6RlcsUUFBQSxzQkFBc0IsMEJBeUZqQztBQUVLLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUF5QixFQUFFLEVBQUU7SUFDL0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDekIsT0FBTztZQUNMLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTztZQUN4QixtQkFBbUIsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQzVDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUN0QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUU7WUFDaEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM5QixjQUFjLEVBQUUsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQzFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDO1lBQzdCLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUU7WUFDbEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQztZQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDM0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtZQUNoQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQ3JDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMzQixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQ2hDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDckMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN6QyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUU7WUFDOUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDO1lBQ2hDLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDdEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSztZQUMvQixlQUFlLEVBQUUsTUFBTSxDQUFDLGFBQWEsSUFBSSxLQUFLO1lBQzlDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMxQixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7WUFDakMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDcEMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQztZQUMvQixXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ25DLGNBQWMsRUFBRSxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUM7WUFDeEMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxDQUFDO1lBQzVDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUM7WUFDdEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQztZQUMxQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDO1lBQ3RDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1lBQ3RELGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQztZQUM1QyxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDO1lBQ3RDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUM7WUFDdEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksS0FBSztZQUM3QyxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ3BDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMxQixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDO1lBQy9CLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUM7WUFDbkMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDN0IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksS0FBSztZQUM3QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDN0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ3BDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakVXLFFBQUEsbUJBQW1CLHVCQWlFOUI7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsSUFBOEIsRUFBRSxFQUFFO0lBQ3pFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLE9BQU87WUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDeEIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ3BDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRTtZQUM5QyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUU7WUFDOUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEVBQUU7U0FDakQsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBVlcsUUFBQSx3QkFBd0IsNEJBVW5DO0FBRUssTUFBTSx1QkFBdUIsR0FBRyxDQUFDLElBQTZCLEVBQUUsRUFBRTtJQUN2RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixPQUFPO1lBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3hCLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUN0QixlQUFlLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFO1lBQzVDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7WUFDN0MscUJBQXFCLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixJQUFJLEVBQUU7WUFDdkQscUJBQXFCLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixJQUFJLEVBQUU7U0FDeEQsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBWFcsUUFBQSx1QkFBdUIsMkJBV2xDO0FBRUssTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQThCLEVBQUUsRUFBRTtJQUN6RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixPQUFPO1lBQ0wsY0FBYyxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ25DLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7WUFDdkQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtZQUNoQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUU7WUFDaEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM5QixjQUFjLEVBQUUsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQzFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDO1lBQzdCLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUU7WUFDbEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQztZQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDM0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtZQUNoQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDM0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN2QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQ2hDLGNBQWMsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLENBQUM7WUFDekMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNyQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUU7WUFDOUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQztZQUNoQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzdCLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDdEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSztZQUMvQixlQUFlLEVBQUUsTUFBTSxDQUFDLGFBQWEsSUFBSSxLQUFLO1lBQzlDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMxQixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7WUFDakMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDcEMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQztZQUMvQixXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ25DLGNBQWMsRUFBRSxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUM7WUFDeEMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxDQUFDO1lBQzVDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUM7WUFDdEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQztZQUMxQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDO1lBQ3RDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1lBQ3RELGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQztZQUM1QyxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDO1lBQ3RDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUM7WUFDdEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksS0FBSztZQUM3QyxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ3BDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMxQixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDO1lBQy9CLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUM7WUFDbkMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDN0IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksS0FBSztZQUM3QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDN0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ3BDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakVXLFFBQUEsd0JBQXdCLDRCQWlFbkM7QUFFSyxNQUFNLDZCQUE2QixHQUFHLENBQzNDLElBQW1DLEVBQ25DLEVBQUU7SUFDRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixPQUFPO1lBQ0wsY0FBYyxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ25DLGNBQWMsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNwQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUU7WUFDOUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFO1lBQzlDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO1NBQ2pELENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQVpXLFFBQUEsNkJBQTZCLGlDQVl4QztBQUVLLE1BQU0sZ0NBQWdDLEdBQUcsQ0FDOUMsV0FBbUMsRUFDbkMsRUFBRTtJQUNGLDhCQUE4QjtJQUM5QixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUVsRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILDJCQUEyQjtJQUMzQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtRQUNyRSwwREFBMEQ7UUFDMUQsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQVU7WUFDekIsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFVO1lBQzlCLGdCQUFnQixFQUFFLElBQUksR0FBRyxFQUFVO1lBQ25DLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBVTtTQUN6QixDQUFDO1FBRUYseURBQXlEO1FBQ3pELE1BQU0sa0JBQWtCLEdBQUc7WUFDekIsTUFBTSxFQUFFLElBQUk7WUFDWixXQUFXLEVBQUUsSUFBSTtZQUNqQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQztRQUVGLG1FQUFtRTtRQUNuRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLGtCQUFrQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkMsQ0FBQztZQUVELG1DQUFtQztZQUNuQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBRWhDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hELFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNqQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxTQUFTO2dCQUFFLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWM7Z0JBQUUsa0JBQWtCLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUM1RCxJQUFJLENBQUMsbUJBQW1CO2dCQUFFLGtCQUFrQixDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUVILCtDQUErQztRQUMvQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsOENBQThDO1lBQzlDLElBQUksa0JBQWtCLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFFRCx3QkFBd0I7WUFDeEIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMzQyxJQUNFLGtCQUFrQixDQUFDLE1BQU07b0JBQ3pCLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTztvQkFDMUIsTUFBTSxDQUFDLE1BQU0sRUFDYixDQUFDO29CQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFFM0QsMkRBQTJEO29CQUMzRCxJQUFJLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNuQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssR0FBRzs0QkFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzs2QkFDeEQsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLEdBQUc7NEJBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7NkJBQy9ELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxHQUFHOzRCQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUM5RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSzs0QkFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs2QkFDMUMsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUk7NEJBQy9CLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzZCQUNyQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSTs0QkFDL0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7NkJBQ25DLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJOzRCQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzZCQUM5RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSTs0QkFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDdEUsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQ0Usa0JBQWtCLENBQUMsZ0JBQWdCO29CQUNuQyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVM7b0JBQzVCLE1BQU0sQ0FBQyxRQUFRO29CQUNmLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsQ0FBQztvQkFDRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDdkUsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFRSCxNQUFNLFlBQVksR0FBaUIsRUFBRSxDQUFDO1FBRXRDLElBQUksa0JBQWtCLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pELFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELElBQUksa0JBQWtCLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25FLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssRUFBRSxhQUFhO2dCQUNwQixNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3hDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUNFLGtCQUFrQixDQUFDLGdCQUFnQjtZQUNuQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLENBQUMsRUFDakMsQ0FBQztZQUNELFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzthQUM3QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkQsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU87WUFDUCxPQUFPLEVBQUUsWUFBWTtTQUN0QixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUE1SVcsUUFBQSxnQ0FBZ0Msb0NBNEkzQztBQUVLLE1BQU0sbUNBQW1DLEdBQUcsQ0FDakQsVUFBZ0MsRUFDaEMsZUFBb0IsRUFDcEIsRUFBRTtJQUNGLE1BQU0sT0FBTyxHQUFHO1FBQ2QsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFVO1FBQ3pCLFdBQVcsRUFBRSxJQUFJLEdBQUcsRUFBVTtRQUM5QixnQkFBZ0IsRUFBRSxJQUFJLEdBQUcsRUFBVTtRQUNuQyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQVU7S0FDekIsQ0FBQztJQUVGLE9BQU87SUFDUCxJQUFJLFVBQVUsQ0FBQyxRQUFRO1FBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRXhFLDJDQUEyQztJQUMzQyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDM0IsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFN0IsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hELElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hELGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzNELDZCQUE2QjtZQUM3QixJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssR0FBRztnQkFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDeEQsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLEdBQUc7Z0JBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQy9ELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxHQUFHO2dCQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM5RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSztnQkFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDMUMsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUk7Z0JBQy9CLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUNyQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSTtnQkFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDcEUsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUk7Z0JBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzlELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RFLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxxREFBcUQ7SUFDckQsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztJQUUxQyw2Q0FBNkM7SUFDN0MsSUFDRSxjQUFjO1FBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUN2QixlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsRUFDbEUsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFDRSxjQUFjO1FBQ2QsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUM1QixlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsRUFDeEUsQ0FBQztRQUNELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFDRSxnQkFBZ0I7UUFDaEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2pDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLEVBQzVFLENBQUM7UUFDRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUNFLFVBQVUsQ0FBQyxRQUFRO1FBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDdEIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQ2pFLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQTdFVyxRQUFBLG1DQUFtQyx1Q0E2RTlDO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUNqQyxjQUErQixFQUMvQixlQUFpQyxFQUNmLEVBQUU7SUFDcEIsTUFBTSxhQUFhLEdBQXFCLEVBQUUsQ0FBQztJQUUzQywrREFBK0Q7SUFDL0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FDaEMsY0FBYztTQUNYLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7U0FDeEMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQzdELENBQUM7SUFFRiw4Q0FBOEM7SUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7SUFFbEQsdUJBQXVCO0lBQ3ZCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzNELFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxLQUFLLE1BQU0sV0FBVyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFdEUsNEJBQTRCO1FBQzVCLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFakUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ25ELGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDakIsS0FBSztZQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBeENXLFFBQUEsbUJBQW1CLHVCQXdDOUIifQ==