simpo-component-library 3.6.448 → 3.6.450

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 (250) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  5. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  6. package/esm2022/lib/constants/business.constant.mjs +1 -1
  7. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  8. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  9. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  10. package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
  11. package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
  12. package/esm2022/lib/directive/color.directive.mjs +1 -1
  13. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  14. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  15. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  16. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  17. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  18. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  19. package/esm2022/lib/directive/height.directive.mjs +1 -1
  20. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  21. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  22. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  23. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  24. package/esm2022/lib/directive/image-directive.directive.mjs +2 -2
  25. package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
  26. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  27. package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
  28. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  29. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  30. package/esm2022/lib/directive/spacing-around.directive.mjs +3 -3
  31. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +4 -4
  32. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  33. package/esm2022/lib/directive/sticky-directive.mjs +1 -1
  34. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  35. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  36. package/esm2022/lib/directive/translate-onhover.directive.mjs +3 -3
  37. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  38. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  39. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  40. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +19 -3
  41. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  42. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
  43. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
  44. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
  45. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  46. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  47. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  49. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  50. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  52. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  53. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  54. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
  55. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  56. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
  57. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  61. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  62. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
  63. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +37 -0
  65. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  66. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  67. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
  68. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  69. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
  70. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  71. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +227 -18
  72. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  73. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +193 -14
  74. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  75. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +108 -0
  76. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +2 -0
  77. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
  78. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  79. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  80. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  81. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  82. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  83. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +179 -22
  84. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  85. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +90 -31
  86. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  87. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  88. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  89. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  90. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  91. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  92. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  95. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  96. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  97. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  98. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  99. package/esm2022/lib/elements/add-section/add-section.component.mjs +15 -5
  100. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  101. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  102. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  103. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  104. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  105. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
  106. package/esm2022/lib/elements/editor-service.service.mjs +29 -6
  107. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  108. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
  109. package/esm2022/lib/elements/index.mjs +1 -1
  110. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  111. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  112. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  113. package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +3 -3
  114. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  115. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  116. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  117. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
  118. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
  119. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  120. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  121. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  122. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
  123. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  124. package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
  125. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  126. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  127. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  128. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  129. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  130. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  131. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +19 -17
  132. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +3 -13
  133. package/esm2022/lib/sections/banner-section/banner-section.model.mjs +1 -1
  134. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +4 -4
  135. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  136. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  137. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  138. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  139. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  140. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  141. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  142. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  143. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  144. package/esm2022/lib/sections/header-section/header-section.component.mjs +35 -39
  145. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  146. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  147. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  148. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  149. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  150. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  151. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  152. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  153. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  154. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  155. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  156. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  157. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  158. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  159. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  160. package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
  161. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  162. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
  163. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  164. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  165. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  166. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  167. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  168. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  169. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  170. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  171. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  172. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  173. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  174. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  175. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  176. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  177. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  178. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  179. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  180. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +265 -0
  181. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +2 -0
  182. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  183. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  184. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  185. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  186. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  187. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  188. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  189. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
  190. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  191. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  192. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  193. package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
  194. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  195. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  196. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  197. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  198. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  199. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  200. package/esm2022/lib/services/cart.service.mjs +1 -1
  201. package/esm2022/lib/services/endUser.service.mjs +1 -1
  202. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  203. package/esm2022/lib/services/local-storage.token.mjs +23 -0
  204. package/esm2022/lib/services/rest.service.mjs +102 -10
  205. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  206. package/esm2022/lib/services/storage-like.mjs +2 -0
  207. package/esm2022/lib/services/storage.service.mjs +59 -35
  208. package/esm2022/lib/styles/index.mjs +2 -1
  209. package/esm2022/lib/styles/style.model.mjs +1 -1
  210. package/esm2022/lib/styles/types.mjs +1 -1
  211. package/esm2022/lib/tokens/api-token.mjs +1 -1
  212. package/esm2022/public-api.mjs +5 -1
  213. package/fesm2022/simpo-component-library.mjs +1587 -459
  214. package/fesm2022/simpo-component-library.mjs.map +1 -1
  215. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +2 -1
  216. package/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.d.ts +14 -0
  217. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  218. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +41 -3
  219. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +35 -3
  220. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +28 -0
  221. package/lib/ecommerce/sections/schemes/schemes.component.model.d.ts +21 -0
  222. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +19 -2
  223. package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +4 -0
  224. package/lib/elements/editor-service.service.d.ts +4 -1
  225. package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
  226. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
  227. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  228. package/lib/sections/banner-section/banner-section.component.d.ts +1 -4
  229. package/lib/sections/banner-section/banner-section.model.d.ts +1 -2
  230. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  231. package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
  232. package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
  233. package/lib/sections/header-section/header-section.component.d.ts +6 -1
  234. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  235. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
  236. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  237. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  238. package/lib/sections/scheme-detail/scheme-detail.component.d.ts +68 -0
  239. package/lib/sections/scheme-detail/scheme-detail.modal.d.ts +17 -0
  240. package/lib/services/local-storage.token.d.ts +3 -0
  241. package/lib/services/rest.service.d.ts +21 -2
  242. package/lib/services/storage-like.d.ts +8 -0
  243. package/lib/services/storage.service.d.ts +4 -1
  244. package/lib/styles/index.d.ts +2 -1
  245. package/lib/styles/style.model.d.ts +0 -5
  246. package/package.json +1 -1
  247. package/public-api.d.ts +4 -0
  248. package/simpo-component-library-3.6.450.tgz +0 -0
  249. package/src/lib/styles/global-styles.css +272 -272
  250. package/simpo-component-library-3.6.448.tgz +0 -0
@@ -37,6 +37,16 @@ export class AddSectionComponent {
37
37
  this.tabShiftLoader = false;
38
38
  this.searchText = "";
39
39
  this.dummy2 = {};
40
+ // searchSectionComponents(){
41
+ // this.searchControl.valueChanges
42
+ // .pipe(
43
+ // debounceTime(500),
44
+ // distinctUntilChanged()
45
+ // )
46
+ // .subscribe(value => {
47
+ // this.searchSections(value);
48
+ // });
49
+ // }
40
50
  this.isSearch = false;
41
51
  }
