@colijnit/transaction 12.1.18 → 12.1.21

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 (324) hide show
  1. package/bundles/colijnit-transaction.umd.js +4283 -2304
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +158 -127
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +159 -128
  6. package/esm2015/lib/assets/dictionary/text.properties.js +62 -1
  7. package/esm2015/lib/component/checkout/checkout.component.js +15 -13
  8. package/esm2015/lib/component/core/base/components/default-ok-cancel-buttons/default-ok-cancel-buttons.component.js +41 -0
  9. package/esm2015/lib/component/core/base/components/default-ok-cancel-buttons/default-ok-cancel-buttons.module.js +21 -0
  10. package/esm2015/lib/component/core/base/transaction-filter-base.component.js +61 -0
  11. package/esm2015/lib/component/core/base/transaction-filter-content-base.component.js +42 -0
  12. package/esm2015/lib/component/core/base/transaction-search-grid-base.component.js +25 -0
  13. package/esm2015/lib/component/core/base/transaction-search-tile-base.component.js +28 -0
  14. package/esm2015/lib/component/core/core.module.js +6 -3
  15. package/esm2015/lib/component/core/loader.component.js +44 -0
  16. package/esm2015/lib/component/editable-label/editable-label.component.js +60 -0
  17. package/esm2015/lib/component/editable-label/editable-label.module.js +21 -0
  18. package/esm2015/lib/component/payment/payment.component.js +25 -8
  19. package/esm2015/lib/component/payment/payment.module.js +4 -2
  20. package/esm2015/lib/component/payment-qr-code/payment-qr-code.component.js +42 -0
  21. package/esm2015/lib/component/payment-qr-code/payment-qr-code.module.js +21 -0
  22. package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +1 -2
  23. package/esm2015/lib/component/transaction/transaction.component.js +2 -1
  24. package/esm2015/lib/component/transaction-confirmation-details/transaction-confirmation-details.component.js +97 -0
  25. package/esm2015/lib/component/transaction-confirmation-details/transaction-confirmation-details.module.js +33 -0
  26. package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.js +43 -7
  27. package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.module.js +8 -3
  28. package/esm2015/lib/component/transaction-grid/transaction-base-grid/transaction-base-grid.component.js +5 -2
  29. package/esm2015/lib/component/transaction-grid/transaction-base-grid/transaction-base-grid.module.js +3 -1
  30. package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +3 -3
  31. package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +15 -4
  32. package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.module.js +4 -3
  33. package/esm2015/lib/component/transaction-line/transaction-line.component.js +48 -137
  34. package/esm2015/lib/component/transaction-line/transaction-line.module.js +10 -3
  35. package/esm2015/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.js +170 -0
  36. package/esm2015/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.module.js +30 -0
  37. package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.component.js +2 -1
  38. package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-date.component.js +2 -1
  39. package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.component.js +2 -1
  40. package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-amount.component.js +3 -2
  41. package/esm2015/lib/component/transaction-line-fields/transaction-line-fields-base.component.js +7 -1
  42. package/esm2015/lib/component/transaction-line-fields/transaction-line-line-discount.component.js +3 -2
  43. package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.component.js +2 -1
  44. package/esm2015/lib/component/transaction-line-fields/transaction-line-price.component.js +36 -6
  45. package/esm2015/lib/component/transaction-line-fields/transaction-line-quantity.component.js +2 -2
  46. package/esm2015/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.js +3 -2
  47. package/esm2015/lib/component/transaction-line-fields/transaction-line-reference.component.js +2 -1
  48. package/esm2015/lib/component/transaction-line-fields/transaction-line-special-discount.component.js +3 -2
  49. package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.component.js +2 -1
  50. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.component.js +2 -1
  51. package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +3 -1
  52. package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.js +5 -2
  53. package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.js +25 -17
  54. package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.js +9 -2
  55. package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.module.js +4 -2
  56. package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.js +18 -9
  57. package/esm2015/lib/component/transaction-search/service/filter-request.service.js +77 -7
  58. package/esm2015/lib/component/transaction-search/service/transaction-search.service.js +40 -4
  59. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-filter/transaction-filter.component.js +95 -0
  60. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-filter/transaction-filter.module.js +19 -0
  61. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/transaction-purchase-order-filter.component.js +56 -0
  62. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/transaction-purchase-order-filter.module.js +34 -0
  63. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/transaction-sales-order-filter.component.js +56 -0
  64. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/transaction-sales-order-filter.module.js +34 -0
  65. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.component.js +137 -0
  66. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.module.js +25 -0
  67. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.js +224 -0
  68. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.module.js +31 -0
  69. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.component.js +230 -0
  70. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.module.js +30 -0
  71. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.component.js +139 -0
  72. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.module.js +25 -0
  73. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.js +224 -0
  74. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.module.js +31 -0
  75. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.component.js +255 -0
  76. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.module.js +30 -0
  77. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/transaction-search-grid.component.js +81 -0
  78. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/transaction-search-grid.module.js +19 -0
  79. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/transaction-search-purchase-order-grid.component.js +78 -0
  80. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/transaction-search-purchase-order-grid.module.js +24 -0
  81. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.component.js +78 -0
  82. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.module.js +26 -0
  83. package/esm2015/lib/component/transaction-search/transaction-search-header/transaction-search-header.component.js +113 -0
  84. package/esm2015/lib/component/transaction-search/transaction-search-header/transaction-search-header.module.js +26 -0
  85. package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +61 -26
  86. package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.module.js +19 -6
  87. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/transaction-search-purchase-order-tile.component.js +58 -0
  88. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/transaction-search-purchase-order-tile.module.js +25 -0
  89. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +66 -0
  90. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.module.js +28 -0
  91. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/transaction-search-tile.component.js +89 -0
  92. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/transaction-search-tile.module.js +19 -0
  93. package/esm2015/lib/component/transaction-search/transaction-search.component.js +54 -12
  94. package/esm2015/lib/component/transaction-search/transaction-search.module.js +6 -2
  95. package/esm2015/lib/enum/direction.enum.js +9 -0
  96. package/esm2015/lib/enum/icon.enum.js +7 -1
  97. package/esm2015/lib/enum/search-view-mode.enum.js +7 -0
  98. package/esm2015/lib/model/icon-svg.js +7 -1
  99. package/esm2015/lib/model/transaction-search-result.js +3 -0
  100. package/esm2015/lib/service/payment.service.js +13 -3
  101. package/esm2015/lib/service/transaction-connector.service.js +156 -38
  102. package/esm2015/lib/service/transaction-mapping.service.js +58 -1
  103. package/esm2015/lib/service/transaction.service.js +14 -2
  104. package/esm2015/public_api.js +5 -1
  105. package/fesm2015/colijnit-transaction.js +4463 -2001
  106. package/fesm2015/colijnit-transaction.js.map +1 -1
  107. package/lib/component/checkout/checkout.component.d.ts +1 -1
  108. package/lib/component/core/base/components/default-ok-cancel-buttons/default-ok-cancel-buttons.component.d.ts +13 -0
  109. package/lib/component/core/base/components/default-ok-cancel-buttons/default-ok-cancel-buttons.module.d.ts +2 -0
  110. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/_layout.scss +4 -0
  111. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/_material-definition.scss +0 -0
  112. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/_theme.scss +0 -0
  113. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/material.scss +0 -0
  114. package/lib/component/{transaction-search/transaction-filter/transaction-filter.component.d.ts → core/base/transaction-filter-base.component.d.ts} +8 -3
  115. package/lib/component/core/base/transaction-filter-content-base.component.d.ts +22 -0
  116. package/lib/component/{transaction-search-grid/transaction-search-grid.component.d.ts → core/base/transaction-search-grid-base.component.d.ts} +1 -3
  117. package/lib/component/{transaction-search/transaction-tile/transaction-tile.component.d.ts → core/base/transaction-search-tile-base.component.d.ts} +3 -3
  118. package/lib/component/core/loader.component.d.ts +2 -0
  119. package/lib/component/editable-label/editable-label.component.d.ts +15 -0
  120. package/lib/component/editable-label/editable-label.module.d.ts +2 -0
  121. package/lib/component/editable-label/style/_layout.scss +4 -0
  122. package/lib/component/{transaction-search/transaction-filter-content-logistics → editable-label}/style/_material-definition.scss +0 -0
  123. package/lib/component/editable-label/style/_theme.scss +4 -0
  124. package/lib/component/editable-label/style/material.scss +4 -0
  125. package/lib/component/payment/payment.component.d.ts +5 -1
  126. package/lib/component/payment/style/material.scss +1 -0
  127. package/lib/component/payment-qr-code/payment-qr-code.component.d.ts +13 -0
  128. package/lib/component/payment-qr-code/payment-qr-code.module.d.ts +2 -0
  129. package/lib/component/payment-qr-code/style/_layout.scss +15 -0
  130. package/lib/component/{transaction-search/transaction-tile → payment-qr-code}/style/_material-definition.scss +0 -0
  131. package/lib/component/payment-qr-code/style/_theme.scss +4 -0
  132. package/lib/component/payment-qr-code/style/material.scss +4 -0
  133. package/lib/component/tile/style/_material-definition.scss +2 -1
  134. package/lib/component/transaction/style/_layout.scss +1 -0
  135. package/lib/component/transaction-confirmation-details/style/_layout.scss +75 -0
  136. package/lib/component/transaction-confirmation-details/style/_material-definition.scss +5 -0
  137. package/lib/component/transaction-confirmation-details/style/_theme.scss +7 -0
  138. package/lib/component/{transaction-search/transaction-filter-content-order → transaction-confirmation-details}/style/material.scss +1 -1
  139. package/lib/component/transaction-confirmation-details/transaction-confirmation-details.component.d.ts +20 -0
  140. package/lib/component/transaction-confirmation-details/transaction-confirmation-details.module.d.ts +2 -0
  141. package/lib/component/transaction-confirmation-history/style/_layout.scss +4 -1
  142. package/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.d.ts +22 -2
  143. package/lib/component/transaction-grid/transaction-base-grid/style/_layout.scss +4 -0
  144. package/lib/component/transaction-header/transaction-header/style/_layout.scss +8 -19
  145. package/lib/component/transaction-header/transaction-header-payment/style/_layout.scss +5 -0
  146. package/lib/component/transaction-header/transaction-header-payment/style/_material-definition.scss +5 -2
  147. package/lib/component/transaction-header/transaction-header-payment/style/_theme.scss +1 -0
  148. package/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.d.ts +7 -0
  149. package/lib/component/transaction-line/style/_layout.scss +95 -75
  150. package/lib/component/transaction-line/style/_material-definition.scss +7 -3
  151. package/lib/component/transaction-line/style/_theme.scss +3 -17
  152. package/lib/component/transaction-line/transaction-line.component.d.ts +4 -17
  153. package/lib/component/transaction-line-action-buttons/style/_layout.scss +106 -0
  154. package/lib/component/transaction-line-action-buttons/style/_material-definition.scss +7 -0
  155. package/lib/component/transaction-line-action-buttons/style/_theme.scss +7 -0
  156. package/lib/component/{transaction-search/transaction-filter-content-article → transaction-line-action-buttons}/style/material.scss +0 -1
  157. package/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.d.ts +46 -0
  158. package/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.module.d.ts +2 -0
  159. package/lib/component/transaction-line-fields/transaction-line-fields-base.component.d.ts +2 -0
  160. package/lib/component/transaction-line-fields/transaction-line-price.component.d.ts +7 -0
  161. package/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.d.ts +1 -0
  162. package/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.component.d.ts +4 -1
  163. package/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.d.ts +1 -0
  164. package/lib/component/transaction-quick-access/transaction-quick-access-overview/style/_layout.scss +12 -0
  165. package/lib/component/transaction-quick-access/transaction-quick-access-overview/style/_material-definition.scss +2 -0
  166. package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.d.ts +2 -1
  167. package/lib/component/transaction-search/service/filter-request.service.d.ts +67 -1
  168. package/lib/component/transaction-search/service/transaction-search.service.d.ts +11 -0
  169. package/lib/component/transaction-search/style/_layout.scss +36 -18
  170. package/lib/component/transaction-search/style/_material-definition.scss +70 -14
  171. package/lib/component/transaction-search/style/_theme.scss +4 -0
  172. package/lib/component/transaction-search/style/material.scss +4 -3
  173. package/lib/component/transaction-search/transaction-filter/transaction-filter/style/_layout.scss +55 -0
  174. package/lib/component/transaction-search/transaction-filter/transaction-filter/style/_material-definition.scss +0 -0
  175. package/lib/component/transaction-search/transaction-filter/transaction-filter/style/_theme.scss +8 -0
  176. package/lib/component/transaction-search/transaction-filter/transaction-filter/style/material.scss +6 -0
  177. package/lib/component/transaction-search/transaction-filter/transaction-filter/transaction-filter.component.d.ts +26 -0
  178. package/lib/component/transaction-search/transaction-filter/{transaction-filter.module.d.ts → transaction-filter/transaction-filter.module.d.ts} +0 -0
  179. package/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/style/_layout.scss +4 -0
  180. package/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/style/_material-definition.scss +1 -0
  181. package/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/style/_theme.scss +4 -0
  182. package/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/style/material.scss +4 -0
  183. package/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/transaction-purchase-order-filter.component.d.ts +9 -0
  184. package/lib/component/transaction-search/transaction-filter/transaction-purchase-order-filter/transaction-purchase-order-filter.module.d.ts +2 -0
  185. package/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/style/_layout.scss +4 -0
  186. package/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/style/_material-definition.scss +1 -0
  187. package/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/style/_theme.scss +6 -0
  188. package/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/style/material.scss +3 -0
  189. package/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/transaction-sales-order-filter.component.d.ts +9 -0
  190. package/lib/component/transaction-search/transaction-filter/transaction-sales-order-filter/transaction-sales-order-filter.module.d.ts +2 -0
  191. package/lib/component/transaction-search/transaction-filter-categories/style/_layout.scss +8 -8
  192. package/lib/component/transaction-search/transaction-filter-categories/style/_theme.scss +3 -3
  193. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/style/_layout.scss +2 -0
  194. package/lib/component/{transaction-search-grid → transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article}/style/_material-definition.scss +0 -0
  195. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/style/_theme.scss +4 -0
  196. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/style/material.scss +3 -0
  197. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.component.d.ts +38 -0
  198. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.module.d.ts +2 -0
  199. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/style/_layout.scss +2 -0
  200. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/style/_material-definition.scss +0 -0
  201. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/style/_theme.scss +4 -0
  202. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/style/material.scss +3 -0
  203. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.d.ts +36 -0
  204. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.module.d.ts +2 -0
  205. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/style/_layout.scss +2 -0
  206. package/lib/component/transaction-search/{transaction-filter-content-article → transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order}/style/_material-definition.scss +0 -0
  207. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/style/_theme.scss +4 -0
  208. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/style/material.scss +3 -0
  209. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.component.d.ts +48 -0
  210. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.module.d.ts +2 -0
  211. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/style/_layout.scss +2 -0
  212. package/lib/component/transaction-search/{transaction-filter-content-order → transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article}/style/_material-definition.scss +0 -0
  213. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/style/_theme.scss +4 -0
  214. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/style/material.scss +3 -0
  215. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.component.d.ts +38 -0
  216. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.module.d.ts +2 -0
  217. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/style/_layout.scss +2 -0
  218. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/style/_material-definition.scss +0 -0
  219. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/style/_theme.scss +4 -0
  220. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/style/material.scss +3 -0
  221. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.d.ts +36 -0
  222. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.module.d.ts +2 -0
  223. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/style/_layout.scss +2 -0
  224. package/lib/component/transaction-search/{transaction-filter → transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order}/style/_material-definition.scss +0 -0
  225. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/style/_theme.scss +4 -0
  226. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/style/material.scss +3 -0
  227. package/lib/component/transaction-search/{transaction-filter-content-order/transaction-filter-content-order.component.d.ts → transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.component.d.ts} +8 -15
  228. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.module.d.ts +2 -0
  229. package/lib/component/transaction-search/{transaction-filter-content-order → transaction-filter-content}/style/_layout.scss +2 -4
  230. package/lib/component/transaction-search/transaction-filter-content/style/_material-definition.scss +0 -0
  231. package/lib/component/transaction-search/transaction-filter-content/style/_theme.scss +4 -0
  232. package/lib/component/transaction-search/transaction-filter-content/style/material.scss +3 -0
  233. package/lib/component/transaction-search/transaction-filter-historic-state/style/material.scss +0 -1
  234. package/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/style/_layout.scss +4 -0
  235. package/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/style/_material-definition.scss +0 -0
  236. package/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/style/_theme.scss +4 -0
  237. package/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/style/material.scss +3 -0
  238. package/lib/component/transaction-search/transaction-search-grid/transaction-search-grid/transaction-search-grid.component.d.ts +22 -0
  239. package/lib/component/{transaction-search-grid → transaction-search/transaction-search-grid/transaction-search-grid}/transaction-search-grid.module.d.ts +0 -0
  240. package/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/style/_layout.scss +4 -0
  241. package/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/style/_material-definition.scss +0 -0
  242. package/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/style/_theme.scss +4 -0
  243. package/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/style/material.scss +3 -0
  244. package/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/transaction-search-purchase-order-grid.component.d.ts +7 -0
  245. package/lib/component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/transaction-search-purchase-order-grid.module.d.ts +2 -0
  246. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/_layout.scss +4 -0
  247. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/_material-definition.scss +1 -0
  248. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/_theme.scss +4 -0
  249. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/material.scss +3 -0
  250. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.component.d.ts +7 -0
  251. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.module.d.ts +2 -0
  252. package/lib/component/transaction-search/transaction-search-header/style/_layout.scss +83 -0
  253. package/lib/component/transaction-search/transaction-search-header/style/_material-definition.scss +1 -0
  254. package/lib/component/transaction-search/transaction-search-header/style/_theme.scss +4 -0
  255. package/lib/component/transaction-search/transaction-search-header/style/material.scss +5 -0
  256. package/lib/component/transaction-search/transaction-search-header/transaction-search-header.component.d.ts +32 -0
  257. package/lib/component/transaction-search/transaction-search-header/transaction-search-header.module.d.ts +2 -0
  258. package/lib/component/transaction-search/transaction-search-result/style/_layout.scss +8 -14
  259. package/lib/component/transaction-search/transaction-search-result/style/_theme.scss +1 -1
  260. package/lib/component/transaction-search/transaction-search-result/style/material.scss +2 -0
  261. package/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.d.ts +17 -6
  262. package/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/style/_layout.scss +4 -0
  263. package/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/style/_material-definition.scss +0 -0
  264. package/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/style/_theme.scss +4 -0
  265. package/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/style/material.scss +3 -0
  266. package/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/transaction-search-purchase-order-tile.component.d.ts +3 -0
  267. package/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/transaction-search-purchase-order-tile.module.d.ts +2 -0
  268. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/style/_layout.scss +5 -0
  269. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/style/_material-definition.scss +0 -0
  270. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/style/_theme.scss +4 -0
  271. package/lib/component/transaction-search/{transaction-tile → transaction-search-tile/transaction-search-sales-order-tile}/style/material.scss +0 -0
  272. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.d.ts +6 -0
  273. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.module.d.ts +2 -0
  274. package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_layout.scss +108 -0
  275. package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_material-definition.scss +0 -0
  276. package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_theme.scss +53 -0
  277. package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/material.scss +3 -0
  278. package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/transaction-search-tile.component.d.ts +25 -0
  279. package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/transaction-search-tile.module.d.ts +2 -0
  280. package/lib/component/transaction-search/transaction-search.component.d.ts +15 -2
  281. package/lib/enum/direction.enum.d.ts +6 -0
  282. package/lib/enum/icon.enum.d.ts +6 -0
  283. package/lib/enum/search-view-mode.enum.d.ts +4 -0
  284. package/lib/model/transaction-search-result.d.ts +5 -0
  285. package/lib/service/payment.service.d.ts +3 -1
  286. package/lib/service/transaction-connector.service.d.ts +9 -3
  287. package/lib/service/transaction-mapping.service.d.ts +9 -0
  288. package/lib/service/transaction.service.d.ts +6 -2
  289. package/lib/style/_mixin.scss +6 -0
  290. package/lib/style/_variables.scss +0 -32
  291. package/package.json +1 -1
  292. package/public_api.d.ts +4 -0
  293. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-filter.component.js +0 -87
  294. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-filter.module.js +0 -34
  295. package/esm2015/lib/component/transaction-search/transaction-filter-content-article/transaction-filter-content-article.component.js +0 -143
  296. package/esm2015/lib/component/transaction-search/transaction-filter-content-article/transaction-filter-content-article.module.js +0 -25
  297. package/esm2015/lib/component/transaction-search/transaction-filter-content-logistics/transaction-filter-content-logistics.component.js +0 -228
  298. package/esm2015/lib/component/transaction-search/transaction-filter-content-logistics/transaction-filter-content-logistics.module.js +0 -31
  299. package/esm2015/lib/component/transaction-search/transaction-filter-content-order/transaction-filter-content-order.component.js +0 -255
  300. package/esm2015/lib/component/transaction-search/transaction-filter-content-order/transaction-filter-content-order.module.js +0 -30
  301. package/esm2015/lib/component/transaction-search/transaction-tile/transaction-tile.component.js +0 -77
  302. package/esm2015/lib/component/transaction-search/transaction-tile/transaction-tile.module.js +0 -28
  303. package/esm2015/lib/component/transaction-search-grid/transaction-search-grid.component.js +0 -86
  304. package/esm2015/lib/component/transaction-search-grid/transaction-search-grid.module.js +0 -26
  305. package/lib/component/transaction-search/transaction-filter/style/_layout.scss +0 -53
  306. package/lib/component/transaction-search/transaction-filter/style/_theme.scss +0 -8
  307. package/lib/component/transaction-search/transaction-filter/style/material.scss +0 -7
  308. package/lib/component/transaction-search/transaction-filter-content-article/style/_layout.scss +0 -13
  309. package/lib/component/transaction-search/transaction-filter-content-article/style/_theme.scss +0 -6
  310. package/lib/component/transaction-search/transaction-filter-content-article/transaction-filter-content-article.component.d.ts +0 -50
  311. package/lib/component/transaction-search/transaction-filter-content-article/transaction-filter-content-article.module.d.ts +0 -2
  312. package/lib/component/transaction-search/transaction-filter-content-logistics/style/_layout.scss +0 -12
  313. package/lib/component/transaction-search/transaction-filter-content-logistics/style/_theme.scss +0 -6
  314. package/lib/component/transaction-search/transaction-filter-content-logistics/style/material.scss +0 -5
  315. package/lib/component/transaction-search/transaction-filter-content-logistics/transaction-filter-content-logistics.component.d.ts +0 -37
  316. package/lib/component/transaction-search/transaction-filter-content-logistics/transaction-filter-content-logistics.module.d.ts +0 -2
  317. package/lib/component/transaction-search/transaction-filter-content-order/style/_theme.scss +0 -6
  318. package/lib/component/transaction-search/transaction-filter-content-order/transaction-filter-content-order.module.d.ts +0 -2
  319. package/lib/component/transaction-search/transaction-tile/style/_layout.scss +0 -91
  320. package/lib/component/transaction-search/transaction-tile/style/_theme.scss +0 -46
  321. package/lib/component/transaction-search/transaction-tile/transaction-tile.module.d.ts +0 -2
  322. package/lib/component/transaction-search-grid/style/_layout.scss +0 -6
  323. package/lib/component/transaction-search-grid/style/_theme.scss +0 -6
  324. package/lib/component/transaction-search-grid/style/material.scss +0 -7
@@ -1,5 +1,11 @@
1
1
  import { Injectable } from "@angular/core";
2
2
  import { TransactionKind } from "@colijnit/transactionapi/build/enum/transaction-kind.enum";
3
+ import { TransactionPurchaseOrderFilterComponent } from "../component/transaction-search/transaction-filter/transaction-purchase-order-filter/transaction-purchase-order-filter.component";
4
+ import { TransactionSalesOrderFilterComponent } from "../component/transaction-search/transaction-filter/transaction-sales-order-filter/transaction-sales-order-filter.component";
5
+ import { TransactionSearchPurchaseOrderGridComponent } from "../component/transaction-search/transaction-search-grid/transaction-search-purchase-order-grid/transaction-search-purchase-order-grid.component";
6
+ import { TransactionSearchSalesOrderGridComponent } from "../component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.component";
7
+ import { TransactionSearchPurchaseOrderTileComponent } from "../component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/transaction-search-purchase-order-tile.component";
8
+ import { TransactionSearchSalesOrderTileComponent } from "../component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component";
3
9
  import { Icon } from "../enum/icon.enum";
4
10
  import { TransactionTypeCategory } from "../enum/transaction-type-category.enum";
5
11
  import { TransactionQuickAccessOrderConfirmationComponent } from "../component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component";
@@ -40,6 +46,18 @@ export class TransactionMappingService {
40
46
  [{ type: TransactionKind.PurchaseOrder, category: TransactionTypeCategory.PurchaseOrderReceivedGoods }, TransactionReceivedGoodsGridComponent],
41
47
  [{ type: TransactionKind.SalesOrder, category: TransactionTypeCategory.SalesOrderOverview }, TransactionLinesGridComponent]
42
48
  ]);
49
+ this._transactionFilterComponent = new Map([
50
+ [{ type: TransactionKind.SalesOrder }, TransactionSalesOrderFilterComponent],
51
+ [{ type: TransactionKind.PurchaseOrder }, TransactionPurchaseOrderFilterComponent],
52
+ ]);
53
+ this._transactionSearchGridComponent = new Map([
54
+ [{ type: TransactionKind.SalesOrder }, TransactionSearchSalesOrderGridComponent],
55
+ [{ type: TransactionKind.PurchaseOrder }, TransactionSearchPurchaseOrderGridComponent],
56
+ ]);
57
+ this._transactionSearchTileComponent = new Map([
58
+ [{ type: TransactionKind.SalesOrder }, TransactionSearchSalesOrderTileComponent],
59
+ [{ type: TransactionKind.PurchaseOrder }, TransactionSearchPurchaseOrderTileComponent],
60
+ ]);
43
61
  }
44
62
  getButtonBar(type) {
45
63
  if (this._buttonBarTransaction.has(type)) {
@@ -75,6 +93,45 @@ export class TransactionMappingService {
75
93
  });
76
94
  return entry;
77
95
  }
96
+ getTransactionFilterComponent(type) {
97
+ const key = {
98
+ type: type
99
+ };
100
+ let entry;
101
+ this._transactionFilterComponent.forEach((v, t, m) => {
102
+ if (t.type === key.type) {
103
+ entry = v;
104
+ return;
105
+ }
106
+ });
107
+ return entry;
108
+ }
109
+ getTransactionSearchGridComponent(type) {
110
+ const key = {
111
+ type: type
112
+ };
113
+ let entry;
114
+ this._transactionSearchGridComponent.forEach((v, t, m) => {
115
+ if (t.type === key.type) {
116
+ entry = v;
117
+ return;
118
+ }
119
+ });
120
+ return entry;
121
+ }
122
+ getTransactionSearchTileComponent(type) {
123
+ const key = {
124
+ type: type
125
+ };
126
+ let entry;
127
+ this._transactionSearchTileComponent.forEach((v, t, m) => {
128
+ if (t.type === key.type) {
129
+ entry = v;
130
+ return;
131
+ }
132
+ });
133
+ return entry;
134
+ }
78
135
  }
