simpo-component-library 3.6.881 → 3.6.883

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 (189) 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/color.directive.mjs +1 -1
  11. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  12. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  13. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  14. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  15. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  16. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  17. package/esm2022/lib/directive/height.directive.mjs +1 -1
  18. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  19. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  20. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  21. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  22. package/esm2022/lib/directive/letters-only.directive.mjs +1 -1
  23. package/esm2022/lib/directive/numbers-only.directive.mjs +1 -1
  24. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  25. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  26. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
  27. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  28. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  29. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  30. package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
  31. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  32. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +1 -1
  33. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  34. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +4 -4
  35. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  36. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  37. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  38. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  39. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  40. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  41. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  42. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +4 -4
  43. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +4 -4
  44. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +4 -4
  45. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  46. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +4 -4
  47. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  49. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +3 -3
  50. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  52. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  53. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +3 -3
  54. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  55. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +3 -3
  56. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  57. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  61. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  62. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  63. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +3 -3
  65. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  66. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
  67. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  68. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  69. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  70. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  71. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  72. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  73. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  74. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  75. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  76. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  77. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  78. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  79. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  80. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  81. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  82. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
  83. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  84. package/esm2022/lib/elements/index.mjs +1 -1
  85. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  86. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +1 -1
  87. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  88. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  89. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  90. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  91. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  92. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +36 -16
  93. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
  94. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  95. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  96. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  97. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  98. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  99. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  100. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  101. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +3 -3
  102. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +1 -1
  103. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  104. package/esm2022/lib/sections/brand-story-section/brand-story-section.component.mjs +3 -3
  105. package/esm2022/lib/sections/button-grid-section/button-grid-section.component.mjs +3 -3
  106. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +3 -3
  107. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  108. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  109. package/esm2022/lib/sections/condensed-and-gradient/condensed-and-gradient.component.mjs +3 -3
  110. package/esm2022/lib/sections/contact-us/contact-us.component.mjs +3 -3
  111. package/esm2022/lib/sections/countdown-banner/countdown-banner.component.mjs +2 -2
  112. package/esm2022/lib/sections/faq-columns-cards/faq-columns-cards.component.mjs +3 -3
  113. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  114. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  115. package/esm2022/lib/sections/feature-experience-section/feature-experience-section.component.mjs +3 -3
  116. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  117. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  118. package/esm2022/lib/sections/footer/footer.component.mjs +2 -2
  119. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.component.mjs +2 -2
  120. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  121. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  122. package/esm2022/lib/sections/image-background/image-background/image-background.component.mjs +3 -3
  123. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  124. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  125. package/esm2022/lib/sections/image-grid-hotspot/image-grid-hotspot.component.mjs +3 -3
  126. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  127. package/esm2022/lib/sections/image-section/image-section.component.mjs +4 -4
  128. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  129. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  130. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  131. package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +4 -4
  132. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  133. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  134. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  135. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  136. package/esm2022/lib/sections/new-services/new-services.component.mjs +4 -4
  137. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  138. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +4 -4
  139. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  140. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  141. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  142. package/esm2022/lib/sections/overlapping-image/overlapping-image.component.mjs +3 -3
  143. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  144. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  145. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  146. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  147. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  148. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  149. package/esm2022/lib/sections/product-info-section/product-info-section.component.mjs +3 -3
  150. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  151. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  152. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  153. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  154. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  155. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  156. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  157. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  158. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +2 -2
  159. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +1 -1
  160. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  161. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  162. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  163. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  164. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  165. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  166. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.component.mjs +3 -3
  167. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +4 -4
  168. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  169. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.component.mjs +4 -4
  170. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  171. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  172. package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +3 -3
  173. package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
  174. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  175. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  176. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  177. package/esm2022/lib/sections/video-carousel-section/video-carousel-section.component.mjs +3 -3
  178. package/esm2022/lib/sections/video-grid-section/video-grid-section.component.mjs +3 -3
  179. package/esm2022/lib/sections/video-section/video-section.component.mjs +1 -1
  180. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  181. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +1 -1
  182. package/esm2022/lib/services/endUser.service.mjs +1 -1
  183. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  184. package/fesm2022/simpo-component-library.mjs +226 -206
  185. package/fesm2022/simpo-component-library.mjs.map +1 -1
  186. package/lib/elements/text-editor/text-editor.component.d.ts +3 -2
  187. package/package.json +1 -1
  188. package/simpo-component-library-3.6.883.tgz +0 -0
  189. package/simpo-component-library-3.6.881.tgz +0 -0
@@ -22,6 +22,7 @@ export class TextEditorComponent {
22
22
  this.value = '<p>Hello this is palash makhija</p>';
23
23
  this.valueChange = new EventEmitter();
24
24
  this.editable = false;
25
+ this.isRTE = true;
25
26
  this.platformId = inject(PLATFORM_ID);
26
27
  this.sanitizer = inject(DomSanitizer);
27
28
  this._eventService = inject(EventsService);
@@ -182,11 +183,22 @@ export class TextEditorComponent {
182
183
  });
183
184
  }
184
185
  handleSelection() {
186
+ if (!this.editor)
187
+ return;
185
188
  const { from, to } = this.editor.state.selection;
189
+ // no selection
186
190
  if (from === to) {
187
- if (!this.isColorPickerOpen) {
188
- this.showToolbar = false;
189
- }
191
+ this.showToolbar = false;
192
+ return;
193
+ }
194
+ // selected text
195
+ const selectedText = this.editor.state.doc.textBetween(from, to, ' ');
196
+ // remove spaces + line breaks
197
+ const trimmedText = selectedText
198
+ .replace(/\s/g, '');
199
+ // if only spaces selected
200
+ if (!trimmedText.length) {
201
+ this.showToolbar = false;
190
202
  return;
191
203
  }
192
204
  const selection = window.getSelection();
@@ -214,7 +226,6 @@ export class TextEditorComponent {
214
226
  toolbarWidth -
215
227
  10;
216
228
  left = Math.min(left, maxLeft);
217
- left = Math.max(10, left);
218
229
  this.toolbarX = left;
219
230
  this.toolbarY =
220
231
  rect.bottom -
@@ -328,14 +339,20 @@ export class TextEditorComponent {
328
339
  type: this.type,
329
340
  });
330
341
  }
