simpo-component-library 3.6.140 → 3.6.141
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/components/delete-hover-element/delete-hover-element.component.mjs +4 -4
- package/esm2022/lib/components/document/document.component.mjs +4 -4
- package/esm2022/lib/components/hover-elements/hover-elements.component.mjs +4 -4
- package/esm2022/lib/components/image-loading/image-loading.component.mjs +5 -5
- package/esm2022/lib/components/index.mjs +5 -5
- package/esm2022/lib/components/input-fields/input-fields.component.mjs +4 -4
- package/esm2022/lib/components/payment-details/payment-details.component.mjs +4 -4
- package/esm2022/lib/components/trasport-availability/trasport-availability.component.mjs +4 -4
- package/esm2022/lib/directive/alignment.directive.mjs +4 -4
- package/esm2022/lib/directive/animation-directive.mjs +4 -4
- package/esm2022/lib/directive/background-directive.mjs +4 -4
- package/esm2022/lib/directive/banner-content-fit-directive.mjs +4 -4
- package/esm2022/lib/directive/blur-content.directive.mjs +4 -4
- package/esm2022/lib/directive/border-directive.mjs +4 -4
- package/esm2022/lib/directive/borderlessImage.directive.mjs +4 -4
- package/esm2022/lib/directive/button-directive.directive.mjs +4 -4
- package/esm2022/lib/directive/button-editor.directive.mjs +4 -4
- package/esm2022/lib/directive/color.directive.mjs +4 -4
- package/esm2022/lib/directive/column-directive.directive.mjs +4 -4
- package/esm2022/lib/directive/container-alignment.directive.mjs +4 -4
- package/esm2022/lib/directive/container-fir.directive.mjs +4 -4
- package/esm2022/lib/directive/content-alignment-directive.mjs +4 -4
- package/esm2022/lib/directive/content-fit-directive.mjs +4 -4
- package/esm2022/lib/directive/content-title-spacing.directive.mjs +4 -4
- package/esm2022/lib/directive/contenteditable.directive.mjs +4 -4
- package/esm2022/lib/directive/corner-directive.mjs +4 -4
- package/esm2022/lib/directive/footer-layout-directive.mjs +4 -4
- package/esm2022/lib/directive/height.directive.mjs +4 -4
- package/esm2022/lib/directive/hover-animation.directive.mjs +4 -4
- package/esm2022/lib/directive/hover-element-directive.mjs +4 -4
- package/esm2022/lib/directive/hoverborder.directive.mjs +4 -4
- package/esm2022/lib/directive/image-container.directive.mjs +4 -4
- package/esm2022/lib/directive/image-directive.directive.mjs +4 -4
- package/esm2022/lib/directive/image-editor.directive.mjs +4 -4
- package/esm2022/lib/directive/image-position.directive.mjs +4 -4
- package/esm2022/lib/directive/overlay-directive.mjs +4 -4
- package/esm2022/lib/directive/position-layout-directive.directive.mjs +4 -4
- package/esm2022/lib/directive/removeCarousel-directive.mjs +4 -4
- package/esm2022/lib/directive/set-dynamic-background.directive.mjs +4 -4
- package/esm2022/lib/directive/spacing-around.directive.mjs +4 -4
- package/esm2022/lib/directive/spacing-horizontal.directive.mjs +8 -4
- package/esm2022/lib/directive/spacing.directive.mjs +4 -4
- package/esm2022/lib/directive/sticky-directive.mjs +4 -4
- package/esm2022/lib/directive/text-background-directive.directive.mjs +4 -4
- package/esm2022/lib/directive/text-size.directive.mjs +4 -4
- package/esm2022/lib/directive/translate-onhover.directive.mjs +4 -4
- package/esm2022/lib/directive/wrap-containers.directive.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/address/address.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +15 -8
- package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +10 -8
- package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +5 -5
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +6 -6
- package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +6 -5
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +4 -4
- package/esm2022/lib/elements/add-section/add-section.component.mjs +4 -4
- package/esm2022/lib/elements/address-list/address-list.component.mjs +4 -4
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +4 -4
- package/esm2022/lib/elements/button/button.component.mjs +4 -4
- package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +4 -4
- package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +4 -4
- package/esm2022/lib/elements/editor-service.service.mjs +4 -4
- package/esm2022/lib/elements/heading-element/heading-element.component.mjs +4 -4
- package/esm2022/lib/elements/image-editor/image-editor.component.mjs +5 -4
- package/esm2022/lib/elements/index.mjs +5 -5
- package/esm2022/lib/elements/link-editor/link-editor.component.mjs +4 -4
- package/esm2022/lib/elements/media-selector/media-selector.component.mjs +4 -4
- package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +4 -4
- package/esm2022/lib/elements/portfolio/portfolio.component.mjs +4 -4
- package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +4 -4
- package/esm2022/lib/elements/property/property.component.mjs +4 -4
- package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +4 -4
- package/esm2022/lib/elements/socia-icons/socia-icons.component.mjs +4 -4
- package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +4 -4
- package/esm2022/lib/elements/text/text.component.mjs +4 -4
- package/esm2022/lib/elements/text-editor/text-editor.component.mjs +4 -4
- package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +4 -4
- package/esm2022/lib/pipes/amount.pipe.mjs +4 -4
- package/esm2022/lib/pipes/gender.pipe.mjs +4 -4
- package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +4 -4
- package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +4 -4
- package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +4 -4
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +4 -4
- package/esm2022/lib/sections/banner-section/banner-section.component.mjs +4 -4
- package/esm2022/lib/sections/blog-list/blog-list.component.mjs +4 -4
- package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +4 -4
- package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +4 -4
- package/esm2022/lib/sections/contact-us/contact-us.component.mjs +4 -4
- package/esm2022/lib/sections/faq-section/faq-section.component.mjs +4 -4
- package/esm2022/lib/sections/features-section/features-section.component.mjs +4 -4
- package/esm2022/lib/sections/footer/footer.component.mjs +4 -4
- package/esm2022/lib/sections/footer-section/footer-section.component.mjs +4 -4
- package/esm2022/lib/sections/header-section/header-section.component.mjs +4 -4
- package/esm2022/lib/sections/header-text/header-text.component.mjs +4 -4
- package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +4 -4
- package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +5 -5
- package/esm2022/lib/sections/image-section/image-section.component.mjs +4 -4
- package/esm2022/lib/sections/location-section/location-section.component.mjs +4 -4
- package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +4 -4
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +4 -4
- package/esm2022/lib/sections/moving-text/moving-text.component.mjs +4 -4
- package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +4 -4
- package/esm2022/lib/sections/new-services/new-services.component.mjs +4 -4
- package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +4 -4
- package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +4 -4
- package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +4 -4
- package/esm2022/lib/sections/process-modern/process-modern.component.mjs +4 -4
- package/esm2022/lib/sections/process-section/process-section.component.mjs +4 -4
- package/esm2022/lib/sections/property-component/property-component.component.mjs +4 -4
- package/esm2022/lib/sections/property-list/property-list.component.mjs +4 -4
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +4 -4
- package/esm2022/lib/sections/registration-form/registration-form.component.mjs +5 -5
- package/esm2022/lib/sections/service-section/service-section.component.mjs +4 -4
- package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +4 -4
- package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +4 -4
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +4 -4
- package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +4 -4
- package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +4 -4
- package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +4 -4
- package/esm2022/lib/sections/text-section/text-section.component.mjs +4 -4
- package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +4 -4
- package/esm2022/lib/sections/video-section/video-section.component.mjs +4 -4
- package/esm2022/lib/sections/view-blog/view-blog.component.mjs +4 -4
- package/esm2022/lib/services/cart.service.mjs +4 -4
- package/esm2022/lib/services/endUser.service.mjs +4 -4
- package/esm2022/lib/services/events.service.mjs +4 -4
- package/esm2022/lib/services/image-upload-service.service.mjs +4 -4
- package/esm2022/lib/services/rest.service.mjs +26 -4
- package/esm2022/lib/services/sanitizeHtml.mjs +4 -4
- package/esm2022/lib/services/storage.service.mjs +4 -4
- package/fesm2022/simpo-component-library.mjs +484 -449
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
- package/lib/ecommerce/sections/cart/cart.component.d.ts +2 -0
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
- package/lib/services/rest.service.d.ts +7 -0
- package/package.json +1 -1
- package/simpo-component-library-3.6.141.tgz +0 -0
- package/src/lib/styles/global-styles.css +11 -1
- package/simpo-component-library-3.6.140.tgz +0 -0
@@ -279,12 +279,12 @@ export class AddressComponent extends BaseSection {
|
|
279
279
|
get isMobile() {
|
280
280
|
return window.innerWidth <= 475;
|
281
281
|
}
|
282
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
283
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.
|
282
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddressComponent, deps: [{ token: i0.NgZone }, { token: i1.RestService }, { token: i2.MatDialog }, { token: i3.MatBottomSheet }, { token: i4.Router }, { token: i5.StorageServiceService }, { token: i6.EventsService }, { token: i7.MatSnackBar }, { token: MAT_DIALOG_DATA, optional: true }, { token: i2.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
283
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddressComponent, isStandalone: true, selector: "simpo-address", inputs: { responseData: "responseData", data: "data", index: "index", customClass: "customClass", edit: "edit", delete: "delete", isCart: "isCart" }, outputs: { selectedAddress: "selectedAddress" }, providers: [
|
284
284
|
MatSnackBar
|
285
285
|
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <section class=\"address-sec\" simpoHover (hovering)=\"showEditTabs($event)\" [attr.style]=\"customClass\">\r\n <div class=\"header\">\r\n <div class=\"new-address-header\">\r\n <mat-icon (click)=\"goToProfile()\" *ngIf=\"!isCart\">keyboard_arrow_left</mat-icon>\r\n <h3>{{isCart ? 'Deliver To' : 'New Address'}}</h3>\r\n </div>\r\n <span class=\"add-address\" [style.color]=\"styles?.background?.accentColor\" *ngIf=\"!addNewAddress\" (click)=\"addNewAddress = true\">+ add address</span>\r\n </div>\r\n <ng-container *ngIf=\"addNewAddress\">\r\n <div class=\"forms d-flex flex-wrap floating-input\">\r\n\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Name</div>\r\n <input type=\"text\" placeholder=\"Enter name\" [(ngModel)]=\"address.receiverName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Mobile</div>\r\n <input type=\"text\" placeholder=\"Enter mobile\" [(ngModel)]=\"address.receiverPhone\" (keydown)=\"validateMobile($event)\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Email</div>\r\n <input type=\"text\" placeholder=\"Enter email\" [(ngModel)]=\"address.receiverEmail\">\r\n </div>\r\n <div class=\"form-control-full-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Address</div>\r\n <input type=\"text\" placeholder=\"Enter address\" matGoogleMapsAutocomplete\r\n (onAutocompleteSelected)=\"onAutocompleteSelected($event)\"\r\n (onLocationSelected)=\"onLocationSelected($event)\" [(ngModel)]=\"address.addressLine1\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Locality</div>\r\n <input type=\"text\" placeholder=\"Enter locality\" [(ngModel)]=\"address.localityName\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label\" [style.color]=\"data?.styles?.background?.accentColor\">Landmark</div>\r\n <input type=\"text\" placeholder=\"Enter landmark\" [(ngModel)]=\"address.landmark\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Pincode</div>\r\n <input type=\"text\" placeholder=\"Enter pincode\" [(ngModel)]=\"address.zipCode\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">City</div>\r\n <input type=\"text\" placeholder=\"Enter city\" [(ngModel)]=\"address.cityName\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">State</div>\r\n <input type=\"text\" placeholder=\"Enter state\" [(ngModel)]=\"address.stateName\">\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label required\" [style.color]=\"data?.styles?.background?.accentColor\">Address Type</div>\r\n <div class=\"d-flex\">\r\n <ng-container *ngFor=\"let address of addessType\">\r\n <span class=\"address-type\" (click)=\"checkAddressType(address)\" [style.backgroundColor]=\"address.status ? data?.styles?.background?.accentColor : 'rgba(211, 211, 211, 0.362)'\" [ngClass]=\"{'active-address': address.status}\">{{address.key}}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"address-list\" *ngIf=\"!addNewAddress\">\r\n <ng-container *ngFor=\"let address of addressList; let idx = index\">\r\n <div class=\"address\" (click)=\"addressSelected(idx)\" [style.borderColor]=\"selectedAddressIdx == idx ? data?.styles?.background?.accentColor : ''\">\r\n <div class=\"address-left\">\r\n <div class=\"top\">\r\n <span class=\"fw-bold mr-2\">{{address?.receiverName}}</span>\r\n <span class=\"address-type\">{{address?.addressType}}</span>\r\n </div>\r\n <div class=\"address-det\">{{address.addressLine1}}</div>\r\n <div class=\"phone\">\r\n <span>Phone:</span>\r\n <span class=\"address-phone\">{{address.receiverPhone}}</span>\r\n </div>\r\n </div>\r\n <div class=\"address-right\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"action-btn\" *ngIf=\"addNewAddress\">\r\n <div class=\"error-message\">\r\n <span *ngIf=\"address.receiverPhone?.length != 10 && address.receiverPhone?.length\">*Mobile number is invalid</span>\r\n <span *ngIf=\"!isEmailValid\">*Email is invalid</span>\r\n </div>\r\n <button [style.backgroundColor]=\"data?.styles?.background?.accentColor\" [disabled]=\"\r\n !address.receiverName ||\r\n !address.receiverPhone ||\r\n address.receiverPhone?.length != 10 ||\r\n !isEmailValid ||\r\n !address.addressLine1 ||\r\n !address.localityName ||\r\n !address.zipCode ||\r\n !address.cityName ||\r\n !address.stateName ||\r\n !address.addressType || isLoading\r\n \" (click)=\"updateAddress()\">{{isLoading ? 'Loading' : 'Update'}}</button>\r\n </div>\r\n</section>\r\n\r\n\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<div class=\"form-container\">\r\n <div class=\"header\">\r\n <h1>{{editIndex === -1 ? 'Add' : 'Update'}} Address</h1>\r\n <button class=\"close-btn\" (click)=\"close()\">\u00D7</button>\r\n </div>\r\n\r\n <div class=\"form-content\">\r\n <div class=\"section\">\r\n <h2 class=\"section-title\">Contact Details</h2>\r\n <div class=\"form-row\">\r\n <div class=\"form-group\">\r\n <label for=\"firstName\">Name</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"address.receiverName\" placeholder=\"Enter Full Name\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"lastName\">Mobile</label>\r\n <input type=\"number\" class=\"form-control\" placeholder=\"Enter Mobile number\"\r\n [(ngModel)]=\"address.receiverPhone\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label for=\"mobile\">Email</label>\r\n <input type=\"email\" class=\"form-control\" [(ngModel)]=\"address.receiverEmail\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section\">\r\n <h2 class=\"section-title\">Shipping Address</h2>\r\n <div class=\"form-group\">\r\n <label for=\"address\">Address</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"address.addressLine1\">\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label for=\"landmark\">Locality</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"address.localityName\">\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <div class=\"form-group\">\r\n <label for=\"city\">Landmark</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"address.landmark\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"pincode\">Pincode</label>\r\n <input type=\"text\" id=\"pincode\" class=\"form-control\" [(ngModel)]=\"address.zipCode\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <div class=\"form-group\">\r\n <label for=\"state\">City</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"address.cityName\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"country\">State</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"address.stateName\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"section\">\r\n <h2 class=\"section-title\">Address Type</h2>\r\n <select class=\"form-control\" [(ngModel)]=\"address.addressType\" placeholder=\"Select address type\">\r\n <option value=null disabled selected>Select address type</option>\r\n <option value=\"HOME\">Home</option>\r\n <option value=\"WORK\">Work</option>\r\n <option value=\"OTHER\">Other</option>\r\n </select>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"footer\">\r\n <button class=\"save-btn\" (click)=\"updateAddress()\" *ngIf=\"!isLoading\">{{editIndex === -1 ? 'Save' :\r\n 'Update'}}</button>\r\n <button class=\"save-btn loading-btn\" *ngIf=\"isLoading\"><mat-spinner></mat-spinner> Loading</button>\r\n </div>\r\n</div>", styles: ["*{font-family:var(--primary-font-family)}.form-container{max-width:500px;margin:0 auto;background:#fff;border-radius:12px;width:100%}.header{display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:60px;background-color:#f6f3f9}.header h1{font-size:18px;font-weight:600;color:#000}.close-btn{background:none;border:none;cursor:pointer;padding:4px;color:#666;font-size:24px;line-height:1;width:max-content!important}.form-content{padding:20px;height:calc(100vh - 120px);overflow:scroll}.section{margin-bottom:32px}.section-title{font-size:16px;font-weight:600;color:#000;margin-bottom:16px;margin-top:16px}.form-row{display:flex;gap:12px;margin-bottom:16px}.form-group{flex:1;margin-bottom:16px}.form-group.full-width{width:100%}.form-group label{display:block;font-size:14px;color:#6b7280;margin-bottom:6px;font-weight:500}.form-control{width:100%;padding:8px 16px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;background:#f9fafb;transition:all .2s ease}.form-control:focus{outline:none;border-color:#8b5cf6;background:#fff;box-shadow:0 0 0 3px #8b5cf61a}.form-control.error{border-color:#ef4444;background:#fef2f2}.phone-group{display:flex;align-items:center;gap:8px}.country-code{padding:12px 8px 12px 16px;background:#f3f4f6;border:1px solid #d1d5db;border-radius:8px 0 0 8px;font-size:14px;color:#6b7280;min-width:60px;text-align:center;border-right:none}.phone-input{border-radius:0 8px 8px 0;border-left:none}select.form-control{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:40px;appearance:none;cursor:pointer}.save-btn{font-size:1rem!important;font-weight:700!important;padding:6px;background:#fff;border:1px solid rgb(229,221,255);border-radius:8px;color:#000;cursor:pointer;transition:all .2s;box-shadow:#0000000a 0 4px 8px;width:90%!important}.save-btn:hover{background:linear-gradient(135deg,#9333ea,#7c3aed);transform:translateY(-1px);box-shadow:0 8px 25px #8b5cf64d}.save-btn:active{transform:translateY(0)}@media (max-width: 480px){.form-row,.phone-group{flex-direction:column}.country-code{border-radius:8px;border-right:1px solid #d1d5db}.phone-input{border-radius:8px;border-left:1px solid #d1d5db}}.footer{display:flex;align-items:center;justify-content:center;height:60px;position:absolute;width:100%;bottom:0;box-shadow:#0000000a 0 -1px 8px}.loading-btn{display:flex;gap:10px;justify-content:center}.loading-btn mat-spinner{height:20px!important;width:20px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.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: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatBottomSheetModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
|
286
286
|
}
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddressComponent, decorators: [{
|
288
288
|
type: Component,
|
289
289
|
args: [{ selector: 'simpo-address', standalone: true, imports: [
|
290
290
|
MatIcon,
|
@@ -323,4 +323,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
323
323
|
}], isCart: [{
|
324
324
|
type: Input
|
325
325
|
}] } });
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtCLEtBQUssRUFBNEIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBS3JHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFNUUsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDdEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFB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QkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFxQ0UsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE5nWm9uZSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3B0aW9uYWwsIEluamVjdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0aGVudGljYXRlLXVzZXIvYXV0aGVudGljYXRlLXVzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQUREUkVTU19UWVBFLCBBZGRyZXNzRGV0YWlscywgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS0VZQk9BUkRfS0VZUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1leHRlbnNpb25zL2dvb2dsZS1tYXBzLWF1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGVsZXRlLWhvdmVyLWVsZW1lbnQvZGVsZXRlLWhvdmVyLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSG92ZXJFbGVtZW50c0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaG92ZXItZWxlbWVudHMvaG92ZXItZWxlbWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5cclxuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWFkZHJlc3MnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0SWNvbixcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCxcclxuICAgIEhvdmVyRWxlbWVudHNDb21wb25lbnQsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE1hdFNuYWNrQmFyXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FkZHJlc3MuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgcHVibGljIGFkZHJlc3NMaXN0OiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZEFkZHJlc3NJZHg6IG51bWJlciA9IDA7XHJcbiAgc3R5bGVzOiBhbnk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkQWRkcmVzczogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXRCb3R0b21zaGVldDogTWF0Qm90dG9tU2hlZXQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhciA6IE1hdFNuYWNrQmFyLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBtYXREYXRhOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgbWF0RGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWRkcmVzc0NvbXBvbmVudD4sXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZHJlc3M6IEFkZHJlc3NEZXRhaWxzID0ge1xyXG4gICAgXCJyZWNlaXZlck5hbWVcIjogXCJcIixcclxuICAgIFwicmVjZWl2ZXJQaG9uZVwiOiBcIlwiLFxyXG4gICAgXCJyZWNlaXZlckVtYWlsXCI6IFwiXCIsXHJcbiAgICBcImNvdW50cnlOYW1lXCI6IFwiXCIsXHJcbiAgICBcInN0YXRlTmFtZVwiOiBcIlwiLFxyXG4gICAgXCJjaXR5TmFtZVwiOiBcIlwiLFxyXG4gICAgXCJsb2NhbGl0eU5hbWVcIjogXCJcIixcclxuICAgIFwiYWRkcmVzc0xpbmUxXCI6IFwiXCIsXHJcbiAgICBcImxhbmRtYXJrXCI6IFwiXCIsXHJcbiAgICBcInppcENvZGVcIjogXCJcIixcclxuICAgIFwic3RhdGVDb2RlXCI6IFwiXCIsXHJcbiAgICBcImFkZHJlc3NUeXBlXCI6IG51bGwsXHJcbiAgICBcImdlb2xvY2F0aW9uXCI6IHtcclxuICAgICAgXCJsYXRpdHVkZVwiOiAwLFxyXG4gICAgICBcImxvbmdpdHVkZVwiOiAwXHJcbiAgICB9LFxyXG4gICAgXCJkZWZhdWx0XCI6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBpc0NhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZWRpdEluZGV4OiBudW1iZXIgPSAtMTtcclxuICBwcml2YXRlIGxhdGl0dXRlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGxvbmdpdHV0ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIGFkZE5ld0FkZHJlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIG1hcENlbnRlcjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCA9IHtcclxuICAgIGxhdDogMCxcclxuICAgIGxuZzogMFxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBtYXJrZXJQb3NpdGlvbjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCA9IHtcclxuICAgIGxhdDogMCxcclxuICAgIGxuZzogMFxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBtYXJrZXJPcHRpb25zOiBnb29nbGUubWFwcy5NYXJrZXJPcHRpb25zID0geyBkcmFnZ2FibGU6IHRydWUgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZW9jb2RlciA9IG5ldyBnb29nbGUubWFwcy5HZW9jb2RlcigpO1xyXG5cclxuICBwdWJsaWMgYWRkZXNzVHlwZTogeyBrZXk6IHN0cmluZywgc3RhdHVzOiBib29sZWFuIH1bXSA9IFtcclxuICAgIHsga2V5OiBcIkhPTUVcIiwgc3RhdHVzOiBmYWxzZSB9LFxyXG4gICAgeyBrZXk6IFwiV09SS1wiLCBzdGF0dXM6IGZhbHNlIH0sXHJcbiAgICB7IGtleTogXCJPVEhFUlwiLCBzdGF0dXM6IGZhbHNlIH1cclxuICBdO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMubWF0RGF0YVsnYWRkcmVzcyddKVxyXG4gICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLm1hdERhdGFbJ2FkZHJlc3MnXVxyXG4gICAgaWYodGhpcy5tYXREYXRhWydhZGRyZXNzTGlzdCddICYmIHRoaXMubWF0RGF0YVsnYWRkcmVzc0xpc3QnXS5sZW5ndGggPiAwKVxyXG4gICAgICB0aGlzLmFkZHJlc3NMaXN0ID0gdGhpcy5tYXREYXRhWydhZGRyZXNzTGlzdCddXHJcbiAgICB0aGlzLmVkaXRJbmRleCA9IHRoaXMubWF0RGF0YVsnZWRpdEluZGV4J11cclxuICAgIC8vIHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKCk7XHJcbiAgICAvLyB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgLy8gdGhpcy5hZGROZXdBZGRyZXNzID0gdGhpcy5yZXNwb25zZURhdGE/Lmxlbmd0aCA9PSAwO1xyXG4gICAgLy8gaWYgKHRoaXMubWF0RGF0YSkge1xyXG4gICAgLy8gICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMubWF0RGF0YS5hZGRyZXNzTGlzdDtcclxuICAgIC8vICAgdGhpcy5kYXRhID0gdGhpcy5tYXREYXRhPy5kYXRhO1xyXG4gICAgLy8gICBpZiAodGhpcy5tYXREYXRhPy5hZGRyZXNzKSB7XHJcbiAgICAvLyAgICAgZm9yKGxldCBlbGUgb2YgdGhpcy5hZGRlc3NUeXBlKSB7XHJcbiAgICAvLyAgICAgICBpZihlbGUua2V5ID09IHRoaXMubWF0RGF0YT8uYWRkcmVzcz8uYWRkcmVzc1R5cGUpIHtcclxuICAgIC8vICAgICAgICAgZWxlLnN0YXR1cyA9IHRydWU7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuYWRkcmVzcyA9IHsuLi50aGlzLm1hdERhdGEuYWRkcmVzc307XHJcbiAgICAvLyAgICAgdGhpcy5lZGl0SW5kZXggPSB0aGlzLm1hdERhdGE/LmVkaXRJbmRleCA/PyAtMTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB0aGlzLmFkZE5ld0FkZHJlc3MgPSB0cnVlO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5hZGRyZXNzTGlzdCA9IHRoaXMucmVzcG9uc2VEYXRhO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHRoaXMuYWRkTmV3QWRkcmVzcyAmJiAhdGhpcy5tYXREYXRhPy5hZGRyZXNzPy5yZWNlaXZlck5hbWUpIHtcclxuICAgIC8vICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgIC8vICAgdGhpcy5hZGRyZXNzID0ge1xyXG4gICAgLy8gICAgIC4uLnRoaXMuYWRkcmVzcyxcclxuICAgIC8vICAgICByZWNlaXZlck5hbWU6IHVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUgPz8gXCJcIixcclxuICAgIC8vICAgICByZWNlaXZlckVtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCA/PyBcIlwiLFxyXG4gICAgLy8gICAgIHJlY2VpdmVyUGhvbmU6IHVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSA/PyBcIlwiXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5hZGRyZXNzTGlzdCA9IHRoaXMucmVzcG9uc2VEYXRhO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBZGRyZXNzVHlwZShhZGRyZXNzOiB7IGtleTogc3RyaW5nLCBzdGF0dXM6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5hZGRlc3NUeXBlLmZvckVhY2goKGFkZCk9PiBhZGQuc3RhdHVzID0gKGFkZC5rZXkgPT0gYWRkcmVzcy5rZXkpKTtcclxuICAgIHRoaXMuYWRkcmVzcy5hZGRyZXNzVHlwZSA9IGFkZHJlc3Mua2V5IGFzIEFERFJFU1NfVFlQRTtcclxuICB9XHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50TG9jYXRpb24oKSB7XHJcblxyXG4gICAgaWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbikge1xyXG5cclxuICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigodmFsdWVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sYXRpdHV0ZSA9IHZhbHVlcy5jb29yZHMubGF0aXR1ZGU7XHJcbiAgICAgICAgdGhpcy5sb25naXR1dGUgPSB2YWx1ZXMuY29vcmRzLmxvbmdpdHVkZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEFkZHJlc3MoKSB7XHJcbiAgICB0aGlzLmdlb2NvZGVyLmdlb2NvZGUoeyBsb2NhdGlvbjogdGhpcy5tYXJrZXJQb3NpdGlvbiB9LCAocmVzdWx0czogYW55LCBzdGF0dXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHNbMF0pIHtcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5hZGRyZXNzID0gcmVzdWx0c1swXS5mb3JtYXR0ZWRfYWRkcmVzcztcclxuICAgICAgICAgIHJlc3VsdHNbMF0uYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gY29tcG9uZW50LnR5cGVzO1xyXG4gICAgICAgICAgICBpZiAodHlwZXMuaW5jbHVkZXMoXCJsb2NhbGl0eVwiKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY2l0eSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVzLmluY2x1ZGVzKFwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xXCIpKSB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5zdGF0ZSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVzLmluY2x1ZGVzKFwiY291bnRyeVwiKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZXMuaW5jbHVkZXMoXCJwb3N0YWxfY29kZVwiKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuemlwID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBvbkxvY2F0aW9uU2VsZWN0ZWQobG9jYXRpb246IGFueSkge1xyXG5cclxuICAgIHRoaXMubGF0aXR1dGUgPSBsb2NhdGlvbi5sYXRpdHVkZTtcclxuICAgIHRoaXMubG9uZ2l0dXRlID0gbG9jYXRpb24ubG9uZ2l0dWRlO1xyXG4gICAgICAvLyB0aGlzLnNldFBvc2l0aW9uKCk7ICAvLyBVcGRhdGUgbWFwIHBvc2l0aW9uXHJcbiAgICAvLyB0aGlzLnVwZGF0ZUFkZHJlc3NGaWVsZHMoKTtcclxuICB9XHJcbiAgb25BdXRvY29tcGxldGVTZWxlY3RlZChyZXN1bHQ6IGFueSkge1xyXG4gICAgLy8gdGhpcy5zZWxlY3RlZENvdW50cnkgPSBudWxsO1xyXG4gICAgLy8gdGhpcy56aXAgPSBcIlwiO1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IFwiXCI7XHJcbiAgICAvLyB0aGlzLmNpdHkgPSBcIlwiO1xyXG4gICAgLy8gdGhpcy5hZGRyZXNzID0gcmVzdWx0Py5mb3JtYXR0ZWRfYWRkcmVzcztcclxuICAgIHJlc3VsdD8uYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YT8udHlwZXMuaW5jbHVkZXMoXCJjb3VudHJ5XCIpKXt9XHJcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZENvdW50cnkgPSBkYXRhLmxvbmdfbmFtZTtcclxuICAgICAgZWxzZSBpZiAoZGF0YT8udHlwZXMuaW5jbHVkZXMoXCJwb3N0YWxfY29kZVwiKSl7fVxyXG4gICAgICAgIC8vIHRoaXMuemlwID0gZGF0YS5sb25nX25hbWU7XHJcbiAgICAgIGVsc2UgaWYgKGRhdGE/LnR5cGVzLmluY2x1ZGVzKFwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xXCIpKXt9XHJcbiAgICAgICAgLy8gdGhpcy5zdGF0ZSA9IGRhdGEubG9uZ19uYW1lO1xyXG4gICAgICBlbHNlIGlmIChkYXRhPy50eXBlcy5pbmNsdWRlcyhcImxvY2FsaXR5XCIpKXt9XHJcbiAgICAgICAgLy8gdGhpcy5jaXR5ID0gZGF0YS5sb25nX25hbWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWRkcmVzc1NlbGVjdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4ID0gaW5kZXg7XHJcbiAgICB0aGlzLnNlbGVjdGVkQWRkcmVzcy5lbWl0KGluZGV4KTtcclxuICB9XHJcbiAgZ29Ub1Byb2ZpbGUoKSB7XHJcbiAgICBpZiAodGhpcy5tYXREYXRhKSB7XHJcbiAgICAgIHRoaXMubWF0RGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgIH1cclxuICB9XHJcbiAgdXBkYXRlQWRkcmVzcygpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVQaW5jb2RlKCkpIHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgcGluY29kZVwiLCBcIkNsb3NlXCIsIHtcclxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9ICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyKTtcclxuICAgIHRoaXMuYWRkcmVzc0xpc3QgPSBbLi4udXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdF07XHJcbiAgICBpZiAodXNlckRldGFpbHMpIHtcclxuXHJcbiAgICAgIGNvbnN0IGFkZHJlc3NMaXN0ID0gdXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdDtcclxuICAgICAgLy8gaWYgKHRoaXMubWF0RGF0YT8uZWRpdEluZGV4KSB7XHJcbiAgICAgIC8vICAgdGhpcy5hZGRyZXNzTGlzdC5mb3JFYWNoKChhZGRyZXNzOiBhbnksIGlkeDogbnVtYmVyKT0+IHtcclxuICAgICAgLy8gICAgIGlmIChpZHggPT0gdGhpcy5tYXREYXRhLmVkaXRJbmR4KSB7XHJcbiAgICAgIC8vICAgICAgIGFkZHJlc3MgPSB0aGlzLmFkZHJlc3M7XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgLy8gICBhZGRyZXNzTGlzdC5wdXNoKHRoaXMuYWRkcmVzcyk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKHRoaXMubWF0RGF0YT8uZWRpdEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0xpc3QgPSB0aGlzLmFkZHJlc3NMaXN0Lm1hcCgoYWRkcmVzczphbnksIGlkeDphbnkgKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaWR4ID09PSB0aGlzLm1hdERhdGEuZWRpdEluZGV4ID8gdGhpcy5hZGRyZXNzIDogYWRkcmVzcztcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkZHJlc3NMaXN0Py5mb3JFYWNoKChhZGRyZXNzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGFkZHJlc3NbJ2RlZmF1bHQnXSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5hZGRyZXNzLmRlZmF1bHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0xpc3QucHVzaCh0aGlzLmFkZHJlc3MpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgIFwidXNlcklkXCI6IHVzZXJEZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBcImJ1c2luZXNzSWRcIjogdXNlckRldGFpbHMuYnVzaW5lc3NJZCxcclxuICAgICAgICBcImFkZHJlc3NEZXRhaWxzTGlzdFwiOiB0aGlzLmFkZHJlc3NMaXN0LFxyXG4gICAgICAgIFwiY29udGFjdFwiOiB1c2VyRGV0YWlscz8uY29udGFjdCA/PyB7fSxcclxuICAgICAgICBcImdlbmRlclwiOiB1c2VyRGV0YWlscz8uZ2VuZGVyPy5sZW5ndGggPiAwID8gdXNlckRldGFpbHM/LmdlbmRlciAgOiAgXCJOT1RfUFJPVklERURcIlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkVXNlckFkZHJlc3MocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuYWRkTmV3QWRkcmVzcyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmICghIXVzZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIHVzZXJEZXRhaWxzLmFkZHJlc3NEZXRhaWxzTGlzdCA9IHRoaXMuYWRkcmVzc0xpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VXNlcih1c2VyRGV0YWlscyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZ1JlZj8uY2xvc2UoKTtcclxuXHJcbiAgICAgICAgfSwgKGVycm9yKT0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSlcclxuICAgICAgLy8gIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCwgeyB3aWR0aDogJzEwMCUnLCBwYW5lbENsYXNzOiBcImF1dGhlbnRpY2F0ZVwiIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICB2YWxpZGF0ZU1vYmlsZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKCghaXNOYU4oTnVtYmVyKGV2ZW50LmtleSkpIHx8IGV2ZW50LmtleUNvZGUgPT0gS0VZQk9BUkRfS0VZUy5CQUNLU1BBQ0UgfHwgZXZlbnQua2V5Q29kZSA9PSBLRVlCT0FSRF9LRVlTLlRBQikgJiYgZXZlbnQua2V5Q29kZSAhPSBLRVlCT0FSRF9LRVlTLlNQQUNFKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlTmFtZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKChldmVudC5rZXlDb2RlID49IEtFWUJPQVJEX0tFWVMuQ0hBUkFDVEVSX0EgJiYgZXZlbnQua2V5Q29kZSA8PSBLRVlCT0FSRF9LRVlTLkNIQVJBQ1RFUl9aKSB8fCBldmVudC5rZXlDb2RlID09IDE2IHx8IGV2ZW50LmtleUNvZGUgPT0gOCB8fCBldmVudC5rZXlDb2RlID09IDMyIHx8IGV2ZW50LmtleUNvZGUgPT0gNDYgfHwgZXZlbnQua2V5Q29kZSA9PSA5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlUGluY29kZSgpe1xyXG4gICAgY29uc3QgcmVnZXggPSAvXlsxLTldWzAtOV17NX0kL1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5hZGRyZXNzLnppcENvZGUpO1xyXG4gIH1cclxuICBlZGl0U2VjdGlvbigpe1xyXG5cclxuICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoe2RhdGE6dGhpcy5kYXRhfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBnZXQgaXNFbWFpbFZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzcz8ucmVjZWl2ZXJFbWFpbD8uaW5jbHVkZXMoXCJAXCIpICYmIHRoaXMuYWRkcmVzcz8ucmVjZWl2ZXJFbWFpbC5pbmNsdWRlcyhcIi5jb21cIikgfHwgKHRoaXMuYWRkcmVzcz8ucmVjZWl2ZXJFbWFpbD8ubGVuZ3RoID09IDApO1xyXG4gIH1cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNDc1O1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxzZWN0aW9uIGNsYXNzPVwiYWRkcmVzcy1zZWNcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ldy1hZGRyZXNzLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImdvVG9Qcm9maWxlKClcIiAqbmdJZj1cIiFpc0NhcnRcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPGgzPnt7aXNDYXJ0ID8gJ0RlbGl2ZXIgVG8nIDogJ05ldyBBZGRyZXNzJ319PC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImFkZC1hZGRyZXNzXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cIiFhZGROZXdBZGRyZXNzXCIgKGNsaWNrKT1cImFkZE5ld0FkZHJlc3MgPSB0cnVlXCI+KyBhZGQgYWRkcmVzczwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZE5ld0FkZHJlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybXMgZC1mbGV4IGZsZXgtd3JhcCBmbG9hdGluZy1pbnB1dFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHJlcXVpcmVkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5OYW1lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG5hbWVcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MucmVjZWl2ZXJOYW1lXCIgKGtleWRvd24pPVwidmFsaWRhdGVOYW1lKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+TW9iaWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG1vYmlsZVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5yZWNlaXZlclBob25lXCIgKGtleWRvd24pPVwidmFsaWRhdGVNb2JpbGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHJlcXVpcmVkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5FbWFpbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBlbWFpbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5yZWNlaXZlckVtYWlsXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWZ1bGwtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+QWRkcmVzczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBhZGRyZXNzXCIgbWF0R29vZ2xlTWFwc0F1dG9jb21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgIChvbkF1dG9jb21wbGV0ZVNlbGVjdGVkKT1cIm9uQXV0b2NvbXBsZXRlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uTG9jYXRpb25TZWxlY3RlZCk9XCJvbkxvY2F0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5hZGRyZXNzTGluZTFcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+TG9jYWxpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbG9jYWxpdHlcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MubG9jYWxpdHlOYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkxhbmRtYXJrPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGxhbmRtYXJrXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLmxhbmRtYXJrXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgcmVxdWlyZWRcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlBpbmNvZGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgcGluY29kZVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy56aXBDb2RlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgcmVxdWlyZWRcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkNpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgY2l0eVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5jaXR5TmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHJlcXVpcmVkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5TdGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBzdGF0ZVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5zdGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+QWRkcmVzcyBUeXBlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiBhZGRlc3NUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkcmVzcy10eXBlXCIgKGNsaWNrKT1cImNoZWNrQWRkcmVzc1R5cGUoYWRkcmVzcylcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImFkZHJlc3Muc3RhdHVzID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICdyZ2JhKDIxMSwgMjExLCAyMTEsIDAuMzYyKSdcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1hZGRyZXNzJzogYWRkcmVzcy5zdGF0dXN9XCI+e3thZGRyZXNzLmtleX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1saXN0XCIgKm5nSWY9XCIhYWRkTmV3QWRkcmVzc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFkZHJlc3Mgb2YgYWRkcmVzc0xpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzc1wiIChjbGljayk9XCJhZGRyZXNzU2VsZWN0ZWQoaWR4KVwiICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic2VsZWN0ZWRBZGRyZXNzSWR4ID09IGlkeCA/IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIG1yLTJcIj57e2FkZHJlc3M/LnJlY2VpdmVyTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtdHlwZVwiPnt7YWRkcmVzcz8uYWRkcmVzc1R5cGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1kZXRcIj57e2FkZHJlc3MuYWRkcmVzc0xpbmUxfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UGhvbmU6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtcGhvbmVcIj57e2FkZHJlc3MucmVjZWl2ZXJQaG9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1yaWdodFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idG5cIiAqbmdJZj1cImFkZE5ld0FkZHJlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFkZHJlc3MucmVjZWl2ZXJQaG9uZT8ubGVuZ3RoICE9IDEwICYmIGFkZHJlc3MucmVjZWl2ZXJQaG9uZT8ubGVuZ3RoXCI+Kk1vYmlsZSBudW1iZXIgaXMgaW52YWxpZDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNFbWFpbFZhbGlkXCI+KkVtYWlsIGlzIGludmFsaWQ8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICFhZGRyZXNzLnJlY2VpdmVyTmFtZSB8fFxyXG4gICAgICAgICAgICAhYWRkcmVzcy5yZWNlaXZlclBob25lIHx8XHJcbiAgICAgICAgICAgIGFkZHJlc3MucmVjZWl2ZXJQaG9uZT8ubGVuZ3RoICE9IDEwIHx8XHJcbiAgICAgICAgICAgICFpc0VtYWlsVmFsaWQgfHxcclxuICAgICAgICAgICAgIWFkZHJlc3MuYWRkcmVzc0xpbmUxIHx8XHJcbiAgICAgICAgICAgICFhZGRyZXNzLmxvY2FsaXR5TmFtZSB8fFxyXG4gICAgICAgICAgICAhYWRkcmVzcy56aXBDb2RlIHx8XHJcbiAgICAgICAgICAgICFhZGRyZXNzLmNpdHlOYW1lIHx8XHJcbiAgICAgICAgICAgICFhZGRyZXNzLnN0YXRlTmFtZSB8fFxyXG4gICAgICAgICAgICAhYWRkcmVzcy5hZGRyZXNzVHlwZSB8fCBpc0xvYWRpbmdcclxuICAgICAgICAgICAgXCIgKGNsaWNrKT1cInVwZGF0ZUFkZHJlc3MoKVwiPnt7aXNMb2FkaW5nID8gJ0xvYWRpbmcnIDogJ1VwZGF0ZSd9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcblxyXG48ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgIDxoMT57e2VkaXRJbmRleCA9PT0gLTEgPyAnQWRkJyA6ICdVcGRhdGUnfX0gQWRkcmVzczwvaDE+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNsb3NlKClcIj7DlzwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxyXG4gICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+Q29udGFjdCBEZXRhaWxzPC9oMj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaXJzdE5hbWVcIj5OYW1lPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLnJlY2VpdmVyTmFtZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgRnVsbCBOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJsYXN0TmFtZVwiPk1vYmlsZTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBNb2JpbGUgbnVtYmVyXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRyZXNzLnJlY2VpdmVyUGhvbmVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJtb2JpbGVcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLnJlY2VpdmVyRW1haWxcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxyXG4gICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+U2hpcHBpbmcgQWRkcmVzczwvaDI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIj5BZGRyZXNzPC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5hZGRyZXNzTGluZTFcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJsYW5kbWFya1wiPkxvY2FsaXR5PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5sb2NhbGl0eU5hbWVcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImNpdHlcIj5MYW5kbWFyazwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5sYW5kbWFya1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwicGluY29kZVwiPlBpbmNvZGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJwaW5jb2RlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MuemlwQ29kZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIj5DaXR5PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLmNpdHlOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCI+U3RhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3Muc3RhdGVOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cclxuICAgICAgPGgyIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkFkZHJlc3MgVHlwZTwvaDI+XHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MuYWRkcmVzc1R5cGVcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhZGRyZXNzIHR5cGVcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPW51bGwgZGlzYWJsZWQgc2VsZWN0ZWQ+U2VsZWN0IGFkZHJlc3MgdHlwZTwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJIT01FXCI+SG9tZTwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJXT1JLXCI+V29yazwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJPVEhFUlwiPk90aGVyPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idG5cIiAoY2xpY2spPVwidXBkYXRlQWRkcmVzcygpXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+e3tlZGl0SW5kZXggPT09IC0xID8gJ1NhdmUnIDpcclxuICAgICAgJ1VwZGF0ZSd9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuIGxvYWRpbmctYnRuXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj4gTG9hZGluZzwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtCLEtBQUssRUFBNEIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBS3JHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFNUUsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDdEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFB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QkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFxQ0UsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE5nWm9uZSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3B0aW9uYWwsIEluamVjdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0aGVudGljYXRlLXVzZXIvYXV0aGVudGljYXRlLXVzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQUREUkVTU19UWVBFLCBBZGRyZXNzRGV0YWlscywgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS0VZQk9BUkRfS0VZUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1leHRlbnNpb25zL2dvb2dsZS1tYXBzLWF1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGVsZXRlLWhvdmVyLWVsZW1lbnQvZGVsZXRlLWhvdmVyLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSG92ZXJFbGVtZW50c0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaG92ZXItZWxlbWVudHMvaG92ZXItZWxlbWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5cclxuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWFkZHJlc3MnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0SWNvbixcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCxcclxuICAgIEhvdmVyRWxlbWVudHNDb21wb25lbnQsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE1hdFNuYWNrQmFyXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FkZHJlc3MuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcbiAgcHVibGljIGFkZHJlc3NMaXN0OiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZEFkZHJlc3NJZHg6IG51bWJlciA9IDA7XHJcbiAgc3R5bGVzOiBhbnk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkQWRkcmVzczogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXRCb3R0b21zaGVldDogTWF0Qm90dG9tU2hlZXQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhciA6IE1hdFNuYWNrQmFyLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBtYXREYXRhOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgbWF0RGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWRkcmVzc0NvbXBvbmVudD4sXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZHJlc3M6IEFkZHJlc3NEZXRhaWxzID0ge1xyXG4gICAgXCJyZWNlaXZlck5hbWVcIjogXCJcIixcclxuICAgIFwicmVjZWl2ZXJQaG9uZVwiOiBcIlwiLFxyXG4gICAgXCJyZWNlaXZlckVtYWlsXCI6IFwiXCIsXHJcbiAgICBcImNvdW50cnlOYW1lXCI6IFwiXCIsXHJcbiAgICBcInN0YXRlTmFtZVwiOiBcIlwiLFxyXG4gICAgXCJjaXR5TmFtZVwiOiBcIlwiLFxyXG4gICAgXCJsb2NhbGl0eU5hbWVcIjogXCJcIixcclxuICAgIFwiYWRkcmVzc0xpbmUxXCI6IFwiXCIsXHJcbiAgICBcImxhbmRtYXJrXCI6IFwiXCIsXHJcbiAgICBcInppcENvZGVcIjogXCJcIixcclxuICAgIFwic3RhdGVDb2RlXCI6IFwiXCIsXHJcbiAgICBcImFkZHJlc3NUeXBlXCI6IG51bGwsXHJcbiAgICBcImdlb2xvY2F0aW9uXCI6IHtcclxuICAgICAgXCJsYXRpdHVkZVwiOiAwLFxyXG4gICAgICBcImxvbmdpdHVkZVwiOiAwXHJcbiAgICB9LFxyXG4gICAgXCJkZWZhdWx0XCI6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBpc0NhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZWRpdEluZGV4OiBudW1iZXIgPSAtMTtcclxuICBwcml2YXRlIGxhdGl0dXRlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGxvbmdpdHV0ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIGFkZE5ld0FkZHJlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIG1hcENlbnRlcjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCA9IHtcclxuICAgIGxhdDogMCxcclxuICAgIGxuZzogMFxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBtYXJrZXJQb3NpdGlvbjogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCA9IHtcclxuICAgIGxhdDogMCxcclxuICAgIGxuZzogMFxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBtYXJrZXJPcHRpb25zOiBnb29nbGUubWFwcy5NYXJrZXJPcHRpb25zID0geyBkcmFnZ2FibGU6IHRydWUgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZW9jb2RlciA9IG5ldyBnb29nbGUubWFwcy5HZW9jb2RlcigpO1xyXG5cclxuICBwdWJsaWMgYWRkZXNzVHlwZTogeyBrZXk6IHN0cmluZywgc3RhdHVzOiBib29sZWFuIH1bXSA9IFtcclxuICAgIHsga2V5OiBcIkhPTUVcIiwgc3RhdHVzOiBmYWxzZSB9LFxyXG4gICAgeyBrZXk6IFwiV09SS1wiLCBzdGF0dXM6IGZhbHNlIH0sXHJcbiAgICB7IGtleTogXCJPVEhFUlwiLCBzdGF0dXM6IGZhbHNlIH1cclxuICBdO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMubWF0RGF0YVsnYWRkcmVzcyddKVxyXG4gICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLm1hdERhdGFbJ2FkZHJlc3MnXVxyXG4gICAgaWYodGhpcy5tYXREYXRhWydhZGRyZXNzTGlzdCddICYmIHRoaXMubWF0RGF0YVsnYWRkcmVzc0xpc3QnXS5sZW5ndGggPiAwKVxyXG4gICAgICB0aGlzLmFkZHJlc3NMaXN0ID0gdGhpcy5tYXREYXRhWydhZGRyZXNzTGlzdCddXHJcbiAgICB0aGlzLmVkaXRJbmRleCA9IHRoaXMubWF0RGF0YVsnZWRpdEluZGV4J11cclxuICAgIC8vIHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKCk7XHJcbiAgICAvLyB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgLy8gdGhpcy5hZGROZXdBZGRyZXNzID0gdGhpcy5yZXNwb25zZURhdGE/Lmxlbmd0aCA9PSAwO1xyXG4gICAgLy8gaWYgKHRoaXMubWF0RGF0YSkge1xyXG4gICAgLy8gICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMubWF0RGF0YS5hZGRyZXNzTGlzdDtcclxuICAgIC8vICAgdGhpcy5kYXRhID0gdGhpcy5tYXREYXRhPy5kYXRhO1xyXG4gICAgLy8gICBpZiAodGhpcy5tYXREYXRhPy5hZGRyZXNzKSB7XHJcbiAgICAvLyAgICAgZm9yKGxldCBlbGUgb2YgdGhpcy5hZGRlc3NUeXBlKSB7XHJcbiAgICAvLyAgICAgICBpZihlbGUua2V5ID09IHRoaXMubWF0RGF0YT8uYWRkcmVzcz8uYWRkcmVzc1R5cGUpIHtcclxuICAgIC8vICAgICAgICAgZWxlLnN0YXR1cyA9IHRydWU7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuYWRkcmVzcyA9IHsuLi50aGlzLm1hdERhdGEuYWRkcmVzc307XHJcbiAgICAvLyAgICAgdGhpcy5lZGl0SW5kZXggPSB0aGlzLm1hdERhdGE/LmVkaXRJbmRleCA/PyAtMTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB0aGlzLmFkZE5ld0FkZHJlc3MgPSB0cnVlO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5hZGRyZXNzTGlzdCA9IHRoaXMucmVzcG9uc2VEYXRhO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHRoaXMuYWRkTmV3QWRkcmVzcyAmJiAhdGhpcy5tYXREYXRhPy5hZGRyZXNzPy5yZWNlaXZlck5hbWUpIHtcclxuICAgIC8vICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgIC8vICAgdGhpcy5hZGRyZXNzID0ge1xyXG4gICAgLy8gICAgIC4uLnRoaXMuYWRkcmVzcyxcclxuICAgIC8vICAgICByZWNlaXZlck5hbWU6IHVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUgPz8gXCJcIixcclxuICAgIC8vICAgICByZWNlaXZlckVtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCA/PyBcIlwiLFxyXG4gICAgLy8gICAgIHJlY2VpdmVyUGhvbmU6IHVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSA/PyBcIlwiXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5hZGRyZXNzTGlzdCA9IHRoaXMucmVzcG9uc2VEYXRhO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBZGRyZXNzVHlwZShhZGRyZXNzOiB7IGtleTogc3RyaW5nLCBzdGF0dXM6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5hZGRlc3NUeXBlLmZvckVhY2goKGFkZCk9PiBhZGQuc3RhdHVzID0gKGFkZC5rZXkgPT0gYWRkcmVzcy5rZXkpKTtcclxuICAgIHRoaXMuYWRkcmVzcy5hZGRyZXNzVHlwZSA9IGFkZHJlc3Mua2V5IGFzIEFERFJFU1NfVFlQRTtcclxuICB9XHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50TG9jYXRpb24oKSB7XHJcblxyXG4gICAgaWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbikge1xyXG5cclxuICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigodmFsdWVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sYXRpdHV0ZSA9IHZhbHVlcy5jb29yZHMubGF0aXR1ZGU7XHJcbiAgICAgICAgdGhpcy5sb25naXR1dGUgPSB2YWx1ZXMuY29vcmRzLmxvbmdpdHVkZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEFkZHJlc3MoKSB7XHJcbiAgICB0aGlzLmdlb2NvZGVyLmdlb2NvZGUoeyBsb2NhdGlvbjogdGhpcy5tYXJrZXJQb3NpdGlvbiB9LCAocmVzdWx0czogYW55LCBzdGF0dXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHNbMF0pIHtcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5hZGRyZXNzID0gcmVzdWx0c1swXS5mb3JtYXR0ZWRfYWRkcmVzcztcclxuICAgICAgICAgIHJlc3VsdHNbMF0uYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gY29tcG9uZW50LnR5cGVzO1xyXG4gICAgICAgICAgICBpZiAodHlwZXMuaW5jbHVkZXMoXCJsb2NhbGl0eVwiKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY2l0eSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVzLmluY2x1ZGVzKFwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xXCIpKSB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5zdGF0ZSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVzLmluY2x1ZGVzKFwiY291bnRyeVwiKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZXMuaW5jbHVkZXMoXCJwb3N0YWxfY29kZVwiKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuemlwID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBvbkxvY2F0aW9uU2VsZWN0ZWQobG9jYXRpb246IGFueSkge1xyXG5cclxuICAgIHRoaXMubGF0aXR1dGUgPSBsb2NhdGlvbi5sYXRpdHVkZTtcclxuICAgIHRoaXMubG9uZ2l0dXRlID0gbG9jYXRpb24ubG9uZ2l0dWRlO1xyXG4gICAgICAvLyB0aGlzLnNldFBvc2l0aW9uKCk7ICAvLyBVcGRhdGUgbWFwIHBvc2l0aW9uXHJcbiAgICAvLyB0aGlzLnVwZGF0ZUFkZHJlc3NGaWVsZHMoKTtcclxuICB9XHJcbiAgb25BdXRvY29tcGxldGVTZWxlY3RlZChyZXN1bHQ6IGFueSkge1xyXG4gICAgLy8gdGhpcy5zZWxlY3RlZENvdW50cnkgPSBudWxsO1xyXG4gICAgLy8gdGhpcy56aXAgPSBcIlwiO1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IFwiXCI7XHJcbiAgICAvLyB0aGlzLmNpdHkgPSBcIlwiO1xyXG4gICAgLy8gdGhpcy5hZGRyZXNzID0gcmVzdWx0Py5mb3JtYXR0ZWRfYWRkcmVzcztcclxuICAgIHJlc3VsdD8uYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YT8udHlwZXMuaW5jbHVkZXMoXCJjb3VudHJ5XCIpKXt9XHJcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZENvdW50cnkgPSBkYXRhLmxvbmdfbmFtZTtcclxuICAgICAgZWxzZSBpZiAoZGF0YT8udHlwZXMuaW5jbHVkZXMoXCJwb3N0YWxfY29kZVwiKSl7fVxyXG4gICAgICAgIC8vIHRoaXMuemlwID0gZGF0YS5sb25nX25hbWU7XHJcbiAgICAgIGVsc2UgaWYgKGRhdGE/LnR5cGVzLmluY2x1ZGVzKFwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xXCIpKXt9XHJcbiAgICAgICAgLy8gdGhpcy5zdGF0ZSA9IGRhdGEubG9uZ19uYW1lO1xyXG4gICAgICBlbHNlIGlmIChkYXRhPy50eXBlcy5pbmNsdWRlcyhcImxvY2FsaXR5XCIpKXt9XHJcbiAgICAgICAgLy8gdGhpcy5jaXR5ID0gZGF0YS5sb25nX25hbWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWRkcmVzc1NlbGVjdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4ID0gaW5kZXg7XHJcbiAgICB0aGlzLnNlbGVjdGVkQWRkcmVzcy5lbWl0KGluZGV4KTtcclxuICB9XHJcbiAgZ29Ub1Byb2ZpbGUoKSB7XHJcbiAgICBpZiAodGhpcy5tYXREYXRhKSB7XHJcbiAgICAgIHRoaXMubWF0RGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgIH1cclxuICB9XHJcbiAgdXBkYXRlQWRkcmVzcygpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVQaW5jb2RlKCkpIHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgcGluY29kZVwiLCBcIkNsb3NlXCIsIHtcclxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9ICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyKTtcclxuICAgIHRoaXMuYWRkcmVzc0xpc3QgPSBbLi4udXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdF07XHJcbiAgICBpZiAodXNlckRldGFpbHMpIHtcclxuXHJcbiAgICAgIGNvbnN0IGFkZHJlc3NMaXN0ID0gdXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdDtcclxuICAgICAgLy8gaWYgKHRoaXMubWF0RGF0YT8uZWRpdEluZGV4KSB7XHJcbiAgICAgIC8vICAgdGhpcy5hZGRyZXNzTGlzdC5mb3JFYWNoKChhZGRyZXNzOiBhbnksIGlkeDogbnVtYmVyKT0+IHtcclxuICAgICAgLy8gICAgIGlmIChpZHggPT0gdGhpcy5tYXREYXRhLmVkaXRJbmR4KSB7XHJcbiAgICAgIC8vICAgICAgIGFkZHJlc3MgPSB0aGlzLmFkZHJlc3M7XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgLy8gICBhZGRyZXNzTGlzdC5wdXNoKHRoaXMuYWRkcmVzcyk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKHRoaXMubWF0RGF0YT8uZWRpdEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0xpc3QgPSB0aGlzLmFkZHJlc3NMaXN0Lm1hcCgoYWRkcmVzczphbnksIGlkeDphbnkgKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaWR4ID09PSB0aGlzLm1hdERhdGEuZWRpdEluZGV4ID8gdGhpcy5hZGRyZXNzIDogYWRkcmVzcztcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkZHJlc3NMaXN0Py5mb3JFYWNoKChhZGRyZXNzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGFkZHJlc3NbJ2RlZmF1bHQnXSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5hZGRyZXNzLmRlZmF1bHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0xpc3QucHVzaCh0aGlzLmFkZHJlc3MpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgIFwidXNlcklkXCI6IHVzZXJEZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBcImJ1c2luZXNzSWRcIjogdXNlckRldGFpbHMuYnVzaW5lc3NJZCxcclxuICAgICAgICBcImFkZHJlc3NEZXRhaWxzTGlzdFwiOiB0aGlzLmFkZHJlc3NMaXN0LFxyXG4gICAgICAgIFwiY29udGFjdFwiOiB1c2VyRGV0YWlscz8uY29udGFjdCA/PyB7fSxcclxuICAgICAgICBcImdlbmRlclwiOiB1c2VyRGV0YWlscz8uZ2VuZGVyPy5sZW5ndGggPiAwID8gdXNlckRldGFpbHM/LmdlbmRlciAgOiAgXCJOT1RfUFJPVklERURcIlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkVXNlckFkZHJlc3MocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuYWRkTmV3QWRkcmVzcyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmICghIXVzZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIHVzZXJEZXRhaWxzLmFkZHJlc3NEZXRhaWxzTGlzdCA9IHRoaXMuYWRkcmVzc0xpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VXNlcih1c2VyRGV0YWlscyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZ1JlZj8uY2xvc2UoKTtcclxuXHJcbiAgICAgICAgfSwgKGVycm9yKT0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSlcclxuICAgICAgLy8gIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCwgeyB3aWR0aDogJzEwMCUnLCBwYW5lbENsYXNzOiBcImF1dGhlbnRpY2F0ZVwiIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICB2YWxpZGF0ZU1vYmlsZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKCghaXNOYU4oTnVtYmVyKGV2ZW50LmtleSkpIHx8IGV2ZW50LmtleUNvZGUgPT0gS0VZQk9BUkRfS0VZUy5CQUNLU1BBQ0UgfHwgZXZlbnQua2V5Q29kZSA9PSBLRVlCT0FSRF9LRVlTLlRBQikgJiYgZXZlbnQua2V5Q29kZSAhPSBLRVlCT0FSRF9LRVlTLlNQQUNFKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlTmFtZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKChldmVudC5rZXlDb2RlID49IEtFWUJPQVJEX0tFWVMuQ0hBUkFDVEVSX0EgJiYgZXZlbnQua2V5Q29kZSA8PSBLRVlCT0FSRF9LRVlTLkNIQVJBQ1RFUl9aKSB8fCBldmVudC5rZXlDb2RlID09IDE2IHx8IGV2ZW50LmtleUNvZGUgPT0gOCB8fCBldmVudC5rZXlDb2RlID09IDMyIHx8IGV2ZW50LmtleUNvZGUgPT0gNDYgfHwgZXZlbnQua2V5Q29kZSA9PSA5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIHZhbGlkYXRlUGluY29kZSgpe1xyXG4gICAgY29uc3QgcmVnZXggPSAvXlsxLTldWzAtOV17NX0kL1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5hZGRyZXNzLnppcENvZGUpO1xyXG4gIH1cclxuICBlZGl0U2VjdGlvbigpe1xyXG5cclxuICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoe2RhdGE6dGhpcy5kYXRhfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBnZXQgaXNFbWFpbFZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzcz8ucmVjZWl2ZXJFbWFpbD8uaW5jbHVkZXMoXCJAXCIpICYmIHRoaXMuYWRkcmVzcz8ucmVjZWl2ZXJFbWFpbC5pbmNsdWRlcyhcIi5jb21cIikgfHwgKHRoaXMuYWRkcmVzcz8ucmVjZWl2ZXJFbWFpbD8ubGVuZ3RoID09IDApO1xyXG4gIH1cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNDc1O1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxzZWN0aW9uIGNsYXNzPVwiYWRkcmVzcy1zZWNcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ldy1hZGRyZXNzLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImdvVG9Qcm9maWxlKClcIiAqbmdJZj1cIiFpc0NhcnRcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPGgzPnt7aXNDYXJ0ID8gJ0RlbGl2ZXIgVG8nIDogJ05ldyBBZGRyZXNzJ319PC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImFkZC1hZGRyZXNzXCIgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cIiFhZGROZXdBZGRyZXNzXCIgKGNsaWNrKT1cImFkZE5ld0FkZHJlc3MgPSB0cnVlXCI+KyBhZGQgYWRkcmVzczwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZE5ld0FkZHJlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybXMgZC1mbGV4IGZsZXgtd3JhcCBmbG9hdGluZy1pbnB1dFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHJlcXVpcmVkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5OYW1lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG5hbWVcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MucmVjZWl2ZXJOYW1lXCIgKGtleWRvd24pPVwidmFsaWRhdGVOYW1lKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+TW9iaWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG1vYmlsZVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5yZWNlaXZlclBob25lXCIgKGtleWRvd24pPVwidmFsaWRhdGVNb2JpbGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHJlcXVpcmVkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5FbWFpbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBlbWFpbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5yZWNlaXZlckVtYWlsXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWZ1bGwtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+QWRkcmVzczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBhZGRyZXNzXCIgbWF0R29vZ2xlTWFwc0F1dG9jb21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgIChvbkF1dG9jb21wbGV0ZVNlbGVjdGVkKT1cIm9uQXV0b2NvbXBsZXRlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uTG9jYXRpb25TZWxlY3RlZCk9XCJvbkxvY2F0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5hZGRyZXNzTGluZTFcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+TG9jYWxpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbG9jYWxpdHlcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MubG9jYWxpdHlOYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkxhbmRtYXJrPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGxhbmRtYXJrXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLmxhbmRtYXJrXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgcmVxdWlyZWRcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlBpbmNvZGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgcGluY29kZVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy56aXBDb2RlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgcmVxdWlyZWRcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkNpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgY2l0eVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5jaXR5TmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHJlcXVpcmVkXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5TdGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBzdGF0ZVwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5zdGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCByZXF1aXJlZFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+QWRkcmVzcyBUeXBlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiBhZGRlc3NUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkcmVzcy10eXBlXCIgKGNsaWNrKT1cImNoZWNrQWRkcmVzc1R5cGUoYWRkcmVzcylcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImFkZHJlc3Muc3RhdHVzID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICdyZ2JhKDIxMSwgMjExLCAyMTEsIDAuMzYyKSdcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1hZGRyZXNzJzogYWRkcmVzcy5zdGF0dXN9XCI+e3thZGRyZXNzLmtleX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1saXN0XCIgKm5nSWY9XCIhYWRkTmV3QWRkcmVzc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFkZHJlc3Mgb2YgYWRkcmVzc0xpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzc1wiIChjbGljayk9XCJhZGRyZXNzU2VsZWN0ZWQoaWR4KVwiICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic2VsZWN0ZWRBZGRyZXNzSWR4ID09IGlkeCA/IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIG1yLTJcIj57e2FkZHJlc3M/LnJlY2VpdmVyTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtdHlwZVwiPnt7YWRkcmVzcz8uYWRkcmVzc1R5cGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1kZXRcIj57e2FkZHJlc3MuYWRkcmVzc0xpbmUxfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UGhvbmU6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtcGhvbmVcIj57e2FkZHJlc3MucmVjZWl2ZXJQaG9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1yaWdodFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idG5cIiAqbmdJZj1cImFkZE5ld0FkZHJlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFkZHJlc3MucmVjZWl2ZXJQaG9uZT8ubGVuZ3RoICE9IDEwICYmIGFkZHJlc3MucmVjZWl2ZXJQaG9uZT8ubGVuZ3RoXCI+Kk1vYmlsZSBudW1iZXIgaXMgaW52YWxpZDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNFbWFpbFZhbGlkXCI+KkVtYWlsIGlzIGludmFsaWQ8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICFhZGRyZXNzLnJlY2VpdmVyTmFtZSB8fFxyXG4gICAgICAgICAgICAhYWRkcmVzcy5yZWNlaXZlclBob25lIHx8XHJcbiAgICAgICAgICAgIGFkZHJlc3MucmVjZWl2ZXJQaG9uZT8ubGVuZ3RoICE9IDEwIHx8XHJcbiAgICAgICAgICAgICFpc0VtYWlsVmFsaWQgfHxcclxuICAgICAgICAgICAgIWFkZHJlc3MuYWRkcmVzc0xpbmUxIHx8XHJcbiAgICAgICAgICAgICFhZGRyZXNzLmxvY2FsaXR5TmFtZSB8fFxyXG4gICAgICAgICAgICAhYWRkcmVzcy56aXBDb2RlIHx8XHJcbiAgICAgICAgICAgICFhZGRyZXNzLmNpdHlOYW1lIHx8XHJcbiAgICAgICAgICAgICFhZGRyZXNzLnN0YXRlTmFtZSB8fFxyXG4gICAgICAgICAgICAhYWRkcmVzcy5hZGRyZXNzVHlwZSB8fCBpc0xvYWRpbmdcclxuICAgICAgICAgICAgXCIgKGNsaWNrKT1cInVwZGF0ZUFkZHJlc3MoKVwiPnt7aXNMb2FkaW5nID8gJ0xvYWRpbmcnIDogJ1VwZGF0ZSd9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcblxyXG48ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgIDxoMT57e2VkaXRJbmRleCA9PT0gLTEgPyAnQWRkJyA6ICdVcGRhdGUnfX0gQWRkcmVzczwvaDE+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNsb3NlKClcIj7DlzwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxyXG4gICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+Q29udGFjdCBEZXRhaWxzPC9oMj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaXJzdE5hbWVcIj5OYW1lPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLnJlY2VpdmVyTmFtZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgRnVsbCBOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJsYXN0TmFtZVwiPk1vYmlsZTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBNb2JpbGUgbnVtYmVyXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRyZXNzLnJlY2VpdmVyUGhvbmVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJtb2JpbGVcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLnJlY2VpdmVyRW1haWxcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxyXG4gICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+U2hpcHBpbmcgQWRkcmVzczwvaDI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIj5BZGRyZXNzPC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5hZGRyZXNzTGluZTFcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJsYW5kbWFya1wiPkxvY2FsaXR5PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5sb2NhbGl0eU5hbWVcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImNpdHlcIj5MYW5kbWFyazwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYWRkcmVzcy5sYW5kbWFya1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwicGluY29kZVwiPlBpbmNvZGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJwaW5jb2RlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MuemlwQ29kZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIj5DaXR5PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhZGRyZXNzLmNpdHlOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCI+U3RhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3Muc3RhdGVOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cclxuICAgICAgPGgyIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkFkZHJlc3MgVHlwZTwvaDI+XHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImFkZHJlc3MuYWRkcmVzc1R5cGVcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhZGRyZXNzIHR5cGVcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPW51bGwgZGlzYWJsZWQgc2VsZWN0ZWQ+U2VsZWN0IGFkZHJlc3MgdHlwZTwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJIT01FXCI+SG9tZTwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJXT1JLXCI+V29yazwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJPVEhFUlwiPk90aGVyPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idG5cIiAoY2xpY2spPVwidXBkYXRlQWRkcmVzcygpXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+e3tlZGl0SW5kZXggPT09IC0xID8gJ1NhdmUnIDpcclxuICAgICAgJ1VwZGF0ZSd9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuIGxvYWRpbmctYnRuXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj4gTG9hZGluZzwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|