42
52
  ngOnInit() {
@@ -79,12 +89,12 @@ export class AddSectionComponent {
79
89
  if (this.searchText.length == 0)
80
90
  this.sections = this.dummySections;
81
91
  for (let ele of Object.keys(this.dummySections)) {
82
- if (ele.toLowerCase().includes(this.searchText.toLowerCase())) {
92
+ if (ele.toLowerCase().includes(this.searchText)) {
83
93
  this.dummy2[ele] = [...this.dummySections[ele]];
84
94
  }
85
95
  else {
86
96
  for (let j of this.dummySections[ele]) {
87
- if (j.sectionName.toLowerCase().includes(this.searchText.toLowerCase())) {
97
+ if (j.sectionName.toLowerCase().includes(this.searchText)) {
88
98
  if (!this.dummy2[ele]) {
89
99
  this.dummy2[ele] = [];
90
100
  }
@@ -101,13 +111,13 @@ export class AddSectionComponent {
101
111
  this.dummy2 = {};
102
112
  }
103
113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddSectionComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.HttpClient }, { token: i3.EventsService }, { token: i4.ElementServiceService }, { token: i4.ElementServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddSectionComponent, isStandalone: true, selector: "simpo-add-section", ngImport: i0, template: "<section class=\"main-container\">\r\n <div class=\"header-container d-flex align-items-center justify-content-between\">\r\n <div>Select Template</div>\r\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\" (click)=\"dialog.close()\">\r\n close\r\n </mat-icon>\r\n </div>\r\n <div class=\"parent-container\">\r\n <div class=\"search-bar-container\">\r\n <div class=\"search-bar d-flex gap-10\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\r\n alt=\"search-bar-icon\">\r\n <input type=\"text\" placeholder=\"Search for Sections\" [(ngModel)]=\"searchText\" (ngModelChange)=\"searchSections()\">\r\n </div>\r\n </div>\r\n <div class=\"tab-container d-flex justify-content-around align-items-center\">\r\n <ng-container *ngFor=\"let ele of tabs\">\r\n <div class=\"tabs\" (click)=\"selectedTab = ele.value\" [class.active-tab]=\"ele.value == selectedTab\">\r\n {{ele.viewValue}}\r\n <ng-container *ngIf=\"ele.value == 'PRO' && ele.value != selectedTab\">\r\n <img class=\"w-30\"\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/468281c1744699664858Frame%201244831740%20%281%29.png\"\r\n alt=\"pro-icon\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"selectedTab === 'BASIC'; else proTabContent\">\r\n <ng-container *ngIf=\"!isSearch;else emptyScreen\">\r\n <div class=\"categories-container d-flex\">\r\n <div class=\"categories-sidepanel\" *ngIf=\"!loader\">\r\n <ng-container *ngFor=\"let ele of getObjectKeys(sections)\">\r\n <div class=\"side-section d-flex justify-content-center align-items-center flex-column\"\r\n (click)=\"selectSection(ele)\"\r\n [class.active-section]=\"selectedSection == sections[ele]\">\r\n <div class=\"image-container\">\r\n <ng-container *ngIf=\"selectedSection == sections[ele]\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/954383c1741850392802Group%201707481879.png\"\r\n alt=\"icon text\">\r\n </ng-container>\r\n <ng-container *ngIf=\"selectedSection != sections[ele]\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/846145c1741850574864Icon%20%281%29.png\"\r\n alt=\"icon text\">\r\n </ng-container>\r\n </div>\r\n <div class=\"section-text\">\r\n {{ele}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"categories-render-section\" *ngIf=\" !loader && !tabShiftLoader\">\r\n <div class=\"categories-head\">\r\n {{selectedSectionName}}\r\n </div>\r\n <div class=\"sub-text\">\r\n Select a section to add to your page\r\n </div>\r\n <div class=\"sections-container\">\r\n <ng-container *ngFor=\"let ele of selectedSection\">\r\n <div class=\"section\">\r\n <div class=\"section-header\">{{ele.sectionName}}</div>\r\n <div class=\"section-img-container cp\"\r\n (click)=\"addNewSection(ele.componentId,ele.sectionType,$event)\">\r\n <ng-container *ngIf=\"ele?.image; else noImage\">\r\n <img [src]=\"ele?.image\" alt=\"section image\">\r\n </ng-container>\r\n <ng-template #noImage>\r\n <img src=\"https://img.freepik.com/premium-vector/default-image-icon-vector-missing-picture-page-website-design-mobile-app-no-photo-available_87543-11093.jpg\"\r\n alt=\"section image\" class=\"h-30\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"categories-sidepanel\" *ngIf=\"loader\">\r\n <ng-container *ngFor=\"let ele of [1,1,1,1,1,1,1,1,1]\">\r\n <div class=\"d-flex justify-content-center align-items-center flex-column\">\r\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n height: '8vh',\r\n width: '65%',\r\n 'border-radius': '13px',\r\n 'margin-bottom' : '10px',\r\n }\" class=\"d-flex justify-content-center w-100\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"categories-render-section\" *ngIf=\"loader || tabShiftLoader\">\r\n <div class=\"categories-head\">\r\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n width: '20%',\r\n height : '3vh',\r\n 'border-radius': '5px',\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n width: '60%',\r\n height : '2vh',\r\n 'border-radius': '5px',\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sections-container\">\r\n <ng-container *ngFor=\"let ele of [1,1,1,1]\">\r\n <div class=\"section\">\r\n <div> <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n width: '25%',\r\n height : '2vh',\r\n 'border-radius': '5px',\r\n }\">\r\n </ngx-skeleton-loader></div>\r\n <div>\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '100%',\r\n height : '25vh',\r\n 'border-radius': '5px',\r\n 'margin':'2px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #proTabContent>\r\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\r\n <div class=\"image-container-1\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\r\n </div>\r\n <div class=\"oops-text\">\r\n Coming Soon\r\n </div>\r\n <div class=\"oops-sub-text\">\r\n <div class=\"oops-sub-text-1 text-center\">Woof! Something pawsome is coming!</div>\r\n <div class=\"oops-sub-text-2 text-center\">\r\n Hey hooman! I just sniffed out something super exciting... and it\u2019s almost here! \r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #emptyScreen>\r\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\r\n <div class=\"image-container-1\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\r\n </div>\r\n <div class=\"oops-text\">\r\n Oops! \r\n </div>\r\n <div class=\"oops-sub-text\">\r\n <div class=\"oops-sub-text-1 text-center\">I sniffed everywhere, but I couldn't find what you're looking for</div>\r\n <div class=\"oops-sub-text-2 text-center\">\r\n Maybe try a different search? \r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.header-container{padding:12px 15px;font-size:15px;line-height:24px;font-weight:600;color:#000;box-shadow:0 0 4px #00000040;margin-bottom:2px}.search-bar{box-shadow:0 0 4px #00000040;padding:8px;border-radius:8px}.search-bar img{width:19px;height:18px}.search-bar input{width:100%;outline:none;border:unset;font-size:13px;font-weight:400;background:#fafafa}.gap-10{gap:10px!important}.tab-container{padding:8px;margin:0 15px;gap:3%;background:#fff;border-radius:13px}.tabs{font-size:14px;font-weight:500;line-height:24px;color:#2c2c2c99;width:30%;cursor:pointer;padding:8px 0;text-align:center}.active-tab{color:#fff!important;background:var(--primary-bg-color);box-shadow:0 0 4px #00000040;border-radius:8px;transition:opacity .3s ease-in-out,transform .3s ease-in-out;opacity:1;transform:translateY(0)}.categories-sidepanel{width:15%;padding:10px 5px;margin:15px 0;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.side-section{padding:6px 10px;border-radius:8px;margin-bottom:10px;cursor:pointer}.side-section img{width:16px}.side-section .image-container{background:#f9fafb;padding:5px 8px;border-radius:5px}.side-section .section-text{font-size:12px;font-weight:500;line-height:24px;text-align:center;color:#a1a1a1}.active-section{background:var(--primary-bg-color)!important;box-shadow:0 0 4px #00000040}.active-section .section-text{color:#fff!important}.active-section .image-container{background:unset!important;padding:unset!important;border-radius:unset!important}.categories-render-section{width:85%;padding:15px;margin:15px 10px;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.categories-head{font-size:20px;font-weight:600;line-height:24px;color:#434343}.sub-text{font-size:13px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section{margin-bottom:10px}.section-header{font-size:14px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section-img-container{padding:18px;border-radius:8px;background:#f9fafb}.section-img-container img{width:100%}.search-bar-container{padding:15px}.parent-container{background:#fafafa}.f-18{font-size:18px;cursor:pointer}.w-30{width:30px!important}.h-30{height:30vh}.cp{cursor:pointer}.empty-div{height:calc(70vh + -0px);background:#fff;margin:18px;border-radius:13px}.empty-img{height:30vh}.oops-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.oops-sub-text-1{font-size:17px;font-weight:600;color:#101010e5}.oops-sub-text-2{font-size:14px;font-weight:600;color:#101010e5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", 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]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddSectionComponent, isStandalone: true, selector: "simpo-add-section", ngImport: i0, template: "<section class=\"main-container\">\n <div class=\"header-container d-flex align-items-center justify-content-between\">\n <div>Select Template</div>\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\" (click)=\"dialog.close()\">\n close\n </mat-icon>\n </div>\n <div class=\"parent-container\">\n <div class=\"search-bar-container\">\n <div class=\"search-bar d-flex gap-10\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\n alt=\"search-bar-icon\">\n <input type=\"text\" placeholder=\"Search for Sections\" [(ngModel)]=\"searchText\" (ngModelChange)=\"searchSections()\">\n </div>\n </div>\n <div class=\"tab-container d-flex justify-content-around align-items-center\">\n <ng-container *ngFor=\"let ele of tabs\">\n <div class=\"tabs\" (click)=\"selectedTab = ele.value\" [class.active-tab]=\"ele.value == selectedTab\">\n {{ele.viewValue}}\n <ng-container *ngIf=\"ele.value == 'PRO' && ele.value != selectedTab\">\n <img class=\"w-30\"\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/468281c1744699664858Frame%201244831740%20%281%29.png\"\n alt=\"pro-icon\">\n </ng-container>\n </div>\n </ng-container>\n </div>\n <ng-container *ngIf=\"selectedTab === 'BASIC'; else proTabContent\">\n <ng-container *ngIf=\"!isSearch;else emptyScreen\">\n <div class=\"categories-container d-flex\">\n <div class=\"categories-sidepanel\" *ngIf=\"!loader\">\n <ng-container *ngFor=\"let ele of getObjectKeys(sections)\">\n <div class=\"side-section d-flex justify-content-center align-items-center flex-column\"\n (click)=\"selectSection(ele)\"\n [class.active-section]=\"selectedSection == sections[ele]\">\n <div class=\"image-container\">\n <ng-container *ngIf=\"selectedSection == sections[ele]\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/954383c1741850392802Group%201707481879.png\"\n alt=\"icon text\">\n </ng-container>\n <ng-container *ngIf=\"selectedSection != sections[ele]\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/846145c1741850574864Icon%20%281%29.png\"\n alt=\"icon text\">\n </ng-container>\n </div>\n <div class=\"section-text\">\n {{ele}}\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"categories-render-section\" *ngIf=\" !loader && !tabShiftLoader\">\n <div class=\"categories-head\">\n {{selectedSectionName}}\n </div>\n <div class=\"sub-text\">\n Select a section to add to your page\n </div>\n <div class=\"sections-container\">\n <ng-container *ngFor=\"let ele of selectedSection\">\n <div class=\"section\">\n <div class=\"section-header\">{{ele.sectionName}}</div>\n <div class=\"section-img-container cp\"\n (click)=\"addNewSection(ele.componentId,ele.sectionType,$event)\">\n <ng-container *ngIf=\"ele?.image; else noImage\">\n <img [src]=\"ele?.image\" alt=\"section image\">\n </ng-container>\n <ng-template #noImage>\n <img src=\"https://img.freepik.com/premium-vector/default-image-icon-vector-missing-picture-page-website-design-mobile-app-no-photo-available_87543-11093.jpg\"\n alt=\"section image\" class=\"h-30\">\n </ng-template>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"categories-sidepanel\" *ngIf=\"loader\">\n <ng-container *ngFor=\"let ele of [1,1,1,1,1,1,1,1,1]\">\n <div class=\"d-flex justify-content-center align-items-center flex-column\">\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n height: '8vh',\n width: '65%',\n 'border-radius': '13px',\n 'margin-bottom' : '10px',\n }\" class=\"d-flex justify-content-center w-100\">\n </ngx-skeleton-loader>\n </div>\n </ng-container>\n </div>\n <div class=\"categories-render-section\" *ngIf=\"loader || tabShiftLoader\">\n <div class=\"categories-head\">\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '20%',\n height : '3vh',\n 'border-radius': '5px',\n }\">\n </ngx-skeleton-loader>\n </div>\n <div class=\"sub-text\">\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '60%',\n height : '2vh',\n 'border-radius': '5px',\n }\">\n </ngx-skeleton-loader>\n </div>\n <div class=\"sections-container\">\n <ng-container *ngFor=\"let ele of [1,1,1,1]\">\n <div class=\"section\">\n <div> <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '25%',\n height : '2vh',\n 'border-radius': '5px',\n }\">\n </ngx-skeleton-loader></div>\n <div>\n <ngx-skeleton-loader [theme]=\"{\n width: '100%',\n height : '25vh',\n 'border-radius': '5px',\n 'margin':'2px'\n }\">\n </ngx-skeleton-loader>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #proTabContent>\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\n <div class=\"image-container-1\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\n </div>\n <div class=\"oops-text\">\n Coming Soon\n </div>\n <div class=\"oops-sub-text\">\n <div class=\"oops-sub-text-1 text-center\">Woof! Something pawsome is coming!</div>\n <div class=\"oops-sub-text-2 text-center\">\n Hey hooman! I just sniffed out something super exciting... and it\u2019s almost here! \n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #emptyScreen>\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\n <div class=\"image-container-1\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\n </div>\n <div class=\"oops-text\">\n Oops! \n </div>\n <div class=\"oops-sub-text\">\n <div class=\"oops-sub-text-1 text-center\">I sniffed everywhere, but I couldn't find what you're looking for</div>\n <div class=\"oops-sub-text-2 text-center\">\n Maybe try a different search? \n </div>\n </div>\n </div>\n </ng-template>\n </div>\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.header-container{padding:12px 15px;font-size:15px;line-height:24px;font-weight:600;color:#000;box-shadow:0 0 4px #00000040;margin-bottom:2px}.search-bar{box-shadow:0 0 4px #00000040;padding:8px;border-radius:8px}.search-bar img{width:19px;height:18px}.search-bar input{width:100%;outline:none;border:unset;font-size:13px;font-weight:400;background:#fafafa}.gap-10{gap:10px!important}.tab-container{padding:8px;margin:0 15px;gap:3%;background:#fff;border-radius:13px}.tabs{font-size:14px;font-weight:500;line-height:24px;color:#2c2c2c99;width:30%;cursor:pointer;padding:8px 0;text-align:center}.active-tab{color:#fff!important;background:var(--primary-bg-color);box-shadow:0 0 4px #00000040;border-radius:8px;transition:opacity .3s ease-in-out,transform .3s ease-in-out;opacity:1;transform:translateY(0)}.categories-sidepanel{width:15%;padding:10px 5px;margin:15px 0;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.side-section{padding:6px 10px;border-radius:8px;margin-bottom:10px;cursor:pointer}.side-section img{width:16px}.side-section .image-container{background:#f9fafb;padding:5px 8px;border-radius:5px}.side-section .section-text{font-size:12px;font-weight:500;line-height:24px;text-align:center;color:#a1a1a1}.active-section{background:var(--primary-bg-color)!important;box-shadow:0 0 4px #00000040}.active-section .section-text{color:#fff!important}.active-section .image-container{background:unset!important;padding:unset!important;border-radius:unset!important}.categories-render-section{width:85%;padding:15px;margin:15px 10px;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.categories-head{font-size:20px;font-weight:600;line-height:24px;color:#434343}.sub-text{font-size:13px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section{margin-bottom:10px}.section-header{font-size:14px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section-img-container{padding:18px;border-radius:8px;background:#f9fafb}.section-img-container img{width:100%}.search-bar-container{padding:15px}.parent-container{background:#fafafa}.f-18{font-size:18px;cursor:pointer}.w-30{width:30px!important}.h-30{height:30vh}.cp{cursor:pointer}.empty-div{height:calc(70vh + -0px);background:#fff;margin:18px;border-radius:13px}.empty-img{height:30vh}.oops-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.oops-sub-text-1{font-size:17px;font-weight:600;color:#101010e5}.oops-sub-text-2{font-size:14px;font-weight:600;color:#101010e5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", 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]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
105
115
  }
106
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddSectionComponent, decorators: [{
107
117
  type: Component,
108
- args: [{ selector: 'simpo-add-section', standalone: true, imports: [CommonModule, MatIconModule, NgxSkeletonLoaderModule, FormsModule], template: "<section class=\"main-container\">\r\n <div class=\"header-container d-flex align-items-center justify-content-between\">\r\n <div>Select Template</div>\r\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\" (click)=\"dialog.close()\">\r\n close\r\n </mat-icon>\r\n </div>\r\n <div class=\"parent-container\">\r\n <div class=\"search-bar-container\">\r\n <div class=\"search-bar d-flex gap-10\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\r\n alt=\"search-bar-icon\">\r\n <input type=\"text\" placeholder=\"Search for Sections\" [(ngModel)]=\"searchText\" (ngModelChange)=\"searchSections()\">\r\n </div>\r\n </div>\r\n <div class=\"tab-container d-flex justify-content-around align-items-center\">\r\n <ng-container *ngFor=\"let ele of tabs\">\r\n <div class=\"tabs\" (click)=\"selectedTab = ele.value\" [class.active-tab]=\"ele.value == selectedTab\">\r\n {{ele.viewValue}}\r\n <ng-container *ngIf=\"ele.value == 'PRO' && ele.value != selectedTab\">\r\n <img class=\"w-30\"\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/468281c1744699664858Frame%201244831740%20%281%29.png\"\r\n alt=\"pro-icon\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"selectedTab === 'BASIC'; else proTabContent\">\r\n <ng-container *ngIf=\"!isSearch;else emptyScreen\">\r\n <div class=\"categories-container d-flex\">\r\n <div class=\"categories-sidepanel\" *ngIf=\"!loader\">\r\n <ng-container *ngFor=\"let ele of getObjectKeys(sections)\">\r\n <div class=\"side-section d-flex justify-content-center align-items-center flex-column\"\r\n (click)=\"selectSection(ele)\"\r\n [class.active-section]=\"selectedSection == sections[ele]\">\r\n <div class=\"image-container\">\r\n <ng-container *ngIf=\"selectedSection == sections[ele]\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/954383c1741850392802Group%201707481879.png\"\r\n alt=\"icon text\">\r\n </ng-container>\r\n <ng-container *ngIf=\"selectedSection != sections[ele]\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/846145c1741850574864Icon%20%281%29.png\"\r\n alt=\"icon text\">\r\n </ng-container>\r\n </div>\r\n <div class=\"section-text\">\r\n {{ele}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"categories-render-section\" *ngIf=\" !loader && !tabShiftLoader\">\r\n <div class=\"categories-head\">\r\n {{selectedSectionName}}\r\n </div>\r\n <div class=\"sub-text\">\r\n Select a section to add to your page\r\n </div>\r\n <div class=\"sections-container\">\r\n <ng-container *ngFor=\"let ele of selectedSection\">\r\n <div class=\"section\">\r\n <div class=\"section-header\">{{ele.sectionName}}</div>\r\n <div class=\"section-img-container cp\"\r\n (click)=\"addNewSection(ele.componentId,ele.sectionType,$event)\">\r\n <ng-container *ngIf=\"ele?.image; else noImage\">\r\n <img [src]=\"ele?.image\" alt=\"section image\">\r\n </ng-container>\r\n <ng-template #noImage>\r\n <img src=\"https://img.freepik.com/premium-vector/default-image-icon-vector-missing-picture-page-website-design-mobile-app-no-photo-available_87543-11093.jpg\"\r\n alt=\"section image\" class=\"h-30\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"categories-sidepanel\" *ngIf=\"loader\">\r\n <ng-container *ngFor=\"let ele of [1,1,1,1,1,1,1,1,1]\">\r\n <div class=\"d-flex justify-content-center align-items-center flex-column\">\r\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n height: '8vh',\r\n width: '65%',\r\n 'border-radius': '13px',\r\n 'margin-bottom' : '10px',\r\n }\" class=\"d-flex justify-content-center w-100\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"categories-render-section\" *ngIf=\"loader || tabShiftLoader\">\r\n <div class=\"categories-head\">\r\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n width: '20%',\r\n height : '3vh',\r\n 'border-radius': '5px',\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n width: '60%',\r\n height : '2vh',\r\n 'border-radius': '5px',\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sections-container\">\r\n <ng-container *ngFor=\"let ele of [1,1,1,1]\">\r\n <div class=\"section\">\r\n <div> <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\r\n width: '25%',\r\n height : '2vh',\r\n 'border-radius': '5px',\r\n }\">\r\n </ngx-skeleton-loader></div>\r\n <div>\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '100%',\r\n height : '25vh',\r\n 'border-radius': '5px',\r\n 'margin':'2px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #proTabContent>\r\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\r\n <div class=\"image-container-1\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\r\n </div>\r\n <div class=\"oops-text\">\r\n Coming Soon\r\n </div>\r\n <div class=\"oops-sub-text\">\r\n <div class=\"oops-sub-text-1 text-center\">Woof! Something pawsome is coming!</div>\r\n <div class=\"oops-sub-text-2 text-center\">\r\n Hey hooman! I just sniffed out something super exciting... and it\u2019s almost here! \r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #emptyScreen>\r\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\r\n <div class=\"image-container-1\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\r\n </div>\r\n <div class=\"oops-text\">\r\n Oops! \r\n </div>\r\n <div class=\"oops-sub-text\">\r\n <div class=\"oops-sub-text-1 text-center\">I sniffed everywhere, but I couldn't find what you're looking for</div>\r\n <div class=\"oops-sub-text-2 text-center\">\r\n Maybe try a different search? \r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.header-container{padding:12px 15px;font-size:15px;line-height:24px;font-weight:600;color:#000;box-shadow:0 0 4px #00000040;margin-bottom:2px}.search-bar{box-shadow:0 0 4px #00000040;padding:8px;border-radius:8px}.search-bar img{width:19px;height:18px}.search-bar input{width:100%;outline:none;border:unset;font-size:13px;font-weight:400;background:#fafafa}.gap-10{gap:10px!important}.tab-container{padding:8px;margin:0 15px;gap:3%;background:#fff;border-radius:13px}.tabs{font-size:14px;font-weight:500;line-height:24px;color:#2c2c2c99;width:30%;cursor:pointer;padding:8px 0;text-align:center}.active-tab{color:#fff!important;background:var(--primary-bg-color);box-shadow:0 0 4px #00000040;border-radius:8px;transition:opacity .3s ease-in-out,transform .3s ease-in-out;opacity:1;transform:translateY(0)}.categories-sidepanel{width:15%;padding:10px 5px;margin:15px 0;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.side-section{padding:6px 10px;border-radius:8px;margin-bottom:10px;cursor:pointer}.side-section img{width:16px}.side-section .image-container{background:#f9fafb;padding:5px 8px;border-radius:5px}.side-section .section-text{font-size:12px;font-weight:500;line-height:24px;text-align:center;color:#a1a1a1}.active-section{background:var(--primary-bg-color)!important;box-shadow:0 0 4px #00000040}.active-section .section-text{color:#fff!important}.active-section .image-container{background:unset!important;padding:unset!important;border-radius:unset!important}.categories-render-section{width:85%;padding:15px;margin:15px 10px;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.categories-head{font-size:20px;font-weight:600;line-height:24px;color:#434343}.sub-text{font-size:13px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section{margin-bottom:10px}.section-header{font-size:14px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section-img-container{padding:18px;border-radius:8px;background:#f9fafb}.section-img-container img{width:100%}.search-bar-container{padding:15px}.parent-container{background:#fafafa}.f-18{font-size:18px;cursor:pointer}.w-30{width:30px!important}.h-30{height:30vh}.cp{cursor:pointer}.empty-div{height:calc(70vh + -0px);background:#fff;margin:18px;border-radius:13px}.empty-img{height:30vh}.oops-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.oops-sub-text-1{font-size:17px;font-weight:600;color:#101010e5}.oops-sub-text-2{font-size:14px;font-weight:600;color:#101010e5}\n"] }]
118
+ args: [{ selector: 'simpo-add-section', standalone: true, imports: [CommonModule, MatIconModule, NgxSkeletonLoaderModule, FormsModule], template: "<section class=\"main-container\">\n <div class=\"header-container d-flex align-items-center justify-content-between\">\n <div>Select Template</div>\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\" (click)=\"dialog.close()\">\n close\n </mat-icon>\n </div>\n <div class=\"parent-container\">\n <div class=\"search-bar-container\">\n <div class=\"search-bar d-flex gap-10\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\n alt=\"search-bar-icon\">\n <input type=\"text\" placeholder=\"Search for Sections\" [(ngModel)]=\"searchText\" (ngModelChange)=\"searchSections()\">\n </div>\n </div>\n <div class=\"tab-container d-flex justify-content-around align-items-center\">\n <ng-container *ngFor=\"let ele of tabs\">\n <div class=\"tabs\" (click)=\"selectedTab = ele.value\" [class.active-tab]=\"ele.value == selectedTab\">\n {{ele.viewValue}}\n <ng-container *ngIf=\"ele.value == 'PRO' && ele.value != selectedTab\">\n <img class=\"w-30\"\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/468281c1744699664858Frame%201244831740%20%281%29.png\"\n alt=\"pro-icon\">\n </ng-container>\n </div>\n </ng-container>\n </div>\n <ng-container *ngIf=\"selectedTab === 'BASIC'; else proTabContent\">\n <ng-container *ngIf=\"!isSearch;else emptyScreen\">\n <div class=\"categories-container d-flex\">\n <div class=\"categories-sidepanel\" *ngIf=\"!loader\">\n <ng-container *ngFor=\"let ele of getObjectKeys(sections)\">\n <div class=\"side-section d-flex justify-content-center align-items-center flex-column\"\n (click)=\"selectSection(ele)\"\n [class.active-section]=\"selectedSection == sections[ele]\">\n <div class=\"image-container\">\n <ng-container *ngIf=\"selectedSection == sections[ele]\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/954383c1741850392802Group%201707481879.png\"\n alt=\"icon text\">\n </ng-container>\n <ng-container *ngIf=\"selectedSection != sections[ele]\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/846145c1741850574864Icon%20%281%29.png\"\n alt=\"icon text\">\n </ng-container>\n </div>\n <div class=\"section-text\">\n {{ele}}\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"categories-render-section\" *ngIf=\" !loader && !tabShiftLoader\">\n <div class=\"categories-head\">\n {{selectedSectionName}}\n </div>\n <div class=\"sub-text\">\n Select a section to add to your page\n </div>\n <div class=\"sections-container\">\n <ng-container *ngFor=\"let ele of selectedSection\">\n <div class=\"section\">\n <div class=\"section-header\">{{ele.sectionName}}</div>\n <div class=\"section-img-container cp\"\n (click)=\"addNewSection(ele.componentId,ele.sectionType,$event)\">\n <ng-container *ngIf=\"ele?.image; else noImage\">\n <img [src]=\"ele?.image\" alt=\"section image\">\n </ng-container>\n <ng-template #noImage>\n <img src=\"https://img.freepik.com/premium-vector/default-image-icon-vector-missing-picture-page-website-design-mobile-app-no-photo-available_87543-11093.jpg\"\n alt=\"section image\" class=\"h-30\">\n </ng-template>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"categories-sidepanel\" *ngIf=\"loader\">\n <ng-container *ngFor=\"let ele of [1,1,1,1,1,1,1,1,1]\">\n <div class=\"d-flex justify-content-center align-items-center flex-column\">\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n height: '8vh',\n width: '65%',\n 'border-radius': '13px',\n 'margin-bottom' : '10px',\n }\" class=\"d-flex justify-content-center w-100\">\n </ngx-skeleton-loader>\n </div>\n </ng-container>\n </div>\n <div class=\"categories-render-section\" *ngIf=\"loader || tabShiftLoader\">\n <div class=\"categories-head\">\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '20%',\n height : '3vh',\n 'border-radius': '5px',\n }\">\n </ngx-skeleton-loader>\n </div>\n <div class=\"sub-text\">\n <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '60%',\n height : '2vh',\n 'border-radius': '5px',\n }\">\n </ngx-skeleton-loader>\n </div>\n <div class=\"sections-container\">\n <ng-container *ngFor=\"let ele of [1,1,1,1]\">\n <div class=\"section\">\n <div> <ngx-skeleton-loader appearance=\"circle\" [theme]=\"{\n width: '25%',\n height : '2vh',\n 'border-radius': '5px',\n }\">\n </ngx-skeleton-loader></div>\n <div>\n <ngx-skeleton-loader [theme]=\"{\n width: '100%',\n height : '25vh',\n 'border-radius': '5px',\n 'margin':'2px'\n }\">\n </ngx-skeleton-loader>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #proTabContent>\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\n <div class=\"image-container-1\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\n </div>\n <div class=\"oops-text\">\n Coming Soon\n </div>\n <div class=\"oops-sub-text\">\n <div class=\"oops-sub-text-1 text-center\">Woof! Something pawsome is coming!</div>\n <div class=\"oops-sub-text-2 text-center\">\n Hey hooman! I just sniffed out something super exciting... and it\u2019s almost here! \n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #emptyScreen>\n <div class=\"empty-div d-flex align-items-center justify-content-center flex-column\">\n <div class=\"image-container-1\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/377076c1743154807683image%20%286%29.png\" alt=\"empty-img\" class=\"empty-img \">\n </div>\n <div class=\"oops-text\">\n Oops! \n </div>\n <div class=\"oops-sub-text\">\n <div class=\"oops-sub-text-1 text-center\">I sniffed everywhere, but I couldn't find what you're looking for</div>\n <div class=\"oops-sub-text-2 text-center\">\n Maybe try a different search? \n </div>\n </div>\n </div>\n </ng-template>\n </div>\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.header-container{padding:12px 15px;font-size:15px;line-height:24px;font-weight:600;color:#000;box-shadow:0 0 4px #00000040;margin-bottom:2px}.search-bar{box-shadow:0 0 4px #00000040;padding:8px;border-radius:8px}.search-bar img{width:19px;height:18px}.search-bar input{width:100%;outline:none;border:unset;font-size:13px;font-weight:400;background:#fafafa}.gap-10{gap:10px!important}.tab-container{padding:8px;margin:0 15px;gap:3%;background:#fff;border-radius:13px}.tabs{font-size:14px;font-weight:500;line-height:24px;color:#2c2c2c99;width:30%;cursor:pointer;padding:8px 0;text-align:center}.active-tab{color:#fff!important;background:var(--primary-bg-color);box-shadow:0 0 4px #00000040;border-radius:8px;transition:opacity .3s ease-in-out,transform .3s ease-in-out;opacity:1;transform:translateY(0)}.categories-sidepanel{width:15%;padding:10px 5px;margin:15px 0;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.side-section{padding:6px 10px;border-radius:8px;margin-bottom:10px;cursor:pointer}.side-section img{width:16px}.side-section .image-container{background:#f9fafb;padding:5px 8px;border-radius:5px}.side-section .section-text{font-size:12px;font-weight:500;line-height:24px;text-align:center;color:#a1a1a1}.active-section{background:var(--primary-bg-color)!important;box-shadow:0 0 4px #00000040}.active-section .section-text{color:#fff!important}.active-section .image-container{background:unset!important;padding:unset!important;border-radius:unset!important}.categories-render-section{width:85%;padding:15px;margin:15px 10px;border-radius:10px;height:calc(70vh + -0px);overflow-y:scroll;background:#fff}.categories-head{font-size:20px;font-weight:600;line-height:24px;color:#434343}.sub-text{font-size:13px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section{margin-bottom:10px}.section-header{font-size:14px;font-weight:500;line-height:24px;color:#a1a1a1;margin-bottom:10px}.section-img-container{padding:18px;border-radius:8px;background:#f9fafb}.section-img-container img{width:100%}.search-bar-container{padding:15px}.parent-container{background:#fafafa}.f-18{font-size:18px;cursor:pointer}.w-30{width:30px!important}.h-30{height:30vh}.cp{cursor:pointer}.empty-div{height:calc(70vh + -0px);background:#fff;margin:18px;border-radius:13px}.empty-img{height:30vh}.oops-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.oops-sub-text-1{font-size:17px;font-weight:600;color:#101010e5}.oops-sub-text-2{font-size:14px;font-weight:600;color:#101010e5}\n"] }]
109
119
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
110
120
  type: Inject,
111
121
  args: [MAT_DIALOG_DATA]
112
122
  }] }, { type: i2.HttpClient }, { type: i3.EventsService }, { type: i4.ElementServiceService }, { type: i4.ElementServiceService }] });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9hZGQtc2VjdGlvbi9hZGQtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2FkZC1zZWN0aW9uL2FkZC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQWUsV0FBVyxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFFbkUsaUVBQWlFO0FBU2pFLE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFBbUIsTUFBeUMsRUFDMUIsSUFBUyxFQUNqQyxJQUFnQixFQUNoQixhQUE0QixFQUM1QixhQUFvQztJQUM1QyxzQ0FBc0M7SUFDOUIsY0FBcUM7UUFONUIsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUVwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFLL0MsaUJBQVksR0FBNEIsUUFBUSxDQUFDO1FBT2pELGdCQUFXLEdBQVcsT0FBTyxDQUFBO1FBQzdCLFNBQUksR0FBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQ25ELEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQ3BELEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1NBQ2pDLENBQUE7UUFHRCxhQUFRLEdBQVEsRUFBRSxDQUFBO1FBQ2xCLG9CQUFlLEdBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN2Qyx3QkFBbUIsR0FBUSxFQUFFLENBQUE7UUFDN0IsV0FBTSxHQUFZLEtBQUssQ0FBQTtRQUN2QixtQkFBYyxHQUFZLEtBQUssQ0FBQTtRQXVDL0IsZUFBVSxHQUFXLEVBQUUsQ0FBQTtRQUV2QixXQUFNLEdBQVEsRUFBRSxDQUFBO1FBRWhCLGFBQVEsR0FBYSxLQUFLLENBQUE7SUEvRDFCLENBQUM7SUFHRCxRQUFRO1FBQ04sTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7UUFDcEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFjRCx1Q0FBdUM7SUFFdkMsYUFBYSxDQUFDLEdBQVE7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUM7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQzdCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7UUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDMUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWE7UUFDM0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQWdCLEVBQUUsV0FBZ0IsRUFBRSxLQUFVO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDdkssSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQU9ELGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO1FBQ3BDLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUN4QixDQUFDO3dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMzQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxJQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtRQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7SUFDbEIsQ0FBQzsrR0F0R1UsbUJBQW1CLDhDQUtwQixlQUFlO21HQUxkLG1CQUFtQiw2RUNuQmhDLDY5VEFvS1UscXJGRHJKRSxZQUFZLCtQQUFFLGFBQWEsbUxBQUUsdUJBQXVCLDhNQUFFLFdBQVc7OzRGQUloRSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxDQUFDOzswQkFTekUsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50U2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9lZGl0b3Itc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG4vLyBpbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJ0BzaW1wby11aS9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1hZGQtc2VjdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FkZC1zZWN0aW9uLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRTZWN0aW9uQ29tcG9uZW50IHtcclxuXHJcbiAgT2JqZWN0PyA6IE9iamVjdFxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2dSZWY8QWRkU2VjdGlvbkNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgZWRpdG9yU2VydmljZTogRWxlbWVudFNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSAgcmVzdFNlcnZpY2UgOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudFNlcnZpY2U6IEVsZW1lbnRTZXJ2aWNlU2VydmljZVxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIGJ1c2luZXNzVHlwZTogJ1NUQVRJQycgfCAnRV9DT01NRVJDRScgPSAnU1RBVElDJztcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2JEZXRhaWxzJykgfHwgJyc7XHJcbiAgICB0aGlzLmJ1c2luZXNzVHlwZSA9IGJ1c2luZXNzID8gSlNPTi5wYXJzZShidXNpbmVzcyk/LnR5cGUgOiAnU1RBVElDJ1xyXG4gICAgdGhpcy5nZXRBbGxTZWN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRUYWI6IHN0cmluZyA9IFwiQkFTSUNcIlxyXG4gIHRhYnM6IGFueSA9IFt7IHZhbHVlOiBcIkJBU0lDXCIsIHZpZXdWYWx1ZTogXCJCYXNpY1wiIH0sXHJcbiAgeyB2YWx1ZTogXCJJTlRFR1JBVElPTlNcIiwgdmlld1ZhbHVlOiBcIkludGVncmF0aW9uc1wiIH0sXHJcbiAgeyB2YWx1ZTogXCJQUk9cIiwgdmlld1ZhbHVlOiBcIlByb1wiIH1cclxuICBdXHJcblxyXG5cclxuICBzZWN0aW9uczogYW55ID0gW11cclxuICBzZWxlY3RlZFNlY3Rpb246IGFueSA9IHRoaXMuc2VjdGlvbnNbMF1cclxuICBzZWxlY3RlZFNlY3Rpb25OYW1lOiBhbnkgPSBcIlwiXHJcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2VcclxuICB0YWJTaGlmdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgLy8gc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcblxyXG4gIHNlbGVjdFNlY3Rpb24oZWxlOiBhbnkpIHtcclxuICAgIHRoaXMudGFiU2hpZnRMb2FkZXIgPSB0cnVlXHJcbiAgICB0aGlzLnNlbGVjdGVkU2VjdGlvbiA9IHRoaXMuc2VjdGlvbnNbZWxlXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uTmFtZSA9IGVsZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhYlNoaWZ0TG9hZGVyID0gZmFsc2VcclxuICAgIH0sIDgwMCk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZWN0aW9ucygpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZVxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldENvbXBvbmVudEFwaSh0aGlzLmJ1c2luZXNzVHlwZSA9PT0gJ1NUQVRJQycgPyB0aGlzLmJ1c2luZXNzVHlwZSA6IHVuZGVmaW5lZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNlY3Rpb25zID0gcmVzLmRhdGFcclxuICAgICAgICB0aGlzLmR1bW15U2VjdGlvbnMgPSByZXMuZGF0YVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuc2VjdGlvbnMpWzBdXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSB0aGlzLnNlY3Rpb25zW09iamVjdC5rZXlzKHRoaXMuc2VjdGlvbnMpWzBdXVxyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0T2JqZWN0S2V5cyhvYmo6IGFueSk6IGFueVtdIHtcclxuICAgIHJldHVybiBvYmogPyBPYmplY3Qua2V5cyhvYmopIDogW107XHJcbiAgfVxyXG5cclxuICBnZXRTZWN0aW9uTGVuZ3RoKHNlY3Rpb24gOiBhbnkpe1xyXG4gICAgIHJldHVybiBOdW1iZXIoT2JqZWN0LmtleXMoc2VjdGlvbikubGVuZ3RoKVxyXG4gIH1cclxuXHJcbiAgYWRkTmV3U2VjdGlvbihjb21wb25lbnRJZDogYW55LCBzZWN0aW9uVHlwZTogYW55LCBldmVudDogYW55KSB7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuYWRkTmV3U2VjdGlvbkNsaWNrLmVtaXQoeyBjb21wb25lbnRJZDogY29tcG9uZW50SWQsIGluZGV4OiB0aGlzLmRhdGEuaW5kZXgsIHBvc2l0aW9uOiB0aGlzLmRhdGEucG9zaXRpb24sIHN0YXR1czogdHJ1ZSwgc2VjdGlvblR5cGU6IHNlY3Rpb25UeXBlIH0pO1xyXG4gICAgdGhpcy5kaWFsb2cuY2xvc2UoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gXCJcIlxyXG4gIGR1bW15U2VjdGlvbnM6IGFueVxyXG4gIGR1bW15MjogYW55ID0ge31cclxuXHJcbiAgaXNTZWFyY2ggOiBib29sZWFuID0gZmFsc2VcclxuICBzZWFyY2hTZWN0aW9ucygpIHtcclxuICAgIHRoaXMuaXNTZWFyY2ggPSBmYWxzZVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dC5sZW5ndGggPT0gMClcclxuICAgICAgdGhpcy5zZWN0aW9ucyA9IHRoaXMuZHVtbXlTZWN0aW9uc1xyXG4gICAgZm9yIChsZXQgZWxlIG9mIE9iamVjdC5rZXlzKHRoaXMuZHVtbXlTZWN0aW9ucykpIHtcclxuICAgICAgaWYgKGVsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIHRoaXMuZHVtbXkyW2VsZV0gPSBbLi4udGhpcy5kdW1teVNlY3Rpb25zW2VsZV1dO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGogb2YgdGhpcy5kdW1teVNlY3Rpb25zW2VsZV0pIHtcclxuICAgICAgICAgIGlmIChqLnNlY3Rpb25OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kdW1teTJbZWxlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZHVtbXkyW2VsZV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmR1bW15MltlbGVdLnB1c2goaik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlY3Rpb25zID0geyAuLi50aGlzLmR1bW15MiB9O1xyXG4gICAgaWYodGhpcy5nZXRTZWN0aW9uTGVuZ3RoKHRoaXMuc2VjdGlvbnMpID09IDApXHJcbiAgICAgIHRoaXMuaXNTZWFyY2ggPSB0cnVlXHJcbiAgICB0aGlzLnNlbGVjdGVkU2VjdGlvbk5hbWUgPSBPYmplY3Qua2V5cyh0aGlzLnNlY3Rpb25zKVswXVxyXG4gICAgdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSB0aGlzLnNlY3Rpb25zW09iamVjdC5rZXlzKHRoaXMuc2VjdGlvbnMpWzBdXVxyXG4gICAgdGhpcy5kdW1teTIgPSB7fVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXY+U2VsZWN0IFRlbXBsYXRlPC9kaXY+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGYtMTggY3BcIiAoY2xpY2spPVwiZGlhbG9nLmNsb3NlKClcIj5cclxuICAgICAgICAgICAgY2xvc2VcclxuICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFyZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJhciBkLWZsZXggZ2FwLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMzE0NjYxYzE3NDE4NDQyMzQ0NDJWZWN0b3IlMjAlMjgxJTI5LnBuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwic2VhcmNoLWJhci1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBmb3IgU2VjdGlvbnNcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hTZWN0aW9ucygpXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnNcIiAoY2xpY2spPVwic2VsZWN0ZWRUYWIgPSBlbGUudmFsdWVcIiBbY2xhc3MuYWN0aXZlLXRhYl09XCJlbGUudmFsdWUgPT0gc2VsZWN0ZWRUYWJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2VsZS52aWV3VmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGUudmFsdWUgPT0gJ1BSTycgJiYgZWxlLnZhbHVlICE9IHNlbGVjdGVkVGFiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNDY4MjgxYzE3NDQ2OTk2NjQ4NThGcmFtZSUyMDEyNDQ4MzE3NDAlMjAlMjgxJTI5LnBuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJwcm8taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gJ0JBU0lDJzsgZWxzZSBwcm9UYWJDb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTZWFyY2g7ZWxzZSBlbXB0eVNjcmVlblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtY29udGFpbmVyIGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLXNpZGVwYW5lbFwiICpuZ0lmPVwiIWxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgZ2V0T2JqZWN0S2V5cyhzZWN0aW9ucylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLXNlY3Rpb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2VjdGlvbihlbGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlLXNlY3Rpb25dPVwic2VsZWN0ZWRTZWN0aW9uID09IHNlY3Rpb25zW2VsZV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFNlY3Rpb24gPT0gc2VjdGlvbnNbZWxlXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzk1NDM4M2MxNzQxODUwMzkyODAyR3JvdXAlMjAxNzA3NDgxODc5LnBuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiaWNvbiB0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRTZWN0aW9uICE9IHNlY3Rpb25zW2VsZV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84NDYxNDVjMTc0MTg1MDU3NDg2NEljb24lMjAlMjgxJTI5LnBuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiaWNvbiB0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLXJlbmRlci1zZWN0aW9uXCIgKm5nSWY9XCIgIWxvYWRlciAmJiAhdGFiU2hpZnRMb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZFNlY3Rpb25OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgc2VjdGlvbiB0byBhZGQgdG8geW91ciBwYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2Ygc2VsZWN0ZWRTZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+e3tlbGUuc2VjdGlvbk5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbWctY29udGFpbmVyIGNwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROZXdTZWN0aW9uKGVsZS5jb21wb25lbnRJZCxlbGUuc2VjdGlvblR5cGUsJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZT8uaW1hZ2U7IGVsc2Ugbm9JbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbGU/LmltYWdlXCIgYWx0PVwic2VjdGlvbiBpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2ltZy5mcmVlcGlrLmNvbS9wcmVtaXVtLXZlY3Rvci9kZWZhdWx0LWltYWdlLWljb24tdmVjdG9yLW1pc3NpbmctcGljdHVyZS1wYWdlLXdlYnNpdGUtZGVzaWduLW1vYmlsZS1hcHAtbm8tcGhvdG8tYXZhaWxhYmxlXzg3NTQzLTExMDkzLmpwZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInNlY3Rpb24gaW1hZ2VcIiBjbGFzcz1cImgtMzBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLXNpZGVwYW5lbFwiICpuZ0lmPVwibG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZSBvZiBbMSwxLDEsMSwxLDEsMSwxLDFdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzh2aCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNjUlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJnaW4tYm90dG9tJyA6ICcxMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcy1yZW5kZXItc2VjdGlvblwiICpuZ0lmPVwibG9hZGVyIHx8IHRhYlNoaWZ0TG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgOiAnM3ZoJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzYwJScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IDogJzJ2aCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNXB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9ucy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZSBvZiBbMSwxLDEsMV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyNSUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IDogJzJ2aCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIFt0aGVtZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgOiAnMjV2aCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNXB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFyZ2luJzonMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3Byb1RhYkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1kaXYgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMzc3MDc2YzE3NDMxNTQ4MDc2ODNpbWFnZSUyMCUyODYlMjkucG5nXCIgYWx0PVwiZW1wdHktaW1nXCIgY2xhc3M9XCJlbXB0eS1pbWcgXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICBDb21pbmcgU29vblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib29wcy1zdWItdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXN1Yi10ZXh0LTEgdGV4dC1jZW50ZXJcIj5Xb29mISBTb21ldGhpbmcgcGF3c29tZSBpcyBjb21pbmchPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9vcHMtc3ViLXRleHQtMiB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIZXkgaG9vbWFuISBJIGp1c3Qgc25pZmZlZCBvdXQgc29tZXRoaW5nIHN1cGVyIGV4Y2l0aW5nLi4uIGFuZCBpdOKAmXMgYWxtb3N0IGhlcmUhIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eVNjcmVlbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWRpdiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8zNzcwNzZjMTc0MzE1NDgwNzY4M2ltYWdlJTIwJTI4NiUyOS5wbmdcIiBhbHQ9XCJlbXB0eS1pbWdcIiBjbGFzcz1cImVtcHR5LWltZyBcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9vcHMtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE9vcHMhIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib29wcy1zdWItdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXN1Yi10ZXh0LTEgdGV4dC1jZW50ZXJcIj5JIHNuaWZmZWQgZXZlcnl3aGVyZSwgYnV0IEkgY291bGRuJ3QgZmluZCB3aGF0IHlvdSdyZSBsb29raW5nIGZvcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXN1Yi10ZXh0LTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTWF5YmUgdHJ5IGEgZGlmZmVyZW50IHNlYXJjaD8gXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9hZGQtc2VjdGlvbi9hZGQtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2FkZC1zZWN0aW9uL2FkZC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQWUsV0FBVyxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFFbkUsaUVBQWlFO0FBU2pFLE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFBbUIsTUFBeUMsRUFDMUIsSUFBUyxFQUNqQyxJQUFnQixFQUNoQixhQUE0QixFQUM1QixhQUFvQztJQUM1QyxzQ0FBc0M7SUFDOUIsY0FBcUM7UUFONUIsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUVwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFLL0MsaUJBQVksR0FBNEIsUUFBUSxDQUFDO1FBT2pELGdCQUFXLEdBQVcsT0FBTyxD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eyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2VkaXRvci1zZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG4vLyBpbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJ0BzaW1wby11aS9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby1hZGQtc2VjdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hZGQtc2VjdGlvbi5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRTZWN0aW9uQ29tcG9uZW50IHtcblxuICBPYmplY3Q/IDogT2JqZWN0XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nUmVmPEFkZFNlY3Rpb25Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFbGVtZW50U2VydmljZVNlcnZpY2UsXG4gICAgLy8gcHJpdmF0ZSAgcmVzdFNlcnZpY2UgOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTZXJ2aWNlOiBFbGVtZW50U2VydmljZVNlcnZpY2VcbiAgKSB7XG5cbiAgfVxuXG4gIGJ1c2luZXNzVHlwZTogJ1NUQVRJQycgfCAnRV9DT01NRVJDRScgPSAnU1RBVElDJztcbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYnVzaW5lc3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYkRldGFpbHMnKSB8fCAnJztcbiAgICB0aGlzLmJ1c2luZXNzVHlwZSA9IGJ1c2luZXNzID8gSlNPTi5wYXJzZShidXNpbmVzcyk/LnR5cGUgOiAnU1RBVElDJ1xuICAgIHRoaXMuZ2V0QWxsU2VjdGlvbnMoKTtcbiAgfVxuXG4gIHNlbGVjdGVkVGFiOiBzdHJpbmcgPSBcIkJBU0lDXCJcbiAgdGFiczogYW55ID0gW3sgdmFsdWU6IFwiQkFTSUNcIiwgdmlld1ZhbHVlOiBcIkJhc2ljXCIgfSxcbiAgeyB2YWx1ZTogXCJJTlRFR1JBVElPTlNcIiwgdmlld1ZhbHVlOiBcIkludGVncmF0aW9uc1wiIH0sXG4gIHsgdmFsdWU6IFwiUFJPXCIsIHZpZXdWYWx1ZTogXCJQcm9cIiB9XG4gIF1cblxuXG4gIHNlY3Rpb25zOiBhbnkgPSBbXVxuICBzZWxlY3RlZFNlY3Rpb246IGFueSA9IHRoaXMuc2VjdGlvbnNbMF1cbiAgc2VsZWN0ZWRTZWN0aW9uTmFtZTogYW55ID0gXCJcIlxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZVxuICB0YWJTaGlmdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlXG4gIC8vIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHNlbGVjdFNlY3Rpb24oZWxlOiBhbnkpIHtcbiAgICB0aGlzLnRhYlNoaWZ0TG9hZGVyID0gdHJ1ZVxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gdGhpcy5zZWN0aW9uc1tlbGVdO1xuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uTmFtZSA9IGVsZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudGFiU2hpZnRMb2FkZXIgPSBmYWxzZVxuICAgIH0sIDgwMCk7XG4gIH1cblxuICBnZXRBbGxTZWN0aW9ucygpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWVcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0Q29tcG9uZW50QXBpKHRoaXMuYnVzaW5lc3NUeXBlID09PSAnU1RBVElDJyA/IHRoaXMuYnVzaW5lc3NUeXBlIDogdW5kZWZpbmVkKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zZWN0aW9ucyA9IHJlcy5kYXRhXG4gICAgICAgIHRoaXMuZHVtbXlTZWN0aW9ucyA9IHJlcy5kYXRhXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuc2VjdGlvbnMpWzBdXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uID0gdGhpcy5zZWN0aW9uc1tPYmplY3Qua2V5cyh0aGlzLnNlY3Rpb25zKVswXV1cbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIGdldE9iamVjdEtleXMob2JqOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIG9iaiA/IE9iamVjdC5rZXlzKG9iaikgOiBbXTtcbiAgfVxuXG4gIGdldFNlY3Rpb25MZW5ndGgoc2VjdGlvbiA6IGFueSl7XG4gICAgIHJldHVybiBOdW1iZXIoT2JqZWN0LmtleXMoc2VjdGlvbikubGVuZ3RoKVxuICB9XG5cbiAgYWRkTmV3U2VjdGlvbihjb21wb25lbnRJZDogYW55LCBzZWN0aW9uVHlwZTogYW55LCBldmVudDogYW55KSB7XG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmFkZE5ld1NlY3Rpb25DbGljay5lbWl0KHsgY29tcG9uZW50SWQ6IGNvbXBvbmVudElkLCBpbmRleDogdGhpcy5kYXRhLmluZGV4LCBwb3NpdGlvbjogdGhpcy5kYXRhLnBvc2l0aW9uLCBzdGF0dXM6IHRydWUsIHNlY3Rpb25UeXBlOiBzZWN0aW9uVHlwZSB9KTtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gXCJcIlxuICBkdW1teVNlY3Rpb25zOiBhbnlcbiAgZHVtbXkyOiBhbnkgPSB7fVxuXG4gIC8vIHNlYXJjaFNlY3Rpb25Db21wb25lbnRzKCl7XG4gIC8vICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAvLyAgIC5waXBlKFxuICAvLyAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gIC8vICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gIC8vICAgKVxuICAvLyAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAvLyAgICAgdGhpcy5zZWFyY2hTZWN0aW9ucyh2YWx1ZSk7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuXG5cblxuICBpc1NlYXJjaCA6IGJvb2xlYW4gPSBmYWxzZVxuICBzZWFyY2hTZWN0aW9ucygpIHtcbiAgICB0aGlzLmlzU2VhcmNoID0gZmFsc2VcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA9PSAwKVxuICAgICAgdGhpcy5zZWN0aW9ucyA9IHRoaXMuZHVtbXlTZWN0aW9uc1xuICAgIGZvciAobGV0IGVsZSBvZiBPYmplY3Qua2V5cyh0aGlzLmR1bW15U2VjdGlvbnMpKSB7XG4gICAgICBpZiAoZWxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0KSkge1xuICAgICAgICB0aGlzLmR1bW15MltlbGVdID0gWy4uLnRoaXMuZHVtbXlTZWN0aW9uc1tlbGVdXTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBqIG9mIHRoaXMuZHVtbXlTZWN0aW9uc1tlbGVdKSB7XG4gICAgICAgICAgaWYgKGouc2VjdGlvbk5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRleHQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZHVtbXkyW2VsZV0pIHtcbiAgICAgICAgICAgICAgdGhpcy5kdW1teTJbZWxlXSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kdW1teTJbZWxlXS5wdXNoKGopXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VjdGlvbnMgPSB7IC4uLnRoaXMuZHVtbXkyIH07XG4gICAgaWYodGhpcy5nZXRTZWN0aW9uTGVuZ3RoKHRoaXMuc2VjdGlvbnMpID09IDApXG4gICAgICB0aGlzLmlzU2VhcmNoID0gdHJ1ZVxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuc2VjdGlvbnMpWzBdXG4gICAgdGhpcy5zZWxlY3RlZFNlY3Rpb24gPSB0aGlzLnNlY3Rpb25zW09iamVjdC5rZXlzKHRoaXMuc2VjdGlvbnMpWzBdXVxuICAgIHRoaXMuZHVtbXkyID0ge31cbiAgfVxuXG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2PlNlbGVjdCBUZW1wbGF0ZTwvZGl2PlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOCBjcFwiIChjbGljayk9XCJkaWFsb2cuY2xvc2UoKVwiPlxuICAgICAgICAgICAgY2xvc2VcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFyZW50LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyIGQtZmxleCBnYXAtMTBcIj5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMzE0NjYxYzE3NDE4NDQyMzQ0NDJWZWN0b3IlMjAlMjgxJTI5LnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cInNlYXJjaC1iYXItaWNvblwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGZvciBTZWN0aW9uc1wiIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFNlY3Rpb25zKClcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250YWluZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1hcm91bmQgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgdGFic1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJzXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiID0gZWxlLnZhbHVlXCIgW2NsYXNzLmFjdGl2ZS10YWJdPVwiZWxlLnZhbHVlID09IHNlbGVjdGVkVGFiXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ZWxlLnZpZXdWYWx1ZX19XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGUudmFsdWUgPT0gJ1BSTycgJiYgZWxlLnZhbHVlICE9IHNlbGVjdGVkVGFiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0zMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy80NjgyODFjMTc0NDY5OTY2NDg1OEZyYW1lJTIwMTI0NDgzMTc0MCUyMCUyODElMjkucG5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJwcm8taWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSAnQkFTSUMnOyBlbHNlIHByb1RhYkNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTZWFyY2g7ZWxzZSBlbXB0eVNjcmVlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWNvbnRhaW5lciBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtc2lkZXBhbmVsXCIgKm5nSWY9XCIhbG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgZ2V0T2JqZWN0S2V5cyhzZWN0aW9ucylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1zZWN0aW9uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RTZWN0aW9uKGVsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlLXNlY3Rpb25dPVwic2VsZWN0ZWRTZWN0aW9uID09IHNlY3Rpb25zW2VsZV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkU2VjdGlvbiA9PSBzZWN0aW9uc1tlbGVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzk1NDM4M2MxNzQxODUwMzkyODAyR3JvdXAlMjAxNzA3NDgxODc5LnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImljb24gdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRTZWN0aW9uICE9IHNlY3Rpb25zW2VsZV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvODQ2MTQ1YzE3NDE4NTA1NzQ4NjRJY29uJTIwJTI4MSUyOS5wbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJpY29uIHRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtcmVuZGVyLXNlY3Rpb25cIiAqbmdJZj1cIiAhbG9hZGVyICYmICF0YWJTaGlmdExvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtaGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWRTZWN0aW9uTmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBhIHNlY3Rpb24gdG8gYWRkIHRvIHlvdXIgcGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWxlIG9mIHNlbGVjdGVkU2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+e3tlbGUuc2VjdGlvbk5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taW1nLWNvbnRhaW5lciBjcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE5ld1NlY3Rpb24oZWxlLmNvbXBvbmVudElkLGVsZS5zZWN0aW9uVHlwZSwkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZT8uaW1hZ2U7IGVsc2Ugbm9JbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZWxlPy5pbWFnZVwiIGFsdD1cInNlY3Rpb24gaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pbWcuZnJlZXBpay5jb20vcHJlbWl1bS12ZWN0b3IvZGVmYXVsdC1pbWFnZS1pY29uLXZlY3Rvci1taXNzaW5nLXBpY3R1cmUtcGFnZS13ZWJzaXRlLWRlc2lnbi1tb2JpbGUtYXBwLW5vLXBob3RvLWF2YWlsYWJsZV84NzU0My0xMTA5My5qcGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwic2VjdGlvbiBpbWFnZVwiIGNsYXNzPVwiaC0zMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLXNpZGVwYW5lbFwiICpuZ0lmPVwibG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgWzEsMSwxLDEsMSwxLDEsMSwxXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICc4dmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc2NSUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTNweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWJvdHRvbScgOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtcmVuZGVyLXNlY3Rpb25cIiAqbmdJZj1cImxvYWRlciB8fCB0YWJTaGlmdExvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtaGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA6ICczdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzYwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA6ICcydmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgWzEsMSwxLDFdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgOiAnMnZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBbdGhlbWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgOiAnMjV2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzVweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJnaW4nOicycHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwcm9UYWJDb250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWRpdiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzM3NzA3NmMxNzQzMTU0ODA3NjgzaW1hZ2UlMjAlMjg2JTI5LnBuZ1wiIGFsdD1cImVtcHR5LWltZ1wiIGNsYXNzPVwiZW1wdHktaW1nIFwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgQ29taW5nIFNvb25cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib29wcy1zdWItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib29wcy1zdWItdGV4dC0xIHRleHQtY2VudGVyXCI+V29vZiEgU29tZXRoaW5nIHBhd3NvbWUgaXMgY29taW5nITwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib29wcy1zdWItdGV4dC0yIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBIZXkgaG9vbWFuISBJIGp1c3Qgc25pZmZlZCBvdXQgc29tZXRoaW5nIHN1cGVyIGV4Y2l0aW5nLi4uIGFuZCBpdOKAmXMgYWxtb3N0IGhlcmUhIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5U2NyZWVuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWRpdiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzM3NzA3NmMxNzQzMTU0ODA3NjgzaW1hZ2UlMjAlMjg2JTI5LnBuZ1wiIGFsdD1cImVtcHR5LWltZ1wiIGNsYXNzPVwiZW1wdHktaW1nIFwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgT29wcyEgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9vcHMtc3ViLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9vcHMtc3ViLXRleHQtMSB0ZXh0LWNlbnRlclwiPkkgc25pZmZlZCBldmVyeXdoZXJlLCBidXQgSSBjb3VsZG4ndCBmaW5kIHdoYXQgeW91J3JlIGxvb2tpbmcgZm9yPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvb3BzLXN1Yi10ZXh0LTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1heWJlIHRyeSBhIGRpZmZlcmVudCBzZWFyY2g/IFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPiJdfQ==
