simpo-component-library 1.4.251 → 1.4.252
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
- package/fesm2022/simpo-component-library.mjs +4 -4
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/background-directive.d.ts +1 -1
- package/lib/directive/button-directive.directive.d.ts +1 -1
- package/lib/directive/color.directive.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/package.json +1 -1
- package/simpo-component-library-1.4.252.tgz +0 -0
@@ -195,7 +195,7 @@ export class WhislistComponent extends BaseSection {
|
|
195
195
|
return BUSINESS_CONSTANTS.CURRENCY;
|
196
196
|
}
|
197
197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: WhislistComponent, deps: [{ token: i1.CartService }, { token: i2.EventsService }, { token: i3.StorageServiceService }, { token: i4.RestService }, { token: i5.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: WhislistComponent, isStandalone: true, selector: "simpo-whislist", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\"\r\n [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\"[style.color]=\"styles?.background?.accentColor\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"row item-parent\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img loading=\"lazy\" class=\"product-img\" [src]=\"item.imgUrl ?? 'https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 h-100 item-desc\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name heading-large\" [style.color]=\"styles?.background?.accentColor\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\" [style.color]=\"styles?.background?.accentColor\">\r\n <span [innerHTML]='currency'></span> {{item.discountedPrice}}\r\n </div>\r\n <ng-container *ngIf=\"item.itemVariant\"> \r\n <div class=\"d-flex align-items-center\" *ngFor=\"let varient of getKeys(item.itemVariant.properties)\">\r\n <div class=\"fw-bold\"[style.color]=\"styles?.background?.accentColor\">{{ varient }} : </div>\r\n <!-- <div class=\"fw-normal\" style=\"margin-left: 5px; height: 13px; width: 13px; border-radius: 50%;\" *ngIf=\"varient.toLowerCase() == 'color'\" [style.backgroundColor]=\"item.itemVariant.properties[varient]\"></div> -->\r\n <div class=\"fw-normal\" style=\"margin-left: 5px;\"[style.color]=\"styles?.background?.accentColor\"> {{ item.itemVariant.properties[varient] | uppercase }}</div>\r\n </div>\r\n </ng-container>\r\n <div class=\"d-flex action-btn\" style=\"gap: 5px;\">\r\n <div class=\"item-quantity\" *ngIf=\"item.quantity\" [style.color]=\"styles?.background?.accentColor\">\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"item-quantity\" *ngIf=\"!item.quantity\" (click)=\"addToFav(item, 'ADD')\" [style.color]=\"styles?.background?.accentColor\">Add Quantity\r\n </div>\r\n <div class=\"item-quantity\" (click)=\"moveToCart(item)\" [style.color]=\"styles?.background?.accentColor\">Move to Cart</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-relative itemPrice\" style=\"margin-left: auto; width: 30%;\">\r\n <div class=\"item-price\" *ngIf=\"item.quantity\"><span [innerHTML]='currency'></span>\r\n {{(item.discountedPrice) * item.quantity}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"deleteFromWhislist(item)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img loading=\"lazy\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"cart-text\">\r\n <div class=\"heading-medium d-flex justify-content-center\" [style.color]=\"styles.background.accentColor\">\r\n Your Whislist is empty\r\n </div>\r\n <div class=\"description d-flex mt-4\" [style.color]=\"styles.background.accentColor\">\r\n Looks like you have not added anything to your Whislist. Go ahead & explore top categories.\r\n </div>\r\n </div>\r\n </div>\r\n </section>\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 <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\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".cart-parent{display:flex;flex-wrap:wrap;margin-top:15px;gap:20px}.left-panel{width:100%}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;width:48%;display:flex;flex-wrap:wrap}.my-bag{font-size:16px;font-weight:600;color:#000}.my-bag span{color:#939393}.item-parent{margin:10px 0;width:100%}.lh-23{line-height:23px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.cart-item{position:absolute;right:50px;bottom:10px;cursor:pointer}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:100%;width:110px;padding:0}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;cursor:pointer;display:flex;width:90px;min-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}@media only screen and (max-width: 475px){.cart-parent{flex-direction:column}.item-parent{flex-direction:row!important;flex-wrap:nowrap!important}.cart-items,.left-panel{width:100%}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-desc{width:73%}.itemPrice{width:24%!important}.action-btn{flex-wrap:wrap}.action-btn .item-quantity{width:100%;text-align:center;justify-content:center!important}}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i6.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: i7.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i8.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i9.UpperCasePipe, name: "uppercase" }, { kind: "directive", type:
|
198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: WhislistComponent, isStandalone: true, selector: "simpo-whislist", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\"\r\n [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\"[style.color]=\"styles?.background?.accentColor\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"d-flex item-parent\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img loading=\"lazy\" class=\"product-img\" [src]=\"item.imgUrl ?? 'https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 h-100 item-desc\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name heading-large\" [style.color]=\"styles?.background?.accentColor\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\" [style.color]=\"styles?.background?.accentColor\">\r\n <span [innerHTML]='currency'></span> {{item.discountedPrice}}\r\n </div>\r\n <ng-container *ngIf=\"item.itemVariant\"> \r\n <div class=\"d-flex align-items-center\" *ngFor=\"let varient of getKeys(item.itemVariant.properties)\">\r\n <div class=\"fw-bold\"[style.color]=\"styles?.background?.accentColor\">{{ varient }} : </div>\r\n <!-- <div class=\"fw-normal\" style=\"margin-left: 5px; height: 13px; width: 13px; border-radius: 50%;\" *ngIf=\"varient.toLowerCase() == 'color'\" [style.backgroundColor]=\"item.itemVariant.properties[varient]\"></div> -->\r\n <div class=\"fw-normal\" style=\"margin-left: 5px;\"[style.color]=\"styles?.background?.accentColor\"> {{ item.itemVariant.properties[varient] | uppercase }}</div>\r\n </div>\r\n </ng-container>\r\n <div class=\"d-flex action-btn\" style=\"gap: 5px;\">\r\n <div class=\"item-quantity\" *ngIf=\"item.quantity\" [style.color]=\"styles?.background?.accentColor\">\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"item-quantity\" *ngIf=\"!item.quantity\" (click)=\"addToFav(item, 'ADD')\" [style.color]=\"styles?.background?.accentColor\">Add Quantity\r\n </div>\r\n <div class=\"item-quantity\" (click)=\"moveToCart(item)\" [style.color]=\"styles?.background?.accentColor\">Move to Cart</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-relative itemPrice\" style=\"margin-left: auto; width: 30%;\">\r\n <div class=\"item-price\" *ngIf=\"item.quantity\"><span [innerHTML]='currency'></span>\r\n {{(item.discountedPrice) * item.quantity}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"deleteFromWhislist(item)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img loading=\"lazy\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"cart-text\">\r\n <div class=\"heading-medium d-flex justify-content-center\" [style.color]=\"styles.background.accentColor\">\r\n Your Whislist is empty\r\n </div>\r\n <div class=\"description d-flex mt-4\" [style.color]=\"styles.background.accentColor\">\r\n Looks like you have not added anything to your Whislist. Go ahead & explore top categories.\r\n </div>\r\n </div>\r\n </div>\r\n </section>\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 <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\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".cart-parent{display:flex;flex-wrap:wrap;margin-top:15px;gap:20px}.left-panel{width:100%}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;width:48%;display:flex;flex-wrap:wrap}.my-bag{font-size:16px;font-weight:600;color:#000}.my-bag span{color:#939393}.item-parent{margin:10px 0;width:100%}.lh-23{line-height:23px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.cart-item{position:absolute;right:50px;bottom:10px;cursor:pointer}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:100%;width:110px;padding:0}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;cursor:pointer;display:flex;width:90px;min-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}@media only screen and (max-width: 475px){.cart-parent{flex-direction:column}.item-parent{flex-direction:row!important;flex-wrap:nowrap!important}.cart-items,.left-panel{width:100%}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-desc{width:73%}.itemPrice{display:none!important}.action-btn{flex-wrap:wrap}.action-btn .item-quantity{width:100%;text-align:center;justify-content:space-around!important}}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i6.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: i7.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i8.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i9.UpperCasePipe, name: "uppercase" }, { kind: "directive", type:
|
199
199
|
//DIRECTIVE
|
200
200
|
BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i10.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
201
201
|
}
|
@@ -212,7 +212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
212
212
|
ContentFitDirective,
|
213
213
|
HoverDirective,
|
214
214
|
ToastModule
|
215
|
-
], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\"\r\n [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\"[style.color]=\"styles?.background?.accentColor\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"
|
215
|
+
], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" [simpoBackground]=\"styles?.background\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\"\r\n [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\"[style.color]=\"styles?.background?.accentColor\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"d-flex item-parent\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img loading=\"lazy\" class=\"product-img\" [src]=\"item.imgUrl ?? 'https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 h-100 item-desc\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name heading-large\" [style.color]=\"styles?.background?.accentColor\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\" [style.color]=\"styles?.background?.accentColor\">\r\n <span [innerHTML]='currency'></span> {{item.discountedPrice}}\r\n </div>\r\n <ng-container *ngIf=\"item.itemVariant\"> \r\n <div class=\"d-flex align-items-center\" *ngFor=\"let varient of getKeys(item.itemVariant.properties)\">\r\n <div class=\"fw-bold\"[style.color]=\"styles?.background?.accentColor\">{{ varient }} : </div>\r\n <!-- <div class=\"fw-normal\" style=\"margin-left: 5px; height: 13px; width: 13px; border-radius: 50%;\" *ngIf=\"varient.toLowerCase() == 'color'\" [style.backgroundColor]=\"item.itemVariant.properties[varient]\"></div> -->\r\n <div class=\"fw-normal\" style=\"margin-left: 5px;\"[style.color]=\"styles?.background?.accentColor\"> {{ item.itemVariant.properties[varient] | uppercase }}</div>\r\n </div>\r\n </ng-container>\r\n <div class=\"d-flex action-btn\" style=\"gap: 5px;\">\r\n <div class=\"item-quantity\" *ngIf=\"item.quantity\" [style.color]=\"styles?.background?.accentColor\">\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"item-quantity\" *ngIf=\"!item.quantity\" (click)=\"addToFav(item, 'ADD')\" [style.color]=\"styles?.background?.accentColor\">Add Quantity\r\n </div>\r\n <div class=\"item-quantity\" (click)=\"moveToCart(item)\" [style.color]=\"styles?.background?.accentColor\">Move to Cart</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-relative itemPrice\" style=\"margin-left: auto; width: 30%;\">\r\n <div class=\"item-price\" *ngIf=\"item.quantity\"><span [innerHTML]='currency'></span>\r\n {{(item.discountedPrice) * item.quantity}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"deleteFromWhislist(item)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img loading=\"lazy\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"cart-text\">\r\n <div class=\"heading-medium d-flex justify-content-center\" [style.color]=\"styles.background.accentColor\">\r\n Your Whislist is empty\r\n </div>\r\n <div class=\"description d-flex mt-4\" [style.color]=\"styles.background.accentColor\">\r\n Looks like you have not added anything to your Whislist. Go ahead & explore top categories.\r\n </div>\r\n </div>\r\n </div>\r\n </section>\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 <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\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".cart-parent{display:flex;flex-wrap:wrap;margin-top:15px;gap:20px}.left-panel{width:100%}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;width:48%;display:flex;flex-wrap:wrap}.my-bag{font-size:16px;font-weight:600;color:#000}.my-bag span{color:#939393}.item-parent{margin:10px 0;width:100%}.lh-23{line-height:23px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.cart-item{position:absolute;right:50px;bottom:10px;cursor:pointer}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:100%;width:110px;padding:0}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;cursor:pointer;display:flex;width:90px;min-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}@media only screen and (max-width: 475px){.cart-parent{flex-direction:column}.item-parent{flex-direction:row!important;flex-wrap:nowrap!important}.cart-items,.left-panel{width:100%}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-desc{width:73%}.itemPrice{display:none!important}.action-btn{flex-wrap:wrap}.action-btn .item-quantity{width:100%;text-align:center;justify-content:space-around!important}}\n"] }]
|
216
216
|
}], ctorParameters: () => [{ type: i1.CartService }, { type: i2.EventsService }, { type: i3.StorageServiceService }, { type: i4.RestService }, { type: i5.MessageService }], propDecorators: { responseData: [{
|
217
217
|
type: Input
|
218
218
|
}], data: [{
|
@@ -224,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
224
224
|
}], delete: [{
|
225
225
|
type: Input
|
226
226
|
}] } });
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpc2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNL0MsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFxQjlFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxX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LE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQzs4R0E1TFUsaUJBQWlCO2tHQUFqQixpQkFBaUIscUtBSmpCLENBQUMsY0FBYyxDQUFDLGlEQ3BDN0IsMjVLQXdGc0IsMjhHRC9EbEIsT0FBTywwSUFDUCxvQkFBb0Isb2dCQUNwQixZQUFZO2dCQUNaLFdBQVc7Z0JBQ1gsbUJBQW1CLDBHQUVuQixrQkFBa0IseUZBQ2xCLG1CQUFtQixrRkFFbkIsV0FBVzs7MkZBTUYsaUJBQWlCO2tCQW5CN0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsV0FBVztxQkFDWixhQUNVLENBQUMsY0FBYyxDQUFDO3VNQU1sQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQlVTSU5FU1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLmNvbnN0YW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tICcuLi8uLi9zdHlsZXMvY2FydC5tb2RhbCc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby13aGlzbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRJY29uLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAvL0RJUkVDVElWRVxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3doaXNsaXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vd2hpc2xpc3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFdoaXNsaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIFxyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IENhcnQ7XHJcbiAgQElucHV0KCkgZGF0YT86IGFueTtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3R5bGVzOiBhbnk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVzZXJEZXRhaWxzOiBhbnk7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUX0lURU1TOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIHdpc2hsaXN0SW5mbzogYW55ID0ge1xyXG4gICAgb3JkZXJlZEl0ZW1zOiBudWxsLFxyXG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgYmlsbGRldGFpbHM6IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRlbGl2ZXJ5Q2hhcmdlc1wiOiAwXHJcbiAgICB9LFxyXG4gICAgYWRkcmVzc0RldGFpbHM6IG51bGwsXHJcbiAgICBwbGF0Zm9ybTogXCJXRUJcIixcclxuICAgIGNhcnRUeXBlOiBcIldJU0hMSVNUXCIsXHJcbiAgICB1c2VyRGV0YWlsczoge1xyXG4gICAgICBcInVzZXJJZFwiOiBcIlwiLFxyXG4gICAgICBcInVzZXJOYW1lXCI6IFwiXCIsXHJcbiAgICAgIFwibW9iaWxlXCI6IFwiXCIsXHJcbiAgICAgIFwiZW1haWxcIjogXCJcIlxyXG4gICAgfSxcclxuICAgIHRvdGFsQW1vdW50OiAwXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5nZXRXaXNobGlzdEluZGV4REJEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICAgIHRoaXMud2lzaGxpc3RJbmZvLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAgICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh0aGlzLnVzZXJEZXRhaWxzLnVzZXJJZCwgXCJXSVNITElTVFwiKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGNvbnN0IHRlbXBVc2VyV2lzaGxpc3QgPSByZXNwb25zZT8uZGF0YT8uWzBdPy5vcmRlcmVkSXRlbXMgPz8gW11cclxuICAgICAgICB0aGlzLndpc2hsaXN0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RUb1dpc2hsaXN0KHRlbXBVc2VyV2lzaGxpc3QpLm9uY29tcGxldGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRlbXBVc2VyV2lzaGxpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKCh3aXNodGxpc3RSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgICAgd2lzaHRsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHdpc2hsaXN0RGF0YTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lzaGxpc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy53aXNobGlzdEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgd2lzaGxpc3RSZXNwb25zZS5maW5hbGx5KCgpPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ3aXNodGxpc3QgRGF0YVwiLCB3aXNobGlzdERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB3aXNobGlzdERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlLm9uc3VjY2VzcyA9ICh1c2VyV2lzaGxpc3RSZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB1c2VyV2lzaGxpc3RSZXNwb25zZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgICAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnd2lzaGxpc3RJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndpc2hsaXN0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBcclxuICAgICAgdGhpcy5nZXRXaXNobGlzdEluZGV4REJEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlVG9DYXJ0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgaWYgKCFwcm9kdWN0LnF1YW50aXR5KVxyXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ID0gMTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgaWYgKCEhdXNlckRldGFpbHMpIHtcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJpdGVtSWRcIjogcHJvZHVjdC5pdGVtSWQsXHJcbiAgICAgICAgICAgIFwiYnVzaW5lc3NJZFwiOiBwcm9kdWN0LmJ1c2luZXNzSWQsXHJcbiAgICAgICAgICAgIFwiaXRlbU5hbWVcIjogcHJvZHVjdC5pdGVtTmFtZSxcclxuICAgICAgICAgICAgXCJidXNpbmVzc05hbWVcIjogcHJvZHVjdC5idXNpbmVzc05hbWUsXHJcbiAgICAgICAgICAgIFwiaW1nVXJsXCI6IHByb2R1Y3QuaW1nVXJsLFxyXG4gICAgICAgICAgICBcInRheENhdGVnb3J5XCI6IFwiTk9OX01SUFwiLFxyXG4gICAgICAgICAgICBcInF1YW50aXR5XCI6IHByb2R1Y3QucXVhbnRpdHksXHJcbiAgICAgICAgICAgIFwicHJpY2VcIjogcHJvZHVjdC5wcmljZSxcclxuICAgICAgICAgICAgXCJpdGVtVGF4XCI6IHByb2R1Y3QuaXRlbVRheCxcclxuICAgICAgICAgICAgXCJkaXNjb3VudGVkUHJpY2VcIjogcHJvZHVjdC5kaXNjb3VudGVkUHJpY2VcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5tb3ZlSXRlbVRvQ2FydCh1c2VyRGV0YWlscy51c2VySWQsIHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge30pXHJcbiAgICB9XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0KTtcclxuICAgIHRyYW5zYWN0aW9uLm9uc3VjY2VzcyA9ICh3aXNobGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0Lml0ZW1JZCkub25zdWNjZXNzID0gKHdpc2xpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2Vzc1wiKTtcclxuICAgICAgICAvLyB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdCkub25zdWNjZXNzID0gKGNhcnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TLmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IGl0ZW0udmFyaWVudElkICE9IHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ01vdmUgdG8gY2FydCcsIGRldGFpbDogJ0l0ZW0gc3VjY2Vzc2Z1bGx5IG1vdmVkIHRvIGNhcnQnIH0pO1xyXG4gICAgfVxyXG4gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9ICh3aXNobGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdGYWlsdXJlJywgZGV0YWlsOiAnRmFpbGVkIHRvIG1vdmUgaXRlbSB0byBjYXJ0JyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0V2lzaGxpc3RJbmRleERCRGF0YSgpIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigocmVzcG9uc2UpPT4ge1xyXG4gICAgICByZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlcldpc2hsaXN0UmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdXNlcldpc2hsaXN0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZGVsZXRlRnJvbVdoaXNsaXN0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TLmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IGl0ZW0udmFyaWVudElkICE9IHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5yZW1vdmVJdGVtRnJvbVdpc2hsaXN0UGFnZShwcm9kdWN0LCB0aGlzLndpc2hsaXN0SW5mbykuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICB9XHJcbiAgfSBcclxuICBhZGRUb0ZhdihpdGVtOiBPcmRlcmVkSXRlbXMsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKVxyXG4gICAgICBpdGVtLnF1YW50aXR5ICs9IDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgLT0gMTtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXM/LmZvckVhY2goKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKVxyXG4gICAgICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbUZyb21XaXNobGlzdFBhZ2UoaXRlbSwgdGhpcy53aXNobGlzdEluZm8pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgaWYgKG9iamVjdClcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbn1cclxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIj48L3AtdG9hc3Q+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcnQtcGFyZW50IGNvbnRhaW5lclwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIE15IFdpc2hsaXN0Jm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtaXRlbXNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGl0ZW0tcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIGNsYXNzPVwicHJvZHVjdC1pbWdcIiBbc3JjXT1cIml0ZW0uaW1nVXJsID8/ICdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgaC0xMDAgaXRlbS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgaGVhZGluZy1sYXJnZVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7aXRlbS5kaXNjb3VudGVkUHJpY2V9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLml0ZW1WYXJpYW50XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgdmFyaWVudCBvZiBnZXRLZXlzKGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIltzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3sgdmFyaWVudCB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7IGhlaWdodDogMTNweDsgd2lkdGg6IDEzcHg7IGJvcmRlci1yYWRpdXM6IDUwJTtcIiAqbmdJZj1cInZhcmllbnQudG9Mb3dlckNhc2UoKSA9PSAnY29sb3InXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF1cIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCJbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPiB7eyBpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF0gfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWN0aW9uLWJ0blwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1xdWFudGl0eVwiICpuZ0lmPVwiaXRlbS5xdWFudGl0eVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvRmF2KGl0ZW0sICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1xdWFudGl0eVwiICpuZ0lmPVwiIWl0ZW0ucXVhbnRpdHlcIiAoY2xpY2spPVwiYWRkVG9GYXYoaXRlbSwgJ0FERCcpXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5BZGQgUXVhbnRpdHlcclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIiAoY2xpY2spPVwibW92ZVRvQ2FydChpdGVtKVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+TW92ZSB0byBDYXJ0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaXRlbVByaWNlXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgd2lkdGg6IDMwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcHJpY2VcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyhpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJkZWxldGVGcm9tV2hpc2xpc3QoaXRlbSlcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZW1wdHktY2FydFwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMTA3MjEzYzE3MTY1NDMzMzQwNDBlbXB0eS1jYXJ0LnBuZ1wiXHJcbiAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXMuYmFja2dyb3VuZC5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICBZb3VyIFdoaXNsaXN0IGlzIGVtcHR5XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXggbXQtNFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXMuYmFja2dyb3VuZC5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICBMb29rcyBsaWtlIHlvdSBoYXZlIG5vdCBhZGRlZCBhbnl0aGluZyB0byB5b3VyIFdoaXNsaXN0LiBHbyBhaGVhZCAmIGV4cGxvcmUgdG9wIGNhdGVnb3JpZXMuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+Il19
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpc2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNL0MsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFxQjlFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxX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LE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQzs4R0E1TFUsaUJBQWlCO2tHQUFqQixpQkFBaUIscUtBSmpCLENBQUMsY0FBYyxDQUFDLGlEQ3BDN0IsODVLQXdGc0IsbzlHRC9EbEIsT0FBTywwSUFDUCxvQkFBb0Isb2dCQUNwQixZQUFZO2dCQUNaLFdBQVc7Z0JBQ1gsbUJBQW1CLDBHQUVuQixrQkFBa0IseUZBQ2xCLG1CQUFtQixrRkFFbkIsV0FBVzs7MkZBTUYsaUJBQWlCO2tCQW5CN0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsV0FBVztxQkFDWixhQUNVLENBQUMsY0FBYyxDQUFDO3VNQU1sQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQlVTSU5FU1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLmNvbnN0YW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tICcuLi8uLi9zdHlsZXMvY2FydC5tb2RhbCc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby13aGlzbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRJY29uLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAvL0RJUkVDVElWRVxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3doaXNsaXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vd2hpc2xpc3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFdoaXNsaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIFxyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IENhcnQ7XHJcbiAgQElucHV0KCkgZGF0YT86IGFueTtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3R5bGVzOiBhbnk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVzZXJEZXRhaWxzOiBhbnk7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUX0lURU1TOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIHdpc2hsaXN0SW5mbzogYW55ID0ge1xyXG4gICAgb3JkZXJlZEl0ZW1zOiBudWxsLFxyXG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgYmlsbGRldGFpbHM6IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRlbGl2ZXJ5Q2hhcmdlc1wiOiAwXHJcbiAgICB9LFxyXG4gICAgYWRkcmVzc0RldGFpbHM6IG51bGwsXHJcbiAgICBwbGF0Zm9ybTogXCJXRUJcIixcclxuICAgIGNhcnRUeXBlOiBcIldJU0hMSVNUXCIsXHJcbiAgICB1c2VyRGV0YWlsczoge1xyXG4gICAgICBcInVzZXJJZFwiOiBcIlwiLFxyXG4gICAgICBcInVzZXJOYW1lXCI6IFwiXCIsXHJcbiAgICAgIFwibW9iaWxlXCI6IFwiXCIsXHJcbiAgICAgIFwiZW1haWxcIjogXCJcIlxyXG4gICAgfSxcclxuICAgIHRvdGFsQW1vdW50OiAwXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5nZXRXaXNobGlzdEluZGV4REJEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICAgIHRoaXMud2lzaGxpc3RJbmZvLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAgICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh0aGlzLnVzZXJEZXRhaWxzLnVzZXJJZCwgXCJXSVNITElTVFwiKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGNvbnN0IHRlbXBVc2VyV2lzaGxpc3QgPSByZXNwb25zZT8uZGF0YT8uWzBdPy5vcmRlcmVkSXRlbXMgPz8gW11cclxuICAgICAgICB0aGlzLndpc2hsaXN0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RUb1dpc2hsaXN0KHRlbXBVc2VyV2lzaGxpc3QpLm9uY29tcGxldGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRlbXBVc2VyV2lzaGxpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKCh3aXNodGxpc3RSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgICAgd2lzaHRsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHdpc2hsaXN0RGF0YTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lzaGxpc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy53aXNobGlzdEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgd2lzaGxpc3RSZXNwb25zZS5maW5hbGx5KCgpPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ3aXNodGxpc3QgRGF0YVwiLCB3aXNobGlzdERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB3aXNobGlzdERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2VEYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlLm9uc3VjY2VzcyA9ICh1c2VyV2lzaGxpc3RSZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB1c2VyV2lzaGxpc3RSZXNwb25zZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgICAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnd2lzaGxpc3RJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndpc2hsaXN0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBcclxuICAgICAgdGhpcy5nZXRXaXNobGlzdEluZGV4REJEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlVG9DYXJ0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgaWYgKCFwcm9kdWN0LnF1YW50aXR5KVxyXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ID0gMTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgaWYgKCEhdXNlckRldGFpbHMpIHtcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJpdGVtSWRcIjogcHJvZHVjdC5pdGVtSWQsXHJcbiAgICAgICAgICAgIFwiYnVzaW5lc3NJZFwiOiBwcm9kdWN0LmJ1c2luZXNzSWQsXHJcbiAgICAgICAgICAgIFwiaXRlbU5hbWVcIjogcHJvZHVjdC5pdGVtTmFtZSxcclxuICAgICAgICAgICAgXCJidXNpbmVzc05hbWVcIjogcHJvZHVjdC5idXNpbmVzc05hbWUsXHJcbiAgICAgICAgICAgIFwiaW1nVXJsXCI6IHByb2R1Y3QuaW1nVXJsLFxyXG4gICAgICAgICAgICBcInRheENhdGVnb3J5XCI6IFwiTk9OX01SUFwiLFxyXG4gICAgICAgICAgICBcInF1YW50aXR5XCI6IHByb2R1Y3QucXVhbnRpdHksXHJcbiAgICAgICAgICAgIFwicHJpY2VcIjogcHJvZHVjdC5wcmljZSxcclxuICAgICAgICAgICAgXCJpdGVtVGF4XCI6IHByb2R1Y3QuaXRlbVRheCxcclxuICAgICAgICAgICAgXCJkaXNjb3VudGVkUHJpY2VcIjogcHJvZHVjdC5kaXNjb3VudGVkUHJpY2VcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5tb3ZlSXRlbVRvQ2FydCh1c2VyRGV0YWlscy51c2VySWQsIHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge30pXHJcbiAgICB9XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0KTtcclxuICAgIHRyYW5zYWN0aW9uLm9uc3VjY2VzcyA9ICh3aXNobGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0Lml0ZW1JZCkub25zdWNjZXNzID0gKHdpc2xpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2Vzc1wiKTtcclxuICAgICAgICAvLyB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdCkub25zdWNjZXNzID0gKGNhcnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TLmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IGl0ZW0udmFyaWVudElkICE9IHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ01vdmUgdG8gY2FydCcsIGRldGFpbDogJ0l0ZW0gc3VjY2Vzc2Z1bGx5IG1vdmVkIHRvIGNhcnQnIH0pO1xyXG4gICAgfVxyXG4gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9ICh3aXNobGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdGYWlsdXJlJywgZGV0YWlsOiAnRmFpbGVkIHRvIG1vdmUgaXRlbSB0byBjYXJ0JyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0V2lzaGxpc3RJbmRleERCRGF0YSgpIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigocmVzcG9uc2UpPT4ge1xyXG4gICAgICByZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlcldpc2hsaXN0UmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdXNlcldpc2hsaXN0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZGVsZXRlRnJvbVdoaXNsaXN0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TLmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IGl0ZW0udmFyaWVudElkICE9IHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5yZW1vdmVJdGVtRnJvbVdpc2hsaXN0UGFnZShwcm9kdWN0LCB0aGlzLndpc2hsaXN0SW5mbykuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICB9XHJcbiAgfSBcclxuICBhZGRUb0ZhdihpdGVtOiBPcmRlcmVkSXRlbXMsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKVxyXG4gICAgICBpdGVtLnF1YW50aXR5ICs9IDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgLT0gMTtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXM/LmZvckVhY2goKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKVxyXG4gICAgICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbUZyb21XaXNobGlzdFBhZ2UoaXRlbSwgdGhpcy53aXNobGlzdEluZm8pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgaWYgKG9iamVjdClcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbn1cclxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIj48L3AtdG9hc3Q+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcnQtcGFyZW50IGNvbnRhaW5lclwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgIE15IFdpc2hsaXN0Jm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtaXRlbXNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGl0ZW0tcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIGNsYXNzPVwicHJvZHVjdC1pbWdcIiBbc3JjXT1cIml0ZW0uaW1nVXJsID8/ICdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgaC0xMDAgaXRlbS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgaGVhZGluZy1sYXJnZVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7aXRlbS5kaXNjb3VudGVkUHJpY2V9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLml0ZW1WYXJpYW50XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgdmFyaWVudCBvZiBnZXRLZXlzKGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIltzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3sgdmFyaWVudCB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7IGhlaWdodDogMTNweDsgd2lkdGg6IDEzcHg7IGJvcmRlci1yYWRpdXM6IDUwJTtcIiAqbmdJZj1cInZhcmllbnQudG9Mb3dlckNhc2UoKSA9PSAnY29sb3InXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF1cIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCJbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPiB7eyBpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF0gfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWN0aW9uLWJ0blwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1xdWFudGl0eVwiICpuZ0lmPVwiaXRlbS5xdWFudGl0eVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvRmF2KGl0ZW0sICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1xdWFudGl0eVwiICpuZ0lmPVwiIWl0ZW0ucXVhbnRpdHlcIiAoY2xpY2spPVwiYWRkVG9GYXYoaXRlbSwgJ0FERCcpXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5BZGQgUXVhbnRpdHlcclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIiAoY2xpY2spPVwibW92ZVRvQ2FydChpdGVtKVwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+TW92ZSB0byBDYXJ0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaXRlbVByaWNlXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgd2lkdGg6IDMwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcHJpY2VcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyhpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJkZWxldGVGcm9tV2hpc2xpc3QoaXRlbSlcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZW1wdHktY2FydFwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMTA3MjEzYzE3MTY1NDMzMzQwNDBlbXB0eS1jYXJ0LnBuZ1wiXHJcbiAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXMuYmFja2dyb3VuZC5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICBZb3VyIFdoaXNsaXN0IGlzIGVtcHR5XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXggbXQtNFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXMuYmFja2dyb3VuZC5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICBMb29rcyBsaWtlIHlvdSBoYXZlIG5vdCBhZGRlZCBhbnl0aGluZyB0byB5b3VyIFdoaXNsaXN0LiBHbyBhaGVhZCAmIGV4cGxvcmUgdG9wIGNhdGVnb3JpZXMuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+Il19
|