79
136
  TransactionMappingService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TransactionMappingService_Factory() { return new TransactionMappingService(); }, token: TransactionMappingService, providedIn: "root" });
80
137
  TransactionMappingService.decorators = [
@@ -82,4 +139,4 @@ TransactionMappingService.decorators = [
82
139
  providedIn: "root"
83
140
  },] }
84
141
  ];
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbWFwcGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLW1hcHBpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUUxRixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUNMLGdEQUFnRCxFQUNqRCxNQUFNLHlJQUF5SSxDQUFDO0FBRWpKLE9BQU8sRUFBQyw0Q0FBNEMsRUFBQyxNQUFNLGlJQUFpSSxDQUFDO0FBQzdMLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLHFIQUFxSCxDQUFDO0FBRTVLLE9BQU8sRUFBQyx5Q0FBeUMsRUFBQyxNQUFNLGlIQUFpSCxDQUFDO0FBQzFLLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHVGQUF1RixDQUFDO0FBQ3BJLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLHlHQUF5RyxDQUFDOztBQUs5SixNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBS21CLDBCQUFxQixHQUFpRCxJQUFJLEdBQUcsQ0FBMEM7WUFDdEksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO29CQUM5QixFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLENBQUMscUJBQXFCLEVBQUM7b0JBQzFHLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsRUFBRSx1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QyxRQUFRLEVBQUU7Z0JBQ3RELEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ1YsT0FBTzthQUNSO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7WUExRUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQmFyQnV0dG9ufSBmcm9tIFwiLi4vbW9kZWwvdHJhbnNhY3Rpb24tYmFyLWJ1dHRvblwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSBmcm9tIFwiLi4vZW51bS90cmFuc2FjdGlvbi10eXBlLWNhdGVnb3J5LmVudW1cIjtcclxuaW1wb3J0IHtcclxuICBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJDb25maXJtYXRpb25Db21wb25lbnRcclxufSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItY29uZmlybWF0aW9uL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1jb25maXJtYXRpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NSZWNlaXZlZEdvb2RzQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MtcmVjZWl2ZWQtZ29vZHMvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPdmVydmlld0NvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW92ZXJ2aWV3L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vdmVydmlldy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1ncmlkLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25PcmRlckNvbmZpcm1hdGlvbkdyaWRDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tZ3JpZC90cmFuc2FjdGlvbi1vcmRlci1jb25maXJtYXRpb24tZ3JpZC90cmFuc2FjdGlvbi1vcmRlci1jb25maXJtYXRpb24tZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVzR3JpZENvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1ncmlkL3RyYW5zYWN0aW9uLWxpbmVzLWdyaWQvdHJhbnNhY3Rpb24tbGluZXMtZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblJlY2VpdmVkR29vZHNHcmlkQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWdyaWQvdHJhbnNhY3Rpb24tcmVjZWl2ZWQtZ29vZHMtZ3JpZC90cmFuc2FjdGlvbi1yZWNlaXZlZC1nb29kcy1ncmlkLmNvbXBvbmVudFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbk1hcHBpbmdTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYnV0dG9uQmFyVHJhbnNhY3Rpb246IE1hcDxUcmFuc2FjdGlvbktpbmQsIFRyYW5zYWN0aW9uQmFyQnV0dG9uW10+ID0gbmV3IE1hcDxUcmFuc2FjdGlvbktpbmQsIFRyYW5zYWN0aW9uQmFyQnV0dG9uW10+KFtcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgW1xyXG4gICAgICB7dGl0bGU6ICdPVkVSVklFVycsIGljb246IEljb24uQ2FydFNob3BwaW5nU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyT3ZlcnZpZXd9LFxyXG4gICAgICB7dGl0bGU6ICdDT05GSVJNQVRJT04nLCBpY29uOiBJY29uLk1lbW9DaXJjbGVDaGVja1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9ufSxcclxuICAgICAge3RpdGxlOiAnVFJBTlNQT1JUJywgaWNvbjogSWNvbi5UcnVja0NvbnRhaW5lclNvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlclRyYW5zcG9ydH0sXHJcbiAgICAgIHt0aXRsZTogJ1JFQ0VJVkVEJywgaWNvbjogSWNvbi5DYXJ0RmxhdGJlZEJveGVzU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyUmVjZWl2ZWRHb29kc30sXHJcbiAgICAgIHt0aXRsZTogJ0lOVk9JQ0VfQ0hFQ0snLCBpY29uOiBJY29uLlRhZywgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJJbnZvaWNlQ2hlY2t9LFxyXG4gICAgICB7dGl0bGU6ICdNRU5VJywgaWNvbjogSWNvbi5UYWcsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyTWVudX1cclxuICAgIF1dLFxyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBbXHJcbiAgICAgIHt0aXRsZTogJ09WRVJWSUVXJywgaWNvbjogSWNvbi5DYXJ0U2hvcHBpbmdTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld30sXHJcbiAgICAgIHt0aXRsZTogJ1BVUkNIQVNFJywgaWNvbjogSWNvbi5QYWxsZXRCb3hlc1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlclB1cmNoYXNlfSxcclxuICAgICAge3RpdGxlOiAnTE9HSVNUSUNTJywgaWNvbjogSWNvbi5TaGVsdmVzU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyTG9naXN0aWNzfSxcclxuICAgICAge3RpdGxlOiAnUExBTk5JTkcnLCBpY29uOiBJY29uLlRydWNrQXJyb3dSaWdodFNvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlclBsYW5uaW5nfSxcclxuICAgICAge3RpdGxlOiAnREVMSVZFUllfTk9URScsIGljb246IEljb24uTWVtb0NpcmNsZUNoZWNrU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyRGVsaXZlcnlOb3RlfSxcclxuICAgICAge3RpdGxlOiAnSU5WT0lDRScsIGljb246IEljb24uQ2FydENoZWNrLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckludm9pY2V9XHJcbiAgICBdXSxcclxuICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcXVpY2tBY2Nlc3NDb21wb25lbnQ6IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9LCBUeXBlPFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudD4+ID1cclxuICAgIG5ldyBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZDsgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQ+PihbXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyT3JkZXJDb25maXJtYXRpb259LCBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJDb25maXJtYXRpb25Db21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlclJlY2VpdmVkR29vZHN9LCBUcmFuc2FjdGlvblF1aWNrQWNjZXNzUmVjZWl2ZWRHb29kc0NvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyT3ZlcnZpZXd9LCBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3ZlcnZpZXdDb21wb25lbnRdXHJcbiAgICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNhY3Rpb25HcmlkQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50Pj4gPVxyXG4gICAgbmV3IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kOyBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9LCBUeXBlPFRyYW5zYWN0aW9uR3JpZEJhc2VDb21wb25lbnQ+PihbXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyT3ZlcnZpZXd9LCBUcmFuc2FjdGlvbkxpbmVzR3JpZENvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyT3JkZXJDb25maXJtYXRpb259LCBUcmFuc2FjdGlvbk9yZGVyQ29uZmlybWF0aW9uR3JpZENvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyUmVjZWl2ZWRHb29kc30sIFRyYW5zYWN0aW9uUmVjZWl2ZWRHb29kc0dyaWRDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25MaW5lc0dyaWRDb21wb25lbnRdXHJcbiAgICBdKTtcclxuXHJcbiAgcHVibGljIGdldEJ1dHRvbkJhcih0eXBlOiBUcmFuc2FjdGlvbktpbmQpOiBUcmFuc2FjdGlvbkJhckJ1dHRvbltdIHtcclxuICAgIGlmICh0aGlzLl9idXR0b25CYXJUcmFuc2FjdGlvbi5oYXModHlwZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbkJhclRyYW5zYWN0aW9uLmdldCh0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRRdWlja0FjY2Vzc0NvbXBvbmVudCh0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSk6IFR5cGU8VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeVxyXG4gICAgfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudD47XHJcbiAgICB0aGlzLl9xdWlja0FjY2Vzc0NvbXBvbmVudC5mb3JFYWNoKCh2LCB0LCBtKSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlICYmIHQuY2F0ZWdvcnkgPT09IGtleS5jYXRlZ29yeSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25HcmlkQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5KTogVHlwZTxUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeVxyXG4gICAgfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uR3JpZEJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25HcmlkQ29tcG9uZW50LmZvckVhY2goKHYsIHQsIG0pID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUgJiYgdC5jYXRlZ29yeSA9PT0ga2V5LmNhdGVnb3J5KSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcbn1cclxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbWFwcGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLW1hcHBpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUkxRixPQUFPLEVBQ0wsdUNBQXVDLEVBQ3hDLE1BQU0sa0lBQWtJLENBQUM7QUFDMUksT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLDRIQUE0SCxDQUFDO0FBQ3BJLE9BQU8sRUFDTCwyQ0FBMkMsRUFDNUMsTUFBTSxpSkFBaUosQ0FBQztBQUN6SixPQUFPLEVBQ0wsd0NBQXdDLEVBQ3pDLE1BQU0sMklBQTJJLENBQUM7QUFDbkosT0FBTyxFQUNMLDJDQUEyQyxFQUM1QyxNQUFNLGlKQUFpSixDQUFDO0FBQ3pKLE9BQU8sRUFDTCx3Q0FBd0MsRUFDekMsTUFBTSwySUFBMkksQ0FBQztBQUVuSixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUNMLGdEQUFnRCxFQUNqRCxNQUFNLHlJQUF5SSxDQUFDO0FBRWpKLE9BQU8sRUFBQyw0Q0FBNEMsRUFBQyxNQUFNLGlJQUFpSSxDQUFDO0FBQzdMLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLHFIQUFxSCxDQUFDO0FBRTVLLE9BQU8sRUFBQyx5Q0FBeUMsRUFBQyxNQUFNLGlIQUFpSCxDQUFDO0FBQzFLLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHVGQUF1RixDQUFDO0FBQ3BJLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLHlHQUF5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Z0JBQ1YsT0FBTzthQUNSO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7WUFuSUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xyXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkZpbHRlckJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZWFyY2hHcmlkQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9iYXNlL3RyYW5zYWN0aW9uLXNlYXJjaC1ncmlkLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uU2VhcmNoVGlsZUJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS90cmFuc2FjdGlvbi1zZWFyY2gtdGlsZS1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uUHVyY2hhc2VPcmRlckZpbHRlckNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLWZpbHRlci90cmFuc2FjdGlvbi1wdXJjaGFzZS1vcmRlci1maWx0ZXIvdHJhbnNhY3Rpb24tcHVyY2hhc2Utb3JkZXItZmlsdGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uU2FsZXNPcmRlckZpbHRlckNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLWZpbHRlci90cmFuc2FjdGlvbi1zYWxlcy1vcmRlci1maWx0ZXIvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uU2VhcmNoUHVyY2hhc2VPcmRlckdyaWRDb21wb25lbnRcclxufSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1zZWFyY2gtZ3JpZC90cmFuc2FjdGlvbi1zZWFyY2gtcHVyY2hhc2Utb3JkZXItZ3JpZC90cmFuc2FjdGlvbi1zZWFyY2gtcHVyY2hhc2Utb3JkZXItZ3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtcclxuICBUcmFuc2FjdGlvblNlYXJjaFNhbGVzT3JkZXJHcmlkQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLWdyaWQvdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLW9yZGVyLWdyaWQvdHJhbnNhY3Rpb24tc2VhcmNoLXNhbGVzLW9yZGVyLWdyaWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNhY3Rpb25TZWFyY2hQdXJjaGFzZU9yZGVyVGlsZUNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLXNlYXJjaC10aWxlL3RyYW5zYWN0aW9uLXNlYXJjaC1wdXJjaGFzZS1vcmRlci10aWxlL3RyYW5zYWN0aW9uLXNlYXJjaC1wdXJjaGFzZS1vcmRlci10aWxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uU2VhcmNoU2FsZXNPcmRlclRpbGVDb21wb25lbnRcclxufSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1zZWFyY2gtdGlsZS90cmFuc2FjdGlvbi1zZWFyY2gtc2FsZXMtb3JkZXItdGlsZS90cmFuc2FjdGlvbi1zZWFyY2gtc2FsZXMtb3JkZXItdGlsZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkJhckJ1dHRvbn0gZnJvbSBcIi4uL21vZGVsL3RyYW5zYWN0aW9uLWJhci1idXR0b25cIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gZnJvbSBcIi4uL2VudW0vdHJhbnNhY3Rpb24tdHlwZS1jYXRlZ29yeS5lbnVtXCI7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyQ29uZmlybWF0aW9uQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWNvbmZpcm1hdGlvbi90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItY29uZmlybWF0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblF1aWNrQWNjZXNzUmVjZWl2ZWRHb29kc0NvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1yZWNlaXZlZC1nb29kcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3ZlcnZpZXdDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vdmVydmlldy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3ZlcnZpZXcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25HcmlkQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tZ3JpZC1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uT3JkZXJDb25maXJtYXRpb25HcmlkQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L3RyYW5zYWN0aW9uLWdyaWQvdHJhbnNhY3Rpb24tb3JkZXItY29uZmlybWF0aW9uLWdyaWQvdHJhbnNhY3Rpb24tb3JkZXItY29uZmlybWF0aW9uLWdyaWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lc0dyaWRDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvdHJhbnNhY3Rpb24tZ3JpZC90cmFuc2FjdGlvbi1saW5lcy1ncmlkL3RyYW5zYWN0aW9uLWxpbmVzLWdyaWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25SZWNlaXZlZEdvb2RzR3JpZENvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC90cmFuc2FjdGlvbi1ncmlkL3RyYW5zYWN0aW9uLXJlY2VpdmVkLWdvb2RzLWdyaWQvdHJhbnNhY3Rpb24tcmVjZWl2ZWQtZ29vZHMtZ3JpZC5jb21wb25lbnRcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25NYXBwaW5nU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1dHRvbkJhclRyYW5zYWN0aW9uOiBNYXA8VHJhbnNhY3Rpb25LaW5kLCBUcmFuc2FjdGlvbkJhckJ1dHRvbltdPiA9IG5ldyBNYXA8VHJhbnNhY3Rpb25LaW5kLCBUcmFuc2FjdGlvbkJhckJ1dHRvbltdPihbXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIFtcclxuICAgICAge3RpdGxlOiAnT1ZFUlZJRVcnLCBpY29uOiBJY29uLkNhcnRTaG9wcGluZ1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck92ZXJ2aWV3fSxcclxuICAgICAge3RpdGxlOiAnQ09ORklSTUFUSU9OJywgaWNvbjogSWNvbi5NZW1vQ2lyY2xlQ2hlY2tTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPcmRlckNvbmZpcm1hdGlvbn0sXHJcbiAgICAgIHt0aXRsZTogJ1RSQU5TUE9SVCcsIGljb246IEljb24uVHJ1Y2tDb250YWluZXJTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJUcmFuc3BvcnR9LFxyXG4gICAgICB7dGl0bGU6ICdSRUNFSVZFRCcsIGljb246IEljb24uQ2FydEZsYXRiZWRCb3hlc1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlclJlY2VpdmVkR29vZHN9LFxyXG4gICAgICB7dGl0bGU6ICdJTlZPSUNFX0NIRUNLJywgaWNvbjogSWNvbi5UYWcsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVySW52b2ljZUNoZWNrfSxcclxuICAgICAge3RpdGxlOiAnTUVOVScsIGljb246IEljb24uVGFnLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck1lbnV9XHJcbiAgICBdXSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgW1xyXG4gICAgICB7dGl0bGU6ICdPVkVSVklFVycsIGljb246IEljb24uQ2FydFNob3BwaW5nU29saWQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyT3ZlcnZpZXd9LFxyXG4gICAgICB7dGl0bGU6ICdQVVJDSEFTRScsIGljb246IEljb24uUGFsbGV0Qm94ZXNTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQdXJjaGFzZX0sXHJcbiAgICAgIHt0aXRsZTogJ0xPR0lTVElDUycsIGljb246IEljb24uU2hlbHZlc1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckxvZ2lzdGljc30sXHJcbiAgICAgIHt0aXRsZTogJ1BMQU5OSU5HJywgaWNvbjogSWNvbi5UcnVja0Fycm93UmlnaHRTb2xpZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQbGFubmluZ30sXHJcbiAgICAgIHt0aXRsZTogJ0RFTElWRVJZX05PVEUnLCBpY29uOiBJY29uLk1lbW9DaXJjbGVDaGVja1NvbGlkLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckRlbGl2ZXJ5Tm90ZX0sXHJcbiAgICAgIHt0aXRsZTogJ0lOVk9JQ0UnLCBpY29uOiBJY29uLkNhcnRDaGVjaywgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJJbnZvaWNlfVxyXG4gICAgXV0sXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1aWNrQWNjZXNzQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQ+PiA9XHJcbiAgICBuZXcgTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQ7IGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9ufSwgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyQ29uZmlybWF0aW9uQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJSZWNlaXZlZEdvb2RzfSwgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc1JlY2VpdmVkR29vZHNDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc092ZXJ2aWV3Q29tcG9uZW50XVxyXG4gICAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zYWN0aW9uR3JpZENvbXBvbmVudDogTWFwPHt0eXBlOiBUcmFuc2FjdGlvbktpbmQsIGNhdGVnb3J5OiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0sIFR5cGU8VHJhbnNhY3Rpb25HcmlkQmFzZUNvbXBvbmVudD4+ID1cclxuICAgIG5ldyBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZDsgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSwgVHlwZTxUcmFuc2FjdGlvbkdyaWRCYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck92ZXJ2aWV3fSwgVHJhbnNhY3Rpb25MaW5lc0dyaWRDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9ufSwgVHJhbnNhY3Rpb25PcmRlckNvbmZpcm1hdGlvbkdyaWRDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlclJlY2VpdmVkR29vZHN9LCBUcmFuc2FjdGlvblJlY2VpdmVkR29vZHNHcmlkQ29tcG9uZW50XSxcclxuICAgICAgW3t0eXBlOiBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld30sIFRyYW5zYWN0aW9uTGluZXNHcmlkQ29tcG9uZW50XVxyXG4gICAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zYWN0aW9uRmlsdGVyQ29tcG9uZW50OiBNYXA8e3R5cGU6IFRyYW5zYWN0aW9uS2luZH0sIFR5cGU8VHJhbnNhY3Rpb25GaWx0ZXJCYXNlQ29tcG9uZW50Pj4gPVxyXG4gICAgbmV3IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSwgVHlwZTxUcmFuc2FjdGlvbkZpbHRlckJhc2VDb21wb25lbnQ+PihbXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXJ9LCBUcmFuc2FjdGlvblNhbGVzT3JkZXJGaWx0ZXJDb21wb25lbnRdLFxyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyfSwgVHJhbnNhY3Rpb25QdXJjaGFzZU9yZGVyRmlsdGVyQ29tcG9uZW50XSxcclxuICAgIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2FjdGlvblNlYXJjaEdyaWRDb21wb25lbnQ6IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSwgVHlwZTxUcmFuc2FjdGlvblNlYXJjaEdyaWRCYXNlQ29tcG9uZW50Pj4gPVxyXG4gICAgbmV3IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSwgVHlwZTxUcmFuc2FjdGlvblNlYXJjaEdyaWRCYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyfSwgVHJhbnNhY3Rpb25TZWFyY2hTYWxlc09yZGVyR3JpZENvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXJ9LCBUcmFuc2FjdGlvblNlYXJjaFB1cmNoYXNlT3JkZXJHcmlkQ29tcG9uZW50XSxcclxuICAgIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2FjdGlvblNlYXJjaFRpbGVDb21wb25lbnQ6IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSwgVHlwZTxUcmFuc2FjdGlvblNlYXJjaFRpbGVCYXNlQ29tcG9uZW50Pj4gPVxyXG4gICAgbmV3IE1hcDx7dHlwZTogVHJhbnNhY3Rpb25LaW5kfSwgVHlwZTxUcmFuc2FjdGlvblNlYXJjaFRpbGVCYXNlQ29tcG9uZW50Pj4oW1xyXG4gICAgICBbe3R5cGU6IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyfSwgVHJhbnNhY3Rpb25TZWFyY2hTYWxlc09yZGVyVGlsZUNvbXBvbmVudF0sXHJcbiAgICAgIFt7dHlwZTogVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXJ9LCBUcmFuc2FjdGlvblNlYXJjaFB1cmNoYXNlT3JkZXJUaWxlQ29tcG9uZW50XSxcclxuICAgIF0pO1xyXG5cclxuICBwdWJsaWMgZ2V0QnV0dG9uQmFyKHR5cGU6IFRyYW5zYWN0aW9uS2luZCk6IFRyYW5zYWN0aW9uQmFyQnV0dG9uW10ge1xyXG4gICAgaWYgKHRoaXMuX2J1dHRvbkJhclRyYW5zYWN0aW9uLmhhcyh0eXBlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYnV0dG9uQmFyVHJhbnNhY3Rpb24uZ2V0KHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFF1aWNrQWNjZXNzQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5KTogVHlwZTxUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGtleToge3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSA9IHtcclxuICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgY2F0ZWdvcnk6IGNhdGVnb3J5XHJcbiAgICB9XHJcbiAgICBsZXQgZW50cnk6IFR5cGU8VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50PjtcclxuICAgIHRoaXMuX3F1aWNrQWNjZXNzQ29tcG9uZW50LmZvckVhY2goKHYsIHQsIG0pID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUgJiYgdC5jYXRlZ29yeSA9PT0ga2V5LmNhdGVnb3J5KSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkdyaWRDb21wb25lbnQodHlwZTogVHJhbnNhY3Rpb25LaW5kLCBjYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkpOiBUeXBlPFRyYW5zYWN0aW9uR3JpZEJhc2VDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGtleToge3R5cGU6IFRyYW5zYWN0aW9uS2luZCwgY2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSA9IHtcclxuICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgY2F0ZWdvcnk6IGNhdGVnb3J5XHJcbiAgICB9XHJcbiAgICBsZXQgZW50cnk6IFR5cGU8VHJhbnNhY3Rpb25HcmlkQmFzZUNvbXBvbmVudD47XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbkdyaWRDb21wb25lbnQuZm9yRWFjaCgodiwgdCwgbSkgPT4ge1xyXG4gICAgICBpZiAodC50eXBlID09PSBrZXkudHlwZSAmJiB0LmNhdGVnb3J5ID09PSBrZXkuY2F0ZWdvcnkpIHtcclxuICAgICAgICBlbnRyeSA9IHY7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRyYW5zYWN0aW9uRmlsdGVyQ29tcG9uZW50KHR5cGU6IFRyYW5zYWN0aW9uS2luZCk6IFR5cGU8VHJhbnNhY3Rpb25GaWx0ZXJCYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9ID0ge1xyXG4gICAgICB0eXBlOiB0eXBlfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uRmlsdGVyQmFzZUNvbXBvbmVudD47XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbkZpbHRlckNvbXBvbmVudC5mb3JFYWNoKCh2LCB0LCBtKSA9PiB7XHJcbiAgICAgIGlmICh0LnR5cGUgPT09IGtleS50eXBlKSB7XHJcbiAgICAgICAgZW50cnkgPSB2O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBlbnRyeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvblNlYXJjaEdyaWRDb21wb25lbnQodHlwZTogVHJhbnNhY3Rpb25LaW5kKTogVHlwZTxUcmFuc2FjdGlvblNlYXJjaEdyaWRCYXNlQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBrZXk6IHt0eXBlOiBUcmFuc2FjdGlvbktpbmR9ID0ge1xyXG4gICAgICB0eXBlOiB0eXBlfVxyXG4gICAgbGV0IGVudHJ5OiBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoR3JpZEJhc2VDb21wb25lbnQ+O1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25TZWFyY2hHcmlkQ29tcG9uZW50LmZvckVhY2goKHYsIHQsIG0pID0+IHtcclxuICAgICAgaWYgKHQudHlwZSA9PT0ga2V5LnR5cGUpIHtcclxuICAgICAgICBlbnRyeSA9IHY7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRyYW5zYWN0aW9uU2VhcmNoVGlsZUNvbXBvbmVudCh0eXBlOiBUcmFuc2FjdGlvbktpbmQpOiBUeXBlPFRyYW5zYWN0aW9uU2VhcmNoVGlsZUJhc2VDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGtleToge3R5cGU6IFRyYW5zYWN0aW9uS2luZH0gPSB7XHJcbiAgICAgIHR5cGU6IHR5cGV9XHJcbiAgICBsZXQgZW50cnk6IFR5cGU8VHJhbnNhY3Rpb25TZWFyY2hUaWxlQmFzZUNvbXBvbmVudD47XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvblNlYXJjaFRpbGVDb21wb25lbnQuZm9yRWFjaCgodiwgdCwgbSkgPT4ge1xyXG4gICAgICBpZiAodC50eXBlID09PSBrZXkudHlwZSkge1xyXG4gICAgICAgIGVudHJ5ID0gdjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gZW50cnk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -449,7 +449,9 @@ export class TransactionService extends PendingReasonService {
449
449
  return new Promise((resolve, reject) => {
450
450
  this.connector.deleteTransactionLine(transactionUuid, TransactionLineUuid)
451
451
  .then((response) => __awaiter(this, void 0, void 0, function* () {
452
- this._rememberCurrentTransaction(response);
452
+ if (yield this.handleLineOperationStatuses(response)) {
453
+ this._rememberCurrentTransaction(response);
454
+ }
453
455
  if (response.isSuccess) {
454
456
  resolve(response);
455
457
  }
@@ -583,6 +585,16 @@ export class TransactionService extends PendingReasonService {
583
585
  AddressType.NursingAddress
584
586
  ]);
585
587
  }
588
+ getPurchasePortalLines(request) {
589
+ return __awaiter(this, void 0, void 0, function* () {
590
+ return yield this.connector.getPurchasePortalLines(request);
591
+ });
592
+ }
593
+ updatePurchasePortalLines(purchasePortalLine) {
594
+ return __awaiter(this, void 0, void 0, function* () {
595
+ return yield this.connector.updatePurchasePortalLines(purchasePortalLine);
596
+ });
597
+ }
586
598
  // private _cleanRelationBeforeSave(): void {
587
599
  // ArrayUtils.RemoveElementsByFilter(this.currentTransaction.transactionInfo.relation.contactOptions, ((item: ContactOption) => {
588
600
  // return isNill(item.value);
@@ -604,4 +616,4 @@ TransactionService.decorators = [
604
616
  providedIn: "root"
605
617
  },] }
606
618
  ];
607
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUVsRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUMvRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBZW5HLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBaUJuRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFZOUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG9CQUFvQjtJQUVuRCwwQkFBMEIsQ0FBQyxxQkFBNEM7UUFDNUUsTUFBTSxNQUFNLEdBQXdCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJO2VBQ25ILElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFWSwwQkFBMEIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxLQUFhOztZQUNuRixNQUFNLFFBQVEsR0FBc0MsTUFBTSxJQUFJLENB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O1lBQzNCLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLFdBQVcsQ0FBQyxlQUFlO1lBQzNCLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLFdBQVcsQ0FBQyxjQUFjO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsbUlBQW1JO0lBQ25JLGlDQUFpQztJQUNqQyxTQUFTO0lBQ1QsSUFBSTtJQUVVLDBCQUEwQjs7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtnQkFDbEksSUFBSSxDQUFDLENBQUEsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQSxFQUFFO29CQUNuQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztpQkFDNUM7YUFDRjtRQUNILENBQUM7S0FBQTs7OztZQXRuQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtBZGRyZXNzVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2Rpc2NvdW50LXR5cGUuZW51bVwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1saW5lLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FkZHJlc3MuYm9cIjtcbmltcG9ydCB7QXJ0aWNsZUZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1mdWxsLW9iamVjdFwiO1xuaW1wb3J0IHtCcmFuY2hMb3Z9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYnJhbmNoLWxvdi5ib1wiO1xuaW1wb3J0IHtDYXNoUmVnaXN0ZXJ9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3RlclwiO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvLWRvbWFpbi12YWx1ZS5ib1wiO1xuaW1wb3J0IHtDb2RlRGVzY3JpcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29kZS1kZXNjcmlwdGlvblwiO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm9cIjtcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XG5pbXBvcnQge0N1c3RvbWVyR3JvdXB9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZ3JvdXAuYm9cIjtcbmltcG9ydCB7RGF0YVNlcnZpY2VSZXNwb25zZURhdGF9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGFcIjtcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvXCI7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9wdGlvbi5ib1wiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvXCI7XG5pbXBvcnQge05VTExfQ1VTVE9NRVJfRlVMTF9PQkpFQ1R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbnVsLXJlbGF0aW9uLW9iamVjdFwiO1xuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29uLWhvbGQtY29kZS5ib1wiO1xuaW1wb3J0IHtQcmljZUxpc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdFwiO1xuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGVcIjtcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcHJpdmFjeS1zZXR0aW5nLmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1yZXF1ZXN0XCI7XG5pbXBvcnQge1NhbGVzUGVyc29ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NhbGVzLXBlcnNvbi5ib1wiO1xuaW1wb3J0IHtUYWd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdGFnXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXcuYm9cIjtcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xuaW1wb3J0IHtWYXR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdmF0XCI7XG5pbXBvcnQge1dhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm9cIjtcbmltcG9ydCB7dGhyb3dFcnJvcn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7U3RhbmRhcmRUZXh0fSBmcm9tIFwiLi4vbW9kZWwvc3RhbmRhcmQtdGV4dFwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uU2VydmljZX0gZnJvbSBcIi4vcGVuZGluZy1yZWFzb24uc2VydmljZVwiO1xuaW1wb3J0IHtSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0dvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXJlY2VpcHQtc3RhdHVzLXdpdGgtaGlzdG9yeS5ib1wiO1xuaW1wb3J0IHtSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0FydGljbGVFeHRlbmRlZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLXJlcXVlc3RcIjtcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saWdodC5ib1wiO1xuaW1wb3J0IHtUdXJub3Zlckdyb3VwSW1hZ2V9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC90dXJub3Zlci1ncm91cC1pbWFnZS5ib1wiO1xuaW1wb3J0IHtNYWluQXJ0aWNsZX0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL21haW4tYXJ0aWNsZS5ib1wiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFBlbmRpbmdSZWFzb25TZXJ2aWNlIHtcblxuICBwdWJsaWMgcGVuZGluZ0xpbmVPcGVyYXRpb25TdGF0dXMobGluZU9wZXJhdGlvblN0YXR1c2VzOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10pOiBMaW5lT3BlcmF0aW9uU3RhdHVzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXMgPSBsaW5lT3BlcmF0aW9uU3RhdHVzZXMuZmluZChsaW5lID0+IGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTkVcbiAgICAgICYmIGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT04pO1xuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHJpY2VUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHwgYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlKHV1aWQsIGxpbmVVdWlkLCBwcmljZSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUmVmZXJlbmNlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQsIGxpbmVVdWlkLCByZWZlcmVuY2UpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQsIGRlZmluaXRpdmUpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVF1YW50aXR5VHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkLCBsaW5lVXVpZCwgcXVhbnRpdHkpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURlbGl2ZXJ5RGF0ZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQsIGxpbmVVdWlkLCBkYXRlKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQcmljZUxpc3RUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZUxpc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QodXVpZCwgbGluZVV1aWQsIHByaWNlTGlzdClcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlVmF0VHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZCwgbGluZVV1aWQsIGlkKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDb21taXNzaW9uQ29kZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlV2FyZWhvdXNlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgd2FyZWhvdXNlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlKHV1aWQsIGxpbmVVdWlkLCB3YXJlaG91c2VOdW1iZXIpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURlbGl2ZXJ5TWV0aG9kVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZCwgbGluZVV1aWQsIG1ldGhvZClcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlRGlzY291bnRUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGRpc2NvdW50OiBudW1iZXIsIHJlYXNvbjogc3RyaW5nID0gXCJcIiwgY29kZTogc3RyaW5nID0gXCJcIik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZCwgbGluZVV1aWQsIHR5cGUsIGRpc2NvdW50LCByZWFzb24sIGNvZGUpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblNlYXJjaFZpZXdbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVJlbGF0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIHRoaXMuX2NsZWFuUmVsYXRpb25CZWZvcmVTYXZlKCk7XG4gICAgaWYgKCF0aGlzLnJlbGF0aW9uLnJlbGF0aW9uSWQpIHtcbiAgICAgIHRoaXMucmVsYXRpb24gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5pbnNlcnRDdXN0b21lcih0aGlzLnJlbGF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWxhdGlvbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnVwZGF0ZUN1c3RvbWVyKHRoaXMucmVsYXRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odGhpcy5yZWxhdGlvbi5yZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZXF1ZW5jZVZhbHVlKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFNlcXVlbmNlVmFsdWUoU2VxdWVuY2VOYW1lLlJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZShhcnRpY2xlTGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25MaW5lSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVUcmFuc2FjdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5jcmVhdGVUcmFuc2FjdGlvbihUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgXCIxXCIpLnRoZW4oKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5FeGlzdGluZ1RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCB0cmFuc2FjdGlvbk5vKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRXhpc3RpbmdUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTnI6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZCwgdHJhbnNhY3Rpb25OcilcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpXG4gICAgICAgIC50aGVuKChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uVXBkYXRlZC5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmNvbW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVUcmFuc2FjdGlvbihjbG9zZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCk7XG4gICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVRyYW5zYWN0aW9uQnlVdWlkKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3Iuc2F2ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uVXVpZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlYXNvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dFcnJvcihyZWFzb24uZ2V0RnVsbEVycm9yU3RyaW5nKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24ocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy5fY2hlY2tBbmRDcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIHJlbGF0aW9uSWQpO1xuICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXN1bHQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHVybm92ZXJHcm91cHMoKTogUHJvbWlzZTxUdXJub3Zlckdyb3VwSW1hZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmFydGljbGVDb25uZWN0b3IuZ2V0VHVybm92ZXJHcm91cHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFya2V0aW5nQ29kZXMoKTogUHJvbWlzZTxNYXJrZXRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGdldEFydGljbGVzKHJlcXVlc3Q6IEFydGljbGVFeHRlbmRlZFJlcXVlc3QpOiBQcm9taXNlPEFydGljbGVMaWdodFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYXJ0aWNsZUNvbm5lY3Rvci5zZWFyY2hBcnRpY2xlcyhyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYWluQXJ0aWNsZXMoKTogUHJvbWlzZTxNYWluQXJ0aWNsZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYXJ0aWNsZUNvbm5lY3Rvci5nZXRNYWluQXJ0aWNsZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIocmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLnVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uKS50aGVuKGFzeW5jIChyZXNwb25zZTogQ3VzdG9tZXJGdWxsT2JqZWN0KSA9PiB7XG4gICAgICAgIC8vIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbiA9IHJlbGF0aW9uO1xuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVzcG9uc2U6IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWxpdmVyeU1ldGhvZHMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldERlbGl2ZXJ5TWV0aG9kcygpO1xuICB9XG5cbiAgcHVibGljIGdldERlbGl2ZXJ5T3B0aW9ucygpOiBQcm9taXNlPERlbGl2ZXJ5T3B0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0RGVsaXZlcnlPcHRpb25zKCk7XG4gIH1cblxuICAvLyB0b2RvOiBtb3ZlIHRvIHJlbGF0aW9uIGFwaT9cbiAgcHVibGljIGdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QpOiBQcm9taXNlPFJlbGF0aW9uTGlzdE9iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBcnRpY2xlKFxuICAgIGFydGljbGVObzogc3RyaW5nLFxuICAgIGFtb3VudDogbnVtYmVyID0gMSxcbiAgICB3YXJlaG91c2VObzogbnVtYmVyID0gMSxcbiAgICBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsXG4gICAgaXNSZXR1cm46IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhYm92ZUxpbmVOcjogbnVtYmVyID0gMCxcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBhd2FpdCB0aGlzLl9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuYWRkVHJhbnNhY3Rpb25MaW5lKFxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICAgIGlmIChhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSkpIHtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBwdWJsaWMgYXN5bmMgYWRkQXJ0aWNsZVRvVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcsIGFydGljbGVObzogc3RyaW5nLCBhbW91bnQ6IG51bWJlciA9IDEsIHdhcmVob3VzZU5vOiBudW1iZXIgPSAxLCBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2UsIGFib3ZlTGluZU5yOiBudW1iZXIgPSAwLCBiZWxvd0xpbmVOcjogbnVtYmVyID0gMCk6IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPiB7XG4gIC8vICAgYXdhaXQgdGhpcy5fY2hlY2tBbmRDcmVhdGVUcmFuc2FjdGlvbigpO1xuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgLy8gICAgIHRoaXMuY29ubmVjdG9yLmFkZFRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQsIFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gIC8vICAgICAgIC50aGVuKGFzeW5jKCByZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gIC8vICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIC8vICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuX3Byb21wdC5zaG93RXJyb3IoZXJyb3IpO1xuICAvLyAgICAgICAgIHJlamVjdChlcnJvcik7XG4gIC8vICAgICAgIH0pXG4gIC8vICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5fcHJvbXB0LnNob3dFcnJvcihyZWFzb24uZ2V0RnVsbEVycm9yU3RyaW5nKCkpO1xuICAvLyAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gIC8vICAgICAgIH0pO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRyYW5zYWN0aW9uTGluZShsaW5lVHlwZTogVHJhbnNhY3Rpb25MaW5lVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnRpY2xlTm86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJlaG91c2VObz86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXNzaW9uQ29kZT86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JldHVybj86IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGF3YWl0IHRoaXMuX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgbGluZVR5cGUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmUoXG4gICAgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGFtb3VudDogbnVtYmVyLFxuICAgIGFydGljbGVCb3VuZDogYm9vbGVhbixcbiAgICByZWZBcnRpY2xlTGluZU5yOiBudW1iZXIsXG4gICAgYWJvdmVMaW5lTnI/OiBudW1iZXIsXG4gICAgYmVsb3dMaW5lTnI/OiBudW1iZXIsXG4gICAgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGF3YWl0IHRoaXMuX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0LCBhbW91bnQsIGFydGljbGVCb3VuZCwgcmVmQXJ0aWNsZUxpbmVOciwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZyxcbiAgICBzaG93T25Eb2N1bWVudHM6IG51bWJlcixcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgYW1vdW50OiBudW1iZXIsXG4gICAgYXJ0aWNsZUJvdW5kOiBib29sZWFuLFxuICAgIHJlZkFydGljbGVMaW5lTnI6IG51bWJlcixcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICBhd2FpdCB0aGlzLl9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25VdWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VMaW5lU2VxdWVuY2UoXG4gICAgbGluZVV1aWQ6IHN0cmluZyxcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcixcbiAgICByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VMaW5lU2VxdWVuY2UodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGxpbmVVdWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBUcmFuc2FjdGlvbkxpbmVVdWlkOiBzdHJpbmcsIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQsIFRyYW5zYWN0aW9uTGluZVV1aWQpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KGxpbmVVdWlkOiBzdHJpbmcsIG5ld1F1YW50aXR5OiBudW1iZXIsIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGxpbmVVdWlkLCBuZXdRdWFudGl0eSlcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbGF0aW9uQnlVc2VyKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5zZXRSZWxhdGlvbkJ5VXNlcih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkKVxuICAgICAgICAudGhlbihhc3luYyAoaXNTdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShpc1N1Y2Nlc3MpO1xuICAgICAgICB9KS5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0QnlSZWxhdGlvbklkKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XG4gICAgY29uc3QgcmVsYXRpb25Ocjogc3RyaW5nID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb25JZCk7XG4gICAgaWYgKHJlbGF0aW9uTnIpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRDdXN0b21lckZ1bGxPYmplY3QoTnVtYmVyKHJlbGF0aW9uTnIpKTtcbiAgICB9XG4gICAgcmV0dXJuIE5VTExfQ1VTVE9NRVJfRlVMTF9PQkpFQ1Q7XG4gIH1cblxuICAvLyBwdWJsaWMgYXN5bmMgc2V0UmVsYXRpb25CeVVzZXIodXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAvLyAgIGNvbnN0IHJlc3BvbnNlOiBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3Iuc2V0UmVsYXRpb25CeVVzZXIodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkKTtcbiAgLy8gICByZXR1cm4gcmVzcG9uc2U7XG4gIC8vIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNSZWNlaXB0U3RhdHVzKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldEdvb2RzUmVjZWlwdFN0YXR1cyh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldEdvb2RzUmVjZWlwdFN0YXR1c1dpdGhIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFN0YW5kYXJkVGV4dFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnkoY291bnRyeUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q291bnRyeT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRDb3VudHJ5KGNvdW50cnlDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaD86IHN0cmluZywgZ3JvdXA/OiBudW1iZXIpOiBQcm9taXNlPENhc2hSZWdpc3RlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldENhc2hSZWdpc3RlcnMoYnJhbmNoLCBncm91cCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpY2VMaXN0cygpOiBQcm9taXNlPFByaWNlTGlzdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFByaWNlTGlzdHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYXRMaXN0cygpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFZhdExpc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCcmFuY2hlcyhicmFuY2hOcj86IHN0cmluZyk6IFByb21pc2U8QnJhbmNoTG92W10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0QnJhbmNoZXMoYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGdldFNhbGVzUGVyc29ucyhkYXRlPzogRGF0ZSk6IFByb21pc2U8U2FsZXNQZXJzb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRTYWxlc1BlcnNvbnMoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGFncyhjYXRlZ29yeTogbnVtYmVyKTogUHJvbWlzZTxUYWdbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRUYWdzKGNhdGVnb3J5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPbkhvbGRDb2RlcygpOiBQcm9taXNlPE9uSG9sZENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRPbkhvbGRDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGdldFdhcmVob3VzZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPFdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFdhcmVob3VzZXMoYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGdldEhpc3RvcmljU3RhdGVWYWx1ZXMoKTogUHJvbWlzZTxDb2RlRGVzY3JpcHRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VzdG9tZXJHcm91cHMoKTogUHJvbWlzZTxDdXN0b21lckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0Q3VzdG9tZXJHcm91cHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaXJzdEFkZHJlc3MocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSk6IEFkZHJlc3Mge1xuICAgIGlmICghcmVsYXRpb24gfHwgIXJlbGF0aW9uLmFkZHJlc3Nlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVsYXRpb24uZ2V0Rmlyc3RBdmFpbGFibGVBZGRyZXNzKFtcbiAgICAgIEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcyxcbiAgICAgIEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzLFxuICAgICAgQWRkcmVzc1R5cGUuVmlzaXRpbmdBZGRyZXNzLFxuICAgICAgQWRkcmVzc1R5cGUuTWFpbGluZ0FkZHJlc3MsXG4gICAgICBBZGRyZXNzVHlwZS5OdXJzaW5nQWRkcmVzc1xuICAgIF0pO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBfY2xlYW5SZWxhdGlvbkJlZm9yZVNhdmUoKTogdm9pZCB7XG4gIC8vICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50c0J5RmlsdGVyKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbi5jb250YWN0T3B0aW9ucywgKChpdGVtOiBDb250YWN0T3B0aW9uKSA9PiB7XG4gIC8vICAgICByZXR1cm4gaXNOaWxsKGl0ZW0udmFsdWUpO1xuICAvLyAgIH0pKTtcbiAgLy8gfVxuXG4gIHByaXZhdGUgYXN5bmMgX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiB8fCAhdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvIHx8ICF0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25Ocikge1xuICAgICAgaWYgKCFhd2FpdCB0aGlzLmNyZWF0ZVRyYW5zYWN0aW9uKCkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgdHJhbnNhY3Rpb25cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
619
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUVsRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUMvRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBZW5HLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBaUJuRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFlOUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG9CQUFvQjtJQUVuRCwwQkFBMEIsQ0FBQyxxQkFBNEM7UUFDNUUsTUFBTSxNQUFNLEdBQXdCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJO2VBQ25ILElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFWSwwQkFBMEIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxLQUFhOztZQUNuRixNQUFNLFFBQVEsR0FBc0MsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDO2lCQUN2SCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixvQ0FBb0M7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLE9BQU8sR0FBWSxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUFBO0lBRVksOEJBQThCLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsU0FBaUI7O1lBQzNGLE1BQU0sUUFBUSxHQUFzQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7aUJBQy9ILEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLG9DQUFvQztnQkFDcEMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sT0FBTyxHQUFZLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQUE7SUFFWSxpQ0FBaUMsQ0FBQyxJQUFZLEVBQUUsVUFBbUI7O1lBQzlFLE1BQU0sUUFBUSxHQUFzQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsaUNBQWlDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztpQkFDekgsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2Ysb0NBQW9DO2dCQUNwQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FBQTtJQUVZLDZCQUE2QixDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFFBQWdCOztZQUN6RixNQUFNLFFBQVEsR0FBc0MsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO2lCQUM3SCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixvQ0FBb0M7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLE9BQU8sR0FBWSxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUFBO0lBRVksaUNBQWlDLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsSUFBVTs7WUFDdkYsTUFBTSxRQUFRLEdBQXNDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztpQkFDN0gsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2Ysb0NBQW9DO2dCQUNwQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FBQTtJQUVZLDhCQUE4QixDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFNBQWlCOztZQUMzRixNQUFNLFFBQVEsR0FBc0MsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO2lCQUMvSCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixvQ0FBb0M7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLE9BQU8sR0FBWSxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUFBO0lBRVksd0JBQXdCLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsRUFBVTs7WUFDOUUsTUFBTSxRQUFRLEdBQXNDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztpQkFDbEgsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2Ysb0NBQW9DO2dCQUNwQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FBQTtJQUVZLG1DQUFtQyxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLElBQVk7O1lBQzNGLE1BQU0sUUFBUSxHQUFzQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsbUNBQW1DLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7aUJBQy9ILEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLG9DQUFvQztnQkFDcEMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sT0FBTyxHQUFZLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQUE7SUFFWSw4QkFBOEIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxlQUF1Qjs7WUFDakcsTUFBTSxRQUFRLEdBQXNDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQztpQkFDckksS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2Ysb0NBQW9DO2dCQUNwQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FBQTtJQUVZLG1DQUFtQyxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLE1BQWM7O1lBQzdGLE1BQU0sUUFBUSxHQUFzQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsbUNBQW1DLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7aUJBQ2pJLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLG9DQUFvQztnQkFDcEMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sT0FBTyxHQUFZLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQUE7SUFFWSw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxJQUFrQixFQUFFLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxFQUFFLE9BQWUsRUFBRTs7WUFDckosTUFBTSxRQUFRLEdBQXNDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztpQkFDckosS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2Ysb0NBQW9DO2dCQUNwQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FBQTtJQUVNLGtCQUFrQixDQUFDLE9BQXFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRVksWUFBWTs7WUFDdkIsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNwRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7S0FBQTtJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVNLHFDQUFxQyxDQUFDLGVBQXVCO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQ0FBcUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRVksaUJBQWlCOztZQUM1QixPQUFPLElBQUksT0FBTyxDQUFVLENBQUMsT0FBaUIsRUFBRSxNQUFnQixFQUFFLEVBQUU7Z0JBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFpQyxFQUFFLEVBQUU7b0JBQzNHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDWCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtvQkFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRU0sY0FBYyxDQUFDLGFBQXFCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLHVCQUF1QixDQUFDLElBQXFCLEVBQUUsYUFBcUI7UUFDekUsT0FBTyxJQUFJLE9BQU8sQ0FBVSxDQUFDLE9BQWlCLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQztpQkFDMUQsSUFBSSxDQUFDLENBQU8sUUFBaUMsRUFBRSxFQUFFO2dCQUNoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDZjtxQkFBTTtvQkFDTCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2Y7WUFDSCxDQUFDLENBQUEsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUU7Z0JBQ2xDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdNLGtCQUFrQixDQUFDLGFBQXFCO1FBQzdDLE9BQU8sSUFBSSxPQUFPLENBQVUsQ0FBQyxPQUFpQixFQUFFLE1BQWdCLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztpQkFDN0MsSUFBSSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7b0JBQ3RCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDZjtZQUNILENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUU7Z0JBQ2xDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVZLGVBQWUsQ0FBQyxRQUFpQixLQUFLOztZQUNqRCxNQUFNLFFBQVEsR0FBNEIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdILElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztLQUFBO0lBRVkscUJBQXFCLENBQUMsZUFBdUI7O1lBQ3hELE9BQU8sSUFBSSxPQUFPLENBQVUsQ0FBQyxPQUFpQixFQUFFLE1BQWdCLEVBQUUsRUFBRTtnQkFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO3FCQUM1QyxJQUFJLENBQUMsQ0FBTyxRQUFpQyxFQUFFLEVBQUU7b0JBQ2hELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDdkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNmO3lCQUFNO3dCQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDZjtnQkFDSCxDQUFDLENBQUEsQ0FBQztxQkFDRCxLQUFLLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUU7b0JBQ2xDLElBQUksTUFBTSxFQUFFO3dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7cUJBQzNEO29CQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVZLHdCQUF3QixDQUFDLFVBQWtCOztZQUN0RCxNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUE0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEosSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO2dCQUNwQixJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUM7S0FBQTtJQUVNLGtCQUFrQixDQUFDLFlBQW9CO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsWUFBb0I7UUFDNUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sK0JBQStCLENBQUMsTUFBYztRQUNuRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQStCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQTRCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVZLGNBQWMsQ0FBQyxRQUE0Qjs7WUFDdEQsT0FBTyxJQUFJLE9BQU8sQ0FBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFPLFFBQTRCLEVBQUUsRUFBRTtvQkFDbEYsK0RBQStEO29CQUMvRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQSxDQUFDO3FCQUNDLEtBQUssQ0FBQyxDQUFDLFFBQTRCLEVBQUUsRUFBRTtvQkFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELDhCQUE4QjtJQUN2QixzQkFBc0IsQ0FBQyxlQUFnQztRQUM1RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVZLFVBQVUsQ0FDckIsU0FBaUIsRUFDakIsU0FBaUIsQ0FBQyxFQUNsQixjQUFzQixDQUFDLEVBQ3ZCLGlCQUF5QixHQUFHLEVBQzVCLFdBQW9CLEtBQUssRUFDekIsY0FBc0IsQ0FBQyxFQUN2QixjQUFzQixDQUFDOztZQUV2QixNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQy9FLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNySyxJQUFJLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVELDZRQUE2UTtJQUM3USw2Q0FBNkM7SUFDN0MscUVBQXFFO0lBQ3JFLDhLQUE4SztJQUM5SywyREFBMkQ7SUFDM0QsNkJBQTZCO0lBQzdCLHdCQUF3QjtJQUN4Qix5Q0FBeUM7SUFDekMseUJBQXlCO0lBQ3pCLFdBQVc7SUFDWCwrQ0FBK0M7SUFDL0MsK0RBQStEO0lBQy9ELHlCQUF5QjtJQUN6QixZQUFZO0lBQ1osUUFBUTtJQUNSLElBQUk7SUFFUyxrQkFBa0IsQ0FBQyxRQUE2QixFQUM3QixTQUFpQixFQUNqQixNQUFjLEVBQ2QsV0FBb0IsRUFDcEIsY0FBdUIsRUFDdkIsUUFBa0IsRUFDbEIsV0FBb0IsRUFDcEIsV0FBb0IsRUFDcEIsV0FBb0IsSUFBSTs7WUFDdEQsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUN4QyxPQUFPLElBQUksT0FBTyxDQUEwQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO3FCQUMxSyxJQUFJLENBQUMsQ0FBTyxRQUFpQyxFQUFFLEVBQUU7b0JBQ2hELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNYLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtvQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRVksV0FBVyxDQUN0QixlQUF1QixFQUN2QixJQUFZLEVBQ1osTUFBYyxFQUNkLFlBQXFCLEVBQ3JCLGdCQUF3QixFQUN4QixXQUFvQixFQUNwQixXQUFvQixFQUNwQixXQUFvQixJQUFJOztZQUN4QixNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxPQUFPLENBQTBCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO3FCQUMzSyxJQUFJLENBQUMsQ0FBTyxRQUFpQyxFQUFFLEVBQUU7b0JBQ2hELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNYLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtvQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRVksd0JBQXdCLENBQ25DLGVBQXVCLEVBQ3ZCLGVBQXVCLEVBQ3ZCLElBQVksRUFDWixNQUFjLEVBQ2QsWUFBcUIsRUFDckIsZ0JBQXdCLEVBQ3hCLFdBQW9CLEVBQ3BCLFdBQW9COztZQUNwQixNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxPQUFPLENBQTBCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQztxQkFDOUksSUFBSSxDQUFDLENBQU8sUUFBaUMsRUFBRSxFQUFFO29CQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUM7cUJBQ0QsS0FBSyxDQUFDLENBQUMsTUFBd0IsRUFBRSxFQUFFO29CQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFTSxrQkFBa0IsQ0FDdkIsUUFBZ0IsRUFDaEIsV0FBb0IsRUFDcEIsV0FBb0IsRUFDcEIsV0FBb0IsSUFBSTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUEwQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO2lCQUNoSCxJQUFJLENBQUMsQ0FBTyxRQUFpQyxFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUU7Z0JBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVZLHFCQUFxQixDQUFDLGVBQXVCLEVBQUUsbUJBQTJCLEVBQUUsV0FBb0IsSUFBSTs7WUFDL0csT0FBTyxJQUFJLE9BQU8sQ0FBMEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzlELElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDO3FCQUN2RSxJQUFJLENBQUMsQ0FBTyxRQUFpQyxFQUFFLEVBQUU7b0JBQ2hELElBQUksTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQ3BELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDNUM7b0JBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFO3dCQUN0QixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ25CO3lCQUFNO3dCQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDbEI7Z0JBQ0gsQ0FBQyxDQUFBLENBQUM7cUJBQ0QsS0FBSyxDQUFDLENBQUMsTUFBd0IsRUFBRSxFQUFFO29CQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFWSw2QkFBNkIsQ0FBQyxRQUFnQixFQUFFLFdBQW1CLEVBQUUsV0FBb0IsSUFBSTs7WUFDeEcsT0FBTyxJQUFJLE9BQU8sQ0FBMEIsQ0FBQyxPQUFpQixFQUFFLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQztxQkFDOUcsSUFBSSxDQUFDLENBQU8sUUFBaUMsRUFBRSxFQUFFO29CQUNoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7d0JBQ3RCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDNUM7b0JBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtvQkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRVksaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxRQUFnQjs7WUFDL0QsT0FBTyxJQUFJLE9BQU8sQ0FBVSxDQUFDLE9BQWlCLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO3FCQUMvRixJQUFJLENBQUMsQ0FBTyxTQUFrQixFQUFFLEVBQUU7b0JBQ2pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckIsQ0FBQyxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUU7b0JBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVZLGlDQUFpQyxDQUFDLFVBQWtCOztZQUMvRCxNQUFNLFVBQVUsR0FBVyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUUsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDdkU7WUFDRCxPQUFPLHlCQUF5QixDQUFDO1FBQ25DLENBQUM7S0FBQTtJQUVELHlGQUF5RjtJQUN6Rix3SEFBd0g7SUFDeEgscUJBQXFCO0lBQ3JCLElBQUk7SUFFUyxxQkFBcUIsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDaEUsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLENBQUM7S0FBQTtJQUVZLGdDQUFnQyxDQUFDLE9BQWUsRUFBRSxNQUFjOztZQUMzRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEYsQ0FBQztLQUFBO0lBRVksNEJBQTRCLENBQUMsT0FBNEM7O1lBQ3BGLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLENBQUM7S0FBQTtJQUVZLHNDQUFzQyxDQUFDLE9BQXNEOztZQUN4RyxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxDQUFDO0tBQUE7SUFFTSxZQUFZLENBQUMsWUFBb0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsWUFBb0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxNQUFjO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsR0FBVztRQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxXQUFtQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsS0FBYztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxVQUFrQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFXO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxRQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWlCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxlQUFlLENBQUMsUUFBeUI7UUFDOUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUVELE9BQU8sUUFBUSxDQUFDLHdCQUF3QixDQUFDO1lBQ3ZDLFdBQVcsQ0FBQyxlQUFlO1lBQzNCLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLFdBQVcsQ0FBQyxlQUFlO1lBQzNCLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLFdBQVcsQ0FBQyxjQUFjO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFWSxzQkFBc0IsQ0FBQyxPQUE4Qjs7WUFDaEUsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsQ0FBQztLQUFBO0lBRVkseUJBQXlCLENBQUMsa0JBQXNDOztZQUMzRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7S0FBQTtJQUlELDZDQUE2QztJQUM3QyxtSUFBbUk7SUFDbkksaUNBQWlDO0lBQ2pDLFNBQVM7SUFDVCxJQUFJO0lBRVUsMEJBQTBCOztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO2dCQUNsSSxJQUFJLENBQUMsQ0FBQSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBLEVBQUU7b0JBQ25DLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2lCQUM1QzthQUNGO1FBQ0gsQ0FBQztLQUFBOzs7O1lBbG9CRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0FkZHJlc3NUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vYWRkcmVzcy10eXBlLmVudW1cIjtcbmltcG9ydCB7RGlzY291bnRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZGlzY291bnQtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1BlbmRpbmdSZWFzb25UeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vcGVuZGluZy1yZWFzb24tdHlwZS5lbnVtXCI7XG5pbXBvcnQge1NlcXVlbmNlTmFtZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0XCI7XG5pbXBvcnQge0JyYW5jaExvdn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9icmFuY2gtbG92LmJvXCI7XG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXJlZ2lzdGVyXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge0NvZGVEZXNjcmlwdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb2RlLWRlc2NyaXB0aW9uXCI7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY291bnRyeS5ib1wiO1xuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZnVsbC1vYmplY3QuYm9cIjtcbmltcG9ydCB7Q3VzdG9tZXJHcm91cH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1ncm91cC5ib1wiO1xuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kYXRhLXNlcnZpY2UtcmVzcG9uc2UtZGF0YVwiO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvXCI7XG5pbXBvcnQge0xpbmVPcGVyYXRpb25TdGF0dXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tc3RhdHVzLmJvXCI7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm9cIjtcbmltcG9ydCB7TlVMTF9DVVNUT01FUl9GVUxMX09CSkVDVH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9udWwtcmVsYXRpb24tb2JqZWN0XCI7XG5pbXBvcnQge09uSG9sZENvZGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb24taG9sZC1jb2RlLmJvXCI7XG5pbXBvcnQge1ByaWNlTGlzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmljZS1saXN0XCI7XG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZVwiO1xuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcbmltcG9ydCB7UmVsYXRpb25Qcml2YWN5U2V0dGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm9cIjtcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7U2FsZXNQZXJzb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2FsZXMtcGVyc29uLmJvXCI7XG5pbXBvcnQge1RhZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90YWdcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFydGljbGUtd2FyZWhvdXNlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy1yZXF1ZXN0XCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy5ib1wiO1xuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0XCI7XG5pbXBvcnQge1ZhdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC92YXRcIjtcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHt0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtTdGFuZGFyZFRleHR9IGZyb20gXCIuLi9tb2RlbC9zdGFuZGFyZC10ZXh0XCI7XG5pbXBvcnQge1BlbmRpbmdSZWFzb25TZXJ2aWNlfSBmcm9tIFwiLi9wZW5kaW5nLXJlYXNvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge1JlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlY2VpdmUtZ29vZHMtZm9yLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7R29vZHNSZWNlaXB0U3RhdHVzV2l0aEhpc3Rvcnl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcmVjZWlwdC1zdGF0dXMtd2l0aC1oaXN0b3J5LmJvXCI7XG5pbXBvcnQge1JlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1jb3JyZWN0aW9uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQtcmVxdWVzdFwiO1xuaW1wb3J0IHtBcnRpY2xlTGlnaHR9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvXCI7XG5pbXBvcnQge1R1cm5vdmVyR3JvdXBJbWFnZX0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3R1cm5vdmVyLWdyb3VwLWltYWdlLmJvXCI7XG5pbXBvcnQge01haW5BcnRpY2xlfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvbWFpbi1hcnRpY2xlLmJvXCI7XG5pbXBvcnQge0dldFB1cmNoYXNlUG9ydGFsTGluZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2UtcG9ydGFsLWxpbmVcIjtcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLXBvcnRhbC1saW5lLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoUmVzdWx0fSBmcm9tIFwiLi4vbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFBlbmRpbmdSZWFzb25TZXJ2aWNlIHtcblxuICBwdWJsaWMgcGVuZGluZ0xpbmVPcGVyYXRpb25TdGF0dXMobGluZU9wZXJhdGlvblN0YXR1c2VzOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10pOiBMaW5lT3BlcmF0aW9uU3RhdHVzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXMgPSBsaW5lT3BlcmF0aW9uU3RhdHVzZXMuZmluZChsaW5lID0+IGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTkVcbiAgICAgICYmIGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT04pO1xuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHJpY2VUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHwgYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlKHV1aWQsIGxpbmVVdWlkLCBwcmljZSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUmVmZXJlbmNlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQsIGxpbmVVdWlkLCByZWZlcmVuY2UpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQsIGRlZmluaXRpdmUpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVF1YW50aXR5VHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkLCBsaW5lVXVpZCwgcXVhbnRpdHkpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURlbGl2ZXJ5RGF0ZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQsIGxpbmVVdWlkLCBkYXRlKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQcmljZUxpc3RUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZUxpc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QodXVpZCwgbGluZVV1aWQsIHByaWNlTGlzdClcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlVmF0VHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZCwgbGluZVV1aWQsIGlkKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAvLyB0b2RvOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDb21taXNzaW9uQ29kZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlV2FyZWhvdXNlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgd2FyZWhvdXNlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlKHV1aWQsIGxpbmVVdWlkLCB3YXJlaG91c2VOdW1iZXIpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURlbGl2ZXJ5TWV0aG9kVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgfCBib29sZWFuID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZCwgbGluZVV1aWQsIG1ldGhvZClcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gdG9kbzogZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlRGlzY291bnRUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGRpc2NvdW50OiBudW1iZXIsIHJlYXNvbjogc3RyaW5nID0gXCJcIiwgY29kZTogc3RyaW5nID0gXCJcIik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB8IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZCwgbGluZVV1aWQsIHR5cGUsIGRpc2NvdW50LCByZWFzb24sIGNvZGUpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRvZG86IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSk7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVJlbGF0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIHRoaXMuX2NsZWFuUmVsYXRpb25CZWZvcmVTYXZlKCk7XG4gICAgaWYgKCF0aGlzLnJlbGF0aW9uLnJlbGF0aW9uSWQpIHtcbiAgICAgIHRoaXMucmVsYXRpb24gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5pbnNlcnRDdXN0b21lcih0aGlzLnJlbGF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWxhdGlvbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnVwZGF0ZUN1c3RvbWVyKHRoaXMucmVsYXRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odGhpcy5yZWxhdGlvbi5yZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZXF1ZW5jZVZhbHVlKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFNlcXVlbmNlVmFsdWUoU2VxdWVuY2VOYW1lLlJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZShhcnRpY2xlTGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25MaW5lSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVUcmFuc2FjdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5jcmVhdGVUcmFuc2FjdGlvbihUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgXCIxXCIpLnRoZW4oKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5FeGlzdGluZ1RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCB0cmFuc2FjdGlvbk5vKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRXhpc3RpbmdUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTnI6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZCwgdHJhbnNhY3Rpb25OcilcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpXG4gICAgICAgIC50aGVuKChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uVXBkYXRlZC5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmNvbW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVUcmFuc2FjdGlvbihjbG9zZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCk7XG4gICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVRyYW5zYWN0aW9uQnlVdWlkKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3Iuc2F2ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uVXVpZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlYXNvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dFcnJvcihyZWFzb24uZ2V0RnVsbEVycm9yU3RyaW5nKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24ocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy5fY2hlY2tBbmRDcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIHJlbGF0aW9uSWQpO1xuICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXN1bHQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHVybm92ZXJHcm91cHMoKTogUHJvbWlzZTxUdXJub3Zlckdyb3VwSW1hZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmFydGljbGVDb25uZWN0b3IuZ2V0VHVybm92ZXJHcm91cHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFya2V0aW5nQ29kZXMoKTogUHJvbWlzZTxNYXJrZXRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGdldEFydGljbGVzKHJlcXVlc3Q6IEFydGljbGVFeHRlbmRlZFJlcXVlc3QpOiBQcm9taXNlPEFydGljbGVMaWdodFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYXJ0aWNsZUNvbm5lY3Rvci5zZWFyY2hBcnRpY2xlcyhyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYWluQXJ0aWNsZXMoKTogUHJvbWlzZTxNYWluQXJ0aWNsZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYXJ0aWNsZUNvbm5lY3Rvci5nZXRNYWluQXJ0aWNsZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIocmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLnVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uKS50aGVuKGFzeW5jIChyZXNwb25zZTogQ3VzdG9tZXJGdWxsT2JqZWN0KSA9PiB7XG4gICAgICAgIC8vIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbiA9IHJlbGF0aW9uO1xuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVzcG9uc2U6IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWxpdmVyeU1ldGhvZHMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldERlbGl2ZXJ5TWV0aG9kcygpO1xuICB9XG5cbiAgcHVibGljIGdldERlbGl2ZXJ5T3B0aW9ucygpOiBQcm9taXNlPERlbGl2ZXJ5T3B0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0RGVsaXZlcnlPcHRpb25zKCk7XG4gIH1cblxuICAvLyB0b2RvOiBtb3ZlIHRvIHJlbGF0aW9uIGFwaT9cbiAgcHVibGljIGdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QpOiBQcm9taXNlPFJlbGF0aW9uTGlzdE9iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBcnRpY2xlKFxuICAgIGFydGljbGVObzogc3RyaW5nLFxuICAgIGFtb3VudDogbnVtYmVyID0gMSxcbiAgICB3YXJlaG91c2VObzogbnVtYmVyID0gMSxcbiAgICBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsXG4gICAgaXNSZXR1cm46IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhYm92ZUxpbmVOcjogbnVtYmVyID0gMCxcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBhd2FpdCB0aGlzLl9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuYWRkVHJhbnNhY3Rpb25MaW5lKFxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICAgIGlmIChhd2FpdCB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZSkpIHtcbiAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBwdWJsaWMgYXN5bmMgYWRkQXJ0aWNsZVRvVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcsIGFydGljbGVObzogc3RyaW5nLCBhbW91bnQ6IG51bWJlciA9IDEsIHdhcmVob3VzZU5vOiBudW1iZXIgPSAxLCBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2UsIGFib3ZlTGluZU5yOiBudW1iZXIgPSAwLCBiZWxvd0xpbmVOcjogbnVtYmVyID0gMCk6IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPiB7XG4gIC8vICAgYXdhaXQgdGhpcy5fY2hlY2tBbmRDcmVhdGVUcmFuc2FjdGlvbigpO1xuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgLy8gICAgIHRoaXMuY29ubmVjdG9yLmFkZFRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQsIFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gIC8vICAgICAgIC50aGVuKGFzeW5jKCByZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gIC8vICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIC8vICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuX3Byb21wdC5zaG93RXJyb3IoZXJyb3IpO1xuICAvLyAgICAgICAgIHJlamVjdChlcnJvcik7XG4gIC8vICAgICAgIH0pXG4gIC8vICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5fcHJvbXB0LnNob3dFcnJvcihyZWFzb24uZ2V0RnVsbEVycm9yU3RyaW5nKCkpO1xuICAvLyAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gIC8vICAgICAgIH0pO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRyYW5zYWN0aW9uTGluZShsaW5lVHlwZTogVHJhbnNhY3Rpb25MaW5lVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnRpY2xlTm86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJlaG91c2VObz86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXNzaW9uQ29kZT86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JldHVybj86IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGF3YWl0IHRoaXMuX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgbGluZVR5cGUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmUoXG4gICAgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGFtb3VudDogbnVtYmVyLFxuICAgIGFydGljbGVCb3VuZDogYm9vbGVhbixcbiAgICByZWZBcnRpY2xlTGluZU5yOiBudW1iZXIsXG4gICAgYWJvdmVMaW5lTnI/OiBudW1iZXIsXG4gICAgYmVsb3dMaW5lTnI/OiBudW1iZXIsXG4gICAgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIGF3YWl0IHRoaXMuX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0LCBhbW91bnQsIGFydGljbGVCb3VuZCwgcmVmQXJ0aWNsZUxpbmVOciwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZyxcbiAgICBzaG93T25Eb2N1bWVudHM6IG51bWJlcixcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgYW1vdW50OiBudW1iZXIsXG4gICAgYXJ0aWNsZUJvdW5kOiBib29sZWFuLFxuICAgIHJlZkFydGljbGVMaW5lTnI6IG51bWJlcixcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICBhd2FpdCB0aGlzLl9jaGVja0FuZENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25VdWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VMaW5lU2VxdWVuY2UoXG4gICAgbGluZVV1aWQ6IHN0cmluZyxcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcixcbiAgICByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rvci5jaGFuZ2VMaW5lU2VxdWVuY2UodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGxpbmVVdWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBUcmFuc2FjdGlvbkxpbmVVdWlkOiBzdHJpbmcsIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQsIFRyYW5zYWN0aW9uTGluZVV1aWQpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAoYXdhaXQgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QocmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eShsaW5lVXVpZDogc3RyaW5nLCBuZXdRdWFudGl0eTogbnVtYmVyLCByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdG9yLmNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby51dWlkLCBsaW5lVXVpZCwgbmV3UXVhbnRpdHkpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9KS5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0b3Iuc2V0UmVsYXRpb25CeVVzZXIodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIHVzZXJuYW1lLCBwYXNzd29yZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKGlzU3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHJlc29sdmUoaXNTdWNjZXNzKTtcbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbWVyRnVsbE9iamVjdEJ5UmVsYXRpb25JZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xuICAgIGNvbnN0IHJlbGF0aW9uTnI6IHN0cmluZyA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xuICAgIGlmIChyZWxhdGlvbk5yKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KE51bWJlcihyZWxhdGlvbk5yKSk7XG4gICAgfVxuICAgIHJldHVybiBOVUxMX0NVU1RPTUVSX0ZVTExfT0JKRUNUO1xuICB9XG5cbiAgLy8gcHVibGljIGFzeW5jIHNldFJlbGF0aW9uQnlVc2VyKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgLy8gICBjb25zdCByZXNwb25zZTogYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNldFJlbGF0aW9uQnlVc2VyKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnV1aWQsIHVzZXJuYW1lLCBwYXNzd29yZCk7XG4gIC8vICAgcmV0dXJuIHJlc3BvbnNlO1xuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUmVjZWlwdFN0YXR1cyh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1JlY2VpcHRTdGF0dXNXaXRoSGlzdG9yeT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRHb29kc1JlY2VpcHRTdGF0dXModHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1JlY2VpcHRTdGF0dXNXaXRoSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1JlY2VpcHRTdGF0dXNXaXRoSGlzdG9yeT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRHb29kc1JlY2VpcHRTdGF0dXNXaXRoSGlzdG9yeSh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXIocmVxdWVzdDogUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb24ocmVxdWVzdDogUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTdGFuZGFyZFRleHRbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPEFydGljbGVGdWxsT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R29vZElkRnJvbUFydGljbGVOcihza3U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEdvb2RJZEZyb21BcnRpY2xlTnIoc2t1KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5KGNvdW50cnlDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvdW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0Q291bnRyeShjb3VudHJ5Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2g/OiBzdHJpbmcsIGdyb3VwPzogbnVtYmVyKTogUHJvbWlzZTxDYXNoUmVnaXN0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaCwgZ3JvdXApO1xuICB9XG5cbiAgcHVibGljIGdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGdldFByaWNlTGlzdHMoKTogUHJvbWlzZTxQcmljZUxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRQcmljZUxpc3RzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmF0TGlzdHMoKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRWYXRMaXN0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QnJhbmNoZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPEJyYW5jaExvdltdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEJyYW5jaGVzKGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTYWxlc1BlcnNvbnMoZGF0ZT86IERhdGUpOiBQcm9taXNlPFNhbGVzUGVyc29uW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0U2FsZXNQZXJzb25zKGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldFRhZ3MoY2F0ZWdvcnk6IG51bWJlcik6IFByb21pc2U8VGFnW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0VGFncyhjYXRlZ29yeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0T25Ib2xkQ29kZXMoKTogUHJvbWlzZTxPbkhvbGRDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0T25Ib2xkQ29kZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXYXJlaG91c2VzKGJyYW5jaE5yPzogc3RyaW5nKTogUHJvbWlzZTxXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRXYXJlaG91c2VzKGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk6IFByb21pc2U8Q29kZURlc2NyaXB0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcygpO1xuICB9XG5cbiAgcHVibGljIGdldEN1c3RvbWVyR3JvdXBzKCk6IFByb21pc2U8Q3VzdG9tZXJHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEN1c3RvbWVyR3JvdXBzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rmlyc3RBZGRyZXNzKHJlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUpOiBBZGRyZXNzIHtcbiAgICBpZiAoIXJlbGF0aW9uIHx8ICFyZWxhdGlvbi5hZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbGF0aW9uLmdldEZpcnN0QXZhaWxhYmxlQWRkcmVzcyhbXG4gICAgICBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MsXG4gICAgICBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcyxcbiAgICAgIEFkZHJlc3NUeXBlLlZpc2l0aW5nQWRkcmVzcyxcbiAgICAgIEFkZHJlc3NUeXBlLk1haWxpbmdBZGRyZXNzLFxuICAgICAgQWRkcmVzc1R5cGUuTnVyc2luZ0FkZHJlc3NcbiAgICBdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZVBvcnRhbExpbmVzKHJlcXVlc3Q6IEdldFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8UHVyY2hhc2VQb3J0YWxMaW5lPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmU6IFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci51cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzKHB1cmNoYXNlUG9ydGFsTGluZSk7XG4gIH1cblxuXG5cbiAgLy8gcHJpdmF0ZSBfY2xlYW5SZWxhdGlvbkJlZm9yZVNhdmUoKTogdm9pZCB7XG4gIC8vICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50c0J5RmlsdGVyKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbi5jb250YWN0T3B0aW9ucywgKChpdGVtOiBDb250YWN0T3B0aW9uKSA9PiB7XG4gIC8vICAgICByZXR1cm4gaXNOaWxsKGl0ZW0udmFsdWUpO1xuICAvLyAgIH0pKTtcbiAgLy8gfVxuXG4gIHByaXZhdGUgYXN5bmMgX2NoZWNrQW5kQ3JlYXRlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiB8fCAhdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvIHx8ICF0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25Ocikge1xuICAgICAgaWYgKCFhd2FpdCB0aGlzLmNyZWF0ZVRyYW5zYWN0aW9uKCkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgdHJhbnNhY3Rpb25cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -30,5 +30,9 @@ export * from "./lib/component/transaction-quick-access/transaction-quick-access
30
30
  export * from "./lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.module";
31
31
  export * from "./lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.component";
32
32
  export * from "./lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.module";
33
+ export * from "./lib/component/transaction-confirmation-details/transaction-confirmation-details.component";
34
+ export * from "./lib/component/transaction-confirmation-details/transaction-confirmation-details.module";
35
+ export * from "./lib/component/transaction-confirmation-history/transaction-confirmation-history.component";
36
+ export * from "./lib/component/transaction-confirmation-history/transaction-confirmation-history.module";
33
37
  export * from "./lib/service/transaction.service";
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyx1RUFBdUUsQ0FBQztBQUN0RixjQUFjLG9FQUFvRSxDQUFDO0FBRW5GLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyw2RkFBNkYsQ0FBQztBQUM1RyxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyxzR0FBc0csQ0FBQztBQUNySCxjQUFjLG1HQUFtRyxDQUFDO0FBQ2xILGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyw0SUFBNEksQ0FBQztBQUMzSixjQUFjLHlJQUF5SSxDQUFDO0FBQ3hKLGNBQWMsb0lBQW9JLENBQUM7QUFDbkosY0FBYyxpSUFBaUksQ0FBQztBQUdoSixjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC5tb2R1bGVcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvc2hvcHBpbmctY2FydC9zaG9wcGluZy1jYXJ0LmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC9zaG9wcGluZy1jYXJ0LXByZXZpZXcvc2hvcHBpbmctY2FydC1wcmV2aWV3LmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQtcHJldmlldy9zaG9wcGluZy1jYXJ0LXByZXZpZXcubW9kdWxlXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1zZWFyY2guY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLXNlYXJjaC5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLWhlYWRlci90cmFuc2FjdGlvbi1oZWFkZXIubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1vcmRlci90cmFuc2FjdGlvbi1oZWFkZXItb3JkZXIuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1vcmRlci90cmFuc2FjdGlvbi1oZWFkZXItb3JkZXIubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS90cmFuc2FjdGlvbi1oZWFkZXItZGVsaXZlcnkuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS90cmFuc2FjdGlvbi1oZWFkZXItZGVsaXZlcnkubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1yZWxhdGlvbi90cmFuc2FjdGlvbi1oZWFkZXItcmVsYXRpb24uY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1yZWxhdGlvbi90cmFuc2FjdGlvbi1oZWFkZXItcmVsYXRpb24ubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS90cmFuc2FjdGlvbi1saW5lLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUvdHJhbnNhY3Rpb24tbGluZS5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lLWdyaWQvdHJhbnNhY3Rpb24tbGluZS1ncmlkLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUtZ3JpZC90cmFuc2FjdGlvbi1saW5lLWdyaWQubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZXMvdHJhbnNhY3Rpb24tbGluZXMuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZXMvdHJhbnNhY3Rpb24tbGluZXMubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tdG90YWxzL3RyYW5zYWN0aW9uLXRvdGFscy5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi10b3RhbHMvdHJhbnNhY3Rpb24tdG90YWxzLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItY29uZmlybWF0aW9uL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1jb25maXJtYXRpb24uY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1jb25maXJtYXRpb24vdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWNvbmZpcm1hdGlvbi5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1yZWNlaXZlZC1nb29kcy5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1yZWNlaXZlZC1nb29kcy5tb2R1bGVcIjtcclxuXHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XHJcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyx1RUFBdUUsQ0FBQztBQUN0RixjQUFjLG9FQUFvRSxDQUFDO0FBRW5GLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyw2RkFBNkYsQ0FBQztBQUM1RyxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyxzR0FBc0csQ0FBQztBQUNySCxjQUFjLG1HQUFtRyxDQUFDO0FBQ2xILGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyw0SUFBNEksQ0FBQztBQUMzSixjQUFjLHlJQUF5SSxDQUFDO0FBQ3hKLGNBQWMsb0lBQW9JLENBQUM7QUFDbkosY0FBYyxpSUFBaUksQ0FBQztBQUVoSixjQUFjLDZGQUE2RixDQUFDO0FBQzVHLGNBQWMsMEZBQTBGLENBQUM7QUFDekcsY0FBYyw2RkFBNkYsQ0FBQztBQUM1RyxjQUFjLDBGQUEwRixDQUFDO0FBRXpHLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L2NoZWNrb3V0L2NoZWNrb3V0LmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L2NoZWNrb3V0L2NoZWNrb3V0Lm1vZHVsZVwiO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvc2hvcHBpbmctY2FydC9zaG9wcGluZy1jYXJ0Lm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQtcHJldmlldy9zaG9wcGluZy1jYXJ0LXByZXZpZXcuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvc2hvcHBpbmctY2FydC1wcmV2aWV3L3Nob3BwaW5nLWNhcnQtcHJldmlldy5tb2R1bGVcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24uY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24ubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLXNlYXJjaC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2VhcmNoLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLWhlYWRlci90cmFuc2FjdGlvbi1oZWFkZXIuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLW9yZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1vcmRlci5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLW9yZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1vcmRlci5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLWRlbGl2ZXJ5L3RyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLWRlbGl2ZXJ5L3RyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLXJlbGF0aW9uL3RyYW5zYWN0aW9uLWhlYWRlci1yZWxhdGlvbi5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1oZWFkZXIvdHJhbnNhY3Rpb24taGVhZGVyLXJlbGF0aW9uL3RyYW5zYWN0aW9uLWhlYWRlci1yZWxhdGlvbi5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLWxpbmUuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS90cmFuc2FjdGlvbi1saW5lLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUtZ3JpZC90cmFuc2FjdGlvbi1saW5lLWdyaWQuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS1ncmlkL3RyYW5zYWN0aW9uLWxpbmUtZ3JpZC5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lcy90cmFuc2FjdGlvbi1saW5lcy5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lcy90cmFuc2FjdGlvbi1saW5lcy5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi10b3RhbHMvdHJhbnNhY3Rpb24tdG90YWxzLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXRvdGFscy90cmFuc2FjdGlvbi10b3RhbHMubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MubW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1jb25maXJtYXRpb24vdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWNvbmZpcm1hdGlvbi5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWNvbmZpcm1hdGlvbi90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItY29uZmlybWF0aW9uLm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MtcmVjZWl2ZWQtZ29vZHMvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MtcmVjZWl2ZWQtZ29vZHMvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXJlY2VpdmVkLWdvb2RzLm1vZHVsZVwiO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jb25maXJtYXRpb24tZGV0YWlscy90cmFuc2FjdGlvbi1jb25maXJtYXRpb24tZGV0YWlscy5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jb25maXJtYXRpb24tZGV0YWlscy90cmFuc2FjdGlvbi1jb25maXJtYXRpb24tZGV0YWlscy5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jb25maXJtYXRpb24taGlzdG9yeS90cmFuc2FjdGlvbi1jb25maXJtYXRpb24taGlzdG9yeS5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jb25maXJtYXRpb24taGlzdG9yeS90cmFuc2FjdGlvbi1jb25maXJtYXRpb24taGlzdG9yeS5tb2R1bGVcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcclxuIl19