@wavemaker/app-ng-runtime 12.0.0-next.44004 → 12.0.0-next.45001

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 (105) hide show
  1. app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +2 -0
  2. app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +2 -0
  3. app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +2 -0
  4. app-ng-runtime/build-task/bundles/index.umd.js +477 -404
  5. app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +15 -0
  6. app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +10 -0
  7. app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +26 -0
  8. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +3 -2
  9. app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +14 -2
  10. app-ng-runtime/build-task/esm2022/public_api.mjs +4 -1
  11. app-ng-runtime/build-task/fesm2022/index.mjs +479 -405
  12. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  13. app-ng-runtime/build-task/public_api.d.ts +3 -0
  14. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +275 -0
  15. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +14 -0
  16. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
  17. app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +20 -0
  18. app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +1 -0
  19. app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +19 -0
  20. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +11 -0
  21. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +73 -0
  22. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +9 -0
  23. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +70 -0
  24. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +8 -0
  25. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +68 -0
  26. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +39 -0
  27. app-ng-runtime/components/advanced/custom/esm2022/index.mjs +5 -0
  28. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +5 -0
  29. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +256 -0
  30. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -0
  31. app-ng-runtime/components/advanced/custom/index.d.ts +5 -0
  32. app-ng-runtime/components/advanced/custom/package.json +23 -0
  33. app-ng-runtime/components/advanced/custom/public_api.d.ts +4 -0
  34. app-ng-runtime/components/base/bundles/index.umd.js +65 -9
  35. app-ng-runtime/components/base/components.module.d.ts +12 -11
  36. app-ng-runtime/components/base/esm2022/components.module.mjs +5 -1
  37. app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
  38. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +28 -10
  39. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +39 -0
  40. app-ng-runtime/components/base/fesm2022/index.mjs +65 -10
  41. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  42. app-ng-runtime/components/base/public_api.d.ts +1 -0
  43. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +9 -3
  44. app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +14 -0
  45. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
  46. app-ng-runtime/components/basic/default/bundles/index.umd.js +5 -4
  47. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +6 -5
  48. app-ng-runtime/components/basic/default/fesm2022/index.mjs +5 -4
  49. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  50. app-ng-runtime/components/basic/progress/bundles/index.umd.js +3 -2
  51. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +4 -3
  52. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +3 -2
  53. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  54. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -0
  55. app-ng-runtime/components/data/form/bundles/index.umd.js +4 -3
  56. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -2
  57. app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +5 -3
  58. app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -3
  59. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  60. app-ng-runtime/components/input/default/bundles/index.umd.js +46 -53
  61. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +2 -3
  62. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +44 -53
  63. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -1
  64. app-ng-runtime/components/input/default/fesm2022/index.mjs +47 -54
  65. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/input/default/select/select.component.d.ts +1 -2
  67. app-ng-runtime/components/input/epoch/bundles/index.umd.js +19 -7
  68. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  69. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +9 -3
  70. app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +8 -2
  71. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +3 -3
  72. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +3 -3
  73. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +19 -7
  74. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  75. app-ng-runtime/core/bundles/index.umd.js +10 -0
  76. app-ng-runtime/core/enums/enums.d.ts +2 -1
  77. app-ng-runtime/core/esm2022/enums/enums.mjs +2 -1
  78. app-ng-runtime/core/esm2022/types/types.mjs +4 -1
  79. app-ng-runtime/core/esm2022/utils/build-utils.mjs +6 -1
  80. app-ng-runtime/core/fesm2022/index.mjs +10 -1
  81. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  82. app-ng-runtime/core/types/types.d.ts +5 -1
  83. app-ng-runtime/package.json +1 -1
  84. app-ng-runtime/runtime/base/bundles/index.umd.js +254 -4
  85. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +71 -0
  86. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +253 -0
  87. app-ng-runtime/runtime/base/esm2022/public_api.mjs +2 -1
  88. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +6 -1
  89. app-ng-runtime/runtime/base/esm2022/types/types.mjs +2 -1
  90. app-ng-runtime/runtime/base/fesm2022/index.mjs +251 -1
  91. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  92. app-ng-runtime/runtime/base/public_api.d.ts +1 -0
  93. app-ng-runtime/runtime/base/runtime-base.module.d.ts +9 -8
  94. app-ng-runtime/runtime/base/types/types.d.ts +2 -1
  95. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +26 -9
  96. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +5 -2
  97. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +22 -7
  98. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +25 -7
  99. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  100. app-ng-runtime/scripts/datatable/datatable.js +1 -0
  101. app-ng-runtime/transpiler/bundles/index.umd.js +5 -0
  102. app-ng-runtime/transpiler/esm2022/build.mjs +4 -1
  103. app-ng-runtime/transpiler/esm2022/imports.mjs +3 -1
  104. app-ng-runtime/transpiler/fesm2022/index.mjs +5 -0
  105. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
@@ -29,8 +29,10 @@ export class LiveFormDirective {
29
29
  this.savePrevDataValues();
30
30
  }, 250);
31
31
  // If parent live table is present and this form is first child of live table, set this form instance on livetable
32
- if (liveTable && !this.form.parentForm) {
33
- this.form._liveTableParent = liveTable;
32
+ if (liveTable) {
33
+ if (!this.form.parentForm) {
34
+ this.form._liveTableParent = liveTable;
35
+ }
34
36
  this.form.isLayoutDialog = liveTable.isLayoutDialog;
35
37
  liveTable.onFormReady(this.form);
36
38
  }
@@ -492,4 +494,4 @@ export class LiveFormDirective {
492
494
  type: HostListener,
493
495
  args: ['keydown', ['$event']]
494
496
  }] }); })();
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2Zvcm0vc3JjL2xpdmUtZm9ybS9saXZlLWZvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEwsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVNLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBSWxELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RILE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQ3ZCLElBQUksR0FB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WTtvRUFoQmxCLGlCQUFpQjs0R0FBakIsNEJBQ1Q7Ozt1RkFEUyxpQkFBaUI7Y0FIN0IsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2FBQzNCOztzQkFhUSxJQUFJOztzQkFBSSxNQUFNO3VCQUFDLGFBQWE7O3NCQUM1QixRQUFROztzQkFHUixTQUFTO3VCQUFDLFlBQVk7d0JBVFUsZ0JBQWdCO2tCQUFwRCxZQUFZO21CQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0LCBPcHRpb25hbCwgU2VsZiwgQXR0cmlidXRlLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgJGFwcERpZ2VzdCwgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBEYXRhU291cmNlLCBEYXRhVHlwZSwgZGVib3VuY2UsIGdldENsb25lZE9iamVjdCwgZ2V0RmlsZXMsIGdldFZhbGlkRGF0ZU9iamVjdCwgaXNEYXRlVGltZVR5cGUsIGlzRGVmaW5lZCwgaXNFbXB0eU9iamVjdCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IEFMTEZJRUxEUywgYXBwbHlGaWx0ZXJPbkZpZWxkLCBmZXRjaFJlbGF0ZWRGaWVsZERhdGEsIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsIGlzRGF0YVNldFdpZGdldCwgTGl2ZV9PcGVyYXRpb25zLCBwYXJzZVZhbHVlQnlUeXBlLCBwZXJmb3JtRGF0YU9wZXJhdGlvbiwgVG9EYXRlUGlwZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgTGl2ZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9saXZlLXRhYmxlJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJMaXZlRm9ybVByb3BzIH0gZnJvbSAnLi4vZm9ybS5wcm9wcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbmNvbnN0IGlzVGltZVR5cGUgPSBmaWVsZCA9PiBmaWVsZC53aWRnZXR0eXBlID09PSBEYXRhVHlwZS5USU1FIHx8IChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5USU1FICYmICFmaWVsZC53aWRnZXR0eXBlKTtcbmNvbnN0IGdldFZhbGlkVGltZSA9IHZhbCA9PiB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgICBjb25zdCBkYXRlID0gKG5ldyBEYXRlKCkpLnRvRGF0ZVN0cmluZygpO1xuICAgICAgICByZXR1cm4gKG5ldyBEYXRlKGAke2RhdGV9ICR7dmFsfWApKS5nZXRUaW1lKCk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bUxpdmVGb3JtXSdcbn0pXG5leHBvcnQgY2xhc3MgTGl2ZUZvcm1EaXJlY3RpdmUge1xuICAgIHN0YXRpYyAgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJMaXZlRm9ybVByb3BzKCk7XG4gICAgcHJpdmF0ZSBfdHJpZ2dlcmVkQnlVc2VyOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RlYm91bmNlZFNhdmVQcmV2RGF0YVZhbHVlcyA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlUHJldkRhdGFWYWx1ZXMoKTtcbiAgICB9LCAyNTApO1xuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlcmVkQnlVc2VyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKSBASW5qZWN0KEZvcm1Db21wb25lbnQpIHByaXZhdGUgZm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgbGl2ZVRhYmxlOiBMaXZlVGFibGVDb21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBkYXRlUGlwZTogVG9EYXRlUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Zvcm1sYXlvdXQnKSBmb3JtbGF5b3V0OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgLy8gSWYgcGFyZW50IGxpdmUgdGFibGUgaXMgcHJlc2VudCBhbmQgdGhpcyBmb3JtIGlzIGZpcnN0IGNoaWxkIG9mIGxpdmUgdGFibGUsIHNldCB0aGlzIGZvcm0gaW5zdGFuY2Ugb24gbGl2ZXRhYmxlXG4gICAgICAgIGlmIChsaXZlVGFibGUgJiYgIXRoaXMuZm9ybS5wYXJlbnRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudCA9IGxpdmVUYWJsZTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5pc0xheW91dERpYWxvZyA9IGxpdmVUYWJsZS5pc0xheW91dERpYWxvZztcbiAgICAgICAgICAgIGxpdmVUYWJsZS5vbkZvcm1SZWFkeSh0aGlzLmZvcm0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmlzTGF5b3V0RGlhbG9nID0gZm9ybWxheW91dCA9PT0gJ2RpYWxvZyc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ1VEIG9wZXJhdGlvbnNcbiAgICAgICAgZm9ybS5jYW5jZWwgPSB0aGlzLmNhbmNlbC5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnJlc2V0ID0gdGhpcy5yZXNldC5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmRlbGV0ZSA9IHRoaXMuZGVsZXRlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc2F2ZSA9IHRoaXMuc2F2ZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnNhdmVBbmROZXcgPSB0aGlzLnNhdmVBbmROZXcuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5zYXZlQW5kVmlldyA9IHRoaXMuc2F2ZUFuZFZpZXcuYmluZCh0aGlzKTtcblxuICAgICAgICBmb3JtLnNldFByaW1hcnlLZXkgPSB0aGlzLnNldFByaW1hcnlLZXkuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5jb25zdHJ1Y3REYXRhT2JqZWN0ID0gdGhpcy5jb25zdHJ1Y3REYXRhT2JqZWN0LmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uY2hhbmdlRGF0YU9iamVjdCA9IHRoaXMuc2V0Rm9ybURhdGEuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5zZXRGb3JtRGF0YSA9IHRoaXMuc2V0Rm9ybURhdGEuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5maW5kT3BlcmF0aW9uVHlwZSA9IHRoaXMuZmluZE9wZXJhdGlvblR5cGUuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5jbGVhckRhdGEgPSB0aGlzLmNsZWFyRGF0YS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLm9uRmllbGREZWZhdWx0VmFsdWVDaGFuZ2UgPSB0aGlzLm9uRmllbGREZWZhdWx0VmFsdWVDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5vbkRhdGFTb3VyY2VDaGFuZ2UgPSB0aGlzLm9uRGF0YVNvdXJjZUNoYW5nZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLm9uRmllbGRWYWx1ZUNoYW5nZSA9IHRoaXMub25GaWVsZFZhbHVlQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc3VibWl0Rm9ybSA9IHRoaXMuc3VibWl0Rm9ybS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmZvcm1fcmVnaXN0ZXJGb3JtRmllbGRzID0gZm9ybS5yZWdpc3RlckZvcm1GaWVsZHM7XG4gICAgICAgIGZvcm0ucmVnaXN0ZXJGb3JtRmllbGRzID0gdGhpcy5yZWdpc3RlckZvcm1GaWVsZHMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKlxuICAgIFdNUzoxODU4M1xuICAgIE92ZXJyaWRpbmcgJ3JlZ2lzdGVyRm9ybUZpZWxkcycgZm9yIGxpdmVGb3JtcyxcbiAgICBPbiBFYWNoIGZpZWxkIGFkZGVkLCBjaGVjayBpZiB0aGUgZGF0YVNvdXJjZSBpcyB1cGRhdGVkIG9yIG5vdFxuICAgIGlmIHRoZSBmaWVsZCBpcyBhZGRlZCBhZnRlciB0aGUgZGF0YVNvdXJjZSBpcyB1cGRhdGVkIGF0IExpdmVGb3JtLCByZXRyaWdnZXJcbiAgICAqL1xuICAgIHJlZ2lzdGVyRm9ybUZpZWxkcyhmb3JtRmllbGQpIHtcbiAgICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZm9ybS5nZXRGb3JtRmllbGRzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtX3JlZ2lzdGVyRm9ybUZpZWxkcyhmb3JtRmllbGQpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLmlzRGF0YVNvdXJjZVVwZGF0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpZWxkT25EYXRhU291cmNlQ2hhbmdlKGZvcm1GaWVsZCwgZm9ybUZpZWxkcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfdXBkYXRlRmllbGRPbkRhdGFTb3VyY2VDaGFuZ2UoZmllbGQsIGZvcm1GaWVsZHMpIHtcbiAgICAgICAgaWYgKCFmaWVsZC5pc0RhdGFTZXRCb3VuZCAmJiBpc0RhdGFTZXRXaWRnZXQoZmllbGQud2lkZ2V0dHlwZSkpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZFsnaXMtcmVsYXRlZCddKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuaXNEYXRhU2V0Qm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGZldGNoUmVsYXRlZEZpZWxkRGF0YSh0aGlzLmZvcm0uZGF0YXNvdXJjZSwgZmllbGQud2lkZ2V0LCB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZDogZmllbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICBkYXRhZmllbGQ6IEFMTEZJRUxEUyxcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiAnd2lkZ2V0dHlwZScsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQodGhpcy5mb3JtLmRhdGFzb3VyY2UsIGZpZWxkLndpZGdldCwge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6ICd3aWRnZXR0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZW1wdHlmaWx0ZXI6IHRoaXMuZm9ybS5lbmFibGVlbXB0eWZpbHRlclxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGFwcGx5RmlsdGVyT25GaWVsZCh0aGlzLmZvcm0uZGF0YXNvdXJjZSwgZmllbGQud2lkZ2V0LCBmb3JtRmllbGRzLCBmaWVsZC52YWx1ZSwge2lzRmlyc3Q6IHRydWV9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkRhdGFTb3VyY2VDaGFuZ2UoKSB7XG4gICAgICAgIGlmIChfLmdldCh0aGlzLmZvcm0uZm9ybUZpZWxkcywgJ2xlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uaXNEYXRhU291cmNlVXBkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZm9ybS5nZXRGb3JtRmllbGRzKCk7XG4gICAgICAgIGZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWVsZE9uRGF0YVNvdXJjZUNoYW5nZShmaWVsZCwgZm9ybUZpZWxkcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRmllbGREZWZhdWx0VmFsdWVDaGFuZ2UoZmllbGQsIG52KSB7XG4gICAgICAgIC8vIEluIEVkaXQsIGRvICBub3Qgc2V0IGRlZmF1bHQgdmFsdWVzXG4gICAgICAgIGlmICh0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWUgb25seSBpZiBpdCBleGlzdHMuXG4gICAgICAgIGlmIChpc0RlZmluZWQobnYpICYmIG52ICE9PSBudWxsICYmIG52ICE9PSAnJyAmJiBudiAhPT0gJ251bGwnKSB7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHBhcnNlVmFsdWVCeVR5cGUobnYsIGZpZWxkLnR5cGUsIGZpZWxkLndpZGdldHR5cGUsIGZpZWxkLnRyYWlsaW5nemVybyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdNUy0yMjQzNDogRm9yIGRlZmF1bHQgdmFsdWUgc2V0IG9uIGluZGl2aWR1YWwgZm9ybSBmaWVsZHMsIGRvIG5vdCBtYXJrIHRoZSBmb3JtIGFzIGRpcnR5LlxuICAgICAgICBpZiAodGhpcy5mb3JtLmRpcnR5ICYmICF0aGlzLl90cmlnZ2VyZWRCeVVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlYm91bmNlZFNhdmVQcmV2RGF0YVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uRmllbGRWYWx1ZUNoYW5nZShmaWVsZCwgbnYpIHtcbiAgICAgICAgYXBwbHlGaWx0ZXJPbkZpZWxkKHRoaXMuZm9ybS5kYXRhc291cmNlLCBmaWVsZC53aWRnZXQsIHRoaXMuZm9ybS5mb3JtRmllbGRzLCBudik7XG4gICAgfVxuXG4gICAgZ2V0QmxvYlVSTChkYXRhT2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICAgIGxldCBocmVmID0gJyc7XG4gICAgICAgIGxldCBwcmltYXJ5S2V5cztcbiAgICAgICAgbGV0IHByaW1hcnlLZXk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmZvcm0uZGF0YXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuIGhyZWY7XG4gICAgICAgIH1cbiAgICAgICAgcHJpbWFyeUtleXMgPSB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9QUklNQVJZX0tFWSkgfHwgW107XG4gICAgICAgIHByaW1hcnlLZXkgID0gZGF0YU9ialtwcmltYXJ5S2V5c1swXV07XG4gICAgICAgIC8vIFRPRE86IEhhbmRsZSBtb2JpbGUgY2FzZVxuICAgICAgICAvLyBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEgJiYgQ09OU1RBTlRTLmlzUnVuTW9kZSkge1xuICAgICAgICAvLyAgICAgaHJlZiArPSAkcm9vdFNjb3BlLnByb2plY3QuZGVwbG95ZWRVcmw7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaHJlZiArPSB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9CTE9CX1VSTCwge1xuICAgICAgICAgICAgcHJpbWFyeVZhbHVlOiBwcmltYXJ5S2V5LFxuICAgICAgICAgICAgY29sdW1uTmFtZToga2V5XG4gICAgICAgIH0pO1xuICAgICAgICBocmVmICs9ICc/JyArIE1hdGgucmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBocmVmO1xuICAgIH1cblxuICAgIHNldEZvcm1EYXRhKGRhdGFPYmosIGZvcm1GaWVsZHM/KSB7XG4gICAgICAgIGlmICghZGF0YU9iaikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1GaWVsZHMgPSBmb3JtRmllbGRzIHx8IHRoaXMuZm9ybS5mb3JtRmllbGRzO1xuICAgICAgICBmb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBfLmdldChkYXRhT2JqLCBmaWVsZC5rZXkgfHwgZmllbGQubmFtZSk7XG4gICAgICAgICAgICBpZiAoaXNUaW1lVHlwZShmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9IGdldFZhbGlkVGltZSh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09IERhdGFUeXBlLkJMT0IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXRGaWxlVXBsb2FkV2lkZ2V0KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBmaWVsZC5ocmVmICA9IHRoaXMuZ2V0QmxvYlVSTChkYXRhT2JqLCBmaWVsZC5rZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9IF8uaXNTdHJpbmcodmFsdWUpID8gJycgOiB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEZpZWxkVmFsdWUoZmllbGQsIGRhdGFPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zYXZlUHJldkRhdGFWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnN0cnVjdERhdGFPYmplY3QoKTtcbiAgICB9XG5cbiAgICBvbkRhdGFTb3VyY2VVcGRhdGUocmVzcG9uc2UsIG5ld0Zvcm0sIHVwZGF0ZU1vZGUpIHtcbiAgICAgICAgaWYgKG5ld0Zvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5uZXcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRGb3JtRGF0YShyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGlzRGVmaW5lZCh1cGRhdGVNb2RlKSA/IHVwZGF0ZU1vZGUgOiB0cnVlO1xuICAgIH1cblxuICAgIHNhdmVQcmV2Zm9ybUZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLnByZXZmb3JtRmllbGRzID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZm9ybS5mb3JtRmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdrZXknOiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgJ3R5cGUnOiBmaWVsZC50eXBlLFxuICAgICAgICAgICAgICAgICd3aWRnZXR0eXBlJzogZmllbGQud2lkZ2V0dHlwZSxcbiAgICAgICAgICAgICAgICAnb3V0cHV0Zm9ybWF0JzogZmllbGQub3V0cHV0Zm9ybWF0LFxuICAgICAgICAgICAgICAgICd2YWx1ZSc6IGZpZWxkLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZ2V0UHJldmZvcm1GaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtRmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2RmllbGQgPSB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMuZmluZChwRmllbGQgPT4gcEZpZWxkLmtleSA9PT0gZmllbGQua2V5KTtcbiAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gcHJldkZpZWxkLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREYXRhT2JqZWN0KCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5JTlNFUlQpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMuZm9ybS5wcmV2RGF0YU9iamVjdCkgJiYgIWlzRW1wdHlPYmplY3QodGhpcy5mb3JtLnByZXZEYXRhT2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0ucHJldkRhdGFPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLmZvcm1kYXRhIHx8IHt9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3REYXRhT2JqZWN0KGlzUHJldmlvdXNEYXRhPykge1xuICAgICAgICBjb25zdCBkYXRhT2JqZWN0ID0gdGhpcy5nZXREYXRhT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZvcm1OYW1lID0gdGhpcy5mb3JtLm5hbWU7XG4gICAgICAgIGxldCBmb3JtRmllbGRzO1xuICAgICAgICBmb3JtRmllbGRzID0gaXNQcmV2aW91c0RhdGEgPyB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMgOiB0aGlzLmZvcm0uZ2V0Rm9ybUZpZWxkcygpO1xuICAgICAgICBmb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGVUaW1lLFxuICAgICAgICAgICAgICAgIGZpZWxkVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFRhcmdldCA9IF8uc3BsaXQoZmllbGQua2V5LCAnLicpO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGRUYXJnZXRbMF0gfHwgZmllbGQua2V5O1xuXG4gICAgICAgICAgICAvKmNvbGxlY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBmaWVsZHMgYW5kIGNvbnN0cnVjdCB0aGUgb2JqZWN0Ki9cbiAgICAgICAgICAgIC8qRm9ybWF0IHRoZSBvdXRwdXQgb2YgZGF0ZSB0aW1lIHdpZGdldHMgdG8gdGhlIGdpdmVuIG91dHB1dCBmb3JtYXQqL1xuICAgICAgICAgICAgaWYgKChmaWVsZC53aWRnZXR0eXBlICYmIGlzRGF0ZVRpbWVUeXBlKGZpZWxkLndpZGdldHR5cGUpKSB8fCBpc0RhdGVUaW1lVHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVGltZSA9IGdldFZhbGlkRGF0ZU9iamVjdChmaWVsZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5vdXRwdXRmb3JtYXQgPT09IERhdGFUeXBlLlRJTUVTVEFNUCB8fCBmaWVsZC50eXBlID09PSBEYXRhVHlwZS5USU1FU1RBTVApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBmaWVsZC52YWx1ZSA/IGRhdGVUaW1lIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5vdXRwdXRmb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlVGltZSwgZmllbGQub3V0cHV0Zm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBmaWVsZC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5CTE9CKSB7XG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGdldEZpbGVzKGZvcm1OYW1lLCBmaWVsZE5hbWUgKyAnX2Zvcm1XaWRnZXQnLCBmaWVsZC5tdWx0aXBsZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09IERhdGFUeXBlLkxJU1QpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gZmllbGQudmFsdWUgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gKGZpZWxkLnZhbHVlID09PSBudWxsIHx8IGZpZWxkLnZhbHVlID09PSAnJykgPyB1bmRlZmluZWQgOiBmaWVsZC52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkVGFyZ2V0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGRhdGFPYmplY3RbZmllbGROYW1lXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFPYmplY3RbZmllbGROYW1lXSA9IGRhdGFPYmplY3RbZmllbGROYW1lXSB8fCB7fTtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0W2ZpZWxkTmFtZV1bZmllbGRUYXJnZXRbMV1dID0gZmllbGRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaXNQcmV2aW91c0RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51cGRhdGVGb3JtRGF0YU91dHB1dChkYXRhT2JqZWN0KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm0uZGF0YW91dHB1dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YU9iamVjdDtcbiAgICB9XG5cbiAgICBzZXRQcmltYXJ5S2V5KGZpZWxkTmFtZSkge1xuICAgICAgICAvKlN0b3JlIHRoZSBwcmltYXJ5IGtleSBvZiBkYXRhKi9cbiAgICAgICAgdGhpcy5mb3JtLnByaW1hcnlLZXkgPSB0aGlzLmZvcm0ucHJpbWFyeUtleSB8fCBbXTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5wcmltYXJ5S2V5LmluZGV4T2YoZmllbGROYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wcmltYXJ5S2V5LnB1c2goZmllbGROYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRPcGVyYXRpb25UeXBlKCkge1xuICAgICAgICBsZXQgb3BlcmF0aW9uO1xuICAgICAgICBsZXQgaXNQcmltYXJ5ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNvdXJjZU9wZXJhdGlvbiA9IHRoaXMuZm9ybS5kYXRhc291cmNlICYmIHRoaXMuZm9ybS5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX09QRVJBVElPTl9UWVBFKTtcbiAgICAgICAgaWYgKHNvdXJjZU9wZXJhdGlvbiAmJiBzb3VyY2VPcGVyYXRpb24gIT09ICdyZWFkJykge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZU9wZXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvKklmIE9wZXJhdGlvblR5cGUgaXMgbm90IHNldCB0aGVuIGJhc2VkIG9uIHRoZSBmb3JtZGF0YSBvYmplY3QgcmV0dXJuIHRoZSBvcGVyYXRpb24gdHlwZSxcbiAgICAgICAgICAgIHRoaXMgY2FzZSBvY2N1cnMgb25seSBpZiB0aGUgZm9ybSBpcyBvdXRzaWRlIGEgbGl2ZWdyaWQqL1xuICAgICAgICAvKklmIHRoZSBmb3JtZGF0YSBvYmplY3QgaGFzIHByaW1hcnkga2V5IHZhbHVlIHRoZW4gcmV0dXJuIHVwZGF0ZSBlbHNlIGluc2VydCovXG4gICAgICAgIGlmICh0aGlzLmZvcm0ucHJpbWFyeUtleSAmJiAhXy5pc0VtcHR5KHRoaXMuZm9ybS5mb3JtZGF0YSkpIHtcbiAgICAgICAgICAgIC8qSWYgb25seSBvbmUgY29sdW1uIGlzIHByaW1hcnkga2V5Ki9cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0ucHJpbWFyeUtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtLmZvcm1kYXRhW3RoaXMuZm9ybS5wcmltYXJ5S2V5WzBdXSkge1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKklmIG9ubHkgbm8gY29sdW1uIGlzIHByaW1hcnkga2V5Ki9cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtLnByaW1hcnlLZXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgXy5mb3JFYWNoKHRoaXMuZm9ybS5mb3JtZGF0YSwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltYXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpc1ByaW1hcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gTGl2ZV9PcGVyYXRpb25zLlVQREFURTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLypJZiBtdWx0aXBsZSBjb2x1bW5zIGFyZSBwcmltYXJ5IGtleSovXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzUHJpbWFyeSA9IF8uc29tZSh0aGlzLmZvcm0ucHJpbWFyeUtleSwgKHByaW1hcnlLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5mb3JtZGF0YVtwcmltYXJ5S2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQcmltYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IExpdmVfT3BlcmF0aW9ucy5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRpb24gfHwgTGl2ZV9PcGVyYXRpb25zLklOU0VSVDtcbiAgICB9XG5cbiAgICBnZXRQcmV2RGF0YVZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgcHJldkRhdGFWYWx1ZXMgPSBfLmZyb21QYWlycyhfLm1hcCh0aGlzLmZvcm0ucHJldkRhdGFWYWx1ZXMsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gW2l0ZW0ua2V5LCBpdGVtLnZhbHVlXTtcbiAgICAgICAgfSkpOyAvLyBDb252ZXJ0IG9mIGFycmF5IG9mIHZhbHVlcyB0byBhbiBvYmplY3RcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHByZXZEYXRhVmFsdWVzW2ZpZWxkLmtleV0gfHwgJyc7XG4gICAgICAgICAgICBmaWVsZC5yZXNldERpc3BsYXlJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByZXZEYXRhVmFsdWVzO1xuICAgIH1cblxuICAgIHNhdmVQcmV2RGF0YVZhbHVlcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLnByZXZEYXRhVmFsdWVzID0gdGhpcy5mb3JtLmZvcm1GaWVsZHMubWFwKChvYmopID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7J2tleSc6IG9iai5rZXksICd2YWx1ZSc6IG9iai52YWx1ZX07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyRGF0YSgpIHtcbiAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvcm0uZW1wdHlEYXRhTW9kZWwoKTtcbiAgICB9XG5cbiAgICBzZXRSZWFkb25seUZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBmaWVsZC5zZXRSZWFkT25seVN0YXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2V0KCkge1xuICAgICAgICBsZXQgcHJldkRhdGFWYWx1ZXM7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldEZvcm1TdGF0ZSgpO1xuICAgICAgICBwcmV2RGF0YVZhbHVlcyA9IHRoaXMuZ2V0UHJldkRhdGFWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuQkxPQiB8fCBmaWVsZC53aWRnZXR0eXBlID09PSAndXBsb2FkJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5yZXNldEZpbGVVcGxvYWRXaWRnZXQoZmllbGQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmhyZWYgPSB0aGlzLmdldEJsb2JVUkwocHJldkRhdGFWYWx1ZXMsIGZpZWxkLmtleSwgZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpPy5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaW52YWxpZCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnN0cnVjdERhdGFPYmplY3QoKTtcbiAgICB9XG5cbiAgICBjbG9zZURpYWxvZygpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pc0xheW91dERpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlKHRoaXMuZm9ybS5kaWFsb2dJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5jbGVhck1lc3NhZ2UoKTtcbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgICAvKlNob3cgdGhlIHByZXZpb3VzIHNlbGVjdGVkIGRhdGEqL1xuICAgICAgICBpZiAodGhpcy5mb3JtLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJldmZvcm1GaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm0uaXNVcGRhdGVNb2RlID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQub25DYW5jZWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgIFdNUy0xODc1OTogZGlhbG9nIGNsb3NlIGlzIGNhbGxpbmcgdHdpY2UgYW5kIGRpYWxvZyBvbkhpZGRlbiBzdWJzY3JpcHRpb24gaXMgY2FsbGluZyBvbmNlIGZyb20gdGhlIGxpYnJhcnlcbiAgICAgICAgICAgICAgZHVlIHRvIHRoaXMgaWYgd2UgaGF2ZSBhbm90aGVyIGRpYWxvZyBpbnNpZGUgbGl2ZWZvcm0gYW5kIGlmIHdlIGNsaWNrIG9uIGNhbmNlbCBvZiBzZWNvbmQgZGlhbG9nIHRoZSBsaWJyYXJ5XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiBpcyBjYWxsaW5nIGZvciBib3RoIHRoZSBkaWFsb2dzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XG4gICAgICAgIH1cbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuXG5cbiAgICBkZWxldGUoY2FsbEJhY2tGbikge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXRGb3JtU3RhdGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPSBMaXZlX09wZXJhdGlvbnMuREVMRVRFO1xuICAgICAgICB0aGlzLmZvcm0ucHJldkRhdGFPYmplY3QgPSBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLmZvcm1kYXRhIHx8IHt9KTtcbiAgICAgICAgdGhpcy5mb3JtLnNhdmUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY2FsbEJhY2tGbik7XG4gICAgfVxuXG4gICAgLy8gRnVuY3Rpb24gdXNlIHRvIHNhdmUgdGhlIGZvcm0gYW5kIG9wZW4gbmV3IGZvcm0gYWZ0ZXIgc2F2ZVxuICAgIHNhdmVBbmROZXcoKSB7XG4gICAgICAgIHRoaXMuc2F2ZSh1bmRlZmluZWQsIHRydWUsIHRydWUpO1xuICAgIH1cbiAgICAvLyBGdW5jdGlvbiB1c2UgdG8gc2F2ZSB0aGUgZm9ybSBhbmQgb3BlbiBuZXcgZm9ybSBhZnRlciBzYXZlXG4gICAgc2F2ZUFuZFZpZXcoKSB7XG4gICAgICAgIHRoaXMuc2F2ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBzdWJtaXRGb3JtKCRldmVudCkge1xuICAgICAgICB0aGlzLnNhdmUoJGV2ZW50KTtcbiAgICB9XG5cbiAgICBzYXZlKGV2ZW50PywgdXBkYXRlTW9kZT8sIG5ld0Zvcm0/KSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmRhdGFzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGF0YSwgcHJldkRhdGEsIG9wZXJhdGlvblR5cGUsIGlzVmFsaWQ7XG4gICAgICAgIGNvbnN0IHJlcXVlc3REYXRhOiBhbnkgPSB7fTtcblxuICAgICAgICBvcGVyYXRpb25UeXBlID0gdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPSB0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSB8fCB0aGlzLmZpbmRPcGVyYXRpb25UeXBlKCk7XG5cbiAgICAgICAgLy8gRGlzYWJsZSB0aGUgZm9ybSBzdWJtaXQgaWYgZm9ybSBpcyBpbiBpbnZhbGlkIHN0YXRlLlxuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkYXRlRmllbGRzT25TdWJtaXQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YSA9IGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0uY29uc3RydWN0RGF0YU9iamVjdCgpKTtcbiAgICAgICAgcHJldkRhdGEgPSB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMgPyB0aGlzLmZvcm0uY29uc3RydWN0RGF0YU9iamVjdCh0cnVlKSA6IGRhdGE7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSB0aGlzLmZvcm0uaW52b2tlRXZlbnRDYWxsYmFjaygnYmVmb3Jlc2VydmljZWNhbGwnLCB7JGV2ZW50OiBldmVudCwgJG9wZXJhdGlvbjogdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUsICRkYXRhOiBkYXRhLCBvcHRpb25zOiByZXF1ZXN0RGF0YX0pO1xuICAgICAgICAgICAgaWYgKGlzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVmFsaWQgJiYgaXNWYWxpZC5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKHRydWUsIGlzVmFsaWQuZXJyb3IsICdlcnJvcicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBYm9ydCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBvcGVyYXRpb24gaXMgdXBkYXRlLCBmb3JtIGlzIG5vdCB0b3VjaGVkIGFuZCBjdXJyZW50IGRhdGEgYW5kIHByZXZpb3VzIGRhdGEgaXMgc2FtZSwgU2hvdyBubyBjaGFuZ2VzIGRldGVjdGVkIG1lc3NhZ2VcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFICYmIHRoaXMuZm9ybS5uZ2Zvcm0gJiYgdGhpcy5mb3JtLm5nZm9ybS5wcmlzdGluZSAmJlxuICAgICAgICAgICAgICAgICh0aGlzLmZvcm0uaXNTZWxlY3RlZCAmJiBfLmlzRXF1YWwoZGF0YSwgcHJldkRhdGEpKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UodHJ1ZSwgdGhpcy5mb3JtLmFwcExvY2FsZS5NRVNTQUdFX05PX0NIQU5HRVMsICdpbmZvJywgJycpO1xuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVxdWVzdERhdGEucm93ID0gZGF0YTtcbiAgICAgICAgcmVxdWVzdERhdGEudHJhbnNmb3JtID0gdHJ1ZTtcbiAgICAgICAgcmVxdWVzdERhdGEuc2tpcE5vdGlmaWNhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5VUERBVEUpIHtcbiAgICAgICAgICAgIHJlcXVlc3REYXRhLnJvd0RhdGEgPSB0aGlzLmZvcm0uZm9ybWRhdGE7XG4gICAgICAgICAgICByZXF1ZXN0RGF0YS5wcmV2RGF0YSA9IHByZXZEYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcGVyZm9ybURhdGFPcGVyYXRpb24odGhpcy5mb3JtLmRhdGFzb3VyY2UsIHJlcXVlc3REYXRhLCB7XG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiBvcGVyYXRpb25UeXBlXG4gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBvcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuSU5TRVJUID8gdGhpcy5mb3JtLmluc2VydG1lc3NhZ2UgOiAob3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLlVQREFURSA/XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnVwZGF0ZW1lc3NhZ2UgOiB0aGlzLmZvcm0uZGVsZXRlbWVzc2FnZSk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLkRFTEVURSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcXVlc3REYXRhLnJvdztcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZW1wdHlEYXRhTW9kZWwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucHJldkRhdGFWYWx1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtLm9uU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKHRydWUsIG1zZywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudCkge1xuICAgICAgICAgICAgICAgIC8vIGhpZ2hsaWdodCB0aGUgY3VycmVudCB1cGRhdGVkIHJvd1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5fbGl2ZVRhYmxlUGFyZW50Lm9uUmVzdWx0KG9wZXJhdGlvblR5cGUsIHJlc3BvbnNlLCBuZXdGb3JtLCB1cGRhdGVNb2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLypnZXQgdXBkYXRlZCBkYXRhIHdpdGhvdXQgcmVmcmVzaGluZyBwYWdlKi9cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkxJU1RfUkVDT1JEUywge1xuICAgICAgICAgICAgICAgICAgICAnc2tpcFRvZ2dsZVN0YXRlJzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRhU291cmNlVXBkYXRlKHJlc3BvbnNlLCBuZXdGb3JtLCB1cGRhdGVNb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ3Jlc3VsdCc6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAnc3RhdHVzJzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybS5vbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UodHJ1ZSwgZXJyb3IsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAncmVzdWx0JzogZXJyb3IsXG4gICAgICAgICAgICAgICAgJ3N0YXR1cyc6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBmb3JtIHRvIHByaXN0aW5lIHN0YXRlXG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXRGb3JtU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5vblJlc3VsdENiKHJlc3BvbnNlLnJlc3VsdCwgcmVzcG9uc2Uuc3RhdHVzLCBldmVudCk7XG4gICAgICAgIH0pO1xuXG5cbiAgICB9XG59XG4iXX0=
497
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2Zvcm0vc3JjL2xpdmUtZm9ybS9saXZlLWZvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEwsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVNLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBSWxELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RILE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQ3ZCLElBQUksR0FB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LGFBQWEsZ0tBSWxCLFlBQVk7b0VBaEJsQixpQkFBaUI7NEdBQWpCLDRCQUNUOzs7dUZBRFMsaUJBQWlCO2NBSDdCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsY0FBYzthQUMzQjs7c0JBYVEsSUFBSTs7c0JBQUksTUFBTTt1QkFBQyxhQUFhOztzQkFDNUIsUUFBUTs7c0JBR1IsU0FBUzt1QkFBQyxZQUFZO3dCQVRVLGdCQUFnQjtrQkFBcEQsWUFBWTttQkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgT3B0aW9uYWwsIFNlbGYsIEF0dHJpYnV0ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7ICRhcHBEaWdlc3QsIEFic3RyYWN0RGlhbG9nU2VydmljZSwgRGF0YVNvdXJjZSwgRGF0YVR5cGUsIGRlYm91bmNlLCBnZXRDbG9uZWRPYmplY3QsIGdldEZpbGVzLCBnZXRWYWxpZERhdGVPYmplY3QsIGlzRGF0ZVRpbWVUeXBlLCBpc0RlZmluZWQsIGlzRW1wdHlPYmplY3QgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBBTExGSUVMRFMsIGFwcGx5RmlsdGVyT25GaWVsZCwgZmV0Y2hSZWxhdGVkRmllbGREYXRhLCBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkLCBpc0RhdGFTZXRXaWRnZXQsIExpdmVfT3BlcmF0aW9ucywgcGFyc2VWYWx1ZUJ5VHlwZSwgcGVyZm9ybURhdGFPcGVyYXRpb24sIFRvRGF0ZVBpcGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IExpdmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvbGl2ZS10YWJsZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyTGl2ZUZvcm1Qcm9wcyB9IGZyb20gJy4uL2Zvcm0ucHJvcHMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBpc1RpbWVUeXBlID0gZmllbGQgPT4gZmllbGQud2lkZ2V0dHlwZSA9PT0gRGF0YVR5cGUuVElNRSB8fCAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuVElNRSAmJiAhZmllbGQud2lkZ2V0dHlwZSk7XG5jb25zdCBnZXRWYWxpZFRpbWUgPSB2YWwgPT4ge1xuICAgIGlmICh2YWwpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IChuZXcgRGF0ZSgpKS50b0RhdGVTdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIChuZXcgRGF0ZShgJHtkYXRlfSAke3ZhbH1gKSkuZ2V0VGltZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbd21MaXZlRm9ybV0nXG59KVxuZXhwb3J0IGNsYXNzIExpdmVGb3JtRGlyZWN0aXZlIHtcbiAgICBzdGF0aWMgIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyTGl2ZUZvcm1Qcm9wcygpO1xuICAgIHByaXZhdGUgX3RyaWdnZXJlZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kZWJvdW5jZWRTYXZlUHJldkRhdGFWYWx1ZXMgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZVByZXZEYXRhVmFsdWVzKCk7XG4gICAgfSwgMjUwKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgQEluamVjdChGb3JtQ29tcG9uZW50KSBwcml2YXRlIGZvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIGxpdmVUYWJsZTogTGl2ZVRhYmxlQ29tcG9uZW50LFxuICAgICAgICBwdWJsaWMgZGF0ZVBpcGU6IFRvRGF0ZVBpcGUsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAQXR0cmlidXRlKCdmb3JtbGF5b3V0JykgZm9ybWxheW91dDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIC8vIElmIHBhcmVudCBsaXZlIHRhYmxlIGlzIHByZXNlbnQgYW5kIHRoaXMgZm9ybSBpcyBmaXJzdCBjaGlsZCBvZiBsaXZlIHRhYmxlLCBzZXQgdGhpcyBmb3JtIGluc3RhbmNlIG9uIGxpdmV0YWJsZVxuICAgICAgICBpZiAobGl2ZVRhYmxlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybS5wYXJlbnRGb3JtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQgPSBsaXZlVGFibGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZvcm0uaXNMYXlvdXREaWFsb2cgPSBsaXZlVGFibGUuaXNMYXlvdXREaWFsb2c7XG4gICAgICAgICAgICBsaXZlVGFibGUub25Gb3JtUmVhZHkodGhpcy5mb3JtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5pc0xheW91dERpYWxvZyA9IGZvcm1sYXlvdXQgPT09ICdkaWFsb2cnO1xuICAgICAgICB9XG4gICAgICAgIC8vIENVRCBvcGVyYXRpb25zXG4gICAgICAgIGZvcm0uY2FuY2VsID0gdGhpcy5jYW5jZWwuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5yZXNldCA9IHRoaXMucmVzZXQuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5kZWxldGUgPSB0aGlzLmRlbGV0ZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnNhdmUgPSB0aGlzLnNhdmUuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5zYXZlQW5kTmV3ID0gdGhpcy5zYXZlQW5kTmV3LmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc2F2ZUFuZFZpZXcgPSB0aGlzLnNhdmVBbmRWaWV3LmJpbmQodGhpcyk7XG5cbiAgICAgICAgZm9ybS5zZXRQcmltYXJ5S2V5ID0gdGhpcy5zZXRQcmltYXJ5S2V5LmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uY29uc3RydWN0RGF0YU9iamVjdCA9IHRoaXMuY29uc3RydWN0RGF0YU9iamVjdC5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmNoYW5nZURhdGFPYmplY3QgPSB0aGlzLnNldEZvcm1EYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc2V0Rm9ybURhdGEgPSB0aGlzLnNldEZvcm1EYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uZmluZE9wZXJhdGlvblR5cGUgPSB0aGlzLmZpbmRPcGVyYXRpb25UeXBlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uY2xlYXJEYXRhID0gdGhpcy5jbGVhckRhdGEuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5vbkZpZWxkRGVmYXVsdFZhbHVlQ2hhbmdlID0gdGhpcy5vbkZpZWxkRGVmYXVsdFZhbHVlQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0ub25EYXRhU291cmNlQ2hhbmdlID0gdGhpcy5vbkRhdGFTb3VyY2VDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5vbkZpZWxkVmFsdWVDaGFuZ2UgPSB0aGlzLm9uRmllbGRWYWx1ZUNoYW5nZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnN1Ym1pdEZvcm0gPSB0aGlzLnN1Ym1pdEZvcm0uYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5mb3JtX3JlZ2lzdGVyRm9ybUZpZWxkcyA9IGZvcm0ucmVnaXN0ZXJGb3JtRmllbGRzO1xuICAgICAgICBmb3JtLnJlZ2lzdGVyRm9ybUZpZWxkcyA9IHRoaXMucmVnaXN0ZXJGb3JtRmllbGRzLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgLypcbiAgICBXTVM6MTg1ODNcbiAgICBPdmVycmlkaW5nICdyZWdpc3RlckZvcm1GaWVsZHMnIGZvciBsaXZlRm9ybXMsXG4gICAgT24gRWFjaCBmaWVsZCBhZGRlZCwgY2hlY2sgaWYgdGhlIGRhdGFTb3VyY2UgaXMgdXBkYXRlZCBvciBub3RcbiAgICBpZiB0aGUgZmllbGQgaXMgYWRkZWQgYWZ0ZXIgdGhlIGRhdGFTb3VyY2UgaXMgdXBkYXRlZCBhdCBMaXZlRm9ybSwgcmV0cmlnZ2VyXG4gICAgKi9cbiAgICByZWdpc3RlckZvcm1GaWVsZHMoZm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmZvcm0uZ2V0Rm9ybUZpZWxkcygpO1xuICAgICAgICB0aGlzLmZvcm0uZm9ybV9yZWdpc3RlckZvcm1GaWVsZHMoZm9ybUZpZWxkKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pc0RhdGFTb3VyY2VVcGRhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWVsZE9uRGF0YVNvdXJjZUNoYW5nZShmb3JtRmllbGQsIGZvcm1GaWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3VwZGF0ZUZpZWxkT25EYXRhU291cmNlQ2hhbmdlKGZpZWxkLCBmb3JtRmllbGRzKSB7XG4gICAgICAgIGlmICghZmllbGQuaXNEYXRhU2V0Qm91bmQgJiYgaXNEYXRhU2V0V2lkZ2V0KGZpZWxkLndpZGdldHR5cGUpKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRbJ2lzLXJlbGF0ZWQnXSkge1xuICAgICAgICAgICAgICAgIGZpZWxkLmlzRGF0YVNldEJvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmZXRjaFJlbGF0ZWRGaWVsZERhdGEodGhpcy5mb3JtLmRhdGFzb3VyY2UsIGZpZWxkLndpZGdldCwge1xuICAgICAgICAgICAgICAgICAgICByZWxhdGVkRmllbGQ6IGZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YWZpZWxkOiBBTExGSUVMRFMsXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogJ3dpZGdldHR5cGUnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkKHRoaXMuZm9ybS5kYXRhc291cmNlLCBmaWVsZC53aWRnZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiAnd2lkZ2V0dHlwZScsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWVtcHR5ZmlsdGVyOiB0aGlzLmZvcm0uZW5hYmxlZW1wdHlmaWx0ZXJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhcHBseUZpbHRlck9uRmllbGQodGhpcy5mb3JtLmRhdGFzb3VyY2UsIGZpZWxkLndpZGdldCwgZm9ybUZpZWxkcywgZmllbGQudmFsdWUsIHtpc0ZpcnN0OiB0cnVlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25EYXRhU291cmNlQ2hhbmdlKCkge1xuICAgICAgICBpZiAoXy5nZXQodGhpcy5mb3JtLmZvcm1GaWVsZHMsICdsZW5ndGgnKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmlzRGF0YVNvdXJjZVVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmZvcm0uZ2V0Rm9ybUZpZWxkcygpO1xuICAgICAgICBmb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRmllbGRPbkRhdGFTb3VyY2VDaGFuZ2UoZmllbGQsIGZvcm1GaWVsZHMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkZpZWxkRGVmYXVsdFZhbHVlQ2hhbmdlKGZpZWxkLCBudikge1xuICAgICAgICAvLyBJbiBFZGl0LCBkbyAgbm90IHNldCBkZWZhdWx0IHZhbHVlc1xuICAgICAgICBpZiAodGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9ubHkgaWYgaXQgZXhpc3RzLlxuICAgICAgICBpZiAoaXNEZWZpbmVkKG52KSAmJiBudiAhPT0gbnVsbCAmJiBudiAhPT0gJycgJiYgbnYgIT09ICdudWxsJykge1xuICAgICAgICAgICAgZmllbGQudmFsdWUgPSBwYXJzZVZhbHVlQnlUeXBlKG52LCBmaWVsZC50eXBlLCBmaWVsZC53aWRnZXR0eXBlLCBmaWVsZC50cmFpbGluZ3plcm8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXTVMtMjI0MzQ6IEZvciBkZWZhdWx0IHZhbHVlIHNldCBvbiBpbmRpdmlkdWFsIGZvcm0gZmllbGRzLCBkbyBub3QgbWFyayB0aGUgZm9ybSBhcyBkaXJ0eS5cbiAgICAgICAgaWYgKHRoaXMuZm9ybS5kaXJ0eSAmJiAhdGhpcy5fdHJpZ2dlcmVkQnlVc2VyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZWJvdW5jZWRTYXZlUHJldkRhdGFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkVmFsdWVDaGFuZ2UoZmllbGQsIG52KSB7XG4gICAgICAgIGFwcGx5RmlsdGVyT25GaWVsZCh0aGlzLmZvcm0uZGF0YXNvdXJjZSwgZmllbGQud2lkZ2V0LCB0aGlzLmZvcm0uZm9ybUZpZWxkcywgbnYpO1xuICAgIH1cblxuICAgIGdldEJsb2JVUkwoZGF0YU9iaiwga2V5LCB2YWx1ZSkge1xuICAgICAgICBsZXQgaHJlZiA9ICcnO1xuICAgICAgICBsZXQgcHJpbWFyeUtleXM7XG4gICAgICAgIGxldCBwcmltYXJ5S2V5O1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5mb3JtLmRhdGFzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBocmVmO1xuICAgICAgICB9XG4gICAgICAgIHByaW1hcnlLZXlzID0gdGhpcy5mb3JtLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfUFJJTUFSWV9LRVkpIHx8IFtdO1xuICAgICAgICBwcmltYXJ5S2V5ICA9IGRhdGFPYmpbcHJpbWFyeUtleXNbMF1dO1xuICAgICAgICAvLyBUT0RPOiBIYW5kbGUgbW9iaWxlIGNhc2VcbiAgICAgICAgLy8gaWYgKENPTlNUQU5UUy5oYXNDb3Jkb3ZhICYmIENPTlNUQU5UUy5pc1J1bk1vZGUpIHtcbiAgICAgICAgLy8gICAgIGhyZWYgKz0gJHJvb3RTY29wZS5wcm9qZWN0LmRlcGxveWVkVXJsO1xuICAgICAgICAvLyB9XG4gICAgICAgIGhyZWYgKz0gdGhpcy5mb3JtLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfQkxPQl9VUkwsIHtcbiAgICAgICAgICAgIHByaW1hcnlWYWx1ZTogcHJpbWFyeUtleSxcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGtleVxuICAgICAgICB9KTtcbiAgICAgICAgaHJlZiArPSAnPycgKyBNYXRoLnJhbmRvbSgpO1xuICAgICAgICByZXR1cm4gaHJlZjtcbiAgICB9XG5cbiAgICBzZXRGb3JtRGF0YShkYXRhT2JqLCBmb3JtRmllbGRzPykge1xuICAgICAgICBpZiAoIWRhdGFPYmopIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3JtRmllbGRzID0gZm9ybUZpZWxkcyB8fCB0aGlzLmZvcm0uZm9ybUZpZWxkcztcbiAgICAgICAgZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gXy5nZXQoZGF0YU9iaiwgZmllbGQua2V5IHx8IGZpZWxkLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGlzVGltZVR5cGUoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZmllbGQudmFsdWUgPSBnZXRWYWxpZFRpbWUodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5CTE9CKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0RmlsZVVwbG9hZFdpZGdldChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZmllbGQuaHJlZiAgPSB0aGlzLmdldEJsb2JVUkwoZGF0YU9iaiwgZmllbGQua2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgZmllbGQudmFsdWUgPSBfLmlzU3RyaW5nKHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRGaWVsZFZhbHVlKGZpZWxkLCBkYXRhT2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2F2ZVByZXZEYXRhVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5jb25zdHJ1Y3REYXRhT2JqZWN0KCk7XG4gICAgfVxuXG4gICAgb25EYXRhU291cmNlVXBkYXRlKHJlc3BvbnNlLCBuZXdGb3JtLCB1cGRhdGVNb2RlKSB7XG4gICAgICAgIGlmIChuZXdGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubmV3KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uc2V0Rm9ybURhdGEocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUgPSBpc0RlZmluZWQodXBkYXRlTW9kZSkgPyB1cGRhdGVNb2RlIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBzYXZlUHJldmZvcm1GaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5wcmV2Zm9ybUZpZWxkcyA9IGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0uZm9ybUZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAna2V5JzogZmllbGQua2V5LFxuICAgICAgICAgICAgICAgICd0eXBlJzogZmllbGQudHlwZSxcbiAgICAgICAgICAgICAgICAnd2lkZ2V0dHlwZSc6IGZpZWxkLndpZGdldHR5cGUsXG4gICAgICAgICAgICAgICAgJ291dHB1dGZvcm1hdCc6IGZpZWxkLm91dHB1dGZvcm1hdCxcbiAgICAgICAgICAgICAgICAndmFsdWUnOiBmaWVsZC52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGdldFByZXZmb3JtRmllbGRzKCkge1xuICAgICAgICB0aGlzLmZvcm0uZm9ybUZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldkZpZWxkID0gdGhpcy5mb3JtLnByZXZmb3JtRmllbGRzLmZpbmQocEZpZWxkID0+IHBGaWVsZC5rZXkgPT09IGZpZWxkLmtleSk7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHByZXZGaWVsZC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YU9iamVjdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuSU5TRVJUKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLmZvcm0ucHJldkRhdGFPYmplY3QpICYmICFpc0VtcHR5T2JqZWN0KHRoaXMuZm9ybS5wcmV2RGF0YU9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLnByZXZEYXRhT2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZm9ybS5mb3JtZGF0YSB8fCB7fSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0RGF0YU9iamVjdChpc1ByZXZpb3VzRGF0YT8pIHtcbiAgICAgICAgY29uc3QgZGF0YU9iamVjdCA9IHRoaXMuZ2V0RGF0YU9iamVjdCgpO1xuICAgICAgICBjb25zdCBmb3JtTmFtZSA9IHRoaXMuZm9ybS5uYW1lO1xuICAgICAgICBsZXQgZm9ybUZpZWxkcztcbiAgICAgICAgZm9ybUZpZWxkcyA9IGlzUHJldmlvdXNEYXRhID8gdGhpcy5mb3JtLnByZXZmb3JtRmllbGRzIDogdGhpcy5mb3JtLmdldEZvcm1GaWVsZHMoKTtcbiAgICAgICAgZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRlVGltZSxcbiAgICAgICAgICAgICAgICBmaWVsZFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgZmllbGRUYXJnZXQgPSBfLnNwbGl0KGZpZWxkLmtleSwgJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkVGFyZ2V0WzBdIHx8IGZpZWxkLmtleTtcblxuICAgICAgICAgICAgLypjb2xsZWN0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgZmllbGRzIGFuZCBjb25zdHJ1Y3QgdGhlIG9iamVjdCovXG4gICAgICAgICAgICAvKkZvcm1hdCB0aGUgb3V0cHV0IG9mIGRhdGUgdGltZSB3aWRnZXRzIHRvIHRoZSBnaXZlbiBvdXRwdXQgZm9ybWF0Ki9cbiAgICAgICAgICAgIGlmICgoZmllbGQud2lkZ2V0dHlwZSAmJiBpc0RhdGVUaW1lVHlwZShmaWVsZC53aWRnZXR0eXBlKSkgfHwgaXNEYXRlVGltZVR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRpbWUgPSBnZXRWYWxpZERhdGVPYmplY3QoZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQub3V0cHV0Zm9ybWF0ID09PSBEYXRhVHlwZS5USU1FU1RBTVAgfHwgZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuVElNRVNUQU1QKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gZmllbGQudmFsdWUgPyBkYXRlVGltZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQub3V0cHV0Zm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZVRpbWUsIGZpZWxkLm91dHB1dGZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gZmllbGQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuQkxPQikge1xuICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBnZXRGaWxlcyhmb3JtTmFtZSwgZmllbGROYW1lICsgJ19mb3JtV2lkZ2V0JywgZmllbGQubXVsdGlwbGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5MSVNUKSB7XG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGZpZWxkLnZhbHVlIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IChmaWVsZC52YWx1ZSA9PT0gbnVsbCB8fCBmaWVsZC52YWx1ZSA9PT0gJycpID8gdW5kZWZpbmVkIDogZmllbGQudmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZFRhcmdldC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0W2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0W2ZpZWxkTmFtZV0gPSBkYXRhT2JqZWN0W2ZpZWxkTmFtZV0gfHwge307XG4gICAgICAgICAgICAgICAgZGF0YU9iamVjdFtmaWVsZE5hbWVdW2ZpZWxkVGFyZ2V0WzFdXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzUHJldmlvdXNEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udXBkYXRlRm9ybURhdGFPdXRwdXQoZGF0YU9iamVjdCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmRhdGFvdXRwdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGFPYmplY3Q7XG4gICAgfVxuXG4gICAgc2V0UHJpbWFyeUtleShmaWVsZE5hbWUpIHtcbiAgICAgICAgLypTdG9yZSB0aGUgcHJpbWFyeSBrZXkgb2YgZGF0YSovXG4gICAgICAgIHRoaXMuZm9ybS5wcmltYXJ5S2V5ID0gdGhpcy5mb3JtLnByaW1hcnlLZXkgfHwgW107XG4gICAgICAgIGlmICh0aGlzLmZvcm0ucHJpbWFyeUtleS5pbmRleE9mKGZpZWxkTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucHJpbWFyeUtleS5wdXNoKGZpZWxkTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kT3BlcmF0aW9uVHlwZSgpIHtcbiAgICAgICAgbGV0IG9wZXJhdGlvbjtcbiAgICAgICAgbGV0IGlzUHJpbWFyeSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBzb3VyY2VPcGVyYXRpb24gPSB0aGlzLmZvcm0uZGF0YXNvdXJjZSAmJiB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9PUEVSQVRJT05fVFlQRSk7XG4gICAgICAgIGlmIChzb3VyY2VPcGVyYXRpb24gJiYgc291cmNlT3BlcmF0aW9uICE9PSAncmVhZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2VPcGVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgLypJZiBPcGVyYXRpb25UeXBlIGlzIG5vdCBzZXQgdGhlbiBiYXNlZCBvbiB0aGUgZm9ybWRhdGEgb2JqZWN0IHJldHVybiB0aGUgb3BlcmF0aW9uIHR5cGUsXG4gICAgICAgICAgICB0aGlzIGNhc2Ugb2NjdXJzIG9ubHkgaWYgdGhlIGZvcm0gaXMgb3V0c2lkZSBhIGxpdmVncmlkKi9cbiAgICAgICAgLypJZiB0aGUgZm9ybWRhdGEgb2JqZWN0IGhhcyBwcmltYXJ5IGtleSB2YWx1ZSB0aGVuIHJldHVybiB1cGRhdGUgZWxzZSBpbnNlcnQqL1xuICAgICAgICBpZiAodGhpcy5mb3JtLnByaW1hcnlLZXkgJiYgIV8uaXNFbXB0eSh0aGlzLmZvcm0uZm9ybWRhdGEpKSB7XG4gICAgICAgICAgICAvKklmIG9ubHkgb25lIGNvbHVtbiBpcyBwcmltYXJ5IGtleSovXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtLnByaW1hcnlLZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5mb3JtZGF0YVt0aGlzLmZvcm0ucHJpbWFyeUtleVswXV0pIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gTGl2ZV9PcGVyYXRpb25zLlVQREFURTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLypJZiBvbmx5IG5vIGNvbHVtbiBpcyBwcmltYXJ5IGtleSovXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybS5wcmltYXJ5S2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIF8uZm9yRWFjaCh0aGlzLmZvcm0uZm9ybWRhdGEsICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbWFyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQcmltYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IExpdmVfT3BlcmF0aW9ucy5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qSWYgbXVsdGlwbGUgY29sdW1ucyBhcmUgcHJpbWFyeSBrZXkqL1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpc1ByaW1hcnkgPSBfLnNvbWUodGhpcy5mb3JtLnByaW1hcnlLZXksIChwcmltYXJ5S2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uZm9ybWRhdGFbcHJpbWFyeUtleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzUHJpbWFyeSkge1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3BlcmF0aW9uIHx8IExpdmVfT3BlcmF0aW9ucy5JTlNFUlQ7XG4gICAgfVxuXG4gICAgZ2V0UHJldkRhdGFWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHByZXZEYXRhVmFsdWVzID0gXy5mcm9tUGFpcnMoXy5tYXAodGhpcy5mb3JtLnByZXZEYXRhVmFsdWVzLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtpdGVtLmtleSwgaXRlbS52YWx1ZV07XG4gICAgICAgIH0pKTsgLy8gQ29udmVydCBvZiBhcnJheSBvZiB2YWx1ZXMgdG8gYW4gb2JqZWN0XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgZmllbGQudmFsdWUgPSBwcmV2RGF0YVZhbHVlc1tmaWVsZC5rZXldIHx8ICcnO1xuICAgICAgICAgICAgZmllbGQucmVzZXREaXNwbGF5SW5wdXQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcmV2RGF0YVZhbHVlcztcbiAgICB9XG5cbiAgICBzYXZlUHJldkRhdGFWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5wcmV2RGF0YVZhbHVlcyA9IHRoaXMuZm9ybS5mb3JtRmllbGRzLm1hcCgob2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geydrZXknOiBvYmoua2V5LCAndmFsdWUnOiBvYmoudmFsdWV9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhckRhdGEoKSB7XG4gICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb3JtLmVtcHR5RGF0YU1vZGVsKCk7XG4gICAgfVxuXG4gICAgc2V0UmVhZG9ubHlGaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgZmllbGQuc2V0UmVhZE9ubHlTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgbGV0IHByZXZEYXRhVmFsdWVzO1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXRGb3JtU3RhdGUoKTtcbiAgICAgICAgcHJldkRhdGFWYWx1ZXMgPSB0aGlzLmdldFByZXZEYXRhVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IERhdGFUeXBlLkJMT0IgfHwgZmllbGQud2lkZ2V0dHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXRGaWxlVXBsb2FkV2lkZ2V0KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBmaWVsZC5ocmVmID0gdGhpcy5nZXRCbG9iVVJMKHByZXZEYXRhVmFsdWVzLCBmaWVsZC5rZXksIGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKT8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWludmFsaWQnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybS5jb25zdHJ1Y3REYXRhT2JqZWN0KCk7XG4gICAgfVxuXG4gICAgY2xvc2VEaWFsb2coKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jbG9zZSh0aGlzLmZvcm0uZGlhbG9nSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICB0aGlzLmZvcm0uY2xlYXJNZXNzYWdlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgLypTaG93IHRoZSBwcmV2aW91cyBzZWxlY3RlZCBkYXRhKi9cbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmdldFByZXZmb3JtRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5fbGl2ZVRhYmxlUGFyZW50Lm9uQ2FuY2VsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICBXTVMtMTg3NTk6IGRpYWxvZyBjbG9zZSBpcyBjYWxsaW5nIHR3aWNlIGFuZCBkaWFsb2cgb25IaWRkZW4gc3Vic2NyaXB0aW9uIGlzIGNhbGxpbmcgb25jZSBmcm9tIHRoZSBsaWJyYXJ5XG4gICAgICAgICAgICAgIGR1ZSB0byB0aGlzIGlmIHdlIGhhdmUgYW5vdGhlciBkaWFsb2cgaW5zaWRlIGxpdmVmb3JtIGFuZCBpZiB3ZSBjbGljayBvbiBjYW5jZWwgb2Ygc2Vjb25kIGRpYWxvZyB0aGUgbGlicmFyeVxuICAgICAgICAgICAgICBzdWJzY3JpcHRpb24gaXMgY2FsbGluZyBmb3IgYm90aCB0aGUgZGlhbG9ncy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xuICAgICAgICB9XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cblxuXG4gICAgZGVsZXRlKGNhbGxCYWNrRm4pIHtcbiAgICAgICAgdGhpcy5mb3JtLnJlc2V0Rm9ybVN0YXRlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlID0gTGl2ZV9PcGVyYXRpb25zLkRFTEVURTtcbiAgICAgICAgdGhpcy5mb3JtLnByZXZEYXRhT2JqZWN0ID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZm9ybS5mb3JtZGF0YSB8fCB7fSk7XG4gICAgICAgIHRoaXMuZm9ybS5zYXZlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNhbGxCYWNrRm4pO1xuICAgIH1cblxuICAgIC8vIEZ1bmN0aW9uIHVzZSB0byBzYXZlIHRoZSBmb3JtIGFuZCBvcGVuIG5ldyBmb3JtIGFmdGVyIHNhdmVcbiAgICBzYXZlQW5kTmV3KCkge1xuICAgICAgICB0aGlzLnNhdmUodW5kZWZpbmVkLCB0cnVlLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gRnVuY3Rpb24gdXNlIHRvIHNhdmUgdGhlIGZvcm0gYW5kIG9wZW4gbmV3IGZvcm0gYWZ0ZXIgc2F2ZVxuICAgIHNhdmVBbmRWaWV3KCkge1xuICAgICAgICB0aGlzLnNhdmUodW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgc3VibWl0Rm9ybSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zYXZlKCRldmVudCk7XG4gICAgfVxuXG4gICAgc2F2ZShldmVudD8sIHVwZGF0ZU1vZGU/LCBuZXdGb3JtPykge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybS5kYXRhc291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGEsIHByZXZEYXRhLCBvcGVyYXRpb25UeXBlLCBpc1ZhbGlkO1xuICAgICAgICBjb25zdCByZXF1ZXN0RGF0YTogYW55ID0ge307XG5cbiAgICAgICAgb3BlcmF0aW9uVHlwZSA9IHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlID0gdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgfHwgdGhpcy5maW5kT3BlcmF0aW9uVHlwZSgpO1xuXG4gICAgICAgIC8vIERpc2FibGUgdGhlIGZvcm0gc3VibWl0IGlmIGZvcm0gaXMgaW4gaW52YWxpZCBzdGF0ZS5cbiAgICAgICAgaWYgKHRoaXMuZm9ybS52YWxpZGF0ZUZpZWxkc09uU3VibWl0KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGEgPSBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLmNvbnN0cnVjdERhdGFPYmplY3QoKSk7XG4gICAgICAgIHByZXZEYXRhID0gdGhpcy5mb3JtLnByZXZmb3JtRmllbGRzID8gdGhpcy5mb3JtLmNvbnN0cnVjdERhdGFPYmplY3QodHJ1ZSkgOiBkYXRhO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpc1ZhbGlkID0gdGhpcy5mb3JtLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXNlcnZpY2VjYWxsJywgeyRldmVudDogZXZlbnQsICRvcGVyYXRpb246IHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlLCAkZGF0YTogZGF0YSwgb3B0aW9uczogcmVxdWVzdERhdGF9KTtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1ZhbGlkICYmIGlzVmFsaWQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udG9nZ2xlTWVzc2FnZSh0cnVlLCBpc1ZhbGlkLmVycm9yLCAnZXJyb3InKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlID09PSAnQWJvcnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgb3BlcmF0aW9uIGlzIHVwZGF0ZSwgZm9ybSBpcyBub3QgdG91Y2hlZCBhbmQgY3VycmVudCBkYXRhIGFuZCBwcmV2aW91cyBkYXRhIGlzIHNhbWUsIFNob3cgbm8gY2hhbmdlcyBkZXRlY3RlZCBtZXNzYWdlXG4gICAgICAgIGlmICh0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLlVQREFURSAmJiB0aGlzLmZvcm0ubmdmb3JtICYmIHRoaXMuZm9ybS5uZ2Zvcm0ucHJpc3RpbmUgJiZcbiAgICAgICAgICAgICAgICAodGhpcy5mb3JtLmlzU2VsZWN0ZWQgJiYgXy5pc0VxdWFsKGRhdGEsIHByZXZEYXRhKSkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKHRydWUsIHRoaXMuZm9ybS5hcHBMb2NhbGUuTUVTU0FHRV9OT19DSEFOR0VTLCAnaW5mbycsICcnKTtcbiAgICAgICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3REYXRhLnJvdyA9IGRhdGE7XG4gICAgICAgIHJlcXVlc3REYXRhLnRyYW5zZm9ybSA9IHRydWU7XG4gICAgICAgIHJlcXVlc3REYXRhLnNraXBOb3RpZmljYXRpb24gPSB0cnVlO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFKSB7XG4gICAgICAgICAgICByZXF1ZXN0RGF0YS5yb3dEYXRhID0gdGhpcy5mb3JtLmZvcm1kYXRhO1xuICAgICAgICAgICAgcmVxdWVzdERhdGEucHJldkRhdGEgPSBwcmV2RGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBlcmZvcm1EYXRhT3BlcmF0aW9uKHRoaXMuZm9ybS5kYXRhc291cmNlLCByZXF1ZXN0RGF0YSwge1xuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogb3BlcmF0aW9uVHlwZVxuICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gb3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLklOU0VSVCA/IHRoaXMuZm9ybS5pbnNlcnRtZXNzYWdlIDogKG9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5VUERBVEUgP1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS51cGRhdGVtZXNzYWdlIDogdGhpcy5mb3JtLmRlbGV0ZW1lc3NhZ2UpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgICAgICAgaWYgKG9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5ERUxFVEUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXF1ZXN0RGF0YS5yb3c7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmVtcHR5RGF0YU1vZGVsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnByZXZEYXRhVmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybS5vblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udG9nZ2xlTWVzc2FnZSh0cnVlLCBtc2csICdzdWNjZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHQgdGhlIGN1cnJlbnQgdXBkYXRlZCByb3dcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudC5vblJlc3VsdChvcGVyYXRpb25UeXBlLCByZXNwb25zZSwgbmV3Rm9ybSwgdXBkYXRlTW9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8qZ2V0IHVwZGF0ZWQgZGF0YSB3aXRob3V0IHJlZnJlc2hpbmcgcGFnZSovXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5MSVNUX1JFQ09SRFMsIHtcbiAgICAgICAgICAgICAgICAgICAgJ3NraXBUb2dnbGVTdGF0ZSc6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVNvdXJjZVVwZGF0ZShyZXNwb25zZSwgbmV3Rm9ybSwgdXBkYXRlTW9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdyZXN1bHQnOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm0ub25FcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKHRydWUsIGVycm9yLCAnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ3Jlc3VsdCc6IGVycm9yLFxuICAgICAgICAgICAgICAgICdzdGF0dXMnOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAvLyByZXNldCB0aGUgZm9ybSB0byBwcmlzdGluZSBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0Rm9ybVN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmZvcm0ub25SZXN1bHRDYihyZXNwb25zZS5yZXN1bHQsIHJlc3BvbnNlLnN0YXR1cywgZXZlbnQpO1xuICAgICAgICB9KTtcblxuXG4gICAgfVxufVxuIl19
@@ -1927,7 +1927,6 @@ class FormFieldDirective extends StylableComponent {
1927
1927
  // explicitly checking for input value or -webkit-autofill to see whether there are any autofilled fields - WMS-20141
1928
1928
  const hasValue = ((isDefined(val) && val !== '' && val !== null) || captionEl.find('input').val()) || captionEl.find('input:-webkit-autofill').length;
1929
1929
  this.app.notify('captionPositionAnimate', {
1930
- isSelect: true,
1931
1930
  displayVal: hasValue,
1932
1931
  nativeEl: captionEl,
1933
1932
  isSelectMultiple: this.formWidget && this.formWidget.multiple,
@@ -2854,8 +2853,10 @@ class LiveFormDirective {
2854
2853
  this.savePrevDataValues();
2855
2854
  }, 250);
2856
2855
  // If parent live table is present and this form is first child of live table, set this form instance on livetable
2857
- if (liveTable && !this.form.parentForm) {
2858
- this.form._liveTableParent = liveTable;
2856
+ if (liveTable) {
2857
+ if (!this.form.parentForm) {
2858
+ this.form._liveTableParent = liveTable;
2859
+ }
2859
2860
  this.form.isLayoutDialog = liveTable.isLayoutDialog;
2860
2861
  liveTable.onFormReady(this.form);
2861
2862
  }