buildingproduct-library 0.2.7

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 (293) hide show
  1. package/README.md +24 -0
  2. package/assets/fonts/arial-webfont.woff +0 -0
  3. package/assets/fonts/arial-webfont.woff2 +0 -0
  4. package/assets/fonts/arialblack-webfont.woff +0 -0
  5. package/assets/fonts/arialblack-webfont.woff2 +0 -0
  6. package/assets/fonts/arialbold-webfont.woff +0 -0
  7. package/assets/fonts/arialbold-webfont.woff2 +0 -0
  8. package/assets/fonts/helveticaneue.woff +0 -0
  9. package/assets/fonts/helveticaneue.woff2 +0 -0
  10. package/assets/fonts/helveticaneuemedium-webfont.woff +0 -0
  11. package/assets/fonts/helveticaneuemedium-webfont.woff2 +0 -0
  12. package/assets/fonts/helveticaneuethin-webfont.woff +0 -0
  13. package/assets/fonts/helveticaneuethin-webfont.woff2 +0 -0
  14. package/assets/fonts/icomoon.ttf +0 -0
  15. package/assets/fonts/icomoon.woff +0 -0
  16. package/assets/images/ActivateIcon.svg +14 -0
  17. package/assets/images/AlertIcon.svg +3 -0
  18. package/assets/images/DisableIcon.svg +3 -0
  19. package/assets/images/Divider line.svg +3 -0
  20. package/assets/images/EditIconEnabled.svg +6 -0
  21. package/assets/images/EditIcondisabled.svg +6 -0
  22. package/assets/images/Grid-dark.svg +8 -0
  23. package/assets/images/Grid-light.svg +8 -0
  24. package/assets/images/Hamburger_icon_white.png +0 -0
  25. package/assets/images/Icon-awesome-user-alt-white.svg +13 -0
  26. package/assets/images/Icon-ionic-ios-arrow-down.svg +3 -0
  27. package/assets/images/Icon-ionic-ios-help-circle.svg +6 -0
  28. package/assets/images/Icon-ionic-ios-home.svg +6 -0
  29. package/assets/images/Icon-ionic-ios-settings.svg +6 -0
  30. package/assets/images/Icon-material-shopping-cart.svg +7 -0
  31. package/assets/images/Invited.svg +4 -0
  32. package/assets/images/List-dark.svg +3 -0
  33. package/assets/images/List-light.svg +3 -0
  34. package/assets/images/PDP-add-more.svg +3 -0
  35. package/assets/images/PDP-colour-selected.svg +7 -0
  36. package/assets/images/PDP-quote-exists.svg +12 -0
  37. package/assets/images/PDP-remove-icon.svg +3 -0
  38. package/assets/images/Selected icon.svg +3 -0
  39. package/assets/images/Selected-icon.svg +3 -0
  40. package/assets/images/banner-image.png +0 -0
  41. package/assets/images/br_down.png +0 -0
  42. package/assets/images/cart-shopping-fast.svg +6 -0
  43. package/assets/images/check-square.svg +3 -0
  44. package/assets/images/checkmark-circle-outline.svg +4 -0
  45. package/assets/images/closegrey.svg +71 -0
  46. package/assets/images/dashboard.svg +35 -0
  47. package/assets/images/delivery.svg +11 -0
  48. package/assets/images/download-icon.svg +7 -0
  49. package/assets/images/downloads-dark.svg +6 -0
  50. package/assets/images/downloads-light.svg +6 -0
  51. package/assets/images/erroricon.svg +3 -0
  52. package/assets/images/home-icon.svg +6 -0
  53. package/assets/images/home_banner.png +0 -0
  54. package/assets/images/ic_calender.svg +15 -0
  55. package/assets/images/icon-clock-icon.svg +10 -0
  56. package/assets/images/icon-feather-edit.svg +6 -0
  57. package/assets/images/icon-flashing-black.svg +3 -0
  58. package/assets/images/icon-flashing-white.svg +3 -0
  59. package/assets/images/icon-ionic-ios-search.svg +3 -0
  60. package/assets/images/icon-logout.svg +6 -0
  61. package/assets/images/icon-mail-icon.svg +7 -0
  62. package/assets/images/icon-metro-info.svg +3 -0
  63. package/assets/images/ionic-arrow-back.svg +3 -0
  64. package/assets/images/ionic-ios-feather-phone.svg +3 -0
  65. package/assets/images/ionic-ios-help-circle-outline.svg +6 -0
  66. package/assets/images/ionic-ios-location-outline.svg +3 -0
  67. package/assets/images/ionic-ios-my-location.svg +3 -0
  68. package/assets/images/ionic-ios-users-outline.svg +3 -0
  69. package/assets/images/ionic-trash.svg +3 -0
  70. package/assets/images/logo-black.svg +16 -0
  71. package/assets/images/logo-dark.svg +48 -0
  72. package/assets/images/logo.svg +16 -0
  73. package/assets/images/my-account.svg +21 -0
  74. package/assets/images/my-list.svg +43 -0
  75. package/assets/images/my-team.svg +17 -0
  76. package/assets/images/newsfeed-banner.jpg +0 -0
  77. package/assets/images/newtab.svg +11 -0
  78. package/assets/images/no-saved-cart.svg +3 -0
  79. package/assets/images/open-account-logout.png +0 -0
  80. package/assets/images/orders.svg +23 -0
  81. package/assets/images/pdf-icon.svg +45 -0
  82. package/assets/images/pdp-noimage.svg +21 -0
  83. package/assets/images/pickup.svg +8 -0
  84. package/assets/images/plp-grid-noimage.svg +22 -0
  85. package/assets/images/plp-list-noimage.svg +16 -0
  86. package/assets/images/product-banner.png +0 -0
  87. package/assets/images/product-details-dark.svg +10 -0
  88. package/assets/images/product-details-light.svg +10 -0
  89. package/assets/images/products.svg +34 -0
  90. package/assets/images/quotes.svg +12 -0
  91. package/assets/images/related-products-dark.svg +9 -0
  92. package/assets/images/related-products-light.svg +9 -0
  93. package/assets/images/search-noimage.svg +16 -0
  94. package/assets/images/see-more-bg-hover.svg +1 -0
  95. package/assets/images/see-more-bg.svg +1 -0
  96. package/assets/images/shopping-cart-icon.svg +14 -0
  97. package/assets/images/slash-small-white.svg +3 -0
  98. package/assets/images/warningicon.svg +3 -0
  99. package/assets/images/why-dimond.svg +7 -0
  100. package/buildingproduct-library-0.2.7.tgz +0 -0
  101. package/buildingproduct-library.d.ts +5 -0
  102. package/bundles/buildingproduct-library.umd.js +10979 -0
  103. package/bundles/buildingproduct-library.umd.js.map +1 -0
  104. package/esm2015/buildingproduct-library.js +5 -0
  105. package/esm2015/lib/account-dropdown/account-dropdown.component.js +159 -0
  106. package/esm2015/lib/account-dropdown/account-dropdown.module.js +59 -0
  107. package/esm2015/lib/account-dropdown/account-dropdown.service.js +55 -0
  108. package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +442 -0
  109. package/esm2015/lib/checkout/checkout.module.js +149 -0
  110. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +348 -0
  111. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +37 -0
  112. package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +32 -0
  113. package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +162 -0
  114. package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +151 -0
  115. package/esm2015/lib/checkout/order-review/order-review.component.js +123 -0
  116. package/esm2015/lib/constants/general.js +57 -0
  117. package/esm2015/lib/contact-us/contact-us.component.js +38 -0
  118. package/esm2015/lib/contact-us/contact-us.module.js +41 -0
  119. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +48 -0
  120. package/esm2015/lib/custom-cart/custom-cart.component.js +70 -0
  121. package/esm2015/lib/custom-cart/custom-cart.module.js +91 -0
  122. package/esm2015/lib/custom-header-logo/custom-header-logo.component.js +27 -0
  123. package/esm2015/lib/custom-header-logo/custom-header-logo.module.js +54 -0
  124. package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.component.js +24 -0
  125. package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.module.js +48 -0
  126. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +239 -0
  127. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +64 -0
  128. package/esm2015/lib/custom-navigation/custom-navigation.component.js +122 -0
  129. package/esm2015/lib/custom-navigation/custom-navigation.module.js +79 -0
  130. package/esm2015/lib/custom-order-details/custom-order-details.component.js +205 -0
  131. package/esm2015/lib/custom-order-details/custom-order-details.module.js +99 -0
  132. package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +34 -0
  133. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +191 -0
  134. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +169 -0
  135. package/esm2015/lib/custom-order-history/custom-order-history.component.js +680 -0
  136. package/esm2015/lib/custom-order-history/custom-order-history.module.js +105 -0
  137. package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +62 -0
  138. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +108 -0
  139. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +125 -0
  140. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +91 -0
  141. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +56 -0
  142. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +51 -0
  143. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +114 -0
  144. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +89 -0
  145. package/esm2015/lib/custom-saved-cart/save-cart.service.js +67 -0
  146. package/esm2015/lib/custom-saved-cart/saved-cart-general.js +49 -0
  147. package/esm2015/lib/custom-saved-cart/saved-cart.service.js +48 -0
  148. package/esm2015/lib/custom-search/custom-search.component.js +132 -0
  149. package/esm2015/lib/custom-search/custom-search.module.js +46 -0
  150. package/esm2015/lib/custom-user-account/custom-user-account.component.js +92 -0
  151. package/esm2015/lib/custom-user-account/custom-user-account.module.js +63 -0
  152. package/esm2015/lib/directives/custom-directives.module.js +22 -0
  153. package/esm2015/lib/directives/custom-paginatior.directive.js +197 -0
  154. package/esm2015/lib/environments/environment.js +24 -0
  155. package/esm2015/lib/find-store/find-store.component.js +94 -0
  156. package/esm2015/lib/find-store/find-store.module.js +66 -0
  157. package/esm2015/lib/help-support/help-support.component.js +24 -0
  158. package/esm2015/lib/help-support/help-support.module.js +38 -0
  159. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +133 -0
  160. package/esm2015/lib/my-account/account-statements/account-statements.component.js +57 -0
  161. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +379 -0
  162. package/esm2015/lib/my-account/my-account.component.js +95 -0
  163. package/esm2015/lib/my-account/my-account.module.js +99 -0
  164. package/esm2015/lib/my-team/my-team.component.js +445 -0
  165. package/esm2015/lib/my-team/my-team.module.js +100 -0
  166. package/esm2015/lib/my-team/team-member.service.js +95 -0
  167. package/esm2015/lib/pipes/custom-date-pipe.pipe.js +26 -0
  168. package/esm2015/lib/services/account-dropdown-state.service.js +21 -0
  169. package/esm2015/lib/services/cart.service.js +70 -0
  170. package/esm2015/lib/services/checkout.service.js +69 -0
  171. package/esm2015/lib/services/endPointURL.js +192 -0
  172. package/esm2015/lib/services/find-store.service.js +50 -0
  173. package/esm2015/lib/services/logout.service.js +50 -0
  174. package/esm2015/lib/services/my-account.service.js +68 -0
  175. package/esm2015/lib/services/order-history.service.js +65 -0
  176. package/esm2015/lib/services/order.review.js +38 -0
  177. package/esm2015/lib/services/search.service.js +42 -0
  178. package/esm2015/lib/services/user-account-detail-service.service.js +207 -0
  179. package/esm2015/lib/shared/CustomProduct.js +48 -0
  180. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +116 -0
  181. package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +102 -0
  182. package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +95 -0
  183. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +477 -0
  184. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +431 -0
  185. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +622 -0
  186. package/esm2015/lib/shared/custom-cart-detail/split.pipe.js +17 -0
  187. package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +173 -0
  188. package/esm2015/lib/shared/regEx.validator.js +17 -0
  189. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +83 -0
  190. package/esm2015/lib/shared/shared-components.module.js +119 -0
  191. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +220 -0
  192. package/esm2015/lib/spa-custom-header.component.js +26 -0
  193. package/esm2015/lib/spa-custom-header.module.js +145 -0
  194. package/esm2015/lib/spa-custom-header.service.js +14 -0
  195. package/esm2015/lib/utils/utils.js +27 -0
  196. package/esm2015/lib/utils.js +27 -0
  197. package/esm2015/public-api.js +35 -0
  198. package/fesm2015/buildingproduct-library.js +10197 -0
  199. package/fesm2015/buildingproduct-library.js.map +1 -0
  200. package/lib/account-dropdown/account-dropdown.component.d.ts +24 -0
  201. package/lib/account-dropdown/account-dropdown.module.d.ts +11 -0
  202. package/lib/account-dropdown/account-dropdown.service.d.ts +14 -0
  203. package/lib/checkout/add-new-address/add-new-address.component.d.ts +30 -0
  204. package/lib/checkout/checkout.module.d.ts +28 -0
  205. package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +77 -0
  206. package/lib/checkout/order-confirmation/order-confirmation.component.d.ts +23 -0
  207. package/lib/checkout/order-review/delivery-information/delivery-information.component.d.ts +13 -0
  208. package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +33 -0
  209. package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +31 -0
  210. package/lib/checkout/order-review/order-review.component.d.ts +41 -0
  211. package/lib/constants/general.d.ts +50 -0
  212. package/lib/contact-us/contact-us.component.d.ts +13 -0
  213. package/lib/contact-us/contact-us.module.d.ts +9 -0
  214. package/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.d.ts +18 -0
  215. package/lib/custom-cart/custom-cart.component.d.ts +22 -0
  216. package/lib/custom-cart/custom-cart.module.d.ts +15 -0
  217. package/lib/custom-header-logo/custom-header-logo.component.d.ts +11 -0
  218. package/lib/custom-header-logo/custom-header-logo.module.d.ts +11 -0
  219. package/lib/custom-header-paragraph/custom-header-paragraph.component.d.ts +11 -0
  220. package/lib/custom-header-paragraph/custom-header-paragraph.module.d.ts +10 -0
  221. package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +62 -0
  222. package/lib/custom-mini-cart/custom-mini-cart.module.d.ts +13 -0
  223. package/lib/custom-navigation/custom-navigation.component.d.ts +37 -0
  224. package/lib/custom-navigation/custom-navigation.module.d.ts +21 -0
  225. package/lib/custom-order-details/custom-order-details.component.d.ts +63 -0
  226. package/lib/custom-order-details/custom-order-details.module.d.ts +19 -0
  227. package/lib/custom-order-details/download-popup/download-popup.component.d.ts +15 -0
  228. package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +40 -0
  229. package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +35 -0
  230. package/lib/custom-order-history/custom-order-history.component.d.ts +99 -0
  231. package/lib/custom-order-history/custom-order-history.module.d.ts +19 -0
  232. package/lib/custom-order-history/slider-progress/slider-progress.component.d.ts +15 -0
  233. package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +33 -0
  234. package/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.d.ts +20 -0
  235. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +65 -0
  236. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.d.ts +31 -0
  237. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +19 -0
  238. package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +59 -0
  239. package/lib/custom-saved-cart/custom-saved-cart.module.d.ts +16 -0
  240. package/lib/custom-saved-cart/save-cart.service.d.ts +17 -0
  241. package/lib/custom-saved-cart/saved-cart-general.d.ts +88 -0
  242. package/lib/custom-saved-cart/saved-cart.service.d.ts +12 -0
  243. package/lib/custom-search/custom-search.component.d.ts +35 -0
  244. package/lib/custom-search/custom-search.module.d.ts +10 -0
  245. package/lib/custom-user-account/custom-user-account.component.d.ts +35 -0
  246. package/lib/custom-user-account/custom-user-account.module.d.ts +12 -0
  247. package/lib/directives/custom-directives.module.d.ts +8 -0
  248. package/lib/directives/custom-paginatior.directive.d.ts +29 -0
  249. package/lib/environments/environment.d.ts +12 -0
  250. package/lib/find-store/find-store.component.d.ts +34 -0
  251. package/lib/find-store/find-store.module.d.ts +12 -0
  252. package/lib/help-support/help-support.component.d.ts +11 -0
  253. package/lib/help-support/help-support.module.d.ts +9 -0
  254. package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +34 -0
  255. package/lib/my-account/account-statements/account-statements.component.d.ts +24 -0
  256. package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +66 -0
  257. package/lib/my-account/my-account.component.d.ts +26 -0
  258. package/lib/my-account/my-account.module.d.ts +20 -0
  259. package/lib/my-team/my-team.component.d.ts +103 -0
  260. package/lib/my-team/my-team.module.d.ts +18 -0
  261. package/lib/my-team/team-member.service.d.ts +17 -0
  262. package/lib/pipes/custom-date-pipe.pipe.d.ts +11 -0
  263. package/lib/services/account-dropdown-state.service.d.ts +10 -0
  264. package/lib/services/cart.service.d.ts +15 -0
  265. package/lib/services/checkout.service.d.ts +17 -0
  266. package/lib/services/endPointURL.d.ts +156 -0
  267. package/lib/services/find-store.service.d.ts +14 -0
  268. package/lib/services/logout.service.d.ts +11 -0
  269. package/lib/services/my-account.service.d.ts +16 -0
  270. package/lib/services/order-history.service.d.ts +14 -0
  271. package/lib/services/order.review.d.ts +11 -0
  272. package/lib/services/search.service.d.ts +11 -0
  273. package/lib/services/user-account-detail-service.service.d.ts +40 -0
  274. package/lib/shared/CustomProduct.d.ts +28 -0
  275. package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +58 -0
  276. package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +30 -0
  277. package/lib/shared/custom-cart-detail/custom-cart-detail.component.d.ts +32 -0
  278. package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +81 -0
  279. package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +72 -0
  280. package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +100 -0
  281. package/lib/shared/custom-cart-detail/split.pipe.d.ts +7 -0
  282. package/lib/shared/date-range-picker/date-range-picker.component.d.ts +39 -0
  283. package/lib/shared/regEx.validator.d.ts +10 -0
  284. package/lib/shared/saved-cart-popup/saved-cart-popup.component.d.ts +37 -0
  285. package/lib/shared/shared-components.module.d.ts +26 -0
  286. package/lib/shared/shared-download-order/shared-download-order.component.d.ts +40 -0
  287. package/lib/spa-custom-header.component.d.ts +11 -0
  288. package/lib/spa-custom-header.module.d.ts +27 -0
  289. package/lib/spa-custom-header.service.d.ts +6 -0
  290. package/lib/utils/utils.d.ts +6 -0
  291. package/lib/utils.d.ts +5 -0
  292. package/package.json +92 -0
  293. package/public-api.d.ts +31 -0
