@posiwise/resource-module 0.0.145 → 0.0.146
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.
- package/esm2022/lib/public/components/base/base-resource.component.mjs +4 -1
- package/esm2022/lib/public/components/base/base-top-banner.component.mjs +4 -1
- package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-blogs/resource-blog-top-banner/resource-blog-top-banner.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-case-studies/resource-case-studies.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs +7 -3
- package/esm2022/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes-top-banner/resource-release-notes-top-banner.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-videos/resource-videos-top-banner/resource-videos-top-banner.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +6 -3
- package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +6 -3
- package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +6 -4
- package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +10 -3
- package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +7 -4
- package/esm2022/lib/public/components/testimonial-card/testimonial-card.component.mjs +6 -3
- package/esm2022/lib/public/components/white-papers/white-papers-top-banner/white-papers-top-banner.component.mjs +3 -3
- package/fesm2022/posiwise-resource-module.mjs +90 -42
- package/fesm2022/posiwise-resource-module.mjs.map +1 -1
- package/lib/public/components/base/base-resource.component.d.ts +1 -0
- package/lib/public/components/base/base-top-banner.component.d.ts +1 -0
- package/lib/public/components/reslease-note-card/release-note-card.component.d.ts +1 -0
- package/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.d.ts +1 -0
- package/lib/public/components/resource-company-card/resource-company-card.component.d.ts +1 -0
- package/lib/public/components/resource-integration/resource-integration.component.d.ts +1 -0
- package/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.d.ts +1 -0
- package/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.d.ts +1 -0
- package/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.d.ts +1 -0
- package/lib/public/components/resource-webinars/resource-webinars.component.d.ts +1 -0
- package/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.d.ts +1 -0
- package/lib/public/components/resources/resource-tags/resource-tags.component.d.ts +1 -0
- package/lib/public/components/resources/vault-section/vault-section.component.d.ts +2 -0
- package/lib/public/components/resources-hub/resources-hub.component.d.ts +1 -0
- package/lib/public/components/testimonial-card/testimonial-card.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -41,6 +41,7 @@ export class VaultSectionComponent extends AppBaseComponent {
|
|
|
41
41
|
});
|
|
42
42
|
this.userService.getUserInfo().subscribe(data => {
|
|
43
43
|
this.user = data;
|
|
44
|
+
this.permissionService.user = this.user;
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
47
|
});
|
|
@@ -133,14 +134,20 @@ export class VaultSectionComponent extends AppBaseComponent {
|
|
|
133
134
|
getEffectiveSubscriptionId() {
|
|
134
135
|
return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.appConfig.master_subscription.subscription_id);
|
|
135
136
|
}
|
|
137
|
+
handleImageError(event, fallbackPath) {
|
|
138
|
+
HelperService.handleImageFallbackPath(event, fallbackPath);
|
|
139
|
+
}
|
|
140
|
+
canEditResources() {
|
|
141
|
+
return HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
|
|
142
|
+
}
|
|
136
143
|
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.AuthService }, { token: i3.AdminService }, { token: i4.Title }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
137
|
-
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=\"
|
|
144
|
+
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=\"canEditResources()\"\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 (keydown.enter)=\"openEditResourceModal()\"\n (keydown.space)=\"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 for=\"editTagline\" class=\"form-label\">Tagline</label>\n <input id=\"editTagline\" [(ngModel)]=\"editingTagline\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"editDescription\" class=\"form-label\">Description</label>\n <textarea id=\"editDescription\" [(ngModel)]=\"editingDescription\" rows=\"4\" class=\"form-control\"></textarea>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"resource-image\">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\"\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: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "component", type: i7.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }] }); }
|
|
138
145
|
}
|
|
139
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: VaultSectionComponent, decorators: [{
|
|
140
147
|
type: Component,
|
|
141
|
-
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=\"
|
|
148
|
+
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=\"canEditResources()\"\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 (keydown.enter)=\"openEditResourceModal()\"\n (keydown.space)=\"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 for=\"editTagline\" class=\"form-label\">Tagline</label>\n <input id=\"editTagline\" [(ngModel)]=\"editingTagline\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"editDescription\" class=\"form-label\">Description</label>\n <textarea id=\"editDescription\" [(ngModel)]=\"editingDescription\" rows=\"4\" class=\"form-control\"></textarea>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"resource-image\">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\"\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"] }]
|
|
142
149
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.NgbModal }, { type: i2.AuthService }, { type: i3.AdminService }, { type: i4.Title }], propDecorators: { editResourceModalRef: [{
|
|
143
150
|
type: ViewChild,
|
|
144
151
|
args: ['editResourceModal']
|
|
145
152
|
}] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy92YXVsdC1zZWN0aW9uL3ZhdWx0LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZXMvdmF1bHQtc2VjdGlvbi92YXVsdC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0I7SUF5QnZELFlBQ0ksUUFBa0IsRUFDRCxZQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUFtQjtRQUVwQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMQyxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlB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SyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVRLFdBQVc7UUFDaEIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQscURBQXFEO0lBQzdDLDBCQUEwQjtRQUM5QixPQUFPLGFBQWEsQ0FBQywwQkFBMEIsQ0FDM0MsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FDckQsQ0FBQztJQUNOLENBQUM7K0dBM0pRLHFCQUFxQjttR0FBckIscUJBQXFCLDBNQ2pCbEMsdzhIQXNHQTs7NEZEckZhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxrQkFBa0I7NktBS0ksb0JBQW9CO3NCQUFuRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21VcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9zaGFyZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXZhdWx0LXNlY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92YXVsdC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92YXVsdC1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmF1bHRTZWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKCdlZGl0UmVzb3VyY2VNb2RhbCcpIGVkaXRSZXNvdXJjZU1vZGFsUmVmITogVGVtcGxhdGVSZWY8Q3VzdG9tVXBsb2FkZXJDb21wb25lbnQ+O1xuXG4gICAgY29tcGFueU5hbWU7XG4gICAgcmVzb3VyY2VUYWdMaW5lID0gdGhpcy5hcHBDb25maWcucGFnZXNfY29uZmlnPy5yZXNvdXJjZXMucmVzb3VyY2VzX3RhZ2xpbmU7XG4gICAgcmVzb3VyY2VJbWFnZSA9IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZz8ucmVzb3VyY2VzLnJlc291cmNlc19pbWFnZS51cmw7XG4gICAgcmVzb3VyY2VEZXNjcmlwdGlvbiA9IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZz8ucmVzb3VyY2VzLnJlc291cmNlc19kZXNjcmlwdGlvbjtcbiAgICBkb21haW5JZCA9IHRoaXMuYXBwQ29uZmlnLmRvbWFpbl9pZDtcblxuICAgIGltYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBmaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XG4gICAgaW1hZ2VNb2RhbFJlZjtcblxuICAgIGVkaXRpbmdUYWdsaW5lID0gJyc7XG4gICAgZWRpdGluZ0Rlc2NyaXB0aW9uID0gJyc7XG5cbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgc3Vic2NyaXB0aW9uSWQ7XG5cbiAgICB1c2VyOiBVc2VyO1xuICAgIGlzTWFzdGVyU3Vic2NyaXB0aW9uO1xuICAgIHByZXZpZXdSZXNvdXJjZUltYWdlOiB7IHVybDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfTtcblxuICAgIHByaXZhdGUgc2VvVXBkYXRlVGltZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZTogVGl0bGVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuJCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJldmlld1Jlc291cmNlSW1hZ2UgPSB7XG4gICAgICAgICAgICB1cmw6IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZz8ucmVzb3VyY2VzLnJlc291cmNlc19pbWFnZS51cmwgPz8gJycsXG4gICAgICAgICAgICBuYW1lOiAncmVzb3VyY2VzX2ltYWdlLnBuZydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb21wYW55TmFtZSA9IHRoaXMuYXBwQ29uZmlnPy5jb21wYW55Lm5hbWU7XG5cbiAgICAgICAgLy8gVXNlIHByb3BlciB0aW1lciBtYW5hZ2VtZW50IGluc3RlYWQgb2Ygc2V0VGltZW91dFxuICAgICAgICB0aGlzLnNjaGVkdWxlU0VPTWV0YWRhdGFVcGRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjaGVkdWxlU0VPTWV0YWRhdGFVcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lciB0byBwcmV2ZW50IG11bHRpcGxlIHRpbWVyc1xuICAgICAgICB0aGlzLmNsZWFyU0VPVGltZXIoKTtcblxuICAgICAgICAvLyBTY2hlZHVsZSB0aGUgU0VPIHVwZGF0ZSB3aXRoIHByb3BlciB0aW1lciBtYW5hZ2VtZW50XG4gICAgICAgIHRoaXMuc2VvVXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU0VPTWV0YWRhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuc2VvVXBkYXRlVGltZXIgPSBudWxsOyAvLyBDbGVhciByZWZlcmVuY2UgYWZ0ZXIgZXhlY3V0aW9uXG4gICAgICAgIH0sIDIwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTRU9UaW1lcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VvVXBkYXRlVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlb1VwZGF0ZVRpbWVyKTtcbiAgICAgICAgICAgIHRoaXMuc2VvVXBkYXRlVGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTRU9NZXRhZGF0YSgpIHtcbiAgICAgICAgLy8gVXNlIHJlc291cmNlIHRhZ2xpbmUgYXMgcGFnZSB0aXRsZVxuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZVRhZ0xpbmUpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMucmVzb3VyY2VUYWdMaW5lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSByZXNvdXJjZSBkZXNjcmlwdGlvbiBhcyBtZXRhIGRlc2NyaXB0aW9uXG4gICAgICAgIGlmICh0aGlzLnJlc291cmNlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTWV0YURlc2NyaXB0aW9uKHRoaXMucmVzb3VyY2VEZXNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU1ldGFEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIGxldCBtZXRhRGVzY3JpcHRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9XCJkZXNjcmlwdGlvblwiXScpO1xuICAgICAgICBpZiAoIW1ldGFEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgbWV0YURlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0YScpO1xuICAgICAgICAgICAgbWV0YURlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgnbmFtZScsICdkZXNjcmlwdGlvbicpO1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtZXRhRGVzY3JpcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFEZXNjcmlwdGlvbi5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLCBkZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgb3BlbkVkaXRSZXNvdXJjZU1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRpbmdUYWdsaW5lID0gdGhpcy5yZXNvdXJjZVRhZ0xpbmU7XG4gICAgICAgIHRoaXMuZWRpdGluZ0Rlc2NyaXB0aW9uID0gdGhpcy5yZXNvdXJjZURlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5yZXNvdXJjZUltYWdlO1xuICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuZWRpdFJlc291cmNlTW9kYWxSZWYsIHsgY2VudGVyZWQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgc2F2ZVJlc291cmNlQ29udGVudChtb2RhbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnc3Vic2NyaXB0aW9uX2lkJywgdGhpcy5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlc190YWdsaW5lJywgdGhpcy5lZGl0aW5nVGFnbGluZSB8fCAnJyk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVzb3VyY2VzX2Rlc2NyaXB0aW9uJywgdGhpcy5lZGl0aW5nRGVzY3JpcHRpb24gfHwgJycpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVzb3VyY2VzX2ltYWdlJywgdGhpcy5maWxlKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pbWFnZSkge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZW1vdmVfcmVzb3VyY2VzX2ltYWdlJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkbWluU2VydmljZS51cGRhdGVEb21haW5Db25maWcodGhpcy5hcHBDb25maWc/LmRvbWFpbl9pZCwgZm9ybURhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlVGFnTGluZSA9IHRoaXMuZWRpdGluZ1RhZ2xpbmU7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlRGVzY3JpcHRpb24gPSB0aGlzLmVkaXRpbmdEZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VJbWFnZSA9IHRoaXMuaW1hZ2U7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ1Jlc291cmNlcyB1cGRhdGVkJyk7XG4gICAgICAgICAgICBtb2RhbC5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTRU9NZXRhZGF0YSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuSW1hZ2VNb2RhbChtb2RhbFRlbXBsYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWxUZW1wbGF0ZSwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyB9KTtcbiAgICB9XG5cbiAgICBvbkltYWdlU2VsZWN0ZWQoYmFzZTY0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IGJhc2U2NDtcbiAgICAgICAgdGhpcy5maWxlID0gSGVscGVyU2VydmljZS5jb252ZXJ0QmFzZTY0VG9GaWxlKGJhc2U2NCk7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmVJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIENsZWFuIHVwIHRpbWVyIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuY2xlYXJTRU9UaW1lcigpO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBlZmZlY3RpdmUgc3Vic2NyaXB0aW9uIElEICovXG4gICAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gSGVscGVyU2VydmljZS5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZChcbiAgICAgICAgICAgIHRoaXMudXNlcixcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbl9pZFxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwidmF1bHQtc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwic2tld2VkLWJnXCI+PC9kaXY+XG5cbiAgPCEtLSBFZGl0IEljb24gKHRvcC1yaWdodCkgLS0+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIHZhdWx0LXJvd1wiPlxuICAgICAgPCEtLSBMZWZ0IENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIHRleHQtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGxpbmVcIj57e3Jlc291cmNlVGFnTGluZSB8fCAnVVBEQVRFIE1FIE9OIEFETUlOL0RPTUFJTlMgTU9EVUxFJ319PC9oMj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCB0YWctZWRpdC1pY29uIGluLXBhZ2UtZWRpdC1pY29uIG10LTQgbXMtMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgdGl0bGU9XCJFZGl0IFJlc291cmNlXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkVkaXRSZXNvdXJjZU1vZGFsKClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9wZW5FZGl0UmVzb3VyY2VNb2RhbCgpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvcGVuRWRpdFJlc291cmNlTW9kYWwoKVwiXG4gICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tY29udGVudFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJyZXNvdXJjZURlc2NyaXB0aW9uIHx8ICdVUERBVEUgTUUgT04gQURNSU4vRE9NQUlOUyBNT0RVTEUuJ1wiPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUmlnaHQgQ29udGVudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBjb2wtMTIgaW1nLXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc291cmNlSW1hZ2U7IGVsc2Ugbm9WaWRlb1wiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJyZXNvdXJjZUltYWdlXCIgYWx0PVwiVmF1bHQgTW9ja3VwXCIgY2xhc3M9XCJpbWctZmx1aWRcIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI25vVmlkZW8+XG4gICAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ0FERCBNRSBPTiBBRE1JTi9ET01BSU5TIE1PRFVMRScgfCB0cmFuc2xvY29cIj48L3B3LW5vLWRhdGE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbjwhLS0gRWRpdCBNb2RhbCAtLT5cbjxuZy10ZW1wbGF0ZSAjZWRpdFJlc291cmNlTW9kYWwgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IFJlc291cmNlczwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiZWRpdFRhZ2xpbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5UYWdsaW5lPC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cImVkaXRUYWdsaW5lXCIgWyhuZ01vZGVsKV09XCJlZGl0aW5nVGFnbGluZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGZvcj1cImVkaXREZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBpZD1cImVkaXREZXNjcmlwdGlvblwiIFsobmdNb2RlbCldPVwiZWRpdGluZ0Rlc2NyaXB0aW9uXCIgcm93cz1cIjRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPjwvdGV4dGFyZWE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJyZXNvdXJjZS1pbWFnZVwiPlJlc291cmNlIEltYWdlPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbc3JjXT1cImltYWdlIHx8ICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZSB3LTEwMCBtYi0yXCJcbiAgICAgICAgICBhbHQ9XCJSZXNvdXJjZVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50LCAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZycpXCIgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiPlxuICAgICAgICAgICAge3sgZmlsZSB8fCBpbWFnZSA/ICdFZGl0JyA6ICdBZGQnIH19IFBpY3R1cmVcbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGkgKm5nSWY9XCJpbWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgSW1hZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlSW1hZ2UoKVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZVJlc291cmNlQ29udGVudChtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cblxuXG48bmctdGVtcGxhdGUgI2ltYWdlQ3JvcENvbnRlbnQgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5VcGxvYWQgUGljdHVyZTwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxzbWFsbD5Zb3UgY2FuIHVwbG9hZCBhIEpQRywgR0lGLCBvciBQTkcgZmlsZS48L3NtYWxsPlxuICAgIDxwdy1pbWFnZS1jcm9wcGVyXG4gICAgICBbYXNwZWN0UmF0aW9dPVwiJ2R5bmFtaWMnXCJcbiAgICAgIChpbWFnZVNlbGVjdGlvbkV2ZW50KT1cIm9uSW1hZ2VTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cIm1vZGFsLmNsb3NlKClcIj5cbiAgICA8L3B3LWltYWdlLWNyb3BwZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy92YXVsdC1zZWN0aW9uL3ZhdWx0LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZXMvdmF1bHQtc2VjdGlvbi92YXVsdC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0I7SUF5QnZELFlBQ0ksUUFBa0IsRUFDRCxZQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUFtQjtRQUVwQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMQyxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlB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c3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy12YXVsdC1zZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmF1bHQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmF1bHQtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZhdWx0U2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnZWRpdFJlc291cmNlTW9kYWwnKSBlZGl0UmVzb3VyY2VNb2RhbFJlZiE6IFRlbXBsYXRlUmVmPEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50PjtcblxuICAgIGNvbXBhbnlOYW1lO1xuICAgIHJlc291cmNlVGFnTGluZSA9IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZz8ucmVzb3VyY2VzLnJlc291cmNlc190YWdsaW5lO1xuICAgIHJlc291cmNlSW1hZ2UgPSB0aGlzLmFwcENvbmZpZy5wYWdlc19jb25maWc/LnJlc291cmNlcy5yZXNvdXJjZXNfaW1hZ2UudXJsO1xuICAgIHJlc291cmNlRGVzY3JpcHRpb24gPSB0aGlzLmFwcENvbmZpZy5wYWdlc19jb25maWc/LnJlc291cmNlcy5yZXNvdXJjZXNfZGVzY3JpcHRpb247XG4gICAgZG9tYWluSWQgPSB0aGlzLmFwcENvbmZpZy5kb21haW5faWQ7XG5cbiAgICBpbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgZmlsZTogRmlsZSB8IG51bGwgPSBudWxsO1xuICAgIGltYWdlTW9kYWxSZWY7XG5cbiAgICBlZGl0aW5nVGFnbGluZSA9ICcnO1xuICAgIGVkaXRpbmdEZXNjcmlwdGlvbiA9ICcnO1xuXG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIHN1YnNjcmlwdGlvbklkO1xuXG4gICAgdXNlcjogVXNlcjtcbiAgICBpc01hc3RlclN1YnNjcmlwdGlvbjtcbiAgICBwcmV2aWV3UmVzb3VyY2VJbWFnZTogeyB1cmw6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG5cbiAgICBwcml2YXRlIHNlb1VwZGF0ZVRpbWVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlciA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UudXNlciA9IHRoaXMudXNlcjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJldmlld1Jlc291cmNlSW1hZ2UgPSB7XG4gICAgICAgICAgICB1cmw6IHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZz8ucmVzb3VyY2VzLnJlc291cmNlc19pbWFnZS51cmwgPz8gJycsXG4gICAgICAgICAgICBuYW1lOiAncmVzb3VyY2VzX2ltYWdlLnBuZydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb21wYW55TmFtZSA9IHRoaXMuYXBwQ29uZmlnPy5jb21wYW55Lm5hbWU7XG5cbiAgICAgICAgLy8gVXNlIHByb3BlciB0aW1lciBtYW5hZ2VtZW50IGluc3RlYWQgb2Ygc2V0VGltZW91dFxuICAgICAgICB0aGlzLnNjaGVkdWxlU0VPTWV0YWRhdGFVcGRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjaGVkdWxlU0VPTWV0YWRhdGFVcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lciB0byBwcmV2ZW50IG11bHRpcGxlIHRpbWVyc1xuICAgICAgICB0aGlzLmNsZWFyU0VPVGltZXIoKTtcblxuICAgICAgICAvLyBTY2hlZHVsZSB0aGUgU0VPIHVwZGF0ZSB3aXRoIHByb3BlciB0aW1lciBtYW5hZ2VtZW50XG4gICAgICAgIHRoaXMuc2VvVXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU0VPTWV0YWRhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuc2VvVXBkYXRlVGltZXIgPSBudWxsOyAvLyBDbGVhciByZWZlcmVuY2UgYWZ0ZXIgZXhlY3V0aW9uXG4gICAgICAgIH0sIDIwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTRU9UaW1lcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VvVXBkYXRlVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlb1VwZGF0ZVRpbWVyKTtcbiAgICAgICAgICAgIHRoaXMuc2VvVXBkYXRlVGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTRU9NZXRhZGF0YSgpIHtcbiAgICAgICAgLy8gVXNlIHJlc291cmNlIHRhZ2xpbmUgYXMgcGFnZSB0aXRsZVxuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZVRhZ0xpbmUpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMucmVzb3VyY2VUYWdMaW5lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSByZXNvdXJjZSBkZXNjcmlwdGlvbiBhcyBtZXRhIGRlc2NyaXB0aW9uXG4gICAgICAgIGlmICh0aGlzLnJlc291cmNlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTWV0YURlc2NyaXB0aW9uKHRoaXMucmVzb3VyY2VEZXNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU1ldGFEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIGxldCBtZXRhRGVzY3JpcHRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9XCJkZXNjcmlwdGlvblwiXScpO1xuICAgICAgICBpZiAoIW1ldGFEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgbWV0YURlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0YScpO1xuICAgICAgICAgICAgbWV0YURlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgnbmFtZScsICdkZXNjcmlwdGlvbicpO1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtZXRhRGVzY3JpcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFEZXNjcmlwdGlvbi5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLCBkZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgb3BlbkVkaXRSZXNvdXJjZU1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRpbmdUYWdsaW5lID0gdGhpcy5yZXNvdXJjZVRhZ0xpbmU7XG4gICAgICAgIHRoaXMuZWRpdGluZ0Rlc2NyaXB0aW9uID0gdGhpcy5yZXNvdXJjZURlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5yZXNvdXJjZUltYWdlO1xuICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuZWRpdFJlc291cmNlTW9kYWxSZWYsIHsgY2VudGVyZWQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgc2F2ZVJlc291cmNlQ29udGVudChtb2RhbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnc3Vic2NyaXB0aW9uX2lkJywgdGhpcy5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlc190YWdsaW5lJywgdGhpcy5lZGl0aW5nVGFnbGluZSB8fCAnJyk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVzb3VyY2VzX2Rlc2NyaXB0aW9uJywgdGhpcy5lZGl0aW5nRGVzY3JpcHRpb24gfHwgJycpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVzb3VyY2VzX2ltYWdlJywgdGhpcy5maWxlKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pbWFnZSkge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZW1vdmVfcmVzb3VyY2VzX2ltYWdlJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkbWluU2VydmljZS51cGRhdGVEb21haW5Db25maWcodGhpcy5hcHBDb25maWc/LmRvbWFpbl9pZCwgZm9ybURhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlVGFnTGluZSA9IHRoaXMuZWRpdGluZ1RhZ2xpbmU7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlRGVzY3JpcHRpb24gPSB0aGlzLmVkaXRpbmdEZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VJbWFnZSA9IHRoaXMuaW1hZ2U7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ1Jlc291cmNlcyB1cGRhdGVkJyk7XG4gICAgICAgICAgICBtb2RhbC5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTRU9NZXRhZGF0YSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuSW1hZ2VNb2RhbChtb2RhbFRlbXBsYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWxUZW1wbGF0ZSwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyB9KTtcbiAgICB9XG5cbiAgICBvbkltYWdlU2VsZWN0ZWQoYmFzZTY0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IGJhc2U2NDtcbiAgICAgICAgdGhpcy5maWxlID0gSGVscGVyU2VydmljZS5jb252ZXJ0QmFzZTY0VG9GaWxlKGJhc2U2NCk7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmVJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIENsZWFuIHVwIHRpbWVyIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuY2xlYXJTRU9UaW1lcigpO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBlZmZlY3RpdmUgc3Vic2NyaXB0aW9uIElEICovXG4gICAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gSGVscGVyU2VydmljZS5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZChcbiAgICAgICAgICAgIHRoaXMudXNlcixcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbl9pZFxuICAgICAgICApO1xuICAgIH1cbiAgICBoYW5kbGVJbWFnZUVycm9yKGV2ZW50OiBFdmVudCwgZmFsbGJhY2tQYXRoKTogdm9pZCB7XG4gICAgICAgIEhlbHBlclNlcnZpY2UuaGFuZGxlSW1hZ2VGYWxsYmFja1BhdGgoZXZlbnQsIGZhbGxiYWNrUGF0aCk7XG4gICAgfVxuXG4gICAgY2FuRWRpdFJlc291cmNlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEhlbHBlclNlcnZpY2UuY2FuRWRpdFJlc291cmNlcyh0aGlzLnVzZXIsIHRoaXMudXNlckxvZ2dlZEluLCB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlKTtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInZhdWx0LXNlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cInNrZXdlZC1iZ1wiPjwvZGl2PlxuXG4gIDwhLS0gRWRpdCBJY29uICh0b3AtcmlnaHQpIC0tPlxuXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciB2YXVsdC1yb3dcIj5cbiAgICAgIDwhLS0gTGVmdCBDb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC0xMiB0ZXh0LWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgIDxoMiBjbGFzcz1cImhlYWRsaW5lXCI+e3tyZXNvdXJjZVRhZ0xpbmUgfHwgJ1VQREFURSBNRSBPTiBBRE1JTi9ET01BSU5TIE1PRFVMRSd9fTwvaDI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAqbmdJZj1cImNhbkVkaXRSZXNvdXJjZXMoKVwiXG4gICAgICAgICAgY2xhc3M9XCJmYSBmYS1lZGl0IHRhZy1lZGl0LWljb24gaW4tcGFnZS1lZGl0LWljb24gbXQtNCBtcy0zIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICB0aXRsZT1cIkVkaXQgUmVzb3VyY2VcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRWRpdFJlc291cmNlTW9kYWwoKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib3BlbkVkaXRSZXNvdXJjZU1vZGFsKClcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9wZW5FZGl0UmVzb3VyY2VNb2RhbCgpXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cInJlc291cmNlRGVzY3JpcHRpb24gfHwgJ1VQREFURSBNRSBPTiBBRE1JTi9ET01BSU5TIE1PRFVMRS4nXCI+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBSaWdodCBDb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC0xMiBpbWctd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzb3VyY2VJbWFnZTsgZWxzZSBub1ZpZGVvXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cInJlc291cmNlSW1hZ2VcIiBhbHQ9XCJWYXVsdCBNb2NrdXBcIiBjbGFzcz1cImltZy1mbHVpZFwiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9WaWRlbz5cbiAgICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInQUREIE1FIE9OIEFETUlOL0RPTUFJTlMgTU9EVUxFJyB8IHRyYW5zbG9jb1wiPjwvcHctbm8tZGF0YT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cblxuPCEtLSBFZGl0IE1vZGFsIC0tPlxuPG5nLXRlbXBsYXRlICNlZGl0UmVzb3VyY2VNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgUmVzb3VyY2VzPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJlZGl0VGFnbGluZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlRhZ2xpbmU8L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwiZWRpdFRhZ2xpbmVcIiBbKG5nTW9kZWwpXT1cImVkaXRpbmdUYWdsaW5lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiZWRpdERlc2NyaXB0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgPHRleHRhcmVhIGlkPVwiZWRpdERlc2NyaXB0aW9uXCIgWyhuZ01vZGVsKV09XCJlZGl0aW5nRGVzY3JpcHRpb25cIiByb3dzPVwiNFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInJlc291cmNlLWltYWdlXCI+UmVzb3VyY2UgSW1hZ2U8L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtzcmNdPVwiaW1hZ2UgfHwgJ2Fzc2V0cy9pbWcvcmVzb3VyY2UvYmxvZy5wbmcnXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkltYWdlTW9kYWwoaW1hZ2VDcm9wQ29udGVudClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImltYWdlIHctMTAwIG1iLTJcIlxuICAgICAgICAgIGFsdD1cIlJlc291cmNlXCJcbiAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigkZXZlbnQsICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJylcIiAvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgKGNsaWNrKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCI+XG4gICAgICAgICAgICB7eyBmaWxlIHx8IGltYWdlID8gJ0VkaXQnIDogJ0FkZCcgfX0gUGljdHVyZVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8aSAqbmdJZj1cImltYWdlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb24gdGV4dC1kYW5nZXIgbXMtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICB0aXRsZT1cIlJlbW92ZSBJbWFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW1hZ2UoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZW1vdmVJbWFnZSgpXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzYXZlUmVzb3VyY2VDb250ZW50KG1vZGFsKVwiPlNhdmU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG5cbjxuZy10ZW1wbGF0ZSAjaW1hZ2VDcm9wQ29udGVudCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlVwbG9hZCBQaWN0dXJlPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPHNtYWxsPllvdSBjYW4gdXBsb2FkIGEgSlBHLCBHSUYsIG9yIFBORyBmaWxlLjwvc21hbGw+XG4gICAgPHB3LWltYWdlLWNyb3BwZXJcbiAgICAgIFthc3BlY3RSYXRpb109XCInZHluYW1pYydcIlxuICAgICAgKGltYWdlU2VsZWN0aW9uRXZlbnQpPVwib25JbWFnZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwibW9kYWwuY2xvc2UoKVwiPlxuICAgIDwvcHctaW1hZ2UtY3JvcHBlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -178,16 +178,19 @@ export class ResourceHubComponent extends AppBaseComponent {
|
|
|
178
178
|
}
|
|
179
179
|
/** Helper method to get effective subscription ID */
|
|
180
180
|
getEffectiveSubscriptionId() {
|
|
181
|
-
return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.
|
|
181
|
+
return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.appConfig.master_subscription.subscription_id);
|
|
182
|
+
}
|
|
183
|
+
canEditResources() {
|
|
184
|
+
return HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
|
|
182
185
|
}
|
|
183
186
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHubComponent, deps: [{ token: i1.ResourceService }, { token: i2.AuthService }, { token: i2.TagService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
184
|
-
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 (keydown.enter)=\"navigateToTagList()\"\n (keydown.space)=\"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 }); }
|
|
187
|
+
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=\"canEditResources()\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer mt-2 me-3\"\n (click)=\"navigateToTagList()\"\n (keydown.enter)=\"navigateToTagList()\"\n (keydown.space)=\"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=\"canEditResources()\"\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 }); }
|
|
185
188
|
}
|
|
186
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHubComponent, decorators: [{
|
|
187
190
|
type: Component,
|
|
188
|
-
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 (keydown.enter)=\"navigateToTagList()\"\n (keydown.space)=\"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"] }]
|
|
191
|
+
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=\"canEditResources()\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer mt-2 me-3\"\n (click)=\"navigateToTagList()\"\n (keydown.enter)=\"navigateToTagList()\"\n (keydown.space)=\"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=\"canEditResources()\"\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"] }]
|
|
189
192
|
}], ctorParameters: () => [{ type: i1.ResourceService }, { type: i2.AuthService }, { type: i2.TagService }, { type: i0.Injector }], propDecorators: { onWindowScroll: [{
|
|
190
193
|
type: HostListener,
|
|
191
194
|
args: ['window:scroll', []]
|
|
192
195
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBR1IsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVzVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUE0Q3RELFlBQ3FCLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ3ZDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBOUNuQyxpQkFBWSxHQUF5QyxJQUFJLENBQUM7UUFHbEUsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVW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VyxFQUFFLENBQUM7UUFDNUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsMEJBQTBCO1FBQzlCLE9BQU8sYUFBYSxDQUFDLDBCQUEwQixDQUMzQyxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FDNUIsQ0FBQztJQUNOLENBQUM7K0dBek9RLG9CQUFvQjttR0FBcEIsb0JBQW9CLDBJQzNCakMsNDlQQXVMQTs7NEZENUphLG9CQUFvQjtrQkFUaEMsU0FBUzsrQkFDSSxlQUFlLGlCQU1WLGlCQUFpQixDQUFDLElBQUk7OEpBcUtyQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFJlc291cmNlLCBUYWcsIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1wb3N0cy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL3Jlc291cmNlcy1odWIuY29tcG9uZW50LnNjc3MnLFxuICAgICAgICAnLi4vcmVzb3VyY2UtY29tcGFueS1jYXJkL3Jlc291cmNlLWNvbXBhbnktY2FyZC5jb21wb25lbnQuc2NzcydcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VIdWJDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgZGVsYXlUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgdXNlclN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgZGF0YSA9IFtdO1xuXG4gICAgcG9zdHM6IFJlc291cmNlW10gPSBbXTtcbiAgICB0YWdzOiBUYWdbXSA9IFtdO1xuXG4gICAgc2VsZWN0ZWRUYWdzID0gW107XG5cbiAgICBjdXJyZW50UGFnZSA9IDE7XG4gICAgcGFnZVNpemUgPSAyMDtcbiAgICBvYmplY3RDb3VudCA9IDA7XG5cbiAgICBzZWFyY2hUZXh0SXRlbXMgPSAnJztcbiAgICBzZWFyY2hJbnB1dCA9IGZhbHNlO1xuXG4gICAgcmVhZGluZ1RpbWU6IG51bWJlcjtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgbG9hZGluZyA9IHRydWU7XG4gICAgbG9hZGVkID0gZmFsc2U7XG5cbiAgICBtYXN0ZXJTdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuICAgIHN1YnNjcmlwdGlvbklkO1xuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBpc01hc3RlclN1YnNjcmlwdGlvbjtcblxuICAgIHNjcm9sbExvY2tlZCA9IGZhbHNlO1xuXG4gICAgaWNvbkNsYXNzZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAnZmEtbGlnaHRidWxiJyxcbiAgICAgICAgJ2ZhLXJvY2tldCcsXG4gICAgICAgICdmYS1maWxlLWFsdCcsXG4gICAgICAgICdmYS11c2VycycsXG4gICAgICAgICdmYS12aWRlbycsXG4gICAgICAgICdmYS1wZW5jaWwtYWx0JyxcbiAgICAgICAgJ2ZhLWJvb2stb3BlbicsXG4gICAgICAgICdmYS1jb2dzJ1xuICAgIF07XG4gICAgdXNlcjogVXNlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlU2VydmljZTogUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuJCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU3ViID0gdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBvc3RzQW5kVGFncygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFBvc3RzQW5kVGFncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB0aGlzLnJlYWRpbmdUaW1lID0gMDtcbiAgICB9XG5cbiAgICBnZXRQb3N0c0FuZFRhZ3MoKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIHJlc1Bvc3RzOiB0aGlzLnJlc291cmNlU2VydmljZS5nZXRQdWJsaWNQb3N0cyhcbiAgICAgICAgICAgICAgICB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCksXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dEl0ZW1zXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmVzVGFnczogdGhpcy50YWdTZXJ2aWNlLmdldFRhZ3NCeVR5cGUoXG4gICAgICAgICAgICAgICAgJ3Bvc3RfY2F0ZWdvcmllcycsXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0cyA9IHJlcz8ucmVzUG9zdHM/LnBvc3RzO1xuICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0Q291bnQgPSByZXM/LnJlc1Bvc3RzLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXM/LnJlc1Bvc3RzPy5wb3N0cztcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXM/LnJlc1Bvc3RzPy5wb3N0cy5tYXAocG9zdCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5wb3N0LFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZFRhZ3M6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy5wb3N0cz8ubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gcmVzPy5yZXNUYWdzPy50YWdzPy5maWx0ZXIodGFnID0+IHRhZy52aXNpYmxlX2luX3Jlc291cmNlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gdGhpcy50YWdzLm1hcCh0YWcgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGFnXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZURyb3Bkb3duKGV2ZW50OiBFdmVudCwgcG9zdCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcG9zdC5zaG93RHJvcGRvd24gPSAhcG9zdC5zaG93RHJvcGRvd247XG4gICAgfVxuXG4gICAgZ2V0UG9zdHMocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyLCBmZXRjaEFsbCA9IGZhbHNlLCBhcHBlbmQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmV0Y2hBbGwpIHRoaXMuc2VsZWN0ZWRUYWdzID0gW107XG5cbiAgICAgICAgaWYgKCFhcHBlbmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnQ2F0ZWdvcnlQYXJhbSA9IHRoaXMuc2VsZWN0ZWRUYWdzLm1hcCh0YWcgPT4gdGFnLnRhZ19jYXRlZ29yeV9pZCkuam9pbignLCcpO1xuXG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHVibGljUG9zdHMoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpLFxuICAgICAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICAgICAgYXBwZW5kID8gMTAgOiBwYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRleHRJdGVtcyxcbiAgICAgICAgICAgICAgICB0YWdDYXRlZ29yeVBhcmFtXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9iamVjdENvdW50ID0gcmVzcG9uc2Uub2JqZWN0X2NvdW50O1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdHMgPSBhcHBlbmQgPyBbLi4udGhpcy5wb3N0cywgLi4ucmVzcG9uc2UucG9zdHNdIDogcmVzcG9uc2UucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gWy4uLnRoaXMucG9zdHNdO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy5wb3N0cz8ubGVuZ3RoO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2VhcmNoKHNlY29uZHM6IG51bWJlcikge1xuICAgICAgICBsZXQgZGVsYXkgPSAwO1xuICAgICAgICBkZWxheSA9IHNlY29uZHMgKiAxMDAwO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXQpO1xuICAgICAgICBjb25zdCBkZWxheVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgICAgdGhpcy5nZXRQb3N0cygxLCB0aGlzLnBhZ2VTaXplKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuXG4gICAgICAgIHRoaXMuZGVsYXlUaW1lb3V0ID0gZGVsYXlUaW1lb3V0O1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9UYWdMaXN0KCk6IHZvaWQge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLm5hdmlnYXRlVG9UYWdMaXN0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICAgIG9uV2luZG93U2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZICsgd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBwYWdlSGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodDtcblxuICAgICAgICBjb25zdCBuZWFyQm90dG9tID0gc2Nyb2xsUG9zaXRpb24gPj0gcGFnZUhlaWdodCAtIDEwMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBuZWFyQm90dG9tICYmXG4gICAgICAgICAgICB0aGlzLnBvc3RzLmxlbmd0aCA8IHRoaXMub2JqZWN0Q291bnQgJiZcbiAgICAgICAgICAgICF0aGlzLmxvYWRpbmcgJiZcbiAgICAgICAgICAgICF0aGlzLnNjcm9sbExvY2tlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsTG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcblxuICAgICAgICAgICAgdGhpcy5nZXRQb3N0cyh0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLnBhZ2VTaXplLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsTG9ja2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCh0YWdJZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFncy5tYXAodGFnID0+IHRhZy5pZCkuaW5jbHVkZXModGFnSWQpO1xuICAgIH1cblxuICAgIHRhZ1Bvc3Qoc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICB0YWcgPT4gdGFnLnRhZ19jYXRlZ29yeV9pZCA9PT0gc2VsZWN0ZWRUYWc/LnRhZ19jYXRlZ29yeV9pZCAmJiB0YWcuaWQgPT09IHNlbGVjdGVkVGFnLmlkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgdGFnX2NhdGVnb3J5X2lkOiBzZWxlY3RlZFRhZz8udGFnX2NhdGVnb3J5X2lkLFxuICAgICAgICAgICAgICAgIGlkOiBzZWxlY3RlZFRhZy5pZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIHRoaXMuZ2V0UG9zdHMoMSwgdGhpcy5wYWdlU2l6ZSk7XG4gICAgfVxuXG4gICAgdGhpc1Bvc3RSZWFkaW5nVGltZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgY29uc3Qgd29yZHNQZXJNaW51dGUgPSAyMDA7XG4gICAgICAgICAgICBjb25zdCBub09mV29yZHMgPSB0ZXh0LnNwbGl0KC9cXHMvZykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IG5vT2ZXb3JkcyAvIHdvcmRzUGVyTWludXRlO1xuICAgICAgICAgICAgY29uc3QgcmVhZFRpbWUgPSBNYXRoLmNlaWwobWludXRlcyk7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtyZWFkVGltZX0gbWludXRlIHJlYWRgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVzZXJTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIEhlbHBlciBtZXRob2QgdG8gZ2V0IGVmZmVjdGl2ZSBzdWJzY3JpcHRpb24gSUQgKi9cbiAgICBwcml2YXRlIGdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBIZWxwZXJTZXJ2aWNlLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKFxuICAgICAgICAgICAgdGhpcy51c2VyLFxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgIHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWRcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8cHctcmVzb3VyY2UtaGVhZGVyPjwvcHctcmVzb3VyY2UtaGVhZGVyPlxuPGRpdiBjbGFzcz1cImFsbC1wb3N0cyBweS01XCI+XG5cbiAgPGRpdiBjbGFzcz1cInJvdyBtdC0xIG1iLTQgcHgtMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTAgbXQtc20tMyBkLWZsZXhcIj5cbiAgICAgICAgPGkgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgdXNlcj8uYXV0aD8uZ3JhbnRlZFsnUGFnZXMuU3VwZXJBZG1pbiddXCJcbiAgICAgIGNsYXNzPVwiZmEgZmEtZWRpdCBpbi1wYWdlLWVkaXQtaWNvbiBjdXJzb3ItcG9pbnRlciBtdC0yIG1lLTNcIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9UYWdMaXN0KClcIlxuICAgICAgKGtleWRvd24uZW50ZXIpPVwibmF2aWdhdGVUb1RhZ0xpc3QoKVwiXG4gICAgICAoa2V5ZG93bi5zcGFjZSk9XCJuYXZpZ2F0ZVRvVGFnTGlzdCgpXCJcbiAgICAgIHRpdGxlPVwiRWRpdCBMb2dvXCI+PC9pPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBzZWFyY2gtaWNvblwiPjwvaT5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRJdGVtc1wiIHBJbnB1dFRleHQgc2l6ZT1cIjUwXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggcmVzb3VyY2VzLi4uXCJcbiAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoKDEpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0IHRvcC1zZWFyY2gtaW5wdXRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJvdyByZXNvdXJjZS1yb3dcIj5cbiAgICA8IS0tIEFsbCBSZXNvdXJjZXMgQ2FyZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLXNtLTYgbWItNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlc291cmNlLWNhcmQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwLTNcIlxuICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJnZXRQb3N0cygxLCAyMCwgdHJ1ZSlcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IHNlbGVjdGVkVGFncy5sZW5ndGggPT09IDAgfVwiXG4gICAgICAgICAgIChjbGljayk9XCJnZXRQb3N0cygxLCAyMCwgdHJ1ZSlcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1sYXllci1ncm91cCByZXNvdXJjZS1pY29uIG1lLTNcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzb3VyY2UtdGV4dFwiPkFsbCBSZXNvdXJjZXM8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRHluYW1pYyBUYWdzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBjb2wtc20tNiBtYi00XCJcbiAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiPlxuICAgICAgPGRpdlxuICAgICAgICAgICBjbGFzcz1cInJlc291cmNlLWNhcmQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwLTNcIlxuICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0YWdQb3N0KHRhZylcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGlzU2VsZWN0ZWQodGFnLmlkKSB9XCJcbiAgICAgICAgICAgKGNsaWNrKT1cInRhZ1Bvc3QodGFnKVwiPlxuICAgICAgICAgICA8aSAqbmdJZj1cInRhZz8uaWNvbl9uYW1lXCIgY2xhc3M9XCJmYVwiIFtuZ0NsYXNzXT1cInRhZy5pY29uX25hbWUgKyAnIHJlc291cmNlLWljb24gbWUtMydcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzb3VyY2UtdGV4dFwiPnt7IHRhZy5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZyAmJiAhbG9hZGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIj5cbiAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb3N0cz8ubGVuZ3RoICYmICFsb2FkaW5nXCI+XG4gICAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJibG9nLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00IG1iLTUgbXMtMSBtZS0xIGJsb2ctbGlzdGluZ1wiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBvc3Qgb2YgZGF0YVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtc20tMTIgY29sLXhzLTEyIG15LWF1dG9cIj5cbiAgICAgICAgICAgIDxwdy1yZXNvdXJjZS1lZGl0LWNhcmRcbiAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgdXNlcj8uYXV0aD8uZ3JhbnRlZFsnUGFnZXMuQWRtaW4nXVwiXG4gICAgICAgICAgICAgIFtpZF09XCJwb3N0Py5pZFwiXG4gICAgICAgICAgICAgIFtyZXNvdXJjZURhdGFdPVwicG9zdFwiXG4gICAgICAgICAgICAgICh1cGRhdGVkKT1cImdldFBvc3RzKDEsIHBhZ2VTaXplKVwiPlxuICAgICAgICAgICAgPC9wdy1yZXNvdXJjZS1lZGl0LWNhcmQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ibG9nLWltYWdlXCIgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCBwb3N0LnNsdWddXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwb3N0LnBpY3R1cmU/LnVybFwiXG4gICAgICAgICAgICAgICAgYWx0PVwiUG9zdCBMaXN0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImltZy1mbHVpZFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTEyIGNvbC14cy0xMiBweC00IHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnLWRpdlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aG9yIGQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgIDxhIFthdHRyLmRpc2FibGVkXT1cIiF1c2VyTG9nZ2VkSW5cIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZW1iZXJzJywgcG9zdD8uYXV0aG9yPy5zbHVnXVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicG9zdC5hdXRob3I/LmF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJwb3N0LmF1dGhvcj8uYXZhdGFyWzBdPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkF1dGhvclwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhcG9zdC5hdXRob3I/LmF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9pbWcvaWNvbnMvbWFsZS5wbmdcIlxuICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkF1dGhvclwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWZhdWx0LXVzZXItaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dGhvci1uYW1lIHBzLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxhIFthdHRyLmRpc2FibGVkXT1cIiF1c2VyTG9nZ2VkSW5cIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZW1iZXJzJywgcG9zdD8uYXV0aG9yPy5zbHVnXVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwb3N0LmF1dGhvci5maXJzdF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNyb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwb3N0LnB1Ymxpc2hlZF9hdCB8IGRhdGU6ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPi48L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj57eyB0aGlzUG9zdFJlYWRpbmdUaW1lKHBvc3QuYm9keSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1wb3N0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAoY2xpY2tPdXRzaWRlKT1cInBvc3Quc2hvd0Ryb3Bkb3duID0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMtd3JhcHBlclwiICAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQsIHBvc3QpXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudCwgcG9zdClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1lbGxpcHNpcy12XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBvc3Quc2hvd0Ryb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cDovL3d3dy5mYWNlYm9vay5jb20vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaGFyZVwiPjwvaT4gU2hhcmUgUG9zdFxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGg0IFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZSBteS0zXCI+e3sgcG9zdC50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgIDxwIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJib2R5IG1iLTMgcGItMyBwb3N0LWJvZHktdGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7IHBvc3QuYm9keSB8IHJlbW92ZUh0bWw6ICdxdWlsbCcgfCB0ZXh0VHJ1bmNhdGU6IDIwMCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtdC1hdXRvIG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdD8udGFncz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcG9zdD8udGFncz8uc2xpY2UoMCwgNClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwRHluYW1pY0JhZGdlXT1cInsgaXRlbXNBcnJheTogcG9zdD8udGFncywgaXRlbTogdGFnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JCeU5hbWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhTmFtZV09XCJ0YWcubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZS1ncmV5XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdGFnLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb3N0LmV4cGFuZGVkVGFnc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcG9zdD8udGFncz8uc2xpY2UoNClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIG0tMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IHBvc3Q/LnRhZ3MsIGl0ZW06IHRhZyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JCeU5hbWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFOYW1lXT1cInRhZy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWUtZ3JleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdGFnLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9zdD8udGFncz8ubGVuZ3RoID4gNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9zdC5leHBhbmRlZFRhZ3MgPSAhcG9zdC5leHBhbmRlZFRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicG9zdC5leHBhbmRlZFRhZ3MgPSAhcG9zdC5leHBhbmRlZFRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIGN1cnNvci1wb2ludGVyIG0tMSBleHBhbmQtdGFnc1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvZy12aWV3IHB5LTMgYmxvZy1saXN0LXdyaXRlLXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyBwb3N0LnZpZXcgIT09IG51bGwgPyBwb3N0LnZpZXcgOiAnMCcgfX0gVmlldzwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+PGEgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCBwb3N0LnNsdWddXCI+V3JpdGUgQ29tbWVudDwvYT48L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIiBhcmlhLWxhYmVsPVwiQmxvZ1wiPjxpIGNsYXNzPVwiZmFyIGZhLWhlYXJ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwb3N0cz8ubGVuZ3RoICYmIGxvYWRlZFwiPlxuICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIG1lc3NhZ2U9XCJXZSBjb3VsZG4ndCBmaW5kIGFueSByZXNvdXJjZXMuXCIgPiA8L3B3LW5vLWRhdGE+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1odWIvcmVzb3VyY2VzLWh1Yi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBR1IsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVzVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUE0Q3RELFlBQ3FCLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ3ZDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBOUNuQyxpQkFBWSxHQUF5QyxJQUFJLENBQUM7UUFHbEUsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVW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VyxFQUFFLENBQUM7UUFDNUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsMEJBQTBCO1FBQzlCLE9BQU8sYUFBYSxDQUFDLDBCQUEwQixDQUMzQyxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUNyRCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRyxDQUFDOytHQTdPUSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwSUMzQmpDLHc1UEF1TEE7OzRGRDVKYSxvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0ksZUFBZSxpQkFNVixpQkFBaUIsQ0FBQyxJQUFJOzhKQXFLckMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBUYWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZSwgVGFnLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcG9zdHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlcy1odWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogW1xuICAgICAgICAnLi9yZXNvdXJjZXMtaHViLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uL3Jlc291cmNlLWNvbXBhbnktY2FyZC9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50LnNjc3MnXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlSHViQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGRlbGF5VGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHVzZXJTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIGRhdGEgPSBbXTtcblxuICAgIHBvc3RzOiBSZXNvdXJjZVtdID0gW107XG4gICAgdGFnczogVGFnW10gPSBbXTtcblxuICAgIHNlbGVjdGVkVGFncyA9IFtdO1xuXG4gICAgY3VycmVudFBhZ2UgPSAxO1xuICAgIHBhZ2VTaXplID0gMjA7XG4gICAgb2JqZWN0Q291bnQgPSAwO1xuXG4gICAgc2VhcmNoVGV4dEl0ZW1zID0gJyc7XG4gICAgc2VhcmNoSW5wdXQgPSBmYWxzZTtcblxuICAgIHJlYWRpbmdUaW1lOiBudW1iZXI7XG5cbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcblxuICAgIGxvYWRpbmcgPSB0cnVlO1xuICAgIGxvYWRlZCA9IGZhbHNlO1xuXG4gICAgbWFzdGVyU3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBzdWJzY3JpcHRpb25JZDtcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgaXNNYXN0ZXJTdWJzY3JpcHRpb247XG5cbiAgICBzY3JvbGxMb2NrZWQgPSBmYWxzZTtcblxuICAgIGljb25DbGFzc2VzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgJ2ZhLWxpZ2h0YnVsYicsXG4gICAgICAgICdmYS1yb2NrZXQnLFxuICAgICAgICAnZmEtZmlsZS1hbHQnLFxuICAgICAgICAnZmEtdXNlcnMnLFxuICAgICAgICAnZmEtdmlkZW8nLFxuICAgICAgICAnZmEtcGVuY2lsLWFsdCcsXG4gICAgICAgICdmYS1ib29rLW9wZW4nLFxuICAgICAgICAnZmEtY29ncydcbiAgICBdO1xuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVNlcnZpY2U6IFJlc291cmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclN1YiA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlciA9IGRhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQb3N0c0FuZFRhZ3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQb3N0c0FuZFRhZ3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWQgPSB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbl9pZDtcbiAgICAgICAgdGhpcy5yZWFkaW5nVGltZSA9IDA7XG4gICAgfVxuXG4gICAgZ2V0UG9zdHNBbmRUYWdzKCkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICByZXNQb3N0czogdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UHVibGljUG9zdHMoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpLFxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRleHRJdGVtc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHJlc1RhZ3M6IHRoaXMudGFnU2VydmljZS5nZXRUYWdzQnlUeXBlKFxuICAgICAgICAgICAgICAgICdwb3N0X2NhdGVnb3JpZXMnLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdHMgPSByZXM/LnJlc1Bvc3RzPy5wb3N0cztcbiAgICAgICAgICAgICAgICB0aGlzLm9iamVjdENvdW50ID0gcmVzPy5yZXNQb3N0cy5vYmplY3RfY291bnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzPy5yZXNQb3N0cz8ucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzPy5yZXNQb3N0cz8ucG9zdHMubWFwKHBvc3QgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucG9zdCxcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRUYWdzOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMucG9zdHM/Lmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHRoaXMudGFncyA9IHJlcz8ucmVzVGFncz8udGFncz8uZmlsdGVyKHRhZyA9PiB0YWcudmlzaWJsZV9pbl9yZXNvdXJjZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFncyA9IHRoaXMudGFncy5tYXAodGFnID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRhZ1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQsIHBvc3QpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHBvc3Quc2hvd0Ryb3Bkb3duID0gIXBvc3Quc2hvd0Ryb3Bkb3duO1xuICAgIH1cblxuICAgIGdldFBvc3RzKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgZmV0Y2hBbGwgPSBmYWxzZSwgYXBwZW5kID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZldGNoQWxsKSB0aGlzLnNlbGVjdGVkVGFncyA9IFtdO1xuXG4gICAgICAgIGlmICghYXBwZW5kKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ0NhdGVnb3J5UGFyYW0gPSB0aGlzLnNlbGVjdGVkVGFncy5tYXAodGFnID0+IHRhZy50YWdfY2F0ZWdvcnlfaWQpLmpvaW4oJywnKTtcblxuICAgICAgICB0aGlzLnJlc291cmNlU2VydmljZVxuICAgICAgICAgICAgLmdldFB1YmxpY1Bvc3RzKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWZmZWN0aXZlU3Vic2NyaXB0aW9uSWQoKSxcbiAgICAgICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgICAgIGFwcGVuZCA/IDEwIDogcGFnZVNpemUsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0SXRlbXMsXG4gICAgICAgICAgICAgICAgdGFnQ2F0ZWdvcnlQYXJhbVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYmplY3RDb3VudCA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RzID0gYXBwZW5kID8gWy4uLnRoaXMucG9zdHMsIC4uLnJlc3BvbnNlLnBvc3RzXSA6IHJlc3BvbnNlLnBvc3RzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IFsuLi50aGlzLnBvc3RzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMucG9zdHM/Lmxlbmd0aDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlYXJjaChzZWNvbmRzOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGRlbGF5ID0gMDtcbiAgICAgICAgZGVsYXkgPSBzZWNvbmRzICogMTAwMDtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlUaW1lb3V0KTtcbiAgICAgICAgY29uc3QgZGVsYXlUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHMoMSwgdGhpcy5wYWdlU2l6ZSk7XG4gICAgICAgIH0sIGRlbGF5KTtcblxuICAgICAgICB0aGlzLmRlbGF5VGltZW91dCA9IGRlbGF5VGltZW91dDtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvVGFnTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgSGVscGVyU2VydmljZS5uYXZpZ2F0ZVRvVGFnTGlzdCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcbiAgICBvbldpbmRvd1Njcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cuc2Nyb2xsWSArIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3QgcGFnZUhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgbmVhckJvdHRvbSA9IHNjcm9sbFBvc2l0aW9uID49IHBhZ2VIZWlnaHQgLSAxMDA7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbmVhckJvdHRvbSAmJlxuICAgICAgICAgICAgdGhpcy5wb3N0cy5sZW5ndGggPCB0aGlzLm9iamVjdENvdW50ICYmXG4gICAgICAgICAgICAhdGhpcy5sb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5zY3JvbGxMb2NrZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbExvY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XG5cbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHModGhpcy5jdXJyZW50UGFnZSwgdGhpcy5wYWdlU2l6ZSwgZmFsc2UsIHRydWUpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbExvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQodGFnSWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhZ3MubWFwKHRhZyA9PiB0YWcuaWQpLmluY2x1ZGVzKHRhZ0lkKTtcbiAgICB9XG5cbiAgICB0YWdQb3N0KHNlbGVjdGVkVGFnKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgdGFnID0+IHRhZy50YWdfY2F0ZWdvcnlfaWQgPT09IHNlbGVjdGVkVGFnPy50YWdfY2F0ZWdvcnlfaWQgJiYgdGFnLmlkID09PSBzZWxlY3RlZFRhZy5pZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWdzLnB1c2goe1xuICAgICAgICAgICAgICAgIHRhZ19jYXRlZ29yeV9pZDogc2VsZWN0ZWRUYWc/LnRhZ19jYXRlZ29yeV9pZCxcbiAgICAgICAgICAgICAgICBpZDogc2VsZWN0ZWRUYWcuaWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB0aGlzLmdldFBvc3RzKDEsIHRoaXMucGFnZVNpemUpO1xuICAgIH1cblxuICAgIHRoaXNQb3N0UmVhZGluZ1RpbWUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzUGVyTWludXRlID0gMjAwO1xuICAgICAgICAgICAgY29uc3Qgbm9PZldvcmRzID0gdGV4dC5zcGxpdCgvXFxzL2cpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBub09mV29yZHMgLyB3b3Jkc1Blck1pbnV0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRUaW1lID0gTWF0aC5jZWlsKG1pbnV0ZXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7cmVhZFRpbWV9IG1pbnV0ZSByZWFkYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51c2VyU3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBlZmZlY3RpdmUgc3Vic2NyaXB0aW9uIElEICovXG4gICAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gSGVscGVyU2VydmljZS5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZChcbiAgICAgICAgICAgIHRoaXMudXNlcixcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbl9pZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNhbkVkaXRSZXNvdXJjZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBIZWxwZXJTZXJ2aWNlLmNhbkVkaXRSZXNvdXJjZXModGhpcy51c2VyLCB0aGlzLnVzZXJMb2dnZWRJbiwgdGhpcy5wZXJtaXNzaW9uU2VydmljZSk7XG4gICAgfVxufVxuIiwiPHB3LXJlc291cmNlLWhlYWRlcj48L3B3LXJlc291cmNlLWhlYWRlcj5cbjxkaXYgY2xhc3M9XCJhbGwtcG9zdHMgcHktNVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJyb3cgbXQtMSBtYi00IHB4LTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBtdC0wIG10LXNtLTMgZC1mbGV4XCI+XG4gICAgICAgIDxpICAqbmdJZj1cImNhbkVkaXRSZXNvdXJjZXMoKVwiXG4gICAgICBjbGFzcz1cImZhIGZhLWVkaXQgaW4tcGFnZS1lZGl0LWljb24gY3Vyc29yLXBvaW50ZXIgbXQtMiBtZS0zXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvVGFnTGlzdCgpXCJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm5hdmlnYXRlVG9UYWdMaXN0KClcIlxuICAgICAgKGtleWRvd24uc3BhY2UpPVwibmF2aWdhdGVUb1RhZ0xpc3QoKVwiXG4gICAgICB0aXRsZT1cIkVkaXQgTG9nb1wiPjwvaT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggc2VhcmNoLWljb25cIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0SXRlbXNcIiBwSW5wdXRUZXh0IHNpemU9XCI1MFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHJlc291cmNlcy4uLlwiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgxKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dCB0b3Atc2VhcmNoLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3cgcmVzb3VyY2Utcm93XCI+XG4gICAgPCEtLSBBbGwgUmVzb3VyY2VzIENhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGNvbC1zbS02IG1iLTRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1jYXJkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcC0zXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ2V0UG9zdHMoMSwgMjAsIHRydWUpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBzZWxlY3RlZFRhZ3MubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAgICAoY2xpY2spPVwiZ2V0UG9zdHMoMSwgMjAsIHRydWUpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbGF5ZXItZ3JvdXAgcmVzb3VyY2UtaWNvbiBtZS0zXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc291cmNlLXRleHRcIj5BbGwgUmVzb3VyY2VzPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIER5bmFtaWMgVGFncyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLXNtLTYgbWItNFwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3NcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAgY2xhc3M9XCJyZXNvdXJjZS1jYXJkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcC0zXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidGFnUG9zdCh0YWcpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBpc1NlbGVjdGVkKHRhZy5pZCkgfVwiXG4gICAgICAgICAgIChjbGljayk9XCJ0YWdQb3N0KHRhZylcIj5cbiAgICAgICAgICAgPGkgKm5nSWY9XCJ0YWc/Lmljb25fbmFtZVwiIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ0YWcuaWNvbl9uYW1lICsgJyByZXNvdXJjZS1pY29uIG1lLTMnXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc291cmNlLXRleHRcIj57eyB0YWcubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmcgJiYgIWxvYWRlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCI+XG4gICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdHM/Lmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmxvZy1saXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNCBtYi01IG1zLTEgbWUtMSBibG9nLWxpc3RpbmdcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwb3N0IG9mIGRhdGFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTEyIGNvbC14cy0xMiBteS1hdXRvXCI+XG4gICAgICAgICAgICA8cHctcmVzb3VyY2UtZWRpdC1jYXJkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuRWRpdFJlc291cmNlcygpXCJcbiAgICAgICAgICAgICAgW2lkXT1cInBvc3Q/LmlkXCJcbiAgICAgICAgICAgICAgW3Jlc291cmNlRGF0YV09XCJwb3N0XCJcbiAgICAgICAgICAgICAgKHVwZGF0ZWQpPVwiZ2V0UG9zdHMoMSwgcGFnZVNpemUpXCI+XG4gICAgICAgICAgICA8L3B3LXJlc291cmNlLWVkaXQtY2FyZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWJsb2ctaW1hZ2VcIiBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInBvc3QucGljdHVyZT8udXJsXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJQb3N0IExpc3RcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtc20tMTIgY29sLXhzLTEyIHB4LTQgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWctZGl2XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRob3IgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgPGEgW2F0dHIuZGlzYWJsZWRdPVwiIXVzZXJMb2dnZWRJblwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21lbWJlcnMnLCBwb3N0Py5hdXRob3I/LnNsdWddXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJwb3N0LmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInBvc3QuYXV0aG9yPy5hdmF0YXJbMF0/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQXV0aG9yXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFwb3N0LmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIvYXNzZXRzL2ltZy9pY29ucy9tYWxlLnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQXV0aG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtdXNlci1pbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aG9yLW5hbWUgcHMtMlwiPlxuICAgICAgICAgICAgICAgICAgPGEgW2F0dHIuZGlzYWJsZWRdPVwiIXVzZXJMb2dnZWRJblwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21lbWJlcnMnLCBwb3N0Py5hdXRob3I/LnNsdWddXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHBvc3QuYXV0aG9yLmZpcnN0X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY3Jvd25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBvc3QucHVibGlzaGVkX2F0IHwgZGF0ZTogJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+LjwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPnt7IHRoaXNQb3N0UmVhZGluZ1RpbWUocG9zdC5ib2R5KSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXJlLXBvc3RcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93biBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiIChjbGlja091dHNpZGUpPVwicG9zdC5zaG93RHJvcGRvd24gPSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhyZWUtZG90cy13cmFwcGVyXCIgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudCwgcG9zdClcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50LCBwb3N0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVsbGlwc2lzLXZcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9zdC5zaG93RHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNoYXJlXCI+PC9pPiBTaGFyZSBQb3N0XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aDQgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCBwb3N0LnNsdWddXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRpdGxlIG15LTNcIj57eyBwb3N0LnRpdGxlIH19PC9oND5cbiAgICAgICAgICAgICAgPHAgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCBwb3N0LnNsdWddXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJvZHkgbWItMyBwYi0zIHBvc3QtYm9keS10ZXh0XCI+XG4gICAgICAgICAgICAgICAge3sgcG9zdC5ib2R5IHwgcmVtb3ZlSHRtbDogJ3F1aWxsJyB8IHRleHRUcnVuY2F0ZTogMjAwIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG10LWF1dG8gbWItM1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb3N0Py50YWdzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZyBvZiBwb3N0Py50YWdzPy5zbGljZSgwLCA0KVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIG0tMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBwb3N0Py50YWdzLCBpdGVtOiB0YWcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvckJ5TmFtZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFOYW1lXT1cInRhZy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0YWcubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvc3QuZXhwYW5kZWRUYWdzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZyBvZiBwb3N0Py50YWdzPy5zbGljZSg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwRHluYW1pY0JhZGdlXT1cInsgaXRlbXNBcnJheTogcG9zdD8udGFncywgaXRlbTogdGFnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvckJ5TmFtZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YU5hbWVdPVwidGFnLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZS1ncmV5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0YWcubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3N0Py50YWdzPy5sZW5ndGggPiA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb3N0LmV4cGFuZGVkVGFncyA9ICFwb3N0LmV4cGFuZGVkVGFnc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJwb3N0LmV4cGFuZGVkVGFncyA9ICFwb3N0LmV4cGFuZGVkVGFnc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgY3Vyc29yLXBvaW50ZXIgbS0xIGV4cGFuZC10YWdzXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9nLXZpZXcgcHktMyBibG9nLWxpc3Qtd3JpdGUtdmlld1wiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHBvc3QudmlldyAhPT0gbnVsbCA/IHBvc3QudmlldyA6ICcwJyB9fSBWaWV3PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT48YSBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZXMvdmlldycsIHBvc3Quc2x1Z11cIj5Xcml0ZSBDb21tZW50PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdC5zbHVnXVwiIGFyaWEtbGFiZWw9XCJCbG9nXCI+PGkgY2xhc3M9XCJmYXIgZmEtaGVhcnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBvc3RzPy5sZW5ndGggJiYgbG9hZGVkXCI+XG4gICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgbWVzc2FnZT1cIldlIGNvdWxkbid0IGZpbmQgYW55IHJlc291cmNlcy5cIiA+IDwvcHctbm8tZGF0YT5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|