UNPKG

@vendasta/store

Version:

Components and data for Store

183 lines 25.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; var DropDownFormSectionComponent = /** @class */ (function () { function DropDownFormSectionComponent() { this.startOpen = false; this.displayAutoTitle = false; this.titleText = ''; this.displayAutoDescription = true; this.descriptionText = ''; this.editingHint = ''; this.expandable = true; this.autoDescriptionText = ''; this.iconName = 'help_outline'; this.subscriptions = []; this.uniqueIndex = 1; this.autoTitleText = ''; } /** * @return {?} */ DropDownFormSectionComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; while (this.parentForm.controls.hasOwnProperty(this.titleText + this.uniqueIndex)) { this.uniqueIndex += 1; } this.parentForm.addControl(this.titleText + this.uniqueIndex, this.toFormGroup(this.fields)); /** @type {?} */ var form = (/** @type {?} */ (this.parentForm.controls[this.titleText + this.uniqueIndex])); for (var key in form.controls) { if (form.controls.hasOwnProperty(key)) { if (this.prepopulatedData != null && this.prepopulatedData.hasOwnProperty(key)) { form.controls[key].setValue(this.prepopulatedData[key]); } } } this.subscriptions.push(form.statusChanges.subscribe(function (change) { /** @type {?} */ var missingFields = false; for (var control in form.controls) { if (!form.controls[control].value || (form.controls[control].value.constructor === Array && !form.controls[control].value[0])) { _this.iconName = 'help_outline'; missingFields = true; if (change === 'INVALID') { _this.autoTitleText = '* Please fill out all required fields'; if (form.controls[control].dirty || form.controls[control].touched) { _this.iconName = 'warning'; break; } } else { _this.autoTitleText = 'Optional fields unanswered'; } } } if (!missingFields) { _this.iconName = 'check_circle'; _this.autoTitleText = 'Complete'; } })); if (this.displayAutoDescription) { this.subscriptions.push(form.valueChanges.subscribe(function (changes) { /** @type {?} */ var description = ''; for (var key in changes) { if (changes.hasOwnProperty(key) && changes[key] !== null && changes[key].length > 0) { if (changes[key][0].name) { for (var fileKey in changes[key]) { if (changes[key][fileKey] != null) { description += changes[key][fileKey].name; description += ', '; } } } else { description += changes[key]; description += ', '; } } } _this.autoDescriptionText = description.substring(0, description.length - 2); })); } form.updateValueAndValidity({ onlySelf: false, emitEvent: true }); }; /** * @param {?} formFields * @return {?} */ DropDownFormSectionComponent.prototype.toFormGroup = /** * @param {?} formFields * @return {?} */ function (formFields) { var _this = this; /** @type {?} */ var group = {}; formFields.forEach(function (field) { /** @type {?} */ var formControl; if (field.controlType === 'checkbox') { formControl = new FormControl(field.value); } else { formControl = field.required ? new FormControl(field.value, Validators.required) : new FormControl(field.value); } group[field.id] = formControl; _this.subscriptions.push(formControl.valueChanges.subscribe(function (value) { return (field.value = value); })); }); return new FormGroup(group); }; /** * @return {?} */ DropDownFormSectionComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); }; DropDownFormSectionComponent.decorators = [ { type: Component, args: [{ selector: 'va-dropdown-form-section', template: "\n <mat-card *ngIf=\"!expandable && !(expandable == undefined)\" class=\"not-expandable-card\">\n <mat-icon class=\"not-expandable-icon valid\"> check_circle</mat-icon>\n <mat-card-header *ngIf=\"!displayAutoTitle\" class=\"not-expandable-header\">\n {{ titleText }}\n </mat-card-header>\n <mat-card-header *ngIf=\"displayAutoTitle\" class=\"not-expandable-header valid\">\n <div class=\"title\"> {{ titleText }}</div>\n <div *ngIf=\"titleText && autoTitleText\">&nbsp;</div>\n <ng-container><i> Complete </i></ng-container>\n </mat-card-header>\n <mat-panel-description class=\"not-expandable-description\">\n {{ descriptionText }}\n </mat-panel-description>\n </mat-card>\n <mat-expansion-panel *ngIf=\"expandable || expandable == undefined\" [expanded]=\"startOpen\">\n <mat-expansion-panel-header>\n <div class=\"dropdown-form-header\">\n <mat-icon\n [ngClass]=\"{invalid: iconName=='warning', valid: iconName=='check_circle', question: iconName=='help_outline'}\">\n {{ iconName }}\n </mat-icon>\n <mat-panel-title *ngIf=\"!displayAutoTitle\">\n {{ titleText }}\n </mat-panel-title>\n <mat-panel-title *ngIf=\"displayAutoTitle\"\n [ngClass]=\"{valid: iconName=='check_circle', invalid: iconName=='warning'}\">\n <div class=\"title\"> {{ titleText }}</div>\n <div *ngIf=\"titleText && autoTitleText\"> &nbsp;</div>\n <ng-container><i> {{autoTitleText}} </i></ng-container>\n </mat-panel-title>\n <mat-panel-description *ngIf=\"displayAutoDescription\" [ngClass]=\"{invalid: iconName=='warning'}\">\n {{ autoDescriptionText }}\n </mat-panel-description>\n <mat-panel-description *ngIf=\"!displayAutoDescription\" [ngClass]=\"{invalid: iconName=='warning'}\">\n <i> {{descriptionText}} </i>\n </mat-panel-description>\n </div>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-body\">\n <va-field *ngFor=\"let field of fields\" [field]=\"field\"\n [form]=\"parentForm.controls[titleText + uniqueIndex]\"></va-field>\n <p *ngIf=\"editingHint != ''\" class=\"editing-hint\"><i>{{ editingHint }}</i></p>\n </div>\n </mat-expansion-panel>\n ", styles: [":host-context(va-dropdown-form-section){font-size:14px}:host-context(va-dropdown-form-section) .expansion-panel-body{margin-top:-10px;display:block;width:60%}.mat-expanded,.mat-expansion-panel{transition:margin .4s}.dropdown-form-header{width:100%;display:flex}mat-panel-description{align-self:center;flex:inherit;display:initial;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}mat-panel-description.invalid{color:#c62828}mat-icon{margin-right:7px;-ms-grid-row-align:center;align-self:center}mat-icon.valid{color:#4caf50}mat-icon.invalid{color:#c62828}mat-icon.question{color:#9e9e9e}mat-panel-title{-ms-grid-row-align:center;align-self:center;flex:none;margin-right:20px}mat-panel-title.valid{color:#4caf50}mat-panel-title.invalid{color:#c62828}.editing-hint{color:#9e9e9e}.title{color:#212121}.not-expandable-card{background:#fff;cursor:default;font-size:15px;display:flex;height:48px;align-items:center;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.not-expandable-card .not-expandable-icon{margin-left:24px}.not-expandable-card .not-expandable-header{display:flex}.not-expandable-card .not-expandable-description{margin-left:22px}.not-expandable-card .valid{color:#4caf50}"] }] } ]; /** @nocollapse */ DropDownFormSectionComponent.ctorParameters = function () { return []; }; DropDownFormSectionComponent.propDecorators = { prepopulatedData: [{ type: Input }], startOpen: [{ type: Input }], parentForm: [{ type: Input }], displayAutoTitle: [{ type: Input }], titleText: [{ type: Input }], displayAutoDescription: [{ type: Input }], descriptionText: [{ type: Input }], fields: [{ type: Input }], editingHint: [{ type: Input }], expandable: [{ type: Input }] }; return DropDownFormSectionComponent; }()); export { DropDownFormSectionComponent }; if (false) { /** @type {?} */ DropDownFormSectionComponent.prototype.prepopulatedData; /** @type {?} */ DropDownFormSectionComponent.prototype.startOpen; /** @type {?} */ DropDownFormSectionComponent.prototype.parentForm; /** @type {?} */ DropDownFormSectionComponent.prototype.displayAutoTitle; /** @type {?} */ DropDownFormSectionComponent.prototype.titleText; /** @type {?} */ DropDownFormSectionComponent.prototype.displayAutoDescription; /** @type {?} */ DropDownFormSectionComponent.prototype.descriptionText; /** @type {?} */ DropDownFormSectionComponent.prototype.fields; /** @type {?} */ DropDownFormSectionComponent.prototype.editingHint; /** @type {?} */ DropDownFormSectionComponent.prototype.expandable; /** @type {?} */ DropDownFormSectionComponent.prototype.autoDescriptionText; /** @type {?} */ DropDownFormSectionComponent.prototype.iconName; /** @type {?} */ DropDownFormSectionComponent.prototype.subscriptions; /** @type {?} */ DropDownFormSectionComponent.prototype.uniqueIndex; /** @type {?} */ DropDownFormSectionComponent.prototype.autoTitleText; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B2ZW5kYXN0YS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9vcmRlci1mb3JtL2Ryb3Bkb3duLWZvcm0tc2VjdGlvbi9kcm9wZG93bi1mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEU7SUFtRUU7UUFmUyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXJCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0Isd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFDMUIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO0lBRUosQ0FBQzs7OztJQUVoQiwrQ0FBUTs7O0lBQVI7UUFBQSxpQkErREM7UUE5REMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDakYsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FB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LFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFyQixDQUFxQixDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7OztJQUVELGtEQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUEsWUFBWSxJQUFJLE9BQUEsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUExQixDQUEwQixDQUFDLENBQUM7SUFDekUsQ0FBQzs7Z0JBdkpGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsczJFQTZDVDs7aUJBRUY7Ozs7O21DQUVFLEtBQUs7NEJBQ0wsS0FBSzs2QkFDTCxLQUFLO21DQUNMLEtBQUs7NEJBQ0wsS0FBSzt5Q0FDTCxLQUFLO2tDQUNMLEtBQUs7eUJBQ0wsS0FBSzs4QkFDTCxLQUFLOzZCQUNMLEtBQUs7O0lBNEZSLG1DQUFDO0NBQUEsQUF4SkQsSUF3SkM7U0F0R1ksNEJBQTRCOzs7SUFDdkMsd0RBQThCOztJQUM5QixpREFBMkI7O0lBQzNCLGtEQUErQjs7SUFDL0Isd0RBQWtDOztJQUNsQyxpREFBd0I7O0lBQ3hCLDhEQUF1Qzs7SUFDdkMsdURBQThCOztJQUM5Qiw4Q0FBa0M7O0lBQ2xDLG1EQUEwQjs7SUFDMUIsa0RBQTJCOztJQUMzQiwyREFBeUI7O0lBQ3pCLGdEQUEwQjs7SUFDMUIscURBQW1DOztJQUNuQyxtREFBZ0I7O0lBQ2hCLHFEQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSAnLi4vZmllbGRzL2ZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhLWRyb3Bkb3duLWZvcm0tc2VjdGlvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1jYXJkICpuZ0lmPVwiIWV4cGFuZGFibGUgJiYgIShleHBhbmRhYmxlID09IHVuZGVmaW5lZClcIiBjbGFzcz1cIm5vdC1leHBhbmRhYmxlLWNhcmRcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm5vdC1leHBhbmRhYmxlLWljb24gdmFsaWRcIj4gY2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCIhZGlzcGxheUF1dG9UaXRsZVwiIGNsYXNzPVwibm90LWV4cGFuZGFibGUtaGVhZGVyXCI+XG4gICAgICAgIHt7IHRpdGxlVGV4dCB9fVxuICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwiZGlzcGxheUF1dG9UaXRsZVwiIGNsYXNzPVwibm90LWV4cGFuZGFibGUtaGVhZGVyIHZhbGlkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiB7eyB0aXRsZVRleHQgfX08L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRpdGxlVGV4dCAmJiBhdXRvVGl0bGVUZXh0XCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXI+PGk+IENvbXBsZXRlIDwvaT48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cIm5vdC1leHBhbmRhYmxlLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIHt7IGRlc2NyaXB0aW9uVGV4dCB9fVxuICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgPC9tYXQtY2FyZD5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cImV4cGFuZGFibGUgfHwgZXhwYW5kYWJsZSA9PSB1bmRlZmluZWRcIiBbZXhwYW5kZWRdPVwic3RhcnRPcGVuXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb3JtLWhlYWRlclwiPlxuICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGljb25OYW1lPT0nd2FybmluZycsIHZhbGlkOiBpY29uTmFtZT09J2NoZWNrX2NpcmNsZScsIHF1ZXN0aW9uOiBpY29uTmFtZT09J2hlbHBfb3V0bGluZSd9XCI+XG4gICAgICAgICAgICB7eyBpY29uTmFtZSB9fVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSAqbmdJZj1cIiFkaXNwbGF5QXV0b1RpdGxlXCI+XG4gICAgICAgICAgICB7eyB0aXRsZVRleHQgfX1cbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlICpuZ0lmPVwiZGlzcGxheUF1dG9UaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7dmFsaWQ6IGljb25OYW1lPT0nY2hlY2tfY2lyY2xlJywgaW52YWxpZDogaWNvbk5hbWU9PSd3YXJuaW5nJ31cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiB7eyB0aXRsZVRleHQgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZVRleHQgJiYgYXV0b1RpdGxlVGV4dFwiPiAmbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+PGk+IHt7YXV0b1RpdGxlVGV4dH19IDwvaT48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uICpuZ0lmPVwiZGlzcGxheUF1dG9EZXNjcmlwdGlvblwiIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBpY29uTmFtZT09J3dhcm5pbmcnfVwiPlxuICAgICAgICAgICAge3sgYXV0b0Rlc2NyaXB0aW9uVGV4dCB9fVxuICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gKm5nSWY9XCIhZGlzcGxheUF1dG9EZXNjcmlwdGlvblwiIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBpY29uTmFtZT09J3dhcm5pbmcnfVwiPlxuICAgICAgICAgICAgPGk+IHt7ZGVzY3JpcHRpb25UZXh0fX0gPC9pPlxuICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5zaW9uLXBhbmVsLWJvZHlcIj5cbiAgICAgICAgPHZhLWZpZWxkICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNcIiBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwicGFyZW50Rm9ybS5jb250cm9sc1t0aXRsZVRleHQgKyB1bmlxdWVJbmRleF1cIj48L3ZhLWZpZWxkPlxuICAgICAgICA8cCAqbmdJZj1cImVkaXRpbmdIaW50ICE9ICcnXCIgY2xhc3M9XCJlZGl0aW5nLWhpbnRcIj48aT57eyBlZGl0aW5nSGludCB9fTwvaT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLWZvcm0tc2VjdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duRm9ybVNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHByZXBvcHVsYXRlZERhdGE6IHt9O1xuICBASW5wdXQoKSBzdGFydE9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGFyZW50Rm9ybTogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkaXNwbGF5QXV0b1RpdGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlVGV4dCA9ICcnO1xuICBASW5wdXQoKSBkaXNwbGF5QXV0b0Rlc2NyaXB0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgZGVzY3JpcHRpb25UZXh0ID0gJyc7XG4gIEBJbnB1dCgpIGZpZWxkczogRmllbGRCYXNlPGFueT5bXTtcbiAgQElucHV0KCkgZWRpdGluZ0hpbnQgPSAnJztcbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IHRydWU7XG4gIGF1dG9EZXNjcmlwdGlvblRleHQgPSAnJztcbiAgaWNvbk5hbWUgPSAnaGVscF9vdXRsaW5lJztcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgdW5pcXVlSW5kZXggPSAxO1xuICBhdXRvVGl0bGVUZXh0ID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHdoaWxlICh0aGlzLnBhcmVudEZvcm0uY29udHJvbHMuaGFzT3duUHJvcGVydHkodGhpcy50aXRsZVRleHQgKyB0aGlzLnVuaXF1ZUluZGV4KSkge1xuICAgICAgdGhpcy51bmlxdWVJbmRleCArPSAxO1xuICAgIH1cbiAgICB0aGlzLnBhcmVudEZvcm0uYWRkQ29udHJvbCh0aGlzLnRpdGxlVGV4dCArIHRoaXMudW5pcXVlSW5kZXgsIHRoaXMudG9Gb3JtR3JvdXAodGhpcy5maWVsZHMpKTtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5wYXJlbnRGb3JtLmNvbnRyb2xzW3RoaXMudGl0bGVUZXh0ICsgdGhpcy51bmlxdWVJbmRleF0gYXMgRm9ybUdyb3VwO1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybS5jb250cm9scykge1xuICAgICAgaWYgKGZvcm0uY29udHJvbHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZiAodGhpcy5wcmVwb3B1bGF0ZWREYXRhICE9IG51bGwgJiYgdGhpcy5wcmVwb3B1bGF0ZWREYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBmb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodGhpcy5wcmVwb3B1bGF0ZWREYXRhW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgZm9ybS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICBsZXQgbWlzc2luZ0ZpZWxkcyA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgaW4gZm9ybS5jb250cm9scykge1xuICAgICAgICAgIGlmICghZm9ybS5jb250cm9sc1tjb250cm9sXS52YWx1ZSB8fCAoZm9ybS5jb250cm9sc1tjb250cm9sXS52YWx1ZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgJiYgIWZvcm0uY29udHJvbHNbY29udHJvbF0udmFsdWVbMF0pKSB7XG4gICAgICAgICAgICB0aGlzLmljb25OYW1lID0gJ2hlbHBfb3V0bGluZSc7XG4gICAgICAgICAgICBtaXNzaW5nRmllbGRzID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChjaGFuZ2UgPT09ICdJTlZBTElEJykge1xuICAgICAgICAgICAgICB0aGlzLmF1dG9UaXRsZVRleHQgPSAnKiBQbGVhc2UgZmlsbCBvdXQgYWxsIHJlcXVpcmVkIGZpZWxkcyc7XG4gICAgICAgICAgICAgIGlmIChmb3JtLmNvbnRyb2xzW2NvbnRyb2xdLmRpcnR5IHx8IGZvcm0uY29udHJvbHNbY29udHJvbF0udG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAnd2FybmluZyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuYXV0b1RpdGxlVGV4dCA9ICdPcHRpb25hbCBmaWVsZHMgdW5hbnN3ZXJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbWlzc2luZ0ZpZWxkcykge1xuICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAnY2hlY2tfY2lyY2xlJztcbiAgICAgICAgICB0aGlzLmF1dG9UaXRsZVRleHQgPSAnQ29tcGxldGUnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5kaXNwbGF5QXV0b0Rlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbiA9ICcnO1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KGtleSkgJiYgY2hhbmdlc1trZXldICE9PSBudWxsICYmIGNoYW5nZXNba2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmIChjaGFuZ2VzW2tleV1bMF0ubmFtZSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZUtleSBpbiBjaGFuZ2VzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzW2tleV1bZmlsZUtleV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiArPSBjaGFuZ2VzW2tleV1bZmlsZUtleV0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gJywgJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gY2hhbmdlc1trZXldO1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICs9ICcsICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hdXRvRGVzY3JpcHRpb25UZXh0ID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIGRlc2NyaXB0aW9uLmxlbmd0aCAtIDIpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IGZhbHNlLCBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH1cblxuICB0b0Zvcm1Hcm91cChmb3JtRmllbGRzOiBGaWVsZEJhc2U8YW55PltdKTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGxldCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gICAgICBpZiAoZmllbGQuY29udHJvbFR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmllbGQudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUNvbnRyb2wgPSBmaWVsZC5yZXF1aXJlZCA/IG5ldyBGb3JtQ29udHJvbChmaWVsZC52YWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCkgOiBuZXcgRm9ybUNvbnRyb2woZmllbGQudmFsdWUpO1xuICAgICAgfVxuICAgICAgZ3JvdXBbZmllbGQuaWRdID0gZm9ybUNvbnRyb2w7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChmb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IChmaWVsZC52YWx1ZSA9IHZhbHVlKSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKGdyb3VwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiJdfQ==