@kre-form/ant
Version:
289 lines • 22.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Inject } from "@angular/core";
import * as _ from "lodash";
import { KreToFormFieldService } from "./formFieldService";
export class KreDesginToFormService {
/**
* @param {?} toFormField
*/
constructor(toFormField) {
this.toFormField = toFormField;
}
/**
* @param {?} tables
* @param {?} fields
* @return {?}
*/
initTableStatus(tables, fields) {
this.initTableFields(tables);
if (fields && fields != null && fields.length > 0) {
fields.forEach((/**
* @param {?} field
* @param {?} index
* @param {?} object
* @return {?}
*/
(field, index, object) => {
this.setTableStatus(tables, field);
}));
}
}
/**
* @param {?} tables
* @param {?} fields
* @return {?}
*/
initFormFieldByTables(tables, fields) {
if (tables != undefined &&
tables != null &&
tables.primary != undefined &&
tables.primary != null &&
tables.primary.tableFields != undefined &&
tables.primary.tableFields != null) {
/** @type {?} */
let tableFileds = tables.primary.tableFields.filter((/**
* @param {?} item
* @return {?}
*/
(item) => {
return item.isButintin === true;
}));
if (tableFileds != null) {
tableFileds.forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
if (!this.checkKreFormFieldConfig(item.fieldCode, fields)) {
this.addKreFormFieldConfig(item, fields);
}
}));
}
}
}
/**
* @private
* @param {?} tables
* @return {?}
*/
initTableFields(tables) {
if (!tables) {
return;
}
if (tables.primary) {
tables.primary.tableQuote = false;
if (tables.primary.tableFields) {
tables.primary.tableFields.forEach((/**
* @param {?} field
* @return {?}
*/
(field) => {
field.fieldQuote = false;
}));
}
}
if (tables.child) {
if (tables.child.single) {
tables.child.single.forEach((/**
* @param {?} table
* @return {?}
*/
(table) => {
table.tableQuote = false;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} field
* @return {?}
*/
(field) => {
field.fieldQuote = false;
}));
}
}));
}
if (tables.child.multiple) {
tables.child.multiple.forEach((/**
* @param {?} table
* @return {?}
*/
(table) => {
table.tableQuote = false;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} field
* @return {?}
*/
(field) => {
field.fieldQuote = false;
}));
}
}));
}
}
}
/**
* @private
* @param {?} tables
* @param {?} field
* @return {?}
*/
setTableStatus(tables, field) {
if (tables) {
if (tables.primary) {
this.setTablePrimary(tables.primary, field);
}
if (tables.child) {
if (tables.child.single) {
this.setTableSingle(tables.child.single, field);
}
if (tables.child.multiple) {
this.setTableMultiple(tables.child.multiple, field);
}
}
}
}
/**
* @private
* @param {?} table
* @param {?} field
* @return {?}
*/
setTablePrimary(table, field) {
// if (field.tableCode === table.tableCode) {
// table.tableQuote = true;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
if (item.fieldCode === field.key) {
item.fieldQuote = true;
}
}));
}
//}
}
/**
* @private
* @param {?} tables
* @param {?} field
* @return {?}
*/
setTableSingle(tables, field) {
if (tables && tables != null && tables.length > 0) {
tables.forEach((/**
* @param {?} table
* @return {?}
*/
(table) => {
// if (table.tableCode === field.tableCode) {
// table.tableQuote = true;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
if (item.fieldCode === field.key) {
item.fieldQuote = true;
}
}));
}
//}
}));
}
}
/**
* @private
* @param {?} tables
* @param {?} groupField
* @return {?}
*/
setTableMultiple(tables, groupField) {
if (tables && tables != null && tables.length > 0) {
tables.forEach((/**
* @param {?} table
* @return {?}
*/
(table) => {
if (table.tableCode === groupField.key) {
table.tableQuote = true;
if (groupField.fieldArray &&
groupField.fieldArray.fieldGroup &&
groupField.fieldArray.fieldGroup.length > 0) {
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
_.get(groupField, "fieldArray.fieldGroup").forEach((/**
* @param {?} field
* @return {?}
*/
(field) => {
if (item.fieldCode === field.key) {
item.fieldQuote = true;
}
}));
}));
}
}
}
}));
}
}
/**
* @private
* @param {?} code
* @param {?} fields
* @return {?}
*/
checkKreFormFieldConfig(code, fields) {
/** @type {?} */
let result = false;
if (fields != undefined && fields != null && fields != []) {
result = fields.some((/**
* @param {?} item
* @return {?}
*/
(item) => {
return item.key === code;
}));
}
return result;
}
/**
* @private
* @param {?} tableField
* @param {?} fields
* @return {?}
*/
addKreFormFieldConfig(tableField, fields) {
/** @type {?} */
let field = this.toFormField.getKreFiledFunction(tableField);
if (fields == undefined || fields == null) {
fields = [];
}
fields.push(field);
}
}
KreDesginToFormService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
KreDesginToFormService.ctorParameters = () => [
{ type: KreToFormFieldService, decorators: [{ type: Inject, args: [KreToFormFieldService,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
KreDesginToFormService.prototype.toFormField;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVGaWVsZFNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3JlLWZvcm0vYW50LyIsInNvdXJjZXMiOlsibGliL3Rvb2xzL3RhYmxlRmllbGRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRakUsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHM0QsTUFBTSxPQUFPLHNCQUFzQjs7OztJQUNqQyxZQUVVLFdBQWtDO1FBQWxDLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtJQUN6QyxDQUFDOzs7Ozs7SUFFSixlQUFlLENBQUMsTUFBc0IsRUFBRSxNQUE0QjtRQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsTUFBTSxDQUFDLE9BQU87Ozs7OztZQUFDLENBQUMsS0FBVSxFQUFFLEtBQVUsRUFBRSxNQUFXLEVBQUUsRUFBRTtnQkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxFQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7OztJQUVELHFCQUFxQixDQUFDLE1BQXNCLEVBQUUsTUFBNEI7UUFDeEUsSUFDRSxNQUFNLElBQUksU0FBUztZQUNuQixNQUFNLElBQUksSUFBSTtZQUNkLE1BQU0sQ0FBQyxPQUFPLElBQUksU0FBUztZQUMzQixNQUFNLENBQUMsT0FBTyxJQUFJLElBQUk7WUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUztZQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJ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QztZQUMzQixDQUFDLEVBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7Ozs7OztJQUNPLHFCQUFxQixDQUMzQixVQUErQixFQUMvQixNQUE0Qjs7WUFFeEIsS0FBSyxHQUF1QixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUNsRSxVQUFVLENBQ1g7UUFDRCxJQUFJLE1BQU0sSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUN6QyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2I7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7OztZQS9LRixVQUFVOzs7O1lBRkYscUJBQXFCLHVCQUt6QixNQUFNLFNBQUMscUJBQXFCOzs7Ozs7O0lBQTdCLDZDQUMwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEtyZVRhYmxlRmllbGRDb25maWcsXG4gIEtyZUZvcm1GaWVsZENvbmZpZyxcbiAgS3JlVGFibGVDb25maWcsXG4gIGNsb25lLFxufSBmcm9tIFwiQGtyZS1mb3JtL2NvcmVcIjtcbmltcG9ydCB7IElCdXNpbmVzc1RhYmxlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBLcmVUb0Zvcm1GaWVsZFNlcnZpY2UgfSBmcm9tIFwiLi9mb3JtRmllbGRTZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLcmVEZXNnaW5Ub0Zvcm1TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChLcmVUb0Zvcm1GaWVsZFNlcnZpY2UpXG4gICAgcHJpdmF0ZSB0b0Zvcm1GaWVsZDogS3JlVG9Gb3JtRmllbGRTZXJ2aWNlXG4gICkge31cblxuICBpbml0VGFibGVTdGF0dXModGFibGVzOiBJQnVzaW5lc3NUYWJsZSwgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSkge1xuICAgIHRoaXMuaW5pdFRhYmxlRmllbGRzKHRhYmxlcyk7XG4gICAgaWYgKGZpZWxkcyAmJiBmaWVsZHMgIT0gbnVsbCAmJiBmaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnksIGluZGV4OiBhbnksIG9iamVjdDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0dXModGFibGVzLCBmaWVsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbml0Rm9ybUZpZWxkQnlUYWJsZXModGFibGVzOiBJQnVzaW5lc3NUYWJsZSwgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSkge1xuICAgIGlmIChcbiAgICAgIHRhYmxlcyAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRhYmxlcyAhPSBudWxsICYmXG4gICAgICB0YWJsZXMucHJpbWFyeSAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRhYmxlcy5wcmltYXJ5ICE9IG51bGwgJiZcbiAgICAgIHRhYmxlcy5wcmltYXJ5LnRhYmxlRmllbGRzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgdGFibGVzLnByaW1hcnkudGFibGVGaWVsZHMgIT0gbnVsbFxuICAgICkge1xuICAgICAgbGV0IHRhYmxlRmlsZWRzOiBLcmVUYWJsZUZpZWxkQ29uZmlnW10gPSB0YWJsZXMucHJpbWFyeS50YWJsZUZpZWxkcy5maWx0ZXIoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5pc0J1dGludGluID09PSB0cnVlO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKHRhYmxlRmlsZWRzICE9IG51bGwpIHtcbiAgICAgICAgdGFibGVGaWxlZHMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrS3JlRm9ybUZpZWxkQ29uZmlnKGl0ZW0uZmllbGRDb2RlLCBmaWVsZHMpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEtyZUZvcm1GaWVsZENvbmZpZyhpdGVtLCBmaWVsZHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGFibGVGaWVsZHModGFibGVzOiBJQnVzaW5lc3NUYWJsZSkge1xuICAgIGlmICghdGFibGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhYmxlcy5wcmltYXJ5KSB7XG4gICAgICB0YWJsZXMucHJpbWFyeS50YWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICBpZiAodGFibGVzLnByaW1hcnkudGFibGVGaWVsZHMpIHtcbiAgICAgICAgdGFibGVzLnByaW1hcnkudGFibGVGaWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGZpZWxkLmZpZWxkUXVvdGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRhYmxlcy5jaGlsZCkge1xuICAgICAgaWYgKHRhYmxlcy5jaGlsZC5zaW5nbGUpIHtcbiAgICAgICAgdGFibGVzLmNoaWxkLnNpbmdsZS5mb3JFYWNoKCh0YWJsZTogYW55KSA9PiB7XG4gICAgICAgICAgdGFibGUudGFibGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgICAgICAgdGFibGUudGFibGVGaWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZFF1b3RlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRhYmxlcy5jaGlsZC5tdWx0aXBsZSkge1xuICAgICAgICB0YWJsZXMuY2hpbGQubXVsdGlwbGUuZm9yRWFjaCgodGFibGU6IGFueSkgPT4ge1xuICAgICAgICAgIHRhYmxlLnRhYmxlUXVvdGUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAodGFibGUudGFibGVGaWVsZHMpIHtcbiAgICAgICAgICAgIHRhYmxlLnRhYmxlRmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRRdW90ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlU3RhdHVzKHRhYmxlczogSUJ1c2luZXNzVGFibGUsIGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBpZiAodGFibGVzKSB7XG4gICAgICBpZiAodGFibGVzLnByaW1hcnkpIHtcbiAgICAgICAgdGhpcy5zZXRUYWJsZVByaW1hcnkodGFibGVzLnByaW1hcnksIGZpZWxkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhYmxlcy5jaGlsZCkge1xuICAgICAgICBpZiAodGFibGVzLmNoaWxkLnNpbmdsZSkge1xuICAgICAgICAgIHRoaXMuc2V0VGFibGVTaW5nbGUodGFibGVzLmNoaWxkLnNpbmdsZSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZXMuY2hpbGQubXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTXVsdGlwbGUodGFibGVzLmNoaWxkLm11bHRpcGxlLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlUHJpbWFyeSh0YWJsZTogS3JlVGFibGVDb25maWcsIGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICAvLyBpZiAoZmllbGQudGFibGVDb2RlID09PSB0YWJsZS50YWJsZUNvZGUpIHtcbiAgICAvLyAgIHRhYmxlLnRhYmxlUXVvdGUgPSB0cnVlO1xuICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgdGFibGUudGFibGVGaWVsZHMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmZpZWxkQ29kZSA9PT0gZmllbGQua2V5KSB7XG4gICAgICAgICAgaXRlbS5maWVsZFF1b3RlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZVNpbmdsZSh0YWJsZXM6IEtyZVRhYmxlQ29uZmlnW10sIGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBpZiAodGFibGVzICYmIHRhYmxlcyAhPSBudWxsICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0YWJsZXMuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgICAgLy8gaWYgKHRhYmxlLnRhYmxlQ29kZSA9PT0gZmllbGQudGFibGVDb2RlKSB7XG4gICAgICAgIC8vICAgdGFibGUudGFibGVRdW90ZSA9IHRydWU7XG4gICAgICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgICAgIHRhYmxlLnRhYmxlRmllbGRzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZmllbGRDb2RlID09PSBmaWVsZC5rZXkpIHtcbiAgICAgICAgICAgICAgaXRlbS5maWVsZFF1b3RlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvL31cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVNdWx0aXBsZShcbiAgICB0YWJsZXM6IEtyZVRhYmxlQ29uZmlnW10sXG4gICAgZ3JvdXBGaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnXG4gICkge1xuICAgIGlmICh0YWJsZXMgJiYgdGFibGVzICE9IG51bGwgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgICBpZiAodGFibGUudGFibGVDb2RlID09PSBncm91cEZpZWxkLmtleSkge1xuICAgICAgICAgIHRhYmxlLnRhYmxlUXVvdGUgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3VwRmllbGQuZmllbGRBcnJheSAmJlxuICAgICAgICAgICAgZ3JvdXBGaWVsZC5maWVsZEFycmF5LmZpZWxkR3JvdXAgJiZcbiAgICAgICAgICAgIGdyb3VwRmllbGQuZmllbGRBcnJheS5maWVsZEdyb3VwLmxlbmd0aCA+IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgICAgICAgICB0YWJsZS50YWJsZUZpZWxkcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBfLmdldChncm91cEZpZWxkLCBcImZpZWxkQXJyYXkuZmllbGRHcm91cFwiKS5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uZmllbGRDb2RlID09PSBmaWVsZC5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZpZWxkUXVvdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrS3JlRm9ybUZpZWxkQ29uZmlnKGNvZGU6IHN0cmluZywgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSkge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBpZiAoZmllbGRzICE9IHVuZGVmaW5lZCAmJiBmaWVsZHMgIT0gbnVsbCAmJiBmaWVsZHMgIT0gW10pIHtcbiAgICAgIHJlc3VsdCA9IGZpZWxkcy5zb21lKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ua2V5ID09PSBjb2RlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcHJpdmF0ZSBhZGRLcmVGb3JtRmllbGRDb25maWcoXG4gICAgdGFibGVGaWVsZDogS3JlVGFibGVGaWVsZENvbmZpZyxcbiAgICBmaWVsZHM6IEtyZUZvcm1GaWVsZENvbmZpZ1tdXG4gICkge1xuICAgIGxldCBmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnID0gdGhpcy50b0Zvcm1GaWVsZC5nZXRLcmVGaWxlZEZ1bmN0aW9uKFxuICAgICAgdGFibGVGaWVsZFxuICAgICk7XG4gICAgaWYgKGZpZWxkcyA9PSB1bmRlZmluZWQgfHwgZmllbGRzID09IG51bGwpIHtcbiAgICAgIGZpZWxkcyA9IFtdO1xuICAgIH1cbiAgICBmaWVsZHMucHVzaChmaWVsZCk7XG4gIH1cbn1cbiJdfQ==