@posiwise/resource-module 0.0.131 → 0.0.133

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 (28) hide show
  1. package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +2 -2
  2. package/esm2022/lib/public/components/resource-blogs/resource-blog-top-banner/resource-blog-top-banner.component.mjs +2 -2
  3. package/esm2022/lib/public/components/resource-blogs/resource-blog.component.mjs +2 -2
  4. package/esm2022/lib/public/components/resource-case-studies/resource-case-studies.component.mjs +2 -2
  5. package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs +13 -4
  6. package/esm2022/lib/public/components/resource-edit-card/resource-edit-card.component.mjs +3 -3
  7. package/esm2022/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.mjs +2 -2
  8. package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +18 -11
  9. package/esm2022/lib/public/components/resource-post/related-resources/related-resources.component.mjs +3 -3
  10. package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +2 -2
  11. package/esm2022/lib/public/components/resource-release-notes/resource-release-notes-top-banner/resource-release-notes-top-banner.component.mjs +2 -2
  12. package/esm2022/lib/public/components/resource-top-banner-edit/resource-top-banner-edit.component.mjs +3 -3
  13. package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +2 -2
  14. package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +2 -2
  15. package/esm2022/lib/public/components/resource-videos/resource-videos-top-banner/resource-videos-top-banner.component.mjs +2 -2
  16. package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +2 -2
  17. package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +2 -2
  18. package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +2 -2
  19. package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +2 -2
  20. package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +3 -3
  21. package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +5 -4
  22. package/esm2022/lib/public/components/white-papers/white-papers-top-banner/white-papers-top-banner.component.mjs +2 -2
  23. package/fesm2022/posiwise-resource-module.mjs +71 -55
  24. package/fesm2022/posiwise-resource-module.mjs.map +1 -1
  25. package/lib/public/components/resource-company-card/resource-company-card.component.d.ts +4 -2
  26. package/lib/public/components/resource-integration/resource-integration.component.d.ts +1 -0
  27. package/lib/public/components/resources-hub/resources-hub.component.d.ts +1 -0
  28. package/package.json +1 -1
@@ -84,13 +84,13 @@ export class VaultSectionComponent extends AppBaseComponent {
84
84
  this.file = null;
85
85
  }