331
- onMouseDown() {
332
- setTimeout(() => {
333
- if (!this.editor)
334
- return;
335
- const { from, to } = this.editor.state.selection;
336
- this.showToolbar =
337
- from !== to;
338
- });
342
+ onMouseDown(event) {
343
+ const target = event.target;
344
+ const clickedToolbar = !!target.closest('.toolbar');
345
+ const clickedEditor = !!target.closest('.editable-text');
346
+ // Angular Material dropdown
347
+ const clickedOverlay = !!target.closest('.cdk-overlay-pane');
348
+ // keep toolbar open
349
+ if (clickedToolbar ||
350
+ clickedEditor ||
351
+ clickedOverlay) {
352
+ return;
353
+ }
354
+ // close only outside
355
+ this.showToolbar = false;
339
356
  }
340
357
  changeFontSize(fontSize) {
341
358
  this.selectedFontSize =
@@ -356,7 +373,7 @@ export class TextEditorComponent {
356
373
  .run();
357
374
  }
358
375
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
359
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label", type: "type", inputTextIndex: "inputTextIndex", itemIndex: "itemIndex" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "click": "onHostClick()", "document:mousedown": "onMouseDown()" } }, viewQueries: [{ propertyName: "editorElement", first: true, predicate: ["editorContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- text-editor.component.html -->\r\n\r\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\r\n\r\n <!-- FLOATING TOOLBAR -->\r\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\r\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-grip-vertical\">\r\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\r\n </svg>\r\n </button>\r\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\r\n\r\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\r\n\r\n <mat-option value=\"\">\r\n Default\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\r\n 14\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\r\n 16\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\r\n 20\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\r\n 24\r\n </mat-option>\r\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\r\n 32\r\n </mat-option>\r\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\r\n 48\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n <!-- BOLD -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-bold\">\r\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ITALIC -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-italic\">\r\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\r\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\r\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- UNDERLINE -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-underline\">\r\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\r\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN LEFT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-left\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN CENTER -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-center\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN RIGHT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-right\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ORDERED LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list-ordered\">\r\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <path d=\"M4 6h1v4\" />\r\n <path d=\"M4 10h2\" />\r\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\r\n </svg>\r\n </button>\r\n <!-- BULLET LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list\">\r\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- SOLID / GRADIENT -->\r\n <!-- SOLID / GRADIENT -->\r\n <div class=\"colorType\">\r\n\r\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\r\n Solid\r\n </button>\r\n\r\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\r\n Gradient\r\n </button>\r\n\r\n </div>\r\n\r\n <!-- SOLID COLOR -->\r\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n\r\n <mat-icon>format_color_text</mat-icon>\r\n\r\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\r\n (input)=\"changeColor()\">\r\n\r\n </button>\r\n\r\n <!-- GRADIENT -->\r\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- TIPTAP EDITOR -->\r\n <div #editorContainer class=\"editable-text\">\r\n </div>\r\n\r\n</div>\r\n<ng-template #viewMode>\r\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\r\n </div>\r\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
376
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", isRTE: "isRTE", sectionId: "sectionId", label: "label", type: "type", inputTextIndex: "inputTextIndex", itemIndex: "itemIndex" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "click": "onHostClick()", "document:mousedown": "onMouseDown($event)" }, properties: { "style.display": "isRTE ? \"\" : \"none\"" } }, viewQueries: [{ propertyName: "editorElement", first: true, predicate: ["editorContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- text-editor.component.html -->\n\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\n\n <!-- FLOATING TOOLBAR -->\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-grip-vertical\">\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\n </svg>\n </button>\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\n\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\n\n <mat-option value=\"\">\n Default\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\n 14\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\n 16\n </mat-option>\n\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\n 20\n </mat-option>\n\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\n 24\n </mat-option>\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\n 32\n </mat-option>\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\n 48\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n <!-- BOLD -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-bold\">\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\n </svg>\n </button>\n\n <!-- ITALIC -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-italic\">\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- UNDERLINE -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-underline\">\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- ALIGN LEFT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-left\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN CENTER -->\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-center\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN RIGHT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-right\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ORDERED LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list-ordered\">\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <path d=\"M4 6h1v4\" />\n <path d=\"M4 10h2\" />\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\n </svg>\n </button>\n <!-- BULLET LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list\">\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- SOLID / GRADIENT -->\n <!-- SOLID / GRADIENT -->\n <div class=\"colorType\">\n\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\n Solid\n </button>\n\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\n Gradient\n </button>\n\n </div>\n\n <!-- SOLID COLOR -->\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\n\n <mat-icon>format_color_text</mat-icon>\n\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\n (input)=\"changeColor()\">\n\n </button>\n\n <!-- GRADIENT -->\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n </div>\n\n </div>\n\n <!-- TIPTAP EDITOR -->\n <div #editorContainer class=\"editable-text\">\n </div>\n\n </div>\n <ng-template #viewMode>\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\n </div>\n </ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
360
377
  }
361
378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, decorators: [{
362
379
  type: Component,
@@ -368,13 +385,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
368
385
  MatSelectModule,
369
386
  MatFormFieldModule,
370
387
  ContenteditableValueAccessor
371
- ], template: "<!-- text-editor.component.html -->\r\n\r\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\r\n\r\n <!-- FLOATING TOOLBAR -->\r\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\r\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-grip-vertical\">\r\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\r\n </svg>\r\n </button>\r\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\r\n\r\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\r\n\r\n <mat-option value=\"\">\r\n Default\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\r\n 14\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\r\n 16\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\r\n 20\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\r\n 24\r\n </mat-option>\r\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\r\n 32\r\n </mat-option>\r\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\r\n 48\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n <!-- BOLD -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-bold\">\r\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ITALIC -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-italic\">\r\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\r\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\r\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- UNDERLINE -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-underline\">\r\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\r\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN LEFT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-left\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN CENTER -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-center\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN RIGHT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-right\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ORDERED LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list-ordered\">\r\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <path d=\"M4 6h1v4\" />\r\n <path d=\"M4 10h2\" />\r\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\r\n </svg>\r\n </button>\r\n <!-- BULLET LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list\">\r\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- SOLID / GRADIENT -->\r\n <!-- SOLID / GRADIENT -->\r\n <div class=\"colorType\">\r\n\r\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\r\n Solid\r\n </button>\r\n\r\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\r\n Gradient\r\n </button>\r\n\r\n </div>\r\n\r\n <!-- SOLID COLOR -->\r\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n\r\n <mat-icon>format_color_text</mat-icon>\r\n\r\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\r\n (input)=\"changeColor()\">\r\n\r\n </button>\r\n\r\n <!-- GRADIENT -->\r\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- TIPTAP EDITOR -->\r\n <div #editorContainer class=\"editable-text\">\r\n </div>\r\n\r\n</div>\r\n<ng-template #viewMode>\r\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\r\n </div>\r\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"] }]
388
+ ], host: { '[style.display]': 'isRTE ? "" : "none"' }, template: "<!-- text-editor.component.html -->\n\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\n\n <!-- FLOATING TOOLBAR -->\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-grip-vertical\">\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\n </svg>\n </button>\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\n\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\n\n <mat-option value=\"\">\n Default\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\n 14\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\n 16\n </mat-option>\n\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\n 20\n </mat-option>\n\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\n 24\n </mat-option>\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\n 32\n </mat-option>\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\n 48\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n <!-- BOLD -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-bold\">\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\n </svg>\n </button>\n\n <!-- ITALIC -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-italic\">\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- UNDERLINE -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-underline\">\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- ALIGN LEFT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-left\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN CENTER -->\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-center\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN RIGHT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-right\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ORDERED LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list-ordered\">\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <path d=\"M4 6h1v4\" />\n <path d=\"M4 10h2\" />\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\n </svg>\n </button>\n <!-- BULLET LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list\">\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- SOLID / GRADIENT -->\n <!-- SOLID / GRADIENT -->\n <div class=\"colorType\">\n\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\n Solid\n </button>\n\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\n Gradient\n </button>\n\n </div>\n\n <!-- SOLID COLOR -->\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\n\n <mat-icon>format_color_text</mat-icon>\n\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\n (input)=\"changeColor()\">\n\n </button>\n\n <!-- GRADIENT -->\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n </div>\n\n </div>\n\n <!-- TIPTAP EDITOR -->\n <div #editorContainer class=\"editable-text\">\n </div>\n\n </div>\n <ng-template #viewMode>\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\n </div>\n </ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"] }]
372
389
  }], propDecorators: { value: [{
373
390
  type: Input
374
391
  }], valueChange: [{
375
392
  type: Output
376
393
  }], editable: [{
377
394
  type: Input
395
+ }], isRTE: [{
396
+ type: Input
378
397
  }], sectionId: [{
379
398
  type: Input
380
399
  }], label: [{
@@ -393,6 +412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
393
412
  args: ['click']
394
413
  }], onMouseDown: [{
395
414
  type: HostListener,
396
- args: ['document:mousedown']
415
+ args: ['document:mousedown',
416
+ ['$event']]
397
417
  }] } });
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQW9COUQs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O2FBQ0QsT0FBTyxDQUNOLFdBQVcsRUFDWDtZQUNFLFFBQVE7U0FDVCxDQUNGO2FBQ0EsR0FBRyxFQUFFLENBQUM7SUFFWCxDQUFDOytHQXhvQlUsbUJBQW1CO21HQUFuQixtQkFBbUIseWZDM0RoQyxrcVFBNkxjLCtzRkQvSVYsWUFBWSxrSUFDWixXQUFXLDhtQkFDWCxhQUFhLG9MQUNiLE9BQU8sdWNBQ1AsZUFBZSw4M0JBQ2Ysa0JBQWtCOzs0RkFRVCxtQkFBbUI7a0JBbEIvQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBRVA7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3FCQUM3Qjs4QkFhRCxLQUFLO3NCQURKLEtBQUs7Z0JBS04sV0FBVztzQkFEVixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxpQkFBaUI7Z0JBNGlCNUIsV0FBVztzQkFEVixZQUFZO3VCQUFDLE9BQU87Z0JBZ0JyQixXQUFXO3NCQUpWLFlBQVk7dUJBQ1gsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgUExBVEZPUk1fSUQsXHJcbiAgaW5qZWN0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbW1vbk1vZHVsZSxcclxuICBpc1BsYXRmb3JtQnJvd3NlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcbmltcG9ydCB7IENka0RyYWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuXHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbmltcG9ydCB7IENvbnRlbnRlZGl0YWJsZVZhbHVlQWNjZXNzb3IgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudGVkaXRhYmxlLmRpcmVjdGl2ZSc7XHJcblxyXG5pbXBvcnQgeyBHcmFkaWVudEV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL3N0eWxlcy9ncmFkaWVudC1leHRlbnNpb24nO1xyXG5cclxuaW1wb3J0IHsgRm9udFNpemUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGV4dC1zaXplLmV4dGVuc2lvbic7XHJcblxyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby10ZXh0LWVkaXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgQ2RrRHJhZyxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIENvbnRlbnRlZGl0YWJsZVZhbHVlQWNjZXNzb3JcclxuICBdLFxyXG5cclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnRcclxuICBpbXBsZW1lbnRzXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICB2YWx1ZTogc3RyaW5nID1cclxuICAgICc8cD5IZWxsbyB0aGlzIGlzIHBhbGFzaCBtYWtoaWphPC9wPic7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VjdGlvbklkPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHR5cGU/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5wdXRUZXh0SW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaXRlbUluZGV4PzogbnVtYmVyO1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGl0b3JDb250YWluZXInKVxyXG4gIGVkaXRvckVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIHBsYXRmb3JtSWQgPVxyXG4gICAgaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPVxyXG4gICAgaW5qZWN0KERvbVNhbml0aXplcik7XHJcblxyXG4gIHByaXZhdGUgX2V2ZW50U2VydmljZSA9XHJcbiAgICBpbmplY3QoRXZlbnRzU2VydmljZSk7XHJcblxyXG4gIGVkaXRvcjogYW55O1xyXG5cclxuICBzYWZlSHRtbCE6IFNhZmVIdG1sO1xyXG5cclxuICBzZWxlY3RlZEZvbnRTaXplID0gJyc7XHJcblxyXG4gIHNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gIHRvb2xiYXJYID0gMDtcclxuXHJcbiAgdG9vbGJhclkgPSAxMDA7XHJcblxyXG4gIHNlbGVjdGVkQ29sb3IgPSAnIzAwMDAwMCc7XHJcblxyXG4gIHByaW1hcnlDb2xvciA9ICcjMDAwMDAwJztcclxuXHJcbiAgc2Vjb25kYXJ5Q29sb3IgPSAnI2ZmMDAwMCc7XHJcblxyXG4gIGlzQ29sb3JQaWNrZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ29sb3JUeXBlOlxyXG4gICAgJ1NPTElEJyB8ICdHUkFESUVOVCcgPSAnU09MSUQnO1xyXG5cclxuICBzYXZlZFNlbGVjdGlvbjogYW55ID0gbnVsbDtcclxuXHJcbiAgaXNGb250U2l6ZU1lbnVPcGVuID0gZmFsc2U7XHJcblxyXG4gIHRvb2xiYXJEYXRhOiBhbnkgPSB7XHJcbiAgICBzZWxlY3RlZFNpemU6ICcnXHJcbiAgfTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVTYWZlSHRtbCgpO1xyXG4gICAgICBpZiAodGhpcy5lZGl0b3IgJiYgIWNoYW5nZXNbJ3ZhbHVlJ10uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50SHRtbCA9IHRoaXMuZWRpdG9yLmdldEhUTUwoKTtcclxuICAgICAgICBpZiAoY3VycmVudEh0bWwgIT09IHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZWRpdG9yLmNvbW1hbmRzLnNldENvbnRlbnQodGhpcy52YWx1ZSB8fCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgdGhpcy51cGRhdGVTYWZlSHRtbCgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lZGl0YWJsZSAmJlxyXG4gICAgICBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpXHJcbiAgICApIHtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZUVkaXRvcigpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZWRpdG9yICYmXHJcbiAgICAgIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZClcclxuICAgICkge1xyXG5cclxuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTYWZlSHRtbCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNhZmVIdG1sID1cclxuICAgICAgdGhpcy5zYW5pdGl6ZXJcclxuICAgICAgICAuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXHJcbiAgICAgICAgICB0aGlzLnZhbHVlIHx8ICcnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0aWFsaXplRWRpdG9yKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGlmICghdGhpcy5lZGl0b3JFbGVtZW50KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgeyBFZGl0b3IgfSA9XHJcbiAgICAgIGF3YWl0IGltcG9ydCgnQHRpcHRhcC9jb3JlJyk7XHJcblxyXG4gICAgY29uc3QgU3RhcnRlcktpdCA9XHJcbiAgICAgIChhd2FpdCBpbXBvcnQoJ0B0aXB0YXAvc3RhcnRlci1raXQnKSkuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBUZXh0U3R5bGUgPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi10ZXh0LXN0eWxlJykpXHJcbiAgICAgICAgLlRleHRTdHlsZTtcclxuXHJcbiAgICBjb25zdCBDb2xvciA9XHJcbiAgICAgIChhd2FpdCBpbXBvcnQoJ0B0aXB0YXAvZXh0ZW5zaW9uLWNvbG9yJykpXHJcbiAgICAgICAgLmRlZmF1bHQ7XHJcblxyXG4gICAgY29uc3QgVW5kZXJsaW5lID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9leHRlbnNpb24tdW5kZXJsaW5lJykpXHJcbiAgICAgICAgLmRlZmF1bHQ7XHJcblxyXG4gICAgY29uc3QgVGV4dEFsaWduID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9leHRlbnNpb24tdGV4dC1hbGlnbicpKVxyXG4gICAgICAgIC5kZWZhdWx0O1xyXG5cclxuICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvcih7XHJcblxyXG4gICAgICBlbGVtZW50OlxyXG4gICAgICAgIHRoaXMuZWRpdG9yRWxlbWVudC5uYXRpdmVFbGVtZW50LFxyXG5cclxuICAgICAgZWRpdG9yUHJvcHM6IHtcclxuXHJcbiAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgY2xhc3M6ICdQcm9zZU1pcnJvcidcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9LFxyXG5cclxuICAgICAgZXh0ZW5zaW9uczogW1xyXG5cclxuICAgICAgICBTdGFydGVyS2l0LFxyXG5cclxuICAgICAgICBUZXh0U3R5bGUsXHJcblxyXG4gICAgICAgIEZvbnRTaXplLFxyXG5cclxuICAgICAgICBDb2xvcixcclxuXHJcbiAgICAgICAgR3JhZGllbnRFeHRlbnNpb24sXHJcblxyXG4gICAgICAgIFVuZGVybGluZSxcclxuXHJcbiAgICAgICAgVGV4dEFsaWduLmNvbmZpZ3VyZSh7XHJcbiAgICAgICAgICB0eXBlczogW1xyXG4gICAgICAgICAgICAnaGVhZGluZycsXHJcbiAgICAgICAgICAgICdwYXJhZ3JhcGgnLFxyXG4gICAgICAgICAgICAnbGlzdEl0ZW0nXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0pLFxyXG5cclxuICAgICAgXSxcclxuXHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMudmFsdWUsXHJcblxyXG4gICAgICBvblNlbGVjdGlvblVwZGF0ZTogKCkgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdGlvbigpO1xyXG5cclxuICAgICAgfSxcclxuXHJcbiAgICAgIG9uVXBkYXRlOiAoeyBlZGl0b3IgfTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0bWwgPVxyXG4gICAgICAgICAgZWRpdG9yLmdldEhUTUwoKTtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXHJcbiAgICAgICAgLy8gICAnRURJVE9SIEhUTUw6JyxcclxuICAgICAgICAvLyAgIGh0bWxcclxuICAgICAgICAvLyApO1xyXG5cclxuICAgICAgICB0aGlzLnZhbHVlID0gaHRtbDtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTYWZlSHRtbCgpO1xyXG5cclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoaHRtbCk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlRW1wdHlFZGl0b3JDbGFzcygpO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRW1wdHlFZGl0b3JDbGFzcygpO1xyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZUVtcHR5RWRpdG9yQ2xhc3MoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVkaXRvckVsZW1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBlZGl0b3JXcmFwcGVyID1cclxuICAgICAgdGhpcy5lZGl0b3JFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAuY2xvc2VzdCgnLmVkaXRhYmxlLXRleHQnKTtcclxuXHJcbiAgICBpZiAoIWVkaXRvcldyYXBwZXIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0b3I/LmlzRW1wdHkpIHtcclxuXHJcbiAgICAgIGVkaXRvcldyYXBwZXIuY2xhc3NMaXN0LmFkZChcclxuICAgICAgICAnZWRpdG9yLWVtcHR5J1xyXG4gICAgICApO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBlZGl0b3JXcmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoXHJcbiAgICAgICAgJ2VkaXRvci1lbXB0eSdcclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNhdmVkU2VsZWN0aW9uID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICB9XHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNhdmVkU2VsZWN0aW9uKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5lZGl0b3JcclxuICAgICAgLmNoYWluKClcclxuICAgICAgLmZvY3VzKClcclxuICAgICAgLnNldFRleHRTZWxlY3Rpb24oXHJcbiAgICAgICAgdGhpcy5zYXZlZFNlbGVjdGlvblxyXG4gICAgICApXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICBzd2l0Y2hUb1NvbGlkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbG9yVHlwZSA9ICdTT0xJRCc7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb24oKTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSB0cnVlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHN3aXRjaFRvR3JhZGllbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sb3JUeXBlID0gJ0dSQURJRU5UJztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5zaG93VG9vbGJhciA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgb3BlbkNvbG9yUGlja2VyKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuaXNDb2xvclBpY2tlck9wZW4gPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ2ZvY3VzJyxcclxuICAgICAgICB0aGlzLmhhbmRsZVdpbmRvd0ZvY3VzLFxyXG4gICAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgaGFuZGxlV2luZG93Rm9jdXMgPSAoKTogdm9pZCA9PiB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmlzQ29sb3JQaWNrZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgfSwgMzAwKTtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWxlY3Rpb24oKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIGlmIChmcm9tID09PSB0bykge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmlzQ29sb3JQaWNrZXJPcGVuKSB7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID1cclxuICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXNlbGVjdGlvbiB8fFxyXG4gICAgICBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMFxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJhbmdlID1cclxuICAgICAgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcblxyXG4gICAgY29uc3QgcmVjdCA9XHJcbiAgICAgIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvclJlY3QgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHRvb2xiYXIgPVxyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAnLnRvb2xiYXInXHJcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghdG9vbGJhcilcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPVxyXG4gICAgICAgIHRvb2xiYXIub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICBsZXQgbGVmdCA9XHJcbiAgICAgICAgcmVjdC5sZWZ0IC1cclxuICAgICAgICBlZGl0b3JSZWN0LmxlZnQgK1xyXG4gICAgICAgIChyZWN0LndpZHRoIC8gMikgLVxyXG4gICAgICAgICh0b29sYmFyV2lkdGggLyAyKTtcclxuXHJcbiAgICAgIGxlZnQgPSBNYXRoLm1heCgxMCwgbGVmdCk7XHJcblxyXG4gICAgICBjb25zdCBtYXhMZWZ0ID1cclxuICAgICAgICBlZGl0b3JSZWN0LndpZHRoIC1cclxuICAgICAgICB0b29sYmFyV2lkdGggLVxyXG4gICAgICAgIDEwO1xyXG5cclxuICAgICAgbGVmdCA9IE1hdGgubWluKGxlZnQsIG1heExlZnQpO1xyXG5cclxuICAgICAgbGVmdCA9IE1hdGgubWF4KDEwLCBsZWZ0KTtcclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclggPSBsZWZ0O1xyXG5cclxuICAgICAgdGhpcy50b29sYmFyWSA9XHJcbiAgICAgICAgcmVjdC5ib3R0b20gLVxyXG4gICAgICAgIGVkaXRvclJlY3QudG9wICtcclxuICAgICAgICAxMDtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2dnbGVCb2xkKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVCb2xkKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0YWxpYygpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAudG9nZ2xlSXRhbGljKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZVVuZGVybGluZSgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAudG9nZ2xlVW5kZXJsaW5lKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZU9yZGVyZWRMaXN0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVPcmRlcmVkTGlzdCgpXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2dnbGVCdWxsZXRMaXN0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVCdWxsZXRMaXN0KClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHNldEFsaWduKFxyXG4gICAgYWxpZ25tZW50OlxyXG4gICAgICAnbGVmdCcgfFxyXG4gICAgICAnY2VudGVyJyB8XHJcbiAgICAgICdyaWdodCdcclxuICApOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dEFsaWduKGFsaWdubWVudClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoXHJcbiAgICAgICAgJ3RleHRTdHlsZSdcclxuICAgICAgKTtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywge1xyXG5cclxuICAgICAgICAuLi5leGlzdGluZ1N0eWxlcyxcclxuXHJcbiAgICAgICAgY29sb3I6XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IsXHJcblxyXG4gICAgICAgIGJhY2tncm91bmRJbWFnZTogbnVsbCxcclxuXHJcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IG51bGwsXHJcblxyXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IG51bGxcclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoXHJcbiAgICAgICAgJ3RleHRTdHlsZSdcclxuICAgICAgKTtcclxuXHJcbiAgICBjb25zdCBncmFkaWVudCA9IGBcclxuICAgIGxpbmVhci1ncmFkaWVudChcclxuICAgICAgdG8gcmlnaHQsXHJcbiAgICAgICR7dGhpcy5wcmltYXJ5Q29sb3J9LFxyXG4gICAgICAke3RoaXMuc2Vjb25kYXJ5Q29sb3J9XHJcbiAgICApXHJcbiAgYDtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywge1xyXG5cclxuICAgICAgICAuLi5leGlzdGluZ1N0eWxlcyxcclxuXHJcbiAgICAgICAgYmFja2dyb3VuZEltYWdlOlxyXG4gICAgICAgICAgZ3JhZGllbnQsXHJcblxyXG4gICAgICAgIGJhY2tncm91bmRDbGlwOlxyXG4gICAgICAgICAgJ3RleHQnLFxyXG5cclxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDpcclxuICAgICAgICAgICd0ZXh0JyxcclxuXHJcbiAgICAgICAgY29sb3I6XHJcbiAgICAgICAgICAndHJhbnNwYXJlbnQnLFxyXG5cclxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOlxyXG4gICAgICAgICAgJ3RyYW5zcGFyZW50JyxcclxuXHJcbiAgICAgICAgZGlzcGxheTpcclxuICAgICAgICAgICdpbmxpbmUtYmxvY2snXHJcblxyXG4gICAgICB9KVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uSG9zdENsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uub3BlblRleHRFZGl0b3IuZW1pdCh7XHJcbiAgICAgIHNlY3Rpb25JZDogdGhpcy5zZWN0aW9uSWQsXHJcbiAgICAgIGlucHV0VGV4dEluZGV4OiB0aGlzLmlucHV0VGV4dEluZGV4LFxyXG4gICAgICBpdGVtSW5kZXg6IHRoaXMuaXRlbUluZGV4LFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFxyXG4gICAgJ2RvY3VtZW50Om1vdXNlZG93bidcclxuICApXHJcblxyXG4gIG9uTW91c2VEb3duKCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmVkaXRvcilcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB7IGZyb20sIHRvIH0gPVxyXG4gICAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPVxyXG4gICAgICAgIGZyb20gIT09IHRvO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZUZvbnRTaXplKFxyXG4gICAgZm9udFNpemU6IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGb250U2l6ZSA9XHJcbiAgICAgIGZvbnRTaXplO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyayhcclxuICAgICAgICAndGV4dFN0eWxlJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmb250U2l6ZVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjwhLS0gdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwgLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiICpuZ0lmPVwiZWRpdGFibGU7IGVsc2Ugdmlld01vZGVcIj5cclxuXHJcbiAgPCEtLSBGTE9BVElORyBUT09MQkFSIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCIgKm5nSWY9XCJzaG93VG9vbGJhclwiIFtzdHlsZS50b3AucHhdPVwidG9vbGJhcllcIiBbc3R5bGUubGVmdC5weF09XCJ0b29sYmFyWFwiIGNka0RyYWc+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBkcmFnLWhhbmRsZSB3LWF1dG9cIiBjZGtEcmFnSGFuZGxlPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1ncmlwLXZlcnRpY2FsXCI+XHJcbiAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjFcIiAvPlxyXG4gICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI1XCIgcj1cIjFcIiAvPlxyXG4gICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOVwiIHI9XCIxXCIgLz5cclxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjFcIiAvPlxyXG4gICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiNVwiIHI9XCIxXCIgLz5cclxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjE5XCIgcj1cIjFcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJmb250LXNpemUtZmllbGRcIj5cclxuXHJcbiAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCJzZWxlY3RlZEZvbnRTaXplXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VGb250U2l6ZSgkZXZlbnQudmFsdWUpXCIgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuXHJcbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJcIj5cclxuICAgICAgICAgIERlZmF1bHRcclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMC43NXJlbSwgMnZ3LCAxcmVtKVwiPlxyXG4gICAgICAgICAgMTRcclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMC43NXJlbSwgMnZ3LCAxLjI1cmVtKVwiPlxyXG4gICAgICAgICAgMTZcclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMXJlbSwgM3Z3LCAxLjVyZW0pXCI+XHJcbiAgICAgICAgICAyMFxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgxLjI1cmVtLCA0dncsIDJyZW0pXCI+XHJcbiAgICAgICAgICAyNFxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImNsYW1wKDJyZW0sIDV2dywgM3JlbSlcIj5cclxuICAgICAgICAgIDMyXHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMy4xcmVtLCA3dncsIDQuNXJlbSlcIj5cclxuICAgICAgICAgIDQ4XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcblxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwhLS0gQk9MRCAtLT5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIFtjbGFzcy5zZWxlY3RlZFRvb2xdPVwiZWRpdG9yPy5pc0FjdGl2ZSgnYm9sZCcpXCIgKGNsaWNrKT1cInRvZ2dsZUJvbGQoKVwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1ib2xkXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk02IDEyaDlhNCA0IDAgMCAxIDAgOEg3YTEgMSAwIDAgMS0xLTFWNWExIDEgMCAwIDEgMS0xaDdhNCA0IDAgMCAxIDAgOFwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBJVEFMSUMgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiBbY2xhc3Muc2VsZWN0ZWRUb29sXT1cImVkaXRvcj8uaXNBY3RpdmUoJ2l0YWxpYycpXCIgKGNsaWNrKT1cInRvZ2dsZUl0YWxpYygpXCI+XHJcblxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1pdGFsaWNcIj5cclxuICAgICAgICA8bGluZSB4MT1cIjE5XCIgeDI9XCIxMFwiIHkxPVwiNFwiIHkyPVwiNFwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHgyPVwiNVwiIHkxPVwiMjBcIiB5Mj1cIjIwXCIgLz5cclxuICAgICAgICA8bGluZSB4MT1cIjE1XCIgeDI9XCI5XCIgeTE9XCI0XCIgeTI9XCIyMFwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBVTkRFUkxJTkUgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiBbY2xhc3Muc2VsZWN0ZWRUb29sXT1cImVkaXRvcj8uaXNBY3RpdmUoJ3VuZGVybGluZScpXCIgKGNsaWNrKT1cInRvZ2dsZVVuZGVybGluZSgpXCI+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLXVuZGVybGluZVwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNNiA0djZhNiA2IDAgMCAwIDEyIDBWNFwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCI0XCIgeDI9XCIyMFwiIHkxPVwiMjBcIiB5Mj1cIjIwXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIEFMSUdOIExFRlQgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiAoY2xpY2spPVwic2V0QWxpZ24oJ2xlZnQnKVwiPlxyXG5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjNcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMTVcIiB4Mj1cIjNcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCIxN1wiIHgyPVwiM1wiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIEFMSUdOIENFTlRFUiAtLT5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJzZXRBbGlnbignY2VudGVyJylcIj5cclxuXHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjNcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMTdcIiB4Mj1cIjdcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCIxOVwiIHgyPVwiNVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIEFMSUdOIFJJR0hUIC0tPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInNldEFsaWduKCdyaWdodCcpXCI+XHJcblxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1hbGlnbi1yaWdodFwiPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjNcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjlcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHgyPVwiN1wiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIE9SREVSRUQgTElTVCAtLT5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJ0b2dnbGVPcmRlcmVkTGlzdCgpXCI+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWxpc3Qtb3JkZXJlZFwiPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiMTBcIiB4Mj1cIjIxXCIgeTE9XCI2XCIgeTI9XCI2XCIgLz5cclxuICAgICAgICA8bGluZSB4MT1cIjEwXCIgeDI9XCIyMVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cclxuICAgICAgICA8bGluZSB4MT1cIjEwXCIgeDI9XCIyMVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTQgNmgxdjRcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNNCAxMGgyXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTYgMThINGMwLTEgMi0yIDItM3MtMS0xLjUtMi0xXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS0gQlVMTEVUIExJU1QgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiAoY2xpY2spPVwidG9nZ2xlQnVsbGV0TGlzdCgpXCI+XHJcblxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1saXN0XCI+XHJcbiAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cclxuICAgICAgICA8bGluZSB4MT1cIjhcIiB4Mj1cIjIxXCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiM1wiIHgyPVwiMy4wMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XHJcbiAgICAgICAgPGxpbmUgeDE9XCIzXCIgeDI9XCIzLjAxXCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxyXG4gICAgICAgIDxsaW5lIHgxPVwiM1wiIHgyPVwiMy4wMVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIFNPTElEIC8gR1JBRElFTlQgLS0+XHJcbiAgICA8IS0tIFNPTElEIC8gR1JBRElFTlQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JUeXBlXCI+XHJcblxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic29saWQgdy1hdXRvXCIgW2NsYXNzLnNvbGlkQ29sb3JTZWxlY3RlZF09XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ1wiXHJcbiAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIChjbGljayk9XCJzd2l0Y2hUb1NvbGlkKCRldmVudClcIj5cclxuICAgICAgICBTb2xpZFxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJncmFkaWVudCB3LWF1dG9cIiBbY2xhc3MuZ3JhZGllbnRDb2xvclNlbGVjdGVkXT1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnR1JBRElFTlQnXCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgKGNsaWNrKT1cInN3aXRjaFRvR3JhZGllbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgIEdyYWRpZW50XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU09MSUQgQ09MT1IgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuIHctYXV0b1wiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCdcIj5cclxuXHJcbiAgICAgIDxtYXQtaWNvbj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbG9yXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpXCJcclxuICAgICAgICAoaW5wdXQpPVwiY2hhbmdlQ29sb3IoKVwiPlxyXG5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gR1JBRElFTlQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JhZGllbnQtcGlja2VyXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJwcmltYXJ5Q29sb3JcIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKClcIiAoaW5wdXQpPVwiYXBwbHlHcmFkaWVudCgpXCIgLz5cclxuXHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBbKG5nTW9kZWwpXT1cInNlY29uZGFyeUNvbG9yXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpXCIgKGlucHV0KT1cImFwcGx5R3JhZGllbnQoKVwiIC8+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFRJUFRBUCBFRElUT1IgLS0+XHJcbiAgPGRpdiAjZWRpdG9yQ29udGFpbmVyIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjdmlld01vZGU+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWQtb25seS10ZXh0XCIgW2lubmVySFRNTF09XCJzYWZlSHRtbFwiPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQXFCOUQs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TixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWlrQjVCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPO2dCQWlCckIsV0FBVztzQkFMVixZQUFZO3VCQUNYLG9CQUFvQjtvQkFDcEIsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBQTEFURk9STV9JRCxcclxuICBpbmplY3QsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tbW9uTW9kdWxlLFxyXG4gIGlzUGxhdGZvcm1Ccm93c2VyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5cclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5cclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuXHJcbmltcG9ydCB7IEdyYWRpZW50RXh0ZW5zaW9uIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2dyYWRpZW50LWV4dGVuc2lvbic7XHJcblxyXG5pbXBvcnQgeyBGb250U2l6ZSB9IGZyb20gJy4uLy4uL3N0eWxlcy90ZXh0LXNpemUuZXh0ZW5zaW9uJztcclxuXHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRleHQtZWRpdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG5cclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBDZGtEcmFnLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvclxyXG4gIF0sXHJcblxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG4gIGhvc3Q6IHsgJ1tzdHlsZS5kaXNwbGF5XSc6ICdpc1JURSA/IFwiXCIgOiBcIm5vbmVcIicgfVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnRcclxuICBpbXBsZW1lbnRzXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICB2YWx1ZTogc3RyaW5nID1cclxuICAgICc8cD5IZWxsbyB0aGlzIGlzIHBhbGFzaCBtYWtoaWphPC9wPic7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaXNSVEU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlY3Rpb25JZD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlucHV0VGV4dEluZGV4PzogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1JbmRleD86IG51bWJlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yQ29udGFpbmVyJylcclxuICBlZGl0b3JFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlkID1cclxuICAgIGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG4gIHByaXZhdGUgc2FuaXRpemVyID1cclxuICAgIGluamVjdChEb21TYW5pdGl6ZXIpO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFNlcnZpY2UgPVxyXG4gICAgaW5qZWN0KEV2ZW50c1NlcnZpY2UpO1xyXG5cclxuICBlZGl0b3I6IGFueTtcclxuXHJcbiAgc2FmZUh0bWwhOiBTYWZlSHRtbDtcclxuXHJcbiAgc2VsZWN0ZWRGb250U2l6ZSA9ICcnO1xyXG5cclxuICBzaG93VG9vbGJhciA9IGZhbHNlO1xyXG5cclxuICB0b29sYmFyWCA9IDA7XHJcblxyXG4gIHRvb2xiYXJZID0gMTAwO1xyXG5cclxuICBzZWxlY3RlZENvbG9yID0gJyMwMDAwMDAnO1xyXG5cclxuICBwcmltYXJ5Q29sb3IgPSAnIzAwMDAwMCc7XHJcblxyXG4gIHNlY29uZGFyeUNvbG9yID0gJyNmZjAwMDAnO1xyXG5cclxuICBpc0NvbG9yUGlja2VyT3BlbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZENvbG9yVHlwZTpcclxuICAgICdTT0xJRCcgfCAnR1JBRElFTlQnID0gJ1NPTElEJztcclxuXHJcbiAgc2F2ZWRTZWxlY3Rpb246IGFueSA9IG51bGw7XHJcblxyXG4gIGlzRm9udFNpemVNZW51T3BlbiA9IGZhbHNlO1xyXG5cclxuICB0b29sYmFyRGF0YTogYW55ID0ge1xyXG4gICAgc2VsZWN0ZWRTaXplOiAnJ1xyXG4gIH07XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2FmZUh0bWwoKTtcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICFjaGFuZ2VzWyd2YWx1ZSddLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEh0bWwgPSB0aGlzLmVkaXRvci5nZXRIVE1MKCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRIdG1sICE9PSB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvci5jb21tYW5kcy5zZXRDb250ZW50KHRoaXMudmFsdWUgfHwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVNhZmVIdG1sKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVkaXRhYmxlICYmXHJcbiAgICAgIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZClcclxuICAgICkge1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplRWRpdG9yKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lZGl0b3IgJiZcclxuICAgICAgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKVxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNhZmVIdG1sKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2FmZUh0bWwgPVxyXG4gICAgICB0aGlzLnNhbml0aXplclxyXG4gICAgICAgIC5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuICAgICAgICAgIHRoaXMudmFsdWUgfHwgJydcclxuICAgICAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRpYWxpemVFZGl0b3IoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVkaXRvckVsZW1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB7IEVkaXRvciB9ID1cclxuICAgICAgYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2NvcmUnKTtcclxuXHJcbiAgICBjb25zdCBTdGFydGVyS2l0ID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9zdGFydGVyLWtpdCcpKS5kZWZhdWx0O1xyXG5cclxuICAgIGNvbnN0IFRleHRTdHlsZSA9XHJcbiAgICAgIChhd2FpdCBpbXBvcnQoJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtc3R5bGUnKSlcclxuICAgICAgICAuVGV4dFN0eWxlO1xyXG5cclxuICAgIGNvbnN0IENvbG9yID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9leHRlbnNpb24tY29sb3InKSlcclxuICAgICAgICAuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBVbmRlcmxpbmUgPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi11bmRlcmxpbmUnKSlcclxuICAgICAgICAuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBUZXh0QWxpZ24gPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi10ZXh0LWFsaWduJykpXHJcbiAgICAgICAgLmRlZmF1bHQ7XHJcblxyXG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKHtcclxuXHJcbiAgICAgIGVsZW1lbnQ6XHJcbiAgICAgICAgdGhpcy5lZGl0b3JFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXHJcblxyXG4gICAgICBlZGl0b3JQcm9wczoge1xyXG5cclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjbGFzczogJ1Byb3NlTWlycm9yJ1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBleHRlbnNpb25zOiBbXHJcblxyXG4gICAgICAgIFN0YXJ0ZXJLaXQsXHJcblxyXG4gICAgICAgIFRleHRTdHlsZSxcclxuXHJcbiAgICAgICAgRm9udFNpemUsXHJcblxyXG4gICAgICAgIENvbG9yLFxyXG5cclxuICAgICAgICBHcmFkaWVudEV4dGVuc2lvbixcclxuXHJcbiAgICAgICAgVW5kZXJsaW5lLFxyXG5cclxuICAgICAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcclxuICAgICAgICAgIHR5cGVzOiBbXHJcbiAgICAgICAgICAgICdoZWFkaW5nJyxcclxuICAgICAgICAgICAgJ3BhcmFncmFwaCcsXHJcbiAgICAgICAgICAgICdsaXN0SXRlbSdcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSksXHJcblxyXG4gICAgICBdLFxyXG5cclxuICAgICAgY29udGVudDogdGhpcy52YWx1ZSxcclxuXHJcbiAgICAgIG9uU2VsZWN0aW9uVXBkYXRlOiAoKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICB9LFxyXG5cclxuICAgICAgb25VcGRhdGU6ICh7IGVkaXRvciB9OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgaHRtbCA9XHJcbiAgICAgICAgICBlZGl0b3IuZ2V0SFRNTCgpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgICAgICAvLyAgICdFRElUT1IgSFRNTDonLFxyXG4gICAgICAgIC8vICAgaHRtbFxyXG4gICAgICAgIC8vICk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSBodG1sO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNhZmVIdG1sKCk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChodG1sKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVFbXB0eUVkaXRvckNsYXNzKCk7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVFbXB0eUVkaXRvckNsYXNzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRW1wdHlFZGl0b3JDbGFzcygpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdG9yRWxlbWVudClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvcldyYXBwZXIgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5jbG9zZXN0KCcuZWRpdGFibGUtdGV4dCcpO1xyXG5cclxuICAgIGlmICghZWRpdG9yV3JhcHBlcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRvcj8uaXNFbXB0eSkge1xyXG5cclxuICAgICAgZWRpdG9yV3JhcHBlci5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICdlZGl0b3ItZW1wdHknXHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGVkaXRvcldyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZShcclxuICAgICAgICAnZWRpdG9yLWVtcHR5J1xyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2F2ZWRTZWxlY3Rpb24gPVxyXG4gICAgICB0aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb247XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2F2ZWRTZWxlY3Rpb24pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNhdmVkU2VsZWN0aW9uXHJcbiAgICAgIClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHN3aXRjaFRvU29saWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sb3JUeXBlID0gJ1NPTElEJztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5zaG93VG9vbGJhciA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc3dpdGNoVG9HcmFkaWVudChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2xvclR5cGUgPSAnR1JBRElFTlQnO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvcGVuQ29sb3JQaWNrZXIoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5pc0NvbG9yUGlja2VyT3BlbiA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnZm9jdXMnLFxyXG4gICAgICAgIHRoaXMuaGFuZGxlV2luZG93Rm9jdXMsXHJcbiAgICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVXaW5kb3dGb2N1cyA9ICgpOiB2b2lkID0+IHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNDb2xvclBpY2tlck9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICB9LCAzMDApO1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdG9yKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIC8vIG5vIHNlbGVjdGlvblxyXG4gICAgaWYgKGZyb20gPT09IHRvKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNlbGVjdGVkIHRleHRcclxuICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLmRvYy50ZXh0QmV0d2VlbihcclxuICAgICAgICBmcm9tLFxyXG4gICAgICAgIHRvLFxyXG4gICAgICAgICcgJ1xyXG4gICAgICApO1xyXG5cclxuICAgIC8vIHJlbW92ZSBzcGFjZXMgKyBsaW5lIGJyZWFrc1xyXG4gICAgY29uc3QgdHJpbW1lZFRleHQgPVxyXG4gICAgICBzZWxlY3RlZFRleHRcclxuICAgICAgICAucmVwbGFjZSgvXFxzL2csICcnKTtcclxuXHJcbiAgICAvLyBpZiBvbmx5IHNwYWNlcyBzZWxlY3RlZFxyXG4gICAgaWYgKCF0cmltbWVkVGV4dC5sZW5ndGgpIHtcclxuXHJcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID1cclxuICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXNlbGVjdGlvbiB8fFxyXG4gICAgICBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMFxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJhbmdlID1cclxuICAgICAgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcblxyXG4gICAgY29uc3QgcmVjdCA9XHJcbiAgICAgIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvclJlY3QgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHRvb2xiYXIgPVxyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAnLnRvb2xiYXInXHJcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghdG9vbGJhcilcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPVxyXG4gICAgICAgIHRvb2xiYXIub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICBsZXQgbGVmdCA9XHJcbiAgICAgICAgcmVjdC5sZWZ0IC1cclxuICAgICAgICBlZGl0b3JSZWN0LmxlZnQgK1xyXG4gICAgICAgIChyZWN0LndpZHRoIC8gMikgLVxyXG4gICAgICAgICh0b29sYmFyV2lkdGggLyAyKTtcclxuXHJcbiAgICAgIGxlZnQgPSBNYXRoLm1heCgxMCwgbGVmdCk7XHJcblxyXG4gICAgICBjb25zdCBtYXhMZWZ0ID1cclxuICAgICAgICBlZGl0b3JSZWN0LndpZHRoIC1cclxuICAgICAgICB0b29sYmFyV2lkdGggLVxyXG4gICAgICAgIDEwO1xyXG5cclxuICAgICAgbGVmdCA9IE1hdGgubWluKGxlZnQsIG1heExlZnQpO1xyXG5cclxuICAgICAgdGhpcy50b29sYmFyWCA9IGxlZnQ7XHJcblxyXG4gICAgICB0aGlzLnRvb2xiYXJZID1cclxuICAgICAgICByZWN0LmJvdHRvbSAtXHJcbiAgICAgICAgZWRpdG9yUmVjdC50b3AgK1xyXG4gICAgICAgIDEwO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZUJvbGQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5lZGl0b3JcclxuICAgICAgLmNoYWluKClcclxuICAgICAgLmZvY3VzKClcclxuICAgICAgLnRvZ2dsZUJvbGQoKVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlSXRhbGljKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVJdGFsaWMoKVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlVW5kZXJsaW5lKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVVbmRlcmxpbmUoKVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT3JkZXJlZExpc3QoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5lZGl0b3JcclxuICAgICAgLmNoYWluKClcclxuICAgICAgLmZvY3VzKClcclxuICAgICAgLnRvZ2dsZU9yZGVyZWRMaXN0KClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZUJ1bGxldExpc3QoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5lZGl0b3JcclxuICAgICAgLmNoYWluKClcclxuICAgICAgLmZvY3VzKClcclxuICAgICAgLnRvZ2dsZUJ1bGxldExpc3QoKVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0QWxpZ24oXHJcbiAgICBhbGlnbm1lbnQ6XHJcbiAgICAgICdsZWZ0JyB8XHJcbiAgICAgICdjZW50ZXInIHxcclxuICAgICAgJ3JpZ2h0J1xyXG4gICk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC5zZXRUZXh0QWxpZ24oYWxpZ25tZW50KVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ29sb3IoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIGlmIChmcm9tID09PSB0bylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGVzID1cclxuICAgICAgdGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcyhcclxuICAgICAgICAndGV4dFN0eWxlJ1xyXG4gICAgICApO1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC5zZXRUZXh0U2VsZWN0aW9uKHtcclxuICAgICAgICBmcm9tLFxyXG4gICAgICAgIHRvXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zZXRNYXJrKCd0ZXh0U3R5bGUnLCB7XHJcblxyXG4gICAgICAgIC4uLmV4aXN0aW5nU3R5bGVzLFxyXG5cclxuICAgICAgICBjb2xvcjpcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvcixcclxuXHJcbiAgICAgICAgYmFja2dyb3VuZEltYWdlOiBudWxsLFxyXG5cclxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDogbnVsbCxcclxuXHJcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogbnVsbFxyXG5cclxuICAgICAgfSlcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIGFwcGx5R3JhZGllbnQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIGlmIChmcm9tID09PSB0bylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGVzID1cclxuICAgICAgdGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcyhcclxuICAgICAgICAndGV4dFN0eWxlJ1xyXG4gICAgICApO1xyXG5cclxuICAgIGNvbnN0IGdyYWRpZW50ID0gYFxyXG4gICAgbGluZWFyLWdyYWRpZW50KFxyXG4gICAgICB0byByaWdodCxcclxuICAgICAgJHt0aGlzLnByaW1hcnlDb2xvcn0sXHJcbiAgICAgICR7dGhpcy5zZWNvbmRhcnlDb2xvcn1cclxuICAgIClcclxuICBgO1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC5zZXRUZXh0U2VsZWN0aW9uKHtcclxuICAgICAgICBmcm9tLFxyXG4gICAgICAgIHRvXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zZXRNYXJrKCd0ZXh0U3R5bGUnLCB7XHJcblxyXG4gICAgICAgIC4uLmV4aXN0aW5nU3R5bGVzLFxyXG5cclxuICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6XHJcbiAgICAgICAgICBncmFkaWVudCxcclxuXHJcbiAgICAgICAgYmFja2dyb3VuZENsaXA6XHJcbiAgICAgICAgICAndGV4dCcsXHJcblxyXG4gICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOlxyXG4gICAgICAgICAgJ3RleHQnLFxyXG5cclxuICAgICAgICBjb2xvcjpcclxuICAgICAgICAgICd0cmFuc3BhcmVudCcsXHJcblxyXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6XHJcbiAgICAgICAgICAndHJhbnNwYXJlbnQnLFxyXG5cclxuICAgICAgICBkaXNwbGF5OlxyXG4gICAgICAgICAgJ2lubGluZS1ibG9jaydcclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXHJcbiAgb25Ib3N0Q2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHJldHVybjtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5vcGVuVGV4dEVkaXRvci5lbWl0KHtcclxuICAgICAgc2VjdGlvbklkOiB0aGlzLnNlY3Rpb25JZCxcclxuICAgICAgaW5wdXRUZXh0SW5kZXg6IHRoaXMuaW5wdXRUZXh0SW5kZXgsXHJcbiAgICAgIGl0ZW1JbmRleDogdGhpcy5pdGVtSW5kZXgsXHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxyXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXHJcbiAgICAnZG9jdW1lbnQ6bW91c2Vkb3duJyxcclxuICAgIFsnJGV2ZW50J11cclxuICApXHJcblxyXG4gIG9uTW91c2VEb3duKFxyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnRcclxuICApOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCB0YXJnZXQgPVxyXG4gICAgICBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgY29uc3QgY2xpY2tlZFRvb2xiYXIgPVxyXG4gICAgICAhIXRhcmdldC5jbG9zZXN0KCcudG9vbGJhcicpO1xyXG5cclxuICAgIGNvbnN0IGNsaWNrZWRFZGl0b3IgPVxyXG4gICAgICAhIXRhcmdldC5jbG9zZXN0KCcuZWRpdGFibGUtdGV4dCcpO1xyXG5cclxuICAgIC8vIEFuZ3VsYXIgTWF0ZXJpYWwgZHJvcGRvd25cclxuICAgIGNvbnN0IGNsaWNrZWRPdmVybGF5ID1cclxuICAgICAgISF0YXJnZXQuY2xvc2VzdCgnLmNkay1vdmVybGF5LXBhbmUnKTtcclxuXHJcbiAgICAvLyBrZWVwIHRvb2xiYXIgb3BlblxyXG4gICAgaWYgKFxyXG4gICAgICBjbGlja2VkVG9vbGJhciB8fFxyXG4gICAgICBjbGlja2VkRWRpdG9yIHx8XHJcbiAgICAgIGNsaWNrZWRPdmVybGF5XHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNsb3NlIG9ubHkgb3V0c2lkZVxyXG4gICAgdGhpcy5zaG93VG9vbGJhciA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZUZvbnRTaXplKFxyXG4gICAgZm9udFNpemU6IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGb250U2l6ZSA9XHJcbiAgICAgIGZvbnRTaXplO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyayhcclxuICAgICAgICAndGV4dFN0eWxlJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmb250U2l6ZVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjwhLS0gdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwgLS0+XG5cbjxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCIgKm5nSWY9XCJlZGl0YWJsZTsgZWxzZSB2aWV3TW9kZVwiPlxuXG4gICAgPCEtLSBGTE9BVElORyBUT09MQkFSIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCIgKm5nSWY9XCJzaG93VG9vbGJhclwiIFtzdHlsZS50b3AucHhdPVwidG9vbGJhcllcIiBbc3R5bGUubGVmdC5weF09XCJ0b29sYmFyWFwiIGNka0RyYWc+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBkcmFnLWhhbmRsZSB3LWF1dG9cIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1ncmlwLXZlcnRpY2FsXCI+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjFcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI1XCIgcj1cIjFcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOVwiIHI9XCIxXCIgLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjFcIiAvPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiNVwiIHI9XCIxXCIgLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjE5XCIgcj1cIjFcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJmb250LXNpemUtZmllbGRcIj5cblxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwic2VsZWN0ZWRGb250U2l6ZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlRm9udFNpemUoJGV2ZW50LnZhbHVlKVwiIGRpc2FibGVPcHRpb25DZW50ZXJpbmc+XG5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgRGVmYXVsdFxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMC43NXJlbSwgMnZ3LCAxcmVtKVwiPlxuICAgICAgICAgICAgMTRcbiAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImNsYW1wKDAuNzVyZW0sIDJ2dywgMS4yNXJlbSlcIj5cbiAgICAgICAgICAgIDE2XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgxcmVtLCAzdncsIDEuNXJlbSlcIj5cbiAgICAgICAgICAgIDIwXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgxLjI1cmVtLCA0dncsIDJyZW0pXCI+XG4gICAgICAgICAgICAyNFxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImNsYW1wKDJyZW0sIDV2dywgM3JlbSlcIj5cbiAgICAgICAgICAgIDMyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMy4xcmVtLCA3dncsIDQuNXJlbSlcIj5cbiAgICAgICAgICAgIDQ4XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8IS0tIEJPTEQgLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiBbY2xhc3Muc2VsZWN0ZWRUb29sXT1cImVkaXRvcj8uaXNBY3RpdmUoJ2JvbGQnKVwiIChjbGljayk9XCJ0b2dnbGVCb2xkKClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtYm9sZFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMmg5YTQgNCAwIDAgMSAwIDhIN2ExIDEgMCAwIDEtMS0xVjVhMSAxIDAgMCAxIDEtMWg3YTQgNCAwIDAgMSAwIDhcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIElUQUxJQyAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIFtjbGFzcy5zZWxlY3RlZFRvb2xdPVwiZWRpdG9yPy5pc0FjdGl2ZSgnaXRhbGljJylcIiAoY2xpY2spPVwidG9nZ2xlSXRhbGljKClcIj5cblxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1pdGFsaWNcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjE5XCIgeDI9XCIxMFwiIHkxPVwiNFwiIHkyPVwiNFwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHgyPVwiNVwiIHkxPVwiMjBcIiB5Mj1cIjIwXCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjE1XCIgeDI9XCI5XCIgeTE9XCI0XCIgeTI9XCIyMFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gVU5ERVJMSU5FIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgW2NsYXNzLnNlbGVjdGVkVG9vbF09XCJlZGl0b3I/LmlzQWN0aXZlKCd1bmRlcmxpbmUnKVwiIChjbGljayk9XCJ0b2dnbGVVbmRlcmxpbmUoKVwiPlxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS11bmRlcmxpbmVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTYgNHY2YTYgNiAwIDAgMCAxMiAwVjRcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiNFwiIHgyPVwiMjBcIiB5MT1cIjIwXCIgeTI9XCIyMFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gQUxJR04gTEVGVCAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJzZXRBbGlnbignbGVmdCcpXCI+XG5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtYWxpZ24tbGVmdFwiPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjNcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTVcIiB4Mj1cIjNcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxN1wiIHgyPVwiM1wiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBBTElHTiBDRU5URVIgLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiAoY2xpY2spPVwic2V0QWxpZ24oJ2NlbnRlcicpXCI+XG5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHgyPVwiM1wiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxN1wiIHgyPVwiN1wiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjE5XCIgeDI9XCI1XCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIEFMSUdOIFJJR0hUIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInNldEFsaWduKCdyaWdodCcpXCI+XG5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtYWxpZ24tcmlnaHRcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeDI9XCIzXCIgeTE9XCI2XCIgeTI9XCI2XCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeDI9XCI5XCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjdcIiB5MT1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gT1JERVJFRCBMSVNUIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInRvZ2dsZU9yZGVyZWRMaXN0KClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGlzdC1vcmRlcmVkXCI+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxMFwiIHgyPVwiMjFcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTBcIiB4Mj1cIjIxXCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTBcIiB4Mj1cIjIxXCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNCA2aDF2NFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk00IDEwaDJcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxOEg0YzAtMSAyLTIgMi0zcy0xLTEuNS0yLTFcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBCVUxMRVQgTElTVCAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJ0b2dnbGVCdWxsZXRMaXN0KClcIj5cblxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1saXN0XCI+XG4gICAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjhcIiB4Mj1cIjIxXCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiM1wiIHgyPVwiMy4wMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIzXCIgeDI9XCIzLjAxXCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiM1wiIHgyPVwiMy4wMVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBTT0xJRCAvIEdSQURJRU5UIC0tPlxuICAgICAgPCEtLSBTT0xJRCAvIEdSQURJRU5UIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbG9yVHlwZVwiPlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzb2xpZCB3LWF1dG9cIiBbY2xhc3Muc29saWRDb2xvclNlbGVjdGVkXT1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnU09MSUQnXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgKGNsaWNrKT1cInN3aXRjaFRvU29saWQoJGV2ZW50KVwiPlxuICAgICAgICAgIFNvbGlkXG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJncmFkaWVudCB3LWF1dG9cIiBbY2xhc3MuZ3JhZGllbnRDb2xvclNlbGVjdGVkXT1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnR1JBRElFTlQnXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgKGNsaWNrKT1cInN3aXRjaFRvR3JhZGllbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIEdyYWRpZW50XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTT0xJRCBDT0xPUiAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG4gdy1hdXRvXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ1wiPlxuXG4gICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XG5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2xvclwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKVwiXG4gICAgICAgICAgKGlucHV0KT1cImNoYW5nZUNvbG9yKClcIj5cblxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gR1JBRElFTlQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JhZGllbnQtcGlja2VyXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ1wiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJwcmltYXJ5Q29sb3JcIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKClcIiAoaW5wdXQpPVwiYXBwbHlHcmFkaWVudCgpXCIgLz5cblxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJzZWNvbmRhcnlDb2xvclwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKVwiIChpbnB1dCk9XCJhcHBseUdyYWRpZW50KClcIiAvPlxuXG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUSVBUQVAgRURJVE9SIC0tPlxuICAgIDxkaXYgI2VkaXRvckNvbnRhaW5lciBjbGFzcz1cImVkaXRhYmxlLXRleHRcIj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICN2aWV3TW9kZT5cbiAgICA8ZGl2IGNsYXNzPVwicmVhZC1vbmx5LXRleHRcIiBbaW5uZXJIVE1MXT1cInNhZmVIdG1sXCI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+Il19
@@ -35,7 +35,7 @@ export class TopOfImageCardComponent {
35
35
  }
