@vendasta/store
Version:
Components and data for Store
71 lines • 22.8 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { Product } from '../shared/product';
import { Addon } from '@vendasta/core/shared';
import * as i0 from "@angular/core";
import * as i1 from "../header-container/header-container.component";
import * as i2 from "../selling-info/selling-info.component";
import * as i3 from "../faqs/faqs.component";
import * as i4 from "../restrictions/country/supported-countries.component";
import * as i5 from "@vendasta/uikit";
import * as i6 from "../files/files.component";
import * as i7 from "@angular/common";
export class AddonDetailsComponent {
constructor() {
this.hasVerifiedContract = false;
this.loaded = true;
this.showPricing = true;
this.showEnableAddon = false;
this.actionEnabled = false;
this.prerequisiteSelected = new EventEmitter();
this.actionSelected = new EventEmitter();
}
onPrerequisiteSelected() {
this.prerequisiteSelected.emit();
}
onActionSelected() {
this.actionSelected.emit();
}
getPricing(product, addon) {
return {
currency: product.currency,
prices: [
{
price: addon.price,
frequency: addon.billingFrequency ? addon.billingFrequency : 'Monthly',
},
],
};
}
get pricingLabel() {
return this.reseller ? 'Wholesale Pricing' : 'Pricing';
}
}
AddonDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AddonDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
AddonDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: AddonDetailsComponent, selector: "app-addon-details", inputs: { product: "product", addon: "addon", reseller: "reseller", billedProduct: "billedProduct", hasVerifiedContract: "hasVerifiedContract", loaded: "loaded", showPricing: "showPricing", showEnableAddon: "showEnableAddon", actionEnabled: "actionEnabled" }, outputs: { prerequisiteSelected: "prerequisiteSelected", actionSelected: "actionSelected" }, ngImport: i0, template: "<div class=\"addon-page\">\n <app-header-container\n [iconUrl]=\"addon.icon\"\n [title]=\"addon.title\"\n [tagline]=\"addon.tagline\"\n [chipLabels]=\"product.getLmiCategoryNames()\"\n [pricing]=\"getPricing(product, addon)\"\n [pricingLabel]=\"pricingLabel\"\n [prerequisiteLabel]=\"product.name\"\n [billedProduct]=\"billedProduct\"\n [hasVerifiedContract]=\"hasVerifiedContract\"\n [loaded]=\"loaded\"\n [showPricing]=\"showPricing\"\n [actionLabel]=\"'Enable Add-on'\"\n [showEnableAddon]=\"showEnableAddon\"\n (actionSelected)=\"onActionSelected()\"\n (prerequisiteSelected)=\"onPrerequisiteSelected()\"\n ></app-header-container>\n\n <div class=\"addon-details addon-content\">\n <ng-container *ngIf=\"reseller\">\n <div class=\"left-column\">\n <div\n *ngIf=\"\n addon.resellerMarketing?.description ||\n addon.resellerMarketing?.keySellingPoints\n \"\n >\n <app-selling-info\n [description]=\"addon.resellerMarketing?.description\"\n [keySellingPoints]=\"addon.resellerMarketing?.keySellingPoints\"\n ></app-selling-info>\n </div>\n <section\n *ngIf=\"\n addon.resellerMarketing?.faqs?.length > 0 &&\n addon.resellerMarketing?.faqs[0].question\n \"\n >\n <h2 class=\"va-addon-title\">FAQs</h2>\n <app-faqs [faqs]=\"addon.resellerMarketing?.faqs\"></app-faqs>\n </section>\n </div>\n <div class=\"right-column\">\n <section *ngIf=\"addon.restrictions?.country?.whitelist\">\n <app-supported-countries\n [countryCodes]=\"addon.restrictions.country.whitelist\"\n ></app-supported-countries>\n </section>\n <section *ngIf=\"addon.screenshots?.length > 0\">\n <h2 class=\"va-addon-title\">Gallery</h2>\n <va-image-gallery [imageUrls]=\"addon.screenshots\"></va-image-gallery>\n </section>\n <section *ngIf=\"addon.resellerMarketing?.files?.length > 0\">\n <h2 class=\"va-addon-title\">Files</h2>\n <app-store-files\n [files]=\"addon.resellerMarketingFiles\"\n ></app-store-files>\n </section>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!reseller\">\n <div class=\"left-column\">\n <div\n *ngIf=\"\n addon.endUserMarketing?.description ||\n addon.endUserMarketing?.keySellingPoints\n \"\n >\n <app-selling-info\n [description]=\"addon.endUserMarketing?.description\"\n [keySellingPoints]=\"addon.endUserMarketing?.keySellingPoints\"\n ></app-selling-info>\n </div>\n <section\n *ngIf=\"\n addon.endUserMarketing?.faqs?.length > 0 &&\n addon.endUserMarketing?.faqs[0].question\n \"\n >\n <h2 class=\"va-addon-title\">FAQs</h2>\n <app-faqs [faqs]=\"addon.endUserMarketing?.faqs\"></app-faqs>\n </section>\n </div>\n\n <div class=\"right-column\">\n <section *ngIf=\"addon.restrictions?.country?.whitelist?.length > 0\">\n <app-supported-countries\n [countryCodes]=\"addon.restrictions.country.whitelist\"\n ></app-supported-countries>\n </section>\n <section *ngIf=\"addon.screenshots?.length > 0\">\n <h2 class=\"va-addon-title\">Gallery</h2>\n <va-image-gallery [imageUrls]=\"addon.screenshots\"></va-image-gallery>\n </section>\n <section *ngIf=\"addon.endUserMarketing?.files?.length > 0\">\n <h2 class=\"va-addon-title\">Files</h2>\n <app-store-files\n [files]=\"addon.endUserMarketingFiles\"\n ></app-store-files>\n </section>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-addon-title{font-size:32px;font-weight:300;margin-top:0;color:#212121}@media screen and (min-width: 600px){.va-addon-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.addon-page{position:relative;margin:0 auto 20px;background:#fff;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px;color:#212121}.addon-page .item-amount{color:#999;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width: 600px){.left-column{width:100%}}.right-column{width:34%}@media screen and (max-width: 600px){.right-column{width:100%}}.addon-content{display:flex}@media screen and (max-width: 600px){.addon-content{flex-direction:column}}\n"], components: [{ type: i1.VaHeaderContainerComponent, selector: "app-header-container", inputs: ["iconUrl", "title", "tagline", "prerequisite", "chipLabels", "pricing", "billedProduct", "loaded", "hasVerifiedContract", "pricingLabel", "primaryPricingActionLabel", "pricingActionLabel", "pricingActionEnabled", "actionEnabled", "actionLabel", "showAction", "showPricing", "showEnableAddon", "prerequisiteLabel"], outputs: ["prerequisiteSelected", "actionSelected", "primaryPricingActionSelected", "pricingActionSelected"] }, { type: i2.VaSellingInfoComponent, selector: "app-selling-info", inputs: ["description", "keySellingPoints"] }, { type: i3.VaFaqsComponent, selector: "app-faqs", inputs: ["faqs"] }, { type: i4.SupportedCountriesComponent, selector: "app-supported-countries", inputs: ["countryCodes"] }, { type: i5.VaImageGalleryComponent, selector: "va-image-gallery", inputs: ["imageUrls", "clickable"] }, { type: i6.VaFilesComponent, selector: "app-store-files", inputs: ["files"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AddonDetailsComponent, decorators: [{
type: Component,
args: [{ selector: 'app-addon-details', template: "<div class=\"addon-page\">\n <app-header-container\n [iconUrl]=\"addon.icon\"\n [title]=\"addon.title\"\n [tagline]=\"addon.tagline\"\n [chipLabels]=\"product.getLmiCategoryNames()\"\n [pricing]=\"getPricing(product, addon)\"\n [pricingLabel]=\"pricingLabel\"\n [prerequisiteLabel]=\"product.name\"\n [billedProduct]=\"billedProduct\"\n [hasVerifiedContract]=\"hasVerifiedContract\"\n [loaded]=\"loaded\"\n [showPricing]=\"showPricing\"\n [actionLabel]=\"'Enable Add-on'\"\n [showEnableAddon]=\"showEnableAddon\"\n (actionSelected)=\"onActionSelected()\"\n (prerequisiteSelected)=\"onPrerequisiteSelected()\"\n ></app-header-container>\n\n <div class=\"addon-details addon-content\">\n <ng-container *ngIf=\"reseller\">\n <div class=\"left-column\">\n <div\n *ngIf=\"\n addon.resellerMarketing?.description ||\n addon.resellerMarketing?.keySellingPoints\n \"\n >\n <app-selling-info\n [description]=\"addon.resellerMarketing?.description\"\n [keySellingPoints]=\"addon.resellerMarketing?.keySellingPoints\"\n ></app-selling-info>\n </div>\n <section\n *ngIf=\"\n addon.resellerMarketing?.faqs?.length > 0 &&\n addon.resellerMarketing?.faqs[0].question\n \"\n >\n <h2 class=\"va-addon-title\">FAQs</h2>\n <app-faqs [faqs]=\"addon.resellerMarketing?.faqs\"></app-faqs>\n </section>\n </div>\n <div class=\"right-column\">\n <section *ngIf=\"addon.restrictions?.country?.whitelist\">\n <app-supported-countries\n [countryCodes]=\"addon.restrictions.country.whitelist\"\n ></app-supported-countries>\n </section>\n <section *ngIf=\"addon.screenshots?.length > 0\">\n <h2 class=\"va-addon-title\">Gallery</h2>\n <va-image-gallery [imageUrls]=\"addon.screenshots\"></va-image-gallery>\n </section>\n <section *ngIf=\"addon.resellerMarketing?.files?.length > 0\">\n <h2 class=\"va-addon-title\">Files</h2>\n <app-store-files\n [files]=\"addon.resellerMarketingFiles\"\n ></app-store-files>\n </section>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!reseller\">\n <div class=\"left-column\">\n <div\n *ngIf=\"\n addon.endUserMarketing?.description ||\n addon.endUserMarketing?.keySellingPoints\n \"\n >\n <app-selling-info\n [description]=\"addon.endUserMarketing?.description\"\n [keySellingPoints]=\"addon.endUserMarketing?.keySellingPoints\"\n ></app-selling-info>\n </div>\n <section\n *ngIf=\"\n addon.endUserMarketing?.faqs?.length > 0 &&\n addon.endUserMarketing?.faqs[0].question\n \"\n >\n <h2 class=\"va-addon-title\">FAQs</h2>\n <app-faqs [faqs]=\"addon.endUserMarketing?.faqs\"></app-faqs>\n </section>\n </div>\n\n <div class=\"right-column\">\n <section *ngIf=\"addon.restrictions?.country?.whitelist?.length > 0\">\n <app-supported-countries\n [countryCodes]=\"addon.restrictions.country.whitelist\"\n ></app-supported-countries>\n </section>\n <section *ngIf=\"addon.screenshots?.length > 0\">\n <h2 class=\"va-addon-title\">Gallery</h2>\n <va-image-gallery [imageUrls]=\"addon.screenshots\"></va-image-gallery>\n </section>\n <section *ngIf=\"addon.endUserMarketing?.files?.length > 0\">\n <h2 class=\"va-addon-title\">Files</h2>\n <app-store-files\n [files]=\"addon.endUserMarketingFiles\"\n ></app-store-files>\n </section>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-addon-title{font-size:32px;font-weight:300;margin-top:0;color:#212121}@media screen and (min-width: 600px){.va-addon-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.addon-page{position:relative;margin:0 auto 20px;background:#fff;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px;color:#212121}.addon-page .item-amount{color:#999;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width: 600px){.left-column{width:100%}}.right-column{width:34%}@media screen and (max-width: 600px){.right-column{width:100%}}.addon-content{display:flex}@media screen and (max-width: 600px){.addon-content{flex-direction:column}}\n"] }]
}], propDecorators: { product: [{
type: Input
}], addon: [{
type: Input
}], reseller: [{
type: Input
}], billedProduct: [{
type: Input
}], hasVerifiedContract: [{
type: Input
}], loaded: [{
type: Input
}], showPricing: [{
type: Input
}], showEnableAddon: [{
type: Input
}], actionEnabled: [{
type: Input
}], prerequisiteSelected: [{
type: Output
}], actionSelected: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvYWRkb24tZGV0YWlscy9hZGRvbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc3RvcmUvc3JjL2xpYi9hZGRvbi1kZXRhaWxzL2FkZG9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUFTOUMsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQVVXLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDckIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0F3Qi9DO0lBdEJDLHNCQUFzQjtRQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQixFQUFFLEtBQVk7UUFDdkMsT0FBTztZQUNMLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO29CQUNsQixTQUFTLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQ3ZFO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6RCxDQUFDOztrSEFsQ1UscUJBQXFCO3NHQUFyQixxQkFBcUIsMFpDWGxDLGkwSEEwR0E7MkZEL0ZhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBS3BCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL3NoYXJlZC9wcm9kdWN0JztcbmltcG9ydCB7IEFkZG9uIH0gZnJvbSAnQHZlbmRhc3RhL2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IFByaWNpbmcgfSBmcm9tICcuLi9wcmljaW5nL3ByaWNpbmcnO1xuaW1wb3J0IHsgQmlsbGVkUHJvZHVjdCB9IGZyb20gJ0B2ZW5kYXN0YS9iaWxsaW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZG9uLWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJ2FkZG9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGRvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFkZG9uRGV0YWlsc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb2R1Y3Q6IFByb2R1Y3Q7XG4gIEBJbnB1dCgpIGFkZG9uOiBBZGRvbjtcbiAgQElucHV0KCkgcmVzZWxsZXI6IHRydWU7XG4gIEBJbnB1dCgpIGJpbGxlZFByb2R1Y3Q6IEJpbGxlZFByb2R1Y3Q7XG4gIEBJbnB1dCgpIGhhc1ZlcmlmaWVkQ29udHJhY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1ByaWNpbmcgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RW5hYmxlQWRkb24gPSBmYWxzZTtcbiAgQElucHV0KCkgYWN0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHJlcmVxdWlzaXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhY3Rpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvblByZXJlcXVpc2l0ZVNlbGVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMucHJlcmVxdWlzaXRlU2VsZWN0ZWQuZW1pdCgpO1xuICB9XG4gIG9uQWN0aW9uU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZC5lbWl0KCk7XG4gIH1cblxuICBnZXRQcmljaW5nKHByb2R1Y3Q6IFByb2R1Y3QsIGFkZG9uOiBBZGRvbik6IFByaWNpbmcge1xuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSxcbiAgICAgIHByaWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJpY2U6IGFkZG9uLnByaWNlLFxuICAgICAgICAgIGZyZXF1ZW5jeTogYWRkb24uYmlsbGluZ0ZyZXF1ZW5jeSA/IGFkZG9uLmJpbGxpbmdGcmVxdWVuY3kgOiAnTW9udGhseScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBnZXQgcHJpY2luZ0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzZWxsZXIgPyAnV2hvbGVzYWxlIFByaWNpbmcnIDogJ1ByaWNpbmcnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkb24tcGFnZVwiPlxuICA8YXBwLWhlYWRlci1jb250YWluZXJcbiAgICBbaWNvblVybF09XCJhZGRvbi5pY29uXCJcbiAgICBbdGl0bGVdPVwiYWRkb24udGl0bGVcIlxuICAgIFt0YWdsaW5lXT1cImFkZG9uLnRhZ2xpbmVcIlxuICAgIFtjaGlwTGFiZWxzXT1cInByb2R1Y3QuZ2V0TG1pQ2F0ZWdvcnlOYW1lcygpXCJcbiAgICBbcHJpY2luZ109XCJnZXRQcmljaW5nKHByb2R1Y3QsIGFkZG9uKVwiXG4gICAgW3ByaWNpbmdMYWJlbF09XCJwcmljaW5nTGFiZWxcIlxuICAgIFtwcmVyZXF1aXNpdGVMYWJlbF09XCJwcm9kdWN0Lm5hbWVcIlxuICAgIFtiaWxsZWRQcm9kdWN0XT1cImJpbGxlZFByb2R1Y3RcIlxuICAgIFtoYXNWZXJpZmllZENvbnRyYWN0XT1cImhhc1ZlcmlmaWVkQ29udHJhY3RcIlxuICAgIFtsb2FkZWRdPVwibG9hZGVkXCJcbiAgICBbc2hvd1ByaWNpbmddPVwic2hvd1ByaWNpbmdcIlxuICAgIFthY3Rpb25MYWJlbF09XCInRW5hYmxlIEFkZC1vbidcIlxuICAgIFtzaG93RW5hYmxlQWRkb25dPVwic2hvd0VuYWJsZUFkZG9uXCJcbiAgICAoYWN0aW9uU2VsZWN0ZWQpPVwib25BY3Rpb25TZWxlY3RlZCgpXCJcbiAgICAocHJlcmVxdWlzaXRlU2VsZWN0ZWQpPVwib25QcmVyZXF1aXNpdGVTZWxlY3RlZCgpXCJcbiAgPjwvYXBwLWhlYWRlci1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cImFkZG9uLWRldGFpbHMgYWRkb24tY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNlbGxlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnQtY29sdW1uXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgYWRkb24ucmVzZWxsZXJNYXJrZXRpbmc/LmRlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICBhZGRvbi5yZXNlbGxlck1hcmtldGluZz8ua2V5U2VsbGluZ1BvaW50c1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXBwLXNlbGxpbmctaW5mb1xuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImFkZG9uLnJlc2VsbGVyTWFya2V0aW5nPy5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBba2V5U2VsbGluZ1BvaW50c109XCJhZGRvbi5yZXNlbGxlck1hcmtldGluZz8ua2V5U2VsbGluZ1BvaW50c1wiXG4gICAgICAgICAgPjwvYXBwLXNlbGxpbmctaW5mbz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZG9uLnJlc2VsbGVyTWFya2V0aW5nPy5mYXFzPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBhZGRvbi5yZXNlbGxlck1hcmtldGluZz8uZmFxc1swXS5xdWVzdGlvblxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJ2YS1hZGRvbi10aXRsZVwiPkZBUXM8L2gyPlxuICAgICAgICAgIDxhcHAtZmFxcyBbZmFxc109XCJhZGRvbi5yZXNlbGxlck1hcmtldGluZz8uZmFxc1wiPjwvYXBwLWZhcXM+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbHVtblwiPlxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImFkZG9uLnJlc3RyaWN0aW9ucz8uY291bnRyeT8ud2hpdGVsaXN0XCI+XG4gICAgICAgICAgPGFwcC1zdXBwb3J0ZWQtY291bnRyaWVzXG4gICAgICAgICAgICBbY291bnRyeUNvZGVzXT1cImFkZG9uLnJlc3RyaWN0aW9ucy5jb3VudHJ5LndoaXRlbGlzdFwiXG4gICAgICAgICAgPjwvYXBwLXN1cHBvcnRlZC1jb3VudHJpZXM+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJhZGRvbi5zY3JlZW5zaG90cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxoMiBjbGFzcz1cInZhLWFkZG9uLXRpdGxlXCI+R2FsbGVyeTwvaDI+XG4gICAgICAgICAgPHZhLWltYWdlLWdhbGxlcnkgW2ltYWdlVXJsc109XCJhZGRvbi5zY3JlZW5zaG90c1wiPjwvdmEtaW1hZ2UtZ2FsbGVyeT5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImFkZG9uLnJlc2VsbGVyTWFya2V0aW5nPy5maWxlcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxoMiBjbGFzcz1cInZhLWFkZG9uLXRpdGxlXCI+RmlsZXM8L2gyPlxuICAgICAgICAgIDxhcHAtc3RvcmUtZmlsZXNcbiAgICAgICAgICAgIFtmaWxlc109XCJhZGRvbi5yZXNlbGxlck1hcmtldGluZ0ZpbGVzXCJcbiAgICAgICAgICA+PC9hcHAtc3RvcmUtZmlsZXM+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXNlbGxlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnQtY29sdW1uXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgYWRkb24uZW5kVXNlck1hcmtldGluZz8uZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgIGFkZG9uLmVuZFVzZXJNYXJrZXRpbmc/LmtleVNlbGxpbmdQb2ludHNcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC1zZWxsaW5nLWluZm9cbiAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJhZGRvbi5lbmRVc2VyTWFya2V0aW5nPy5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBba2V5U2VsbGluZ1BvaW50c109XCJhZGRvbi5lbmRVc2VyTWFya2V0aW5nPy5rZXlTZWxsaW5nUG9pbnRzXCJcbiAgICAgICAgICA+PC9hcHAtc2VsbGluZy1pbmZvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgYWRkb24uZW5kVXNlck1hcmtldGluZz8uZmFxcz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYWRkb24uZW5kVXNlck1hcmtldGluZz8uZmFxc1swXS5xdWVzdGlvblxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJ2YS1hZGRvbi10aXRsZVwiPkZBUXM8L2gyPlxuICAgICAgICAgIDxhcHAtZmFxcyBbZmFxc109XCJhZGRvbi5lbmRVc2VyTWFya2V0aW5nPy5mYXFzXCI+PC9hcHAtZmFxcz5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb2x1bW5cIj5cbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJhZGRvbi5yZXN0cmljdGlvbnM/LmNvdW50cnk/LndoaXRlbGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxhcHAtc3VwcG9ydGVkLWNvdW50cmllc1xuICAgICAgICAgICAgW2NvdW50cnlDb2Rlc109XCJhZGRvbi5yZXN0cmljdGlvbnMuY291bnRyeS53aGl0ZWxpc3RcIlxuICAgICAgICAgID48L2FwcC1zdXBwb3J0ZWQtY291bnRyaWVzPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiYWRkb24uc2NyZWVuc2hvdHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJ2YS1hZGRvbi10aXRsZVwiPkdhbGxlcnk8L2gyPlxuICAgICAgICAgIDx2YS1pbWFnZS1nYWxsZXJ5IFtpbWFnZVVybHNdPVwiYWRkb24uc2NyZWVuc2hvdHNcIj48L3ZhLWltYWdlLWdhbGxlcnk+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJhZGRvbi5lbmRVc2VyTWFya2V0aW5nPy5maWxlcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxoMiBjbGFzcz1cInZhLWFkZG9uLXRpdGxlXCI+RmlsZXM8L2gyPlxuICAgICAgICAgIDxhcHAtc3RvcmUtZmlsZXNcbiAgICAgICAgICAgIFtmaWxlc109XCJhZGRvbi5lbmRVc2VyTWFya2V0aW5nRmlsZXNcIlxuICAgICAgICAgID48L2FwcC1zdG9yZS1maWxlcz5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=