86
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: VaultSectionComponent, deps: [{ token: i0.Injector }, { token: i1.NgbModal }, { token: i2.AdminService }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: VaultSectionComponent, selector: "pw-vault-section", viewQueries: [{ propertyName: "editResourceModalRef", first: true, predicate: ["editResourceModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section class=\"vault-section\">\n <div class=\"skewed-bg\"></div>\n\n <!-- Edit Icon (top-right) -->\n\n <div class=\"container\">\n <div class=\"row align-items-center vault-row\">\n <!-- Left Content -->\n <div class=\"col-lg-6 col-12 text-content\">\n <div class=\"d-flex\">\n <h2 class=\"headline\">{{resourceTagLine || 'UPDATE ME ON ADMIN/DOMAINS MODULE'}}</h2>\n <i\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit tag-edit-icon in-page-edit-icon mt-4 ms-3 cursor-pointer\"\n title=\"Edit Resource\"\n (click)=\"openEditResourceModal()\"\n ></i>\n </div>\n <div class=\"description-content\">\n <p class=\"description\" [innerHTML]=\"resourceDescription || 'UPDATE ME ON ADMIN/DOMAINS MODULE.'\">\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"col-lg-6 col-12 img-wrapper\">\n <ng-container *ngIf=\"resourceImage; else noVideo\">\n <img [src]=\"resourceImage\" alt=\"Vault Mockup\" class=\"img-fluid\" />\n </ng-container>\n\n <ng-template #noVideo>\n <pw-no-data [withImage]=\"true\" [message]=\"'ADD ME ON ADMIN/DOMAINS MODULE' | transloco\"></pw-no-data>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n\n<!-- Edit Modal -->\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resources</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label class=\"form-label\">Tagline</label>\n <input [(ngModel)]=\"editingTagline\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Description</label>\n <textarea [(ngModel)]=\"editingDescription\" rows=\"4\" class=\"form-control\"></textarea>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Resource Image</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img\n [src]=\"image || 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100 mb-2\"\n alt=\"Resource Image\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ file || image ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image\"\n class=\"fa fa-trash delete-icon text-danger ms-2\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"\n style=\"cursor: pointer;\"></i>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveResourceContent(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file.</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: [".vault-section{position:relative;padding:5rem 0;color:#fff;background:linear-gradient(90deg,var(--first) 0%,#a8e1fb 100%);overflow:hidden}.vault-section:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:61%;background:#fff;clip-path:polygon(0 18%,100% 0%,100% 100%,0% 100%);z-index:1}.vault-section .container{position:relative;z-index:2}.vault-section .row{min-height:600px;align-items:center}.vault-section .text-content{max-width:550px;height:100%;display:flex;flex-direction:column;justify-content:center}.vault-section .text-content .headline{font-weight:500;color:#fff!important;font-size:4.5rem!important}.vault-section .text-content .description{font-size:2rem;line-height:3rem;font-weight:400;color:var(--text-color, black);margin-bottom:1rem}.vault-section .text-content .description strong{font-weight:700}.vault-section .text-content .cta-btn{display:inline-block;background:var(--text-color, black);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem;border:1px solid;box-shadow:none!important;border-color:var(--text-color, textColor)}.vault-section .text-content .cta-btn:hover{background-color:#fff!important;color:var(--text-color, black)!important}.vault-section .img-wrapper{text-align:center}.vault-section .img-wrapper img,.vault-section .img-wrapper pw-no-data{max-width:800px;max-height:800px;height:auto}@media (width >= 991px){.vault-section img,.vault-section pw-no-data{max-width:800px;width:100%;height:auto;position:relative;top:11.6rem}.vault-section .description-content{max-width:500px;position:absolute;margin-top:31rem!important}.vault-section .headline{margin-bottom:21rem!important}}@media (width >= 1100px){.vault-section img,.vault-section pw-no-data{left:25%}}@media (width >= 991px) and (width <= 1100px){.vault-section img,.vault-section pw-no-data{top:12.9rem!important;left:19%}}@media (width <= 991px){.vault-section .vault-row{text-align:center;justify-content:center}.vault-section img,.vault-section pw-no-data{top:5rem!important;position:relative}}@media (width <= 768px){.vault-section .text-content{text-align:center;margin-bottom:2rem;margin-top:3rem!important}.vault-section .text-content .headline{font-size:3rem!important}.vault-section .text-content .description{font-size:1.5rem;line-height:2rem}}.tag-edit-icon{margin-top:2rem!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "component", type: i5.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i6.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i7.TranslocoPipe, name: "transloco" }] }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: VaultSectionComponent, selector: "pw-vault-section", viewQueries: [{ propertyName: "editResourceModalRef", first: true, predicate: ["editResourceModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section class=\"vault-section\">\n <div class=\"skewed-bg\"></div>\n\n <!-- Edit Icon (top-right) -->\n\n <div class=\"container\">\n <div class=\"row align-items-center vault-row\">\n <!-- Left Content -->\n <div class=\"col-lg-6 col-12 text-content\">\n <div class=\"d-flex\">\n <h2 class=\"headline\">{{resourceTagLine || 'UPDATE ME ON ADMIN/DOMAINS MODULE'}}</h2>\n <i\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit tag-edit-icon in-page-edit-icon mt-4 ms-3 cursor-pointer\"\n title=\"Edit Resource\"\n (click)=\"openEditResourceModal()\"\n ></i>\n </div>\n <div class=\"description-content\">\n <p class=\"description\" [innerHTML]=\"resourceDescription || 'UPDATE ME ON ADMIN/DOMAINS MODULE.'\">\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"col-lg-6 col-12 img-wrapper\">\n <ng-container *ngIf=\"resourceImage; else noVideo\">\n <img [src]=\"resourceImage\" alt=\"Vault Mockup\" class=\"img-fluid\" />\n </ng-container>\n\n <ng-template #noVideo>\n <pw-no-data [withImage]=\"true\" [message]=\"'ADD ME ON ADMIN/DOMAINS MODULE' | transloco\"></pw-no-data>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n\n<!-- Edit Modal -->\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resources</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label class=\"form-label\">Tagline</label>\n <input [(ngModel)]=\"editingTagline\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Description</label>\n <textarea [(ngModel)]=\"editingDescription\" rows=\"4\" class=\"form-control\"></textarea>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Resource Image</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img\n [src]=\"image || 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100 mb-2\"\n alt=\"Resource Image\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ file || image ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"></i>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveResourceContent(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file.</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: [".vault-section{position:relative;padding:5rem 0;color:#fff;background:linear-gradient(90deg,var(--first) 0%,#a8e1fb 100%);overflow:hidden}.vault-section:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:61%;background:#fff;clip-path:polygon(0 18%,100% 0%,100% 100%,0% 100%);z-index:1}.vault-section .container{position:relative;z-index:2}.vault-section .row{min-height:600px;align-items:center}.vault-section .text-content{max-width:550px;height:100%;display:flex;flex-direction:column;justify-content:center}.vault-section .text-content .headline{font-weight:500;color:#fff!important;font-size:4.5rem!important}.vault-section .text-content .description{font-size:2rem;line-height:3rem;font-weight:400;color:var(--text-color, black);margin-bottom:1rem}.vault-section .text-content .description strong{font-weight:700}.vault-section .text-content .cta-btn{display:inline-block;background:var(--text-color, black);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem;border:1px solid;box-shadow:none!important;border-color:var(--text-color, textColor)}.vault-section .text-content .cta-btn:hover{background-color:#fff!important;color:var(--text-color, black)!important}.vault-section .img-wrapper{text-align:center}.vault-section .img-wrapper img,.vault-section .img-wrapper pw-no-data{max-width:800px;max-height:800px;height:auto}@media (width >= 991px){.vault-section img,.vault-section pw-no-data{max-width:800px;width:100%;height:auto;position:relative;top:11.6rem}.vault-section .description-content{max-width:500px;position:absolute;margin-top:31rem!important}.vault-section .headline{margin-bottom:21rem!important}}@media (width >= 1100px){.vault-section img,.vault-section pw-no-data{left:25%}}@media (width >= 991px) and (width <= 1100px){.vault-section img,.vault-section pw-no-data{top:12.9rem!important;left:19%}}@media (width <= 991px){.vault-section .vault-row{text-align:center;justify-content:center}.vault-section img,.vault-section pw-no-data{top:5rem!important;position:relative}}@media (width <= 768px){.vault-section .text-content{text-align:center;margin-bottom:2rem;margin-top:3rem!important}.vault-section .text-content .headline{font-size:3rem!important}.vault-section .text-content .description{font-size:1.5rem;line-height:2rem}}.tag-edit-icon{margin-top:2rem!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "component", type: i5.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i6.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i7.TranslocoPipe, name: "transloco" }] }); }
88
88
  }
89
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: VaultSectionComponent, decorators: [{
90
90
  type: Component,
91
- args: [{ selector: 'pw-vault-section', template: "<section class=\"vault-section\">\n <div class=\"skewed-bg\"></div>\n\n <!-- Edit Icon (top-right) -->\n\n <div class=\"container\">\n <div class=\"row align-items-center vault-row\">\n <!-- Left Content -->\n <div class=\"col-lg-6 col-12 text-content\">\n <div class=\"d-flex\">\n <h2 class=\"headline\">{{resourceTagLine || 'UPDATE ME ON ADMIN/DOMAINS MODULE'}}</h2>\n <i\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit tag-edit-icon in-page-edit-icon mt-4 ms-3 cursor-pointer\"\n title=\"Edit Resource\"\n (click)=\"openEditResourceModal()\"\n ></i>\n </div>\n <div class=\"description-content\">\n <p class=\"description\" [innerHTML]=\"resourceDescription || 'UPDATE ME ON ADMIN/DOMAINS MODULE.'\">\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"col-lg-6 col-12 img-wrapper\">\n <ng-container *ngIf=\"resourceImage; else noVideo\">\n <img [src]=\"resourceImage\" alt=\"Vault Mockup\" class=\"img-fluid\" />\n </ng-container>\n\n <ng-template #noVideo>\n <pw-no-data [withImage]=\"true\" [message]=\"'ADD ME ON ADMIN/DOMAINS MODULE' | transloco\"></pw-no-data>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n\n<!-- Edit Modal -->\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resources</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label class=\"form-label\">Tagline</label>\n <input [(ngModel)]=\"editingTagline\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Description</label>\n <textarea [(ngModel)]=\"editingDescription\" rows=\"4\" class=\"form-control\"></textarea>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Resource Image</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img\n [src]=\"image || 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100 mb-2\"\n alt=\"Resource Image\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ file || image ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image\"\n class=\"fa fa-trash delete-icon text-danger ms-2\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"\n style=\"cursor: pointer;\"></i>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveResourceContent(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file.</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: [".vault-section{position:relative;padding:5rem 0;color:#fff;background:linear-gradient(90deg,var(--first) 0%,#a8e1fb 100%);overflow:hidden}.vault-section:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:61%;background:#fff;clip-path:polygon(0 18%,100% 0%,100% 100%,0% 100%);z-index:1}.vault-section .container{position:relative;z-index:2}.vault-section .row{min-height:600px;align-items:center}.vault-section .text-content{max-width:550px;height:100%;display:flex;flex-direction:column;justify-content:center}.vault-section .text-content .headline{font-weight:500;color:#fff!important;font-size:4.5rem!important}.vault-section .text-content .description{font-size:2rem;line-height:3rem;font-weight:400;color:var(--text-color, black);margin-bottom:1rem}.vault-section .text-content .description strong{font-weight:700}.vault-section .text-content .cta-btn{display:inline-block;background:var(--text-color, black);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem;border:1px solid;box-shadow:none!important;border-color:var(--text-color, textColor)}.vault-section .text-content .cta-btn:hover{background-color:#fff!important;color:var(--text-color, black)!important}.vault-section .img-wrapper{text-align:center}.vault-section .img-wrapper img,.vault-section .img-wrapper pw-no-data{max-width:800px;max-height:800px;height:auto}@media (width >= 991px){.vault-section img,.vault-section pw-no-data{max-width:800px;width:100%;height:auto;position:relative;top:11.6rem}.vault-section .description-content{max-width:500px;position:absolute;margin-top:31rem!important}.vault-section .headline{margin-bottom:21rem!important}}@media (width >= 1100px){.vault-section img,.vault-section pw-no-data{left:25%}}@media (width >= 991px) and (width <= 1100px){.vault-section img,.vault-section pw-no-data{top:12.9rem!important;left:19%}}@media (width <= 991px){.vault-section .vault-row{text-align:center;justify-content:center}.vault-section img,.vault-section pw-no-data{top:5rem!important;position:relative}}@media (width <= 768px){.vault-section .text-content{text-align:center;margin-bottom:2rem;margin-top:3rem!important}.vault-section .text-content .headline{font-size:3rem!important}.vault-section .text-content .description{font-size:1.5rem;line-height:2rem}}.tag-edit-icon{margin-top:2rem!important}\n"] }]
91
+ args: [{ selector: 'pw-vault-section', template: "<section class=\"vault-section\">\n <div class=\"skewed-bg\"></div>\n\n <!-- Edit Icon (top-right) -->\n\n <div class=\"container\">\n <div class=\"row align-items-center vault-row\">\n <!-- Left Content -->\n <div class=\"col-lg-6 col-12 text-content\">\n <div class=\"d-flex\">\n <h2 class=\"headline\">{{resourceTagLine || 'UPDATE ME ON ADMIN/DOMAINS MODULE'}}</h2>\n <i\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit tag-edit-icon in-page-edit-icon mt-4 ms-3 cursor-pointer\"\n title=\"Edit Resource\"\n (click)=\"openEditResourceModal()\"\n ></i>\n </div>\n <div class=\"description-content\">\n <p class=\"description\" [innerHTML]=\"resourceDescription || 'UPDATE ME ON ADMIN/DOMAINS MODULE.'\">\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"col-lg-6 col-12 img-wrapper\">\n <ng-container *ngIf=\"resourceImage; else noVideo\">\n <img [src]=\"resourceImage\" alt=\"Vault Mockup\" class=\"img-fluid\" />\n </ng-container>\n\n <ng-template #noVideo>\n <pw-no-data [withImage]=\"true\" [message]=\"'ADD ME ON ADMIN/DOMAINS MODULE' | transloco\"></pw-no-data>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n\n<!-- Edit Modal -->\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resources</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label class=\"form-label\">Tagline</label>\n <input [(ngModel)]=\"editingTagline\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Description</label>\n <textarea [(ngModel)]=\"editingDescription\" rows=\"4\" class=\"form-control\"></textarea>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">Resource Image</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img\n [src]=\"image || 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100 mb-2\"\n alt=\"Resource Image\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ file || image ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"></i>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveResourceContent(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file.</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: [".vault-section{position:relative;padding:5rem 0;color:#fff;background:linear-gradient(90deg,var(--first) 0%,#a8e1fb 100%);overflow:hidden}.vault-section:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:61%;background:#fff;clip-path:polygon(0 18%,100% 0%,100% 100%,0% 100%);z-index:1}.vault-section .container{position:relative;z-index:2}.vault-section .row{min-height:600px;align-items:center}.vault-section .text-content{max-width:550px;height:100%;display:flex;flex-direction:column;justify-content:center}.vault-section .text-content .headline{font-weight:500;color:#fff!important;font-size:4.5rem!important}.vault-section .text-content .description{font-size:2rem;line-height:3rem;font-weight:400;color:var(--text-color, black);margin-bottom:1rem}.vault-section .text-content .description strong{font-weight:700}.vault-section .text-content .cta-btn{display:inline-block;background:var(--text-color, black);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem;border:1px solid;box-shadow:none!important;border-color:var(--text-color, textColor)}.vault-section .text-content .cta-btn:hover{background-color:#fff!important;color:var(--text-color, black)!important}.vault-section .img-wrapper{text-align:center}.vault-section .img-wrapper img,.vault-section .img-wrapper pw-no-data{max-width:800px;max-height:800px;height:auto}@media (width >= 991px){.vault-section img,.vault-section pw-no-data{max-width:800px;width:100%;height:auto;position:relative;top:11.6rem}.vault-section .description-content{max-width:500px;position:absolute;margin-top:31rem!important}.vault-section .headline{margin-bottom:21rem!important}}@media (width >= 1100px){.vault-section img,.vault-section pw-no-data{left:25%}}@media (width >= 991px) and (width <= 1100px){.vault-section img,.vault-section pw-no-data{top:12.9rem!important;left:19%}}@media (width <= 991px){.vault-section .vault-row{text-align:center;justify-content:center}.vault-section img,.vault-section pw-no-data{top:5rem!important;position:relative}}@media (width <= 768px){.vault-section .text-content{text-align:center;margin-bottom:2rem;margin-top:3rem!important}.vault-section .text-content .headline{font-size:3rem!important}.vault-section .text-content .description{font-size:1.5rem;line-height:2rem}}.tag-edit-icon{margin-top:2rem!important}\n"] }]
92
92
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.NgbModal }, { type: i2.AdminService }], propDecorators: { editResourceModalRef: [{
93
93
  type: ViewChild,
94
94
  args: ['editResourceModal']
95
95
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy92YXVsdC1zZWN0aW9uL3ZhdWx0LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZXMvdmF1bHQtc2VjdGlvbi92YXVsdC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQXNCdkQsWUFDSSxRQUFrQixFQUNELFlBQXNCLEVBQ3RCLFlBQTBCO1FBRTNDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBckIvQyxvQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztRQUMxRSxrQkFBYSxHQUFHLElB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UzsrQkFDSSxrQkFBa0I7K0hBS0ksb0JBQW9CO3NCQUFuRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRPS0VOX0tFWSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy12YXVsdC1zZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmF1bHQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmF1bHQtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZhdWx0U2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2VkaXRSZXNvdXJjZU1vZGFsJykgZWRpdFJlc291cmNlTW9kYWxSZWYhOiBUZW1wbGF0ZVJlZjxDdXN0b21VcGxvYWRlckNvbXBvbmVudD47XG5cbiAgICBjb21wYW55TmFtZTtcbiAgICByZXNvdXJjZVRhZ0xpbmUgPSB0aGlzLmFwcENvbmZpZy5wYWdlc19jb25maWcucmVzb3VyY2VzLnJlc291cmNlc190YWdsaW5lO1xuICAgIHJlc291cmNlSW1hZ2UgPSB0aGlzLmFwcENvbmZpZy5wYWdlc19jb25maWcucmVzb3VyY2VzLnJlc291cmNlc19pbWFnZS51cmw7XG4gICAgcmVzb3VyY2VEZXNjcmlwdGlvbiA9IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5yZXNvdXJjZXMucmVzb3VyY2VzX2Rlc2NyaXB0aW9uO1xuICAgIGRvbWFpbklkID0gdGhpcy5hcHBDb25maWcuZG9tYWluX2lkO1xuXG4gICAgaW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcbiAgICBpbWFnZU1vZGFsUmVmO1xuXG4gICAgZWRpdGluZ1RhZ2xpbmUgPSAnJztcbiAgICBlZGl0aW5nRGVzY3JpcHRpb24gPSAnJztcblxuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBzdWJzY3JpcHRpb25JZDogc3RyaW5nO1xuXG4gICAgdXNlcjogVXNlcjtcbiAgICBwcmV2aWV3UmVzb3VyY2VJbWFnZTogeyB1cmw6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJldmlld1Jlc291cmNlSW1hZ2UgPSB7XG4gICAgICAgICAgICB1cmw6IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5yZXNvdXJjZXMucmVzb3VyY2VzX2ltYWdlLnVybCB8fCAnJyxcbiAgICAgICAgICAgIG5hbWU6ICdyZXNvdXJjZXNfaW1hZ2UucG5nJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbXBhbnlOYW1lID0gdGhpcy5hcHBDb25maWc/LmNvbXBhbnkubmFtZTtcbiAgICB9XG5cbiAgICBvcGVuRWRpdFJlc291cmNlTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdGluZ1RhZ2xpbmUgPSB0aGlzLnJlc291cmNlVGFnTGluZTtcbiAgICAgICAgdGhpcy5lZGl0aW5nRGVzY3JpcHRpb24gPSB0aGlzLnJlc291cmNlRGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMuaW1hZ2UgPSB0aGlzLnJlc291cmNlSW1hZ2U7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5lZGl0UmVzb3VyY2VNb2RhbFJlZiwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBzYXZlUmVzb3VyY2VDb250ZW50KG1vZGFsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdWJzY3JpcHRpb25faWQnLCB0aGlzLnN1YnNjcmlwdGlvbklkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNvdXJjZXNfdGFnbGluZScsIHRoaXMuZWRpdGluZ1RhZ2xpbmUgfHwgJycpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlc19kZXNjcmlwdGlvbicsIHRoaXMuZWRpdGluZ0Rlc2NyaXB0aW9uIHx8ICcnKTtcblxuICAgICAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlc19pbWFnZScsIHRoaXMuZmlsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaW1hZ2UpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVtb3ZlX3Jlc291cmNlc19pbWFnZScsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UudXBkYXRlRG9tYWluQ29uZmlnKHRoaXMuYXBwQ29uZmlnPy5kb21haW5faWQsIGZvcm1EYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZVRhZ0xpbmUgPSB0aGlzLmVkaXRpbmdUYWdsaW5lO1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZURlc2NyaXB0aW9uID0gdGhpcy5lZGl0aW5nRGVzY3JpcHRpb247XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlSW1hZ2UgPSB0aGlzLmltYWdlO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdSZXNvdXJjZXMgdXBkYXRlZCcpO1xuICAgICAgICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlbkltYWdlTW9kYWwobW9kYWxUZW1wbGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsVGVtcGxhdGUsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcgfSk7XG4gICAgfVxuXG4gICAgb25JbWFnZVNlbGVjdGVkKGJhc2U2NDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBiYXNlNjQ7XG4gICAgICAgIHRoaXMuZmlsZSA9IEhlbHBlclNlcnZpY2UuY29udmVydEJhc2U2NFRvRmlsZShiYXNlNjQpO1xuICAgICAgICB0aGlzLmltYWdlTW9kYWxSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSW1hZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwidmF1bHQtc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwic2tld2VkLWJnXCI+PC9kaXY+XG5cbiAgPCEtLSBFZGl0IEljb24gKHRvcC1yaWdodCkgLS0+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIHZhdWx0LXJvd1wiPlxuICAgICAgPCEtLSBMZWZ0IENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIHRleHQtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGxpbmVcIj57e3Jlc291cmNlVGFnTGluZSB8fCAnVVBEQVRFIE1FIE9OIEFETUlOL0RPTUFJTlMgTU9EVUxFJ319PC9oMj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCB0YWctZWRpdC1pY29uIGluLXBhZ2UtZWRpdC1pY29uIG10LTQgbXMtMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgdGl0bGU9XCJFZGl0IFJlc291cmNlXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkVkaXRSZXNvdXJjZU1vZGFsKClcIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwicmVzb3VyY2VEZXNjcmlwdGlvbiB8fCAnVVBEQVRFIE1FIE9OIEFETUlOL0RPTUFJTlMgTU9EVUxFLidcIj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFJpZ2h0IENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIGltZy13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNvdXJjZUltYWdlOyBlbHNlIG5vVmlkZW9cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwicmVzb3VyY2VJbWFnZVwiIGFsdD1cIlZhdWx0IE1vY2t1cFwiIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub1ZpZGVvPlxuICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidBREQgTUUgT04gQURNSU4vRE9NQUlOUyBNT0RVTEUnIHwgdHJhbnNsb2NvXCI+PC9wdy1uby1kYXRhPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48IS0tIEVkaXQgTW9kYWwgLS0+XG48bmctdGVtcGxhdGUgI2VkaXRSZXNvdXJjZU1vZGFsIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+RWRpdCBSZXNvdXJjZXM8L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlRhZ2xpbmU8L2xhYmVsPlxuICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZWRpdGluZ1RhZ2xpbmVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJlZGl0aW5nRGVzY3JpcHRpb25cIiByb3dzPVwiNFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlc291cmNlIEltYWdlPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbc3JjXT1cImltYWdlIHx8ICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZSB3LTEwMCBtYi0yXCJcbiAgICAgICAgICBhbHQ9XCJSZXNvdXJjZSBJbWFnZVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50LCAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZycpXCIgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiPlxuICAgICAgICAgICAge3sgZmlsZSB8fCBpbWFnZSA/ICdFZGl0JyA6ICdBZGQnIH19IFBpY3R1cmVcbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGkgKm5nSWY9XCJpbWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyIG1zLTJcIlxuICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgSW1hZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlSW1hZ2UoKVwiXG4gICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVSZXNvdXJjZUNvbnRlbnQobW9kYWwpXCI+U2F2ZTwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cblxuPG5nLXRlbXBsYXRlICNpbWFnZUNyb3BDb250ZW50IGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+VXBsb2FkIFBpY3R1cmU8L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8c21hbGw+WW91IGNhbiB1cGxvYWQgYSBKUEcsIEdJRiwgb3IgUE5HIGZpbGUuPC9zbWFsbD5cbiAgICA8cHctaW1hZ2UtY3JvcHBlclxuICAgICAgW2FzcGVjdFJhdGlvXT1cIidkeW5hbWljJ1wiXG4gICAgICAoaW1hZ2VTZWxlY3Rpb25FdmVudCk9XCJvbkltYWdlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJtb2RhbC5jbG9zZSgpXCI+XG4gICAgPC9wdy1pbWFnZS1jcm9wcGVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy92YXVsdC1zZWN0aW9uL3ZhdWx0LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZXMvdmF1bHQtc2VjdGlvbi92YXVsdC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQXNCdkQsWUFDSSxRQUFrQixFQUNELFlBQXNCLEVBQ3RCLFlBQTBCO1FBRTNDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBckIvQyxvQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztRQUMxRSxrQkFBYSxHQUFHLElB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UzsrQkFDSSxrQkFBa0I7K0hBS0ksb0JBQW9CO3NCQUFuRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRPS0VOX0tFWSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy12YXVsdC1zZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmF1bHQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmF1bHQtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZhdWx0U2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2VkaXRSZXNvdXJjZU1vZGFsJykgZWRpdFJlc291cmNlTW9kYWxSZWYhOiBUZW1wbGF0ZVJlZjxDdXN0b21VcGxvYWRlckNvbXBvbmVudD47XG5cbiAgICBjb21wYW55TmFtZTtcbiAgICByZXNvdXJjZVRhZ0xpbmUgPSB0aGlzLmFwcENvbmZpZy5wYWdlc19jb25maWcucmVzb3VyY2VzLnJlc291cmNlc190YWdsaW5lO1xuICAgIHJlc291cmNlSW1hZ2UgPSB0aGlzLmFwcENvbmZpZy5wYWdlc19jb25maWcucmVzb3VyY2VzLnJlc291cmNlc19pbWFnZS51cmw7XG4gICAgcmVzb3VyY2VEZXNjcmlwdGlvbiA9IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5yZXNvdXJjZXMucmVzb3VyY2VzX2Rlc2NyaXB0aW9uO1xuICAgIGRvbWFpbklkID0gdGhpcy5hcHBDb25maWcuZG9tYWluX2lkO1xuXG4gICAgaW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcbiAgICBpbWFnZU1vZGFsUmVmO1xuXG4gICAgZWRpdGluZ1RhZ2xpbmUgPSAnJztcbiAgICBlZGl0aW5nRGVzY3JpcHRpb24gPSAnJztcblxuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBzdWJzY3JpcHRpb25JZDogc3RyaW5nO1xuXG4gICAgdXNlcjogVXNlcjtcbiAgICBwcmV2aWV3UmVzb3VyY2VJbWFnZTogeyB1cmw6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJldmlld1Jlc291cmNlSW1hZ2UgPSB7XG4gICAgICAgICAgICB1cmw6IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5yZXNvdXJjZXMucmVzb3VyY2VzX2ltYWdlLnVybCB8fCAnJyxcbiAgICAgICAgICAgIG5hbWU6ICdyZXNvdXJjZXNfaW1hZ2UucG5nJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbXBhbnlOYW1lID0gdGhpcy5hcHBDb25maWc/LmNvbXBhbnkubmFtZTtcbiAgICB9XG5cbiAgICBvcGVuRWRpdFJlc291cmNlTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdGluZ1RhZ2xpbmUgPSB0aGlzLnJlc291cmNlVGFnTGluZTtcbiAgICAgICAgdGhpcy5lZGl0aW5nRGVzY3JpcHRpb24gPSB0aGlzLnJlc291cmNlRGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMuaW1hZ2UgPSB0aGlzLnJlc291cmNlSW1hZ2U7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5lZGl0UmVzb3VyY2VNb2RhbFJlZiwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBzYXZlUmVzb3VyY2VDb250ZW50KG1vZGFsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdWJzY3JpcHRpb25faWQnLCB0aGlzLnN1YnNjcmlwdGlvbklkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNvdXJjZXNfdGFnbGluZScsIHRoaXMuZWRpdGluZ1RhZ2xpbmUgfHwgJycpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlc19kZXNjcmlwdGlvbicsIHRoaXMuZWRpdGluZ0Rlc2NyaXB0aW9uIHx8ICcnKTtcblxuICAgICAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlc19pbWFnZScsIHRoaXMuZmlsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaW1hZ2UpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVtb3ZlX3Jlc291cmNlc19pbWFnZScsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UudXBkYXRlRG9tYWluQ29uZmlnKHRoaXMuYXBwQ29uZmlnPy5kb21haW5faWQsIGZvcm1EYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZVRhZ0xpbmUgPSB0aGlzLmVkaXRpbmdUYWdsaW5lO1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZURlc2NyaXB0aW9uID0gdGhpcy5lZGl0aW5nRGVzY3JpcHRpb247XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlSW1hZ2UgPSB0aGlzLmltYWdlO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdSZXNvdXJjZXMgdXBkYXRlZCcpO1xuICAgICAgICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlbkltYWdlTW9kYWwobW9kYWxUZW1wbGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsVGVtcGxhdGUsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcgfSk7XG4gICAgfVxuXG4gICAgb25JbWFnZVNlbGVjdGVkKGJhc2U2NDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBiYXNlNjQ7XG4gICAgICAgIHRoaXMuZmlsZSA9IEhlbHBlclNlcnZpY2UuY29udmVydEJhc2U2NFRvRmlsZShiYXNlNjQpO1xuICAgICAgICB0aGlzLmltYWdlTW9kYWxSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSW1hZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwidmF1bHQtc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwic2tld2VkLWJnXCI+PC9kaXY+XG5cbiAgPCEtLSBFZGl0IEljb24gKHRvcC1yaWdodCkgLS0+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIHZhdWx0LXJvd1wiPlxuICAgICAgPCEtLSBMZWZ0IENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIHRleHQtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGxpbmVcIj57e3Jlc291cmNlVGFnTGluZSB8fCAnVVBEQVRFIE1FIE9OIEFETUlOL0RPTUFJTlMgTU9EVUxFJ319PC9oMj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCB0YWctZWRpdC1pY29uIGluLXBhZ2UtZWRpdC1pY29uIG10LTQgbXMtMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgdGl0bGU9XCJFZGl0IFJlc291cmNlXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkVkaXRSZXNvdXJjZU1vZGFsKClcIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwicmVzb3VyY2VEZXNjcmlwdGlvbiB8fCAnVVBEQVRFIE1FIE9OIEFETUlOL0RPTUFJTlMgTU9EVUxFLidcIj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFJpZ2h0IENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIGltZy13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNvdXJjZUltYWdlOyBlbHNlIG5vVmlkZW9cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwicmVzb3VyY2VJbWFnZVwiIGFsdD1cIlZhdWx0IE1vY2t1cFwiIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub1ZpZGVvPlxuICAgICAgICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidBREQgTUUgT04gQURNSU4vRE9NQUlOUyBNT0RVTEUnIHwgdHJhbnNsb2NvXCI+PC9wdy1uby1kYXRhPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48IS0tIEVkaXQgTW9kYWwgLS0+XG48bmctdGVtcGxhdGUgI2VkaXRSZXNvdXJjZU1vZGFsIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+RWRpdCBSZXNvdXJjZXM8L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlRhZ2xpbmU8L2xhYmVsPlxuICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZWRpdGluZ1RhZ2xpbmVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJlZGl0aW5nRGVzY3JpcHRpb25cIiByb3dzPVwiNFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlc291cmNlIEltYWdlPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbc3JjXT1cImltYWdlIHx8ICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZSB3LTEwMCBtYi0yXCJcbiAgICAgICAgICBhbHQ9XCJSZXNvdXJjZSBJbWFnZVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50LCAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZycpXCIgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiPlxuICAgICAgICAgICAge3sgZmlsZSB8fCBpbWFnZSA/ICdFZGl0JyA6ICdBZGQnIH19IFBpY3R1cmVcbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGkgKm5nSWY9XCJpbWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgSW1hZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlSW1hZ2UoKVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZVJlc291cmNlQ29udGVudChtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cblxuXG48bmctdGVtcGxhdGUgI2ltYWdlQ3JvcENvbnRlbnQgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5VcGxvYWQgUGljdHVyZTwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxzbWFsbD5Zb3UgY2FuIHVwbG9hZCBhIEpQRywgR0lGLCBvciBQTkcgZmlsZS48L3NtYWxsPlxuICAgIDxwdy1pbWFnZS1jcm9wcGVyXG4gICAgICBbYXNwZWN0UmF0aW9dPVwiJ2R5bmFtaWMnXCJcbiAgICAgIChpbWFnZVNlbGVjdGlvbkV2ZW50KT1cIm9uSW1hZ2VTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cIm1vZGFsLmNsb3NlKClcIj5cbiAgICA8L3B3LWltYWdlLWNyb3BwZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -53,7 +53,7 @@ export class ResourceHubComponent extends AppBaseComponent {
53
53
  const data = res ? JSON.parse(res) : null;
54
54
  this.subscriptionId = data?.subscriptionId;
55
55
  });
56
- this.userService.getUserInfo().subscribe(data => {
56
+ this.userSub = this.userService.getUserInfo().subscribe(data => {
57
57
  this.user = data;
58
58
  });
59
59
  }
@@ -170,16 +170,17 @@ export class ResourceHubComponent extends AppBaseComponent {
170
170
  return '';
171
171
  }
172
172
  ngOnDestroy() {
173
+ this.userSub?.unsubscribe();
173
174
  super.ngOnDestroy();
174
175
  }
175
176
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHubComponent, deps: [{ token: i1.ResourceService }, { token: i2.TagService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
176
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceHubComponent, selector: "pw-posts-list", host: { listeners: { "window:scroll": "onWindowScroll()" } }, usesInheritance: true, ngImport: i0, template: "<pw-resource-header></pw-resource-header>\n<div class=\"all-posts py-5\">\n\n <div class=\"row mt-1 mb-4 px-2\">\n <div class=\"col-md-8\">\n </div>\n <div class=\"col-md-4\">\n <div class=\"text-end mt-0 mt-sm-3 d-flex\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.SuperAdmin']\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer mt-2 me-3\"\n (click)=\"navigateToTagList()\"\n title=\"Edit Logo\"></i>\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\" [(ngModel)]=\"searchTextItems\" pInputText size=\"50\" placeholder=\"Search resources...\"\n (input)=\"onSearch(1)\"\n class=\"search-input top-search-input\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"row resource-row\">\n <!-- All Resources Card -->\n <div class=\"col-md-3 col-sm-6 mb-4\">\n <div class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"getPosts(1, 20, true)\"\n [ngClass]=\"{ 'selected': selectedTags.length === 0 }\"\n (click)=\"getPosts(1, 20, true)\">\n <i class=\"fa fa-layer-group resource-icon me-3\"></i>\n <span class=\"resource-text\">All Resources</span>\n </div>\n </div>\n\n <!-- Dynamic Tags -->\n <div class=\"col-md-3 col-sm-6 mb-4\"\n *ngFor=\"let tag of tags\">\n <div\n class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"tagPost(tag)\"\n [ngClass]=\"{ 'selected': isSelected(tag.id) }\"\n (click)=\"tagPost(tag)\">\n <i *ngIf=\"tag?.icon_name\" class=\"fa\" [ngClass]=\"tag.icon_name + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div>\n <div class=\"blog-list\">\n <div class=\"row mt-4 mb-5 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\">\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"post?.id\"\n [resourceData]=\"post\"\n (updated)=\"getPosts(1, pageSize)\">\n </pw-resource-edit-card>\n <div class=\"list-blog-image\" [routerLink]=\"['/resources/view', post.slug]\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"tag-div\">\n <div class=\"author d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown position-relative d-flex justify-content-end\" (clickOutside)=\"post.showDropdown = false\">\n <div class=\"three-dots-wrapper\" (keydown.enter)=\"toggleDropdown($event, post)\" (click)=\"toggleDropdown($event, post)\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </div>\n\n <div class=\"dropdown-menu show\"\n *ngIf=\"post.showDropdown\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\"></i> Share Post\n </a>\n </div>\n </div>\n\n </div>\n </div>\n <h4 [routerLink]=\"['/resources/view', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resources/view', post.slug]\"\n class=\"body mb-3 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-auto mb-3\">\n <ng-container *ngIf=\"post?.tags?.length\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(0, 4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"post.expandedTags\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n </ng-container>\n\n <span *ngIf=\"post?.tags?.length > 4\"\n (click)=\"post.expandedTags = !post.expandedTags\"\n (keydown.enter)=\"post.expandedTags = !post.expandedTags\"\n class=\"fw-bold cursor-pointer m-1\"\n style=\"font-size: 1.2rem;\">...</span>\n </ng-container>\n </div>\n\n\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resources/view', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resources/view', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <pw-no-data [withImage]=\"true\" message=\"We couldn't find any resources.\" > </pw-no-data>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}body{background:#fff}.edit-card .in-page-edit-icon{margin-top:1rem!important}.blog-listing{border:1px solid rgb(238,238,238);cursor:pointer;box-shadow:0 4px 12px #00000026}.all-posts{margin:2.5em auto 0;max-width:980px;padding:14px 20px;width:100%}.tag-div{height:100%;display:flex;flex-direction:column;justify-content:space-between}ul.tags{display:inline-flex;font-size:16px;font-weight:400}ul.tags li{color:#337ab7;cursor:pointer;font-weight:600;margin-right:20px}ul.tags li:hover{color:#000}.search{position:relative}.search input{border:0;border-bottom:1px solid rgb(213,206,206)}.search i{position:absolute;right:5px}.scroll-container{max-height:70vh;overflow-y:auto}.blog-list .blog-listing h4{color:#000;font:28px/1.3 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing h4:hover{color:#0045c7}.blog-list .blog-listing p.body{color:#b3b3b3;font:16px/1.4 Roboto,sans-serif;transition:all .5s;min-height:120px!important;word-break:break-word;overflow-wrap:break-word;white-space:normal}.blog-list .blog-listing p.body:hover{color:#0045c7}.blog-list .blog-listing p.body p{color:inherit;font:inherit;transition:inherit}.blog-list .blog-listing p.body p:hover{color:#0045c7}.blog-list .blog-listing .list-blog-image img{padding:7px 25px 25px}.blog-list .blog-listing .author{padding-top:1.5rem}.blog-list .blog-listing .author .avatar-image{border:1px solid rgb(0,0,0);border-radius:50px;height:50px;clip-path:circle(50% at 50% 50%);width:50px}.blog-list .blog-listing .author .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.blog-list .blog-listing .author .avatar-image .default-user-image{width:50px}.blog-list .blog-listing .author .author-name p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.blog-list .blog-listing .author .author-name p.name:hover{color:#0045c7}.blog-list .blog-listing .author .author-name p.name i{color:#000}.blog-list .blog-listing .author .author-name ul li{display:inline-block;padding-right:10px;vertical-align:middle}.blog-list .blog-listing .author .author-name ul li a{color:#b3b3b3;font:12px/1 Roboto,sans-serif}.blog-list .blog-listing .author .share-post{flex-grow:3;position:relative;text-align:right}.blog-list .blog-listing .author .share-post i{color:var(--first)}.blog-list .blog-listing .author .share-post .dropdown-menu{border:0 0;box-shadow:0 3px 8px #0003;left:auto!important;right:12px;top:26px!important;transform:translate(0)!important}.blog-list .blog-listing .blog-view{border-top:1px solid rgb(238,238,238)}.blog-list .blog-listing .blog-view ul li{color:#b3b3b3;font:12px/1 Roboto,sans-serif;padding-right:14px}.blog-list .blog-listing .blog-view ul li a{color:inherit;font:inherit;transition:all .5s}.blog-list .blog-listing .blog-view ul li a:hover{color:#0045c7}.blog-list .blog-listing .blog-view ul li:last-child{flex-grow:3;padding-right:0;text-align:right}.blog-list .blog-listing .blog-view ul li:last-child i{color:#e84a43;font-size:14px}@media only screen and (width <= 1024px){.cust-mt{padding:14px 5px}.cust-mt .blog-list .blog-listing h4{font:20px/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body{font:.9rem/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body p{font:inherit}.cust-mt .blog-list .blog-listing .blog-image{height:300px}}@media only screen and (width <= 767px){.blog-list .blog-listing{height:auto;max-height:none;overflow:visible}.blog-list .blog-listing .blog-view{padding-bottom:1rem}}@media (width >= 768px){.blog-view{bottom:0;width:92%}}.post-body-text:hover{color:var(--titles)!important}.resource-card{border:2px dashed #d4d4d4;border-radius:16px;background-color:#fff;transition:box-shadow .3s ease;cursor:pointer;min-height:95px;padding:1.5rem!important}.resource-card:hover{box-shadow:0 0 30px #00000014}.selected{border:4px dashed #d4d4d4;border-color:var(--first)!important}.resource-icon{font-size:2.5rem;color:var(--first)}.resource-text{font-size:1.4rem;font-weight:500;color:var(--text-color);line-height:2rem}.three-dots-wrapper{width:32px;height:32px;display:flex;margin-top:.25rem!important;justify-content:center;cursor:pointer;position:relative;z-index:2}\n", ".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ResourceHeaderComponent, selector: "pw-resource-header" }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i5.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i8.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color", "colorByName", "dataName"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "component", type: i9.ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: ["id", "resourceData"], outputs: ["updated"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i10.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i10.TextTruncatePipe, name: "textTruncate" }], encapsulation: i0.ViewEncapsulation.None }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceHubComponent, selector: "pw-posts-list", host: { listeners: { "window:scroll": "onWindowScroll()" } }, usesInheritance: true, ngImport: i0, template: "<pw-resource-header></pw-resource-header>\n<div class=\"all-posts py-5\">\n\n <div class=\"row mt-1 mb-4 px-2\">\n <div class=\"col-md-8\">\n </div>\n <div class=\"col-md-4\">\n <div class=\"text-end mt-0 mt-sm-3 d-flex\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.SuperAdmin']\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer mt-2 me-3\"\n (click)=\"navigateToTagList()\"\n title=\"Edit Logo\"></i>\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\" [(ngModel)]=\"searchTextItems\" pInputText size=\"50\" placeholder=\"Search resources...\"\n (input)=\"onSearch(1)\"\n class=\"search-input top-search-input\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"row resource-row\">\n <!-- All Resources Card -->\n <div class=\"col-md-3 col-sm-6 mb-4\">\n <div class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"getPosts(1, 20, true)\"\n [ngClass]=\"{ 'selected': selectedTags.length === 0 }\"\n (click)=\"getPosts(1, 20, true)\">\n <i class=\"fa fa-layer-group resource-icon me-3\"></i>\n <span class=\"resource-text\">All Resources</span>\n </div>\n </div>\n\n <!-- Dynamic Tags -->\n <div class=\"col-md-3 col-sm-6 mb-4\"\n *ngFor=\"let tag of tags\">\n <div\n class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"tagPost(tag)\"\n [ngClass]=\"{ 'selected': isSelected(tag.id) }\"\n (click)=\"tagPost(tag)\">\n <i *ngIf=\"tag?.icon_name\" class=\"fa\" [ngClass]=\"tag.icon_name + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div>\n <div class=\"blog-list\">\n <div class=\"row mt-4 mb-5 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\">\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"post?.id\"\n [resourceData]=\"post\"\n (updated)=\"getPosts(1, pageSize)\">\n </pw-resource-edit-card>\n <div class=\"list-blog-image\" [routerLink]=\"['/resources/view', post.slug]\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"tag-div\">\n <div class=\"author d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown position-relative d-flex justify-content-end\" (clickOutside)=\"post.showDropdown = false\">\n <div class=\"three-dots-wrapper\" (keydown.enter)=\"toggleDropdown($event, post)\" (click)=\"toggleDropdown($event, post)\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </div>\n\n <div class=\"dropdown-menu show\"\n *ngIf=\"post.showDropdown\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\"></i> Share Post\n </a>\n </div>\n </div>\n\n </div>\n </div>\n <h4 [routerLink]=\"['/resources/view', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resources/view', post.slug]\"\n class=\"body mb-3 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-auto mb-3\">\n <ng-container *ngIf=\"post?.tags?.length\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(0, 4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"post.expandedTags\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n </ng-container>\n\n <span *ngIf=\"post?.tags?.length > 4\"\n (click)=\"post.expandedTags = !post.expandedTags\"\n (keydown.enter)=\"post.expandedTags = !post.expandedTags\"\n class=\"fw-bold cursor-pointer m-1 expand-tags\">...</span>\n </ng-container>\n </div>\n\n\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resources/view', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resources/view', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <pw-no-data [withImage]=\"true\" message=\"We couldn't find any resources.\" > </pw-no-data>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}body{background:#fff}.edit-card .in-page-edit-icon{margin-top:1rem!important}.blog-listing{border:1px solid rgb(238,238,238);cursor:pointer;box-shadow:0 4px 12px #00000026}.all-posts{margin:2.5em auto 0;max-width:980px;padding:14px 20px;width:100%}.tag-div{height:100%;display:flex;flex-direction:column;justify-content:space-between}ul.tags{display:inline-flex;font-size:16px;font-weight:400}ul.tags li{color:#337ab7;cursor:pointer;font-weight:600;margin-right:20px}ul.tags li:hover{color:#000}.search{position:relative}.search input{border:0;border-bottom:1px solid rgb(213,206,206)}.search i{position:absolute;right:5px}.scroll-container{max-height:70vh;overflow-y:auto}.blog-list .blog-listing h4{color:#000;font:28px/1.3 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing h4:hover{color:#0045c7}.blog-list .blog-listing p.body{color:#b3b3b3;font:16px/1.4 Roboto,sans-serif;transition:all .5s;min-height:120px!important;word-break:break-word;overflow-wrap:break-word;white-space:normal}.blog-list .blog-listing p.body:hover{color:#0045c7}.blog-list .blog-listing p.body p{color:inherit;font:inherit;transition:inherit}.blog-list .blog-listing p.body p:hover{color:#0045c7}.blog-list .blog-listing .list-blog-image img{padding:7px 25px 25px}.blog-list .blog-listing .author{padding-top:1.5rem}.blog-list .blog-listing .author .avatar-image{border:1px solid rgb(0,0,0);border-radius:50px;height:50px;clip-path:circle(50% at 50% 50%);width:50px}.blog-list .blog-listing .author .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.blog-list .blog-listing .author .avatar-image .default-user-image{width:50px}.blog-list .blog-listing .author .author-name p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.blog-list .blog-listing .author .author-name p.name:hover{color:#0045c7}.blog-list .blog-listing .author .author-name p.name i{color:#000}.blog-list .blog-listing .author .author-name ul li{display:inline-block;padding-right:10px;vertical-align:middle}.blog-list .blog-listing .author .author-name ul li a{color:#b3b3b3;font:12px/1 Roboto,sans-serif}.blog-list .blog-listing .author .share-post{flex-grow:3;position:relative;text-align:right}.blog-list .blog-listing .author .share-post i{color:var(--first)}.blog-list .blog-listing .author .share-post .dropdown-menu{border:0 0;box-shadow:0 3px 8px #0003;left:auto!important;right:12px;top:26px!important;transform:translate(0)!important}.blog-list .blog-listing .blog-view{border-top:1px solid rgb(238,238,238)}.blog-list .blog-listing .blog-view ul li{color:#b3b3b3;font:12px/1 Roboto,sans-serif;padding-right:14px}.blog-list .blog-listing .blog-view ul li a{color:inherit;font:inherit;transition:all .5s}.blog-list .blog-listing .blog-view ul li a:hover{color:#0045c7}.blog-list .blog-listing .blog-view ul li:last-child{flex-grow:3;padding-right:0;text-align:right}.blog-list .blog-listing .blog-view ul li:last-child i{color:#e84a43;font-size:14px}@media only screen and (width <= 1024px){.cust-mt{padding:14px 5px}.cust-mt .blog-list .blog-listing h4{font:20px/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body{font:.9rem/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body p{font:inherit}.cust-mt .blog-list .blog-listing .blog-image{height:300px}}@media only screen and (width <= 767px){.blog-list .blog-listing{height:auto;max-height:none;overflow:visible}.blog-list .blog-listing .blog-view{padding-bottom:1rem}}@media (width >= 768px){.blog-view{bottom:0;width:92%}}.post-body-text:hover{color:var(--titles)!important}.resource-card{border:2px dashed #d4d4d4;border-radius:16px;background-color:#fff;transition:box-shadow .3s ease;cursor:pointer;min-height:95px;padding:1.5rem!important}.resource-card:hover{box-shadow:0 0 30px #00000014}.selected{border:4px dashed #d4d4d4;border-color:var(--first)!important}.resource-icon{font-size:2.5rem;color:var(--first)}.resource-text{font-size:1.4rem;font-weight:500;color:var(--text-color);line-height:2rem}.three-dots-wrapper{width:32px;height:32px;display:flex;margin-top:.25rem!important;justify-content:center;cursor:pointer;position:relative;z-index:2}.expand-tags{font-size:1.2rem}\n", ".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ResourceHeaderComponent, selector: "pw-resource-header" }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i5.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i8.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color", "colorByName", "dataName"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "component", type: i9.ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: ["id", "resourceData"], outputs: ["updated"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i10.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i10.TextTruncatePipe, name: "textTruncate" }], encapsulation: i0.ViewEncapsulation.None }); }
177
178
  }
178
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHubComponent, decorators: [{
179
180
  type: Component,
180
- args: [{ selector: 'pw-posts-list', encapsulation: ViewEncapsulation.None, template: "<pw-resource-header></pw-resource-header>\n<div class=\"all-posts py-5\">\n\n <div class=\"row mt-1 mb-4 px-2\">\n <div class=\"col-md-8\">\n </div>\n <div class=\"col-md-4\">\n <div class=\"text-end mt-0 mt-sm-3 d-flex\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.SuperAdmin']\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer mt-2 me-3\"\n (click)=\"navigateToTagList()\"\n title=\"Edit Logo\"></i>\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\" [(ngModel)]=\"searchTextItems\" pInputText size=\"50\" placeholder=\"Search resources...\"\n (input)=\"onSearch(1)\"\n class=\"search-input top-search-input\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"row resource-row\">\n <!-- All Resources Card -->\n <div class=\"col-md-3 col-sm-6 mb-4\">\n <div class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"getPosts(1, 20, true)\"\n [ngClass]=\"{ 'selected': selectedTags.length === 0 }\"\n (click)=\"getPosts(1, 20, true)\">\n <i class=\"fa fa-layer-group resource-icon me-3\"></i>\n <span class=\"resource-text\">All Resources</span>\n </div>\n </div>\n\n <!-- Dynamic Tags -->\n <div class=\"col-md-3 col-sm-6 mb-4\"\n *ngFor=\"let tag of tags\">\n <div\n class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"tagPost(tag)\"\n [ngClass]=\"{ 'selected': isSelected(tag.id) }\"\n (click)=\"tagPost(tag)\">\n <i *ngIf=\"tag?.icon_name\" class=\"fa\" [ngClass]=\"tag.icon_name + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div>\n <div class=\"blog-list\">\n <div class=\"row mt-4 mb-5 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\">\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"post?.id\"\n [resourceData]=\"post\"\n (updated)=\"getPosts(1, pageSize)\">\n </pw-resource-edit-card>\n <div class=\"list-blog-image\" [routerLink]=\"['/resources/view', post.slug]\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"tag-div\">\n <div class=\"author d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown position-relative d-flex justify-content-end\" (clickOutside)=\"post.showDropdown = false\">\n <div class=\"three-dots-wrapper\" (keydown.enter)=\"toggleDropdown($event, post)\" (click)=\"toggleDropdown($event, post)\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </div>\n\n <div class=\"dropdown-menu show\"\n *ngIf=\"post.showDropdown\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\"></i> Share Post\n </a>\n </div>\n </div>\n\n </div>\n </div>\n <h4 [routerLink]=\"['/resources/view', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resources/view', post.slug]\"\n class=\"body mb-3 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-auto mb-3\">\n <ng-container *ngIf=\"post?.tags?.length\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(0, 4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"post.expandedTags\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n </ng-container>\n\n <span *ngIf=\"post?.tags?.length > 4\"\n (click)=\"post.expandedTags = !post.expandedTags\"\n (keydown.enter)=\"post.expandedTags = !post.expandedTags\"\n class=\"fw-bold cursor-pointer m-1\"\n style=\"font-size: 1.2rem;\">...</span>\n </ng-container>\n </div>\n\n\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resources/view', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resources/view', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <pw-no-data [withImage]=\"true\" message=\"We couldn't find any resources.\" > </pw-no-data>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}body{background:#fff}.edit-card .in-page-edit-icon{margin-top:1rem!important}.blog-listing{border:1px solid rgb(238,238,238);cursor:pointer;box-shadow:0 4px 12px #00000026}.all-posts{margin:2.5em auto 0;max-width:980px;padding:14px 20px;width:100%}.tag-div{height:100%;display:flex;flex-direction:column;justify-content:space-between}ul.tags{display:inline-flex;font-size:16px;font-weight:400}ul.tags li{color:#337ab7;cursor:pointer;font-weight:600;margin-right:20px}ul.tags li:hover{color:#000}.search{position:relative}.search input{border:0;border-bottom:1px solid rgb(213,206,206)}.search i{position:absolute;right:5px}.scroll-container{max-height:70vh;overflow-y:auto}.blog-list .blog-listing h4{color:#000;font:28px/1.3 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing h4:hover{color:#0045c7}.blog-list .blog-listing p.body{color:#b3b3b3;font:16px/1.4 Roboto,sans-serif;transition:all .5s;min-height:120px!important;word-break:break-word;overflow-wrap:break-word;white-space:normal}.blog-list .blog-listing p.body:hover{color:#0045c7}.blog-list .blog-listing p.body p{color:inherit;font:inherit;transition:inherit}.blog-list .blog-listing p.body p:hover{color:#0045c7}.blog-list .blog-listing .list-blog-image img{padding:7px 25px 25px}.blog-list .blog-listing .author{padding-top:1.5rem}.blog-list .blog-listing .author .avatar-image{border:1px solid rgb(0,0,0);border-radius:50px;height:50px;clip-path:circle(50% at 50% 50%);width:50px}.blog-list .blog-listing .author .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.blog-list .blog-listing .author .avatar-image .default-user-image{width:50px}.blog-list .blog-listing .author .author-name p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.blog-list .blog-listing .author .author-name p.name:hover{color:#0045c7}.blog-list .blog-listing .author .author-name p.name i{color:#000}.blog-list .blog-listing .author .author-name ul li{display:inline-block;padding-right:10px;vertical-align:middle}.blog-list .blog-listing .author .author-name ul li a{color:#b3b3b3;font:12px/1 Roboto,sans-serif}.blog-list .blog-listing .author .share-post{flex-grow:3;position:relative;text-align:right}.blog-list .blog-listing .author .share-post i{color:var(--first)}.blog-list .blog-listing .author .share-post .dropdown-menu{border:0 0;box-shadow:0 3px 8px #0003;left:auto!important;right:12px;top:26px!important;transform:translate(0)!important}.blog-list .blog-listing .blog-view{border-top:1px solid rgb(238,238,238)}.blog-list .blog-listing .blog-view ul li{color:#b3b3b3;font:12px/1 Roboto,sans-serif;padding-right:14px}.blog-list .blog-listing .blog-view ul li a{color:inherit;font:inherit;transition:all .5s}.blog-list .blog-listing .blog-view ul li a:hover{color:#0045c7}.blog-list .blog-listing .blog-view ul li:last-child{flex-grow:3;padding-right:0;text-align:right}.blog-list .blog-listing .blog-view ul li:last-child i{color:#e84a43;font-size:14px}@media only screen and (width <= 1024px){.cust-mt{padding:14px 5px}.cust-mt .blog-list .blog-listing h4{font:20px/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body{font:.9rem/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body p{font:inherit}.cust-mt .blog-list .blog-listing .blog-image{height:300px}}@media only screen and (width <= 767px){.blog-list .blog-listing{height:auto;max-height:none;overflow:visible}.blog-list .blog-listing .blog-view{padding-bottom:1rem}}@media (width >= 768px){.blog-view{bottom:0;width:92%}}.post-body-text:hover{color:var(--titles)!important}.resource-card{border:2px dashed #d4d4d4;border-radius:16px;background-color:#fff;transition:box-shadow .3s ease;cursor:pointer;min-height:95px;padding:1.5rem!important}.resource-card:hover{box-shadow:0 0 30px #00000014}.selected{border:4px dashed #d4d4d4;border-color:var(--first)!important}.resource-icon{font-size:2.5rem;color:var(--first)}.resource-text{font-size:1.4rem;font-weight:500;color:var(--text-color);line-height:2rem}.three-dots-wrapper{width:32px;height:32px;display:flex;margin-top:.25rem!important;justify-content:center;cursor:pointer;position:relative;z-index:2}\n", ".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"] }]
181
+ args: [{ selector: 'pw-posts-list', encapsulation: ViewEncapsulation.None, template: "<pw-resource-header></pw-resource-header>\n<div class=\"all-posts py-5\">\n\n <div class=\"row mt-1 mb-4 px-2\">\n <div class=\"col-md-8\">\n </div>\n <div class=\"col-md-4\">\n <div class=\"text-end mt-0 mt-sm-3 d-flex\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.SuperAdmin']\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer mt-2 me-3\"\n (click)=\"navigateToTagList()\"\n title=\"Edit Logo\"></i>\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\" [(ngModel)]=\"searchTextItems\" pInputText size=\"50\" placeholder=\"Search resources...\"\n (input)=\"onSearch(1)\"\n class=\"search-input top-search-input\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"row resource-row\">\n <!-- All Resources Card -->\n <div class=\"col-md-3 col-sm-6 mb-4\">\n <div class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"getPosts(1, 20, true)\"\n [ngClass]=\"{ 'selected': selectedTags.length === 0 }\"\n (click)=\"getPosts(1, 20, true)\">\n <i class=\"fa fa-layer-group resource-icon me-3\"></i>\n <span class=\"resource-text\">All Resources</span>\n </div>\n </div>\n\n <!-- Dynamic Tags -->\n <div class=\"col-md-3 col-sm-6 mb-4\"\n *ngFor=\"let tag of tags\">\n <div\n class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"tagPost(tag)\"\n [ngClass]=\"{ 'selected': isSelected(tag.id) }\"\n (click)=\"tagPost(tag)\">\n <i *ngIf=\"tag?.icon_name\" class=\"fa\" [ngClass]=\"tag.icon_name + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div>\n <div class=\"blog-list\">\n <div class=\"row mt-4 mb-5 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\">\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"post?.id\"\n [resourceData]=\"post\"\n (updated)=\"getPosts(1, pageSize)\">\n </pw-resource-edit-card>\n <div class=\"list-blog-image\" [routerLink]=\"['/resources/view', post.slug]\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"tag-div\">\n <div class=\"author d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown position-relative d-flex justify-content-end\" (clickOutside)=\"post.showDropdown = false\">\n <div class=\"three-dots-wrapper\" (keydown.enter)=\"toggleDropdown($event, post)\" (click)=\"toggleDropdown($event, post)\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </div>\n\n <div class=\"dropdown-menu show\"\n *ngIf=\"post.showDropdown\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\"></i> Share Post\n </a>\n </div>\n </div>\n\n </div>\n </div>\n <h4 [routerLink]=\"['/resources/view', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resources/view', post.slug]\"\n class=\"body mb-3 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-auto mb-3\">\n <ng-container *ngIf=\"post?.tags?.length\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(0, 4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"post.expandedTags\">\n <ng-container *ngFor=\"let tag of post?.tags?.slice(4)\">\n <span class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: post?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"blue-grey\">\n {{ tag.name }}\n </span>\n </ng-container>\n </ng-container>\n\n <span *ngIf=\"post?.tags?.length > 4\"\n (click)=\"post.expandedTags = !post.expandedTags\"\n (keydown.enter)=\"post.expandedTags = !post.expandedTags\"\n class=\"fw-bold cursor-pointer m-1 expand-tags\">...</span>\n </ng-container>\n </div>\n\n\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resources/view', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resources/view', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <pw-no-data [withImage]=\"true\" message=\"We couldn't find any resources.\" > </pw-no-data>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}body{background:#fff}.edit-card .in-page-edit-icon{margin-top:1rem!important}.blog-listing{border:1px solid rgb(238,238,238);cursor:pointer;box-shadow:0 4px 12px #00000026}.all-posts{margin:2.5em auto 0;max-width:980px;padding:14px 20px;width:100%}.tag-div{height:100%;display:flex;flex-direction:column;justify-content:space-between}ul.tags{display:inline-flex;font-size:16px;font-weight:400}ul.tags li{color:#337ab7;cursor:pointer;font-weight:600;margin-right:20px}ul.tags li:hover{color:#000}.search{position:relative}.search input{border:0;border-bottom:1px solid rgb(213,206,206)}.search i{position:absolute;right:5px}.scroll-container{max-height:70vh;overflow-y:auto}.blog-list .blog-listing h4{color:#000;font:28px/1.3 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing h4:hover{color:#0045c7}.blog-list .blog-listing p.body{color:#b3b3b3;font:16px/1.4 Roboto,sans-serif;transition:all .5s;min-height:120px!important;word-break:break-word;overflow-wrap:break-word;white-space:normal}.blog-list .blog-listing p.body:hover{color:#0045c7}.blog-list .blog-listing p.body p{color:inherit;font:inherit;transition:inherit}.blog-list .blog-listing p.body p:hover{color:#0045c7}.blog-list .blog-listing .list-blog-image img{padding:7px 25px 25px}.blog-list .blog-listing .author{padding-top:1.5rem}.blog-list .blog-listing .author .avatar-image{border:1px solid rgb(0,0,0);border-radius:50px;height:50px;clip-path:circle(50% at 50% 50%);width:50px}.blog-list .blog-listing .author .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.blog-list .blog-listing .author .avatar-image .default-user-image{width:50px}.blog-list .blog-listing .author .author-name p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.blog-list .blog-listing .author .author-name p.name:hover{color:#0045c7}.blog-list .blog-listing .author .author-name p.name i{color:#000}.blog-list .blog-listing .author .author-name ul li{display:inline-block;padding-right:10px;vertical-align:middle}.blog-list .blog-listing .author .author-name ul li a{color:#b3b3b3;font:12px/1 Roboto,sans-serif}.blog-list .blog-listing .author .share-post{flex-grow:3;position:relative;text-align:right}.blog-list .blog-listing .author .share-post i{color:var(--first)}.blog-list .blog-listing .author .share-post .dropdown-menu{border:0 0;box-shadow:0 3px 8px #0003;left:auto!important;right:12px;top:26px!important;transform:translate(0)!important}.blog-list .blog-listing .blog-view{border-top:1px solid rgb(238,238,238)}.blog-list .blog-listing .blog-view ul li{color:#b3b3b3;font:12px/1 Roboto,sans-serif;padding-right:14px}.blog-list .blog-listing .blog-view ul li a{color:inherit;font:inherit;transition:all .5s}.blog-list .blog-listing .blog-view ul li a:hover{color:#0045c7}.blog-list .blog-listing .blog-view ul li:last-child{flex-grow:3;padding-right:0;text-align:right}.blog-list .blog-listing .blog-view ul li:last-child i{color:#e84a43;font-size:14px}@media only screen and (width <= 1024px){.cust-mt{padding:14px 5px}.cust-mt .blog-list .blog-listing h4{font:20px/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body{font:.9rem/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body p{font:inherit}.cust-mt .blog-list .blog-listing .blog-image{height:300px}}@media only screen and (width <= 767px){.blog-list .blog-listing{height:auto;max-height:none;overflow:visible}.blog-list .blog-listing .blog-view{padding-bottom:1rem}}@media (width >= 768px){.blog-view{bottom:0;width:92%}}.post-body-text:hover{color:var(--titles)!important}.resource-card{border:2px dashed #d4d4d4;border-radius:16px;background-color:#fff;transition:box-shadow .3s ease;cursor:pointer;min-height:95px;padding:1.5rem!important}.resource-card:hover{box-shadow:0 0 30px #00000014}.selected{border:4px dashed #d4d4d4;border-color:var(--first)!important}.resource-icon{font-size:2.5rem;color:var(--first)}.resource-text{font-size:1.4rem;font-weight:500;color:var(--text-color);line-height:2rem}.three-dots-wrapper{width:32px;height:32px;display:flex;margin-top:.25rem!important;justify-content:center;cursor:pointer;position:relative;z-index:2}.expand-tags{font-size:1.2rem}\n", ".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"] }]
181
182
  }], ctorParameters: () => [{ type: i1.ResourceService }, { type: i2.TagService }, { type: i0.Injector }], propDecorators: { onWindowScroll: [{
182
183
  type: HostListener,
183
184
  args: ['window:scroll', []]
184
185
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBR1IsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQWlCLFNBQVMsRUFBUSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVzVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUEwQ3RELFlBQ3FCLGVBQWdDLEVBQ2hDLFVBQXNCLEVBQ3ZDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBM0NuQyxpQkFBWSxHQUF5QyxJQUFJLENBQUM7UUFFbEUsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVWLFVBQUss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b0JBQW9CO2tCQVRoQyxTQUFTOytCQUNJLGVBQWUsaUJBTVYsaUJBQWlCLENBQUMsSUFBSTtvSUErSnJDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZSwgVGFnLCBUT0tFTl9LRVksIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcG9zdHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlcy1odWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogW1xuICAgICAgICAnLi9yZXNvdXJjZXMtaHViLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uL3Jlc291cmNlLWNvbXBhbnktY2FyZC9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50LnNjc3MnXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlSHViQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGRlbGF5VGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICAgIGRhdGEgPSBbXTtcblxuICAgIHBvc3RzOiBSZXNvdXJjZVtdID0gW107XG4gICAgdGFnczogVGFnW10gPSBbXTtcblxuICAgIHNlbGVjdGVkVGFncyA9IFtdO1xuXG4gICAgY3VycmVudFBhZ2UgPSAxO1xuICAgIHBhZ2VTaXplID0gMjA7XG4gICAgb2JqZWN0Q291bnQgPSAwO1xuXG4gICAgc2VhcmNoVGV4dEl0ZW1zID0gJyc7XG4gICAgc2VhcmNoSW5wdXQgPSBmYWxzZTtcblxuICAgIHJlYWRpbmdUaW1lOiBudW1iZXI7XG5cbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcblxuICAgIGxvYWRpbmcgPSB0cnVlO1xuICAgIGxvYWRlZCA9IGZhbHNlO1xuXG4gICAgbWFzdGVyU3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBzdWJzY3JpcHRpb25JZDtcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG5cbiAgICBzY3JvbGxMb2NrZWQgPSBmYWxzZTtcblxuICAgIGljb25DbGFzc2VzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgJ2ZhLWxpZ2h0YnVsYicsXG4gICAgICAgICdmYS1yb2NrZXQnLFxuICAgICAgICAnZmEtZmlsZS1hbHQnLFxuICAgICAgICAnZmEtdXNlcnMnLFxuICAgICAgICAnZmEtdmlkZW8nLFxuICAgICAgICAnZmEtcGVuY2lsLWFsdCcsXG4gICAgICAgICdmYS1ib29rLW9wZW4nLFxuICAgICAgICAnZmEtY29ncydcbiAgICBdO1xuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVNlcnZpY2U6IFJlc291cmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWQgPSB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbl9pZDtcbiAgICAgICAgdGhpcy5nZXRQb3N0c0FuZFRhZ3MoKTtcbiAgICAgICAgdGhpcy5yZWFkaW5nVGltZSA9IDA7XG4gICAgfVxuXG4gICAgZ2V0UG9zdHNBbmRUYWdzKCkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICByZXNQb3N0czogdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UHVibGljUG9zdHMoXG4gICAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgICAgIHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0SXRlbXNcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZXNUYWdzOiB0aGlzLnRhZ1NlcnZpY2UuZ2V0VGFnc0J5VHlwZShcbiAgICAgICAgICAgICAgICAncG9zdF9jYXRlZ29yaWVzJyxcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID8/IHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RzID0gcmVzPy5yZXNQb3N0cz8ucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy5vYmplY3RDb3VudCA9IHJlcz8ucmVzUG9zdHMub2JqZWN0X2NvdW50O1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlcz8ucmVzUG9zdHM/LnBvc3RzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlcz8ucmVzUG9zdHM/LnBvc3RzLm1hcChwb3N0ID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnBvc3QsXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkVGFnczogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBvc3RzPy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRhZ3MgPSByZXM/LnJlc1RhZ3M/LnRhZ3M/LmZpbHRlcih0YWcgPT4gdGFnLnZpc2libGVfaW5fcmVzb3VyY2VzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ3MgPSB0aGlzLnRhZ3MubWFwKHRhZyA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi50YWdcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IEV2ZW50LCBwb3N0KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBwb3N0LnNob3dEcm9wZG93biA9ICFwb3N0LnNob3dEcm9wZG93bjtcbiAgICB9XG5cbiAgICBnZXRQb3N0cyhwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIGZldGNoQWxsID0gZmFsc2UsIGFwcGVuZCA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChmZXRjaEFsbCkgdGhpcy5zZWxlY3RlZFRhZ3MgPSBbXTtcblxuICAgICAgICBpZiAoIWFwcGVuZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWdDYXRlZ29yeVBhcmFtID0gdGhpcy5zZWxlY3RlZFRhZ3MubWFwKHRhZyA9PiB0YWcudGFnX2NhdGVnb3J5X2lkKS5qb2luKCcsJyk7XG5cbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQdWJsaWNQb3N0cyhcbiAgICAgICAgICAgICAgICB0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICAgICAgYXBwZW5kID8gMTAgOiBwYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRleHRJdGVtcyxcbiAgICAgICAgICAgICAgICB0YWdDYXRlZ29yeVBhcmFtXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9iamVjdENvdW50ID0gcmVzcG9uc2Uub2JqZWN0X2NvdW50O1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdHMgPSBhcHBlbmQgPyBbLi4udGhpcy5wb3N0cywgLi4ucmVzcG9uc2UucG9zdHNdIDogcmVzcG9uc2UucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gWy4uLnRoaXMucG9zdHNdO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy5wb3N0cz8ubGVuZ3RoO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2VhcmNoKHNlY29uZHM6IG51bWJlcikge1xuICAgICAgICBsZXQgZGVsYXkgPSAwO1xuICAgICAgICBkZWxheSA9IHNlY29uZHMgKiAxMDAwO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXQpO1xuICAgICAgICBjb25zdCBkZWxheVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgICAgdGhpcy5nZXRQb3N0cygxLCB0aGlzLnBhZ2VTaXplKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuXG4gICAgICAgIHRoaXMuZGVsYXlUaW1lb3V0ID0gZGVsYXlUaW1lb3V0O1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9UYWdMaXN0KCk6IHZvaWQge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLm5hdmlnYXRlVG9UYWdMaXN0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICAgIG9uV2luZG93U2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZICsgd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBwYWdlSGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodDtcblxuICAgICAgICBjb25zdCBuZWFyQm90dG9tID0gc2Nyb2xsUG9zaXRpb24gPj0gcGFnZUhlaWdodCAtIDEwMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBuZWFyQm90dG9tICYmXG4gICAgICAgICAgICB0aGlzLnBvc3RzLmxlbmd0aCA8IHRoaXMub2JqZWN0Q291bnQgJiZcbiAgICAgICAgICAgICF0aGlzLmxvYWRpbmcgJiZcbiAgICAgICAgICAgICF0aGlzLnNjcm9sbExvY2tlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsTG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcblxuICAgICAgICAgICAgdGhpcy5nZXRQb3N0cyh0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLnBhZ2VTaXplLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsTG9ja2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCh0YWdJZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFncy5tYXAodGFnID0+IHRhZy5pZCkuaW5jbHVkZXModGFnSWQpO1xuICAgIH1cblxuICAgIHRhZ1Bvc3Qoc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICB0YWcgPT4gdGFnLnRhZ19jYXRlZ29yeV9pZCA9PT0gc2VsZWN0ZWRUYWc/LnRhZ19jYXRlZ29yeV9pZCAmJiB0YWcuaWQgPT09IHNlbGVjdGVkVGFnLmlkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgdGFnX2NhdGVnb3J5X2lkOiBzZWxlY3RlZFRhZz8udGFnX2NhdGVnb3J5X2lkLFxuICAgICAgICAgICAgICAgIGlkOiBzZWxlY3RlZFRhZy5pZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIHRoaXMuZ2V0UG9zdHMoMSwgdGhpcy5wYWdlU2l6ZSk7XG4gICAgfVxuXG4gICAgdGhpc1Bvc3RSZWFkaW5nVGltZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgY29uc3Qgd29yZHNQZXJNaW51dGUgPSAyMDA7XG4gICAgICAgICAgICBjb25zdCBub09mV29yZHMgPSB0ZXh0LnNwbGl0KC9cXHMvZykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IG5vT2ZXb3JkcyAvIHdvcmRzUGVyTWludXRlO1xuICAgICAgICAgICAgY29uc3QgcmVhZFRpbWUgPSBNYXRoLmNlaWwobWludXRlcyk7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtyZWFkVGltZX0gbWludXRlIHJlYWRgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxwdy1yZXNvdXJjZS1oZWFkZXI+PC9wdy1yZXNvdXJjZS1oZWFkZXI+XG48ZGl2IGNsYXNzPVwiYWxsLXBvc3RzIHB5LTVcIj5cblxuICA8ZGl2IGNsYXNzPVwicm93IG10LTEgbWItNCBweC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtMCBtdC1zbS0zIGQtZmxleFwiPlxuICAgICAgICA8aSAqbmdJZj1cInVzZXJMb2dnZWRJbiAmJiB1c2VyPy5hdXRoPy5ncmFudGVkWydQYWdlcy5TdXBlckFkbWluJ11cIlxuICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IGluLXBhZ2UtZWRpdC1pY29uIGN1cnNvci1wb2ludGVyIG10LTIgbWUtM1wiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1RhZ0xpc3QoKVwiXG4gICAgICB0aXRsZT1cIkVkaXQgTG9nb1wiPjwvaT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggc2VhcmNoLWljb25cIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0SXRlbXNcIiBwSW5wdXRUZXh0IHNpemU9XCI1MFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHJlc291cmNlcy4uLlwiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgxKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dCB0b3Atc2VhcmNoLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3cgcmVzb3VyY2Utcm93XCI+XG4gICAgPCEtLSBBbGwgUmVzb3VyY2VzIENhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGNvbC1zbS02IG1iLTRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1jYXJkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcC0zXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ2V0UG9zdHMoMSwgMjAsIHRydWUpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBzZWxlY3RlZFRhZ3MubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAgICAoY2xpY2spPVwiZ2V0UG9zdHMoMSwgMjAsIHRydWUpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbGF5ZXItZ3JvdXAgcmVzb3VyY2UtaWNvbiBtZS0zXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc291cmNlLXRleHRcIj5BbGwgUmVzb3VyY2VzPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIER5bmFtaWMgVGFncyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLXNtLTYgbWItNFwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3NcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAgY2xhc3M9XCJyZXNvdXJjZS1jYXJkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcC0zXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidGFnUG9zdCh0YWcpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBpc1NlbGVjdGVkKHRhZy5pZCkgfVwiXG4gICAgICAgICAgIChjbGljayk9XCJ0YWdQb3N0KHRhZylcIj5cbiAgICAgICAgICAgPGkgKm5nSWY9XCJ0YWc/Lmljb25fbmFtZVwiIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ0YWcuaWNvbl9uYW1lICsgJyByZXNvdXJjZS1pY29uIG1lLTMnXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc291cmNlLXRleHRcIj57eyB0YWcubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmcgJiYgIWxvYWRlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCI+XG4gICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdHM/Lmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmxvZy1saXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNCBtYi01IG1zLTEgbWUtMSBibG9nLWxpc3RpbmdcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwb3N0IG9mIGRhdGFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTEyIGNvbC14cy0xMiBteS1hdXRvXCI+XG4gICAgICAgICAgICA8cHctcmVzb3VyY2UtZWRpdC1jYXJkXG4gICAgICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgICAgICBbaWRdPVwicG9zdD8uaWRcIlxuICAgICAgICAgICAgICBbcmVzb3VyY2VEYXRhXT1cInBvc3RcIlxuICAgICAgICAgICAgICAodXBkYXRlZCk9XCJnZXRQb3N0cygxLCBwYWdlU2l6ZSlcIj5cbiAgICAgICAgICAgIDwvcHctcmVzb3VyY2UtZWRpdC1jYXJkPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtYmxvZy1pbWFnZVwiIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwicG9zdC5waWN0dXJlPy51cmxcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlBvc3QgTGlzdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbWctZmx1aWRcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1zbS0xMiBjb2wteHMtMTIgcHgtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1kaXZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dGhvciBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8YSBbYXR0ci5kaXNhYmxlZF09XCIhdXNlckxvZ2dlZEluXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInBvc3QuYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicG9zdC5hdXRob3I/LmF2YXRhclswXT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdXRob3JcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIXBvc3QuYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi9hc3NldHMvaW1nL2ljb25zL21hbGUucG5nXCJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdXRob3JcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdC11c2VyLWltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRob3ItbmFtZSBwcy0yXCI+XG4gICAgICAgICAgICAgICAgICA8YSBbYXR0ci5kaXNhYmxlZF09XCIhdXNlckxvZ2dlZEluXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcG9zdC5hdXRob3IuZmlyc3RfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jcm93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcG9zdC5wdWJsaXNoZWRfYXQgfCBkYXRlOiAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT4uPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+e3sgdGhpc1Bvc3RSZWFkaW5nVGltZShwb3N0LmJvZHkpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hhcmUtcG9zdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKGNsaWNrT3V0c2lkZSk9XCJwb3N0LnNob3dEcm9wZG93biA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHJlZS1kb3RzLXdyYXBwZXJcIiAgKGtleWRvd24uZW50ZXIpPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50LCBwb3N0KVwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQsIHBvc3QpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWxsaXBzaXMtdlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb3N0LnNob3dEcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHA6Ly93d3cuZmFjZWJvb2suY29tL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc2hhcmVcIj48L2k+IFNoYXJlIFBvc3RcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoNCBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGUgbXktM1wiPnt7IHBvc3QudGl0bGUgfX08L2g0PlxuICAgICAgICAgICAgICA8cCBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9keSBtYi0zIHBiLTMgcG9zdC1ib2R5LXRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyBwb3N0LmJvZHkgfCByZW1vdmVIdG1sOiAncXVpbGwnIHwgdGV4dFRydW5jYXRlOiAyMDAgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtYXV0byBtYi0zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvc3Q/LnRhZ3M/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHBvc3Q/LnRhZ3M/LnNsaWNlKDAsIDQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IHBvc3Q/LnRhZ3MsIGl0ZW06IHRhZyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQnlOYW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YU5hbWVdPVwidGFnLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWUtZ3JleVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHRhZy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdC5leHBhbmRlZFRhZ3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHBvc3Q/LnRhZ3M/LnNsaWNlKDQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBwb3N0Py50YWdzLCBpdGVtOiB0YWcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQnlOYW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhTmFtZV09XCJ0YWcubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRhZy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvc3Q/LnRhZ3M/Lmxlbmd0aCA+IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvc3QuZXhwYW5kZWRUYWdzID0gIXBvc3QuZXhwYW5kZWRUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInBvc3QuZXhwYW5kZWRUYWdzID0gIXBvc3QuZXhwYW5kZWRUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBjdXJzb3ItcG9pbnRlciBtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEuMnJlbTtcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2ctdmlldyBweS0zIGJsb2ctbGlzdC13cml0ZS12aWV3XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgcG9zdC52aWV3ICE9PSBudWxsID8gcG9zdC52aWV3IDogJzAnIH19IFZpZXc8L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPjxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiPldyaXRlIENvbW1lbnQ8L2E+PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCBwb3N0LnNsdWddXCIgYXJpYS1sYWJlbD1cIkJsb2dcIj48aSBjbGFzcz1cImZhciBmYS1oZWFydFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcG9zdHM/Lmxlbmd0aCAmJiBsb2FkZWRcIj5cbiAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBtZXNzYWdlPVwiV2UgY291bGRuJ3QgZmluZCBhbnkgcmVzb3VyY2VzLlwiID4gPC9wdy1uby1kYXRhPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBR1IsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQWlCLFNBQVMsRUFBUSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7OztBQVc1RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZ0JBQWdCO0lBMkN0RCxZQUNxQixlQUFnQyxFQUNoQyxVQUFzQixFQUN2QyxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQTVDbkMsaUJBQVksR0FBeUMsSUFBSSxDQUFDO1FBR2xFLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVixVQUFL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QUN4QixDQUFDOytHQTNOUSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwSUMzQmpDLDgzUEFxTEE7OzRGRDFKYSxvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0ksZUFBZSxpQkFNVixpQkFBaUIsQ0FBQyxJQUFJO29JQWdLckMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFJlc291cmNlLCBUYWcsIFRPS0VOX0tFWSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXBvc3RzLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZXMtaHViLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFtcbiAgICAgICAgJy4vcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuc2NzcycsXG4gICAgICAgICcuLi9yZXNvdXJjZS1jb21wYW55LWNhcmQvcmVzb3VyY2UtY29tcGFueS1jYXJkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUh1YkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBkZWxheVRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSB1c2VyU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICBkYXRhID0gW107XG5cbiAgICBwb3N0czogUmVzb3VyY2VbXSA9IFtdO1xuICAgIHRhZ3M6IFRhZ1tdID0gW107XG5cbiAgICBzZWxlY3RlZFRhZ3MgPSBbXTtcblxuICAgIGN1cnJlbnRQYWdlID0gMTtcbiAgICBwYWdlU2l6ZSA9IDIwO1xuICAgIG9iamVjdENvdW50ID0gMDtcblxuICAgIHNlYXJjaFRleHRJdGVtcyA9ICcnO1xuICAgIHNlYXJjaElucHV0ID0gZmFsc2U7XG5cbiAgICByZWFkaW5nVGltZTogbnVtYmVyO1xuXG4gICAgdG90YWxSZWNvcmRzOiBudW1iZXI7XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcbiAgICBsb2FkZWQgPSBmYWxzZTtcblxuICAgIG1hc3RlclN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG4gICAgc3Vic2NyaXB0aW9uSWQ7XG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuXG4gICAgc2Nyb2xsTG9ja2VkID0gZmFsc2U7XG5cbiAgICBpY29uQ2xhc3Nlczogc3RyaW5nW10gPSBbXG4gICAgICAgICdmYS1saWdodGJ1bGInLFxuICAgICAgICAnZmEtcm9ja2V0JyxcbiAgICAgICAgJ2ZhLWZpbGUtYWx0JyxcbiAgICAgICAgJ2ZhLXVzZXJzJyxcbiAgICAgICAgJ2ZhLXZpZGVvJyxcbiAgICAgICAgJ2ZhLXBlbmNpbC1hbHQnLFxuICAgICAgICAnZmEtYm9vay1vcGVuJyxcbiAgICAgICAgJ2ZhLWNvZ3MnXG4gICAgXTtcbiAgICB1c2VyOiBVc2VyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclN1YiA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlciA9IGRhdGE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkID0gdGhpcy5hcHBDb25maWcubWFzdGVyX3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25faWQ7XG4gICAgICAgIHRoaXMuZ2V0UG9zdHNBbmRUYWdzKCk7XG4gICAgICAgIHRoaXMucmVhZGluZ1RpbWUgPSAwO1xuICAgIH1cblxuICAgIGdldFBvc3RzQW5kVGFncygpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgZm9ya0pvaW4oe1xuICAgICAgICAgICAgcmVzUG9zdHM6IHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFB1YmxpY1Bvc3RzKFxuICAgICAgICAgICAgICAgIHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dEl0ZW1zXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmVzVGFnczogdGhpcy50YWdTZXJ2aWNlLmdldFRhZ3NCeVR5cGUoXG4gICAgICAgICAgICAgICAgJ3Bvc3RfY2F0ZWdvcmllcycsXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA/PyB0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0cyA9IHJlcz8ucmVzUG9zdHM/LnBvc3RzO1xuICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0Q291bnQgPSByZXM/LnJlc1Bvc3RzLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXM/LnJlc1Bvc3RzPy5wb3N0cztcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXM/LnJlc1Bvc3RzPy5wb3N0cy5tYXAocG9zdCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5wb3N0LFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZFRhZ3M6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy5wb3N0cz8ubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gcmVzPy5yZXNUYWdzPy50YWdzPy5maWx0ZXIodGFnID0+IHRhZy52aXNpYmxlX2luX3Jlc291cmNlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gdGhpcy50YWdzLm1hcCh0YWcgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGFnXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZURyb3Bkb3duKGV2ZW50OiBFdmVudCwgcG9zdCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcG9zdC5zaG93RHJvcGRvd24gPSAhcG9zdC5zaG93RHJvcGRvd247XG4gICAgfVxuXG4gICAgZ2V0UG9zdHMocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyLCBmZXRjaEFsbCA9IGZhbHNlLCBhcHBlbmQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmV0Y2hBbGwpIHRoaXMuc2VsZWN0ZWRUYWdzID0gW107XG5cbiAgICAgICAgaWYgKCFhcHBlbmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnQ2F0ZWdvcnlQYXJhbSA9IHRoaXMuc2VsZWN0ZWRUYWdzLm1hcCh0YWcgPT4gdGFnLnRhZ19jYXRlZ29yeV9pZCkuam9pbignLCcpO1xuXG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHVibGljUG9zdHMoXG4gICAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgICAgIGFwcGVuZCA/IDEwIDogcGFnZVNpemUsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0SXRlbXMsXG4gICAgICAgICAgICAgICAgdGFnQ2F0ZWdvcnlQYXJhbVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYmplY3RDb3VudCA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RzID0gYXBwZW5kID8gWy4uLnRoaXMucG9zdHMsIC4uLnJlc3BvbnNlLnBvc3RzXSA6IHJlc3BvbnNlLnBvc3RzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IFsuLi50aGlzLnBvc3RzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMucG9zdHM/Lmxlbmd0aDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlYXJjaChzZWNvbmRzOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGRlbGF5ID0gMDtcbiAgICAgICAgZGVsYXkgPSBzZWNvbmRzICogMTAwMDtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlUaW1lb3V0KTtcbiAgICAgICAgY29uc3QgZGVsYXlUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHMoMSwgdGhpcy5wYWdlU2l6ZSk7XG4gICAgICAgIH0sIGRlbGF5KTtcblxuICAgICAgICB0aGlzLmRlbGF5VGltZW91dCA9IGRlbGF5VGltZW91dDtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvVGFnTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgSGVscGVyU2VydmljZS5uYXZpZ2F0ZVRvVGFnTGlzdCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcbiAgICBvbldpbmRvd1Njcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cuc2Nyb2xsWSArIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3QgcGFnZUhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgbmVhckJvdHRvbSA9IHNjcm9sbFBvc2l0aW9uID49IHBhZ2VIZWlnaHQgLSAxMDA7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbmVhckJvdHRvbSAmJlxuICAgICAgICAgICAgdGhpcy5wb3N0cy5sZW5ndGggPCB0aGlzLm9iamVjdENvdW50ICYmXG4gICAgICAgICAgICAhdGhpcy5sb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5zY3JvbGxMb2NrZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbExvY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XG5cbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHModGhpcy5jdXJyZW50UGFnZSwgdGhpcy5wYWdlU2l6ZSwgZmFsc2UsIHRydWUpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbExvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQodGFnSWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhZ3MubWFwKHRhZyA9PiB0YWcuaWQpLmluY2x1ZGVzKHRhZ0lkKTtcbiAgICB9XG5cbiAgICB0YWdQb3N0KHNlbGVjdGVkVGFnKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgdGFnID0+IHRhZy50YWdfY2F0ZWdvcnlfaWQgPT09IHNlbGVjdGVkVGFnPy50YWdfY2F0ZWdvcnlfaWQgJiYgdGFnLmlkID09PSBzZWxlY3RlZFRhZy5pZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWdzLnB1c2goe1xuICAgICAgICAgICAgICAgIHRhZ19jYXRlZ29yeV9pZDogc2VsZWN0ZWRUYWc/LnRhZ19jYXRlZ29yeV9pZCxcbiAgICAgICAgICAgICAgICBpZDogc2VsZWN0ZWRUYWcuaWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB0aGlzLmdldFBvc3RzKDEsIHRoaXMucGFnZVNpemUpO1xuICAgIH1cblxuICAgIHRoaXNQb3N0UmVhZGluZ1RpbWUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzUGVyTWludXRlID0gMjAwO1xuICAgICAgICAgICAgY29uc3Qgbm9PZldvcmRzID0gdGV4dC5zcGxpdCgvXFxzL2cpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBub09mV29yZHMgLyB3b3Jkc1Blck1pbnV0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRUaW1lID0gTWF0aC5jZWlsKG1pbnV0ZXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7cmVhZFRpbWV9IG1pbnV0ZSByZWFkYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51c2VyU3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxwdy1yZXNvdXJjZS1oZWFkZXI+PC9wdy1yZXNvdXJjZS1oZWFkZXI+XG48ZGl2IGNsYXNzPVwiYWxsLXBvc3RzIHB5LTVcIj5cblxuICA8ZGl2IGNsYXNzPVwicm93IG10LTEgbWItNCBweC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtMCBtdC1zbS0zIGQtZmxleFwiPlxuICAgICAgICA8aSAqbmdJZj1cInVzZXJMb2dnZWRJbiAmJiB1c2VyPy5hdXRoPy5ncmFudGVkWydQYWdlcy5TdXBlckFkbWluJ11cIlxuICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IGluLXBhZ2UtZWRpdC1pY29uIGN1cnNvci1wb2ludGVyIG10LTIgbWUtM1wiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1RhZ0xpc3QoKVwiXG4gICAgICB0aXRsZT1cIkVkaXQgTG9nb1wiPjwvaT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggc2VhcmNoLWljb25cIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0SXRlbXNcIiBwSW5wdXRUZXh0IHNpemU9XCI1MFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHJlc291cmNlcy4uLlwiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgxKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dCB0b3Atc2VhcmNoLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3cgcmVzb3VyY2Utcm93XCI+XG4gICAgPCEtLSBBbGwgUmVzb3VyY2VzIENhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGNvbC1zbS02IG1iLTRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1jYXJkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcC0zXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ2V0UG9zdHMoMSwgMjAsIHRydWUpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBzZWxlY3RlZFRhZ3MubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAgICAoY2xpY2spPVwiZ2V0UG9zdHMoMSwgMjAsIHRydWUpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbGF5ZXItZ3JvdXAgcmVzb3VyY2UtaWNvbiBtZS0zXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc291cmNlLXRleHRcIj5BbGwgUmVzb3VyY2VzPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIER5bmFtaWMgVGFncyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLXNtLTYgbWItNFwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3NcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAgY2xhc3M9XCJyZXNvdXJjZS1jYXJkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcC0zXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidGFnUG9zdCh0YWcpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBpc1NlbGVjdGVkKHRhZy5pZCkgfVwiXG4gICAgICAgICAgIChjbGljayk9XCJ0YWdQb3N0KHRhZylcIj5cbiAgICAgICAgICAgPGkgKm5nSWY9XCJ0YWc/Lmljb25fbmFtZVwiIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ0YWcuaWNvbl9uYW1lICsgJyByZXNvdXJjZS1pY29uIG1lLTMnXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc291cmNlLXRleHRcIj57eyB0YWcubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmcgJiYgIWxvYWRlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCI+XG4gICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdHM/Lmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmxvZy1saXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNCBtYi01IG1zLTEgbWUtMSBibG9nLWxpc3RpbmdcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwb3N0IG9mIGRhdGFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTEyIGNvbC14cy0xMiBteS1hdXRvXCI+XG4gICAgICAgICAgICA8cHctcmVzb3VyY2UtZWRpdC1jYXJkXG4gICAgICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgICAgICBbaWRdPVwicG9zdD8uaWRcIlxuICAgICAgICAgICAgICBbcmVzb3VyY2VEYXRhXT1cInBvc3RcIlxuICAgICAgICAgICAgICAodXBkYXRlZCk9XCJnZXRQb3N0cygxLCBwYWdlU2l6ZSlcIj5cbiAgICAgICAgICAgIDwvcHctcmVzb3VyY2UtZWRpdC1jYXJkPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtYmxvZy1pbWFnZVwiIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwicG9zdC5waWN0dXJlPy51cmxcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlBvc3QgTGlzdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbWctZmx1aWRcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1zbS0xMiBjb2wteHMtMTIgcHgtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1kaXZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dGhvciBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8YSBbYXR0ci5kaXNhYmxlZF09XCIhdXNlckxvZ2dlZEluXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInBvc3QuYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicG9zdC5hdXRob3I/LmF2YXRhclswXT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdXRob3JcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIXBvc3QuYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi9hc3NldHMvaW1nL2ljb25zL21hbGUucG5nXCJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdXRob3JcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdC11c2VyLWltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRob3ItbmFtZSBwcy0yXCI+XG4gICAgICAgICAgICAgICAgICA8YSBbYXR0ci5kaXNhYmxlZF09XCIhdXNlckxvZ2dlZEluXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcG9zdC5hdXRob3IuZmlyc3RfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jcm93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcG9zdC5wdWJsaXNoZWRfYXQgfCBkYXRlOiAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT4uPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+e3sgdGhpc1Bvc3RSZWFkaW5nVGltZShwb3N0LmJvZHkpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hhcmUtcG9zdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKGNsaWNrT3V0c2lkZSk9XCJwb3N0LnNob3dEcm9wZG93biA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHJlZS1kb3RzLXdyYXBwZXJcIiAgKGtleWRvd24uZW50ZXIpPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50LCBwb3N0KVwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQsIHBvc3QpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWxsaXBzaXMtdlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb3N0LnNob3dEcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHA6Ly93d3cuZmFjZWJvb2suY29tL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc2hhcmVcIj48L2k+IFNoYXJlIFBvc3RcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoNCBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGUgbXktM1wiPnt7IHBvc3QudGl0bGUgfX08L2g0PlxuICAgICAgICAgICAgICA8cCBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9keSBtYi0zIHBiLTMgcG9zdC1ib2R5LXRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyBwb3N0LmJvZHkgfCByZW1vdmVIdG1sOiAncXVpbGwnIHwgdGV4dFRydW5jYXRlOiAyMDAgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtYXV0byBtYi0zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvc3Q/LnRhZ3M/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHBvc3Q/LnRhZ3M/LnNsaWNlKDAsIDQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IHBvc3Q/LnRhZ3MsIGl0ZW06IHRhZyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQnlOYW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YU5hbWVdPVwidGFnLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWUtZ3JleVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHRhZy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdC5leHBhbmRlZFRhZ3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHBvc3Q/LnRhZ3M/LnNsaWNlKDQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBwb3N0Py50YWdzLCBpdGVtOiB0YWcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQnlOYW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhTmFtZV09XCJ0YWcubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRhZy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvc3Q/LnRhZ3M/Lmxlbmd0aCA+IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvc3QuZXhwYW5kZWRUYWdzID0gIXBvc3QuZXhwYW5kZWRUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInBvc3QuZXhwYW5kZWRUYWdzID0gIXBvc3QuZXhwYW5kZWRUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCBjdXJzb3ItcG9pbnRlciBtLTEgZXhwYW5kLXRhZ3NcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2ctdmlldyBweS0zIGJsb2ctbGlzdC13cml0ZS12aWV3XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgcG9zdC52aWV3ICE9PSBudWxsID8gcG9zdC52aWV3IDogJzAnIH19IFZpZXc8L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPjxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiPldyaXRlIENvbW1lbnQ8L2E+PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCBwb3N0LnNsdWddXCIgYXJpYS1sYWJlbD1cIkJsb2dcIj48aSBjbGFzcz1cImZhciBmYS1oZWFydFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcG9zdHM/Lmxlbmd0aCAmJiBsb2FkZWRcIj5cbiAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBtZXNzYWdlPVwiV2UgY291bGRuJ3QgZmluZCBhbnkgcmVzb3VyY2VzLlwiID4gPC9wdy1uby1kYXRhPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19