36
36
  }
37
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopOfImageCardComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TopOfImageCardComponent, isStandalone: true, selector: "simpo-top-of-image-card", inputs: { data: "data", styles: "styles", content: "content", componentId: "componentId", button: "button", edit: "edit", itemIndex: "itemIndex" }, ngImport: i0, template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"styles?.corners\"\r\n [ngStyle]=\"{'background-color': styles?.background?.accentColor}\" \r\n *ngIf=\"data?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"data.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"componentId\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n </div>\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\" \r\n [simpoObjectPosition]=\"data?.image?.position\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"0\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"1\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n </div>\r\n <div class=\"button-wrapper w-100\" [ngClass]=\"getButtonAlignmentClass()\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\"\r\n [simpoHoverAnimation]=\"getContentAnimation()\" class=\"button-inner\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\"\r\n [backgroundInfo]=\"styles?.background\" [edit]=\"edit\">\r\n </app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".w-100{width:100%}.mb-1{margin-bottom:1rem!important}.content{padding:0 15px 16px;padding-top:1rem;display:flex;flex-direction:column;height:100%}.top-container{background-position:center center;background-size:cover;height:100%;position:relative;display:flex;flex-direction:column}.button-wrapper{margin-top:auto;padding-top:12px;display:flex;width:100%}.button-inner{width:max-content}.popular-tag{position:absolute;top:-1px;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}.lh-40{line-height:40px}.body-desc{margin-bottom:10px}.justify-items-start{align-items:flex-start;text-align:left}.justify-items-end{align-items:flex-end;text-align:right}.justify-items-center{align-items:center;text-align:center}.button-left{justify-content:flex-start}.button-center{justify-content:center}.button-right{justify-content:flex-end}@media screen and (max-width: 475px){.box-shadow{box-shadow:unset!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ImageDirectiveDirective, selector: "[simpoImageDirective]", inputs: ["simpoImageDirective"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "directive", type: TextBackgroundDirectiveDirective, selector: "[simpoTextBackgroundDirective]", inputs: ["simpoTextBackgroundDirective"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label", "type", "inputTextIndex", "itemIndex"], outputs: ["valueChange"] }, { kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo", "disabled", "loading", "isFullWidth"] }, { kind: "directive", type: HoverAnimationDirective, selector: "[simpoHoverAnimation]", inputs: ["simpoHoverAnimation"] }, { kind: "directive", type: ObjectPositionDirective, selector: "[simpoObjectPosition]", inputs: ["simpoObjectPosition"] }] }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TopOfImageCardComponent, isStandalone: true, selector: "simpo-top-of-image-card", inputs: { data: "data", styles: "styles", content: "content", componentId: "componentId", button: "button", edit: "edit", itemIndex: "itemIndex" }, ngImport: i0, template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"styles?.corners\"\r\n [ngStyle]=\"{'background-color': styles?.background?.accentColor}\" \r\n *ngIf=\"data?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"data.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"componentId\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n </div>\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\" \r\n [simpoObjectPosition]=\"data?.image?.position\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"0\" [itemIndex]=\"itemIndex\" [isRTE]=\"data.inputText[0]?.isRTE\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"1\" [itemIndex]=\"itemIndex\" [isRTE]=\"data.inputText[1]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"button-wrapper w-100\" [ngClass]=\"getButtonAlignmentClass()\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\"\r\n [simpoHoverAnimation]=\"getContentAnimation()\" class=\"button-inner\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\"\r\n [backgroundInfo]=\"styles?.background\" [edit]=\"edit\">\r\n </app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".w-100{width:100%}.mb-1{margin-bottom:1rem!important}.content{padding:0 15px 16px;padding-top:1rem;display:flex;flex-direction:column;height:100%}.top-container{background-position:center center;background-size:cover;height:100%;position:relative;display:flex;flex-direction:column}.button-wrapper{margin-top:auto;padding-top:12px;display:flex;width:100%}.button-inner{width:max-content}.popular-tag{position:absolute;top:-1px;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}.lh-40{line-height:40px}.body-desc{margin-bottom:10px}.justify-items-start{align-items:flex-start;text-align:left}.justify-items-end{align-items:flex-end;text-align:right}.justify-items-center{align-items:center;text-align:center}.button-left{justify-content:flex-start}.button-center{justify-content:center}.button-right{justify-content:flex-end}@media screen and (max-width: 475px){.box-shadow{box-shadow:unset!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ImageDirectiveDirective, selector: "[simpoImageDirective]", inputs: ["simpoImageDirective"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "directive", type: TextBackgroundDirectiveDirective, selector: "[simpoTextBackgroundDirective]", inputs: ["simpoTextBackgroundDirective"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "isRTE", "sectionId", "label", "type", "inputTextIndex", "itemIndex"], outputs: ["valueChange"] }, { kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo", "disabled", "loading", "isFullWidth"] }, { kind: "directive", type: HoverAnimationDirective, selector: "[simpoHoverAnimation]", inputs: ["simpoHoverAnimation"] }, { kind: "directive", type: ObjectPositionDirective, selector: "[simpoObjectPosition]", inputs: ["simpoObjectPosition"] }] }); }
39
39
  }
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopOfImageCardComponent, decorators: [{
41
41
  type: Component,
@@ -48,7 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
48
48
  SimpoButtonComponent,
49
49
  HoverAnimationDirective,
50
50
  ObjectPositionDirective
51
- ], template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"styles?.corners\"\r\n [ngStyle]=\"{'background-color': styles?.background?.accentColor}\" \r\n *ngIf=\"data?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"data.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"componentId\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n </div>\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\" \r\n [simpoObjectPosition]=\"data?.image?.position\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"0\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"1\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n </div>\r\n <div class=\"button-wrapper w-100\" [ngClass]=\"getButtonAlignmentClass()\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\"\r\n [simpoHoverAnimation]=\"getContentAnimation()\" class=\"button-inner\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\"\r\n [backgroundInfo]=\"styles?.background\" [edit]=\"edit\">\r\n </app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".w-100{width:100%}.mb-1{margin-bottom:1rem!important}.content{padding:0 15px 16px;padding-top:1rem;display:flex;flex-direction:column;height:100%}.top-container{background-position:center center;background-size:cover;height:100%;position:relative;display:flex;flex-direction:column}.button-wrapper{margin-top:auto;padding-top:12px;display:flex;width:100%}.button-inner{width:max-content}.popular-tag{position:absolute;top:-1px;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}.lh-40{line-height:40px}.body-desc{margin-bottom:10px}.justify-items-start{align-items:flex-start;text-align:left}.justify-items-end{align-items:flex-end;text-align:right}.justify-items-center{align-items:center;text-align:center}.button-left{justify-content:flex-start}.button-center{justify-content:center}.button-right{justify-content:flex-end}@media screen and (max-width: 475px){.box-shadow{box-shadow:unset!important}}\n"] }]
51
+ ], template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"styles?.corners\"\r\n [ngStyle]=\"{'background-color': styles?.background?.accentColor}\" \r\n *ngIf=\"data?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"data.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"componentId\" [itemIndex]=\"itemIndex\"></simpo-text-editor>\r\n </div>\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\" \r\n [simpoObjectPosition]=\"data?.image?.position\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"0\" [itemIndex]=\"itemIndex\" [isRTE]=\"data.inputText[0]?.isRTE\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\" [sectionId]=\"componentId\" [inputTextIndex]=\"1\" [itemIndex]=\"itemIndex\" [isRTE]=\"data.inputText[1]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"button-wrapper w-100\" [ngClass]=\"getButtonAlignmentClass()\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\"\r\n [simpoHoverAnimation]=\"getContentAnimation()\" class=\"button-inner\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\"\r\n [backgroundInfo]=\"styles?.background\" [edit]=\"edit\">\r\n </app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".w-100{width:100%}.mb-1{margin-bottom:1rem!important}.content{padding:0 15px 16px;padding-top:1rem;display:flex;flex-direction:column;height:100%}.top-container{background-position:center center;background-size:cover;height:100%;position:relative;display:flex;flex-direction:column}.button-wrapper{margin-top:auto;padding-top:12px;display:flex;width:100%}.button-inner{width:max-content}.popular-tag{position:absolute;top:-1px;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}.lh-40{line-height:40px}.body-desc{margin-bottom:10px}.justify-items-start{align-items:flex-start;text-align:left}.justify-items-end{align-items:flex-end;text-align:right}.justify-items-center{align-items:center;text-align:center}.button-left{justify-content:flex-start}.button-center{justify-content:center}.button-right{justify-content:flex-end}@media screen and (max-width: 475px){.box-shadow{box-shadow:unset!important}}\n"] }]
52
52
  }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
53
53
  type: Input
54
54
  }], styles: [{
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
64
64
  }], itemIndex: [{
65
65
  type: Input
66
66
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLW9mLWltYWdlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90b3Atb2YtaW1hZ2UtY2FyZC90b3Atb2YtaW1hZ2UtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RvcC1vZi1pbWFnZS1jYXJkL3RvcC1vZi1pbWFnZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFrQm5GLE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRSxDQUFDO0lBQ25ELFFBQVE7SUFDUixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVDLFVBQVU7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ25DLEtBQUssTUFBTTtnQkFDVCxPQUFPLGFBQWEsQ0FBQztZQUN2QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sZUFBZSxDQUFDO1lBQ3pCO2dCQUNFLE9BQU8sYUFBYSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDOytHQWhDVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix1T0M1QnBDLHFtR0E0Q0Esdy9CRDVCSSxZQUFZLHNUQUNaLHVCQUF1QixtR0FDdkIsZUFBZSxtRkFDZixnQ0FBZ0MscUhBQ2hDLG1CQUFtQixvTEFDbkIsb0JBQW9CLDJNQUNwQix1QkFBdUIsbUdBQ3ZCLHVCQUF1Qjs7NEZBS2QsdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGdDQUFnQzt3QkFDaEMsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3FCQUN4QjtrRkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSG92ZXJBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItYW5pbWF0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLXBvc2l0aW9uLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRvcC1vZi1pbWFnZS1jYXJkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICBIb3ZlckFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9wLW9mLWltYWdlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90b3Atb2YtaW1hZ2UtY2FyZC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9wT2ZJbWFnZUNhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBzdHlsZXM6IGFueTtcclxuICBASW5wdXQoKSBjb250ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY29tcG9uZW50SWQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYnV0dG9uPzogQnV0dG9uTW9kZWw7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGl0ZW1JbmRleD86IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlKXt9XHJcbiAgbmdPbkluaXQoKXtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnRBbmltYXRpb24oKXtcclxuICAgIHJldHVybiB7IGNvbnRlbnRBbmltYXRpb24gOiB0aGlzLnN0eWxlcz8uY29udGVudEFuaW1hdGlvbn07XHJcbiAgfVxyXG5cclxuICAgIHJlZGlyZWN0VG8oKXtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5idXR0b25SZWRpcmVjdGlvbi5lbWl0KHtkYXRhOiB0aGlzLmRhdGEuYnV0dG9ufSk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25BbGlnbm1lbnRDbGFzcygpIHtcclxuICAgIHN3aXRjaCAodGhpcy5zdHlsZXM/LmxheW91dD8uYWxpZ24pIHtcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgcmV0dXJuICdidXR0b24tbGVmdCc7XHJcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICByZXR1cm4gJ2J1dHRvbi1yaWdodCc7XHJcbiAgICAgIGNhc2UgJ2NlbnRlcic6XHJcbiAgICAgICAgcmV0dXJuICdidXR0b24tY2VudGVyJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2J1dHRvbi1sZWZ0JztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG5cclxuICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIFtzcmNdPVwiZGF0YS5pbWFnZS51cmxcIiBbYWx0XT1cImRhdGEuaW1hZ2UuYWx0VGV4dFwiIFtzaW1wb0ltYWdlRGlyZWN0aXZlXT1cInN0eWxlcz8uaW1hZ2VcIlxyXG4gICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiIGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cImNvbnRlbnQuc2hvd0ltYWdlXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiIFtzaW1wb1RleHRCYWNrZ3JvdW5kRGlyZWN0aXZlXT1cInN0eWxlcz8udGV4dEJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogd2hpdGU7XCIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBtYi0xXCIgW2lubmVySHRtbF09XCJkYXRhLmlucHV0VGV4dFswXS52YWx1ZVwiXHJcbiAgICAgICpuZ0lmPVwiY29udGVudC5zaG93SGVhZGluZ1wiPjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIiBjbGFzcz1cImJvZHktZGVzY1wiIFtpbm5lckh0bWxdPVwiZGF0YS5pbnB1dFRleHRbMDFdLnZhbHVlXCIgKm5nSWY9XCJjb250ZW50LnNob3dDb250ZW50XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkRhdGFdPVwiZGF0YT8uYnV0dG9uXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiIFtidXR0b25TdHlsZV09XCJzdHlsZXM/LmJ1dHRvblwiIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4gLS0+XHJcbjxkaXYgY2xhc3M9XCJ0b3AtY29udGFpbmVyXCIgIChjbGljayk9XCIoY29udGVudD8uZGlzcGxheT8uc2hvd0xpbmsgJiYgY29udGVudD8uZGlzcGxheT8ubGlua1R5cGUgPT09ICdMaXN0IEl0ZW0nID8gcmVkaXJlY3RUbygpIDogJycpXCJcclxuICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtaW1hZ2UnIDogY29udGVudC5kaXNwbGF5LnNob3dJbWFnZSA/ICd1cmwoJytkYXRhLmltYWdlLnVybCsnKScgOiAnJ31cIlxyXG4gIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiY29tcG9uZW50SWRcIj5cclxuICA8ZGl2IGNsYXNzPVwicG9wdWxhci10YWdcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3J9XCIgXHJcbiAgICAqbmdJZj1cImRhdGE/LmhpZ2hsaWdodD8uaGlnaGxpZ2h0ZWQgPT09IHRydWVcIj5cclxuICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJkYXRhLmhpZ2hsaWdodC5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiIFtpdGVtSW5kZXhdPVwiaXRlbUluZGV4XCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtzaW1wb0ltYWdlRGlyZWN0aXZlXT1cInN0eWxlcz8uaW1hZ2VcIiBbaWRdPVwiY29tcG9uZW50SWRcIiAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93SW1hZ2VcIiBcclxuICAgIFtzaW1wb09iamVjdFBvc2l0aW9uXT1cImRhdGE/LmltYWdlPy5wb3NpdGlvblwiPjwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiXHJcbiAgICBbc2ltcG9UZXh0QmFja2dyb3VuZERpcmVjdGl2ZV09XCJjb250ZW50LmRpc3BsYXkuc2hvd0ltYWdlID8gc3R5bGVzPy50ZXh0QmFja2dyb3VuZCA6ICcnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZWRpdW0gbWItMSBsaC00MFwiICAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93SGVhZGluZ1wiPlxyXG4gICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiZGF0YS5pbnB1dFRleHRbMF0udmFsdWUgXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIiBbc2VjdGlvbklkXT1cImNvbXBvbmVudElkXCIgW2lucHV0VGV4dEluZGV4XT1cIjBcIiBbaXRlbUluZGV4XT1cIml0ZW1JbmRleFwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm9keS1kZXNjXCIgKm5nSWY9XCJjb250ZW50LmRpc3BsYXkuc2hvd0NvbnRlbnRcIj5cclxuICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImRhdGEuaW5wdXRUZXh0WzFdLnZhbHVlIFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiIFtpbnB1dFRleHRJbmRleF09XCIxXCIgW2l0ZW1JbmRleF09XCJpdGVtSW5kZXhcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXdyYXBwZXIgdy0xMDBcIiBbbmdDbGFzc109XCJnZXRCdXR0b25BbGlnbm1lbnRDbGFzcygpXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50LmRpc3BsYXkuc2hvd0xpbmsgJiYgY29udGVudC5kaXNwbGF5LmxpbmtUeXBlID09PSAnQnV0dG9uJ1wiXHJcbiAgICAgICAgW3NpbXBvSG92ZXJBbmltYXRpb25dPVwiZ2V0Q29udGVudEFuaW1hdGlvbigpXCIgY2xhc3M9XCJidXR0b24taW5uZXJcIj5cclxuICAgICAgICA8YXBwLWJ1dHRvbi1lbGVtZW50IFtidXR0b25Db250ZW50XT1cImRhdGEuYnV0dG9uXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiXHJcbiAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uID8gYnV0dG9uLmlkIDogJydcIiBbY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2VkaXRdPVwiZWRpdFwiPlxyXG4gICAgICAgIDwvYXBwLWJ1dHRvbi1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLW9mLWltYWdlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90b3Atb2YtaW1hZ2UtY2FyZC90b3Atb2YtaW1hZ2UtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RvcC1vZi1pbWFnZS1jYXJkL3RvcC1vZi1pbWFnZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFrQm5GLE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRSxDQUFDO0lBQ25ELFFBQVE7SUFDUixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVDLFVBQVU7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ25DLEtBQUssTUFBTTtnQkFDVCxPQUFPLGFBQWEsQ0FBQztZQUN2QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sZUFBZSxDQUFDO1lBQ3pCO2dCQUNFLE9BQU8sYUFBYSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDOytHQWhDVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix1T0M1QnBDLCtxR0E0Q0Esdy9CRDVCSSxZQUFZLHNUQUNaLHVCQUF1QixtR0FDdkIsZUFBZSxtRkFDZixnQ0FBZ0MscUhBQ2hDLG1CQUFtQiw2TEFDbkIsb0JBQW9CLDJNQUNwQix1QkFBdUIsbUdBQ3ZCLHVCQUF1Qjs7NEZBS2QsdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGdDQUFnQzt3QkFDaEMsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3FCQUN4QjtrRkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSG92ZXJBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItYW5pbWF0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLXBvc2l0aW9uLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRvcC1vZi1pbWFnZS1jYXJkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICBIb3ZlckFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9wLW9mLWltYWdlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90b3Atb2YtaW1hZ2UtY2FyZC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9wT2ZJbWFnZUNhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBzdHlsZXM6IGFueTtcclxuICBASW5wdXQoKSBjb250ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY29tcG9uZW50SWQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYnV0dG9uPzogQnV0dG9uTW9kZWw7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGl0ZW1JbmRleD86IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlKXt9XHJcbiAgbmdPbkluaXQoKXtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnRBbmltYXRpb24oKXtcclxuICAgIHJldHVybiB7IGNvbnRlbnRBbmltYXRpb24gOiB0aGlzLnN0eWxlcz8uY29udGVudEFuaW1hdGlvbn07XHJcbiAgfVxyXG5cclxuICAgIHJlZGlyZWN0VG8oKXtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5idXR0b25SZWRpcmVjdGlvbi5lbWl0KHtkYXRhOiB0aGlzLmRhdGEuYnV0dG9ufSk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25BbGlnbm1lbnRDbGFzcygpIHtcclxuICAgIHN3aXRjaCAodGhpcy5zdHlsZXM/LmxheW91dD8uYWxpZ24pIHtcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgcmV0dXJuICdidXR0b24tbGVmdCc7XHJcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICByZXR1cm4gJ2J1dHRvbi1yaWdodCc7XHJcbiAgICAgIGNhc2UgJ2NlbnRlcic6XHJcbiAgICAgICAgcmV0dXJuICdidXR0b24tY2VudGVyJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2J1dHRvbi1sZWZ0JztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG5cclxuICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIFtzcmNdPVwiZGF0YS5pbWFnZS51cmxcIiBbYWx0XT1cImRhdGEuaW1hZ2UuYWx0VGV4dFwiIFtzaW1wb0ltYWdlRGlyZWN0aXZlXT1cInN0eWxlcz8uaW1hZ2VcIlxyXG4gICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiIGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cImNvbnRlbnQuc2hvd0ltYWdlXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiIFtzaW1wb1RleHRCYWNrZ3JvdW5kRGlyZWN0aXZlXT1cInN0eWxlcz8udGV4dEJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogd2hpdGU7XCIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBtYi0xXCIgW2lubmVySHRtbF09XCJkYXRhLmlucHV0VGV4dFswXS52YWx1ZVwiXHJcbiAgICAgICpuZ0lmPVwiY29udGVudC5zaG93SGVhZGluZ1wiPjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIiBjbGFzcz1cImJvZHktZGVzY1wiIFtpbm5lckh0bWxdPVwiZGF0YS5pbnB1dFRleHRbMDFdLnZhbHVlXCIgKm5nSWY9XCJjb250ZW50LnNob3dDb250ZW50XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkRhdGFdPVwiZGF0YT8uYnV0dG9uXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiIFtidXR0b25TdHlsZV09XCJzdHlsZXM/LmJ1dHRvblwiIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4gLS0+XHJcbjxkaXYgY2xhc3M9XCJ0b3AtY29udGFpbmVyXCIgIChjbGljayk9XCIoY29udGVudD8uZGlzcGxheT8uc2hvd0xpbmsgJiYgY29udGVudD8uZGlzcGxheT8ubGlua1R5cGUgPT09ICdMaXN0IEl0ZW0nID8gcmVkaXJlY3RUbygpIDogJycpXCJcclxuICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtaW1hZ2UnIDogY29udGVudC5kaXNwbGF5LnNob3dJbWFnZSA/ICd1cmwoJytkYXRhLmltYWdlLnVybCsnKScgOiAnJ31cIlxyXG4gIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiY29tcG9uZW50SWRcIj5cclxuICA8ZGl2IGNsYXNzPVwicG9wdWxhci10YWdcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3J9XCIgXHJcbiAgICAqbmdJZj1cImRhdGE/LmhpZ2hsaWdodD8uaGlnaGxpZ2h0ZWQgPT09IHRydWVcIj5cclxuICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJkYXRhLmhpZ2hsaWdodC5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiIFtpdGVtSW5kZXhdPVwiaXRlbUluZGV4XCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtzaW1wb0ltYWdlRGlyZWN0aXZlXT1cInN0eWxlcz8uaW1hZ2VcIiBbaWRdPVwiY29tcG9uZW50SWRcIiAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93SW1hZ2VcIiBcclxuICAgIFtzaW1wb09iamVjdFBvc2l0aW9uXT1cImRhdGE/LmltYWdlPy5wb3NpdGlvblwiPjwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiXHJcbiAgICBbc2ltcG9UZXh0QmFja2dyb3VuZERpcmVjdGl2ZV09XCJjb250ZW50LmRpc3BsYXkuc2hvd0ltYWdlID8gc3R5bGVzPy50ZXh0QmFja2dyb3VuZCA6ICcnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZWRpdW0gbWItMSBsaC00MFwiICAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93SGVhZGluZ1wiPlxyXG4gICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiZGF0YS5pbnB1dFRleHRbMF0udmFsdWUgXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIiBbc2VjdGlvbklkXT1cImNvbXBvbmVudElkXCIgW2lucHV0VGV4dEluZGV4XT1cIjBcIiBbaXRlbUluZGV4XT1cIml0ZW1JbmRleFwiIFtpc1JURV09XCJkYXRhLmlucHV0VGV4dFswXT8uaXNSVEVcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImJvZHktZGVzY1wiICpuZ0lmPVwiY29udGVudC5kaXNwbGF5LnNob3dDb250ZW50XCI+XHJcbiAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJkYXRhLmlucHV0VGV4dFsxXS52YWx1ZSBcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiY29tcG9uZW50SWRcIiBbaW5wdXRUZXh0SW5kZXhdPVwiMVwiIFtpdGVtSW5kZXhdPVwiaXRlbUluZGV4XCIgW2lzUlRFXT1cImRhdGEuaW5wdXRUZXh0WzFdPy5pc1JURVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlciB3LTEwMFwiIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkFsaWdubWVudENsYXNzKClcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93TGluayAmJiBjb250ZW50LmRpc3BsYXkubGlua1R5cGUgPT09ICdCdXR0b24nXCJcclxuICAgICAgICBbc2ltcG9Ib3ZlckFuaW1hdGlvbl09XCJnZXRDb250ZW50QW5pbWF0aW9uKClcIiBjbGFzcz1cImJ1dHRvbi1pbm5lclwiPlxyXG4gICAgICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkNvbnRlbnRdPVwiZGF0YS5idXR0b25cIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uPy5zdHlsZXNcIiBbc2VjdGlvbklkXT1cImNvbXBvbmVudElkXCJcclxuICAgICAgICAgIFtidXR0b25JZF09XCJidXR0b24gPyBidXR0b24uaWQgOiAnJ1wiIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgIFtiYWNrZ3JvdW5kSW5mb109XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbZWRpdF09XCJlZGl0XCI+XHJcbiAgICAgICAgPC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
32
32
  name: 'formateAmount',
33
33
  }]