@@ -86,13 +86,13 @@ export class AddressListComponent {
86
86
  });
87
87
  }
88
88
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddressListComponent, deps: [{ token: i1.MatDialog }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.StorageServiceService }, { token: i3.RestService }], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddressListComponent, isStandalone: true, selector: "simpo-address-list", ngImport: i0, template: "<div class=\"address-selection-container\">\r\n <!-- Header -->\r\n <div class=\"header\">\r\n <h2 class=\"title\">Select Address</h2>\r\n <button class=\"close-btn\" (click)=\"closeDialog()\">\u2715</button>\r\n </div>\r\n\r\n <!-- Add New Address Button -->\r\n <div class=\"content\">\r\n <button class=\"add-new-address-btn\" (click)=\"addOrEditAddress(-1)\">\r\n ADD NEW ADDRESS\r\n </button>\r\n\r\n <!-- Currently Selected Section -->\r\n <div class=\"currently-selected-section\">\r\n <h3 class=\"section-title\">Currently Selected</h3>\r\n\r\n <div class=\"address-card selected\">\r\n <div class=\"address-header\">\r\n <span class=\"address-name\">{{defaultAddress?.receiverName}} ({{defaultAddress?.addressType}})</span>\r\n <!-- <div class=\"radio-button checked\">\r\n <div class=\"radio-inner\"></div>\r\n </div> -->\r\n </div>\r\n\r\n <p class=\"address-text\">{{defaultAddress?.addressLine1}}, {{defaultAddress?.cityName}},\r\n {{defaultAddress?.stateName}}</p>\r\n\r\n <p class=\"mobile-text\">\r\n <strong>Mobile: {{defaultAddress?.receiverPhone}}</strong>\r\n </p>\r\n\r\n <div class=\"address-actions\">\r\n <button class=\"action-btn delete-btn\" (click)=\"deleteAddress(defaultAddressIndex)\"\r\n *ngIf=\"(this.addressList?.length || 0) > 1 && !deleteLoading\">\r\n DELETE\r\n </button>\r\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\r\n <mat-spinner></mat-spinner> Loading\r\n </button>\r\n <button class=\"action-btn edit-btn\"\r\n (click)=\"addOrEditAddress(defaultAddressIndex != -1 ? defaultAddressIndex : 0, defaultAddress)\">\r\n EDIT\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"(addressList?.length || 0) > 1\">\r\n <h3 class=\"section-title\">Others Address</h3>\r\n <div>\r\n <ng-container *ngFor=\"let address of addressList;let i = index\">\r\n <div class=\"other-address-card\" (click)=\"selectedAddressIndex = i\"\r\n [ngClass]=\"{'selected-address': selectedAddressIndex === i}\" *ngIf=\"!address.default\">\r\n <div class=\"address-header\">\r\n <span class=\"address-name\">{{address?.receiverName}} ({{address?.addressType}})</span>\r\n <!-- <div class=\"radio-button checked\">\r\n <div class=\"radio-inner\"></div>\r\n </div> -->\r\n </div>\r\n\r\n <p class=\"address-text\">{{address?.addressLine1}}, {{address?.cityName}},\r\n {{defaultAddress?.stateName}}</p>\r\n\r\n <p class=\"mobile-text\">\r\n <strong>Mobile: {{address.receiverPhone}}</strong>\r\n </p>\r\n\r\n <div class=\"address-actions\">\r\n <button class=\"action-btn delete-btn other-address-btn\" (click)=\"deleteAddress(i)\" *ngIf=\"!deleteLoading\">\r\n DELETE\r\n </button>\r\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\r\n <mat-spinner></mat-spinner> Loading\r\n </button>\r\n <button class=\"action-btn edit-btn other-address-btn\" (click)=\"addOrEditAddress(i, address)\">\r\n EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <!-- Confirm Button -->\r\n <div class=\"footer\">\r\n <button class=\"confirm-btn\" *ngIf=\"!isLoading\" (click)=\"markAddressAsDefault()\">\r\n CONFIRM\r\n </button>\r\n <button class=\"confirm-btn loading-btn\" *ngIf=\"isLoading\"><mat-spinner></mat-spinner> Loading</button>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--primary-font-family)}.address-selection-container{background:#fff;border-radius:12px;width:100%;max-width:500px}.header{display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:60px;background-color:#f6f3f9}.content{padding:20px;height:calc(100vh - 120px);overflow:scroll}.title{font-size:18px;font-weight:600;color:#000}.close-btn{background:none;border:none;cursor:pointer;padding:4px;color:#666;font-size:24px;line-height:1;width:max-content!important}.close-btn:hover{color:#333}.add-new-address-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:100%}.add-new-address-btn:hover{border-color:#fbf9ff;background-color:#faf7ff}.section-title{font-size:16px;font-weight:600;color:#000;margin-bottom:16px;margin-top:16px}.address-card{border:1px solid #e0e0e0;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.other-address-card{border:1px solid rgb(238,232,255);box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.address-card.selected,.selected-address{border-color:#000}.address-card:hover{border-color:#fbf9ff}.address-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.address-name{font-size:16px;font-weight:600;color:#000}.radio-button{width:20px;height:20px;border:2px solid #ccc;border-radius:50%;display:flex;justify-content:center;align-items:center;transition:all .2s}.radio-button.checked{border-color:#000;background-color:#000}.radio-inner{width:8px;height:8px;background-color:#fff;border-radius:50%}.address-text{color:#000;font-size:14px;line-height:1.4;margin-bottom:8px}.mobile-text{color:#000;font-size:14px;margin-bottom:16px}.address-actions{display:flex;gap:24px}.action-btn{background:none;border:none;font-size:12px;font-weight:600;cursor:pointer;padding:4px 0;transition:opacity .2s}.delete-btn,.edit-btn{box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;color:#000;font-size:14px!important;border-radius:5px}.action-btn:hover{opacity:.7}.confirm-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:90%!important}.confirm-btn:hover{background:#fbf9ff}@media (max-width: 480px){.title{font-size:18px}}.other-address-btn{background-color:#fff!important}.footer{display:flex;align-items:center;justify-content:center;height:60px;position:absolute;width:100%;bottom:0;box-shadow:#0000000a 0 -1px 8px}.loading-btn{display:flex;gap:10px;justify-content:center}.loading-btn mat-spinner{height:20px!important;width:20px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddressListComponent, isStandalone: true, selector: "simpo-address-list", ngImport: i0, template: "<div class=\"address-selection-container\">\n <!-- Header -->\n <div class=\"header\">\n <h2 class=\"title\">Select Address</h2>\n <button class=\"close-btn\" (click)=\"closeDialog()\">\u2715</button>\n </div>\n\n <!-- Add New Address Button -->\n <div class=\"content\">\n <button class=\"add-new-address-btn\" (click)=\"addOrEditAddress(-1)\">\n ADD NEW ADDRESS\n </button>\n\n <!-- Currently Selected Section -->\n <div class=\"currently-selected-section\">\n <h3 class=\"section-title\">Currently Selected</h3>\n\n <div class=\"address-card selected\">\n <div class=\"address-header\">\n <span class=\"address-name\">{{defaultAddress?.receiverName}} ({{defaultAddress?.addressType}})</span>\n <!-- <div class=\"radio-button checked\">\n <div class=\"radio-inner\"></div>\n </div> -->\n </div>\n\n <p class=\"address-text\">{{defaultAddress?.addressLine1}}, {{defaultAddress?.cityName}},\n {{defaultAddress?.stateName}}</p>\n\n <p class=\"mobile-text\">\n <strong>Mobile: {{defaultAddress?.receiverPhone}}</strong>\n </p>\n\n <div class=\"address-actions\">\n <button class=\"action-btn delete-btn\" (click)=\"deleteAddress(defaultAddressIndex)\"\n *ngIf=\"(this.addressList?.length || 0) > 1 && !deleteLoading\">\n DELETE\n </button>\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\n <mat-spinner></mat-spinner> Loading\n </button>\n <button class=\"action-btn edit-btn\"\n (click)=\"addOrEditAddress(defaultAddressIndex != -1 ? defaultAddressIndex : 0, defaultAddress)\">\n EDIT\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"(addressList?.length || 0) > 1\">\n <h3 class=\"section-title\">Others Address</h3>\n <div>\n <ng-container *ngFor=\"let address of addressList;let i = index\">\n <div class=\"other-address-card\" (click)=\"selectedAddressIndex = i\"\n [ngClass]=\"{'selected-address': selectedAddressIndex === i}\" *ngIf=\"!address.default\">\n <div class=\"address-header\">\n <span class=\"address-name\">{{address?.receiverName}} ({{address?.addressType}})</span>\n <!-- <div class=\"radio-button checked\">\n <div class=\"radio-inner\"></div>\n </div> -->\n </div>\n\n <p class=\"address-text\">{{address?.addressLine1}}, {{address?.cityName}},\n {{defaultAddress?.stateName}}</p>\n\n <p class=\"mobile-text\">\n <strong>Mobile: {{address.receiverPhone}}</strong>\n </p>\n\n <div class=\"address-actions\">\n <button class=\"action-btn delete-btn other-address-btn\" (click)=\"deleteAddress(i)\" *ngIf=\"!deleteLoading\">\n DELETE\n </button>\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\n <mat-spinner></mat-spinner> Loading\n </button>\n <button class=\"action-btn edit-btn other-address-btn\" (click)=\"addOrEditAddress(i, address)\">\n EDIT\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n </div>\n <!-- Confirm Button -->\n <div class=\"footer\">\n <button class=\"confirm-btn\" *ngIf=\"!isLoading\" (click)=\"markAddressAsDefault()\">\n CONFIRM\n </button>\n <button class=\"confirm-btn loading-btn\" *ngIf=\"isLoading\"><mat-spinner></mat-spinner> Loading</button>\n </div>\n</div>\n", styles: ["*{font-family:var(--primary-font-family)}.address-selection-container{background:#fff;border-radius:12px;width:100%;max-width:500px}.header{display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:60px;background-color:#f6f3f9}.content{padding:20px;height:calc(100vh - 120px);overflow:scroll}.title{font-size:18px;font-weight:600;color:#000}.close-btn{background:none;border:none;cursor:pointer;padding:4px;color:#666;font-size:24px;line-height:1;width:max-content!important}.close-btn:hover{color:#333}.add-new-address-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:100%}.add-new-address-btn:hover{border-color:#fbf9ff;background-color:#faf7ff}.section-title{font-size:16px;font-weight:600;color:#000;margin-bottom:16px;margin-top:16px}.address-card{border:1px solid #e0e0e0;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.other-address-card{border:1px solid rgb(238,232,255);box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.address-card.selected,.selected-address{border-color:#000}.address-card:hover{border-color:#fbf9ff}.address-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.address-name{font-size:16px;font-weight:600;color:#000}.radio-button{width:20px;height:20px;border:2px solid #ccc;border-radius:50%;display:flex;justify-content:center;align-items:center;transition:all .2s}.radio-button.checked{border-color:#000;background-color:#000}.radio-inner{width:8px;height:8px;background-color:#fff;border-radius:50%}.address-text{color:#000;font-size:14px;line-height:1.4;margin-bottom:8px}.mobile-text{color:#000;font-size:14px;margin-bottom:16px}.address-actions{display:flex;gap:24px}.action-btn{background:none;border:none;font-size:12px;font-weight:600;cursor:pointer;padding:4px 0;transition:opacity .2s}.delete-btn,.edit-btn{box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;color:#000;font-size:14px!important;border-radius:5px}.action-btn:hover{opacity:.7}.confirm-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:90%!important}.confirm-btn:hover{background:#fbf9ff}@media (max-width: 480px){.title{font-size:18px}}.other-address-btn{background-color:#fff!important}.footer{display:flex;align-items:center;justify-content:center;height:60px;position:absolute;width:100%;bottom:0;box-shadow:#0000000a 0 -1px 8px}.loading-btn{display:flex;gap:10px;justify-content:center}.loading-btn mat-spinner{height:20px!important;width:20px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
90
90
  }