@@ -0,0 +1,379 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { CommonUtils } from '../../utils';
4
+ import * as moment from 'moment';
5
+ import { NgxMasonryComponent } from 'ngx-masonry';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../services/my-account.service";
8
+ import * as i2 from "@spartacus/core";
9
+ import * as i3 from "@angular/common/http";
10
+ import * as i4 from "../../shared/date-range-picker/date-range-picker.component";
11
+ import * as i5 from "ngx-masonry";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "ngx-infinite-scroll";
14
+ import * as i8 from "@angular/forms";
15
+ // Future requirement
16
+ // declare var require: any;
17
+ // const FileSaver = require('file-saver');
18
+ export class InvoiceCreditComponent {
19
+ constructor(myAccountService, cmsService, cd, http) {
20
+ this.myAccountService = myAccountService;
21
+ this.cmsService = cmsService;
22
+ this.cd = cd;
23
+ this.http = http;
24
+ this.listview = true;
25
+ this.isDesktop = true;
26
+ this.isMobile = false;
27
+ this.isTablet = false;
28
+ this.showWaitCursor = new BehaviorSubject(false);
29
+ this.loaderImage = new BehaviorSubject(false);
30
+ this.currentPage = 0;
31
+ this.invoiceCreditList = [];
32
+ this.statusLists = [];
33
+ this.searchText = '';
34
+ this.isClearAll = false;
35
+ this.noSearchResults = false;
36
+ this.sortByValue = 'byDocumentAsc';
37
+ this.selectedOrderType = 'documentNumber';
38
+ this.selectedStatuses = [];
39
+ this.invoiceStates = [];
40
+ this.invoiceTypes = [];
41
+ this.billingStatuses = [];
42
+ this.isInputValue = false;
43
+ this.selectedDateKey = 'dateRange';
44
+ this.isFirstCall = true;
45
+ }
46
+ ngOnInit() {
47
+ this.cmsService
48
+ .getComponentData('EmptySearchInvoicesListComponent')
49
+ .subscribe((data) => {
50
+ if (data) {
51
+ this.noInvoiceCrditData = data.content;
52
+ }
53
+ });
54
+ const orderNumber = this.myAccountService.getOrderNumber();
55
+ if (orderNumber != null) {
56
+ this.searchText = orderNumber;
57
+ this.selectedOrderType = 'orderNumber';
58
+ }
59
+ this.getLastMonthDateRange();
60
+ this.getSearchDropdownData();
61
+ this.getInvoiceCreditData();
62
+ // this.getSearchResults();
63
+ this.onPageRefresh();
64
+ }
65
+ getInvoiceCreditData() {
66
+ this.showWaitCursor.next(true);
67
+ const reqObj = {
68
+ searchParams: this.selectedStatuses,
69
+ };
70
+ this.myAccountService
71
+ .getInvoicesCreditList(reqObj, this.currentPage)
72
+ .subscribe((data) => {
73
+ var _a, _b;
74
+ if (this.isClearAll == true) {
75
+ this.invoiceCreditList = [];
76
+ this.isClearAll = false;
77
+ }
78
+ let date = new Date();
79
+ date.getFullYear();
80
+ date.getMonth();
81
+ date.getDay();
82
+ this.invoiceCreditList = [];
83
+ this.invoiceCreditList = this.invoiceCreditList.concat(data.documents);
84
+ this.statusLists = (_a = data === null || data === void 0 ? void 0 : data.documents) === null || _a === void 0 ? void 0 : _a.status;
85
+ this.invoiceSortLists = data === null || data === void 0 ? void 0 : data.sorts;
86
+ this.totalResults = (_b = data === null || data === void 0 ? void 0 : data.pagination) === null || _b === void 0 ? void 0 : _b.totalResults;
87
+ this.getStatus();
88
+ this.invoiceSortLists.forEach((element) => {
89
+ if (element.code == 'byDocumentDesc') {
90
+ element.value = 'Newest Invoice';
91
+ }
92
+ if (element.code == 'byDocumentAsc') {
93
+ element.value = 'Oldest Invoice';
94
+ }
95
+ if (element.code == 'byPODesc') {
96
+ element.value = 'Highest PO Number';
97
+ }
98
+ if (element.code == 'byPOAsc') {
99
+ element.value = 'Lowest PO Number';
100
+ }
101
+ if (element.code == 'byOrderCodeDesc') {
102
+ element.value = 'Highest Order Number';
103
+ }
104
+ if (element.code == 'byOrderCodeAsc') {
105
+ element.value = 'Lowest Order Number';
106
+ }
107
+ this.loaderImage.next(false);
108
+ this.cd.markForCheck();
109
+ });
110
+ this.cd.markForCheck();
111
+ setTimeout(() => {
112
+ this.isFirstCall = false;
113
+ }, 2000);
114
+ this.showWaitCursor.next(false);
115
+ }, (error) => {
116
+ this.invoiceCreditList = [];
117
+ setTimeout(() => {
118
+ this.isFirstCall = false;
119
+ }, 2000);
120
+ this.showWaitCursor.next(false);
121
+ });
122
+ }
123
+ getStatus() {
124
+ this.invoiceCreditList.forEach((element) => {
125
+ if (element.status == 'open') {
126
+ element.className = 'status-open';
127
+ }
128
+ else if (element.status == 'closed') {
129
+ element.className = 'status-paid';
130
+ }
131
+ else if (element.status == 'paid') {
132
+ element.className = 'status-paid';
133
+ }
134
+ else if (element.status == 'overdue') {
135
+ element.className = 'status-overdue';
136
+ }
137
+ else if (element.status == 'outstanding') {
138
+ element.className = 'status-open';
139
+ }
140
+ else if (element.status == 'refund') {
141
+ element.className = 'status-paid';
142
+ }
143
+ this.loaderImage.next(false);
144
+ this.cd.markForCheck();
145
+ });
146
+ }
147
+ getLastMonthDateRange() {
148
+ this.selectedDateRange = [moment().subtract(29, 'days'), moment()];
149
+ const dateValue = this.selectedDateRange[0]._d.getDate() +
150
+ '/' +
151
+ (this.selectedDateRange[0]._d.getMonth() + 1) +
152
+ '/' +
153
+ this.selectedDateRange[0]._d.getFullYear() +
154
+ ',' +
155
+ this.selectedDateRange[1]._d.getDate() +
156
+ '/' +
157
+ (this.selectedDateRange[1]._d.getMonth() + 1) +
158
+ '/' +
159
+ this.selectedDateRange[1]._d.getFullYear();
160
+ let obj = {
161
+ key: this.selectedDateKey,
162
+ value: dateValue,
163
+ };
164
+ this.selectedStatuses.push(obj);
165
+ }
166
+ getSelectedDate(event) {
167
+ event.name = event.value;
168
+ event.key = 'dateRange';
169
+ this.selectedDateRange = event;
170
+ const ind = this.selectedStatuses.findIndex((element) => element.key == 'dateRange');
171
+ if (ind > -1)
172
+ this.selectedStatuses.splice(ind, 1);
173
+ this.selectedStatuses.push(event);
174
+ this.invoiceCreditList = [];
175
+ if (this.isFirstCall == false) {
176
+ this.getInvoiceCreditData();
177
+ }
178
+ }
179
+ getSearchDropdownData() {
180
+ this.showWaitCursor.next(true);
181
+ this.myAccountService.getInvoiceCreditStatuses().subscribe((data) => {
182
+ if (data) {
183
+ this.invoiceStates = data.states;
184
+ this.invoiceTypes = data.types;
185
+ this.billingStatuses = data.statuses;
186
+ this.cd.markForCheck();
187
+ }
188
+ this.showWaitCursor.next(false);
189
+ });
190
+ }
191
+ clearAll() {
192
+ this.searchText = '';
193
+ this.selectedOrderType = 'documentNumber';
194
+ this.selectedStatuses = [];
195
+ this.invoiceCreditList = [];
196
+ this.noSearchResults = false;
197
+ this.isClearAll = true;
198
+ this.isInputValue = false;
199
+ // this.getLastMonthDateRange();
200
+ // this.getInvoiceCreditData();
201
+ }
202
+ getCheckedInvoiceStatuses(data) {
203
+ const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
204
+ return ind > -1 ? true : false;
205
+ this.invoiceCreditList = [];
206
+ this.getSearchResults();
207
+ }
208
+ checkInvoiceStatus(event, data, mobileData) {
209
+ var _a;
210
+ this.currentPage = 0;
211
+ if (event.currentTarget.checked) {
212
+ this.selectedStatuses.push(data);
213
+ this.invoiceCreditList = [];
214
+ if (!mobileData) {
215
+ this.getSearchResults();
216
+ }
217
+ this.cd.markForCheck();
218
+ }
219
+ else {
220
+ const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
221
+ this.selectedStatuses.splice(ind, 1);
222
+ this.invoiceCreditList = [];
223
+ console.log(this.selectedStatuses);
224
+ if (!mobileData && ((_a = this.selectedStatuses) === null || _a === void 0 ? void 0 : _a.length) > 0) {
225
+ this.getSearchResults();
226
+ }
227
+ this.cd.markForCheck();
228
+ }
229
+ }
230
+ removeChips(data) {
231
+ var _a;
232
+ const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
233
+ this.selectedStatuses.splice(ind, 1);
234
+ this.invoiceCreditList = [];
235
+ if (((_a = this.selectedStatuses) === null || _a === void 0 ? void 0 : _a.length) == 0) {
236
+ this.invoiceCreditList = [];
237
+ this.noSearchResults = true;
238
+ }
239
+ else {
240
+ this.getInvoiceCreditData();
241
+ }
242
+ }
243
+ onChange(e) {
244
+ this.selectedOrderType = e.target.value;
245
+ }
246
+ getSearchResults() {
247
+ this.selectedFilters = JSON.parse(JSON.stringify(this.selectedStatuses));
248
+ const obj = {
249
+ key: this.selectedOrderType,
250
+ value: this.searchText,
251
+ };
252
+ if (this.searchText != '') {
253
+ this.selectedStatuses = [];
254
+ this.selectedFilters = [];
255
+ this.selectedFilters.push(obj);
256
+ }
257
+ const reqObj = {
258
+ searchParams: this.selectedFilters,
259
+ };
260
+ this.showWaitCursor.next(true);
261
+ this.myAccountService
262
+ .getInvoiceCreditSearchResults(reqObj, this.currentPage)
263
+ .subscribe((res) => {
264
+ var _a, _b;
265
+ if (res && ((_a = res === null || res === void 0 ? void 0 : res.documents) === null || _a === void 0 ? void 0 : _a.length) > 0) {
266
+ if (this.currentPage > 0) {
267
+ this.invoiceCreditList = this.invoiceCreditList.concat(res === null || res === void 0 ? void 0 : res.documents);
268
+ }
269
+ else {
270
+ this.invoiceCreditList = res === null || res === void 0 ? void 0 : res.documents;
271
+ }
272
+ this.totalResults = (_b = res === null || res === void 0 ? void 0 : res.pagination) === null || _b === void 0 ? void 0 : _b.totalResults;
273
+ this.noSearchResults = false;
274
+ this.getStatus();
275
+ this.cd.markForCheck();
276
+ }
277
+ else {
278
+ this.invoiceCreditList = [];
279
+ this.noSearchResults = true;
280
+ }
281
+ this.showWaitCursor.next(false);
282
+ }, (error) => {
283
+ this.invoiceCreditList = [];
284
+ this.showWaitCursor.next(false);
285
+ });
286
+ }
287
+ onSearchChange(e) {
288
+ if (e.target.value == '' || e.target.value.indexOf(' ') >= 0) {
289
+ this.isInputValue = false;
290
+ }
291
+ else {
292
+ this.isInputValue = true;
293
+ }
294
+ }
295
+ onSubmit() {
296
+ this.getSearchResults();
297
+ }
298
+ sortBy(e) {
299
+ this.showWaitCursor.next(true);
300
+ this.sortByValue = e.target.value;
301
+ const reqObj = {
302
+ searchParams: this.selectedFilters,
303
+ };
304
+ this.myAccountService.sortInvoiceCredit(this.sortByValue, reqObj).subscribe((res) => {
305
+ this.invoiceCreditList = res === null || res === void 0 ? void 0 : res.documents;
306
+ this.getStatus();
307
+ this.cd.markForCheck();
308
+ this.showWaitCursor.next(false);
309
+ }, (error) => {
310
+ this.showWaitCursor.next(false);
311
+ });
312
+ }
313
+ toggleGridOrListView(event) {
314
+ event.preventDefault();
315
+ this.listview = !this.listview;
316
+ if (this.listview == false) {
317
+ setTimeout(() => {
318
+ this.reloadMasonaryGrid();
319
+ }, 1000);
320
+ }
321
+ }
322
+ // Future requirement
323
+ // downloadPdf(pdfUrl: any, pdfName: string) {
324
+ // FileSaver.saveAs(pdfUrl, pdfName);
325
+ // }
326
+ reloadMasonaryGrid() {
327
+ if (this.masonry && (CommonUtils.isDesktop() || CommonUtils.isTablet())) {
328
+ this.masonry.reloadItems();
329
+ this.masonry.layout();
330
+ }
331
+ }
332
+ search() {
333
+ this.currentPage = 0;
334
+ this.getSearchResults();
335
+ }
336
+ loadMoreRecord() {
337
+ this.loaderImage.next(true);
338
+ this.currentPage += 1;
339
+ this.getInvoiceCreditData();
340
+ }
341
+ onScroll() {
342
+ if (!this.noSearchResults &&
343
+ this.totalResults > this.invoiceCreditList.length) {
344
+ this.loadMoreRecord();
345
+ }
346
+ }
347
+ onResize(event) {
348
+ event.target.innerWidth;
349
+ if (event.target.innerWidth < 992) {
350
+ this.isMobile = true;
351
+ this.isDesktop = false;
352
+ }
353
+ else {
354
+ this.isDesktop = true;
355
+ }
356
+ }
357
+ onPageRefresh() {
358
+ this.isMobile = CommonUtils.isMobile();
359
+ this.isTablet = CommonUtils.isTablet();
360
+ this.isDesktop = CommonUtils.isDesktop();
361
+ }
362
+ ngOnDestroy() {
363
+ this.myAccountService.setOrderNumber('');
364
+ }
365
+ }
366
+ InvoiceCreditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, deps: [{ token: i1.MyAccountService }, { token: i2.CmsService }, { token: i0.ChangeDetectorRef }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
367
+ InvoiceCreditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: InvoiceCreditComponent, selector: "app-invoice-credit", viewQueries: [{ propertyName: "masonry", first: true, predicate: NgxMasonryComponent, descendants: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading&#8230;</div>\r\n<div\r\n class=\"container px-0\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"0\"\r\n [infiniteScrollThrottle]=\"1000\"\r\n (scrolled)=\"onScroll()\"\r\n (window:resize)=\"onResize($event)\"\r\n>\r\n <div class=\"invoice-credit-content\">\r\n <span *ngIf=\"isDesktop\" class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"invoice-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option\r\n value=\"documentNumber\"\r\n [selected]=\"selectedOrderType == 'documentNumber'\"\r\n >\r\n Invoice #\r\n </option>\r\n <option\r\n value=\"poNumber\"\r\n [selected]=\"selectedOrderType == 'poNumber'\"\r\n >\r\n PO #\r\n </option>\r\n <option\r\n value=\"orderNumber\"\r\n [selected]=\"selectedOrderType == 'orderNumber'\"\r\n >\r\n Order #\r\n </option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup.enter)=\"search()\"\r\n (input)=\"onSearchChange($event)\"\r\n aria-label=\"Text input with dropdown button\"\r\n />\r\n <div class=\"input-group-append\">\r\n <button\r\n type=\"button\"\r\n class=\"btn search-btn\"\r\n (click)=\"search()\"\r\n [disabled]=\"!isInputValue\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-ionic-ios-search.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker\r\n (selectedDate)=\"getSelectedDate($event)\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n ></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderState\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Invoice State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceStates\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, { key: 'state', value: data.key })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"deliveryType\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Invoice Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceTypes\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, {\r\n key: 'documentType',\r\n value: data.key\r\n })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderStatus\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Billing Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of billingStatuses\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, {\r\n key: 'statuses',\r\n value: data.key\r\n })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedStatuses.length > 0\">\r\n <ng-container *ngIf=\"selectedStatuses && selectedStatuses.length > 0\">\r\n <div class=\"chips\" *ngFor=\"let data of selectedStatuses\">\r\n <p class=\"chip-title\">\r\n {{\r\n data.key == \"state\"\r\n ? \"Invoice State\"\r\n : data.key == \"documentType\"\r\n ? \"Invoice Type\"\r\n : data.key == \"statuses\"\r\n ? \"Billing Status\"\r\n : \"Date Range\"\r\n }}\r\n :\r\n </p>\r\n <span class=\"chip-content ml-1\">{{ data.value }}</span>\r\n <i\r\n class=\"fas fa-times-circle ml-3 close-icon\"\r\n (click)=\"removeChips(data)\"\r\n ></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn filter-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#filterModal\"\r\n >\r\n More Filters\r\n </button>\r\n </ng-template>\r\n </div>\r\n <hr />\r\n <!-- Filter Modal-->\r\n <div\r\n class=\"modal fade modal-right\"\r\n id=\"filterModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\r\n aria-hidden=\"true\"\r\n >\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"></h5>\r\n <i\r\n class=\"icon-close filter-popup-close\"\r\n (click)=\"clearAll()\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"clearAll()\"\r\n class=\"clearAll\"\r\n >\r\n <u>Clear all</u></a\r\n >\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq1\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq1\"\r\n >Invoice State</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq1\"\r\n class=\"collapse show\"\r\n aria-labelledby=\"faqhead1\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of invoiceStates\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'state', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq2\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq2\"\r\n >Invoice Type</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq2\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead2\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of invoiceTypes\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'documentType', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq3\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq3\"\r\n >Billing Status</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq3\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead3\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of billingStatuses\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'statuses', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\"\r\n >\r\n <button\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearAll()\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n (click)=\"onSubmit()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"invoiceCreditList?.length == 0\">\r\n <div class=\"row empty-accountPage-container text-center\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div class=\"text-center\" [innerHTML]=\"noInvoiceCrditData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container>\r\n <div class=\"invoice-credit-table\" *ngIf=\"invoiceCreditList?.length > 0\">\r\n <span class=\"total-order\"\r\n >{{ totalResults }} Invoices and Credit Notes found</span\r\n >\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option\r\n value=\"{{ option.code }}\"\r\n *ngFor=\"let option of invoiceSortLists\"\r\n >\r\n {{ option.value }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button\r\n [ngClass]=\"{ active: listview === false }\"\r\n class=\"btn btn-sm\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === false\"\r\n src=\"../../../assets/images/Grid-light.svg\"\r\n alt=\"gridviewlight\"\r\n />\r\n <img\r\n *ngIf=\"listview === true\"\r\n src=\"../../../assets/images/Grid-dark.svg\"\r\n alt=\"gridviewdark\"\r\n />\r\n Grid\r\n </button>\r\n <button\r\n [ngClass]=\"{ active: listview === true }\"\r\n class=\"btn btn-sm active\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === true\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-light.svg\"\r\n alt=\"listview\"\r\n />\r\n <img\r\n *ngIf=\"listview === false\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-dark.svg\"\r\n alt=\"listview\"\r\n />\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- INVOICE CREDIT LIST -->\r\n <div\r\n class=\"list-view table-responsive\"\r\n *ngIf=\"listview && isDesktop && invoiceCreditList?.length > 0\"\r\n >\r\n <table class=\"table account-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Date</th>\r\n <th scope=\"col\">Type</th>\r\n <th scope=\"col\">Invoice #</th>\r\n <th scope=\"col\">Order #</th>\r\n <th scope=\"col\">PO #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Total <span class=\"gst-text\">excl GST</span></th>\r\n <th scope=\"col\">\r\n Outstanding <span class=\"gst-text\">excl GST</span>\r\n </th>\r\n <th scope=\"col\">Download</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of invoiceCreditList\">\r\n <td>{{ data.date | date : \"dd/MM/yyyy\" }}</td>\r\n <td>{{ data.documentType.name }}</td>\r\n <td>{{ data.documentNumber }}</td>\r\n <td>{{ data.orderNumber }}</td>\r\n <td>{{ data.poNumber }}</td>\r\n <td class=\"status-message {{ data.className }}\">\r\n {{ data.status }}\r\n </td>\r\n <td [ngClass]=\"{ 'negative-price': data.amount < 0 }\">\r\n {{ data.formattedAmount }}\r\n </td>\r\n <td [ngClass]=\"{ 'negative-price': data.openAmount < 0 }\">\r\n {{ data.formattedOpenAmount }}\r\n </td>\r\n <td>\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a\r\n *ngIf=\"data.attachments\"\r\n target=\"_blank\"\r\n href=\"{{ data?.attachments[0]?.downloadURL }}\"\r\n ><img\r\n src=\"../../../../assets/images/download-icon.svg\"\r\n alt=\"download\"\r\n class=\"mr-2\"\r\n />PDF</a\r\n >\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- INVOICE CREDIT GRID -->\r\n <ngx-masonry\r\n class=\"row grid-view\"\r\n *ngIf=\"(!listview || !isDesktop) && invoiceCreditList?.length > 0\"\r\n >\r\n <div\r\n ngxMasonryItem\r\n class=\"col-lg-3 col-md-6 col-sm-12 col-12\"\r\n *ngFor=\"let data of invoiceCreditList\"\r\n >\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Invoice #:</th>\r\n <td>{{ data.documentNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>Type:</th>\r\n <td>{{ data.documentType.name }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Date:</th>\r\n <td>{{ data.date | date : \"dd/MM/yyyy\" }}</td>\r\n </tr>\r\n <tr>\r\n <th>Order #:</th>\r\n <td>{{ data.orderNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{ data.poNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>Total:</th>\r\n <td [ngClass]=\"{ 'negative-price': data.amount < 0 }\">\r\n {{ data.formattedAmount\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Outstanding:</th>\r\n <td [ngClass]=\"{ 'negative-price': data.openAmount < 0 }\">\r\n {{ data.formattedOpenAmount\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Status:</th>\r\n <td class=\"status-message {{ data.className }} status-icon\">\r\n {{ data.status }}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Download:</th>\r\n <td>\r\n <!-- Future requirement-->\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a\r\n *ngIf=\"data.attachments\"\r\n target=\"_blank\"\r\n href=\"{{ data?.attachments[0]?.downloadURL }}\"\r\n ><img\r\n src=\"../../../../assets/images/download-icon.svg\"\r\n alt=\"download\"\r\n class=\"mr-2\"\r\n />PDF</a\r\n >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ngx-masonry>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-content{margin-top:30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input mat-radio-group{display:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;padding:12px;margin-right:30px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:43px;height:auto;border:none;cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .status-message{text-transform:capitalize}::ng-deep cx-page-layout.AccountPageTemplate .status-default,::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before,::ng-deep cx-page-layout.AccountPageTemplate .status-open:before,::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before,::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{background-color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before{background-color:#2aa900}::ng-deep cx-page-layout.AccountPageTemplate .status-open:before{background-color:#ff7d00}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive{color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before{background-color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle .status-icon{position:relative;padding-left:10px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .noResults{margin:5rem auto}::ng-deep cx-page-layout.AccountPageTemplate .noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr:nth-child(even){background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td{position:relative}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .gst-text{font-size:var(--fontsize12);display:block;text-transform:none;font-style:italic}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .negative-price{color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .empty-accountPage-container{margin:5rem auto}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:fixed;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#filterModal .modal-content .filter-popup-close{font-size:1.6rem;color:#1d1d1b}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;padding-left:0;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}.invoice-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:-2px!important;left:150px!important}#filterModal .modal-dialog{margin:0}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-content{width:50%!important;float:right!important}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}#filterModal .modal-dialog{margin:0}#filterModal .modal-content{width:100%!important}.input-group-prepend select{height:48px}::ng-deep .fx-date-range-container .md-drppicker.shown{width:100%!important;left:0px!important}::ng-deep .fx-date-range-container .md-drppicker.shown .calendar{max-width:100%}::ng-deep .fx-date-range-container .md-drppicker.shown .btn{width:calc(100% - 15px)!important}::ng-deep .fx-date-range-container .md-drppicker.shown .btn-default{width:calc(100% - 15px)!important;border:1px solid #1D1D1B;margin-right:0!important}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }, { type: i5.NgxMasonryComponent, selector: "[ngx-masonry], ngx-masonry", inputs: ["updateLayout", "ordered", "options"], outputs: ["layoutComplete", "removeComplete", "itemsLoaded"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgxMasonryDirective, selector: "[ngxMasonryItem], ngxMasonryItem", inputs: ["prepend"] }], pipes: { "async": i6.AsyncPipe, "date": i6.DatePipe } });
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, decorators: [{
369
+ type: Component,
370
+ args: [{
371
+ selector: 'app-invoice-credit',
372
+ templateUrl: './invoice-credit.component.html',
373
+ styleUrls: ['./invoice-credit.component.scss'],
374
+ }]
375
+ }], ctorParameters: function () { return [{ type: i1.MyAccountService }, { type: i2.CmsService }, { type: i0.ChangeDetectorRef }, { type: i3.HttpClient }]; }, propDecorators: { masonry: [{
376
+ type: ViewChild,
377
+ args: [NgxMasonryComponent, { static: false }]
378
+ }] } });
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jcmVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9teS1hY2NvdW50L2ludm9pY2UtY3JlZGl0L2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvbXktYWNjb3VudC9pbnZvaWNlLWNyZWRpdC9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7QUFFbEQscUJBQXFCO0FBQ3JCLDRCQUE0QjtBQUM1QiwyQ0FBMkM7QUFPM0MsTUFBTSxPQUFPLHNCQUFzQjtJQTZCakMsWUFDVSxnQkFBa0MsRUFDbkMsVUFBc0IsRUFDdEIsRUFBcUIsRUFDcEIsSUFBZ0I7UUFIaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVk7UUFoQzFCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMs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QVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7b0hBNVhVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLG1HQTJCdEIsbUJBQW1CLGdEQzdDaEMsODF0QkFxbEJBOzRGRG5rQmEsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQzt5TEE0Qm9ELE9BQU87c0JBQXpELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tbW9uVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IE15QWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9teS1hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE5neE1hc29ucnlDb21wb25lbnQgfSBmcm9tICduZ3gtbWFzb25yeSc7XHJcblxyXG4vLyBGdXR1cmUgcmVxdWlyZW1lbnRcclxuLy8gZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xyXG4vLyBjb25zdCBGaWxlU2F2ZXIgPSByZXF1aXJlKCdmaWxlLXNhdmVyJyk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnZvaWNlLWNyZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52b2ljZUNyZWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBsaXN0dmlldzogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNEZXNrdG9wID0gdHJ1ZTtcclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIGlzVGFibGV0ID0gZmFsc2U7XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBsb2FkZXJJbWFnZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRvdGFsUmVzdWx0czogYW55O1xyXG4gIGludm9pY2VTb3J0TGlzdHM6IGFueTtcclxuICBjdXJyZW50UGFnZSA9IDA7XHJcbiAgaW52b2ljZUNyZWRpdExpc3Q6IGFueSA9IFtdO1xyXG4gIHN0YXR1c0xpc3RzOiBhbnkgPSBbXTtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuICBpc0NsZWFyQWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9TZWFyY2hSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydEJ5VmFsdWU6IGFueSA9ICdieURvY3VtZW50QXNjJztcclxuICBzZWxlY3RlZE9yZGVyVHlwZTogYW55ID0gJ2RvY3VtZW50TnVtYmVyJztcclxuICBzZWxlY3RlZFN0YXR1c2VzOiBhbnkgPSBbXTtcclxuICBpbnZvaWNlU3RhdGVzOiBhbnkgPSBbXTtcclxuICBpbnZvaWNlVHlwZXM6IGFueSA9IFtdO1xyXG4gIGJpbGxpbmdTdGF0dXNlczogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRGaWx0ZXJzOiBhbnk7XHJcbiAgaXNJbnB1dFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueTtcclxuICBzZWxlY3RlZERhdGVLZXk6IHN0cmluZyA9ICdkYXRlUmFuZ2UnO1xyXG4gIG5vSW52b2ljZUNyZGl0RGF0YTogYW55O1xyXG4gIGlzRmlyc3RDYWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBAVmlld0NoaWxkKE5neE1hc29ucnlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXNvbnJ5OiBOZ3hNYXNvbnJ5Q29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbXlBY2NvdW50U2VydmljZTogTXlBY2NvdW50U2VydmljZSxcclxuICAgIHB1YmxpYyBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdFbXB0eVNlYXJjaEludm9pY2VzTGlzdENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm5vSW52b2ljZUNyZGl0RGF0YSA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgb3JkZXJOdW1iZXI6IGFueSA9IHRoaXMubXlBY2NvdW50U2VydmljZS5nZXRPcmRlck51bWJlcigpO1xyXG4gICAgaWYgKG9yZGVyTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gb3JkZXJOdW1iZXI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnb3JkZXJOdW1iZXInO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRMYXN0TW9udGhEYXRlUmFuZ2UoKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoRHJvcGRvd25EYXRhKCk7XHJcbiAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICAgIHRoaXMub25QYWdlUmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW52b2ljZUNyZWRpdERhdGEoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkU3RhdHVzZXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5teUFjY291bnRTZXJ2aWNlXHJcbiAgICAgIC5nZXRJbnZvaWNlc0NyZWRpdExpc3QocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzQ2xlYXJBbGwgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhckFsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICAgICAgZGF0ZS5nZXREYXkoKTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSB0aGlzLmludm9pY2VDcmVkaXRMaXN0LmNvbmNhdChcclxuICAgICAgICAgICAgZGF0YS5kb2N1bWVudHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c0xpc3RzID0gZGF0YT8uZG9jdW1lbnRzPy5zdGF0dXM7XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VTb3J0TGlzdHMgPSBkYXRhPy5zb3J0cztcclxuICAgICAgICAgIHRoaXMudG90YWxSZXN1bHRzID0gZGF0YT8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZVNvcnRMaXN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudERlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgSW52b2ljZSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudEFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBJbnZvaWNlJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPRGVzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0hpZ2hlc3QgUE8gTnVtYmVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IFBPIE51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlPcmRlckNvZGVEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnSGlnaGVzdCBPcmRlciBOdW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5T3JkZXJDb2RlQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IE9yZGVyIE51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzKCkge1xyXG4gICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdvcGVuJykge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1vcGVuJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnY2xvc2VkJykge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1wYWlkJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAncGFpZCcpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtcGFpZCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ292ZXJkdWUnKSB7XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLW92ZXJkdWUnO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdvdXRzdGFuZGluZycpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtb3Blbic7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ3JlZnVuZCcpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtcGFpZCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IFttb21lbnQoKS5zdWJ0cmFjdCgyOSwgJ2RheXMnKSwgbW9tZW50KCldO1xyXG4gICAgY29uc3QgZGF0ZVZhbHVlID1cclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXREYXRlKCkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICAodGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldERhdGUoKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZERhdGVLZXksXHJcbiAgICAgIHZhbHVlOiBkYXRlVmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnB1c2gob2JqKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkRGF0ZShldmVudDogYW55KSB7XHJcbiAgICBldmVudC5uYW1lID0gZXZlbnQudmFsdWU7XHJcbiAgICBldmVudC5rZXkgPSAnZGF0ZVJhbmdlJztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBldmVudDtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQua2V5ID09ICdkYXRlUmFuZ2UnXHJcbiAgICApO1xyXG4gICAgaWYgKGluZCA+IC0xKSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMucHVzaChldmVudCk7XHJcbiAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICBpZiAodGhpcy5pc0ZpcnN0Q2FsbCA9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hEcm9wZG93bkRhdGEoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm15QWNjb3VudFNlcnZpY2UuZ2V0SW52b2ljZUNyZWRpdFN0YXR1c2VzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTdGF0ZXMgPSBkYXRhLnN0YXRlcztcclxuICAgICAgICB0aGlzLmludm9pY2VUeXBlcyA9IGRhdGEudHlwZXM7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nU3RhdHVzZXMgPSBkYXRhLnN0YXR1c2VzO1xyXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnZG9jdW1lbnROdW1iZXInO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzID0gW107XHJcbiAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0NsZWFyQWxsID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG4gICAgLy8gdGhpcy5nZXRJbnZvaWNlQ3JlZGl0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgKTtcclxuICAgIHJldHVybiBpbmQgPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJbnZvaWNlU3RhdHVzKGV2ZW50OiBhbnksIGRhdGE6IGFueSwgbW9iaWxlRGF0YT86IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5wdXNoKGRhdGEpO1xyXG4gICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgIGlmICghbW9iaWxlRGF0YSkge1xyXG4gICAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcbiAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFN0YXR1c2VzKVxyXG4gICAgICBpZiAoIW1vYmlsZURhdGEgJiYgdGhpcy5zZWxlY3RlZFN0YXR1c2VzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXBzKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZFN0YXR1c2VzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC52YWx1ZSA9PSBkYXRhLnZhbHVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnNwbGljZShpbmQsIDEpO1xyXG4gICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdGF0dXNlcz8ubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFJlc3VsdHMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFN0YXR1c2VzKSk7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0ICE9ICcnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5wdXNoKG9iaik7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkRmlsdGVycyxcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm15QWNjb3VudFNlcnZpY2VcclxuICAgICAgLmdldEludm9pY2VDcmVkaXRTZWFyY2hSZXN1bHRzKHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IHRoaXMuaW52b2ljZUNyZWRpdExpc3QuY29uY2F0KFxyXG4gICAgICAgICAgICAgICAgcmVzPy5kb2N1bWVudHNcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSByZXM/LmRvY3VtZW50cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0YXR1cygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKGU6IGFueSkge1xyXG4gICAgaWYgKGUudGFyZ2V0LnZhbHVlID09ICcnIHx8IGUudGFyZ2V0LnZhbHVlLmluZGV4T2YoJyAnKSA+PSAwKSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5KGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5zb3J0QnlWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcbiAgICAgIHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZEZpbHRlcnMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5teUFjY291bnRTZXJ2aWNlLnNvcnRJbnZvaWNlQ3JlZGl0KHRoaXMuc29ydEJ5VmFsdWUsIHJlcU9iaikuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gcmVzPy5kb2N1bWVudHM7XHJcbiAgICAgICAgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcmlkT3JMaXN0VmlldyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5saXN0dmlldyA9ICF0aGlzLmxpc3R2aWV3O1xyXG4gICAgaWYgKHRoaXMubGlzdHZpZXcgPT0gZmFsc2UpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRNYXNvbmFyeUdyaWQoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEZ1dHVyZSByZXF1aXJlbWVudFxyXG4gIC8vIGRvd25sb2FkUGRmKHBkZlVybDogYW55LCBwZGZOYW1lOiBzdHJpbmcpIHtcclxuICAvLyAgIEZpbGVTYXZlci5zYXZlQXMocGRmVXJsLCBwZGZOYW1lKTtcclxuICAvLyB9XHJcblxyXG4gIHJlbG9hZE1hc29uYXJ5R3JpZCgpIHtcclxuICAgIGlmICh0aGlzLm1hc29ucnkgJiYgKENvbW1vblV0aWxzLmlzRGVza3RvcCgpIHx8IENvbW1vblV0aWxzLmlzVGFibGV0KCkpKSB7XHJcbiAgICAgIHRoaXMubWFzb25yeS5yZWxvYWRJdGVtcygpXHJcbiAgICAgIHRoaXMubWFzb25yeS5sYXlvdXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VhcmNoKCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICB9XHJcbiAgbG9hZE1vcmVSZWNvcmQoKSB7XHJcbiAgICB0aGlzLmxvYWRlckltYWdlLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XHJcbiAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgfVxyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5ub1NlYXJjaFJlc3VsdHMgJiZcclxuICAgICAgdGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLmludm9pY2VDcmVkaXRMaXN0Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZE1vcmVSZWNvcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlUmVmcmVzaCgpIHtcclxuICAgIHRoaXMuaXNNb2JpbGUgPSBDb21tb25VdGlscy5pc01vYmlsZSgpO1xyXG4gICAgdGhpcy5pc1RhYmxldCA9IENvbW1vblV0aWxzLmlzVGFibGV0KCk7XHJcbiAgICB0aGlzLmlzRGVza3RvcCA9IENvbW1vblV0aWxzLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubXlBY2NvdW50U2VydmljZS5zZXRPcmRlck51bWJlcignJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIHB4LTBcIlxyXG4gIGluZmluaXRlU2Nyb2xsXHJcbiAgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMFwiXHJcbiAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiMTAwMFwiXHJcbiAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxyXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImludm9pY2UtY3JlZGl0LWNvbnRlbnRcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNEZXNrdG9wXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48dT5DbGVhciBhbGw8L3U+PC9hPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImludm9pY2Utc2VhcmNoLWJsb2NrXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1wcmVwZW5kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJcIiBpZD1cIlwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJkb2N1bWVudE51bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdkb2N1bWVudE51bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgSW52b2ljZSAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJwb051bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUE8gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JkZXJOdW1iZXJcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIE9yZGVyICNcclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRleHQgaW5wdXQgd2l0aCBkcm9wZG93biBidXR0b25cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gc2VhcmNoLWJ0blwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNJbnB1dFZhbHVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1pb25pYy1pb3Mtc2VhcmNoLnN2Z1wiXHJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1ibG9ja1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRhdGUtaW5wdXRcIj5cclxuICAgICAgICA8YXBwLWRhdGUtcmFuZ2UtcGlja2VyXHJcbiAgICAgICAgICAoc2VsZWN0ZWREYXRlKT1cImdldFNlbGVjdGVkRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgID48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICA8IS0tIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY19jYWxlbmRlci5zdmdcIiBhbHQ9XCJjYWxlbmRlclwiIGNsYXNzPVwiZGF0ZS1pY29uXCI+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVza3RvcDsgZWxzZSBmaWx0ZXJNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgSW52b2ljZSBTdGF0ZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlU3RhdGVzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0ZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCwgeyBrZXk6ICdzdGF0ZScsIHZhbHVlOiBkYXRhLmtleSB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZVwiXHJcbiAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEludm9pY2UgVHlwZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsaXZlcnlUeXBlXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VUeXBlc1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2RvY3VtZW50VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNcIlxyXG4gICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBCaWxsaW5nIFN0YXR1c1xyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0dXNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmlsbGluZ1N0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdzdGF0dXNlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMtYmxvY2tcIiAqbmdJZj1cInNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFN0YXR1c2VzICYmIHNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBzXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRTdGF0dXNlc1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNoaXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZGF0YS5rZXkgPT0gXCJzdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJJbnZvaWNlIFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcImRvY3VtZW50VHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJJbnZvaWNlIFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICA6IGRhdGEua2V5ID09IFwic3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiQmlsbGluZyBTdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICA6IFwiRGF0ZSBSYW5nZVwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLWNvbnRlbnQgbWwtMVwiPnt7IGRhdGEudmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIG1sLTMgY2xvc2UtaWNvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXBzKGRhdGEpXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJNb2JpbGU+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBmaWx0ZXItYnRuXCJcclxuICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmlsdGVyTW9kYWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIE1vcmUgRmlsdGVyc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgLz5cclxuICAgIDwhLS0gRmlsdGVyIE1vZGFsLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9kYWwgZmFkZSBtb2RhbC1yaWdodFwiXHJcbiAgICAgIGlkPVwiZmlsdGVyTW9kYWxcIlxyXG4gICAgICByb2xlPVwiZGlhbG9nXCJcclxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiaW52aXRlTWVtYmVyTGFiZWxcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj48L2g1PlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBmaWx0ZXItcG9wdXAtY2xvc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYWluLXZpZXdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgIDxoMz5GaWx0ZXJzPC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyQWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dT5DbGVhciBhbGw8L3U+PC9hXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cIm1haW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uXCIgaWQ9XCJmYXFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+SW52b2ljZSBTdGF0ZTwvYVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXExXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlIHNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQxXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiAnc3RhdGUnLCB2YWx1ZTogZGF0YS5rZXkgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vYmlsZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+SW52b2ljZSBUeXBlPC9hXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImZhcTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQyXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVR5cGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogJ2RvY3VtZW50VHlwZScsIHZhbHVlOiBkYXRhLmtleSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBpZD1cImZhcWhlYWQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1oZWFkZXItbGluayBjb2xsYXBzZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5CaWxsaW5nIFN0YXR1czwvYVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGJpbGxpbmdTdGF0dXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXR1c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogJ3N0YXR1c2VzJywgdmFsdWU6IGRhdGEua2V5IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2JpbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtbGctZmxleCBkLXNtLWJsb2NrIGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9jayBmaXhlZC1ib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtY2FuY2VsLWJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBtci1sZy01XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBOTyBTRUFSQ0ggUkVTVUxUUyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID09IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBlbXB0eS1hY2NvdW50UGFnZS1jb250YWluZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtMTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtpbm5lckhUTUxdPVwibm9JbnZvaWNlQ3JkaXREYXRhXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW52b2ljZS1jcmVkaXQtdGFibGVcIiAqbmdJZj1cImludm9pY2VDcmVkaXRMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1vcmRlclwiXHJcbiAgICAgICAgICA+e3sgdG90YWxSZXN1bHRzIH19IEludm9pY2VzIGFuZCBDcmVkaXQgTm90ZXMgZm91bmQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweS0zXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiXCIgaWQ9XCJcIiBjbGFzcz1cIm1yLTNcIiAoY2hhbmdlKT1cInNvcnRCeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgb3B0aW9uLmNvZGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGludm9pY2VTb3J0TGlzdHNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlld1wiICpuZ0lmPVwiaXNEZXNrdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGxpc3R2aWV3ID09PSBmYWxzZSB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JpZE9yTGlzdFZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3R2aWV3ID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1saWdodC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2xpZ2h0XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0dyaWQtZGFyay5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2RhcmtcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIEdyaWRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbGlzdHZpZXcgPT09IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtaW1nXCJcclxuICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWxpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvTGlzdC1kYXJrLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICBMaXN0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIElOVk9JQ0UgQ1JFRElUIExJU1QgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxpc3QtdmlldyB0YWJsZS1yZXNwb25zaXZlXCJcclxuICAgICAgICAqbmdJZj1cImxpc3R2aWV3ICYmIGlzRGVza3RvcCAmJiBpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhY2NvdW50LWxpc3QtdGFibGVcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRhdGU8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlR5cGU8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkludm9pY2UgIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T3JkZXIgIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+UE8gIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U3RhdHVzPC90aD5cclxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Ub3RhbCA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIE91dHN0YW5kaW5nIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRvd25sb2FkPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLmRhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLmRvY3VtZW50VHlwZS5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgZGF0YS5kb2N1bWVudE51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IGRhdGEub3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBvTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZSB7eyBkYXRhLmNsYXNzTmFtZSB9fVwiPlxyXG4gICAgICAgICAgICAgICAge3sgZGF0YS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7ICduZWdhdGl2ZS1wcmljZSc6IGRhdGEuYW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmZvcm1hdHRlZEFtb3VudCB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ25lZ2F0aXZlLXByaWNlJzogZGF0YS5vcGVuQW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmZvcm1hdHRlZE9wZW5BbW91bnQgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJkb3dubG9hZFBkZihkYXRhPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkwsIGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5yZWFsRmlsZU5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuYXR0YWNobWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwie3sgZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMIH19XCJcclxuICAgICAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJkb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yXCJcclxuICAgICAgICAgICAgICAgICAgLz5QREY8L2FcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSU5WT0lDRSBDUkVESVQgR1JJRCAtLT5cclxuICAgICAgPG5neC1tYXNvbnJ5XHJcbiAgICAgICAgY2xhc3M9XCJyb3cgZ3JpZC12aWV3XCJcclxuICAgICAgICAqbmdJZj1cIighbGlzdHZpZXcgfHwgIWlzRGVza3RvcCkgJiYgaW52b2ljZUNyZWRpdExpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgbmd4TWFzb25yeUl0ZW1cclxuICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29sLW1kLTYgY29sLXNtLTEyIGNvbC0xMlwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdGlsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC10b3BcIj5cclxuICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5JbnZvaWNlICM6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZG9jdW1lbnROdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlR5cGU6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZG9jdW1lbnRUeXBlLm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+RGF0ZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+e3sgZGF0YS5kYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5PcmRlciAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyBkYXRhLm9yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5QTyAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBvTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Ub3RhbDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyAnbmVnYXRpdmUtcHJpY2UnOiBkYXRhLmFtb3VudCA8IDAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZm9ybWF0dGVkQW1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+T3V0c3RhbmRpbmc6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ25lZ2F0aXZlLXByaWNlJzogZGF0YS5vcGVuQW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5mb3JtYXR0ZWRPcGVuQW1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+U3RhdHVzOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0YXR1cy1tZXNzYWdlIHt7IGRhdGEuY2xhc3NOYW1lIH19IHN0YXR1cy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Eb3dubG9hZDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBGdXR1cmUgcmVxdWlyZW1lbnQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZG93bmxvYWRQZGYoZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMLCBkYXRhPy5hdHRhY2htZW50c1swXT8ucmVhbEZpbGVOYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5hdHRhY2htZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5QREY8L2FcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmd4LW1hc29ucnk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==