simpo-component-library 3.6.447 → 3.6.448
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/directive/image-directive.directive.mjs +2 -2
- package/esm2022/lib/directive/spacing-around.directive.mjs +3 -3
- package/esm2022/lib/directive/spacing-horizontal.directive.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +3 -19
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +18 -227
- package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +14 -205
- package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +22 -179
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +31 -90
- package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -13
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
- package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +3 -3
- package/esm2022/lib/sections/banner-section/banner-section.component.mjs +13 -3
- package/esm2022/lib/sections/banner-section/banner-section.model.mjs +1 -1
- package/esm2022/lib/sections/header-section/header-section.component.mjs +4 -16
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
- package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
- package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
- package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
- package/esm2022/lib/services/rest.service.mjs +7 -80
- package/esm2022/lib/services/storage.service.mjs +1 -8
- package/esm2022/lib/styles/index.mjs +1 -2
- package/esm2022/lib/styles/style.model.mjs +1 -1
- package/esm2022/public-api.mjs +1 -3
- package/fesm2022/simpo-component-library.mjs +188 -1251
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +2 -3
- package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +3 -41
- package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +3 -38
- package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +2 -19
- package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +0 -4
- package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
- package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/banner-section/banner-section.component.d.ts +4 -1
- package/lib/sections/banner-section/banner-section.model.d.ts +2 -1
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
- package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
- package/lib/sections/header-section/header-section.component.d.ts +0 -3
- package/lib/sections/image-section/image-section.component.d.ts +2 -2
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
- package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/services/rest.service.d.ts +2 -18
- package/lib/services/storage.service.d.ts +0 -2
- package/lib/styles/index.d.ts +1 -2
- package/lib/styles/style.model.d.ts +5 -0
- package/package.json +1 -1
- package/public-api.d.ts +0 -2
- package/simpo-component-library-3.6.448.tgz +0 -0
- package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +0 -37
- package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +0 -108
- package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +0 -2
- package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +0 -265
- package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +0 -2
- package/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.d.ts +0 -14
- package/lib/ecommerce/sections/schemes/schemes.component.d.ts +0 -28
- package/lib/ecommerce/sections/schemes/schemes.component.model.d.ts +0 -21
- package/lib/sections/scheme-detail/scheme-detail.component.d.ts +0 -68
- package/lib/sections/scheme-detail/scheme-detail.modal.d.ts +0 -17
- package/simpo-component-library-3.6.447.tgz +0 -0
@@ -125,7 +125,7 @@ export class StoreListComponent extends BaseSection {
|
|
125
125
|
return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`;
|
126
126
|
}
|
127
127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoreListComponent, deps: [{ token: i1.RestService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoreListComponent, isStandalone: true, selector: "simpo-store-list", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\r\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <ng-container *ngIf=\"!loader\">\r\n <div class=\"store-header mb-3\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? \"Stores in \" +\r\n pincode :\r\n \"Find a Store Near You\"}}\r\n </div>\r\n <div class=\"sub-text\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? 'We have ' +\r\n totalCount\r\n + ' stores in this locality, scroll down to view the stores\r\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\r\n and\r\n we look forward to serving you.' }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '3vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text w-75\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '2vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\r\n [class.error-border]=\"error\">\r\n <div class=\"d-flex align-items-center w-90\">\r\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\r\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\r\n [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\r\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false;\" />\r\n </div>\r\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\r\n </div>\r\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode\r\n (Ex:500088)</span>\r\n </div>\r\n <div class=\"bottom-container row mx-auto mt-3\">\r\n <div class=\"state-container row gap-3 justify-content-center mb-5\" *ngIf=\"showState && !pincode\">\r\n <ng-container *ngFor=\"let state of stateList; let i = index\">\r\n <div class=\"state-card p-2 col-sm-6\" (click)=\"setStateData(state)\">\r\n <ng-container *ngIf=\"state?.stateImage; else noImage\">\r\n <img class=\"w-100 h-75\" [src]=\"state?.stateImage\">\r\n </ng-container>\r\n <ng-template #noImage>\r\n <img class=\"w-100 h-75\"\r\n src=\"https://cdn.caratlane.com/media/static/images/Find_In_Store/city_5.svg\">\r\n </ng-template>\r\n <div class=\"text-center mt-2 state-name\">{{state?.stateName}}</div>\r\n <div class=\"store-count text-center mb-3 mt-1\">{{state?.storeCount + \" stores\"}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\r\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\r\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\r\n </div>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text w-100 text-center\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '6vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"bottom-sub-text d-flex align-items-center justify-content-center mb-3 w-100 f-20 fw-bold\"> {{\r\n submit &&\r\n showMessage == true && pincode ? \"Showing \" + totalCount + \" Stores in \" + pincode :\r\n \"Showing All Stores\"}}</div>\r\n <ng-container *ngIf=\"!loader;else loaderScreen\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-4 p-2 store d-flex flex-column \" style=\"border-radius: 12px; border: none;\"\r\n *ngFor=\"let ele of storesList; let i = index\">\r\n <div class=\"card-body position-relative d-flex flex-column h-100\">\r\n <!-- Content -->\r\n <div class=\"h-100 p-3 pb-0\">\r\n <div class=\"d-flex justify-content-between align-items-start mb-2\">\r\n <div class=\"d-flex flex-column mb-2 bb-1 w-100 pb-2\">\r\n <h6 class=\"card-title fw-bold mb-1 w-100\">{{ele?.storeName}}</h6>\r\n <div class=\"f-11\">\r\n \u2B504.{{ele?.star}} • {{ele?.reviewCount}} Google Reviews\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.addressLine}},</p>\r\n <p class=\"mb-1 text-dark fw-medium\">\r\n {{ele?.addressDetails?.city}},\r\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},\r\n </p>\r\n <p class=\"mb-0 fw-bold\">Phone-\r\n <span\r\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.storeContactDetails?.mobile}}</span>\r\n </p>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-0 fw-bold\" [style.color]=\"data?.styles?.background?.accentColor\">\r\n STORE HOURS -\r\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\r\n </p>\r\n </div>\r\n </div>\r\n <!-- Fixed bottom buttons -->\r\n <div class=\"d-flex gap-3 align-items-center justify-content-between p-3 w-100 br-20\" [style.backgroundColor]=\"getRGBA(styles?.background?.accentColor,10)\">\r\n <div class=\"br-12 d-flex align-items-center justify-content-center\"\r\n style=\"width: 30px; height: 30px;\" (click)=\"openWhatsapp(ele?.storeContactDetails?.mobile)\"\r\n [style.backgroundColor]=\"data?.styles?.background?.accentColor\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"height: 20px;cursor: pointer;\">\r\n <path [attr.fill]=\"getTextColor(data?.styles?.background?.accentColor)\"\r\n d=\"M380.9 97.1c-41.9-42-97.7-65.1-157-65.1-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480 117.7 449.1c32.4 17.7 68.9 27 106.1 27l.1 0c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1s56.2 81.2 56.1 130.5c0 101.8-84.9 184.6-186.6 184.6zM325.1 300.5c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8s-14.3 18-17.6 21.8c-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7s-12.5-30.1-17.1-41.2c-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2s-9.7 1.4-14.8 6.9c-5.1 5.6-19.4 19-19.4 46.3s19.9 53.7 22.6 57.4c2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4s4.6-24.1 3.2-26.4c-1.3-2.5-5-3.9-10.5-6.6z\" />\r\n </svg>\r\n </div>\r\n <button class=\"btn w-50\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\"\r\n [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.id)\">\r\n {{button?.content?.label}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #loaderScreen>\r\n <div class=\"row loader-container\">\r\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\r\n <ngx-skeleton-loader class=\"col-4 loader-column\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px;background:#fff}.location-container input{border:unset;appearance:unset;outline:unset;background:#fff;font-size:13px}.f-11{font-size:11px}.f-14{font-size:14px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{box-shadow:#0000000d 0 0 0 1px;border-radius:24px;height:100%}.card-bottom{POSITION:ABSOLUTE;width:90%;bottom:15px}.br-12{border-radius:12px}.btn{font-size:12px!important}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bottom-container{width:80%}@media (max-width:475px){.sub-text{width:100%!important}.loader-container{flex-direction:column;padding-right:0!important}.loader-column,.not-available-text{width:100%!important}.location-container{width:55%!important}.bottom-container{flex-direction:column;margin:0!important;width:100%!important}.store{width:100%!important}.state-container{margin:unset!important}.state-container .state-card{width:45%}}.main-container{padding-bottom:9%}.state-card{width:13%;box-shadow:#0000000d 0 0 0 1px;border-radius:20px;cursor:pointer}.state-card img{border-bottom:1px solid rgba(0,0,0,.05)}.state-card .state-name{font-size:14px;font-weight:600}.state-card .store-count{font-size:13px}.bb-1{border-bottom:2px solid rgba(0,0,0,.05)}.br-20{border-radius:0 0 20px 20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: FormsModule }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }] }); }
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoreListComponent, isStandalone: true, selector: "simpo-store-list", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\r\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <ng-container *ngIf=\"!loader\">\r\n <div class=\"store-header mb-3\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? \"Stores in \" +\r\n pincode :\r\n \"Find a Store Near You\"}}\r\n </div>\r\n <div class=\"sub-text\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? 'We have ' +\r\n totalCount\r\n + ' stores in this locality, scroll down to view the stores\r\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\r\n and\r\n we look forward to serving you.' }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '3vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text w-75\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '2vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\r\n [class.error-border]=\"error\">\r\n <div class=\"d-flex align-items-center w-90\">\r\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\r\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\r\n [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\r\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false;\" />\r\n </div>\r\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\r\n </div>\r\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode\r\n (Ex:500088)</span>\r\n </div>\r\n <div class=\"bottom-container row mx-auto mt-3\">\r\n <div class=\"state-container row gap-3 justify-content-center mb-5\" *ngIf=\"showState && !pincode\">\r\n <ng-container *ngFor=\"let state of stateList; let i = index\">\r\n <div class=\"state-card p-2 col-sm-6\" (click)=\"setStateData(state)\">\r\n <ng-container *ngIf=\"state?.stateImage; else noImage\">\r\n <img class=\"w-100 h-75\" [src]=\"state?.stateImage\">\r\n </ng-container>\r\n <ng-template #noImage>\r\n <img class=\"w-100 h-75\"\r\n src=\"https://cdn.caratlane.com/media/static/images/Find_In_Store/city_5.svg\">\r\n </ng-template>\r\n <div class=\"text-center mt-2 state-name\">{{state?.stateName}}</div>\r\n <div class=\"store-count text-center mb-3 mt-1\">{{state?.storeCount + \" stores\"}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\r\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\r\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\r\n </div>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text w-100 text-center\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '6vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"bottom-sub-text d-flex align-items-center justify-content-center mb-3 w-100 f-20 fw-bold\"> {{\r\n submit &&\r\n showMessage == true && pincode ? \"Showing \" + totalCount + \" Stores in \" + pincode :\r\n \"Showing All Stores\"}}</div>\r\n <ng-container *ngIf=\"!loader;else loaderScreen\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-4 p-2 store d-flex flex-column \" style=\"border-radius: 12px; border: none;\"\r\n *ngFor=\"let ele of storesList; let i = index\">\r\n <div class=\"card-body position-relative d-flex flex-column h-100\">\r\n <!-- Content -->\r\n <div class=\"h-100 p-3 pb-0\">\r\n <div class=\"d-flex justify-content-between align-items-start mb-2\">\r\n <div class=\"d-flex flex-column mb-2 bb-1 w-100 pb-2\">\r\n <h6 class=\"card-title fw-bold mb-1 w-100\">{{ele?.name}}</h6>\r\n <div class=\"f-11\">\r\n \u2B504.{{ele?.star}} • {{ele?.reviewCount}} Google Reviews\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.address}},</p>\r\n <p class=\"mb-1 text-dark fw-medium\">\r\n {{ele?.addressDetails?.city}},\r\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},\r\n </p>\r\n <p class=\"mb-0 fw-bold\">Phone-\r\n <span\r\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.phone}}</span>\r\n </p>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-0 fw-bold\" [style.color]=\"data?.styles?.background?.accentColor\">\r\n STORE HOURS -\r\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\r\n </p>\r\n </div>\r\n </div>\r\n <!-- Fixed bottom buttons -->\r\n <div class=\"d-flex gap-3 align-items-center justify-content-between p-3 w-100 br-20\" [style.backgroundColor]=\"getRGBA(styles?.background?.accentColor,10)\">\r\n <div class=\"br-12 d-flex align-items-center justify-content-center\"\r\n style=\"width: 30px; height: 30px;\" (click)=\"openWhatsapp(ele?.phone)\"\r\n [style.backgroundColor]=\"data?.styles?.background?.accentColor\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"height: 20px;cursor: pointer;\">\r\n <path [attr.fill]=\"getTextColor(data?.styles?.background?.accentColor)\"\r\n d=\"M380.9 97.1c-41.9-42-97.7-65.1-157-65.1-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480 117.7 449.1c32.4 17.7 68.9 27 106.1 27l.1 0c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1s56.2 81.2 56.1 130.5c0 101.8-84.9 184.6-186.6 184.6zM325.1 300.5c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8s-14.3 18-17.6 21.8c-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7s-12.5-30.1-17.1-41.2c-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2s-9.7 1.4-14.8 6.9c-5.1 5.6-19.4 19-19.4 46.3s19.9 53.7 22.6 57.4c2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4s4.6-24.1 3.2-26.4c-1.3-2.5-5-3.9-10.5-6.6z\" />\r\n </svg>\r\n </div>\r\n <button class=\"btn w-50\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\"\r\n [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.storeId)\">\r\n {{button?.content?.label}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #loaderScreen>\r\n <div class=\"row loader-container\">\r\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\r\n <ngx-skeleton-loader class=\"col-4 loader-column\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px;background:#fff}.location-container input{border:unset;appearance:unset;outline:unset;background:#fff;font-size:13px}.f-11{font-size:11px}.f-14{font-size:14px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{box-shadow:#0000000d 0 0 0 1px;border-radius:24px;height:100%}.card-bottom{POSITION:ABSOLUTE;width:90%;bottom:15px}.br-12{border-radius:12px}.btn{font-size:12px!important}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bottom-container{width:80%}@media (max-width:475px){.sub-text{width:100%!important}.loader-container{flex-direction:column;padding-right:0!important}.loader-column,.not-available-text{width:100%!important}.location-container{width:55%!important}.bottom-container{flex-direction:column;margin:0!important;width:100%!important}.store{width:100%!important}.state-container{margin:unset!important}.state-container .state-card{width:45%}}.main-container{padding-bottom:9%}.state-card{width:13%;box-shadow:#0000000d 0 0 0 1px;border-radius:20px;cursor:pointer}.state-card img{border-bottom:1px solid rgba(0,0,0,.05)}.state-card .state-name{font-size:14px;font-weight:600}.state-card .store-count{font-size:13px}.bb-1{border-bottom:2px solid rgba(0,0,0,.05)}.br-20{border-radius:0 0 20px 20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: FormsModule }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }] }); }
|
129
129
|
}
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoreListComponent, decorators: [{
|
131
131
|
type: Component,
|
@@ -142,7 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
142
142
|
NgxSkeletonLoaderModule,
|
143
143
|
ButtonEditorDirective,
|
144
144
|
ColorDirective,
|
145
|
-
], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\r\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <ng-container *ngIf=\"!loader\">\r\n <div class=\"store-header mb-3\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? \"Stores in \" +\r\n pincode :\r\n \"Find a Store Near You\"}}\r\n </div>\r\n <div class=\"sub-text\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? 'We have ' +\r\n totalCount\r\n + ' stores in this locality, scroll down to view the stores\r\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\r\n and\r\n we look forward to serving you.' }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '3vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text w-75\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '2vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\r\n [class.error-border]=\"error\">\r\n <div class=\"d-flex align-items-center w-90\">\r\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\r\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\r\n [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\r\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false;\" />\r\n </div>\r\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\r\n </div>\r\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode\r\n (Ex:500088)</span>\r\n </div>\r\n <div class=\"bottom-container row mx-auto mt-3\">\r\n <div class=\"state-container row gap-3 justify-content-center mb-5\" *ngIf=\"showState && !pincode\">\r\n <ng-container *ngFor=\"let state of stateList; let i = index\">\r\n <div class=\"state-card p-2 col-sm-6\" (click)=\"setStateData(state)\">\r\n <ng-container *ngIf=\"state?.stateImage; else noImage\">\r\n <img class=\"w-100 h-75\" [src]=\"state?.stateImage\">\r\n </ng-container>\r\n <ng-template #noImage>\r\n <img class=\"w-100 h-75\"\r\n src=\"https://cdn.caratlane.com/media/static/images/Find_In_Store/city_5.svg\">\r\n </ng-template>\r\n <div class=\"text-center mt-2 state-name\">{{state?.stateName}}</div>\r\n <div class=\"store-count text-center mb-3 mt-1\">{{state?.storeCount + \" stores\"}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\r\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\r\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\r\n </div>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text w-100 text-center\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '6vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"bottom-sub-text d-flex align-items-center justify-content-center mb-3 w-100 f-20 fw-bold\"> {{\r\n submit &&\r\n showMessage == true && pincode ? \"Showing \" + totalCount + \" Stores in \" + pincode :\r\n \"Showing All Stores\"}}</div>\r\n <ng-container *ngIf=\"!loader;else loaderScreen\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-4 p-2 store d-flex flex-column \" style=\"border-radius: 12px; border: none;\"\r\n *ngFor=\"let ele of storesList; let i = index\">\r\n <div class=\"card-body position-relative d-flex flex-column h-100\">\r\n <!-- Content -->\r\n <div class=\"h-100 p-3 pb-0\">\r\n <div class=\"d-flex justify-content-between align-items-start mb-2\">\r\n <div class=\"d-flex flex-column mb-2 bb-1 w-100 pb-2\">\r\n <h6 class=\"card-title fw-bold mb-1 w-100\">{{ele?.storeName}}</h6>\r\n <div class=\"f-11\">\r\n \u2B504.{{ele?.star}} • {{ele?.reviewCount}} Google Reviews\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.addressLine}},</p>\r\n <p class=\"mb-1 text-dark fw-medium\">\r\n {{ele?.addressDetails?.city}},\r\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},\r\n </p>\r\n <p class=\"mb-0 fw-bold\">Phone-\r\n <span\r\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.storeContactDetails?.mobile}}</span>\r\n </p>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-0 fw-bold\" [style.color]=\"data?.styles?.background?.accentColor\">\r\n STORE HOURS -\r\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\r\n </p>\r\n </div>\r\n </div>\r\n <!-- Fixed bottom buttons -->\r\n <div class=\"d-flex gap-3 align-items-center justify-content-between p-3 w-100 br-20\" [style.backgroundColor]=\"getRGBA(styles?.background?.accentColor,10)\">\r\n <div class=\"br-12 d-flex align-items-center justify-content-center\"\r\n style=\"width: 30px; height: 30px;\" (click)=\"openWhatsapp(ele?.storeContactDetails?.mobile)\"\r\n [style.backgroundColor]=\"data?.styles?.background?.accentColor\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"height: 20px;cursor: pointer;\">\r\n <path [attr.fill]=\"getTextColor(data?.styles?.background?.accentColor)\"\r\n d=\"M380.9 97.1c-41.9-42-97.7-65.1-157-65.1-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480 117.7 449.1c32.4 17.7 68.9 27 106.1 27l.1 0c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1s56.2 81.2 56.1 130.5c0 101.8-84.9 184.6-186.6 184.6zM325.1 300.5c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8s-14.3 18-17.6 21.8c-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7s-12.5-30.1-17.1-41.2c-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2s-9.7 1.4-14.8 6.9c-5.1 5.6-19.4 19-19.4 46.3s19.9 53.7 22.6 57.4c2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4s4.6-24.1 3.2-26.4c-1.3-2.5-5-3.9-10.5-6.6z\" />\r\n </svg>\r\n </div>\r\n <button class=\"btn w-50\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\"\r\n [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.id)\">\r\n {{button?.content?.label}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #loaderScreen>\r\n <div class=\"row loader-container\">\r\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\r\n <ngx-skeleton-loader class=\"col-4 loader-column\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px;background:#fff}.location-container input{border:unset;appearance:unset;outline:unset;background:#fff;font-size:13px}.f-11{font-size:11px}.f-14{font-size:14px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{box-shadow:#0000000d 0 0 0 1px;border-radius:24px;height:100%}.card-bottom{POSITION:ABSOLUTE;width:90%;bottom:15px}.br-12{border-radius:12px}.btn{font-size:12px!important}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bottom-container{width:80%}@media (max-width:475px){.sub-text{width:100%!important}.loader-container{flex-direction:column;padding-right:0!important}.loader-column,.not-available-text{width:100%!important}.location-container{width:55%!important}.bottom-container{flex-direction:column;margin:0!important;width:100%!important}.store{width:100%!important}.state-container{margin:unset!important}.state-container .state-card{width:45%}}.main-container{padding-bottom:9%}.state-card{width:13%;box-shadow:#0000000d 0 0 0 1px;border-radius:20px;cursor:pointer}.state-card img{border-bottom:1px solid rgba(0,0,0,.05)}.state-card .state-name{font-size:14px;font-weight:600}.state-card .store-count{font-size:13px}.bb-1{border-bottom:2px solid rgba(0,0,0,.05)}.br-20{border-radius:0 0 20px 20px}\n"] }]
|
145
|
+
], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\r\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <ng-container *ngIf=\"!loader\">\r\n <div class=\"store-header mb-3\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? \"Stores in \" +\r\n pincode :\r\n \"Find a Store Near You\"}}\r\n </div>\r\n <div class=\"sub-text\">\r\n {{ submit && showMessage == true && pincode && pincode?.toString()?.length == 6 ? 'We have ' +\r\n totalCount\r\n + ' stores in this locality, scroll down to view the stores\r\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\r\n and\r\n we look forward to serving you.' }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '3vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text w-75\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '2vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\r\n [class.error-border]=\"error\">\r\n <div class=\"d-flex align-items-center w-90\">\r\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\r\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\r\n [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\r\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false;\" />\r\n </div>\r\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\r\n </div>\r\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode\r\n (Ex:500088)</span>\r\n </div>\r\n <div class=\"bottom-container row mx-auto mt-3\">\r\n <div class=\"state-container row gap-3 justify-content-center mb-5\" *ngIf=\"showState && !pincode\">\r\n <ng-container *ngFor=\"let state of stateList; let i = index\">\r\n <div class=\"state-card p-2 col-sm-6\" (click)=\"setStateData(state)\">\r\n <ng-container *ngIf=\"state?.stateImage; else noImage\">\r\n <img class=\"w-100 h-75\" [src]=\"state?.stateImage\">\r\n </ng-container>\r\n <ng-template #noImage>\r\n <img class=\"w-100 h-75\"\r\n src=\"https://cdn.caratlane.com/media/static/images/Find_In_Store/city_5.svg\">\r\n </ng-template>\r\n <div class=\"text-center mt-2 state-name\">{{state?.stateName}}</div>\r\n <div class=\"store-count text-center mb-3 mt-1\">{{state?.storeCount + \" stores\"}}</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\r\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\r\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\r\n </div>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text w-100 text-center\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '6vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"bottom-sub-text d-flex align-items-center justify-content-center mb-3 w-100 f-20 fw-bold\"> {{\r\n submit &&\r\n showMessage == true && pincode ? \"Showing \" + totalCount + \" Stores in \" + pincode :\r\n \"Showing All Stores\"}}</div>\r\n <ng-container *ngIf=\"!loader;else loaderScreen\">\r\n <div class=\"row d-flex\">\r\n <div class=\"col-4 p-2 store d-flex flex-column \" style=\"border-radius: 12px; border: none;\"\r\n *ngFor=\"let ele of storesList; let i = index\">\r\n <div class=\"card-body position-relative d-flex flex-column h-100\">\r\n <!-- Content -->\r\n <div class=\"h-100 p-3 pb-0\">\r\n <div class=\"d-flex justify-content-between align-items-start mb-2\">\r\n <div class=\"d-flex flex-column mb-2 bb-1 w-100 pb-2\">\r\n <h6 class=\"card-title fw-bold mb-1 w-100\">{{ele?.name}}</h6>\r\n <div class=\"f-11\">\r\n \u2B504.{{ele?.star}} • {{ele?.reviewCount}} Google Reviews\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.address}},</p>\r\n <p class=\"mb-1 text-dark fw-medium\">\r\n {{ele?.addressDetails?.city}},\r\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},\r\n </p>\r\n <p class=\"mb-0 fw-bold\">Phone-\r\n <span\r\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.phone}}</span>\r\n </p>\r\n </div>\r\n <div class=\"mb-2 f-11\">\r\n <p class=\"mb-0 fw-bold\" [style.color]=\"data?.styles?.background?.accentColor\">\r\n STORE HOURS -\r\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\r\n </p>\r\n </div>\r\n </div>\r\n <!-- Fixed bottom buttons -->\r\n <div class=\"d-flex gap-3 align-items-center justify-content-between p-3 w-100 br-20\" [style.backgroundColor]=\"getRGBA(styles?.background?.accentColor,10)\">\r\n <div class=\"br-12 d-flex align-items-center justify-content-center\"\r\n style=\"width: 30px; height: 30px;\" (click)=\"openWhatsapp(ele?.phone)\"\r\n [style.backgroundColor]=\"data?.styles?.background?.accentColor\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"height: 20px;cursor: pointer;\">\r\n <path [attr.fill]=\"getTextColor(data?.styles?.background?.accentColor)\"\r\n d=\"M380.9 97.1c-41.9-42-97.7-65.1-157-65.1-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480 117.7 449.1c32.4 17.7 68.9 27 106.1 27l.1 0c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3 18.6-68.1-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1s56.2 81.2 56.1 130.5c0 101.8-84.9 184.6-186.6 184.6zM325.1 300.5c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8s-14.3 18-17.6 21.8c-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7s-12.5-30.1-17.1-41.2c-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2s-9.7 1.4-14.8 6.9c-5.1 5.6-19.4 19-19.4 46.3s19.9 53.7 22.6 57.4c2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4s4.6-24.1 3.2-26.4c-1.3-2.5-5-3.9-10.5-6.6z\" />\r\n </svg>\r\n </div>\r\n <button class=\"btn w-50\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\"\r\n [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.storeId)\">\r\n {{button?.content?.label}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #loaderScreen>\r\n <div class=\"row loader-container\">\r\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\r\n <ngx-skeleton-loader class=\"col-4 loader-column\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px;background:#fff}.location-container input{border:unset;appearance:unset;outline:unset;background:#fff;font-size:13px}.f-11{font-size:11px}.f-14{font-size:14px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{box-shadow:#0000000d 0 0 0 1px;border-radius:24px;height:100%}.card-bottom{POSITION:ABSOLUTE;width:90%;bottom:15px}.br-12{border-radius:12px}.btn{font-size:12px!important}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bottom-container{width:80%}@media (max-width:475px){.sub-text{width:100%!important}.loader-container{flex-direction:column;padding-right:0!important}.loader-column,.not-available-text{width:100%!important}.location-container{width:55%!important}.bottom-container{flex-direction:column;margin:0!important;width:100%!important}.store{width:100%!important}.state-container{margin:unset!important}.state-container .state-card{width:45%}}.main-container{padding-bottom:9%}.state-card{width:13%;box-shadow:#0000000d 0 0 0 1px;border-radius:20px;cursor:pointer}.state-card img{border-bottom:1px solid rgba(0,0,0,.05)}.state-card .state-name{font-size:14px;font-weight:600}.state-card .store-count{font-size:13px}.bb-1{border-bottom:2px solid rgba(0,0,0,.05)}.br-20{border-radius:0 0 20px 20px}\n"] }]
|
146
146
|
}], ctorParameters: () => [{ type: i1.RestService }, { type: i2.Router }], propDecorators: { data: [{
|
147
147
|
type: Input
|
148
148
|
}], edit: [{
|
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
154
154
|
}], index: [{
|
155
155
|
type: Input
|
156
156
|
}] } });
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9zdG9yZS1saXN0L3N0b3JlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc3RvcmUtbGlzdC9zdG9yZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbkYsT0FBTyxF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c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nTW9kdWxlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgU3RvcmVMaXN0TW9kYWwsIFN0b3JlTGlzdFN0eWxlTW9kZWwgfSBmcm9tICcuL3N0b3JlLWxpc3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSB9IGZyb20gJ25neC1za2VsZXRvbi1sb2FkZXInO1xyXG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tc3RvcmUtbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxyXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmUtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0b3JlLWxpc3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JlTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuXHJcbiAgQElucHV0KCkgZGF0YT86IFN0b3JlTGlzdE1vZGFsXHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgcGFnZU5vOiBudW1iZXIgPSAwO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhcmRTaXplOiBudW1iZXIgPSA1MDtcclxuXHJcblxyXG4gIHN0eWxlcz86IFN0b3JlTGlzdFN0eWxlTW9kZWw7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWxcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLnBpbmNvZGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncGluY29kZScpID8/IFwiXCI7XHJcbiAgICBpZiAodGhpcy5waW5jb2RlPy50b1N0cmluZygpLmxlbmd0aCA9PSA2KSB7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YVdpdGhQaW5jb2RlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFN0b3JlRGV0YWlscygpO1xyXG4gIH1cclxuICBzdG9yZXNMaXN0OiBhbnkgPSBbXTtcclxuICBwaW5jb2RlOiBhbnk7XHJcbiAgc3RvcmVQYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBidXNpbmVzc0lkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiMWYwNWYwODUtZDg2NS02YmM1LTgyYjQtMDU3MDY2N2Q2ZjVlXCIsXHJcbiAgICBwYWdlTm86IDAsXHJcbiAgICBwYWdlU2l6ZTogMTVcclxuICB9XHJcbiAgZ2V0RGF0YVdpdGhQaW5jb2RlKCkge1xyXG4gICAgaWYgKHRoaXMucGluY29kZS50b1N0cmluZygpLmxlbmd0aCAhPSA2KSB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSB0cnVlXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmVQYXlsb2FkLnBpbmNvZGUgPSB0aGlzLnBpbmNvZGU7XHJcbiAgICB0aGlzLmdldFN0b3JlRGV0YWlscygpO1xyXG4gIH1cclxuICBzaG93TWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc3VibWl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0ZUxpc3Q6IGFueVxyXG4gIGdldFN0b3JlRGV0YWlscygpIHtcclxuICAgIHRoaXMuc3VibWl0ID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsU3RvcmVzKHRoaXMuc3RvcmVQYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVzTGlzdCA9IHJlcz8uZGF0YT8uZGF0YTtcclxuICAgICAgdGhpcy5zdG9yZXNMaXN0LmZvckVhY2goKHN0b3JlIDogYW55KT0+IHtcclxuICAgICAgICBzdG9yZS5zdGFyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOSkgKyAxO1xyXG4gICAgICAgIHN0b3JlLnJldmlld0NvdW50ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDUwMCAtIDEwMCArIDEpKSArIDEwMDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcz8uZGF0YT8uY291bnQ7XHJcbiAgICAgIHRoaXMuc3RhdGVMaXN0ID0gcmVzPy5kYXRhPy5zdGF0ZURldGFpbHM7XHJcbiAgICAgIGlmICh0aGlzLnBpbmNvZGU/LnRvU3RyaW5nKCkubGVuZ3RoID09IDYpXHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZSA9IHJlcz8uZGF0YT8uc3RvcmVQcmVzZW50O1xyXG4gICAgICB0aGlzLnN0b3JlUGF5bG9hZC5wYWdlTm8rKztcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBzaG93U3RhdGU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgc2VsZWN0ZWRTdGF0ZTogc3RyaW5nID0gXCJcIlxyXG4gIHNldFN0YXRlRGF0YShzdGF0ZURhdGE6IGFueSkge1xyXG4gICAgdGhpcy5zdG9yZXNMaXN0ID0gc3RhdGVEYXRhPy5zdG9yZUxpc3Q7XHJcbiAgICB0aGlzLnNob3dTdGF0ZSA9IGZhbHNlO1xyXG4gIH1cclxuICBnZXRUZXh0Q29sb3IoYmdDb2xvcjogYW55KSB7XHJcbiAgICBpZiAoYmdDb2xvcikge1xyXG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7IC8vIEFkanVzdCB0aGlzIHRocmVzaG9sZCBhcyBuZWVkZWRcclxuICAgICAgY29uc3QgciA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgICAgY29uc3QgZyA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoNSwgNyksIDE2KTtcclxuICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IChyICogMjk5ICsgZyAqIDU4NyArIGIgKiAxMTQpIC8gMTAwMDtcclxuXHJcbiAgICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiI2ZmZmZmZjtcIlxyXG4gIH1cclxuICBvcGVuV2hhdHNhcHAocGhvbmU6IHN0cmluZykge1xyXG4gICAgaWYgKHBob25lKSB7XHJcbiAgICAgIGNvbnN0IHdoYXRzYXBwVXJsID0gYGh0dHBzOi8vd2EubWUvJHtwaG9uZX1gO1xyXG4gICAgICB3aW5kb3cub3Blbih3aGF0c2FwcFVybCwgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gIH1cclxuICB2aWV3U3RvcmUoc3RvcmVJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zdG9yZSddLCB7IHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IHN0b3JlSWQgfSB9KTtcclxuICB9XHJcbiAgZ2V0VGltZShzdG9yZUhvdXJzOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZGF5TmFtZSA9IHRvZGF5LnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7IHdlZWtkYXk6ICdsb25nJyB9KS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgZm9yIChsZXQgZWxlIG9mIHN0b3JlSG91cnMpIHtcclxuICAgICAgaWYgKGVsZS5kYXlPZldlZWsgPT0gZGF5TmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlID09ICdPUEVOJykge1xyXG4gICAgICAgICAgcmV0dXJuIGVsZS5vcGVuaW5nVGltZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlLmNsb3NpbmdUaW1lXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFJHQkEoYmdDb2xvcjogYW55LCBvcGFjaXR5OiBudW1iZXIpOiBhbnkge1xyXG4gICAgY29uc3QgciA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgIGNvbnN0IGcgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSg1LCA3KSwgMTYpO1xyXG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eSAvIDEwMH0pYDtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0b3RhbC1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1zZWN0aW9uIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWNlbnRlciBmbGV4LWNvbHVtblwiXHJcbiAgICAgICAgICAgIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtaGVhZGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PSA2ID8gXCJTdG9yZXMgaW4gXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgIHBpbmNvZGUgOlxyXG4gICAgICAgICAgICAgICAgICAgIFwiRmluZCBhIFN0b3JlIE5lYXIgWW91XCJ9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PSA2ID8gJ1dlIGhhdmUgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICsgJyBzdG9yZXMgaW4gdGhpcyBsb2NhbGl0eSwgc2Nyb2xsIGRvd24gdG8gdmlldyB0aGUgc3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgYW5kIGJyb3dzZSB0aGUgZGVzaWducyBhdmFpbGFibGUuJyA6ICdMb2NhdGUgYSBzdG9yZSBuZWFyIHlvdSDigJQgb3VyIHByZXNlbmNlIGlzIGV4cGFuZGluZyBldmVyeSBkYXksXHJcbiAgICAgICAgICAgICAgICAgICAgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgd2UgbG9vayBmb3J3YXJkIHRvIHNlcnZpbmcgeW91LicgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMzUlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzN2aCcsXHJcbiAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxyXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dCB3LTc1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMzUlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzJ2aCcsXHJcbiAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxyXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTI1XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwiZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctOTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTFcIj48bWF0LWljb24gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0yMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPmdwc19maXhlZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBwbGFjZWhvbGRlcj1cIlBpbiBDb2RlXCIgWyhuZ01vZGVsKV09XCJwaW5jb2RlXCIgY2xhc3M9XCJ3LTkwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggIT0gNiA/IHN1Ym1pdCA9IGZhbHNlIDogZXJyb3IgPSBmYWxzZTtcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnZXREYXRhV2l0aFBpbmNvZGUoKVwiIGNsYXNzPVwiZi0xMyBjdXJzb3ItcG9pbnRlclwiPlN1Ym1pdDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmLTEyIHctMjUgdGV4dC1zdGFydCBtdC0yXCIgKm5nSWY9XCJlcnJvclwiIFtzdHlsZS5jb2xvcl09XCInI2RjMzU0NSdcIj5JbnZhbGlkIFBpbmNvZGVcclxuICAgICAgICAgICAgICAgIChFeDo1MDAwODgpPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tY29udGFpbmVyIHJvdyBteC1hdXRvIG10LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWNvbnRhaW5lciByb3cgZ2FwLTMganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi01XCIgKm5nSWY9XCJzaG93U3RhdGUgJiYgIXBpbmNvZGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0YXRlIG9mIHN0YXRlTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1jYXJkIHAtMiBjb2wtc20tNlwiIChjbGljayk9XCJzZXRTdGF0ZURhdGEoc3RhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZT8uc3RhdGVJbWFnZTsgZWxzZSBub0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgaC03NVwiIFtzcmNdPVwic3RhdGU/LnN0YXRlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMCBoLTc1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi5jYXJhdGxhbmUuY29tL21lZGlhL3N0YXRpYy9pbWFnZXMvRmluZF9Jbl9TdG9yZS9jaXR5XzUuc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yIHN0YXRlLW5hbWVcIj57e3N0YXRlPy5zdGF0ZU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtY291bnQgdGV4dC1jZW50ZXIgbWItMyBtdC0xXCI+e3tzdGF0ZT8uc3RvcmVDb3VudCArIFwiIHN0b3Jlc1wifX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0zXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0ICYmIHNob3dNZXNzYWdlID09IGZhbHNlICYmIHBpbmNvZGUgJiYgcGluY29kZS50b1N0cmluZygpLmxlbmd0aCA9PTYgJiYgIWxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG5vdC1hdmFpbGFibGUtdGV4dFwiPldlIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoaXMgbG9jYXRpb24gY3VycmVudGx5PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQgdy0xMDAgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBbdGhlbWVdPVwie1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICczNSUnLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnNnZoJyxcclxuICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTJweCcsXHJcbiAgICAgICAgICAgICAgICAgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1zdWItdGV4dCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItMyB3LTEwMCBmLTIwIGZ3LWJvbGRcIj4ge3tcclxuICAgICAgICAgICAgICAgIHN1Ym1pdCAmJlxyXG4gICAgICAgICAgICAgICAgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlID8gXCJTaG93aW5nIFwiICsgdG90YWxDb3VudCArIFwiIFN0b3JlcyBpbiBcIiArIHBpbmNvZGUgOlxyXG4gICAgICAgICAgICAgICAgXCJTaG93aW5nIEFsbCBTdG9yZXNcIn19PC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyO2Vsc2UgbG9hZGVyU2NyZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBwLTIgc3RvcmUgZC1mbGV4IGZsZXgtY29sdW1uIFwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTJweDsgYm9yZGVyOiBub25lO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGUgb2Ygc3RvcmVzTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWNvbHVtbiAgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29udGVudCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCAgcC0zIHBiLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtYi0yIGJiLTEgdy0xMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiY2FyZC10aXRsZSBmdy1ib2xkIG1iLTEgdy0xMDBcIj57e2VsZT8uc3RvcmVOYW1lfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImYtMTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDirZA0Lnt7ZWxlPy5zdGFyfX0gJm5ic3A7JiN4MjAyMjsmbmJzcDt7e2VsZT8ucmV2aWV3Q291bnR9fSZuYnNwO0dvb2dsZSBSZXZpZXdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgZi0xMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTEgdGV4dC1kYXJrIGZ3LW1lZGl1bVwiPnt7ZWxlPy5hZGRyZXNzRGV0YWlscz8uYWRkcmVzc0xpbmV9fSw8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMSB0ZXh0LWRhcmsgZnctbWVkaXVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VsZT8uYWRkcmVzc0RldGFpbHM/LmNpdHl9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZWxlPy5hZGRyZXNzRGV0YWlscz8uc3RhdGV9fSx7e2VsZT8uYWRkcmVzc0RldGFpbHM/LnBpbmNvZGV9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgZnctYm9sZFwiPlBob25lLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7ZWxlPy5zdG9yZUNvbnRhY3REZXRhaWxzPy5tb2JpbGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIGYtMTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wICBmdy1ib2xkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUT1JFIEhPVVJTIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0VGltZShlbGU/LnN0b3JlSG91cnMsJ09QRU4nKX19IHRvIHt7Z2V0VGltZShlbGU/LnN0b3JlSG91cnMsJ0NMT1NFJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRml4ZWQgYm90dG9tIGJ1dHRvbnMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiAgcC0zIHctMTAwIGJyLTIwXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJnZXRSR0JBKHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IsMTApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDtcIiAoY2xpY2spPVwib3BlbldoYXRzYXBwKGVsZT8uc3RvcmVDb250YWN0RGV0YWlscz8ubW9iaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDQ0OCA1MTJcIiBzdHlsZT1cImhlaWdodDogMjBweDtjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBbYXR0ci5maWxsXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zODAuOSA5Ny4xYy00MS45LTQyLTk3LjctNjUuMS0xNTctNjUuMS0xMjIuNCAwLTIyMiA5OS42LTIyMiAyMjIgMCAzOS4xIDEwLjIgNzcuMyAyOS42IDExMUwwIDQ4MCAxMTcuNyA0NDkuMWMzMi40IDE3LjcgNjguOSAyNyAxMDYuMSAyN2wuMSAwYzEyMi4zIDAgMjI0LjEtOTkuNiAyMjQuMS0yMjIgMC01OS4zLTI1LjItMTE1LTY3LjEtMTU3em0tMTU3IDM0MS42Yy0zMy4yIDAtNjUuNy04LjktOTQtMjUuN2wtNi43LTQtNjkuOCAxOC4zIDE4LjYtNjguMS00LjQtN2MtMTguNS0yOS40LTI4LjItNjMuMy0yOC4yLTk4LjIgMC0xMDEuNyA4Mi44LTE4NC41IDE4NC42LTE4NC41IDQ5LjMgMCA5NS42IDE5LjIgMTMwLjQgNTQuMXM1Ni4yIDgxLjIgNTYuMSAxMzAuNWMwIDEwMS44LTg0LjkgMTg0LjYtMTg2LjYgMTg0LjZ6TTMyNS4xIDMwMC41Yy01LjUtMi44LTMyLjgtMTYuMi0zNy45LTE4LTUuMS0xLjktOC44LTIuOC0xMi41IDIuOHMtMTQuMyAxOC0xNy42IDIxLjhjLTMuMiAzLjctNi41IDQuMi0xMiAxLjQtMzIuNi0xNi4zLTU0LTI5LjEtNzUuNS02Ni01LjctOS44IDUuNy05LjEgMTYuMy0zMC4zIDEuOC0zLjcgLjktNi45LS41LTkuN3MtMTIuNS0zMC4xLTE3LjEtNDEuMmMtNC41LTEwLjgtOS4xLTkuMy0xMi41LTkuNS0zLjItLjItNi45LS4yLTEwLjYtLjJzLTkuNyAxLjQtMTQuOCA2LjljLTUuMSA1LjYtMTkuNCAxOS0xOS40IDQ2LjNzMTkuOSA1My43IDIyLjYgNTcuNGMyLjggMy43IDM5LjEgNTkuNyA5NC44IDgzLjggMzUuMiAxNS4yIDQ5IDE2LjUgNjYuNiAxMy45IDEwLjctMS42IDMyLjgtMTMuNCAzNy40LTI2LjRzNC42LTI0LjEgMy4yLTI2LjRjLTEuMy0yLjUtNS0zLjktMTAuNS02LjZ6XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB3LTUwXCIgW2J1dHRvbkRhdGFdPVwiYnV0dG9uPy5jb250ZW50XCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkKyhidXR0b24/LmlkIHx8ICcnKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kSW5mb109XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmRcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uPy5pZCA/PyAnJ1wiIChjbGljayk9XCJ2aWV3U3RvcmUoZWxlLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJTY3JlZW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgWzEsMiwzLDQsNSw2XVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjbGFzcz1cImNvbC00IGxvYWRlci1jb2x1bW5cIiBbdGhlbWVdPVwie1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzQwdmgnLFxyXG4gICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMnB4JyxcclxuICAgICAgICAgICAgICAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9zdG9yZS1saXN0L3N0b3JlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc3RvcmUtbGlzdC9zdG9yZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbkYsT0FBTyxF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c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nTW9kdWxlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgU3RvcmVMaXN0TW9kYWwsIFN0b3JlTGlzdFN0eWxlTW9kZWwgfSBmcm9tICcuL3N0b3JlLWxpc3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSB9IGZyb20gJ25neC1za2VsZXRvbi1sb2FkZXInO1xyXG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tc3RvcmUtbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxyXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmUtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0b3JlLWxpc3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JlTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuXHJcbiAgQElucHV0KCkgZGF0YT86IFN0b3JlTGlzdE1vZGFsXHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgcGFnZU5vOiBudW1iZXIgPSAwO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhcmRTaXplOiBudW1iZXIgPSA1MDtcclxuXHJcblxyXG4gIHN0eWxlcz86IFN0b3JlTGlzdFN0eWxlTW9kZWw7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWxcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLnBpbmNvZGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncGluY29kZScpID8/IFwiXCI7XHJcbiAgICBpZiAodGhpcy5waW5jb2RlPy50b1N0cmluZygpLmxlbmd0aCA9PSA2KSB7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YVdpdGhQaW5jb2RlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFN0b3JlRGV0YWlscygpO1xyXG4gIH1cclxuICBzdG9yZXNMaXN0OiBhbnkgPSBbXTtcclxuICBwaW5jb2RlOiBhbnk7XHJcbiAgc3RvcmVQYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBidXNpbmVzc0lkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiMWYwNWYwODUtZDg2NS02YmM1LTgyYjQtMDU3MDY2N2Q2ZjVlXCIsXHJcbiAgICBwYWdlTm86IDAsXHJcbiAgICBwYWdlU2l6ZTogMTVcclxuICB9XHJcbiAgZ2V0RGF0YVdpdGhQaW5jb2RlKCkge1xyXG4gICAgaWYgKHRoaXMucGluY29kZS50b1N0cmluZygpLmxlbmd0aCAhPSA2KSB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSB0cnVlXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmVQYXlsb2FkLnBpbmNvZGUgPSB0aGlzLnBpbmNvZGU7XHJcbiAgICB0aGlzLmdldFN0b3JlRGV0YWlscygpO1xyXG4gIH1cclxuICBzaG93TWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc3VibWl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0ZUxpc3Q6IGFueVxyXG4gIGdldFN0b3JlRGV0YWlscygpIHtcclxuICAgIHRoaXMuc3VibWl0ID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsU3RvcmVzKHRoaXMuc3RvcmVQYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVzTGlzdCA9IHJlcz8uZGF0YT8uZGF0YTtcclxuICAgICAgdGhpcy5zdG9yZXNMaXN0LmZvckVhY2goKHN0b3JlIDogYW55KT0+IHtcclxuICAgICAgICBzdG9yZS5zdGFyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOSkgKyAxO1xyXG4gICAgICAgIHN0b3JlLnJldmlld0NvdW50ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDUwMCAtIDEwMCArIDEpKSArIDEwMDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcz8uZGF0YT8uY291bnQ7XHJcbiAgICAgIHRoaXMuc3RhdGVMaXN0ID0gcmVzPy5kYXRhPy5zdGF0ZURldGFpbHM7XHJcbiAgICAgIGlmICh0aGlzLnBpbmNvZGU/LnRvU3RyaW5nKCkubGVuZ3RoID09IDYpXHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZSA9IHJlcz8uZGF0YT8uc3RvcmVQcmVzZW50O1xyXG4gICAgICB0aGlzLnN0b3JlUGF5bG9hZC5wYWdlTm8rKztcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBzaG93U3RhdGU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgc2VsZWN0ZWRTdGF0ZTogc3RyaW5nID0gXCJcIlxyXG4gIHNldFN0YXRlRGF0YShzdGF0ZURhdGE6IGFueSkge1xyXG4gICAgdGhpcy5zdG9yZXNMaXN0ID0gc3RhdGVEYXRhPy5zdG9yZUxpc3Q7XHJcbiAgICB0aGlzLnNob3dTdGF0ZSA9IGZhbHNlO1xyXG4gIH1cclxuICBnZXRUZXh0Q29sb3IoYmdDb2xvcjogYW55KSB7XHJcbiAgICBpZiAoYmdDb2xvcikge1xyXG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7IC8vIEFkanVzdCB0aGlzIHRocmVzaG9sZCBhcyBuZWVkZWRcclxuICAgICAgY29uc3QgciA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgICAgY29uc3QgZyA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoNSwgNyksIDE2KTtcclxuICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IChyICogMjk5ICsgZyAqIDU4NyArIGIgKiAxMTQpIC8gMTAwMDtcclxuXHJcbiAgICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiI2ZmZmZmZjtcIlxyXG4gIH1cclxuICBvcGVuV2hhdHNhcHAocGhvbmU6IHN0cmluZykge1xyXG4gICAgaWYgKHBob25lKSB7XHJcbiAgICAgIGNvbnN0IHdoYXRzYXBwVXJsID0gYGh0dHBzOi8vd2EubWUvJHtwaG9uZX1gO1xyXG4gICAgICB3aW5kb3cub3Blbih3aGF0c2FwcFVybCwgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gIH1cclxuICB2aWV3U3RvcmUoc3RvcmVJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zdG9yZSddLCB7IHF1ZXJ5UGFyYW1zOiB7IHN0b3JlSWQ6IHN0b3JlSWQgfSB9KTtcclxuICB9XHJcbiAgZ2V0VGltZShzdG9yZUhvdXJzOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZGF5TmFtZSA9IHRvZGF5LnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7IHdlZWtkYXk6ICdsb25nJyB9KS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgZm9yIChsZXQgZWxlIG9mIHN0b3JlSG91cnMpIHtcclxuICAgICAgaWYgKGVsZS5kYXlPZldlZWsgPT0gZGF5TmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlID09ICdPUEVOJykge1xyXG4gICAgICAgICAgcmV0dXJuIGVsZS5vcGVuaW5nVGltZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlLmNsb3NpbmdUaW1lXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFJHQkEoYmdDb2xvcjogYW55LCBvcGFjaXR5OiBudW1iZXIpOiBhbnkge1xyXG4gICAgY29uc3QgciA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgIGNvbnN0IGcgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSg1LCA3KSwgMTYpO1xyXG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eSAvIDEwMH0pYDtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0b3RhbC1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1zZWN0aW9uIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWNlbnRlciBmbGV4LWNvbHVtblwiXHJcbiAgICAgICAgICAgIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtaGVhZGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PSA2ID8gXCJTdG9yZXMgaW4gXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgIHBpbmNvZGUgOlxyXG4gICAgICAgICAgICAgICAgICAgIFwiRmluZCBhIFN0b3JlIE5lYXIgWW91XCJ9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PSA2ID8gJ1dlIGhhdmUgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICsgJyBzdG9yZXMgaW4gdGhpcyBsb2NhbGl0eSwgc2Nyb2xsIGRvd24gdG8gdmlldyB0aGUgc3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgYW5kIGJyb3dzZSB0aGUgZGVzaWducyBhdmFpbGFibGUuJyA6ICdMb2NhdGUgYSBzdG9yZSBuZWFyIHlvdSDigJQgb3VyIHByZXNlbmNlIGlzIGV4cGFuZGluZyBldmVyeSBkYXksXHJcbiAgICAgICAgICAgICAgICAgICAgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgd2UgbG9vayBmb3J3YXJkIHRvIHNlcnZpbmcgeW91LicgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMzUlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzN2aCcsXHJcbiAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxyXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dCB3LTc1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMzUlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzJ2aCcsXHJcbiAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxyXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTI1XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwiZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctOTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTFcIj48bWF0LWljb24gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0yMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPmdwc19maXhlZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBwbGFjZWhvbGRlcj1cIlBpbiBDb2RlXCIgWyhuZ01vZGVsKV09XCJwaW5jb2RlXCIgY2xhc3M9XCJ3LTkwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggIT0gNiA/IHN1Ym1pdCA9IGZhbHNlIDogZXJyb3IgPSBmYWxzZTtcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnZXREYXRhV2l0aFBpbmNvZGUoKVwiIGNsYXNzPVwiZi0xMyBjdXJzb3ItcG9pbnRlclwiPlN1Ym1pdDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmLTEyIHctMjUgdGV4dC1zdGFydCBtdC0yXCIgKm5nSWY9XCJlcnJvclwiIFtzdHlsZS5jb2xvcl09XCInI2RjMzU0NSdcIj5JbnZhbGlkIFBpbmNvZGVcclxuICAgICAgICAgICAgICAgIChFeDo1MDAwODgpPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tY29udGFpbmVyIHJvdyBteC1hdXRvIG10LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWNvbnRhaW5lciByb3cgZ2FwLTMganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi01XCIgKm5nSWY9XCJzaG93U3RhdGUgJiYgIXBpbmNvZGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0YXRlIG9mIHN0YXRlTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1jYXJkIHAtMiBjb2wtc20tNlwiIChjbGljayk9XCJzZXRTdGF0ZURhdGEoc3RhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZT8uc3RhdGVJbWFnZTsgZWxzZSBub0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgaC03NVwiIFtzcmNdPVwic3RhdGU/LnN0YXRlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMCBoLTc1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi5jYXJhdGxhbmUuY29tL21lZGlhL3N0YXRpYy9pbWFnZXMvRmluZF9Jbl9TdG9yZS9jaXR5XzUuc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yIHN0YXRlLW5hbWVcIj57e3N0YXRlPy5zdGF0ZU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtY291bnQgdGV4dC1jZW50ZXIgbWItMyBtdC0xXCI+e3tzdGF0ZT8uc3RvcmVDb3VudCArIFwiIHN0b3Jlc1wifX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0zXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0ICYmIHNob3dNZXNzYWdlID09IGZhbHNlICYmIHBpbmNvZGUgJiYgcGluY29kZS50b1N0cmluZygpLmxlbmd0aCA9PTYgJiYgIWxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG5vdC1hdmFpbGFibGUtdGV4dFwiPldlIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoaXMgbG9jYXRpb24gY3VycmVudGx5PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQgdy0xMDAgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBbdGhlbWVdPVwie1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICczNSUnLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnNnZoJyxcclxuICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTJweCcsXHJcbiAgICAgICAgICAgICAgICAgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1zdWItdGV4dCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItMyB3LTEwMCBmLTIwIGZ3LWJvbGRcIj4ge3tcclxuICAgICAgICAgICAgICAgIHN1Ym1pdCAmJlxyXG4gICAgICAgICAgICAgICAgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlID8gXCJTaG93aW5nIFwiICsgdG90YWxDb3VudCArIFwiIFN0b3JlcyBpbiBcIiArIHBpbmNvZGUgOlxyXG4gICAgICAgICAgICAgICAgXCJTaG93aW5nIEFsbCBTdG9yZXNcIn19PC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyO2Vsc2UgbG9hZGVyU2NyZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBwLTIgc3RvcmUgZC1mbGV4IGZsZXgtY29sdW1uIFwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTJweDsgYm9yZGVyOiBub25lO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGUgb2Ygc3RvcmVzTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWNvbHVtbiAgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29udGVudCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCAgcC0zIHBiLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtYi0yIGJiLTEgdy0xMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiY2FyZC10aXRsZSBmdy1ib2xkIG1iLTEgdy0xMDBcIj57e2VsZT8ubmFtZX19PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmLTExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4q2QNC57e2VsZT8uc3Rhcn19ICZuYnNwOyYjeDIwMjI7Jm5ic3A7e3tlbGU/LnJldmlld0NvdW50fX0mbmJzcDtHb29nbGUgUmV2aWV3c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIGYtMTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0xIHRleHQtZGFyayBmdy1tZWRpdW1cIj57e2VsZT8uYWRkcmVzc0RldGFpbHM/LmFkZHJlc3N9fSw8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMSB0ZXh0LWRhcmsgZnctbWVkaXVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VsZT8uYWRkcmVzc0RldGFpbHM/LmNpdHl9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZWxlPy5hZGRyZXNzRGV0YWlscz8uc3RhdGV9fSx7e2VsZT8uYWRkcmVzc0RldGFpbHM/LnBpbmNvZGV9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgZnctYm9sZFwiPlBob25lLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7ZWxlPy5waG9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgZi0xMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgIGZ3LWJvbGRcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RPUkUgSE9VUlMgLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRUaW1lKGVsZT8uc3RvcmVIb3VycywnT1BFTicpfX0gdG8ge3tnZXRUaW1lKGVsZT8uc3RvcmVIb3VycywnQ0xPU0UnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGaXhlZCBib3R0b20gYnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuICBwLTMgdy0xMDAgYnItMjBcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldFJHQkEoc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciwxMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnItMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMzBweDsgaGVpZ2h0OiAzMHB4O1wiIChjbGljayk9XCJvcGVuV2hhdHNhcHAoZWxlPy5waG9uZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA0NDggNTEyXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7Y3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggW2F0dHIuZmlsbF09XCJnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzgwLjkgOTcuMWMtNDEuOS00Mi05Ny43LTY1LjEtMTU3LTY1LjEtMTIyLjQgMC0yMjIgOTkuNi0yMjIgMjIyIDAgMzkuMSAxMC4yIDc3LjMgMjkuNiAxMTFMMCA0ODAgMTE3LjcgNDQ5LjFjMzIuNCAxNy43IDY4LjkgMjcgMTA2LjEgMjdsLjEgMGMxMjIuMyAwIDIyNC4xLTk5LjYgMjI0LjEtMjIyIDAtNTkuMy0yNS4yLTExNS02Ny4xLTE1N3ptLTE1NyAzNDEuNmMtMzMuMiAwLTY1LjctOC45LTk0LTI1LjdsLTYuNy00LTY5LjggMTguMyAxOC42LTY4LjEtNC40LTdjLTE4LjUtMjkuNC0yOC4yLTYzLjMtMjguMi05OC4yIDAtMTAxLjcgODIuOC0xODQuNSAxODQuNi0xODQuNSA0OS4zIDAgOTUuNiAxOS4yIDEzMC40IDU0LjFzNTYuMiA4MS4yIDU2LjEgMTMwLjVjMCAxMDEuOC04NC45IDE4NC42LTE4Ni42IDE4NC42ek0zMjUuMSAzMDAuNWMtNS41LTIuOC0zMi44LTE2LjItMzcuOS0xOC01LjEtMS45LTguOC0yLjgtMTIuNSAyLjhzLTE0LjMgMTgtMTcuNiAyMS44Yy0zLjIgMy43LTYuNSA0LjItMTIgMS40LTMyLjYtMTYuMy01NC0yOS4xLTc1LjUtNjYtNS43LTkuOCA1LjctOS4xIDE2LjMtMzAuMyAxLjgtMy43IC45LTYuOS0uNS05LjdzLTEyLjUtMzAuMS0xNy4xLTQxLjJjLTQuNS0xMC44LTkuMS05LjMtMTIuNS05LjUtMy4yLS4yLTYuOS0uMi0xMC42LS4ycy05LjcgMS40LTE0LjggNi45Yy01LjEgNS42LTE5LjQgMTktMTkuNCA0Ni4zczE5LjkgNTMuNyAyMi42IDU3LjRjMi44IDMuNyAzOS4xIDU5LjcgOTQuOCA4My44IDM1LjIgMTUuMiA0OSAxNi41IDY2LjYgMTMuOSAxMC43LTEuNiAzMi44LTEzLjQgMzcuNC0yNi40czQuNi0yNC4xIDMuMi0yNi40Yy0xLjMtMi41LTUtMy45LTEwLjUtNi42elwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gdy01MFwiIFtidXR0b25EYXRhXT1cImJ1dHRvbj8uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24/LnN0eWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCsoYnV0dG9uPy5pZCB8fCAnJylcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvbklkXT1cImJ1dHRvbj8uaWQgPz8gJydcIiAoY2xpY2spPVwidmlld1N0b3JlKGVsZS5zdG9yZUlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJTY3JlZW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgWzEsMiwzLDQsNSw2XVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjbGFzcz1cImNvbC00IGxvYWRlci1jb2x1bW5cIiBbdGhlbWVdPVwie1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzQwdmgnLFxyXG4gICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMnB4JyxcclxuICAgICAgICAgICAgICAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|