mmhglobal-dynamicform 1.3.13 → 2.0.0-beta.0

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.
Files changed (115) hide show
  1. package/esm2020/lib/animations/component-animations.mjs +12 -0
  2. package/esm2020/lib/components/buttonfieldbase.component.mjs +62 -0
  3. package/esm2020/lib/components/containerfieldbase.component.mjs +42 -0
  4. package/esm2020/lib/components/datalistingfieldbase.component.mjs +138 -0
  5. package/esm2020/lib/components/fieldbase.component.mjs +90 -0
  6. package/esm2020/lib/components/inputfieldbase.component.mjs +78 -0
  7. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +13 -11
  8. package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +69 -0
  9. package/esm2020/lib/input-error-message/input-error-message.component.mjs +33 -0
  10. package/esm2020/lib/kcard/kcard.component.mjs +84 -0
  11. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +53 -12
  12. package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +18 -0
  13. package/esm2020/lib/services/component-error-handler.service.mjs +84 -0
  14. package/esm2020/lib/services/main.service.mjs +171 -73
  15. package/esm2020/lib/services/zcomponent.debug.service.mjs +17 -8
  16. package/esm2020/lib/services/zcomponent.service.mjs +133 -9
  17. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +15 -23
  18. package/esm2020/lib/uicontainer/uicontainer.component.mjs +2 -2
  19. package/esm2020/lib/uicontent/uicontent.component.mjs +21 -9
  20. package/esm2020/lib/uiheader/uiheader.component.mjs +61 -28
  21. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +3 -3
  22. package/esm2020/lib/uipage/uipage.component.mjs +41 -26
  23. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +2 -2
  24. package/esm2020/lib/zbullet/zbullet.component.mjs +3 -2
  25. package/esm2020/lib/zbuttons/zbuttons.component.mjs +45 -91
  26. package/esm2020/lib/zcard/zcard.component.mjs +13 -60
  27. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +14 -159
  28. package/esm2020/lib/zchip/zchip.component.mjs +34 -64
  29. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +4 -3
  30. package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -3
  31. package/esm2020/lib/zdatetime/zdatetime.component.mjs +22 -74
  32. package/esm2020/lib/zdiv/zdiv.component.mjs +63 -40
  33. package/esm2020/lib/zdiv/zdiv.pipe.mjs +2 -2
  34. package/esm2020/lib/zform/zform.component.mjs +9 -7
  35. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +5 -3
  36. package/esm2020/lib/zgauge/zgauge.component.mjs +34 -70
  37. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +32 -30
  38. package/esm2020/lib/zgrid/zgrid.component.mjs +243 -135
  39. package/esm2020/lib/zimg/zimg.component.mjs +44 -108
  40. package/esm2020/lib/zinput-container/zinput-container.component.mjs +63 -0
  41. package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +120 -0
  42. package/esm2020/lib/zkcard/zkcard.component.mjs +2 -2
  43. package/esm2020/lib/zlabel/zlabel.component.mjs +18 -94
  44. package/esm2020/lib/zmfb/zmfb.component.mjs +70 -91
  45. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +15 -11
  46. package/esm2020/lib/zmodal/zmodal.component.mjs +14 -10
  47. package/esm2020/lib/znumeric/znumeric.component.mjs +18 -94
  48. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +35 -87
  49. package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +59 -0
  50. package/esm2020/lib/zreport/zreport.component.mjs +25 -27
  51. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +39 -194
  52. package/esm2020/lib/ztab/ztab.component.mjs +17 -45
  53. package/esm2020/lib/ztab/ztab.pipe.mjs +6 -4
  54. package/esm2020/lib/ztext/ztext.component.mjs +20 -180
  55. package/esm2020/lib/ztextarea/ztextarea.component.mjs +23 -101
  56. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -2
  57. package/esm2020/lib/ztree/ztree.component.mjs +25 -41
  58. package/esm2020/lib/ztreelist/ztreelist.component.mjs +104 -143
  59. package/esm2020/lib/zudf/zudf.component.mjs +12 -8
  60. package/esm2020/lib/zupload/zupload.component.mjs +18 -39
  61. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +45 -77
  62. package/esm2020/public-api.mjs +15 -2
  63. package/fesm2015/mmhglobal-dynamicform.mjs +4491 -4359
  64. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
  65. package/fesm2020/mmhglobal-dynamicform.mjs +4490 -4366
  66. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
  67. package/lib/animations/component-animations.d.ts +1 -0
  68. package/lib/components/buttonfieldbase.component.d.ts +18 -0
  69. package/lib/components/containerfieldbase.component.d.ts +19 -0
  70. package/lib/components/datalistingfieldbase.component.d.ts +30 -0
  71. package/lib/components/fieldbase.component.d.ts +30 -0
  72. package/lib/components/inputfieldbase.component.d.ts +19 -0
  73. package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +16 -0
  74. package/lib/input-error-message/input-error-message.component.d.ts +15 -0
  75. package/lib/kcard/kcard.component.d.ts +21 -0
  76. package/lib/mmhglobal-dynamicform.module.d.ts +40 -32
  77. package/lib/pipe/htmlSanitize.pipe.d.ts +10 -0
  78. package/lib/services/component-error-handler.service.d.ts +14 -0
  79. package/lib/services/main.service.d.ts +23 -5
  80. package/lib/services/zcomponent.debug.service.d.ts +4 -1
  81. package/lib/services/zcomponent.service.d.ts +20 -4
  82. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +4 -3
  83. package/lib/uicontent/uicontent.component.d.ts +6 -2
  84. package/lib/uiheader/uiheader.component.d.ts +13 -9
  85. package/lib/zbuttons/zbuttons.component.d.ts +11 -20
  86. package/lib/zcard/zcard.component.d.ts +6 -20
  87. package/lib/zcheckbox/zcheckbox.component.d.ts +6 -36
  88. package/lib/zchip/zchip.component.d.ts +7 -16
  89. package/lib/zdatetime/zdatetime.component.d.ts +6 -14
  90. package/lib/zdiv/zdiv.component.d.ts +11 -18
  91. package/lib/zformcontrol/zformcontrol.component.d.ts +2 -1
  92. package/lib/zgauge/zgauge.component.d.ts +11 -14
  93. package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
  94. package/lib/zgrid/zgrid.component.d.ts +26 -27
  95. package/lib/zimg/zimg.component.d.ts +12 -31
  96. package/lib/zinput-container/zinput-container.component.d.ts +26 -0
  97. package/lib/zinput-container/zinput-container.pipe.d.ts +20 -0
  98. package/lib/zlabel/zlabel.component.d.ts +6 -25
  99. package/lib/zmfb/zmfb.component.d.ts +12 -20
  100. package/lib/zmodal/zmodal-mobile.component.d.ts +4 -1
  101. package/lib/zmodal/zmodal.component.d.ts +4 -1
  102. package/lib/znumeric/znumeric.component.d.ts +7 -29
  103. package/lib/zpostselectinput/zpostselectinput.component.d.ts +9 -19
  104. package/lib/zprogressbar/zprogressbar.component.d.ts +28 -0
  105. package/lib/zreport/zreport.component.d.ts +8 -11
  106. package/lib/zselectmultiple/zselectmultiple.component.d.ts +10 -35
  107. package/lib/ztab/ztab.component.d.ts +6 -19
  108. package/lib/ztext/ztext.component.d.ts +7 -35
  109. package/lib/ztextarea/ztextarea.component.d.ts +9 -27
  110. package/lib/ztree/ztree.component.d.ts +6 -12
  111. package/lib/ztreelist/ztreelist.component.d.ts +17 -27
  112. package/lib/zupload/zupload.component.d.ts +6 -13
  113. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +6 -20
  114. package/package.json +1 -1
  115. package/public-api.d.ts +14 -1
