@adlfe/campaign-management-library 2.10.6 → 2.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/adlfe-campaign-management-library.d.ts +12 -9
  2. package/adlfe-campaign-management-library.metadata.json +1 -1
  3. package/bundles/adlfe-campaign-management-library.umd.js +178 -110
  4. package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
  5. package/bundles/adlfe-campaign-management-library.umd.min.js +1 -1
  6. package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
  7. package/esm2015/adlfe-campaign-management-library.js +13 -10
  8. package/esm2015/environments/environment.js +3 -3
  9. package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +11 -2
  10. package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
  11. package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +43 -43
  12. package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +54 -5
  13. package/esm2015/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
  14. package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +49 -42
  15. package/esm2015/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.js +1 -2
  16. package/esm2015/lib/core/const/constants.const.js +6 -6
  17. package/esm2015/public-api.js +1 -6
  18. package/esm5/adlfe-campaign-management-library.js +13 -10
  19. package/esm5/environments/environment.js +3 -3
  20. package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +11 -2
  21. package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
  22. package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +42 -40
  23. package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +58 -5
  24. package/esm5/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
  25. package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +49 -42
  26. package/esm5/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.js +1 -2
  27. package/esm5/lib/core/const/constants.const.js +6 -6
  28. package/esm5/public-api.js +1 -6
  29. package/fesm2015/adlfe-campaign-management-library.js +164 -100
  30. package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
  31. package/fesm5/adlfe-campaign-management-library.js +167 -97
  32. package/fesm5/adlfe-campaign-management-library.js.map +1 -1
  33. package/lib/campaign-management/models/general-information-wa-req.model.d.ts +2 -0
  34. package/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.d.ts +7 -0
  35. package/package.json +1 -1
  36. package/public-api.d.ts +0 -5
  37. package/types.d.ts +1 -0
@@ -188,9 +188,9 @@ __decorate([
188
188
  GeneralInformationComponent = __decorate([
189
189
  Component({
190
190
  selector: 'lib-new-campaign-general-information',
191
- template: "<form autocomplete=\"off\"\r\n\t[formGroup]=\"form\">\r\n\t<div class=\"campaign-info\">\r\n\t\t<div class=\"campaign-info-child\">\r\n\t\t\t<mat-card>\r\n\t\t\t\t<mat-card-content>\r\n\t\t\t\t\t<h3 class=\"font-22px font-PoppinsBold mb-4\">General Information</h3>\r\n\r\n\t\t\t\t\t<div class=\"form-group\">\r\n\t\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t\t<mat-label class=\"asterix--after\">Broadcast Name</mat-label>\r\n\r\n\t\t\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\tformControlName=\"campaignName\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Broadcast name\">\r\n\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<div class=\"d-flex justify-content-between align-items-center w-100\">\r\n\t\t\t\t\t\t\t<mat-hint align=\"start\">\r\n\t\t\t\t\t\t\t\t{{form.get('campaignName').value?.length || 0}}/100\r\n\t\t\t\t\t\t\t</mat-hint>\r\n\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let validation of validationMessages.campaignName\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"form.get('campaignName').touched\r\n\t\t\t\t\t\t\t\t\t\t&& form.get('campaignName').hasError(validation.type)\">\r\n\t\t\t\t\t\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"form-group\">\r\n\t\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t\t<mat-label class=\"asterix--after\">Channel</mat-label>\r\n\r\n\t\t\t\t\t\t\t<mat-select placeholder=\"Select channel\"\r\n\t\t\t\t\t\t\t\tformControlName=\"medium\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of channelOption\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"option.value\">\r\n\t\t\t\t\t\t\t\t\t{{ option.label }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t\t\t\t*ngFor=\"let validation of validationMessages.medium\">\r\n\t\t\t\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t\t\t\t*ngIf=\"form.get('medium').touched\r\n\t\t\t\t\t\t\t\t\t\t&& form.get('medium').hasError(validation.type)\">\r\n\t\t\t\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'WA'\">\r\n\t\t\t\t\t\t<lib-general-information-wa [isTouchedForm]=\"isTouchedWAForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-wa>\r\n\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'LINE'\">\r\n\t\t\t\t\t\t<lib-general-information-line [isTouchedForm]=\"isTouchedSMSForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-line>\r\n\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'SMS'\">\r\n\t\t\t\t\t\t<lib-general-information-sms [isTouchedForm]=\"isTouchedSMSForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-sms>\r\n\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'EMAIL'\">\r\n\t\t\t\t\t\t<lib-general-information-email [isTouchedForm]=\"isTouchedEmailForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-email>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t</mat-card-content>\r\n\t\t\t</mat-card>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"campaign-info-child pl-20px\">\r\n\t\t\t<h3 class=\"font-22px font-PoppinsBold\">Broadcast Content</h3>\r\n\r\n\t\t\t<div\r\n\t\t\t\t[ngClass]=\"form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL' ? 'campaign-border-preview' : 'campaign-preview'\">\r\n\t\t\t\t<section *ngIf=\"form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\">\r\n\t\t\t\t\t<p *ngIf=\"getBody\"\r\n\t\t\t\t\t\tclass=\"body my-2\"\r\n\t\t\t\t\t\tstyle=\"max-width: 500px;word-wrap: break-word;\"\r\n\t\t\t\t\t\t[innerHTML]=\"getBody\"></p>\r\n\t\t\t\t</section>\r\n\r\n\t\t\t\t<section *ngIf=\"form.get('medium').value === 'WA'\"\r\n\t\t\t\t\tclass=\"campaign-preview__wa\">\r\n\t\t\t\t\t<div class=\"header-preview\">\r\n\t\t\t\t\t\t<div class=\"heading\">\r\n\t\t\t\t\t\t\t{{ getHeader }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"body-preview\">\r\n\t\t\t\t\t\t<section *ngIf=\"getBody || getMedia || displayFile\">\r\n\t\t\t\t\t\t\t<div class=\"chat\"\r\n\t\t\t\t\t\t\t\t[ngClass]=\"{'no-bottom-border': getTemplate?.buttons?.length > 0}\">\r\n\t\t\t\t\t\t\t\t<img *ngIf=\"(getMedia === 'IMAGE' || getTemplate?.header?.type?.toLowerCase() === 'image') && displayFile\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"max-width: 100%;\"\r\n\t\t\t\t\t\t\t\t\talt=\"image\"\r\n\t\t\t\t\t\t\t\t\t[src]=\"displayFile\" />\r\n\r\n\t\t\t\t\t\t\t\t<video\r\n\t\t\t\t\t\t\t\t\t*ngIf=\"(getMedia === 'VIDEO' || getTemplate?.header?.type?.toLowerCase() === 'video') && displayFile\"\r\n\t\t\t\t\t\t\t\t\tid=\"video\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"width: 100%;\"\r\n\t\t\t\t\t\t\t\t\t[src]=\"displayFile\"\r\n\t\t\t\t\t\t\t\t\tcontrols></video>\r\n\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"getMedia === 'DOCUMENT'\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"display: flex;\">\r\n\t\t\t\t\t\t\t\t\t<img style=\"width: 13px; height: 18px;\"\r\n\t\t\t\t\t\t\t\t\t\talt=\"document\"\r\n\t\t\t\t\t\t\t\t\t\tsrc=\"../../../../../assets/images/icon-file.png\">\r\n\r\n\t\t\t\t\t\t\t\t\t<span style=\"margin-left: 10px;\">Document</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"getMedia === 'LOCATION'\">\r\n\t\t\t\t\t\t\t\t\t<agm-map style=\"width:100%;height:200px;\"\r\n\t\t\t\t\t\t\t\t\t\t[disableDefaultUI]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t[latitude]=\"maps.latitude\"\r\n\t\t\t\t\t\t\t\t\t\t[longitude]=\"maps.longitude\"\r\n\t\t\t\t\t\t\t\t\t\t[zoom]=\"maps.zoom\">\r\n\t\t\t\t\t\t\t\t\t\t<agm-marker [latitude]=\"maps.latitude\"\r\n\t\t\t\t\t\t\t\t\t\t\t[longitude]=\"maps.longitude\"\r\n\t\t\t\t\t\t\t\t\t\t\t[markerDraggable]=\"false\"></agm-marker>\r\n\t\t\t\t\t\t\t\t\t</agm-map>\r\n\t\t\t\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\t\t\t\t[href]=\"'https://www.google.com/maps/search/?api=1&query='+ maps.latitude + ',' + maps.longitude\">\r\n\t\t\t\t\t\t\t\t\t\thttps://www.google.com/maps/search/?api=1&query={{maps.latitude}},{{maps.longitude}}\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t\t<p *ngIf=\"getBody\"\r\n\t\t\t\t\t\t\t\t\tclass=\"body my-2\"\r\n\t\t\t\t\t\t\t\t\t[innerHTML]=\"getBody\"></p>\r\n\r\n\t\t\t\t\t\t\t\t<p *ngIf=\"getTemplate?.footer\"\r\n\t\t\t\t\t\t\t\t\tclass=\"mb-2\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"color: rgb(160, 160, 160);\">\r\n\t\t\t\t\t\t\t\t\t{{ getTemplate.footer }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t<section *ngIf=\"getTemplate?.buttons?.length > 0\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let button of getTemplateButton\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t{{ button?.text || button?.type }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div *ngIf=\"getTemplate?.buttons?.length > 3\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn pb-0 pointer\"\r\n\t\t\t\t\t\t\t\t(click)=\"isShowMore = !isShowMore\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon>list</mat-icon> See all options\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</section>\r\n\r\n\t\t\t\t<section *ngIf=\"form.get('medium').value === 'LINE'\"\r\n\t\t\t\t\tclass=\"campaign-preview__line\">\r\n\t\t\t\t\t<div class=\"header-preview\">\r\n\t\t\t\t\t\t<div class=\"heading\">\r\n\t\t\t\t\t\t\t{{ getHeader }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"body-preview\">\r\n\t\t\t\t\t\t<!-- Template Line Text -->\r\n\t\t\t\t\t\t<section *ngIf=\"isText || !isJSON\"\r\n\t\t\t\t\t\t\tclass=\"chat\">\r\n\t\t\t\t\t\t\t<p class=\"body my-2\"\r\n\t\t\t\t\t\t\t\t[innerHTML]=\"getBody\"></p>\r\n\t\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t\t<!-- Template Line Button | Confirmation -->\r\n\t\t\t\t\t\t<section *ngIf=\"['buttons', 'confirm'].includes(getTemplateLine?.type)\"\r\n\t\t\t\t\t\t\tclass=\"chat\"\r\n\t\t\t\t\t\t\t[ngClass]=\"{'no-bottom-border': getTemplateLine?.actions?.length > 0}\">\r\n\t\t\t\t\t\t\t<img *ngIf=\"getTemplateLine?.thumbnailImageUrl\"\r\n\t\t\t\t\t\t\t\tstyle=\"max-width: 100%;\"\r\n\t\t\t\t\t\t\t\tclass=\"mb-1\"\r\n\t\t\t\t\t\t\t\t[src]=\"getTemplateLine?.thumbnailImageUrl\" />\r\n\r\n\t\t\t\t\t\t\t<p *ngIf=\"getTemplateLine?.title\"\r\n\t\t\t\t\t\t\t\tclass=\"font-PoppinsBold mb-1\"\r\n\t\t\t\t\t\t\t\t[innerHTML]=\"getTemplateLine?.title\"> </p>\r\n\r\n\t\t\t\t\t\t\t<p *ngIf=\"getTemplateLine?.text\"\r\n\t\t\t\t\t\t\t\tclass=\"mb-0\"\r\n\t\t\t\t\t\t\t\t[innerHTML]=\"getTemplateLine?.text\"> </p>\r\n\t\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t\t<!-- Template Line Carousel -->\r\n\t\t\t\t\t\t<div *ngIf=\"['carousel'].includes(getTemplateLine?.type)\"\r\n\t\t\t\t\t\t\tclass=\"d-flex gap-2 overflow-auto\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let column of getTemplateLine?.columns\">\r\n\t\t\t\t\t\t\t\t<section class=\"chat w-100\"\r\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{'no-bottom-border': column?.actions?.length > 0}\">\r\n\t\t\t\t\t\t\t\t\t<img *ngIf=\"column.thumbnailImageUrl\"\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 100%;\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"mb-1\"\r\n\t\t\t\t\t\t\t\t\t\t[src]=\"column.thumbnailImageUrl\" />\r\n\r\n\t\t\t\t\t\t\t\t\t<p *ngIf=\"column.title\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"font-PoppinsBold mb-1\"\r\n\t\t\t\t\t\t\t\t\t\t[innerHTML]=\"column.title\"> </p>\r\n\r\n\t\t\t\t\t\t\t\t\t<p *ngIf=\"column.text\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"mb-0\"\r\n\t\t\t\t\t\t\t\t\t\t[innerHTML]=\"column.text\"> </p>\r\n\t\t\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t\t\t<section *ngIf=\"column?.actions?.length > 0\">\r\n\t\t\t\t\t\t\t\t\t<div *ngFor=\"let button of column?.actions\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"params-btn mw-100 pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t\t\t{{ button?.text }}\r\n\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<!-- Template Line Image Carousel -->\r\n\t\t\t\t\t\t<div *ngIf=\"['image_carousel'].includes(getTemplateLine?.type)\"\r\n\t\t\t\t\t\t\tclass=\"d-flex gap-2 overflow-auto\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let column of getTemplateLine?.columns\">\r\n\t\t\t\t\t\t\t\t<div class=\"image-container\">\r\n\t\t\t\t\t\t\t\t\t<img [src]=\"column.imageUrl\"\r\n\t\t\t\t\t\t\t\t\t\talt=\"image\">\r\n\r\n\t\t\t\t\t\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"font-13px overlay-text\">{{ column.action.label }}</p>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<!-- Button Line -->\r\n\t\t\t\t\t\t<section *ngIf=\"getTemplateLine?.type !== 'confirm' && getTemplateLine?.actions?.length > 0\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let button of getTemplateLine?.actions\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t{{ button?.text }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t<section *ngIf=\"getTemplateLine?.type === 'confirm' && getTemplateLine?.actions?.length > 0\"\r\n\t\t\t\t\t\t\tclass=\"d-flex justify-content-around mw-70 bg-white\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let button of getTemplateLine?.actions\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn flex pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t{{ button?.text }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t<!-- ./ Button Line -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</section>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"d-flex\"\r\n\t\t\t\tstyle=\"flex-direction: column;\">\r\n\t\t\t\t<span *ngIf=\"form.get('medium').value === 'SMS'\"\r\n\t\t\t\t\tstyle=\"text-align: right;width: 100%;\">\r\n\t\t\t\t\t{{ twilioResultCounter.fulltext }}\r\n\t\t\t\t</span>\r\n\t\t\t\t<span style=\"text-align: right;width: 100%;color: red\"\r\n\t\t\t\t\t*ngIf=\"twilioResultCounter.segments > 10 && form.get('medium').value === 'SMS'\">\r\n\t\t\t\t\tMaximum Segment is 10\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n\r\n<ng-template #isSpinner>\r\n\t<div class=\"text-center my-auto\">\r\n\t\t<img src=\"../../../../../assets/images/spinner.svg\">\r\n\t</div>\r\n</ng-template>\r\n",
192
- styles: [".campaign-info{display:flex}.campaign-info-child{flex:1}.campaign-info .asterix--after:after{content:\"*\";color:red}.campaign-info .pl-20px{padding-left:20px}.campaign-info .mw-70{max-width:70%}.campaign-info .campaign-preview{width:75%}.campaign-info .campaign-preview .header-preview{padding:15px;min-height:60px;border-radius:10px 10px 0 0}.campaign-info .campaign-preview .header-preview .heading{width:100%;color:#e0e0e0;margin-left:5px;font-size:20px}.campaign-info .campaign-preview .body-preview{padding:15px;min-height:470px}.campaign-info .campaign-preview .body-preview .chat{width:70%;padding:11px;font-size:14px;line-height:22px;color:#494949;border-radius:8px;background:#fff;overflow-wrap:break-word;white-space:pre-line;box-shadow:12px 12px 20px rgba(44,59,113,.04)}.campaign-info .campaign-preview .body-preview .chat .body{max-height:400px;overflow-y:auto;overscroll-behavior-y:contain}.campaign-info .campaign-preview .body-preview .chat.no-bottom-border{border-bottom-left-radius:0;border-bottom-right-radius:0}.campaign-info .campaign-preview__wa .header-preview{background:#065f54}.campaign-info .campaign-preview__wa .body-preview{border-bottom-left-radius:8px;border-bottom-right-radius:8px;background-image:url(../../../../assets/svg/whatsapp-bg.svg);background-position:center;background-repeat:no-repeat;background-size:cover}.campaign-info .campaign-preview__wa .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__wa .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .header-preview{background:#273046}.campaign-info .campaign-preview__line .body-preview{background:#7692bf;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.campaign-info .campaign-preview__line .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__line .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .body-preview .image-container{position:relative;width:200px;height:200px}.campaign-info .campaign-preview__line .body-preview .image-container img{display:block;width:100%;height:100%}.campaign-info .campaign-preview__line .body-preview .image-container .overlay-text{top:170px;position:absolute;padding:2px 5px;color:#fff;background-color:rgba(49,57,60,.62);border-radius:10px}.campaign-info .campaign-border-preview{width:100%;min-height:100px;padding:32px;border:1px solid #e2e2e2;border-radius:8px}"]
191
+ template: "<form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"campaign-info\">\r\n <div class=\"campaign-info-child\">\r\n <mat-card>\r\n <mat-card-content>\r\n <h3 class=\"font-22px font-PoppinsBold mb-4\">General Information</h3>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Broadcast Name</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"campaignName\"\r\n placeholder=\"Enter Broadcast name\"\r\n />\r\n </mat-form-field>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center w-100\">\r\n <mat-hint align=\"start\">\r\n {{ form.get('campaignName').value?.length || 0 }}/100\r\n </mat-hint>\r\n\r\n <div>\r\n <mat-error\r\n align=\"end\"\r\n *ngFor=\"let validation of validationMessages.campaignName\"\r\n >\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('campaignName').touched &&\r\n form.get('campaignName').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Channel</mat-label>\r\n\r\n <mat-select placeholder=\"Select channel\" formControlName=\"medium\">\r\n <mat-option\r\n *ngFor=\"let option of channelOption\"\r\n [value]=\"option.value\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.medium\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('medium').touched &&\r\n form.get('medium').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'WA'\">\r\n <lib-general-information-wa\r\n [isTouchedForm]=\"isTouchedWAForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-wa>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'LINE'\">\r\n <lib-general-information-line\r\n [isTouchedForm]=\"isTouchedSMSForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-line>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'SMS'\">\r\n <lib-general-information-sms\r\n [isTouchedForm]=\"isTouchedSMSForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-sms>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'EMAIL'\">\r\n <lib-general-information-email\r\n [isTouchedForm]=\"isTouchedEmailForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-email>\r\n </ng-container>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <div class=\"campaign-info-child pl-20px\">\r\n <h3 class=\"font-22px font-PoppinsBold\">Broadcast Content</h3>\r\n\r\n <div\r\n [ngClass]=\"\r\n form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\r\n ? 'campaign-border-preview'\r\n : 'campaign-preview'\r\n \"\r\n >\r\n <section\r\n *ngIf=\"\r\n form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\r\n \"\r\n >\r\n <p\r\n *ngIf=\"getBody\"\r\n class=\"body my-2\"\r\n style=\"max-width: 500px; word-wrap: break-word\"\r\n [innerHTML]=\"getBody\"\r\n ></p>\r\n </section>\r\n\r\n <section *ngIf=\"form.get('medium').value === 'WA'\" class=\"campaign-preview__wa\">\r\n <div class=\"header-preview\">\r\n <div class=\"heading\">\r\n {{ getHeader }}\r\n </div>\r\n </div>\r\n <div class=\"body-preview\">\r\n <section *ngIf=\"getBody || getMedia || displayFile\">\r\n <div\r\n class=\"chat\"\r\n [ngClass]=\"{ 'no-bottom-border': getTemplate?.buttons?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"\r\n (getMedia === 'IMAGE' ||\r\n getTemplate?.header?.type?.toLowerCase() === 'image') &&\r\n displayFile\r\n \"\r\n style=\"max-width: 100%\"\r\n alt=\"image\"\r\n [src]=\"displayFile\"\r\n />\r\n\r\n <video\r\n *ngIf=\"\r\n (getMedia === 'VIDEO' ||\r\n getTemplate?.header?.type?.toLowerCase() === 'video') &&\r\n displayFile\r\n \"\r\n id=\"video\"\r\n style=\"width: 100%\"\r\n [src]=\"displayFile\"\r\n controls\r\n ></video>\r\n\r\n <div *ngIf=\"getMedia === 'DOCUMENT'\" style=\"display: flex\">\r\n <img\r\n style=\"width: 13px; height: 18px\"\r\n alt=\"document\"\r\n src=\"../../../../../assets/images/icon-file.png\"\r\n />\r\n\r\n <span style=\"margin-left: 10px\">Document</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getMedia === 'LOCATION'\">\r\n <agm-map\r\n style=\"width: 100%; height: 200px\"\r\n [disableDefaultUI]=\"true\"\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [zoom]=\"maps.zoom\"\r\n >\r\n <agm-marker\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [markerDraggable]=\"false\"\r\n ></agm-marker>\r\n </agm-map>\r\n <a\r\n [href]=\"\r\n 'https://www.google.com/maps/search/?api=1&query=' +\r\n maps.latitude +\r\n ',' +\r\n maps.longitude\r\n \"\r\n >\r\n https://www.google.com/maps/search/?api=1&query={{\r\n maps.latitude\r\n }},{{ maps.longitude }}\r\n </a>\r\n </ng-container>\r\n\r\n <p *ngIf=\"getBody\" class=\"body my-2\" [innerHTML]=\"getBody\"></p>\r\n\r\n <p\r\n *ngIf=\"getTemplate?.footer\"\r\n class=\"mb-2\"\r\n style=\"color: rgb(160, 160, 160)\"\r\n >\r\n {{ getTemplate.footer }}\r\n </p>\r\n </div>\r\n </section>\r\n <section *ngIf=\"getTemplate?.buttons?.length > 0\">\r\n <div\r\n *ngFor=\"let button of getTemplateButton\"\r\n class=\"params-btn pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text || button?.type }}\r\n </p>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"getTemplate?.buttons?.length > 3\"\r\n class=\"params-btn pb-0 pointer\"\r\n (click)=\"isShowMore = !isShowMore\"\r\n >\r\n <p class=\"mb-0\"><mat-icon>list</mat-icon> See all options</p>\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"form.get('medium').value === 'LINE'\" class=\"campaign-preview__line\">\r\n <div class=\"header-preview\">\r\n <div class=\"heading\">\r\n {{ getHeader }}\r\n </div>\r\n </div>\r\n <div class=\"body-preview\">\r\n <!-- Template Line Text -->\r\n <section *ngIf=\"isText || !isJSON\" class=\"chat\">\r\n <p class=\"body my-2\" [innerHTML]=\"getBody\"></p>\r\n </section>\r\n\r\n <!-- Template Line Button | Confirmation -->\r\n <section\r\n *ngIf=\"['buttons', 'confirm'].includes(getTemplateLine?.type)\"\r\n class=\"chat\"\r\n [ngClass]=\"{ 'no-bottom-border': getTemplateLine?.actions?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"getTemplateLine?.thumbnailImageUrl\"\r\n style=\"max-width: 100%\"\r\n class=\"mb-1\"\r\n [src]=\"getTemplateLine?.thumbnailImageUrl\"\r\n />\r\n\r\n <p\r\n *ngIf=\"getTemplateLine?.title\"\r\n class=\"font-PoppinsBold mb-1\"\r\n [innerHTML]=\"getTemplateLine?.title\"\r\n ></p>\r\n\r\n <p\r\n *ngIf=\"getTemplateLine?.text\"\r\n class=\"mb-0\"\r\n [innerHTML]=\"getTemplateLine?.text\"\r\n ></p>\r\n </section>\r\n\r\n <!-- Template Line Carousel -->\r\n <div\r\n *ngIf=\"['carousel'].includes(getTemplateLine?.type)\"\r\n class=\"d-flex gap-2 overflow-auto\"\r\n >\r\n <div *ngFor=\"let column of getTemplateLine?.columns\">\r\n <section\r\n class=\"chat w-100\"\r\n [ngClass]=\"{ 'no-bottom-border': column?.actions?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"column.thumbnailImageUrl\"\r\n style=\"max-width: 100%\"\r\n class=\"mb-1\"\r\n [src]=\"column.thumbnailImageUrl\"\r\n />\r\n\r\n <p\r\n *ngIf=\"column.title\"\r\n class=\"font-PoppinsBold mb-1\"\r\n [innerHTML]=\"column.title\"\r\n ></p>\r\n\r\n <p\r\n *ngIf=\"column.text\"\r\n class=\"mb-0\"\r\n [innerHTML]=\"column.text\"\r\n ></p>\r\n </section>\r\n <section *ngIf=\"column?.actions?.length > 0\">\r\n <div\r\n *ngFor=\"let button of column?.actions\"\r\n class=\"params-btn mw-100 pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <!-- Template Line Image Carousel -->\r\n <div\r\n *ngIf=\"['image_carousel'].includes(getTemplateLine?.type)\"\r\n class=\"d-flex gap-2 overflow-auto\"\r\n >\r\n <div *ngFor=\"let column of getTemplateLine?.columns\">\r\n <div class=\"image-container\">\r\n <img [src]=\"column.imageUrl\" alt=\"image\" />\r\n\r\n <div class=\"d-flex justify-content-center\">\r\n <p class=\"font-13px overlay-text\">\r\n {{ column.action.label }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Button Line -->\r\n <section\r\n *ngIf=\"\r\n getTemplateLine?.type !== 'confirm' &&\r\n getTemplateLine?.actions?.length > 0\r\n \"\r\n >\r\n <div\r\n *ngFor=\"let button of getTemplateLine?.actions\"\r\n class=\"params-btn pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n <section\r\n *ngIf=\"\r\n getTemplateLine?.type === 'confirm' &&\r\n getTemplateLine?.actions?.length > 0\r\n \"\r\n class=\"d-flex justify-content-around mw-70 bg-white\"\r\n >\r\n <div\r\n *ngFor=\"let button of getTemplateLine?.actions\"\r\n class=\"params-btn flex pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n <!-- ./ Button Line -->\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"d-flex\" style=\"flex-direction: column\">\r\n <span\r\n *ngIf=\"form.get('medium').value === 'SMS'\"\r\n style=\"text-align: right; width: 100%\"\r\n >\r\n {{ twilioResultCounter.fulltext }}\r\n </span>\r\n <span\r\n style=\"text-align: right; width: 100%; color: red\"\r\n *ngIf=\"twilioResultCounter.segments > 10 && form.get('medium').value === 'SMS'\"\r\n >\r\n Maximum Segment is 10\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #isSpinner>\r\n <div class=\"text-center my-auto\">\r\n <img src=\"../../../../../assets/images/spinner.svg\" />\r\n </div>\r\n</ng-template>\r\n",
192
+ styles: [".campaign-info{display:flex}.campaign-info-child{flex:1}.campaign-info .asterix--after:after{content:\"*\";color:red}.campaign-info .pl-20px{padding-left:20px}.campaign-info .mw-70{max-width:70%}.campaign-info .campaign-preview{width:75%}.campaign-info .campaign-preview .header-preview{padding:15px;min-height:60px;border-radius:10px 10px 0 0}.campaign-info .campaign-preview .header-preview .heading{width:100%;color:#e0e0e0;margin-left:5px;font-size:20px}.campaign-info .campaign-preview .body-preview{padding:15px;min-height:470px}.campaign-info .campaign-preview .body-preview .chat{width:70%;padding:11px;font-size:14px;line-height:22px;color:#494949;border-radius:8px;background:#fff;overflow-wrap:break-word;white-space:pre-line;box-shadow:12px 12px 20px rgba(44,59,113,.04)}.campaign-info .campaign-preview .body-preview .chat .body{max-height:400px;overflow-y:auto;overscroll-behavior-y:contain}.campaign-info .campaign-preview .body-preview .chat.no-bottom-border{border-bottom-left-radius:0;border-bottom-right-radius:0}.campaign-info .campaign-preview__wa .header-preview{background:#065f54}.campaign-info .campaign-preview__wa .body-preview{border-bottom-left-radius:8px;border-bottom-right-radius:8px;background-image:url(../../../../../assets/svg/whatsapp-bg.svg);background-position:center;background-repeat:no-repeat;background-size:cover}.campaign-info .campaign-preview__wa .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__wa .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .header-preview{background:#273046}.campaign-info .campaign-preview__line .body-preview{background:#7692bf;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.campaign-info .campaign-preview__line .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__line .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .body-preview .image-container{position:relative;width:200px;height:200px}.campaign-info .campaign-preview__line .body-preview .image-container img{display:block;width:100%;height:100%}.campaign-info .campaign-preview__line .body-preview .image-container .overlay-text{top:170px;position:absolute;padding:2px 5px;color:#fff;background-color:rgba(49,57,60,.62);border-radius:10px}.campaign-info .campaign-border-preview{width:100%;min-height:100px;padding:32px;border:1px solid #e2e2e2;border-radius:8px}"]
193
193
  })
194
194
  ], GeneralInformationComponent);
195
195
  export { GeneralInformationComponent };
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1pbmZvcm1hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvbW9kdWxlcy9uZXctY2FtcGFpZ24vZ2VuZXJhbC1pbmZvcm1hdGlvbi9nZW5lcmFsLWluZm9ybWF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUNOLHdDQUF3QyxFQUN4QyxtQkFBbUIsR0FDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQWVoQyxJQUFhLDJCQUEyQixHQUF4QyxNQUFhLDJCQUEyQjtJQXlCdkMsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWZwQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHNUIsd0JBQW1CLEdBQUc7WUFDNUIsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLGdDQUFnQztTQUMxQyxDQUFDO1FBcUxLLHlCQUFvQixHQUFHLEdBQVMsRUFBRTs7WUFDeEMsTUFBTSxhQUFhLFNBQUcsSUFBSSxDQUFDLHNCQUFzQiwwQ0FB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QUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFNBQVMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsVUFBVTtRQUNsQyxPQUFPLFVBQVU7YUFDZixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDO2FBQzdDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsQ0FBQzthQUN6RCxVQUFVLENBQUMsZ0NBQWdDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQXVDRCxDQUFBOztZQXROK0IsWUFBWTs7QUF2QjNDO0lBREMsTUFBTSxFQUFFO3VFQUlOO0FBa0JNO0lBQVIsS0FBSyxFQUFFO21FQUFnQztBQXZCNUIsMkJBQTJCO0lBTHZDLFNBQVMsQ0FBQztRQUNWLFFBQVEsRUFBRSxzQ0FBc0M7UUFDaEQscTZaQUFtRDs7S0FFbkQsQ0FBQztHQUNXLDJCQUEyQixDQStPdkM7U0EvT1ksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU2VnbWVudGVkTWVzc2FnZSB9IGZyb20gJ3Ntcy1zZWdtZW50cy1jYWxjdWxhdG9yJztcclxuaW1wb3J0IHtcclxuXHRHZW5lcmFsSW5mb3JtYXRpb25NZXNzYWdlVmFsaWRhdGlvbkNvbnN0LFxyXG5cdFBsYXRmb3JtT3B0aW9uQ29uc3QsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb25zdCc7XHJcblxyXG5pbnRlcmZhY2UgSU1hcHMge1xyXG5cdHpvb206IG51bWJlcjtcclxuXHRsYXRpdHVkZTogbnVtYmVyO1xyXG5cdGxvbmdpdHVkZTogbnVtYmVyO1xyXG5cdGlzRHJhZ2dhYmxlOiBib29sZWFuO1xyXG5cdGlzRG91YmxlQ2xpY2tab29tOiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1uZXctY2FtcGFpZ24tZ2VuZXJhbC1pbmZvcm1hdGlvbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2dlbmVyYWwtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL2dlbmVyYWwtaW5mb3JtYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyYWxJbmZvcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGdlbmVyYWxJbmZvcm1hdGlvbjogRXZlbnRFbWl0dGVyPHtcclxuXHRcdHBhcmVudDogRm9ybUdyb3VwO1xyXG5cdFx0Y2hpbGQ6IEZvcm1Hcm91cDtcclxuXHR9PjtcclxuXHJcblx0cHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHRwdWJsaWMgY2hhbm5lbE9wdGlvbjogYW55W107XHJcblx0cHVibGljIGdlbmVyYWxJbmZvcm1hdGlvbkZvcm06IEZvcm1Hcm91cDtcclxuXHRwdWJsaWMgaXNUb3VjaGVkV0FGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGlzVG91Y2hlZFNNU0Zvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgaXNUb3VjaGVkRW1haWxGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGlzU2hvd01vcmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgdmFsaWRhdGlvbk1lc3NhZ2VzOiBhbnk7XHJcblx0cHVibGljIG1hcHM6IElNYXBzO1xyXG5cdHB1YmxpYyB0d2lsaW9SZXN1bHRDb3VudGVyID0ge1xyXG5cdFx0c2VnbWVudHM6IDAsXHJcblx0XHRjaGFyYWN0ZXJzOiAwLFxyXG5cdFx0ZW5jb2Rpbmc6ICcnLFxyXG5cdFx0ZnVsbHRleHQ6IGBFbmNvZGUgLSAvIENoYXJzIDAgLyBTZWdtZW50IDFgLFxyXG5cdH07XHJcblxyXG5cdEBJbnB1dCgpIHB1YmxpYyBpc1JlYWRPbmx5TW9kZTogYm9vbGVhbjtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xyXG5cdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuY2hhbm5lbE9wdGlvbiA9IFBsYXRmb3JtT3B0aW9uQ29uc3Q7XHJcblx0XHR0aGlzLnZhbGlkYXRpb25NZXNzYWdlcyA9IEdlbmVyYWxJbmZvcm1hdGlvbk1lc3NhZ2VWYWxpZGF0aW9uQ29uc3Q7XHJcblx0XHR0aGlzLm1hcHMgPSB7XHJcblx0XHRcdHpvb206IDE1LFxyXG5cdFx0XHRsYXRpdHVkZTogbnVsbCxcclxuXHRcdFx0bG9uZ2l0dWRlOiBudWxsLFxyXG5cdFx0XHRpc0RyYWdnYWJsZTogdHJ1ZSxcclxuXHRcdFx0aXNEb3VibGVDbGlja1pvb206IHRydWUsXHJcblx0XHR9O1xyXG5cclxuXHRcdHRoaXMuaW5pdEZvcm0oKTtcclxuXHRcdHRoaXMuaW5pdEVkaXQoKTtcclxuXHRcdHRoaXMuaW5pdERpc2FibGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XHJcblx0XHR0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuXHRcdFx0aWQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuXHRcdFx0Y2FtcGFpZ25OYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1xyXG5cdFx0XHRcdFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcblx0XHRcdFx0VmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSxcclxuXHRcdFx0XSksXHJcblx0XHRcdG1lZGl1bTogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdHRoaXMuaXNUb3VjaGVkV0FGb3JtID0gIXRoaXMuaXNUb3VjaGVkV0FGb3JtO1xyXG5cdFx0XHR0aGlzLmlzVG91Y2hlZFNNU0Zvcm0gPSAhdGhpcy5pc1RvdWNoZWRTTVNGb3JtO1xyXG5cdFx0XHR0aGlzLmlzVG91Y2hlZEVtYWlsRm9ybSA9ICF0aGlzLmlzVG91Y2hlZEVtYWlsRm9ybTtcclxuXHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uLmVtaXQoe1xyXG5cdFx0XHRcdHBhcmVudDogdGhpcy5mb3JtLFxyXG5cdFx0XHRcdGNoaWxkOiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0sXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHRzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub25DaGVja1R3aWxpb0NvdW50ZXIoKTtcclxuXHRcdH0sIDQwMCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRFZGl0KCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY2FtcGFpZ24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsaW4uY2FtcGFpZ24nKVxyXG5cdFx0XHQ/IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJykpXHJcblx0XHRcdDoge307XHJcblxyXG5cdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNhbXBhaWduKS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcblx0XHR0aGlzLmZvcm0uZ2V0KCdpZCcpLnNldFZhbHVlKGNhbXBhaWduPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkKTtcclxuXHRcdHRoaXMuZm9ybVxyXG5cdFx0XHQuZ2V0KCdjYW1wYWlnbk5hbWUnKVxyXG5cdFx0XHQuc2V0VmFsdWUoY2FtcGFpZ24/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5jYW1wYWlnbk5hbWUpO1xyXG5cdFx0dGhpcy5mb3JtXHJcblx0XHRcdC5nZXQoJ21lZGl1bScpXHJcblx0XHRcdC5zZXRWYWx1ZShjYW1wYWlnbj8uZ2VuZXJhbEluZm9ybWF0aW9uPy5mb3JtLm1lZGl1bSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXREaXNhYmxlKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmlzUmVhZE9ubHlNb2RlKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmZvcm0uZGlzYWJsZSgpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHVwZGF0ZUdlbmVyYWxJbmZvcm1hdGlvbkZvcm0oZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XHJcblx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0gPSBmb3JtO1xyXG5cdFx0dGhpcy5pc1Nob3dNb3JlID0gZmFsc2U7XHJcblxyXG5cdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb24uZW1pdCh7XHJcblx0XHRcdHBhcmVudDogdGhpcy5mb3JtLFxyXG5cdFx0XHRjaGlsZDogdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtLFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZ2V0TWVkaWEgPT09ICdMT0NBVElPTicpIHRoaXMuZ2V0TG9jYXRpb24oKTtcclxuXHR9XHJcblxyXG5cdGdldCBnZXRIZWFkZXIoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LmZyb20/Lm5hbWUgfHwgJyc7XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0Qm9keVN0cmluZygpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgYm9keSA9XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGV4dCB8fFxyXG5cdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRlbXBsYXRlPy5ib2R5Py50ZXh0IHx8XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8uYm9keT8udGV4dDtcclxuXHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRib2R5XHJcblx0XHRcdFx0Py5zcGxpdCgvXFxcXG58XFxuLylcclxuXHRcdFx0XHQuam9pbignPGJyIC8+JylcclxuXHRcdFx0XHQuc3BsaXQoL1xcXFx0fFxcdC8pXHJcblx0XHRcdFx0LmpvaW4oJyAgICAnKSA/PyAnJ1xyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGdldCBnZXRCb2R5KCk6IGFueSB7XHJcblx0XHRjb25zdCBib2R5ID1cclxuXHRcdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy50ZXh0IHx8XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGVtcGxhdGU/LmJvZHk/LnRleHQgfHxcclxuXHRcdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy5ib2R5Py50ZXh0O1xyXG5cclxuXHRcdHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuXHRcdFx0dGhpcy5maXhHZW5lcmF0ZWRIdG1sKFxyXG5cdFx0XHRcdGJvZHlcclxuXHRcdFx0XHRcdD8uc3BsaXQoL1xcXFxufFxcbi8pXHJcblx0XHRcdFx0XHQuam9pbignPGJyIC8+JylcclxuXHRcdFx0XHRcdC5zcGxpdCgvXFxcXHR8XFx0LylcclxuXHRcdFx0XHRcdC5qb2luKCcgICAgJykgPz8gJydcclxuXHRcdFx0KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGdldCBnZXRNZWRpYSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8ubWVkaWEgfHwgJyc7XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0VGVtcGxhdGUoKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRlbXBsYXRlIHx8IHt9O1xyXG5cdH1cclxuXHJcblx0Z2V0IGdldFRlbXBsYXRlQnV0dG9uKCk6IGFueSB7XHJcblx0XHRjb25zdCBsaW1pdCA9XHJcblx0XHRcdCF0aGlzLmlzU2hvd01vcmUgJiYgdGhpcy5nZXRUZW1wbGF0ZT8uYnV0dG9ucz8ubGVuZ3RoID4gM1xyXG5cdFx0XHRcdD8gMlxyXG5cdFx0XHRcdDogdGhpcy5nZXRUZW1wbGF0ZT8uYnV0dG9ucz8ubGVuZ3RoO1xyXG5cclxuXHRcdHJldHVybiBbLi4udGhpcy5nZXRUZW1wbGF0ZT8uYnV0dG9uc10uc3BsaWNlKDAsIGxpbWl0KSB8fCBbXTtcclxuXHR9XHJcblxyXG5cdGdldCBkaXNwbGF5RmlsZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0KFxyXG5cdFx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGFyZ2V0VVJMIHx8XHJcblx0XHRcdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy50ZW1wbGF0ZT8uaGVhZGVyXHJcblx0XHRcdFx0XHQ/LnVybFxyXG5cdFx0XHQpPy5yZXBsYWNlKCdhZGxzYW5kYm94LmNvbScsICdhZGxzYW5kYm94Lm5ldCcpID8/ICcnXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyogTElORSAqL1xyXG5cdGdldCBpc1RleHQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy5jaGFubmVsID09PSAnVEVYVCc7XHJcblx0fVxyXG5cclxuXHRnZXQgaXNKU09OKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8uaXNKU09OO1xyXG5cdH1cclxuXHJcblx0Z2V0IGdldFRlbXBsYXRlTGluZSgpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaXNKU09OXHJcblx0XHRcdD8gSlNPTi5wYXJzZShcclxuXHRcdFx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGVtcGxhdGU/LmJvZHlcclxuXHRcdFx0XHRcdFx0Py50ZXh0XHJcblx0XHRcdCAgKVxyXG5cdFx0XHQ6IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGVtcGxhdGU/LmJvZHk/LnRleHQ7XHJcblx0fVxyXG5cdC8qIC4vIExJTkUgKi9cclxuXHJcblx0cHJpdmF0ZSBnZXRMb2NhdGlvbigpOiB2b2lkIHtcclxuXHRcdHRoaXMubWFwcy5sYXRpdHVkZSA9XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8ubGF0aXR1ZGU7XHJcblx0XHR0aGlzLm1hcHMubG9uZ2l0dWRlID1cclxuXHRcdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy5sb25naXR1ZGU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpeEdlbmVyYXRlZEh0bWwoaHRtbFN0cmluZykge1xyXG5cdFx0cmV0dXJuIGh0bWxTdHJpbmdcclxuXHRcdFx0LnJlcGxhY2VBbGwoL2RpdiBzcmM9XCJodHRwL2csICdpbWcgc3JjPVwiaHR0cCcpXHJcblx0XHRcdC5yZXBsYWNlQWxsKC9kaXYgc3JjPVwiZGF0YTppbWFnZS9nLCAnaW1nIHNyYz1cImRhdGE6aW1hZ2UnKVxyXG5cdFx0XHQucmVwbGFjZUFsbCgvRHJhZyBhbmQgZHJvcCB5b3VyIGltYWdlIGhlcmUvZywgJycpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIG9uQ2hlY2tUd2lsaW9Db3VudGVyID0gKCk6IHZvaWQgPT4ge1xyXG5cdFx0Y29uc3QgdmFsdWVzR2VuZXJhbCA9IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKTtcclxuXHRcdGlmICh2YWx1ZXNHZW5lcmFsPy5jaGFubmVsID09PSAnVEVYVCcpIHtcclxuXHRcdFx0Y29uc3Qgc2VnbWVudGVkTWVzc2FnZSA9IG5ldyBTZWdtZW50ZWRNZXNzYWdlKHRoaXMuZ2V0Qm9keVN0cmluZyk7XHJcblx0XHRcdGNvbnN0IHJlc3VsdCA9IHtcclxuXHRcdFx0XHRzZWdtZW50czogc2VnbWVudGVkTWVzc2FnZS5zZWdtZW50c0NvdW50LFxyXG5cdFx0XHRcdGVuY29kaW5nOiBzZWdtZW50ZWRNZXNzYWdlLmVuY29kaW5nTmFtZSxcclxuXHRcdFx0XHRjaGFyYWN0ZXJzOiBzZWdtZW50ZWRNZXNzYWdlLm51bWJlck9mVW5pY29kZVNjYWxhcnMsXHJcblx0XHRcdH07XHJcblxyXG5cdFx0XHR0aGlzLnR3aWxpb1Jlc3VsdENvdW50ZXIgPSB7XHJcblx0XHRcdFx0Li4ucmVzdWx0LFxyXG5cdFx0XHRcdGZ1bGx0ZXh0OiBgRW5jb2RlICR7cmVzdWx0LmVuY29kaW5nfSAvIENoYXJzICR7cmVzdWx0LmNoYXJhY3RlcnN9IC8gU2VnbWVudCAke3Jlc3VsdC5zZWdtZW50c31gLFxyXG5cdFx0XHR9O1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IHZhbHVlUmVzdWx0ID0gdGhpcy5nZXRCb2R5U3RyaW5nO1xyXG5cdFx0XHRBcnJheS5mcm9tKHZhbHVlc0dlbmVyYWw/LnRlbXBsYXRlPy5ib2R5Py5leGFtcGxlcyB8fCBbXSkubWFwKFxyXG5cdFx0XHRcdChlbnRyeSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IHBsYWNlaG9sZGVyID0gYHt7JHtlbnRyeX19fWA7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZSA9IHZhbHVlc0dlbmVyYWwucGFyYW1Cb2R5W2luZGV4XT8ubmFtZTtcclxuXHRcdFx0XHRcdHZhbHVlUmVzdWx0ID0gdmFsdWVSZXN1bHQuc3BsaXQocGxhY2Vob2xkZXIpLmpvaW4odmFsdWUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdGNvbnN0IHNlZ21lbnRlZE1lc3NhZ2UgPSBuZXcgU2VnbWVudGVkTWVzc2FnZSh2YWx1ZVJlc3VsdCk7XHJcblx0XHRcdGNvbnN0IHJlc3VsdCA9IHtcclxuXHRcdFx0XHRzZWdtZW50czogc2VnbWVudGVkTWVzc2FnZS5zZWdtZW50c0NvdW50LFxyXG5cdFx0XHRcdGVuY29kaW5nOiBzZWdtZW50ZWRNZXNzYWdlLmVuY29kaW5nTmFtZSxcclxuXHRcdFx0XHRjaGFyYWN0ZXJzOiBzZWdtZW50ZWRNZXNzYWdlLm51bWJlck9mVW5pY29kZVNjYWxhcnMsXHJcblx0XHRcdH07XHJcblxyXG5cdFx0XHR0aGlzLnR3aWxpb1Jlc3VsdENvdW50ZXIgPSB7XHJcblx0XHRcdFx0Li4ucmVzdWx0LFxyXG5cdFx0XHRcdGZ1bGx0ZXh0OiBgRW5jb2RlICR7cmVzdWx0LmVuY29kaW5nfSAvIENoYXJzICR7cmVzdWx0LmNoYXJhY3RlcnN9IC8gU2VnbWVudCAke3Jlc3VsdC5zZWdtZW50c31gLFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH07XHJcbn1cclxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1pbmZvcm1hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvbW9kdWxlcy9uZXctY2FtcGFpZ24vZ2VuZXJhbC1pbmZvcm1hdGlvbi9nZW5lcmFsLWluZm9ybWF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUNOLHdDQUF3QyxFQUN4QyxtQkFBbUIsR0FDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQWVoQyxJQUFhLDJCQUEyQixHQUF4QyxNQUFhLDJCQUEyQjtJQXlCdkMsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWZwQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHNUIsd0JBQW1CLEdBQUc7WUFDNUIsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLGdDQUFnQztTQUMxQyxDQUFDO1FBcUxLLHlCQUFvQixHQUFHLEdBQVMsRUFBRTs7WUFDeEMsTUFBTSxhQUFhLFNBQUcsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLEVBQUUsQ0FBQztZQUNqRSxJQUFJLE9BQUEsYUFBYSwwQ0FBRSxPQUFPLE1BQUssTUFBTSxFQUFFO2dCQUN0QyxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sR0FBRztvQkFDZCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsYUFBYTtvQkFDeEMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFlBQVk7b0JBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxzQkFBc0I7aUJBQ25ELENBQUM7Z0JBRUYsSUFBSSxDQUFDLG1CQUFtQixtQ0FDcEIsTUFBTSxLQUNULFFBQVEsRUFBRSxVQUFVLE1BQU0sQ0FBQyxRQUFRLFlBQVksTUFBTSxDQUFDLFVBQVUsY0FBYyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQy9GLENBQUM7YUFDRjtpQkFBTTtnQkFDTixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFBLGFBQWEsMENBQUUsUUFBUSwwQ0FBRSxJQUFJLDBDQUFFLFFBQVEsS0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQzVELENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFOztvQkFDaEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQztvQkFDbkMsTUFBTSxLQUFLLFNBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsMENBQUUsSUFBSSxDQUFDO29CQUNuRCxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FDRCxDQUFDO2dCQUVGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxNQUFNLEdBQUc7b0JBQ2QsUUFBUSxFQUFFLGdCQUFnQixDQUFDLGFBQWE7b0JBQ3hDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO29CQUN2QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsc0JBQXNCO2lCQUNuRCxDQUFDO2dCQUVGLElBQUksQ0FBQyxtQkFBbUIsbUNBQ3BCLE1BQU0sS0FDVCxRQUFRLEVBQUUsVUFBVSxNQUFNLENBQUMsUUFBUSxZQUFZLE1BQU0sQ0FBQyxVQUFVLGNBQWMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUMvRixDQUFDO2FBQ0Y7UUFDRixDQUFDLENBQUM7UUFwTkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsYUFBYSxHQUFHLG1CQUFtQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyx3Q0FBd0MsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1gsSUFBSSxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUk7WUFDakIsaUJBQWlCLEVBQUUsSUFBSTtTQUN2QixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVPLFFBQVE7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3pCLEVBQUUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDekIsWUFBWSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtnQkFDbkMsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO2FBQ3pCLENBQUM7WUFDRixNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3BELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUVuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsc0JBQXNCO2FBQ2xDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU8sUUFBUTs7UUFDZixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1lBQ3RELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRU4sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVsRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLGFBQUMsUUFBUSwwQ0FBRSxrQkFBa0IsMENBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUk7YUFDUCxHQUFHLENBQUMsY0FBYyxDQUFDO2FBQ25CLFFBQVEsYUFBQyxRQUFRLDBDQUFFLGtCQUFrQiwwQ0FBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLElBQUk7YUFDUCxHQUFHLENBQUMsUUFBUSxDQUFDO2FBQ2IsUUFBUSxhQUFDLFFBQVEsMENBQUUsa0JBQWtCLDBDQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sV0FBVztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6QixPQUFPO1NBQ1A7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSw0QkFBNEIsQ0FBQyxJQUFlO1FBQ2xELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxzQkFBc0I7U0FDbEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVU7WUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksU0FBUzs7UUFDWixPQUFPLG1CQUFBLElBQUksQ0FBQyxzQkFBc0IsMENBQUUsV0FBVyw0Q0FBSSxJQUFJLDBDQUFFLElBQUksS0FBSSxFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksYUFBYTs7UUFDaEIsTUFBTSxJQUFJLEdBQ1QsYUFBQSxJQUFJLENBQUMsc0JBQXNCLDBDQUFFLFdBQVcsNENBQUksSUFBSSw4QkFDaEQsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFFBQVEsMENBQUUsSUFBSSwwQ0FBRSxJQUFJLENBQUEsdUJBQ2hFLElBQUksQ0FBQyxzQkFBc0IsMENBQUUsV0FBVyw0Q0FBSSxJQUFJLDBDQUFFLElBQUksQ0FBQSxDQUFDO1FBRXhELE9BQU8sWUFDTixJQUFJLDBDQUNELEtBQUssQ0FBQyxRQUFRLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixLQUFLLENBQUMsUUFBUSxFQUNkLElBQUksQ0FBQyxNQUFNLHdDQUFLLEVBQUUsRUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87O1FBQ1YsTUFBTSxJQUFJLEdBQ1QsYUFBQSxJQUFJLENBQUMsc0JBQXNCLDBDQUFFLFdBQVcsNENBQUksSUFBSSw4QkFDaEQsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFFBQVEsMENBQUUsSUFBSSwwQ0FBRSxJQUFJLENBQUEsdUJBQ2hFLElBQUksQ0FBQyxzQkFBc0IsMENBQUUsV0FBVyw0Q0FBSSxJQUFJLDBDQUFFLElBQUksQ0FBQSxDQUFDO1FBRXhELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FDNUMsSUFBSSxDQUFDLGdCQUFnQixhQUNwQixJQUFJLDBDQUNELEtBQUssQ0FBQyxRQUFRLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixLQUFLLENBQUMsUUFBUSxFQUNkLElBQUksQ0FBQyxNQUFNLHdDQUFLLEVBQUUsR0FDcEIsQ0FDRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTs7UUFDWCxPQUFPLGFBQUEsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLEtBQUssS0FBSSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQUksV0FBVzs7UUFDZCxPQUFPLGFBQUEsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFFBQVEsS0FBSSxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksaUJBQWlCOztRQUNwQixNQUFNLEtBQUssR0FDVixDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksYUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxPQUFPLDBDQUFFLE1BQU0sSUFBRyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxhQUFDLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sMENBQUUsTUFBTSxDQUFDO1FBRXRDLE9BQU8sQ0FBQyxTQUFHLElBQUksQ0FBQyxXQUFXLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFdBQVc7O1FBQ2QsT0FBTyxZQUNOLENBQ0MsYUFBQSxJQUFJLENBQUMsc0JBQXNCLDBDQUFFLFdBQVcsNENBQUksU0FBUyw4QkFDckQsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFFBQVEsMENBQUUsTUFBTSwwQ0FDekQsR0FBRyxDQUFBLENBQ04sMENBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQix3Q0FBSyxFQUFFLEVBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtJQUNWLElBQUksTUFBTTs7UUFDVCxPQUFPLGFBQUEsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLE9BQU8sTUFBSyxNQUFNLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksTUFBTTs7UUFDVCxtQkFBTyxJQUFJLENBQUMsc0JBQXNCLDBDQUFFLFdBQVcsNENBQUksTUFBTSxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGVBQWU7O1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU07WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLHlCQUNWLElBQUksQ0FBQyxzQkFBc0IsMENBQUUsV0FBVyw0Q0FBSSxRQUFRLDBDQUFFLElBQUksMENBQ3ZELElBQUksQ0FDTjtZQUNILENBQUMseUJBQUMsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFFBQVEsMENBQUUsSUFBSSwwQ0FBRSxJQUFJLENBQUM7SUFDckUsQ0FBQztJQUNELGFBQWE7SUFFTCxXQUFXOztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsZUFDakIsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFFBQVEsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsZUFDbEIsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxXQUFXLDRDQUFJLFNBQVMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsVUFBVTtRQUNsQyxPQUFPLFVBQVU7YUFDZixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDO2FBQzdDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsQ0FBQzthQUN6RCxVQUFVLENBQUMsZ0NBQWdDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQXVDRCxDQUFBOztZQXROK0IsWUFBWTs7QUF2QjNDO0lBREMsTUFBTSxFQUFFO3VFQUlOO0FBa0JNO0lBQVIsS0FBSyxFQUFFO21FQUFnQztBQXZCNUIsMkJBQTJCO0lBTHZDLFNBQVMsQ0FBQztRQUNWLFFBQVEsRUFBRSxzQ0FBc0M7UUFDaEQsNnFuQkFBbUQ7O0tBRW5ELENBQUM7R0FDVywyQkFBMkIsQ0ErT3ZDO1NBL09ZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFNlZ21lbnRlZE1lc3NhZ2UgfSBmcm9tICdzbXMtc2VnbWVudHMtY2FsY3VsYXRvcic7XHJcbmltcG9ydCB7XHJcblx0R2VuZXJhbEluZm9ybWF0aW9uTWVzc2FnZVZhbGlkYXRpb25Db25zdCxcclxuXHRQbGF0Zm9ybU9wdGlvbkNvbnN0LFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29uc3QnO1xyXG5cclxuaW50ZXJmYWNlIElNYXBzIHtcclxuXHR6b29tOiBudW1iZXI7XHJcblx0bGF0aXR1ZGU6IG51bWJlcjtcclxuXHRsb25naXR1ZGU6IG51bWJlcjtcclxuXHRpc0RyYWdnYWJsZTogYm9vbGVhbjtcclxuXHRpc0RvdWJsZUNsaWNrWm9vbTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItbmV3LWNhbXBhaWduLWdlbmVyYWwtaW5mb3JtYXRpb24nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9nZW5lcmFsLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9nZW5lcmFsLWluZm9ybWF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmFsSW5mb3JtYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBnZW5lcmFsSW5mb3JtYXRpb246IEV2ZW50RW1pdHRlcjx7XHJcblx0XHRwYXJlbnQ6IEZvcm1Hcm91cDtcclxuXHRcdGNoaWxkOiBGb3JtR3JvdXA7XHJcblx0fT47XHJcblxyXG5cdHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcblx0cHVibGljIGNoYW5uZWxPcHRpb246IGFueVtdO1xyXG5cdHB1YmxpYyBnZW5lcmFsSW5mb3JtYXRpb25Gb3JtOiBGb3JtR3JvdXA7XHJcblx0cHVibGljIGlzVG91Y2hlZFdBRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBpc1RvdWNoZWRTTVNGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGlzVG91Y2hlZEVtYWlsRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBpc1Nob3dNb3JlOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIHZhbGlkYXRpb25NZXNzYWdlczogYW55O1xyXG5cdHB1YmxpYyBtYXBzOiBJTWFwcztcclxuXHRwdWJsaWMgdHdpbGlvUmVzdWx0Q291bnRlciA9IHtcclxuXHRcdHNlZ21lbnRzOiAwLFxyXG5cdFx0Y2hhcmFjdGVyczogMCxcclxuXHRcdGVuY29kaW5nOiAnJyxcclxuXHRcdGZ1bGx0ZXh0OiBgRW5jb2RlIC0gLyBDaGFycyAwIC8gU2VnbWVudCAxYCxcclxuXHR9O1xyXG5cclxuXHRASW5wdXQoKSBwdWJsaWMgaXNSZWFkT25seU1vZGU6IGJvb2xlYW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuXHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNoYW5uZWxPcHRpb24gPSBQbGF0Zm9ybU9wdGlvbkNvbnN0O1xyXG5cdFx0dGhpcy52YWxpZGF0aW9uTWVzc2FnZXMgPSBHZW5lcmFsSW5mb3JtYXRpb25NZXNzYWdlVmFsaWRhdGlvbkNvbnN0O1xyXG5cdFx0dGhpcy5tYXBzID0ge1xyXG5cdFx0XHR6b29tOiAxNSxcclxuXHRcdFx0bGF0aXR1ZGU6IG51bGwsXHJcblx0XHRcdGxvbmdpdHVkZTogbnVsbCxcclxuXHRcdFx0aXNEcmFnZ2FibGU6IHRydWUsXHJcblx0XHRcdGlzRG91YmxlQ2xpY2tab29tOiB0cnVlLFxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLmluaXRGb3JtKCk7XHJcblx0XHR0aGlzLmluaXRFZGl0KCk7XHJcblx0XHR0aGlzLmluaXREaXNhYmxlKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRGb3JtKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcblx0XHRcdGlkOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcblx0XHRcdGNhbXBhaWduTmFtZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFtcclxuXHRcdFx0XHRWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG5cdFx0XHRcdFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCksXHJcblx0XHRcdF0pLFxyXG5cdFx0XHRtZWRpdW06IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmlzVG91Y2hlZFdBRm9ybSA9ICF0aGlzLmlzVG91Y2hlZFdBRm9ybTtcclxuXHRcdFx0dGhpcy5pc1RvdWNoZWRTTVNGb3JtID0gIXRoaXMuaXNUb3VjaGVkU01TRm9ybTtcclxuXHRcdFx0dGhpcy5pc1RvdWNoZWRFbWFpbEZvcm0gPSAhdGhpcy5pc1RvdWNoZWRFbWFpbEZvcm07XHJcblxyXG5cdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbi5lbWl0KHtcclxuXHRcdFx0XHRwYXJlbnQ6IHRoaXMuZm9ybSxcclxuXHRcdFx0XHRjaGlsZDogdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtLFxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdFx0c2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLm9uQ2hlY2tUd2lsaW9Db3VudGVyKCk7XHJcblx0XHR9LCA0MDApO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpbml0RWRpdCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGNhbXBhaWduID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJylcclxuXHRcdFx0PyBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpKVxyXG5cdFx0XHQ6IHt9O1xyXG5cclxuXHRcdGlmIChPYmplY3QuZW50cmllcyhjYW1wYWlnbikubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG5cdFx0dGhpcy5mb3JtLmdldCgnaWQnKS5zZXRWYWx1ZShjYW1wYWlnbj8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZCk7XHJcblx0XHR0aGlzLmZvcm1cclxuXHRcdFx0LmdldCgnY2FtcGFpZ25OYW1lJylcclxuXHRcdFx0LnNldFZhbHVlKGNhbXBhaWduPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0uY2FtcGFpZ25OYW1lKTtcclxuXHRcdHRoaXMuZm9ybVxyXG5cdFx0XHQuZ2V0KCdtZWRpdW0nKVxyXG5cdFx0XHQuc2V0VmFsdWUoY2FtcGFpZ24/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybS5tZWRpdW0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpbml0RGlzYWJsZSgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5pc1JlYWRPbmx5TW9kZSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5mb3JtLmRpc2FibGUoKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGVHZW5lcmFsSW5mb3JtYXRpb25Gb3JtKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xyXG5cdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtID0gZm9ybTtcclxuXHRcdHRoaXMuaXNTaG93TW9yZSA9IGZhbHNlO1xyXG5cclxuXHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uLmVtaXQoe1xyXG5cdFx0XHRwYXJlbnQ6IHRoaXMuZm9ybSxcclxuXHRcdFx0Y2hpbGQ6IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdGlmICh0aGlzLmdldE1lZGlhID09PSAnTE9DQVRJT04nKSB0aGlzLmdldExvY2F0aW9uKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0SGVhZGVyKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy5mcm9tPy5uYW1lIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0IGdldEJvZHlTdHJpbmcoKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGJvZHkgPVxyXG5cdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRleHQgfHxcclxuXHRcdFx0dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy50ZW1wbGF0ZT8uYm9keT8udGV4dCB8fFxyXG5cdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LmJvZHk/LnRleHQ7XHJcblxyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0Ym9keVxyXG5cdFx0XHRcdD8uc3BsaXQoL1xcXFxufFxcbi8pXHJcblx0XHRcdFx0LmpvaW4oJzxiciAvPicpXHJcblx0XHRcdFx0LnNwbGl0KC9cXFxcdHxcXHQvKVxyXG5cdFx0XHRcdC5qb2luKCcgICAgJykgPz8gJydcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0Qm9keSgpOiBhbnkge1xyXG5cdFx0Y29uc3QgYm9keSA9XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGV4dCB8fFxyXG5cdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRlbXBsYXRlPy5ib2R5Py50ZXh0IHx8XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8uYm9keT8udGV4dDtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXHJcblx0XHRcdHRoaXMuZml4R2VuZXJhdGVkSHRtbChcclxuXHRcdFx0XHRib2R5XHJcblx0XHRcdFx0XHQ/LnNwbGl0KC9cXFxcbnxcXG4vKVxyXG5cdFx0XHRcdFx0LmpvaW4oJzxiciAvPicpXHJcblx0XHRcdFx0XHQuc3BsaXQoL1xcXFx0fFxcdC8pXHJcblx0XHRcdFx0XHQuam9pbignICAgICcpID8/ICcnXHJcblx0XHRcdClcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0TWVkaWEoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/Lm1lZGlhIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0IGdldFRlbXBsYXRlKCk6IGFueSB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25Gb3JtPy5nZXRSYXdWYWx1ZSgpPy50ZW1wbGF0ZSB8fCB7fTtcclxuXHR9XHJcblxyXG5cdGdldCBnZXRUZW1wbGF0ZUJ1dHRvbigpOiBhbnkge1xyXG5cdFx0Y29uc3QgbGltaXQgPVxyXG5cdFx0XHQhdGhpcy5pc1Nob3dNb3JlICYmIHRoaXMuZ2V0VGVtcGxhdGU/LmJ1dHRvbnM/Lmxlbmd0aCA+IDNcclxuXHRcdFx0XHQ/IDJcclxuXHRcdFx0XHQ6IHRoaXMuZ2V0VGVtcGxhdGU/LmJ1dHRvbnM/Lmxlbmd0aDtcclxuXHJcblx0XHRyZXR1cm4gWy4uLnRoaXMuZ2V0VGVtcGxhdGU/LmJ1dHRvbnNdLnNwbGljZSgwLCBsaW1pdCkgfHwgW107XHJcblx0fVxyXG5cclxuXHRnZXQgZGlzcGxheUZpbGUoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdChcclxuXHRcdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRhcmdldFVSTCB8fFxyXG5cdFx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8udGVtcGxhdGU/LmhlYWRlclxyXG5cdFx0XHRcdFx0Py51cmxcclxuXHRcdFx0KT8ucmVwbGFjZSgnYWRsc2FuZGJveC5jb20nLCAnYWRsc2FuZGJveC5uZXQnKSA/PyAnJ1xyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qIExJTkUgKi9cclxuXHRnZXQgaXNUZXh0KCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8uY2hhbm5lbCA9PT0gJ1RFWFQnO1xyXG5cdH1cclxuXHJcblx0Z2V0IGlzSlNPTigpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LmlzSlNPTjtcclxuXHR9XHJcblxyXG5cdGdldCBnZXRUZW1wbGF0ZUxpbmUoKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLmlzSlNPTlxyXG5cdFx0XHQ/IEpTT04ucGFyc2UoXHJcblx0XHRcdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRlbXBsYXRlPy5ib2R5XHJcblx0XHRcdFx0XHRcdD8udGV4dFxyXG5cdFx0XHQgIClcclxuXHRcdFx0OiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LnRlbXBsYXRlPy5ib2R5Py50ZXh0O1xyXG5cdH1cclxuXHQvKiAuLyBMSU5FICovXHJcblxyXG5cdHByaXZhdGUgZ2V0TG9jYXRpb24oKTogdm9pZCB7XHJcblx0XHR0aGlzLm1hcHMubGF0aXR1ZGUgPVxyXG5cdFx0XHR0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk/LmxhdGl0dWRlO1xyXG5cdFx0dGhpcy5tYXBzLmxvbmdpdHVkZSA9XHJcblx0XHRcdHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRm9ybT8uZ2V0UmF3VmFsdWUoKT8ubG9uZ2l0dWRlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmaXhHZW5lcmF0ZWRIdG1sKGh0bWxTdHJpbmcpIHtcclxuXHRcdHJldHVybiBodG1sU3RyaW5nXHJcblx0XHRcdC5yZXBsYWNlQWxsKC9kaXYgc3JjPVwiaHR0cC9nLCAnaW1nIHNyYz1cImh0dHAnKVxyXG5cdFx0XHQucmVwbGFjZUFsbCgvZGl2IHNyYz1cImRhdGE6aW1hZ2UvZywgJ2ltZyBzcmM9XCJkYXRhOmltYWdlJylcclxuXHRcdFx0LnJlcGxhY2VBbGwoL0RyYWcgYW5kIGRyb3AgeW91ciBpbWFnZSBoZXJlL2csICcnKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBvbkNoZWNrVHdpbGlvQ291bnRlciA9ICgpOiB2b2lkID0+IHtcclxuXHRcdGNvbnN0IHZhbHVlc0dlbmVyYWwgPSB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkZvcm0/LmdldFJhd1ZhbHVlKCk7XHJcblx0XHRpZiAodmFsdWVzR2VuZXJhbD8uY2hhbm5lbCA9PT0gJ1RFWFQnKSB7XHJcblx0XHRcdGNvbnN0IHNlZ21lbnRlZE1lc3NhZ2UgPSBuZXcgU2VnbWVudGVkTWVzc2FnZSh0aGlzLmdldEJvZHlTdHJpbmcpO1xyXG5cdFx0XHRjb25zdCByZXN1bHQgPSB7XHJcblx0XHRcdFx0c2VnbWVudHM6IHNlZ21lbnRlZE1lc3NhZ2Uuc2VnbWVudHNDb3VudCxcclxuXHRcdFx0XHRlbmNvZGluZzogc2VnbWVudGVkTWVzc2FnZS5lbmNvZGluZ05hbWUsXHJcblx0XHRcdFx0Y2hhcmFjdGVyczogc2VnbWVudGVkTWVzc2FnZS5udW1iZXJPZlVuaWNvZGVTY2FsYXJzLFxyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0dGhpcy50d2lsaW9SZXN1bHRDb3VudGVyID0ge1xyXG5cdFx0XHRcdC4uLnJlc3VsdCxcclxuXHRcdFx0XHRmdWxsdGV4dDogYEVuY29kZSAke3Jlc3VsdC5lbmNvZGluZ30gLyBDaGFycyAke3Jlc3VsdC5jaGFyYWN0ZXJzfSAvIFNlZ21lbnQgJHtyZXN1bHQuc2VnbWVudHN9YCxcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGxldCB2YWx1ZVJlc3VsdCA9IHRoaXMuZ2V0Qm9keVN0cmluZztcclxuXHRcdFx0QXJyYXkuZnJvbSh2YWx1ZXNHZW5lcmFsPy50ZW1wbGF0ZT8uYm9keT8uZXhhbXBsZXMgfHwgW10pLm1hcChcclxuXHRcdFx0XHQoZW50cnksIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9IGB7eyR7ZW50cnl9fX1gO1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPSB2YWx1ZXNHZW5lcmFsLnBhcmFtQm9keVtpbmRleF0/Lm5hbWU7XHJcblx0XHRcdFx0XHR2YWx1ZVJlc3VsdCA9IHZhbHVlUmVzdWx0LnNwbGl0KHBsYWNlaG9sZGVyKS5qb2luKHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHRjb25zdCBzZWdtZW50ZWRNZXNzYWdlID0gbmV3IFNlZ21lbnRlZE1lc3NhZ2UodmFsdWVSZXN1bHQpO1xyXG5cdFx0XHRjb25zdCByZXN1bHQgPSB7XHJcblx0XHRcdFx0c2VnbWVudHM6IHNlZ21lbnRlZE1lc3NhZ2Uuc2VnbWVudHNDb3VudCxcclxuXHRcdFx0XHRlbmNvZGluZzogc2VnbWVudGVkTWVzc2FnZS5lbmNvZGluZ05hbWUsXHJcblx0XHRcdFx0Y2hhcmFjdGVyczogc2VnbWVudGVkTWVzc2FnZS5udW1iZXJPZlVuaWNvZGVTY2FsYXJzLFxyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0dGhpcy50d2lsaW9SZXN1bHRDb3VudGVyID0ge1xyXG5cdFx0XHRcdC4uLnJlc3VsdCxcclxuXHRcdFx0XHRmdWxsdGV4dDogYEVuY29kZSAke3Jlc3VsdC5lbmNvZGluZ30gLyBDaGFycyAke3Jlc3VsdC5jaGFyYWN0ZXJzfSAvIFNlZ21lbnQgJHtyZXN1bHQuc2VnbWVudHN9YCxcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHR9O1xyXG59XHJcbiJdfQ==