@kre-form/ant
Version:
341 lines • 24 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";
var KreDesginToFormService = /** @class */ (function () {
function KreDesginToFormService(toFormField) {
this.toFormField = toFormField;
}
/**
* @param {?} tables
* @param {?} fields
* @return {?}
*/
KreDesginToFormService.prototype.initTableStatus = /**
* @param {?} tables
* @param {?} fields
* @return {?}
*/
function (tables, fields) {
var _this = this;
this.initTableFields(tables);
if (fields && fields != null && fields.length > 0) {
fields.forEach((/**
* @param {?} field
* @param {?} index
* @param {?} object
* @return {?}
*/
function (field, index, object) {
_this.setTableStatus(tables, field);
}));
}
};
/**
* @param {?} tables
* @param {?} fields
* @return {?}
*/
KreDesginToFormService.prototype.initFormFieldByTables = /**
* @param {?} tables
* @param {?} fields
* @return {?}
*/
function (tables, fields) {
var _this = this;
if (tables != undefined &&
tables != null &&
tables.primary != undefined &&
tables.primary != null &&
tables.primary.tableFields != undefined &&
tables.primary.tableFields != null) {
/** @type {?} */
var tableFileds = tables.primary.tableFields.filter((/**
* @param {?} item
* @return {?}
*/
function (item) {
return item.isButintin === true;
}));
if (tableFileds != null) {
tableFileds.forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
if (!_this.checkKreFormFieldConfig(item.fieldCode, fields)) {
_this.addKreFormFieldConfig(item, fields);
}
}));
}
}
};
/**
* @private
* @param {?} tables
* @return {?}
*/
KreDesginToFormService.prototype.initTableFields = /**
* @private
* @param {?} tables
* @return {?}
*/
function (tables) {
if (!tables) {
return;
}
if (tables.primary) {
tables.primary.tableQuote = false;
if (tables.primary.tableFields) {
tables.primary.tableFields.forEach((/**
* @param {?} field
* @return {?}
*/
function (field) {
field.fieldQuote = false;
}));
}
}
if (tables.child) {
if (tables.child.single) {
tables.child.single.forEach((/**
* @param {?} table
* @return {?}
*/
function (table) {
table.tableQuote = false;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} field
* @return {?}
*/
function (field) {
field.fieldQuote = false;
}));
}
}));
}
if (tables.child.multiple) {
tables.child.multiple.forEach((/**
* @param {?} table
* @return {?}
*/
function (table) {
table.tableQuote = false;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} field
* @return {?}
*/
function (field) {
field.fieldQuote = false;
}));
}
}));
}
}
};
/**
* @private
* @param {?} tables
* @param {?} field
* @return {?}
*/
KreDesginToFormService.prototype.setTableStatus = /**
* @private
* @param {?} tables
* @param {?} field
* @return {?}
*/
function (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 {?}
*/
KreDesginToFormService.prototype.setTablePrimary = /**
* @private
* @param {?} table
* @param {?} field
* @return {?}
*/
function (table, field) {
// if (field.tableCode === table.tableCode) {
// table.tableQuote = true;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
if (item.fieldCode === field.key) {
item.fieldQuote = true;
}
}));
}
//}
};
/**
* @private
* @param {?} tables
* @param {?} field
* @return {?}
*/
KreDesginToFormService.prototype.setTableSingle = /**
* @private
* @param {?} tables
* @param {?} field
* @return {?}
*/
function (tables, field) {
if (tables && tables != null && tables.length > 0) {
tables.forEach((/**
* @param {?} table
* @return {?}
*/
function (table) {
// if (table.tableCode === field.tableCode) {
// table.tableQuote = true;
if (table.tableFields) {
table.tableFields.forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
if (item.fieldCode === field.key) {
item.fieldQuote = true;
}
}));
}
//}
}));
}
};
/**
* @private
* @param {?} tables
* @param {?} groupField
* @return {?}
*/
KreDesginToFormService.prototype.setTableMultiple = /**
* @private
* @param {?} tables
* @param {?} groupField
* @return {?}
*/
function (tables, groupField) {
if (tables && tables != null && tables.length > 0) {
tables.forEach((/**
* @param {?} table
* @return {?}
*/
function (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 {?}
*/
function (item) {
_.get(groupField, "fieldArray.fieldGroup").forEach((/**
* @param {?} field
* @return {?}
*/
function (field) {
if (item.fieldCode === field.key) {
item.fieldQuote = true;
}
}));
}));
}
}
}
}));
}
};
/**
* @private
* @param {?} code
* @param {?} fields
* @return {?}
*/
KreDesginToFormService.prototype.checkKreFormFieldConfig = /**
* @private
* @param {?} code
* @param {?} fields
* @return {?}
*/
function (code, fields) {
/** @type {?} */
var result = false;
if (fields != undefined && fields != null && fields != []) {
result = fields.some((/**
* @param {?} item
* @return {?}
*/
function (item) {
return item.key === code;
}));
}
return result;
};
/**
* @private
* @param {?} tableField
* @param {?} fields
* @return {?}
*/
KreDesginToFormService.prototype.addKreFormFieldConfig = /**
* @private
* @param {?} tableField
* @param {?} fields
* @return {?}
*/
function (tableField, fields) {
/** @type {?} */
var field = this.toFormField.getKreFiledFunction(tableField);
if (fields == undefined || fields == null) {
fields = [];
}
fields.push(field);
};
KreDesginToFormService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
KreDesginToFormService.ctorParameters = function () { return [
{ type: KreToFormFieldService, decorators: [{ type: Inject, args: [KreToFormFieldService,] }] }
]; };
return KreDesginToFormService;
}());
export { KreDesginToFormService };
if (false) {
/**
* @type {?}
* @private
*/
KreDesginToFormService.prototype.toFormField;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVGaWVsZFNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3JlLWZvcm0vYW50LyIsInNvdXJjZXMiOlsibGliL3Rvb2xzL3RhYmxlRmllbGRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRakUsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0Q7SUFFRSxnQ0FFVSxXQUFrQztRQUFsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7SUFDekMsQ0FBQzs7Ozs7O0lBRUosZ0RBQWU7Ozs7O0lBQWYsVUFBZ0IsTUFBc0IsRUFBRSxNQUE0QjtRQUFwRSxpQkFPQztRQU5DLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxNQUFNLENBQUMsT0FBTzs7Ozs7O1lBQUMsVUFBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLE1BQVc7Z0JBQ2pELEtBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7Ozs7SUFFRCxzREFBcUI7Ozs7O0lBQXJCLFVBQXNCLE1BQXNCLEVBQUUsTUFBNEI7UUFBMUUsaUJBc0JDO1FBckJDLElBQ0UsTUFBTSxJQUFJLFNBQVM7WUFDbkIsTUFBTSxJQUFJLElBQUk7WUFDZCxNQUFNLENBQUMsT0FBTyxJQUFJLFNBQVM7WUFDM0IsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJO1lBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFNBQVM7WUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FB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aEIsQ0FBQzs7Ozs7OztJQUNPLHNEQUFxQjs7Ozs7O0lBQTdCLFVBQ0UsVUFBK0IsRUFDL0IsTUFBNEI7O1lBRXhCLEtBQUssR0FBdUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FDbEUsVUFBVSxDQUNYO1FBQ0QsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDekMsTUFBTSxHQUFHLEVBQUUsQ0FBQztTQUNiO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDOztnQkEvS0YsVUFBVTs7OztnQkFGRixxQkFBcUIsdUJBS3pCLE1BQU0sU0FBQyxxQkFBcUI7O0lBNktqQyw2QkFBQztDQUFBLEFBaExELElBZ0xDO1NBL0tZLHNCQUFzQjs7Ozs7O0lBRS9CLDZDQUMwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEtyZVRhYmxlRmllbGRDb25maWcsXG4gIEtyZUZvcm1GaWVsZENvbmZpZyxcbiAgS3JlVGFibGVDb25maWcsXG4gIGNsb25lLFxufSBmcm9tIFwiQGtyZS1mb3JtL2NvcmVcIjtcbmltcG9ydCB7IElCdXNpbmVzc1RhYmxlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBLcmVUb0Zvcm1GaWVsZFNlcnZpY2UgfSBmcm9tIFwiLi9mb3JtRmllbGRTZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLcmVEZXNnaW5Ub0Zvcm1TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChLcmVUb0Zvcm1GaWVsZFNlcnZpY2UpXG4gICAgcHJpdmF0ZSB0b0Zvcm1GaWVsZDogS3JlVG9Gb3JtRmllbGRTZXJ2aWNlXG4gICkge31cblxuICBpbml0VGFibGVTdGF0dXModGFibGVzOiBJQnVzaW5lc3NUYWJsZSwgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSkge1xuICAgIHRoaXMuaW5pdFRhYmxlRmllbGRzKHRhYmxlcyk7XG4gICAgaWYgKGZpZWxkcyAmJiBmaWVsZHMgIT0gbnVsbCAmJiBmaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnksIGluZGV4OiBhbnksIG9iamVjdDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0dXModGFibGVzLCBmaWVsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbml0Rm9ybUZpZWxkQnlUYWJsZXModGFibGVzOiBJQnVzaW5lc3NUYWJsZSwgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSkge1xuICAgIGlmIChcbiAgICAgIHRhYmxlcyAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRhYmxlcyAhPSBudWxsICYmXG4gICAgICB0YWJsZXMucHJpbWFyeSAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRhYmxlcy5wcmltYXJ5ICE9IG51bGwgJiZcbiAgICAgIHRhYmxlcy5wcmltYXJ5LnRhYmxlRmllbGRzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgdGFibGVzLnByaW1hcnkudGFibGVGaWVsZHMgIT0gbnVsbFxuICAgICkge1xuICAgICAgbGV0IHRhYmxlRmlsZWRzOiBLcmVUYWJsZUZpZWxkQ29uZmlnW10gPSB0YWJsZXMucHJpbWFyeS50YWJsZUZpZWxkcy5maWx0ZXIoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5pc0J1dGludGluID09PSB0cnVlO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKHRhYmxlRmlsZWRzICE9IG51bGwpIHtcbiAgICAgICAgdGFibGVGaWxlZHMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrS3JlRm9ybUZpZWxkQ29uZmlnKGl0ZW0uZmllbGRDb2RlLCBmaWVsZHMpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEtyZUZvcm1GaWVsZENvbmZpZyhpdGVtLCBmaWVsZHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGFibGVGaWVsZHModGFibGVzOiBJQnVzaW5lc3NUYWJsZSkge1xuICAgIGlmICghdGFibGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhYmxlcy5wcmltYXJ5KSB7XG4gICAgICB0YWJsZXMucHJpbWFyeS50YWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICBpZiAodGFibGVzLnByaW1hcnkudGFibGVGaWVsZHMpIHtcbiAgICAgICAgdGFibGVzLnByaW1hcnkudGFibGVGaWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGZpZWxkLmZpZWxkUXVvdGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRhYmxlcy5jaGlsZCkge1xuICAgICAgaWYgKHRhYmxlcy5jaGlsZC5zaW5nbGUpIHtcbiAgICAgICAgdGFibGVzLmNoaWxkLnNpbmdsZS5mb3JFYWNoKCh0YWJsZTogYW55KSA9PiB7XG4gICAgICAgICAgdGFibGUudGFibGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgICAgICAgdGFibGUudGFibGVGaWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZFF1b3RlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRhYmxlcy5jaGlsZC5tdWx0aXBsZSkge1xuICAgICAgICB0YWJsZXMuY2hpbGQubXVsdGlwbGUuZm9yRWFjaCgodGFibGU6IGFueSkgPT4ge1xuICAgICAgICAgIHRhYmxlLnRhYmxlUXVvdGUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAodGFibGUudGFibGVGaWVsZHMpIHtcbiAgICAgICAgICAgIHRhYmxlLnRhYmxlRmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRRdW90ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlU3RhdHVzKHRhYmxlczogSUJ1c2luZXNzVGFibGUsIGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBpZiAodGFibGVzKSB7XG4gICAgICBpZiAodGFibGVzLnByaW1hcnkpIHtcbiAgICAgICAgdGhpcy5zZXRUYWJsZVByaW1hcnkodGFibGVzLnByaW1hcnksIGZpZWxkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhYmxlcy5jaGlsZCkge1xuICAgICAgICBpZiAodGFibGVzLmNoaWxkLnNpbmdsZSkge1xuICAgICAgICAgIHRoaXMuc2V0VGFibGVTaW5nbGUodGFibGVzLmNoaWxkLnNpbmdsZSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZXMuY2hpbGQubXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTXVsdGlwbGUodGFibGVzLmNoaWxkLm11bHRpcGxlLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlUHJpbWFyeSh0YWJsZTogS3JlVGFibGVDb25maWcsIGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICAvLyBpZiAoZmllbGQudGFibGVDb2RlID09PSB0YWJsZS50YWJsZUNvZGUpIHtcbiAgICAvLyAgIHRhYmxlLnRhYmxlUXVvdGUgPSB0cnVlO1xuICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgdGFibGUudGFibGVGaWVsZHMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmZpZWxkQ29kZSA9PT0gZmllbGQua2V5KSB7XG4gICAgICAgICAgaXRlbS5maWVsZFF1b3RlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZVNpbmdsZSh0YWJsZXM6IEtyZVRhYmxlQ29uZmlnW10sIGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBpZiAodGFibGVzICYmIHRhYmxlcyAhPSBudWxsICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0YWJsZXMuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgICAgLy8gaWYgKHRhYmxlLnRhYmxlQ29kZSA9PT0gZmllbGQudGFibGVDb2RlKSB7XG4gICAgICAgIC8vICAgdGFibGUudGFibGVRdW90ZSA9IHRydWU7XG4gICAgICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgICAgIHRhYmxlLnRhYmxlRmllbGRzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZmllbGRDb2RlID09PSBmaWVsZC5rZXkpIHtcbiAgICAgICAgICAgICAgaXRlbS5maWVsZFF1b3RlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvL31cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVNdWx0aXBsZShcbiAgICB0YWJsZXM6IEtyZVRhYmxlQ29uZmlnW10sXG4gICAgZ3JvdXBGaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnXG4gICkge1xuICAgIGlmICh0YWJsZXMgJiYgdGFibGVzICE9IG51bGwgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgICBpZiAodGFibGUudGFibGVDb2RlID09PSBncm91cEZpZWxkLmtleSkge1xuICAgICAgICAgIHRhYmxlLnRhYmxlUXVvdGUgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3VwRmllbGQuZmllbGRBcnJheSAmJlxuICAgICAgICAgICAgZ3JvdXBGaWVsZC5maWVsZEFycmF5LmZpZWxkR3JvdXAgJiZcbiAgICAgICAgICAgIGdyb3VwRmllbGQuZmllbGRBcnJheS5maWVsZEdyb3VwLmxlbmd0aCA+IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0YWJsZS50YWJsZUZpZWxkcykge1xuICAgICAgICAgICAgICB0YWJsZS50YWJsZUZpZWxkcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBfLmdldChncm91cEZpZWxkLCBcImZpZWxkQXJyYXkuZmllbGRHcm91cFwiKS5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uZmllbGRDb2RlID09PSBmaWVsZC5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZpZWxkUXVvdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrS3JlRm9ybUZpZWxkQ29uZmlnKGNvZGU6IHN0cmluZywgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSkge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBpZiAoZmllbGRzICE9IHVuZGVmaW5lZCAmJiBmaWVsZHMgIT0gbnVsbCAmJiBmaWVsZHMgIT0gW10pIHtcbiAgICAgIHJlc3VsdCA9IGZpZWxkcy5zb21lKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ua2V5ID09PSBjb2RlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcHJpdmF0ZSBhZGRLcmVGb3JtRmllbGRDb25maWcoXG4gICAgdGFibGVGaWVsZDogS3JlVGFibGVGaWVsZENvbmZpZyxcbiAgICBmaWVsZHM6IEtyZUZvcm1GaWVsZENvbmZpZ1tdXG4gICkge1xuICAgIGxldCBmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnID0gdGhpcy50b0Zvcm1GaWVsZC5nZXRLcmVGaWxlZEZ1bmN0aW9uKFxuICAgICAgdGFibGVGaWVsZFxuICAgICk7XG4gICAgaWYgKGZpZWxkcyA9PSB1bmRlZmluZWQgfHwgZmllbGRzID09IG51bGwpIHtcbiAgICAgIGZpZWxkcyA9IFtdO1xuICAgIH1cbiAgICBmaWVsZHMucHVzaChmaWVsZCk7XG4gIH1cbn1cbiJdfQ==