@adins/ucviewgeneric 2.2.1 → 2.3.2
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/README.md +8 -1
- package/adins-ucviewgeneric.metadata.json +1 -1
- package/bundles/adins-ucviewgeneric.umd.js +1 -1
- package/bundles/adins-ucviewgeneric.umd.js.map +1 -1
- package/bundles/adins-ucviewgeneric.umd.min.js +1 -1
- package/bundles/adins-ucviewgeneric.umd.min.js.map +1 -1
- package/esm2015/lib/ucviewgeneric.component.js +2 -2
- package/esm5/lib/ucviewgeneric.component.js +2 -2
- package/fesm2015/adins-ucviewgeneric.js +1 -1
- package/fesm2015/adins-ucviewgeneric.js.map +1 -1
- package/fesm5/adins-ucviewgeneric.js +1 -1
- package/fesm5/adins-ucviewgeneric.js.map +1 -1
- package/package.json +5 -2
|
@@ -557,7 +557,7 @@ var UcviewgenericComponent = /** @class */ (function () {
|
|
|
557
557
|
UcviewgenericComponent.decorators = [
|
|
558
558
|
{ type: Component, args: [{
|
|
559
559
|
selector: 'lib-ucviewgeneric',
|
|
560
|
-
template: "<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\" *ngIf=\"isReady\">\r\n <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\r\n <h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\r\n </div>\r\n <div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\r\n <div class=\"px-3\">\r\n <lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\r\n [panel]=\"ss.subSectionId\">\r\n </lib-ucSubsection>\r\n <div class=\"form-body\" [id]='ss.subSectionId'>\r\n <div class=\"form-group row\">\r\n <div *ngFor=\"let mi of ss?.mainInfo\"\r\n [ngClass]=\"{ 'col-md-6': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\r\n <span\r\n *ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"mi.type != 'switch'\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{mi.label}}</label>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"mi.type == 'switch'\">\r\n <div *ngFor=\"let case of mi?.case\">\r\n <div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{case.result.label}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-6\" [ngClass]=\"{ 'text-left': mi.position == 'left',\r\n 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\r\n <span\r\n *ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\r\n <ng-template #emptyLabel>\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>-</label>\r\n </ng-template>\r\n <ng-template #nonEmptyLabel>\r\n <span *ngIf=\"mi.type == 'text'\">\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\r\n class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </label>\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\r\n class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>-\r\n </label>\r\n </span>\r\n <label *ngIf=\"mi.type == 'currency'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision : '0.2' :'en-US'}} <span *ngIf=\"mi?.IsPrcnt\"> %</span> </label>\r\n <label *ngIf=\"mi.type == 'date'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | date: 'dd-MMM-yyyy'}} </label>\r\n <label *ngIf=\"mi.type == 'link'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a *ngIf=\"!mi?.isFullpath\" [routerLink]=\"genRouterLink(mi.path)\" [target]=\"mi.target\"\r\n [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n <a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\"\r\n (click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n </label>\r\n <label *ngIf=\"mi.type == 'callback'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </a>\r\n </label>\r\n <textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate> {{ viewInfoObjList[i][mi.property] }} </textarea>\r\n <span *ngIf=\"mi.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\r\n <!-- <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\r\n </span>\r\n <span *ngIf=\"mi.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ mi.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"mi.type == 'switch'\">\r\n <span *ngFor=\"let cs of mi?.case\">\r\n <span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\r\n <span class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'text'\">{{ viewInfoObjList[i][cs.result.property]\r\n }}\r\n </span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'decimal'\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'date'\">{{ viewInfoObjList[i][cs.result.property] |\r\n date: 'dd-MMM-yyyy' }}\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'link'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n [queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</span>\r\n </a>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'true'\">Yes</span>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'false'\">No</span>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ cs.result.concat }}\r\n </label>\r\n </span>\r\n </span>\r\n </span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>"
|
|
560
|
+
template: "<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\" *ngIf=\"isReady\">\r\n <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\r\n <h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\r\n </div>\r\n <div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\r\n <div class=\"px-3\">\r\n <lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\r\n [panel]=\"ss.subSectionId\">\r\n </lib-ucSubsection>\r\n <div class=\"form-body\" [id]='ss.subSectionId'>\r\n <div class=\"form-group row\">\r\n <div *ngFor=\"let mi of ss?.mainInfo\"\r\n [ngClass]=\"{ 'col-md-6': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\r\n <span\r\n *ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"mi.type != 'switch'\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{mi.label}}</label>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"mi.type == 'switch'\">\r\n <div *ngFor=\"let case of mi?.case\">\r\n <div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{case.result.label}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-6\" [ngClass]=\"{ 'text-left': mi.position == 'left',\r\n 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\r\n <span\r\n *ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\r\n <ng-template #emptyLabel>\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>-</label>\r\n </ng-template>\r\n <ng-template #nonEmptyLabel>\r\n <span *ngIf=\"mi.type == 'text'\">\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\r\n class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </label>\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\r\n class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>-\r\n </label>\r\n </span>\r\n <label *ngIf=\"mi.type == 'currency'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision : '0.2' :'en-US'}} <span *ngIf=\"mi?.IsPrcnt\"> %</span> </label>\r\n <label *ngIf=\"mi.type == 'date'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | date: (mi?.dateFormat) ? mi?.dateFormat : 'dd-MMM-yyyy'}} </label>\r\n <label *ngIf=\"mi.type == 'link'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a *ngIf=\"!mi?.isFullpath\" [routerLink]=\"genRouterLink(mi.path)\" [target]=\"mi.target\"\r\n [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n <a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\"\r\n (click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n </label>\r\n <label *ngIf=\"mi.type == 'callback'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </a>\r\n </label>\r\n <textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate> {{ viewInfoObjList[i][mi.property] }} </textarea>\r\n <span *ngIf=\"mi.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\r\n <!-- <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\r\n </span>\r\n <span *ngIf=\"mi.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ mi.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"mi.type == 'switch'\">\r\n <span *ngFor=\"let cs of mi?.case\">\r\n <span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\r\n <span class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'text'\">{{ viewInfoObjList[i][cs.result.property]\r\n }}\r\n </span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'decimal'\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'date'\">{{ viewInfoObjList[i][cs.result.property] |\r\n date: 'dd-MMM-yyyy' }}\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'link'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n [queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</span>\r\n </a>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'true'\">Yes</span>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'false'\">No</span>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ cs.result.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'callback'\">\r\n <span\r\n *ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\r\n <ng-template #textCallback>\r\n <span>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</a>\r\n </span>\r\n </ng-template>\r\n <ng-template #iconCallback>\r\n <span>\r\n <a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'success p-0' : cs.result.anchor]\"\r\n (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\r\n <i class=\"font-medium-3 mr-2\"\r\n [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\r\n </i>\r\n <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n {{cs.result.tooltip}}\r\n </span>\r\n </a>\r\n </span>\r\n </ng-template>\r\n </span>\r\n </span>\r\n </span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>"
|
|
561
561
|
}] }
|
|
562
562
|
];
|
|
563
563
|
/** @nocollapse */
|
|
@@ -610,4 +610,4 @@ if (false) {
|
|
|
610
610
|
*/
|
|
611
611
|
UcviewgenericComponent.prototype.cookieService;
|
|
612
612
|
}
|
|
613
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRpbnMvdWN2aWV3Z2VuZXJpYy8iLCJzb3VyY2VzIjpbImxpYi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFFdEM7SUFlRSxnQ0FBb0IsS0FBcUIsRUFBVSxJQUFnQixFQUFVLGdCQUFrQyxFQUFVLGFBQTRCO1FBQXJKLGlCQU9DO1FBUG1CLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVI1SSxtQkFBYyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDekQsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGVBQVUsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQy9FLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFHbkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUd2QixJQUFJ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LElBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQzs0Q0FDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVM7bURBQzNHLEtBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTttREFDaEcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUNBQ3JIOzZDQUFJLEVBQUMsY0FBYzs0Q0FDbEIsSUFBSSxLQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksU0FBUyxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FB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QUF3Qjs7Ozs7SUFBRSxrREFBMEM7Ozs7O0lBQUUsK0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW52aU9iaiB9IGZyb20gJy4vbW9kZWwvZW52aS1vYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBVY1ZpZXdHZW5lcmljT2JqIH0gZnJvbSAnLi9tb2RlbC91Yy12aWV3LWdlbmVyaWMtb2JqLm1vZGVsJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZSc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11Y3ZpZXdnZW5lcmljJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWN2aWV3Z2VuZXJpY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHZpZXdHZW5lcmljT2JqOiBVY1ZpZXdHZW5lcmljT2JqID0gbmV3IFVjVmlld0dlbmVyaWNPYmooKTtcclxuICBAT3V0cHV0KCkgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIFVzZXJBY2Nlc3M6IGFueSA9IEpTT04ucGFyc2UodGhpcy5HZXRDb29raWUodGhpcy5jb29raWVTZXJ2aWNlLCBcIlVzZXJBY2Nlc3NcIikpO1xyXG4gIHZpZXdMaXN0OiBhbnkgPSBcIlwiO1xyXG4gIGdldExpc3Q6IGFueTtcclxuICB2aWV3SW5mb09iakxpc3Q6IGFueTtcclxuICBpc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmdldExpc3QgPSBwYXJhbXM7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcoJ2VuJyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJykgfHwgJ2VuJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwidmlld2dlbmVyaWNcIik7XHJcbiAgICB0aGlzLmluaXRpYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5nZXRKU09OKHRoaXMudmlld0dlbmVyaWNPYmoudmlld0lucHV0KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMudmlld0xpc3QgPSBkYXRhO1xyXG4gICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdCA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb24ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdC5wdXNoKGopO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbGV0IHF1ZXJ5T2JqOiBhbnk7XHJcbiAgICAgICAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai53aGVyZVZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID0gKDxhbnk+T2JqZWN0KS52YWx1ZXModGhpcy5nZXRMaXN0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID0gdGhpcy52aWV3R2VuZXJpY09iai53aGVyZVZhbHVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgKyB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1VybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHF1ZXJ5T2JqID0ge1xyXG4gICAgICAgICAgICBxdWVyeXN0cmluZzogdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGgsIHF1ZXJ5T2JqKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldID0gcmVzcG9uc2VbXCJEYXRhXCJdWzBdO1xyXG5cclxuICAgICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mby5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wcm9wZXJ0eUxpc3QgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcGVydHlMaXN0ID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnByb3BlcnR5TGlzdDtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgeisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0ID0gY29uY2F0ICsgcHJvcGVydHlMaXN0W3pdLnByZWZpeCArIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3Byb3BlcnR5TGlzdFt6XS5wcm9wZXJ0eV0gKyBwcm9wZXJ0eUxpc3Rbel0uc3VmZml4O1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jb25jYXQgPSBjb25jYXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy9zd2l0Y2ggY2FzZVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS50eXBlID09IFwic3dpdGNoXCIpe1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCB6ID0gMDsgeiA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlLmxlbmd0aDsgeisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IEVtcHR5ID0gbmV3IEFycmF5PGJvb2xlYW4+KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0uSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jaGVjayBoaWRlSWZFbXB0eVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuaGlkZUlmRW1wdHkgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5oaWRlSWZFbXB0eSAhPSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC50eXBlICE9IFwiY29uY2F0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eV0gIT0gdW5kZWZpbmVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eV0gIT0gbnVsbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVt0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHldICE9IFwiXCIgPyBmYWxzZSA6IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfWVsc2V7Ly8gdHlwZSBjb25jYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3QgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jYXQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgYSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXQgPSBjb25jYXQgKyBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICsgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSArIHByb3BlcnR5TGlzdFthXS5zdWZmaXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3Byb3BlcnR5TGlzdFthXS5wcm9wZXJ0eV0gIT0gdW5kZWZpbmVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICE9IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSAhPSBcIlwiID8gZmFsc2UgOiB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZihFbXB0eS5pbmNsdWRlcyh0cnVlKSAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuaGlkZUlmRW1wdHkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5IaWRkZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uaXNIaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vY29uY2F0XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBwcm9wZXJ0eUxpc3QubGVuZ3RoOyBhKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXQgPSBjb25jYXQgKyBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICsgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSArIHByb3BlcnR5TGlzdFthXS5zdWZmaXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnR5cGUgPT0gXCJsaW5rXCIgJiYgKHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdCAhPSBudWxsKSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdGVtcExpbmsgPSB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aF07XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0ZW1wTGluayAhPSB1bmRlZmluZWQgJiYgdGVtcExpbmsgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wYXRoID0gdGVtcExpbms7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHMgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCB6ID0gMDsgeiA8IHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cy5sZW5ndGg7IHorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZW52aXJvbm1lbnQgPT0gdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzW3pdLmVudmlyb25tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uaXNGdWxscGF0aCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZnVsbHBhdGggPSB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHNbel0udXJsICsgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnR5cGUgPT0gXCJsaW5rXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmlzRnVsbHBhdGggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgKyB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1VybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCwgdGhpcy5nZXRMaXN0KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldID0gcmVzcG9uc2VbXCJEYXRhXCJdO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEpTT04odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgR2V0Q29va2llKGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsIGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsdWUgPSBjb29raWVTZXJ2aWNlLmdldChrZXkpO1xyXG4gICAgaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZS50cmltKCkgPT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuRGVjcnlwdFN0cmluZyh2YWx1ZSwgXCJBZEluc0ZPVTEyMzQ1Njc4XCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBEZWNyeXB0U3RyaW5nKGNoaXBwZXJUZXh0OiBzdHJpbmcsIGNoaXBwZXJLZXk6IHN0cmluZykge1xyXG4gICAgaWYgKFxyXG4gICAgICBjaGlwcGVyS2V5ID09IHVuZGVmaW5lZCB8fCBjaGlwcGVyS2V5LnRyaW0oKSA9PSAnJyB8fFxyXG4gICAgICBjaGlwcGVyVGV4dCA9PSB1bmRlZmluZWQgfHwgY2hpcHBlclRleHQudHJpbSgpID09ICcnXHJcbiAgICApIHJldHVybiBjaGlwcGVyVGV4dDtcclxuICAgIGxldCBjaGlwcGVyS2V5QXJyID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY2hpcHBlcktleSk7XHJcbiAgICBsZXQgaXYgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xyXG4gICAgbGV0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNoaXBwZXJUZXh0LCBjaGlwcGVyS2V5QXJyLCB7IGl2OiBpdiB9KTtcclxuICAgIGxldCBwbGFpblRleHQgPSBkZWNyeXB0ZWQudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xyXG4gICAgcmV0dXJuIHBsYWluVGV4dDtcclxuICB9XHJcblxyXG4gIGdlbkFjdGlvbih2aWV3T2JqLCBwYXJhbSkge1xyXG4gICAgbGV0IGFyckxpc3QgPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh2aWV3T2JqW3BhcmFtW2ldLnR5cGVdICE9IHVuZGVmaW5lZCB8fCB2aWV3T2JqW3BhcmFtW2ldLnByb3BlcnR5XSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhcnJMaXN0W3BhcmFtW2ldLnR5cGVdID0gdmlld09ialtwYXJhbVtpXS5wcm9wZXJ0eV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXJyTGlzdFtwYXJhbVtpXS50eXBlXSA9IHBhcmFtW2ldLnByb3BlcnR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyTGlzdDtcclxuICB9XHJcblxyXG4gIGdlblJvdXRlckxpbmsodXJsTGluazogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGVtcExpbmsgPSB1cmxMaW5rO1xyXG4gICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt1cmxMaW5rXSAhPSBudWxsKSB7XHJcbiAgICAgIHRlbXBMaW5rID0gdGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3RbdXJsTGlua107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcExpbms7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdEZ1bGxQYXRoKGZ1bGxwYXRoOiBzdHJpbmcsIHBhcmFtOiBPYmplY3QsIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICBsZXQgcXVlcnlQYXJhbSA9IFwiXCI7XHJcbiAgICBjb25zdCBMaXN0T2JqID0gT2JqZWN0LmtleXMocGFyYW0pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBMaXN0T2JqLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChxdWVyeVBhcmFtICE9IFwiXCIpIHtcclxuICAgICAgICBxdWVyeVBhcmFtID0gcXVlcnlQYXJhbSArIFwiJlwiICsgTGlzdE9ialtpXSArIFwiPVwiICsgcGFyYW1bTGlzdE9ialtpXV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcXVlcnlQYXJhbSA9IExpc3RPYmpbaV0gKyBcIj1cIiArIHBhcmFtW0xpc3RPYmpbaV1dO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cub3BlbihmdWxscGF0aCArIFwiP1wiICsgcXVlcnlQYXJhbSwgdGFyZ2V0KTtcclxuICB9XHJcblxyXG4gIGNhbGxiYWNrRnVuY3Rpb24oaXRlbSwga2V5OiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICBsZXQgQ0JPYmogPSB7XHJcbiAgICAgIFZpZXdPYmo6IGl0ZW0sXHJcbiAgICAgIEtleToga2V5XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGxiYWNrLmVtaXQoQ0JPYmopO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoQ2FzZShpdGVtLCBjb25kTGlzdCkge1xyXG4gICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgaWYgKCFpdGVtKSByZXR1cm4gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRMaXN0LmNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJFUVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldID09IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIk5FUVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldICE9IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdUXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPiBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldID4gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdURVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldID49IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPj0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxUXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPCBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDwgdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxURVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDw9IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPD0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ICAgICAgXHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIklOXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlLmZpbmRJbmRleCh4ID0+IHggPT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pID49IDApIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIk5JTlwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlLmZpbmRJbmRleCh4ID0+IHggPT0gaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb25kaXRpb247XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
613
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRpbnMvdWN2aWV3Z2VuZXJpYy8iLCJzb3VyY2VzIjpbImxpYi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFFdEM7SUFlRSxnQ0FBb0IsS0FBcUIsRUFBVSxJQUFnQixFQUFVLGdCQUFrQyxFQUFVLGFBQTRCO1FBQXJKLGlCQU9DO1FBUG1CLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVI1SSxtQkFBYyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDekQsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGVBQVUsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQy9FLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFHbkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUd2QixJQUFJ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LElBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQzs0Q0FDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVM7bURBQzNHLEtBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTttREFDaEcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUNBQ3JIOzZDQUFJLEVBQUMsY0FBYzs0Q0FDbEIsSUFBSSxLQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksU0FBUyxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FB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QUF3Qjs7Ozs7SUFBRSxrREFBMEM7Ozs7O0lBQUUsK0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW52aU9iaiB9IGZyb20gJy4vbW9kZWwvZW52aS1vYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBVY1ZpZXdHZW5lcmljT2JqIH0gZnJvbSAnLi9tb2RlbC91Yy12aWV3LWdlbmVyaWMtb2JqLm1vZGVsJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZSc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11Y3ZpZXdnZW5lcmljJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWN2aWV3Z2VuZXJpY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHZpZXdHZW5lcmljT2JqOiBVY1ZpZXdHZW5lcmljT2JqID0gbmV3IFVjVmlld0dlbmVyaWNPYmooKTtcclxuICBAT3V0cHV0KCkgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIFVzZXJBY2Nlc3M6IGFueSA9IEpTT04ucGFyc2UodGhpcy5HZXRDb29raWUodGhpcy5jb29raWVTZXJ2aWNlLCBcIlVzZXJBY2Nlc3NcIikpO1xyXG4gIHZpZXdMaXN0OiBhbnkgPSBcIlwiO1xyXG4gIGdldExpc3Q6IGFueTtcclxuICB2aWV3SW5mb09iakxpc3Q6IGFueTtcclxuICBpc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmdldExpc3QgPSBwYXJhbXM7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcoJ2VuJyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJykgfHwgJ2VuJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwidmlld2dlbmVyaWNcIik7XHJcbiAgICB0aGlzLmluaXRpYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5nZXRKU09OKHRoaXMudmlld0dlbmVyaWNPYmoudmlld0lucHV0KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMudmlld0xpc3QgPSBkYXRhO1xyXG4gICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdCA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb24ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB0aGlzLnZpZXdJbmZvT2JqTGlzdC5wdXNoKGopO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbGV0IHF1ZXJ5T2JqOiBhbnk7XHJcbiAgICAgICAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai53aGVyZVZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID0gKDxhbnk+T2JqZWN0KS52YWx1ZXModGhpcy5nZXRMaXN0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZy53aGVyZVF1ZXJ5ID0gdGhpcy52aWV3R2VuZXJpY09iai53aGVyZVZhbHVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgKyB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1VybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHF1ZXJ5T2JqID0ge1xyXG4gICAgICAgICAgICBxdWVyeXN0cmluZzogdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGgsIHF1ZXJ5T2JqKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldID0gcmVzcG9uc2VbXCJEYXRhXCJdWzBdO1xyXG5cclxuICAgICAgICAgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mby5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wcm9wZXJ0eUxpc3QgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcGVydHlMaXN0ID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnByb3BlcnR5TGlzdDtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgeisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0ID0gY29uY2F0ICsgcHJvcGVydHlMaXN0W3pdLnByZWZpeCArIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3Byb3BlcnR5TGlzdFt6XS5wcm9wZXJ0eV0gKyBwcm9wZXJ0eUxpc3Rbel0uc3VmZml4O1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jb25jYXQgPSBjb25jYXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy9zd2l0Y2ggY2FzZVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS50eXBlID09IFwic3dpdGNoXCIpe1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCB6ID0gMDsgeiA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlLmxlbmd0aDsgeisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IEVtcHR5ID0gbmV3IEFycmF5PGJvb2xlYW4+KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0uSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jaGVjayBoaWRlSWZFbXB0eVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuaGlkZUlmRW1wdHkgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5oaWRlSWZFbXB0eSAhPSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC50eXBlICE9IFwiY29uY2F0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eV0gIT0gdW5kZWZpbmVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eV0gIT0gbnVsbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVt0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHldICE9IFwiXCIgPyBmYWxzZSA6IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfWVsc2V7Ly8gdHlwZSBjb25jYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3QgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3QubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jYXQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgcHJvcGVydHlMaXN0Lmxlbmd0aDsgYSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXQgPSBjb25jYXQgKyBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICsgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSArIHByb3BlcnR5TGlzdFthXS5zdWZmaXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eS5wdXNoKHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3Byb3BlcnR5TGlzdFthXS5wcm9wZXJ0eV0gIT0gdW5kZWZpbmVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICE9IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSAhPSBcIlwiID8gZmFsc2UgOiB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZihFbXB0eS5pbmNsdWRlcyh0cnVlKSAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuaGlkZUlmRW1wdHkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5IaWRkZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uaXNIaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vY29uY2F0XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBwcm9wZXJ0eUxpc3QubGVuZ3RoOyBhKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXQgPSBjb25jYXQgKyBwcm9wZXJ0eUxpc3RbYV0ucHJlZml4ICsgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSArIHByb3BlcnR5TGlzdFthXS5zdWZmaXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LmNvbmNhdCA9IGNvbmNhdDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnR5cGUgPT0gXCJsaW5rXCIgJiYgKHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCB8fCB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdCAhPSBudWxsKSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdGVtcExpbmsgPSB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aF07XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0ZW1wTGluayAhPSB1bmRlZmluZWQgJiYgdGVtcExpbmsgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wYXRoID0gdGVtcExpbms7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHMgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCB6ID0gMDsgeiA8IHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cy5sZW5ndGg7IHorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZW52aXJvbm1lbnQgPT0gdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzW3pdLmVudmlyb25tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uaXNGdWxscGF0aCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZnVsbHBhdGggPSB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHNbel0udXJsICsgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnR5cGUgPT0gXCJsaW5rXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmlzRnVsbHBhdGggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgKyB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9QYXRoO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1VybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCwgdGhpcy5nZXRMaXN0KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0W2ldID0gcmVzcG9uc2VbXCJEYXRhXCJdO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEpTT04odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgR2V0Q29va2llKGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsIGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsdWUgPSBjb29raWVTZXJ2aWNlLmdldChrZXkpO1xyXG4gICAgaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZS50cmltKCkgPT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuRGVjcnlwdFN0cmluZyh2YWx1ZSwgXCJBZEluc0ZPVTEyMzQ1Njc4XCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBEZWNyeXB0U3RyaW5nKGNoaXBwZXJUZXh0OiBzdHJpbmcsIGNoaXBwZXJLZXk6IHN0cmluZykge1xyXG4gICAgaWYgKFxyXG4gICAgICBjaGlwcGVyS2V5ID09IHVuZGVmaW5lZCB8fCBjaGlwcGVyS2V5LnRyaW0oKSA9PSAnJyB8fFxyXG4gICAgICBjaGlwcGVyVGV4dCA9PSB1bmRlZmluZWQgfHwgY2hpcHBlclRleHQudHJpbSgpID09ICcnXHJcbiAgICApIHJldHVybiBjaGlwcGVyVGV4dDtcclxuICAgIGxldCBjaGlwcGVyS2V5QXJyID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY2hpcHBlcktleSk7XHJcbiAgICBsZXQgaXYgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xyXG4gICAgbGV0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNoaXBwZXJUZXh0LCBjaGlwcGVyS2V5QXJyLCB7IGl2OiBpdiB9KTtcclxuICAgIGxldCBwbGFpblRleHQgPSBkZWNyeXB0ZWQudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xyXG4gICAgcmV0dXJuIHBsYWluVGV4dDtcclxuICB9XHJcblxyXG4gIGdlbkFjdGlvbih2aWV3T2JqLCBwYXJhbSkge1xyXG4gICAgbGV0IGFyckxpc3QgPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh2aWV3T2JqW3BhcmFtW2ldLnR5cGVdICE9IHVuZGVmaW5lZCB8fCB2aWV3T2JqW3BhcmFtW2ldLnByb3BlcnR5XSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhcnJMaXN0W3BhcmFtW2ldLnR5cGVdID0gdmlld09ialtwYXJhbVtpXS5wcm9wZXJ0eV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXJyTGlzdFtwYXJhbVtpXS50eXBlXSA9IHBhcmFtW2ldLnByb3BlcnR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyTGlzdDtcclxuICB9XHJcblxyXG4gIGdlblJvdXRlckxpbmsodXJsTGluazogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGVtcExpbmsgPSB1cmxMaW5rO1xyXG4gICAgaWYgKHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt1cmxMaW5rXSAhPSBudWxsKSB7XHJcbiAgICAgIHRlbXBMaW5rID0gdGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3RbdXJsTGlua107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcExpbms7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdEZ1bGxQYXRoKGZ1bGxwYXRoOiBzdHJpbmcsIHBhcmFtOiBPYmplY3QsIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICBsZXQgcXVlcnlQYXJhbSA9IFwiXCI7XHJcbiAgICBjb25zdCBMaXN0T2JqID0gT2JqZWN0LmtleXMocGFyYW0pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBMaXN0T2JqLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChxdWVyeVBhcmFtICE9IFwiXCIpIHtcclxuICAgICAgICBxdWVyeVBhcmFtID0gcXVlcnlQYXJhbSArIFwiJlwiICsgTGlzdE9ialtpXSArIFwiPVwiICsgcGFyYW1bTGlzdE9ialtpXV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcXVlcnlQYXJhbSA9IExpc3RPYmpbaV0gKyBcIj1cIiArIHBhcmFtW0xpc3RPYmpbaV1dO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cub3BlbihmdWxscGF0aCArIFwiP1wiICsgcXVlcnlQYXJhbSwgdGFyZ2V0KTtcclxuICB9XHJcblxyXG4gIGNhbGxiYWNrRnVuY3Rpb24oaXRlbSwga2V5OiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICBsZXQgQ0JPYmogPSB7XHJcbiAgICAgIFZpZXdPYmo6IGl0ZW0sXHJcbiAgICAgIEtleToga2V5XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGxiYWNrLmVtaXQoQ0JPYmopO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoQ2FzZShpdGVtLCBjb25kTGlzdCkge1xyXG4gICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgaWYgKCFpdGVtKSByZXR1cm4gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRMaXN0LmNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucmVzdHJpY3Rpb24gPT0gXCJFUVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldID09IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIk5FUVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldICE9IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdUXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPiBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldID4gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkdURVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldID49IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPj0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxUXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPCBjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDwgdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkxURVwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldIDw9IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPD0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ICAgICAgXHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIklOXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlLmZpbmRJbmRleCh4ID0+IHggPT0gdGhpcy5Vc2VyQWNjZXNzW1wiVXNlck5hbWVcIl0pID49IDApIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIk5JTlwiKSB7XHJcbiAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0uaXNVc2VyICE9IHRydWUpIHtcclxuICAgICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnZhbHVlLmZpbmRJbmRleCh4ID0+IHggPT0gaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb25kaXRpb247XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -536,7 +536,7 @@ class UcviewgenericComponent {
|
|
|
536
536
|
UcviewgenericComponent.decorators = [
|
|
537
537
|
{ type: Component, args: [{
|
|
538
538
|
selector: 'lib-ucviewgeneric',
|
|
539
|
-
template: "<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\" *ngIf=\"isReady\">\r\n <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\r\n <h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\r\n </div>\r\n <div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\r\n <div class=\"px-3\">\r\n <lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\r\n [panel]=\"ss.subSectionId\">\r\n </lib-ucSubsection>\r\n <div class=\"form-body\" [id]='ss.subSectionId'>\r\n <div class=\"form-group row\">\r\n <div *ngFor=\"let mi of ss?.mainInfo\"\r\n [ngClass]=\"{ 'col-md-6': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\r\n <span\r\n *ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"mi.type != 'switch'\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{mi.label}}</label>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"mi.type == 'switch'\">\r\n <div *ngFor=\"let case of mi?.case\">\r\n <div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{case.result.label}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-6\" [ngClass]=\"{ 'text-left': mi.position == 'left',\r\n 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\r\n <span\r\n *ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\r\n <ng-template #emptyLabel>\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>-</label>\r\n </ng-template>\r\n <ng-template #nonEmptyLabel>\r\n <span *ngIf=\"mi.type == 'text'\">\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\r\n class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </label>\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\r\n class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>-\r\n </label>\r\n </span>\r\n <label *ngIf=\"mi.type == 'currency'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision : '0.2' :'en-US'}} <span *ngIf=\"mi?.IsPrcnt\"> %</span> </label>\r\n <label *ngIf=\"mi.type == 'date'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | date: 'dd-MMM-yyyy'}} </label>\r\n <label *ngIf=\"mi.type == 'link'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a *ngIf=\"!mi?.isFullpath\" [routerLink]=\"genRouterLink(mi.path)\" [target]=\"mi.target\"\r\n [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n <a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\"\r\n (click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n </label>\r\n <label *ngIf=\"mi.type == 'callback'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </a>\r\n </label>\r\n <textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate> {{ viewInfoObjList[i][mi.property] }} </textarea>\r\n <span *ngIf=\"mi.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\r\n <!-- <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\r\n </span>\r\n <span *ngIf=\"mi.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ mi.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"mi.type == 'switch'\">\r\n <span *ngFor=\"let cs of mi?.case\">\r\n <span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\r\n <span class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'text'\">{{ viewInfoObjList[i][cs.result.property]\r\n }}\r\n </span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'decimal'\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'date'\">{{ viewInfoObjList[i][cs.result.property] |\r\n date: 'dd-MMM-yyyy' }}\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'link'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n [queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</span>\r\n </a>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'true'\">Yes</span>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'false'\">No</span>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ cs.result.concat }}\r\n </label>\r\n </span>\r\n </span>\r\n </span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>"
|
|
539
|
+
template: "<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\" *ngIf=\"isReady\">\r\n <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\r\n <h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\r\n </div>\r\n <div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\r\n <div class=\"px-3\">\r\n <lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\r\n [panel]=\"ss.subSectionId\">\r\n </lib-ucSubsection>\r\n <div class=\"form-body\" [id]='ss.subSectionId'>\r\n <div class=\"form-group row\">\r\n <div *ngFor=\"let mi of ss?.mainInfo\"\r\n [ngClass]=\"{ 'col-md-6': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\r\n <span\r\n *ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"mi.type != 'switch'\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{mi.label}}</label>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"mi.type == 'switch'\">\r\n <div *ngFor=\"let case of mi?.case\">\r\n <div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{case.result.label}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-6\" [ngClass]=\"{ 'text-left': mi.position == 'left',\r\n 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\r\n <span\r\n *ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\r\n <ng-template #emptyLabel>\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>-</label>\r\n </ng-template>\r\n <ng-template #nonEmptyLabel>\r\n <span *ngIf=\"mi.type == 'text'\">\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\r\n class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </label>\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\r\n class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>-\r\n </label>\r\n </span>\r\n <label *ngIf=\"mi.type == 'currency'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision : '0.2' :'en-US'}} <span *ngIf=\"mi?.IsPrcnt\"> %</span> </label>\r\n <label *ngIf=\"mi.type == 'date'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | date: (mi?.dateFormat) ? mi?.dateFormat : 'dd-MMM-yyyy'}} </label>\r\n <label *ngIf=\"mi.type == 'link'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a *ngIf=\"!mi?.isFullpath\" [routerLink]=\"genRouterLink(mi.path)\" [target]=\"mi.target\"\r\n [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n <a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\"\r\n (click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n </label>\r\n <label *ngIf=\"mi.type == 'callback'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </a>\r\n </label>\r\n <textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate> {{ viewInfoObjList[i][mi.property] }} </textarea>\r\n <span *ngIf=\"mi.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\r\n <!-- <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\r\n </span>\r\n <span *ngIf=\"mi.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ mi.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"mi.type == 'switch'\">\r\n <span *ngFor=\"let cs of mi?.case\">\r\n <span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\r\n <span class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'text'\">{{ viewInfoObjList[i][cs.result.property]\r\n }}\r\n </span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'decimal'\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'date'\">{{ viewInfoObjList[i][cs.result.property] |\r\n date: 'dd-MMM-yyyy' }}\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'link'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n [queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</span>\r\n </a>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'true'\">Yes</span>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'false'\">No</span>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ cs.result.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'callback'\">\r\n <span\r\n *ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\r\n <ng-template #textCallback>\r\n <span>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</a>\r\n </span>\r\n </ng-template>\r\n <ng-template #iconCallback>\r\n <span>\r\n <a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'success p-0' : cs.result.anchor]\"\r\n (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\r\n <i class=\"font-medium-3 mr-2\"\r\n [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\r\n </i>\r\n <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n {{cs.result.tooltip}}\r\n </span>\r\n </a>\r\n </span>\r\n </ng-template>\r\n </span>\r\n </span>\r\n </span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>"
|
|
540
540
|
}] }
|
|
541
541
|
];
|
|
542
542
|
/** @nocollapse */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adins-ucviewgeneric.js.map","sources":["ng://@adins/ucviewgeneric/lib/ucviewgeneric.service.ts","ng://@adins/ucviewgeneric/lib/model/uc-view-generic-obj.model.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.component.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UcviewgenericService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nexport class UcViewGenericObj {\r\n viewInput: string;\r\n viewEnvironment: string;\r\n navigationConst: any;\r\n ddlEnvironments: Array<EnviObj>;\r\n listEnvironments: Array<EnvisObj>;\r\n whereValue: Array<WhereValueObj>;\r\n\r\n constructor() {\r\n this.viewInput = \"\";\r\n this.viewEnvironment = \"\";\r\n this.ddlEnvironments = new Array<EnviObj>();\r\n this.listEnvironments = new Array<EnvisObj>();\r\n this.whereValue = new Array<WhereValueObj>();\r\n }\r\n}\r\n\r\nexport class EnviObj {\r\n name: string;\r\n environment: string;\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.environment = \"\";\r\n }\r\n}\r\n\r\nexport class WhereValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}\r\n\r\nexport class EnvisObj {\r\n environment: string;\r\n url: string;\r\n\r\n constructor() {\r\n this.environment = \"\";\r\n this.url = \"\";\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EnviObj } from './model/envi-obj.model';\r\nimport { UcViewGenericObj } from './model/uc-view-generic-obj.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CookieService } from 'ngx-cookie';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\n@Component({\r\n selector: 'lib-ucviewgeneric',\r\n templateUrl: './ucviewgeneric.component.html',\r\n styles: []\r\n})\r\nexport class UcviewgenericComponent implements OnInit {\r\n\r\n @Input() viewGenericObj: UcViewGenericObj = new UcViewGenericObj();\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n UserAccess: any = JSON.parse(this.GetCookie(this.cookieService, \"UserAccess\"));\r\n viewList: any = \"\";\r\n getList: any;\r\n viewInfoObjList: any;\r\n isReady: boolean = false;\r\n\r\n constructor(private route: ActivatedRoute, private http: HttpClient, private translateService: TranslateService, private cookieService: CookieService) {\r\n this.route.queryParams.subscribe(params => {\r\n this.getList = params;\r\n });\r\n\r\n this.translateService.setDefaultLang('en');\r\n this.translateService.use(localStorage.getItem('lang') || 'en');\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"viewgeneric\");\r\n this.initiateForm();\r\n }\r\n\r\n initiateForm() {\r\n this.getJSON(this.viewGenericObj.viewInput).subscribe(data => {\r\n this.viewList = data;\r\n this.viewInfoObjList = [];\r\n\r\n for (let j = 0; j < this.viewList.subsection.length; j++) {\r\n this.viewInfoObjList.push(j);\r\n }\r\n\r\n for (let i = 0; i < this.viewList.subsection.length; i++) {\r\n if (this.viewList.subsection[i].querystring != null) {\r\n let queryObj: any;\r\n if (this.viewGenericObj.whereValue.length == 0) {\r\n this.viewList.subsection[i].querystring.whereQuery = (<any>Object).values(this.getList);\r\n } else {\r\n this.viewList.subsection[i].querystring.whereQuery = this.viewGenericObj.whereValue;\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n queryObj = {\r\n querystring: this.viewList.subsection[i].querystring\r\n }\r\n this.http.post(this.viewList.subsection[i].fullpath, queryObj).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"][0];\r\n\r\n for (let y = 0; y < this.viewList.subsection[i].mainInfo.length; y++) {\r\n if (this.viewList.subsection[i].mainInfo[y].propertyList != undefined && this.viewList.subsection[i].mainInfo[y].propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].propertyList;\r\n let concat = \"\";\r\n for (let z = 0; z < propertyList.length; z++) {\r\n concat = concat + propertyList[z].prefix + this.viewInfoObjList[i][propertyList[z].property] + propertyList[z].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].concat = concat;\r\n }\r\n\r\n //switch case\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"switch\"){\r\n for (let z = 0; z < this.viewList.subsection[i].mainInfo[y].case.length; z++) {\r\n let Empty = new Array<boolean>();\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = false;\r\n //check hideIfEmpty\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != null){\r\n if(this.viewList.subsection[i].mainInfo[y].case[z].result.type != \"concat\"){\r\n Empty.push(this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != undefined \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != null \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != \"\" ? false : true);\r\n }else{// type concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n Empty.push(this.viewInfoObjList[i][propertyList[a].property] != undefined \r\n && this.viewInfoObjList[i][propertyList[a].property] != null\r\n && this.viewInfoObjList[i][propertyList[a].property] != \"\" ? false : true);\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n \r\n if(Empty.includes(true) && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty){\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = true;\r\n this.viewList.subsection[i].mainInfo[y].isHide = true;\r\n }\r\n }else{\r\n //concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\" && (this.viewGenericObj.navigationConst != undefined || this.viewGenericObj.navigationConst != null)) {\r\n let tempLink = this.viewGenericObj.navigationConst[this.viewList.subsection[i].mainInfo[y].path];\r\n if (tempLink != undefined && tempLink != null) {\r\n this.viewList.subsection[i].mainInfo[y].path = tempLink;\r\n }\r\n }\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\"\r\n && this.viewGenericObj.listEnvironments != undefined && this.viewGenericObj.listEnvironments.length != 0) {\r\n for (let z = 0; z < this.viewGenericObj.listEnvironments.length; z++) {\r\n if (this.viewList.subsection[i].mainInfo[y].environment == this.viewGenericObj.listEnvironments[z].environment) {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = true;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewGenericObj.listEnvironments[z].url + this.viewList.subsection[i].mainInfo[y].path;\r\n break;\r\n }\r\n }\r\n } else if (this.viewList.subsection[i].mainInfo[y].type == \"link\") {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = false;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewList.subsection[i].mainInfo[y].path;\r\n }\r\n }\r\n this.isReady = true;\r\n },\r\n (error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n this.http.post(this.viewList.subsection[i].fullpath, this.getList).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"];\r\n },\r\n (error) => {\r\n console.log(error);\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n public getJSON(url: string): Observable<any> {\r\n return this.http.get(url);\r\n }\r\n\r\n private GetCookie(cookieService: CookieService, key: string) {\r\n let value = cookieService.get(key);\r\n if (value == undefined || value.trim() == '') return null;\r\n return this.DecryptString(value, \"AdInsFOU12345678\");\r\n }\r\n\r\n private DecryptString(chipperText: string, chipperKey: string) {\r\n if (\r\n chipperKey == undefined || chipperKey.trim() == '' ||\r\n chipperText == undefined || chipperText.trim() == ''\r\n ) return chipperText;\r\n let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\r\n let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\r\n let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, { iv: iv });\r\n let plainText = decrypted.toString(CryptoJS.enc.Utf8);\r\n return plainText;\r\n }\r\n\r\n genAction(viewObj, param) {\r\n let arrList = {};\r\n\r\n for (let i = 0; i < param.length; i++) {\r\n if (viewObj[param[i].type] != undefined || viewObj[param[i].property] != undefined) {\r\n arrList[param[i].type] = viewObj[param[i].property];\r\n } else {\r\n arrList[param[i].type] = param[i].property;\r\n }\r\n }\r\n return arrList;\r\n }\r\n\r\n genRouterLink(urlLink: string) {\r\n let tempLink = urlLink;\r\n if (this.viewGenericObj.navigationConst != undefined && this.viewGenericObj.navigationConst[urlLink] != null) {\r\n tempLink = this.viewGenericObj.navigationConst[urlLink];\r\n }\r\n return tempLink;\r\n }\r\n\r\n redirectFullPath(fullpath: string, param: Object, target: string) {\r\n let queryParam = \"\";\r\n const ListObj = Object.keys(param);\r\n for (let i = 0; i < ListObj.length; i++) {\r\n if (queryParam != \"\") {\r\n queryParam = queryParam + \"&\" + ListObj[i] + \"=\" + param[ListObj[i]];\r\n } else {\r\n queryParam = ListObj[i] + \"=\" + param[ListObj[i]];\r\n }\r\n }\r\n window.open(fullpath + \"?\" + queryParam, target);\r\n }\r\n\r\n callbackFunction(item, key: string = \"\") {\r\n let CBObj = {\r\n ViewObj: item,\r\n Key: key\r\n }\r\n this.callback.emit(CBObj);\r\n }\r\n\r\n switchCase(item, condList) {\r\n let condition = false;\r\n if (!item) return false;\r\n for (let i = 0; i < condList.conditions.length; i++) {\r\n if (condList.conditions[i].restriction == \"EQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] == condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] == this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] != condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] != this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] > condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] > this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] >= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] >= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] < condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] < this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] <= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] <= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } \r\n } else if (condList.conditions[i].restriction == \"IN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NIN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return condition;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UcviewgenericComponent } from './ucviewgeneric.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { UcSubsectionModule } from '@adins/uc-subsection';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@NgModule({\r\n declarations: [UcviewgenericComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n UcSubsectionModule,\r\n TranslateModule.forChild()\r\n ],\r\n exports: [UcviewgenericComponent]\r\n})\r\nexport class UcviewgenericModule { }\r\n"],"names":["CryptoJS.enc","CryptoJS.lib","CryptoJS.AES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adins-ucviewgeneric.js.map","sources":["ng://@adins/ucviewgeneric/lib/ucviewgeneric.service.ts","ng://@adins/ucviewgeneric/lib/model/uc-view-generic-obj.model.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.component.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UcviewgenericService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nexport class UcViewGenericObj {\r\n viewInput: string;\r\n viewEnvironment: string;\r\n navigationConst: any;\r\n ddlEnvironments: Array<EnviObj>;\r\n listEnvironments: Array<EnvisObj>;\r\n whereValue: Array<WhereValueObj>;\r\n\r\n constructor() {\r\n this.viewInput = \"\";\r\n this.viewEnvironment = \"\";\r\n this.ddlEnvironments = new Array<EnviObj>();\r\n this.listEnvironments = new Array<EnvisObj>();\r\n this.whereValue = new Array<WhereValueObj>();\r\n }\r\n}\r\n\r\nexport class EnviObj {\r\n name: string;\r\n environment: string;\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.environment = \"\";\r\n }\r\n}\r\n\r\nexport class WhereValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}\r\n\r\nexport class EnvisObj {\r\n environment: string;\r\n url: string;\r\n\r\n constructor() {\r\n this.environment = \"\";\r\n this.url = \"\";\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EnviObj } from './model/envi-obj.model';\r\nimport { UcViewGenericObj } from './model/uc-view-generic-obj.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CookieService } from 'ngx-cookie';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\n@Component({\r\n selector: 'lib-ucviewgeneric',\r\n templateUrl: './ucviewgeneric.component.html',\r\n styles: []\r\n})\r\nexport class UcviewgenericComponent implements OnInit {\r\n\r\n @Input() viewGenericObj: UcViewGenericObj = new UcViewGenericObj();\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n UserAccess: any = JSON.parse(this.GetCookie(this.cookieService, \"UserAccess\"));\r\n viewList: any = \"\";\r\n getList: any;\r\n viewInfoObjList: any;\r\n isReady: boolean = false;\r\n\r\n constructor(private route: ActivatedRoute, private http: HttpClient, private translateService: TranslateService, private cookieService: CookieService) {\r\n this.route.queryParams.subscribe(params => {\r\n this.getList = params;\r\n });\r\n\r\n this.translateService.setDefaultLang('en');\r\n this.translateService.use(localStorage.getItem('lang') || 'en');\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"viewgeneric\");\r\n this.initiateForm();\r\n }\r\n\r\n initiateForm() {\r\n this.getJSON(this.viewGenericObj.viewInput).subscribe(data => {\r\n this.viewList = data;\r\n this.viewInfoObjList = [];\r\n\r\n for (let j = 0; j < this.viewList.subsection.length; j++) {\r\n this.viewInfoObjList.push(j);\r\n }\r\n\r\n for (let i = 0; i < this.viewList.subsection.length; i++) {\r\n if (this.viewList.subsection[i].querystring != null) {\r\n let queryObj: any;\r\n if (this.viewGenericObj.whereValue.length == 0) {\r\n this.viewList.subsection[i].querystring.whereQuery = (<any>Object).values(this.getList);\r\n } else {\r\n this.viewList.subsection[i].querystring.whereQuery = this.viewGenericObj.whereValue;\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n queryObj = {\r\n querystring: this.viewList.subsection[i].querystring\r\n }\r\n this.http.post(this.viewList.subsection[i].fullpath, queryObj).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"][0];\r\n\r\n for (let y = 0; y < this.viewList.subsection[i].mainInfo.length; y++) {\r\n if (this.viewList.subsection[i].mainInfo[y].propertyList != undefined && this.viewList.subsection[i].mainInfo[y].propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].propertyList;\r\n let concat = \"\";\r\n for (let z = 0; z < propertyList.length; z++) {\r\n concat = concat + propertyList[z].prefix + this.viewInfoObjList[i][propertyList[z].property] + propertyList[z].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].concat = concat;\r\n }\r\n\r\n //switch case\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"switch\"){\r\n for (let z = 0; z < this.viewList.subsection[i].mainInfo[y].case.length; z++) {\r\n let Empty = new Array<boolean>();\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = false;\r\n //check hideIfEmpty\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != null){\r\n if(this.viewList.subsection[i].mainInfo[y].case[z].result.type != \"concat\"){\r\n Empty.push(this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != undefined \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != null \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != \"\" ? false : true);\r\n }else{// type concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n Empty.push(this.viewInfoObjList[i][propertyList[a].property] != undefined \r\n && this.viewInfoObjList[i][propertyList[a].property] != null\r\n && this.viewInfoObjList[i][propertyList[a].property] != \"\" ? false : true);\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n \r\n if(Empty.includes(true) && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty){\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = true;\r\n this.viewList.subsection[i].mainInfo[y].isHide = true;\r\n }\r\n }else{\r\n //concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\" && (this.viewGenericObj.navigationConst != undefined || this.viewGenericObj.navigationConst != null)) {\r\n let tempLink = this.viewGenericObj.navigationConst[this.viewList.subsection[i].mainInfo[y].path];\r\n if (tempLink != undefined && tempLink != null) {\r\n this.viewList.subsection[i].mainInfo[y].path = tempLink;\r\n }\r\n }\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\"\r\n && this.viewGenericObj.listEnvironments != undefined && this.viewGenericObj.listEnvironments.length != 0) {\r\n for (let z = 0; z < this.viewGenericObj.listEnvironments.length; z++) {\r\n if (this.viewList.subsection[i].mainInfo[y].environment == this.viewGenericObj.listEnvironments[z].environment) {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = true;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewGenericObj.listEnvironments[z].url + this.viewList.subsection[i].mainInfo[y].path;\r\n break;\r\n }\r\n }\r\n } else if (this.viewList.subsection[i].mainInfo[y].type == \"link\") {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = false;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewList.subsection[i].mainInfo[y].path;\r\n }\r\n }\r\n this.isReady = true;\r\n },\r\n (error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n this.http.post(this.viewList.subsection[i].fullpath, this.getList).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"];\r\n },\r\n (error) => {\r\n console.log(error);\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n public getJSON(url: string): Observable<any> {\r\n return this.http.get(url);\r\n }\r\n\r\n private GetCookie(cookieService: CookieService, key: string) {\r\n let value = cookieService.get(key);\r\n if (value == undefined || value.trim() == '') return null;\r\n return this.DecryptString(value, \"AdInsFOU12345678\");\r\n }\r\n\r\n private DecryptString(chipperText: string, chipperKey: string) {\r\n if (\r\n chipperKey == undefined || chipperKey.trim() == '' ||\r\n chipperText == undefined || chipperText.trim() == ''\r\n ) return chipperText;\r\n let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\r\n let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\r\n let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, { iv: iv });\r\n let plainText = decrypted.toString(CryptoJS.enc.Utf8);\r\n return plainText;\r\n }\r\n\r\n genAction(viewObj, param) {\r\n let arrList = {};\r\n\r\n for (let i = 0; i < param.length; i++) {\r\n if (viewObj[param[i].type] != undefined || viewObj[param[i].property] != undefined) {\r\n arrList[param[i].type] = viewObj[param[i].property];\r\n } else {\r\n arrList[param[i].type] = param[i].property;\r\n }\r\n }\r\n return arrList;\r\n }\r\n\r\n genRouterLink(urlLink: string) {\r\n let tempLink = urlLink;\r\n if (this.viewGenericObj.navigationConst != undefined && this.viewGenericObj.navigationConst[urlLink] != null) {\r\n tempLink = this.viewGenericObj.navigationConst[urlLink];\r\n }\r\n return tempLink;\r\n }\r\n\r\n redirectFullPath(fullpath: string, param: Object, target: string) {\r\n let queryParam = \"\";\r\n const ListObj = Object.keys(param);\r\n for (let i = 0; i < ListObj.length; i++) {\r\n if (queryParam != \"\") {\r\n queryParam = queryParam + \"&\" + ListObj[i] + \"=\" + param[ListObj[i]];\r\n } else {\r\n queryParam = ListObj[i] + \"=\" + param[ListObj[i]];\r\n }\r\n }\r\n window.open(fullpath + \"?\" + queryParam, target);\r\n }\r\n\r\n callbackFunction(item, key: string = \"\") {\r\n let CBObj = {\r\n ViewObj: item,\r\n Key: key\r\n }\r\n this.callback.emit(CBObj);\r\n }\r\n\r\n switchCase(item, condList) {\r\n let condition = false;\r\n if (!item) return false;\r\n for (let i = 0; i < condList.conditions.length; i++) {\r\n if (condList.conditions[i].restriction == \"EQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] == condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] == this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] != condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] != this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] > condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] > this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] >= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] >= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] < condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] < this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] <= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] <= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } \r\n } else if (condList.conditions[i].restriction == \"IN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NIN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return condition;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UcviewgenericComponent } from './ucviewgeneric.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { UcSubsectionModule } from '@adins/uc-subsection';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@NgModule({\r\n declarations: [UcviewgenericComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n UcSubsectionModule,\r\n TranslateModule.forChild()\r\n ],\r\n exports: [UcviewgenericComponent]\r\n})\r\nexport class UcviewgenericModule { }\r\n"],"names":["CryptoJS.enc","CryptoJS.lib","CryptoJS.AES"],"mappings":"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"}
|