34
34
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1vdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3BpcGVzL2Ftb3VudC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQWFsRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixTQUFTLENBQUMsS0FBc0IsRUFBRSxTQUF3QixLQUFLO1FBRTNELElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBZ0IsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUFnQixFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDakQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBa0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNuRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOytHQW5CUSxhQUFhOzZHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuY29uc3QgZW51bSBBTU9VTlQge1xuICAgIExBS0hTID0gMTAwMDAwLFxuICAgIENST1JFID0gMTAwMDAwMDAsXG4gICAgTUlMTElPTiA9IDEwMDAwMDBcbn1cblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAnZm9ybWF0ZUFtb3VudCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1hdGVBbW91bnQgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBzeXN0ZW06IFwiSU5EXCIgfCBcIklOVFwiID0gXCJJTkRcIik6IHN0cmluZyB7XG5cbiAgICAgICAgaWYgKHN5c3RlbSA9PSBcIklORFwiKSB7XG4gICAgICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuQ1JPUkUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKE51bWJlcih2YWx1ZSkgLyBBTU9VTlQuQ1JPUkUpICsgJ2NyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuTEFLSFMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKE51bWJlcih2YWx1ZSkgLyBBTU9VTlQuTEFLSFMpICsgJ2xrJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuTUlMTElPTikge1xuICAgICAgICAgICAgICAgIHJldHVybiAoTnVtYmVyKHZhbHVlKSAvIEFNT1VOVC5NSUxMSU9OKSArICdtbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1vdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3BpcGVzL2Ftb3VudC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQWFsRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixTQUFTLENBQUMsS0FBc0IsRUFBRSxTQUF3QixLQUFLO1FBRTNELElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBZ0IsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUFnQixFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDakQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBa0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNuRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOytHQW5CUSxhQUFhOzZHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuY29uc3QgZW51bSBBTU9VTlQge1xyXG4gICAgTEFLSFMgPSAxMDAwMDAsXHJcbiAgICBDUk9SRSA9IDEwMDAwMDAwLFxyXG4gICAgTUlMTElPTiA9IDEwMDAwMDBcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgbmFtZTogJ2Zvcm1hdGVBbW91bnQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybWF0ZUFtb3VudCBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBzeXN0ZW06IFwiSU5EXCIgfCBcIklOVFwiID0gXCJJTkRcIik6IHN0cmluZyB7XHJcblxyXG4gICAgICAgIGlmIChzeXN0ZW0gPT0gXCJJTkRcIikge1xyXG4gICAgICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuQ1JPUkUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoTnVtYmVyKHZhbHVlKSAvIEFNT1VOVC5DUk9SRSkgKyAnY3InO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKE51bWJlcih2YWx1ZSkgPj0gQU1PVU5ULkxBS0hTKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKE51bWJlcih2YWx1ZSkgLyBBTU9VTlQuTEFLSFMpICsgJ2xrJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKE51bWJlcih2YWx1ZSkgPj0gQU1PVU5ULk1JTExJT04pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoTnVtYmVyKHZhbHVlKSAvIEFNT1VOVC5NSUxMSU9OKSArICdtbic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==