@@ -0,0 +1,84 @@
1
+ /********** Angular **********/
2
+ import { Injectable } from '@angular/core';
3
+ import { ZComponentHelper } from 'mmhglobal-zcore';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "mmhglobal-zcore";
6
+ export class ComponentErrorHandlerService {
7
+ constructor(alertService) {
8
+ this.alertService = alertService;
9
+ }
10
+ showFormGroupErrorMessage(group, formGroup) {
11
+ formGroup = formGroup || group.form;
12
+ const errorMessage = this.getErrorMessageForInvalidInput(group, formGroup);
13
+ this.alertService.showOkay('Form validation failed', errorMessage.join("<br/>"), ['col-4']);
14
+ console.warn("Form Validation got error(s):", errorMessage);
15
+ }
16
+ getErrorMessageForInvalidInput(group, formGroup, controlName) {
17
+ formGroup = formGroup || group.form;
18
+ if (controlName) {
19
+ return this.extractErrorMessageFromControl(formGroup, controlName, group);
20
+ }
21
+ const fildsErrorMsgArr = [];
22
+ Object.keys(formGroup.controls).forEach(key => {
23
+ const err = this.extractErrorMessageFromControl(formGroup, key, group);
24
+ if (err && err.length > 0) {
25
+ fildsErrorMsgArr.push(err);
26
+ }
27
+ });
28
+ return fildsErrorMsgArr;
29
+ }
30
+ extractErrorMessageFromControl(formGroup, key, group) {
31
+ const errorMsgArr = [];
32
+ const control = formGroup.get(key);
33
+ const controlErrors = control?.errors;
34
+ if (control && controlErrors) {
35
+ const errorTypes = Object.keys(controlErrors);
36
+ errorTypes.forEach(errorType => {
37
+ const err = this.getErrorMessageByErrorType(errorType, key, group.fields, controlErrors);
38
+ if (err && err.length > 0) {
39
+ errorMsgArr.push(err);
40
+ }
41
+ });
42
+ }
43
+ return errorMsgArr;
44
+ }
45
+ getErrorMessageByErrorType(errorType, controlName, fields, errorDetail) {
46
+ const field = ZComponentHelper.getFieldFromFieldsByValue(fields, controlName);
47
+ switch (errorType) {
48
+ case 'required':
49
+ return `${this.getErrorMsgAction_Required(field.Type)} the ${ZComponentHelper.getFieldLabel(fields, controlName)}`;
50
+ case 'minlength':
51
+ return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be more than ${errorDetail[errorType].requiredLength} characters`;
52
+ case 'maxlength':
53
+ return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be less than ${errorDetail[errorType].requiredLength} characters`;
54
+ case 'email':
55
+ return `Enter a valid email address for ${ZComponentHelper.getFieldLabel(fields, controlName)}`;
56
+ case 'min':
57
+ return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be more than ${errorDetail[errorType].min}`;
58
+ case 'max':
59
+ return `${ZComponentHelper.getFieldLabel(fields, controlName)} must be less than ${errorDetail[errorType].max}`;
60
+ default:
61
+ console.error(`Field Error is not properly handled : ${ZComponentHelper.getFieldLabel(fields, controlName)}`);
62
+ return `Invalid Field: ${ZComponentHelper.getFieldLabel(fields, controlName)}`;
63
+ }
64
+ }
65
+ getErrorMsgAction_Required(type) {
66
+ switch (type) {
67
+ case 'zuiselectmultiple':
68
+ case 'zuiselectmultiple_button':
69
+ case 'select':
70
+ return "Choose";
71
+ default:
72
+ return "Enter";
73
+ }
74
+ }
75
+ }
76
+ ComponentErrorHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComponentErrorHandlerService, deps: [{ token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ ComponentErrorHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComponentErrorHandlerService, providedIn: 'root' });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComponentErrorHandlerService, decorators: [{
79
+ type: Injectable,
80
+ args: [{
81
+ providedIn: 'root',
82
+ }]
83
+ }], ctorParameters: function () { return [{ type: i1.AlertService }]; } });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWVycm9yLWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3NlcnZpY2VzL2NvbXBvbmVudC1lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUtuRCxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUksQ0FBQztJQUU1Qyx5QkFBeUIsQ0FBQyxLQUFhLEVBQUUsU0FBcUI7UUFDbkUsU0FBUyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDNUYsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sOEJBQThCLENBQUMsS0FBYSxFQUFFLFNBQXFCLEVBQUUsV0FBb0I7UUFDOUYsU0FBUyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXBDLElBQUksV0FBVyxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzRTtRQUVELE1BQU0s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QUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RyxPQUFPLGtCQUFrQixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7U0FDbEY7SUFDSCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsSUFBWTtRQUM3QyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssbUJBQW1CLENBQUM7WUFDekIsS0FBSywwQkFBMEIsQ0FBQztZQUNoQyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEI7Z0JBQ0UsT0FBTyxPQUFPLENBQUM7U0FDbEI7SUFDSCxDQUFDOzswSEE1RVUsNEJBQTRCOzhIQUE1Qiw0QkFBNEIsY0FGM0IsTUFBTTs0RkFFUCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBaRmllbGQsIFpHcm91cCB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRIZWxwZXIgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVycm9ySGFuZGxlclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHVibGljIHNob3dGb3JtR3JvdXBFcnJvck1lc3NhZ2UoZ3JvdXA6IFpHcm91cCwgZm9ybUdyb3VwPzogRm9ybUdyb3VwKSB7XHJcbiAgICBmb3JtR3JvdXAgPSBmb3JtR3JvdXAgfHwgZ3JvdXAuZm9ybTtcclxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlRm9ySW52YWxpZElucHV0KGdyb3VwLCBmb3JtR3JvdXApO1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd09rYXkoJ0Zvcm0gdmFsaWRhdGlvbiBmYWlsZWQnLCBlcnJvck1lc3NhZ2Uuam9pbihcIjxici8+XCIpLCBbJ2NvbC00J10pO1xyXG4gICAgY29uc29sZS53YXJuKFwiRm9ybSBWYWxpZGF0aW9uIGdvdCBlcnJvcihzKTpcIiwgZXJyb3JNZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRFcnJvck1lc3NhZ2VGb3JJbnZhbGlkSW5wdXQoZ3JvdXA6IFpHcm91cCwgZm9ybUdyb3VwPzogRm9ybUdyb3VwLCBjb250cm9sTmFtZT86IHN0cmluZyk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgZm9ybUdyb3VwID0gZm9ybUdyb3VwIHx8IGdyb3VwLmZvcm07XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RFcnJvck1lc3NhZ2VGcm9tQ29udHJvbChmb3JtR3JvdXAsIGNvbnRyb2xOYW1lLCBncm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsZHNFcnJvck1zZ0FyciA9IFtdO1xyXG4gICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGNvbnN0IGVyciA9IHRoaXMuZXh0cmFjdEVycm9yTWVzc2FnZUZyb21Db250cm9sKGZvcm1Hcm91cCwga2V5LCBncm91cCk7XHJcbiAgICAgIGlmIChlcnIgJiYgZXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmaWxkc0Vycm9yTXNnQXJyLnB1c2goZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmlsZHNFcnJvck1zZ0FycjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEVycm9yTWVzc2FnZUZyb21Db250cm9sKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBrZXk6IHN0cmluZywgZ3JvdXA6IFpHcm91cCk6IEFycmF5PGFueT4ge1xyXG4gICAgY29uc3QgZXJyb3JNc2dBcnIgPSBbXTtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGtleSk7XHJcbiAgICBjb25zdCBjb250cm9sRXJyb3JzID0gY29udHJvbD8uZXJyb3JzO1xyXG5cclxuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2xFcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JUeXBlcyA9IE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpO1xyXG4gICAgICBlcnJvclR5cGVzLmZvckVhY2goZXJyb3JUeXBlID0+IHtcclxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLmdldEVycm9yTWVzc2FnZUJ5RXJyb3JUeXBlKGVycm9yVHlwZSwga2V5LCBncm91cC5maWVsZHMsIGNvbnRyb2xFcnJvcnMpO1xyXG4gICAgICAgIGlmIChlcnIgJiYgZXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGVycm9yTXNnQXJyLnB1c2goZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yTXNnQXJyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2VCeUVycm9yVHlwZShlcnJvclR5cGU6IGFueSwgY29udHJvbE5hbWU6IHN0cmluZywgZmllbGRzOiBaRmllbGRbXSwgZXJyb3JEZXRhaWw6IGFueSkge1xyXG4gICAgY29uc3QgZmllbGQgPSBaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkRnJvbUZpZWxkc0J5VmFsdWUoZmllbGRzLCBjb250cm9sTmFtZSk7XHJcbiAgICBzd2l0Y2ggKGVycm9yVHlwZSkge1xyXG4gICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0RXJyb3JNc2dBY3Rpb25fUmVxdWlyZWQoZmllbGQuVHlwZSl9IHRoZSAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX1gO1xyXG4gICAgICBjYXNlICdtaW5sZW5ndGgnOlxyXG4gICAgICAgIHJldHVybiBgJHtaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkTGFiZWwoZmllbGRzLCBjb250cm9sTmFtZSl9IG11c3QgYmUgbW9yZSB0aGFuICR7ZXJyb3JEZXRhaWxbZXJyb3JUeXBlXS5yZXF1aXJlZExlbmd0aH0gY2hhcmFjdGVyc2A7XHJcbiAgICAgIGNhc2UgJ21heGxlbmd0aCc6XHJcbiAgICAgICAgcmV0dXJuIGAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX0gbXVzdCBiZSBsZXNzIHRoYW4gJHtlcnJvckRldGFpbFtlcnJvclR5cGVdLnJlcXVpcmVkTGVuZ3RofSBjaGFyYWN0ZXJzYDtcclxuICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgIHJldHVybiBgRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIGZvciAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX1gO1xyXG4gICAgICBjYXNlICdtaW4nOlxyXG4gICAgICAgIHJldHVybiBgJHtaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkTGFiZWwoZmllbGRzLCBjb250cm9sTmFtZSl9IG11c3QgYmUgbW9yZSB0aGFuICR7ZXJyb3JEZXRhaWxbZXJyb3JUeXBlXS5taW59YDtcclxuICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICByZXR1cm4gYCR7WkNvbXBvbmVudEhlbHBlci5nZXRGaWVsZExhYmVsKGZpZWxkcywgY29udHJvbE5hbWUpfSBtdXN0IGJlIGxlc3MgdGhhbiAke2Vycm9yRGV0YWlsW2Vycm9yVHlwZV0ubWF4fWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmllbGQgRXJyb3IgaXMgbm90IHByb3Blcmx5IGhhbmRsZWQgOiAke1pDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRMYWJlbChmaWVsZHMsIGNvbnRyb2xOYW1lKX1gKTtcclxuICAgICAgICByZXR1cm4gYEludmFsaWQgRmllbGQ6ICR7WkNvbXBvbmVudEhlbHBlci5nZXRGaWVsZExhYmVsKGZpZWxkcywgY29udHJvbE5hbWUpfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVycm9yTXNnQWN0aW9uX1JlcXVpcmVkKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnenVpc2VsZWN0bXVsdGlwbGUnOlxyXG4gICAgICBjYXNlICd6dWlzZWxlY3RtdWx0aXBsZV9idXR0b24nOlxyXG4gICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBcIkNob29zZVwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBcIkVudGVyXCI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==