91
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddressListComponent, decorators: [{
92
92
  type: Component,
93
- args: [{ selector: 'simpo-address-list', standalone: true, imports: [CommonModule, FormsModule, MatProgressSpinnerModule], template: "<div class=\"address-selection-container\">\r\n <!-- Header -->\r\n <div class=\"header\">\r\n <h2 class=\"title\">Select Address</h2>\r\n <button class=\"close-btn\" (click)=\"closeDialog()\">\u2715</button>\r\n </div>\r\n\r\n <!-- Add New Address Button -->\r\n <div class=\"content\">\r\n <button class=\"add-new-address-btn\" (click)=\"addOrEditAddress(-1)\">\r\n ADD NEW ADDRESS\r\n </button>\r\n\r\n <!-- Currently Selected Section -->\r\n <div class=\"currently-selected-section\">\r\n <h3 class=\"section-title\">Currently Selected</h3>\r\n\r\n <div class=\"address-card selected\">\r\n <div class=\"address-header\">\r\n <span class=\"address-name\">{{defaultAddress?.receiverName}} ({{defaultAddress?.addressType}})</span>\r\n <!-- <div class=\"radio-button checked\">\r\n <div class=\"radio-inner\"></div>\r\n </div> -->\r\n </div>\r\n\r\n <p class=\"address-text\">{{defaultAddress?.addressLine1}}, {{defaultAddress?.cityName}},\r\n {{defaultAddress?.stateName}}</p>\r\n\r\n <p class=\"mobile-text\">\r\n <strong>Mobile: {{defaultAddress?.receiverPhone}}</strong>\r\n </p>\r\n\r\n <div class=\"address-actions\">\r\n <button class=\"action-btn delete-btn\" (click)=\"deleteAddress(defaultAddressIndex)\"\r\n *ngIf=\"(this.addressList?.length || 0) > 1 && !deleteLoading\">\r\n DELETE\r\n </button>\r\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\r\n <mat-spinner></mat-spinner> Loading\r\n </button>\r\n <button class=\"action-btn edit-btn\"\r\n (click)=\"addOrEditAddress(defaultAddressIndex != -1 ? defaultAddressIndex : 0, defaultAddress)\">\r\n EDIT\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"(addressList?.length || 0) > 1\">\r\n <h3 class=\"section-title\">Others Address</h3>\r\n <div>\r\n <ng-container *ngFor=\"let address of addressList;let i = index\">\r\n <div class=\"other-address-card\" (click)=\"selectedAddressIndex = i\"\r\n [ngClass]=\"{'selected-address': selectedAddressIndex === i}\" *ngIf=\"!address.default\">\r\n <div class=\"address-header\">\r\n <span class=\"address-name\">{{address?.receiverName}} ({{address?.addressType}})</span>\r\n <!-- <div class=\"radio-button checked\">\r\n <div class=\"radio-inner\"></div>\r\n </div> -->\r\n </div>\r\n\r\n <p class=\"address-text\">{{address?.addressLine1}}, {{address?.cityName}},\r\n {{defaultAddress?.stateName}}</p>\r\n\r\n <p class=\"mobile-text\">\r\n <strong>Mobile: {{address.receiverPhone}}</strong>\r\n </p>\r\n\r\n <div class=\"address-actions\">\r\n <button class=\"action-btn delete-btn other-address-btn\" (click)=\"deleteAddress(i)\" *ngIf=\"!deleteLoading\">\r\n DELETE\r\n </button>\r\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\r\n <mat-spinner></mat-spinner> Loading\r\n </button>\r\n <button class=\"action-btn edit-btn other-address-btn\" (click)=\"addOrEditAddress(i, address)\">\r\n EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <!-- Confirm Button -->\r\n <div class=\"footer\">\r\n <button class=\"confirm-btn\" *ngIf=\"!isLoading\" (click)=\"markAddressAsDefault()\">\r\n CONFIRM\r\n </button>\r\n <button class=\"confirm-btn loading-btn\" *ngIf=\"isLoading\"><mat-spinner></mat-spinner> Loading</button>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--primary-font-family)}.address-selection-container{background:#fff;border-radius:12px;width:100%;max-width:500px}.header{display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:60px;background-color:#f6f3f9}.content{padding:20px;height:calc(100vh - 120px);overflow:scroll}.title{font-size:18px;font-weight:600;color:#000}.close-btn{background:none;border:none;cursor:pointer;padding:4px;color:#666;font-size:24px;line-height:1;width:max-content!important}.close-btn:hover{color:#333}.add-new-address-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:100%}.add-new-address-btn:hover{border-color:#fbf9ff;background-color:#faf7ff}.section-title{font-size:16px;font-weight:600;color:#000;margin-bottom:16px;margin-top:16px}.address-card{border:1px solid #e0e0e0;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.other-address-card{border:1px solid rgb(238,232,255);box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.address-card.selected,.selected-address{border-color:#000}.address-card:hover{border-color:#fbf9ff}.address-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.address-name{font-size:16px;font-weight:600;color:#000}.radio-button{width:20px;height:20px;border:2px solid #ccc;border-radius:50%;display:flex;justify-content:center;align-items:center;transition:all .2s}.radio-button.checked{border-color:#000;background-color:#000}.radio-inner{width:8px;height:8px;background-color:#fff;border-radius:50%}.address-text{color:#000;font-size:14px;line-height:1.4;margin-bottom:8px}.mobile-text{color:#000;font-size:14px;margin-bottom:16px}.address-actions{display:flex;gap:24px}.action-btn{background:none;border:none;font-size:12px;font-weight:600;cursor:pointer;padding:4px 0;transition:opacity .2s}.delete-btn,.edit-btn{box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;color:#000;font-size:14px!important;border-radius:5px}.action-btn:hover{opacity:.7}.confirm-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:90%!important}.confirm-btn:hover{background:#fbf9ff}@media (max-width: 480px){.title{font-size:18px}}.other-address-btn{background-color:#fff!important}.footer{display:flex;align-items:center;justify-content:center;height:60px;position:absolute;width:100%;bottom:0;box-shadow:#0000000a 0 -1px 8px}.loading-btn{display:flex;gap:10px;justify-content:center}.loading-btn mat-spinner{height:20px!important;width:20px!important}\n"] }]
93
+ args: [{ selector: 'simpo-address-list', standalone: true, imports: [CommonModule, FormsModule, MatProgressSpinnerModule], template: "<div class=\"address-selection-container\">\n <!-- Header -->\n <div class=\"header\">\n <h2 class=\"title\">Select Address</h2>\n <button class=\"close-btn\" (click)=\"closeDialog()\">\u2715</button>\n </div>\n\n <!-- Add New Address Button -->\n <div class=\"content\">\n <button class=\"add-new-address-btn\" (click)=\"addOrEditAddress(-1)\">\n ADD NEW ADDRESS\n </button>\n\n <!-- Currently Selected Section -->\n <div class=\"currently-selected-section\">\n <h3 class=\"section-title\">Currently Selected</h3>\n\n <div class=\"address-card selected\">\n <div class=\"address-header\">\n <span class=\"address-name\">{{defaultAddress?.receiverName}} ({{defaultAddress?.addressType}})</span>\n <!-- <div class=\"radio-button checked\">\n <div class=\"radio-inner\"></div>\n </div> -->\n </div>\n\n <p class=\"address-text\">{{defaultAddress?.addressLine1}}, {{defaultAddress?.cityName}},\n {{defaultAddress?.stateName}}</p>\n\n <p class=\"mobile-text\">\n <strong>Mobile: {{defaultAddress?.receiverPhone}}</strong>\n </p>\n\n <div class=\"address-actions\">\n <button class=\"action-btn delete-btn\" (click)=\"deleteAddress(defaultAddressIndex)\"\n *ngIf=\"(this.addressList?.length || 0) > 1 && !deleteLoading\">\n DELETE\n </button>\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\n <mat-spinner></mat-spinner> Loading\n </button>\n <button class=\"action-btn edit-btn\"\n (click)=\"addOrEditAddress(defaultAddressIndex != -1 ? defaultAddressIndex : 0, defaultAddress)\">\n EDIT\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"(addressList?.length || 0) > 1\">\n <h3 class=\"section-title\">Others Address</h3>\n <div>\n <ng-container *ngFor=\"let address of addressList;let i = index\">\n <div class=\"other-address-card\" (click)=\"selectedAddressIndex = i\"\n [ngClass]=\"{'selected-address': selectedAddressIndex === i}\" *ngIf=\"!address.default\">\n <div class=\"address-header\">\n <span class=\"address-name\">{{address?.receiverName}} ({{address?.addressType}})</span>\n <!-- <div class=\"radio-button checked\">\n <div class=\"radio-inner\"></div>\n </div> -->\n </div>\n\n <p class=\"address-text\">{{address?.addressLine1}}, {{address?.cityName}},\n {{defaultAddress?.stateName}}</p>\n\n <p class=\"mobile-text\">\n <strong>Mobile: {{address.receiverPhone}}</strong>\n </p>\n\n <div class=\"address-actions\">\n <button class=\"action-btn delete-btn other-address-btn\" (click)=\"deleteAddress(i)\" *ngIf=\"!deleteLoading\">\n DELETE\n </button>\n <button class=\"action-btn delete-btn loading-btn\" *ngIf=\"deleteLoading\">\n <mat-spinner></mat-spinner> Loading\n </button>\n <button class=\"action-btn edit-btn other-address-btn\" (click)=\"addOrEditAddress(i, address)\">\n EDIT\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n </div>\n <!-- Confirm Button -->\n <div class=\"footer\">\n <button class=\"confirm-btn\" *ngIf=\"!isLoading\" (click)=\"markAddressAsDefault()\">\n CONFIRM\n </button>\n <button class=\"confirm-btn loading-btn\" *ngIf=\"isLoading\"><mat-spinner></mat-spinner> Loading</button>\n </div>\n</div>\n", styles: ["*{font-family:var(--primary-font-family)}.address-selection-container{background:#fff;border-radius:12px;width:100%;max-width:500px}.header{display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:60px;background-color:#f6f3f9}.content{padding:20px;height:calc(100vh - 120px);overflow:scroll}.title{font-size:18px;font-weight:600;color:#000}.close-btn{background:none;border:none;cursor:pointer;padding:4px;color:#666;font-size:24px;line-height:1;width:max-content!important}.close-btn:hover{color:#333}.add-new-address-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:100%}.add-new-address-btn:hover{border-color:#fbf9ff;background-color:#faf7ff}.section-title{font-size:16px;font-weight:600;color:#000;margin-bottom:16px;margin-top:16px}.address-card{border:1px solid #e0e0e0;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.other-address-card{border:1px solid rgb(238,232,255);box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;border-radius:12px;padding:20px;margin-bottom:16px;cursor:pointer;transition:all .2s}.address-card.selected,.selected-address{border-color:#000}.address-card:hover{border-color:#fbf9ff}.address-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.address-name{font-size:16px;font-weight:600;color:#000}.radio-button{width:20px;height:20px;border:2px solid #ccc;border-radius:50%;display:flex;justify-content:center;align-items:center;transition:all .2s}.radio-button.checked{border-color:#000;background-color:#000}.radio-inner{width:8px;height:8px;background-color:#fff;border-radius:50%}.address-text{color:#000;font-size:14px;line-height:1.4;margin-bottom:8px}.mobile-text{color:#000;font-size:14px;margin-bottom:16px}.address-actions{display:flex;gap:24px}.action-btn{background:none;border:none;font-size:12px;font-weight:600;cursor:pointer;padding:4px 0;transition:opacity .2s}.delete-btn,.edit-btn{box-shadow:#0000000a 0 4px 8px;background:#fbf9ff;color:#000;font-size:14px!important;border-radius:5px}.action-btn:hover{opacity:.7}.confirm-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:90%!important}.confirm-btn:hover{background:#fbf9ff}@media (max-width: 480px){.title{font-size:18px}}.other-address-btn{background-color:#fff!important}.footer{display:flex;align-items:center;justify-content:center;height:60px;position:absolute;width:100%;bottom:0;box-shadow:#0000000a 0 -1px 8px}.loading-btn{display:flex;gap:10px;justify-content:center}.loading-btn mat-spinner{height:20px!important;width:20px!important}\n"] }]
94
94
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: undefined, decorators: [{
95
95
  type: Inject,
96
96
  args: [MAT_DIALOG_DATA]
97
97
  }] }, { type: i1.MatDialogRef }, { type: i2.StorageServiceService }, { type: i3.RestService }] });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvYWRkcmVzcy1saXN0L2FkZHJlc3MtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2FkZHJlc3MtbGlzdC9hZGRyZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBNkIsU0FBb0IsRUFDZixJQUFTLEVBQ2xDLFNBQTZDLEVBQ25DLGNBQXFDLEVBQ3JDLFdBQXdCO1FBSmQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNmLFNBQUksR0FBSixJQUFJLENBQUs7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRzNDLGdCQUFXLEdBQVUsRUFBRSxDQUFBO1FBQ3ZCLHdCQUFtQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBR2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFQM0IsQ0FBQztJQVNMLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQzdGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLE9BQXdCO1FBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3ROLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUU5RCxNQUFNLFdBQVcsR0FBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBVyxDQUFDO1FBRTVELE1BQU0sT0FBTyxHQUFHO1lBQ2QsUUFBUSxFQUFFLFdBQVcsQ0FBQyxNQUFNO1lBQzVCLFlBQVksRUFBRSxXQUFXLENBQUMsVUFBVTtZQUNwQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QyxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sSUFBSSxFQUFFO1lBQ3JDLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWM7U0FDakYsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQixXQUFXLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ3hCLENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO1FBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxXQUFXLEdBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQVcsQ0FBQztRQUM1RCxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTTtZQUM1QixZQUFZLEVBQUUsV0FBVyxDQUFDLFVBQVU7WUFDcEMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEMsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLElBQUksRUFBRTtZQUNyQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjO1NBQ2pGLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbEIsV0FBVyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7K0dBcEZVLG9CQUFvQiwyQ0FFckIsZUFBZTttR0FGZCxvQkFBb0IsOEVDakJqQyw0NUhBNkZBLGc0RkRoRlksWUFBWSw2VkFBRSxXQUFXLDhCQUFDLHdCQUF3Qjs7NEZBSWpELG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBQyx3QkFBd0IsQ0FBQzs7MEJBTTFELE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3NlY3Rpb25zL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWRkcmVzc0RldGFpbHMsIFVzZXIgfSBmcm9tICcuLi8uLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7TWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tYWRkcmVzcy1saXN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZHJlc3MtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FkZHJlc3MtbGlzdC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkcmVzc0xpc3RDb21wb25lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBZGRyZXNzTGlzdENvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFkZHJlc3NMaXN0OiBhbnlbXSA9IFtdXHJcbiAgZGVmYXVsdEFkZHJlc3NJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgZGVmYXVsdEFkZHJlc3M6IGFueTtcclxuICBzZWxlY3RlZEFkZHJlc3NJbmRleDogYW55O1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlbGV0ZUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFkZHJlc3NMaXN0ID0gdGhpcy5kYXRhWydhZGRyZXNzTGlzdCddO1xyXG4gICAgdGhpcy5kZWZhdWx0QWRkcmVzc0luZGV4ID0gdGhpcy5hZGRyZXNzTGlzdD8uZmluZEluZGV4KGFkZHJlc3MgPT4gYWRkcmVzcy5kZWZhdWx0ID09PSB0cnVlKSA/PyAtMTtcclxuICAgIHRoaXMuZGVmYXVsdEFkZHJlc3MgPSB0aGlzLmRlZmF1bHRBZGRyZXNzSW5kZXggIT09IC0xXHJcbiAgICAgID8gdGhpcy5hZGRyZXNzTGlzdFt0aGlzLmRlZmF1bHRBZGRyZXNzSW5kZXhdXHJcbiAgICAgIDogdGhpcy5hZGRyZXNzTGlzdD8uWzBdIHx8IHt9O1xyXG4gICAgdGhpcy5kZWZhdWx0QWRkcmVzc0luZGV4ID0gdGhpcy5kZWZhdWx0QWRkcmVzc0luZGV4ID09PSAtMSAgPyAwIDogdGhpcy5kZWZhdWx0QWRkcmVzc0luZGV4O1xyXG4gIH1cclxuXHJcbiAgYWRkT3JFZGl0QWRkcmVzcyhlZGl0SW5kZXg6IG51bWJlciwgYWRkcmVzcz86IEFkZHJlc3NEZXRhaWxzKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEFkZHJlc3NDb21wb25lbnQsIHsgcGFuZWxDbGFzczogWydzaWRlcGFuZWwtY2xhc3MnLCAnYWRkcmVzcy1jbGFzcyddLCBkYXRhOiB7ICdhZGRyZXNzJzogYWRkcmVzcywgJ2FkZHJlc3NMaXN0JzogdGhpcy5hZGRyZXNzTGlzdCwgJ2VkaXRJbmRleCc6IGVkaXRJbmRleCB9IH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxyXG4gIH1cclxuXHJcbiAgbWFya0FkZHJlc3NBc0RlZmF1bHQoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmRlZmF1bHRBZGRyZXNzWydkZWZhdWx0J10gPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkcmVzc0xpc3RbdGhpcy5zZWxlY3RlZEFkZHJlc3NJbmRleF1bJ2RlZmF1bHQnXSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgdXNlckRldGFpbHMgPSAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcik7XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJ1c2VySWRcIjogdXNlckRldGFpbHMudXNlcklkLFxyXG4gICAgICBcImJ1c2luZXNzSWRcIjogdXNlckRldGFpbHMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJhZGRyZXNzRGV0YWlsc0xpc3RcIjogdGhpcy5hZGRyZXNzTGlzdCxcclxuICAgICAgXCJjb250YWN0XCI6IHVzZXJEZXRhaWxzPy5jb250YWN0ID8/IHt9LFxyXG4gICAgICBcImdlbmRlclwiOiB1c2VyRGV0YWlscz8uZ2VuZGVyPy5sZW5ndGggPiAwID8gdXNlckRldGFpbHM/LmdlbmRlciA6IFwiTk9UX1BST1ZJREVEXCJcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkVXNlckFkZHJlc3MocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoISF1c2VyRGV0YWlscykge1xyXG4gICAgICAgIHVzZXJEZXRhaWxzLmFkZHJlc3NEZXRhaWxzTGlzdCA9IHRoaXMuYWRkcmVzc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRVc2VyKHVzZXJEZXRhaWxzKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2VcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZWxldGVBZGRyZXNzKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuYWRkcmVzc0xpc3Quc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgdGhpcy51cGRhdGVVc2VyQWRkcmVzcygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckFkZHJlc3MoKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgdXNlckRldGFpbHMgPSAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcik7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBcInVzZXJJZFwiOiB1c2VyRGV0YWlscy51c2VySWQsXHJcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB1c2VyRGV0YWlscy5idXNpbmVzc0lkLFxyXG4gICAgICBcImFkZHJlc3NEZXRhaWxzTGlzdFwiOiB0aGlzLmFkZHJlc3NMaXN0LFxyXG4gICAgICBcImNvbnRhY3RcIjogdXNlckRldGFpbHM/LmNvbnRhY3QgPz8ge30sXHJcbiAgICAgIFwiZ2VuZGVyXCI6IHVzZXJEZXRhaWxzPy5nZW5kZXI/Lmxlbmd0aCA+IDAgPyB1c2VyRGV0YWlscz8uZ2VuZGVyIDogXCJOT1RfUFJPVklERURcIlxyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5hZGRVc2VyQWRkcmVzcyhwYXlsb2FkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmICghIXVzZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgdXNlckRldGFpbHMuYWRkcmVzc0RldGFpbHNMaXN0ID0gdGhpcy5hZGRyZXNzTGlzdDtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFVzZXIodXNlckRldGFpbHMpO1xyXG4gICAgICAgIHRoaXMuZGVsZXRlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5kZWxldGVMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYWRkcmVzcy1zZWxlY3Rpb24tY29udGFpbmVyXCI+XHJcbiAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgPGgyIGNsYXNzPVwidGl0bGVcIj5TZWxlY3QgQWRkcmVzczwvaDI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj7inJU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBZGQgTmV3IEFkZHJlc3MgQnV0dG9uIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYWRkLW5ldy1hZGRyZXNzLWJ0blwiIChjbGljayk9XCJhZGRPckVkaXRBZGRyZXNzKC0xKVwiPlxyXG4gICAgICBBREQgTkVXIEFERFJFU1NcclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gQ3VycmVudGx5IFNlbGVjdGVkIFNlY3Rpb24gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY3VycmVudGx5LXNlbGVjdGVkLXNlY3Rpb25cIj5cclxuICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkN1cnJlbnRseSBTZWxlY3RlZDwvaDM+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1jYXJkIHNlbGVjdGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtbmFtZVwiPnt7ZGVmYXVsdEFkZHJlc3M/LnJlY2VpdmVyTmFtZX19ICh7e2RlZmF1bHRBZGRyZXNzPy5hZGRyZXNzVHlwZX19KTwvc3Bhbj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJhZGlvLWJ1dHRvbiBjaGVja2VkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1pbm5lclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8cCBjbGFzcz1cImFkZHJlc3MtdGV4dFwiPnt7ZGVmYXVsdEFkZHJlc3M/LmFkZHJlc3NMaW5lMX19LCB7e2RlZmF1bHRBZGRyZXNzPy5jaXR5TmFtZX19LFxyXG4gICAgICAgICAge3tkZWZhdWx0QWRkcmVzcz8uc3RhdGVOYW1lfX08L3A+XHJcblxyXG4gICAgICAgIDxwIGNsYXNzPVwibW9iaWxlLXRleHRcIj5cclxuICAgICAgICAgIDxzdHJvbmc+TW9iaWxlOiB7e2RlZmF1bHRBZGRyZXNzPy5yZWNlaXZlclBob25lfX08L3N0cm9uZz5cclxuICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGRyZXNzLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuIGRlbGV0ZS1idG5cIiAoY2xpY2spPVwiZGVsZXRlQWRkcmVzcyhkZWZhdWx0QWRkcmVzc0luZGV4KVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiKHRoaXMuYWRkcmVzc0xpc3Q/Lmxlbmd0aCB8fCAwKSA+IDEgJiYgIWRlbGV0ZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgREVMRVRFXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuIGRlbGV0ZS1idG4gbG9hZGluZy1idG5cIiAqbmdJZj1cImRlbGV0ZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+IExvYWRpbmdcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gZWRpdC1idG5cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkT3JFZGl0QWRkcmVzcyhkZWZhdWx0QWRkcmVzc0luZGV4ICE9IC0xID8gZGVmYXVsdEFkZHJlc3NJbmRleCA6IDAsIGRlZmF1bHRBZGRyZXNzKVwiPlxyXG4gICAgICAgICAgICBFRElUXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGFkZHJlc3NMaXN0Py5sZW5ndGggfHwgMCkgPiAxXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPk90aGVycyBBZGRyZXNzPC9oMz5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiBhZGRyZXNzTGlzdDtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdGhlci1hZGRyZXNzLWNhcmRcIiAoY2xpY2spPVwic2VsZWN0ZWRBZGRyZXNzSW5kZXggPSBpXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkLWFkZHJlc3MnOiBzZWxlY3RlZEFkZHJlc3NJbmRleCA9PT0gaX1cIiAqbmdJZj1cIiFhZGRyZXNzLmRlZmF1bHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkcmVzcy1uYW1lXCI+e3thZGRyZXNzPy5yZWNlaXZlck5hbWV9fSAoe3thZGRyZXNzPy5hZGRyZXNzVHlwZX19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJhZGlvLWJ1dHRvbiBjaGVja2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1pbm5lclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImFkZHJlc3MtdGV4dFwiPnt7YWRkcmVzcz8uYWRkcmVzc0xpbmUxfX0sIHt7YWRkcmVzcz8uY2l0eU5hbWV9fSxcclxuICAgICAgICAgICAgICAgIHt7ZGVmYXVsdEFkZHJlc3M/LnN0YXRlTmFtZX19PC9wPlxyXG5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1vYmlsZS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nPk1vYmlsZToge3thZGRyZXNzLnJlY2VpdmVyUGhvbmV9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gZGVsZXRlLWJ0biBvdGhlci1hZGRyZXNzLWJ0blwiIChjbGljayk9XCJkZWxldGVBZGRyZXNzKGkpXCIgKm5nSWY9XCIhZGVsZXRlTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICBERUxFVEVcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gZGVsZXRlLWJ0biBsb2FkaW5nLWJ0blwiICpuZ0lmPVwiZGVsZXRlTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj4gTG9hZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0biBlZGl0LWJ0biBvdGhlci1hZGRyZXNzLWJ0blwiIChjbGljayk9XCJhZGRPckVkaXRBZGRyZXNzKGksIGFkZHJlc3MpXCI+XHJcbiAgICAgICAgICAgICAgICAgIEVESVRcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuICA8IS0tIENvbmZpcm0gQnV0dG9uIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtLWJ0blwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiIChjbGljayk9XCJtYXJrQWRkcmVzc0FzRGVmYXVsdCgpXCI+XHJcbiAgICAgIENPTkZJUk1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZpcm0tYnRuIGxvYWRpbmctYnRuXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj4gTG9hZGluZzwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvYWRkcmVzcy1saXN0L2FkZHJlc3MtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2FkZHJlc3MtbGlzdC9hZGRyZXNzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBNkIsU0FBb0IsRUFDZixJQUFTLEVBQ2xDLFNBQTZDLEVBQ25DLGNBQXFDLEVBQ3JDLFdBQXdCO1FBSmQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNmLFNBQUksR0FBSixJQUFJLENBQUs7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRzNDLGdCQUFXLEdBQVUsRUFBRSxDQUFBO1FBQ3ZCLHdCQUFtQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBR2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFQ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LG9CQUFvQiwyQ0FFckIsZUFBZTttR0FGZCxvQkFBb0IsOEVDakJqQyxrdUhBNkZBLGc0RkRoRlksWUFBWSw2VkFBRSxXQUFXLDhCQUFDLHdCQUF3Qjs7NEZBSWpELG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBQyx3QkFBd0IsQ0FBQzs7MEJBTTFELE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFkZHJlc3NDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lY29tbWVyY2Uvc2VjdGlvbnMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBZGRyZXNzRGV0YWlscywgVXNlciB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbCc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby1hZGRyZXNzLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSxNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FkZHJlc3MtbGlzdC5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzTGlzdENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFkZHJlc3NMaXN0Q29tcG9uZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2VcbiAgKSB7IH1cblxuICBhZGRyZXNzTGlzdDogYW55W10gPSBbXVxuICBkZWZhdWx0QWRkcmVzc0luZGV4OiBudW1iZXIgPSAtMTtcbiAgZGVmYXVsdEFkZHJlc3M6IGFueTtcbiAgc2VsZWN0ZWRBZGRyZXNzSW5kZXg6IGFueTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGRlbGV0ZUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZHJlc3NMaXN0ID0gdGhpcy5kYXRhWydhZGRyZXNzTGlzdCddO1xuICAgIHRoaXMuZGVmYXVsdEFkZHJlc3NJbmRleCA9IHRoaXMuYWRkcmVzc0xpc3Q/LmZpbmRJbmRleChhZGRyZXNzID0+IGFkZHJlc3MuZGVmYXVsdCA9PT0gdHJ1ZSkgPz8gLTE7XG4gICAgdGhpcy5kZWZhdWx0QWRkcmVzcyA9IHRoaXMuZGVmYXVsdEFkZHJlc3NJbmRleCAhPT0gLTFcbiAgICAgID8gdGhpcy5hZGRyZXNzTGlzdFt0aGlzLmRlZmF1bHRBZGRyZXNzSW5kZXhdXG4gICAgICA6IHRoaXMuYWRkcmVzc0xpc3Q/LlswXSB8fCB7fTtcbiAgICB0aGlzLmRlZmF1bHRBZGRyZXNzSW5kZXggPSB0aGlzLmRlZmF1bHRBZGRyZXNzSW5kZXggPT09IC0xICA/IDAgOiB0aGlzLmRlZmF1bHRBZGRyZXNzSW5kZXg7XG4gIH1cblxuICBhZGRPckVkaXRBZGRyZXNzKGVkaXRJbmRleDogbnVtYmVyLCBhZGRyZXNzPzogQWRkcmVzc0RldGFpbHMpIHtcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEFkZHJlc3NDb21wb25lbnQsIHsgcGFuZWxDbGFzczogWydzaWRlcGFuZWwtY2xhc3MnLCAnYWRkcmVzcy1jbGFzcyddLCBkYXRhOiB7ICdhZGRyZXNzJzogYWRkcmVzcywgJ2FkZHJlc3NMaXN0JzogdGhpcy5hZGRyZXNzTGlzdCwgJ2VkaXRJbmRleCc6IGVkaXRJbmRleCB9IH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9KVxuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgbWFya0FkZHJlc3NBc0RlZmF1bHQoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZGVmYXVsdEFkZHJlc3NbJ2RlZmF1bHQnXSA9IGZhbHNlO1xuICAgIHRoaXMuYWRkcmVzc0xpc3RbdGhpcy5zZWxlY3RlZEFkZHJlc3NJbmRleF1bJ2RlZmF1bHQnXSA9IHRydWU7XG5cbiAgICBjb25zdCB1c2VyRGV0YWlscyA9ICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBcInVzZXJJZFwiOiB1c2VyRGV0YWlscy51c2VySWQsXG4gICAgICBcImJ1c2luZXNzSWRcIjogdXNlckRldGFpbHMuYnVzaW5lc3NJZCxcbiAgICAgIFwiYWRkcmVzc0RldGFpbHNMaXN0XCI6IHRoaXMuYWRkcmVzc0xpc3QsXG4gICAgICBcImNvbnRhY3RcIjogdXNlckRldGFpbHM/LmNvbnRhY3QgPz8ge30sXG4gICAgICBcImdlbmRlclwiOiB1c2VyRGV0YWlscz8uZ2VuZGVyPy5sZW5ndGggPiAwID8gdXNlckRldGFpbHM/LmdlbmRlciA6IFwiTk9UX1BST1ZJREVEXCJcbiAgICB9XG4gICAgdGhpcy5yZXN0U2VydmljZS5hZGRVc2VyQWRkcmVzcyhwYXlsb2FkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoISF1c2VyRGV0YWlscykge1xuICAgICAgICB1c2VyRGV0YWlscy5hZGRyZXNzRGV0YWlsc0xpc3QgPSB0aGlzLmFkZHJlc3NMaXN0O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFVzZXIodXNlckRldGFpbHMpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gICAgICB9XG4gICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIGRlbGV0ZUFkZHJlc3MoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuYWRkcmVzc0xpc3Quc3BsaWNlKGluZGV4LCAxKVxuICAgIHRoaXMudXBkYXRlVXNlckFkZHJlc3MoKTtcbiAgfVxuXG4gIHVwZGF0ZVVzZXJBZGRyZXNzKCkge1xuICAgIHRoaXMuZGVsZXRlTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcik7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIFwidXNlcklkXCI6IHVzZXJEZXRhaWxzLnVzZXJJZCxcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB1c2VyRGV0YWlscy5idXNpbmVzc0lkLFxuICAgICAgXCJhZGRyZXNzRGV0YWlsc0xpc3RcIjogdGhpcy5hZGRyZXNzTGlzdCxcbiAgICAgIFwiY29udGFjdFwiOiB1c2VyRGV0YWlscz8uY29udGFjdCA/PyB7fSxcbiAgICAgIFwiZ2VuZGVyXCI6IHVzZXJEZXRhaWxzPy5nZW5kZXI/Lmxlbmd0aCA+IDAgPyB1c2VyRGV0YWlscz8uZ2VuZGVyIDogXCJOT1RfUFJPVklERURcIlxuICAgIH1cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZFVzZXJBZGRyZXNzKHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIGlmICghIXVzZXJEZXRhaWxzKSB7XG4gICAgICAgIHVzZXJEZXRhaWxzLmFkZHJlc3NEZXRhaWxzTGlzdCA9IHRoaXMuYWRkcmVzc0xpc3Q7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VXNlcih1c2VyRGV0YWlscyk7XG4gICAgICAgIHRoaXMuZGVsZXRlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgdGhpcy5kZWxldGVMb2FkaW5nID0gZmFsc2U7XG4gICAgfSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZHJlc3Mtc2VsZWN0aW9uLWNvbnRhaW5lclwiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgIDxoMiBjbGFzcz1cInRpdGxlXCI+U2VsZWN0IEFkZHJlc3M8L2gyPlxuICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPuKclTwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIEFkZCBOZXcgQWRkcmVzcyBCdXR0b24gLS0+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImFkZC1uZXctYWRkcmVzcy1idG5cIiAoY2xpY2spPVwiYWRkT3JFZGl0QWRkcmVzcygtMSlcIj5cbiAgICAgIEFERCBORVcgQUREUkVTU1xuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSBDdXJyZW50bHkgU2VsZWN0ZWQgU2VjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3VycmVudGx5LXNlbGVjdGVkLXNlY3Rpb25cIj5cbiAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5DdXJyZW50bHkgU2VsZWN0ZWQ8L2gzPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1jYXJkIHNlbGVjdGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGRyZXNzLWhlYWRlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkcmVzcy1uYW1lXCI+e3tkZWZhdWx0QWRkcmVzcz8ucmVjZWl2ZXJOYW1lfX0gKHt7ZGVmYXVsdEFkZHJlc3M/LmFkZHJlc3NUeXBlfX0pPC9zcGFuPlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJhZGlvLWJ1dHRvbiBjaGVja2VkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8taW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxwIGNsYXNzPVwiYWRkcmVzcy10ZXh0XCI+e3tkZWZhdWx0QWRkcmVzcz8uYWRkcmVzc0xpbmUxfX0sIHt7ZGVmYXVsdEFkZHJlc3M/LmNpdHlOYW1lfX0sXG4gICAgICAgICAge3tkZWZhdWx0QWRkcmVzcz8uc3RhdGVOYW1lfX08L3A+XG5cbiAgICAgICAgPHAgY2xhc3M9XCJtb2JpbGUtdGV4dFwiPlxuICAgICAgICAgIDxzdHJvbmc+TW9iaWxlOiB7e2RlZmF1bHRBZGRyZXNzPy5yZWNlaXZlclBob25lfX08L3N0cm9uZz5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGRyZXNzLWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0biBkZWxldGUtYnRuXCIgKGNsaWNrKT1cImRlbGV0ZUFkZHJlc3MoZGVmYXVsdEFkZHJlc3NJbmRleClcIlxuICAgICAgICAgICAgKm5nSWY9XCIodGhpcy5hZGRyZXNzTGlzdD8ubGVuZ3RoIHx8IDApID4gMSAmJiAhZGVsZXRlTG9hZGluZ1wiPlxuICAgICAgICAgICAgREVMRVRFXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gZGVsZXRlLWJ0biBsb2FkaW5nLWJ0blwiICpuZ0lmPVwiZGVsZXRlTG9hZGluZ1wiPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+IExvYWRpbmdcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0biBlZGl0LWJ0blwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkT3JFZGl0QWRkcmVzcyhkZWZhdWx0QWRkcmVzc0luZGV4ICE9IC0xID8gZGVmYXVsdEFkZHJlc3NJbmRleCA6IDAsIGRlZmF1bHRBZGRyZXNzKVwiPlxuICAgICAgICAgICAgRURJVFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGFkZHJlc3NMaXN0Py5sZW5ndGggfHwgMCkgPiAxXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5PdGhlcnMgQWRkcmVzczwvaDM+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiBhZGRyZXNzTGlzdDtsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3RoZXItYWRkcmVzcy1jYXJkXCIgKGNsaWNrKT1cInNlbGVjdGVkQWRkcmVzc0luZGV4ID0gaVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQtYWRkcmVzcyc6IHNlbGVjdGVkQWRkcmVzc0luZGV4ID09PSBpfVwiICpuZ0lmPVwiIWFkZHJlc3MuZGVmYXVsdFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtbmFtZVwiPnt7YWRkcmVzcz8ucmVjZWl2ZXJOYW1lfX0gKHt7YWRkcmVzcz8uYWRkcmVzc1R5cGV9fSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicmFkaW8tYnV0dG9uIGNoZWNrZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1pbm5lclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhZGRyZXNzLXRleHRcIj57e2FkZHJlc3M/LmFkZHJlc3NMaW5lMX19LCB7e2FkZHJlc3M/LmNpdHlOYW1lfX0sXG4gICAgICAgICAgICAgICAge3tkZWZhdWx0QWRkcmVzcz8uc3RhdGVOYW1lfX08L3A+XG5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtb2JpbGUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+TW9iaWxlOiB7e2FkZHJlc3MucmVjZWl2ZXJQaG9uZX19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gZGVsZXRlLWJ0biBvdGhlci1hZGRyZXNzLWJ0blwiIChjbGljayk9XCJkZWxldGVBZGRyZXNzKGkpXCIgKm5nSWY9XCIhZGVsZXRlTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgREVMRVRFXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG4gZGVsZXRlLWJ0biBsb2FkaW5nLWJ0blwiICpuZ0lmPVwiZGVsZXRlTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+IExvYWRpbmdcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0biBlZGl0LWJ0biBvdGhlci1hZGRyZXNzLWJ0blwiIChjbGljayk9XCJhZGRPckVkaXRBZGRyZXNzKGksIGFkZHJlc3MpXCI+XG4gICAgICAgICAgICAgICAgICBFRElUXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG4gIDwhLS0gQ29uZmlybSBCdXR0b24gLS0+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmlybS1idG5cIiAqbmdJZj1cIiFpc0xvYWRpbmdcIiAoY2xpY2spPVwibWFya0FkZHJlc3NBc0RlZmF1bHQoKVwiPlxuICAgICAgQ09ORklSTVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtLWJ0biBsb2FkaW5nLWJ0blwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+PG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+IExvYWRpbmc8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==