@wavemaker/app-ng-runtime 11.5.2-next.141139 → 11.5.2-next.141143

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 (62) hide show
  1. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +9 -9
  2. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +10 -10
  3. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +9 -9
  4. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  5. app-ng-runtime/components/basic/search/bundles/index.umd.js +2 -2
  6. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +3 -3
  7. app-ng-runtime/components/basic/search/fesm2022/index.mjs +2 -2
  8. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  9. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +5 -4
  10. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +5 -5
  11. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.props.mjs +2 -1
  12. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -4
  13. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  14. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -4
  15. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +5 -5
  16. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.props.mjs +2 -1
  17. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -4
  18. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  19. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +163 -30
  20. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  21. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +164 -31
  22. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +163 -30
  23. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  24. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +5 -4
  25. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  26. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.props.mjs +2 -1
  27. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +5 -4
  28. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  29. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -4
  30. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +5 -5
  31. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.props.mjs +2 -1
  32. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -4
  33. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  34. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +5 -4
  35. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +5 -5
  36. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.props.mjs +2 -1
  37. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +5 -4
  38. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  39. app-ng-runtime/components/input/epoch/bundles/index.umd.js +4 -4
  40. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +3 -3
  41. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +3 -3
  42. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +4 -4
  43. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  44. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +2 -2
  45. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +3 -3
  46. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +2 -2
  47. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  48. app-ng-runtime/core/bundles/index.umd.js +23 -1
  49. app-ng-runtime/core/esm2022/public_api.mjs +2 -1
  50. app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
  51. app-ng-runtime/core/esm2022/utils/expression-parser.mjs +1 -2
  52. app-ng-runtime/core/fesm2022/index.mjs +25 -4
  53. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  54. app-ng-runtime/core/public_api.d.ts +1 -0
  55. app-ng-runtime/core/services/custom-icons-loader.service.d.ts +7 -0
  56. app-ng-runtime/package.json +1 -1
  57. app-ng-runtime/runtime/base/bundles/index.umd.js +5 -3
  58. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +3 -1
  59. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +7 -5
  60. app-ng-runtime/runtime/base/fesm2022/index.mjs +5 -3
  61. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  62. app-ng-runtime/scripts/datatable/datatable.js +1 -1
@@ -310,7 +310,7 @@
310
310
  } if (rf & 2) {
311
311
  i0__namespace.ɵɵclassMap(ctx.class);
312
312
  i0__namespace.ɵɵpropertyInterpolate2("containerClass", "app-popover animated ", ctx.contentanimation, " ", ctx.popoverContainerCls, "");
313
- i0__namespace.ɵɵproperty("popover", ctx.popoverTemplate)("popoverContext", ctx.context)("popoverTitle", ctx.title)("placement", ctx.popoverplacement)("outsideClick", ctx.outsideclick)("triggers", ctx.event)("container", ctx.containerTarget || "body")("isOpen", ctx.isOpen)("tabindex", ctx.tabindex)("name", ctx.name)("ngClass", i0__namespace.ɵɵpureFunction1(18, _c2, !ctx.canPopoverOpen))("adaptivePosition", ctx.adaptiveposition);
313
+ i0__namespace.ɵɵproperty("popover", ctx.popoverTemplate)("popoverContext", ctx.context)("popoverTitle", ctx.title)("placement", ctx.popoverplacement)("outsideClick", ctx.outsideclick)("triggers", ctx.event)("container", ctx.containerTarget || ".wm-app")("isOpen", ctx.isOpen)("tabindex", ctx.tabindex)("name", ctx.name)("ngClass", i0__namespace.ɵɵpureFunction1(18, _c2, !ctx.canPopoverOpen))("adaptivePosition", ctx.adaptiveposition);
314
314
  i0__namespace.ɵɵattribute("aria-label", ctx.hint || "Popover menu")("aria-expanded", ctx.isOpen);
315
315
  } }, dependencies: [i2__namespace.NgClass, i3__namespace.AnchorComponent, i4__namespace.PopoverDirective], encapsulation: 2 }); }
316
316
  }
@@ -318,7 +318,7 @@
318
318
  type: i0.Component,
319
319
  args: [{ selector: 'wm-popover', providers: [
320
320
  base.provideAsWidgetRef(PopoverComponent)
321
- ], template: "<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || 'body'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n" }]
321
+ ], template: "<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || '.wm-app'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n" }]
322
322
  }], function () { return [{ type: i0__namespace.Injector }, { type: i1__namespace.App }]; }, { bsPopoverDirective: [{
323
323
  type: i0.ViewChild,
324
324
  args: [i4.PopoverDirective]
@@ -258,7 +258,7 @@ export class PopoverComponent extends StylableComponent {
258
258
  } if (rf & 2) {
259
259
  i0.ɵɵclassMap(ctx.class);
260
260
  i0.ɵɵpropertyInterpolate2("containerClass", "app-popover animated ", ctx.contentanimation, " ", ctx.popoverContainerCls, "");
261
- i0.ɵɵproperty("popover", ctx.popoverTemplate)("popoverContext", ctx.context)("popoverTitle", ctx.title)("placement", ctx.popoverplacement)("outsideClick", ctx.outsideclick)("triggers", ctx.event)("container", ctx.containerTarget || "body")("isOpen", ctx.isOpen)("tabindex", ctx.tabindex)("name", ctx.name)("ngClass", i0.ɵɵpureFunction1(18, _c2, !ctx.canPopoverOpen))("adaptivePosition", ctx.adaptiveposition);
261
+ i0.ɵɵproperty("popover", ctx.popoverTemplate)("popoverContext", ctx.context)("popoverTitle", ctx.title)("placement", ctx.popoverplacement)("outsideClick", ctx.outsideclick)("triggers", ctx.event)("container", ctx.containerTarget || ".wm-app")("isOpen", ctx.isOpen)("tabindex", ctx.tabindex)("name", ctx.name)("ngClass", i0.ɵɵpureFunction1(18, _c2, !ctx.canPopoverOpen))("adaptivePosition", ctx.adaptiveposition);
262
262
  i0.ɵɵattribute("aria-label", ctx.hint || "Popover menu")("aria-expanded", ctx.isOpen);
263
263
  } }, dependencies: [i2.NgClass, i3.AnchorComponent, i4.PopoverDirective], encapsulation: 2 }); }
264
264
  }
@@ -266,7 +266,7 @@ export class PopoverComponent extends StylableComponent {
266
266
  type: Component,
267
267
  args: [{ selector: 'wm-popover', providers: [
268
268
  provideAsWidgetRef(PopoverComponent)
269
- ], template: "<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || 'body'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n" }]
269
+ ], template: "<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || '.wm-app'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n" }]
270
270
  }], function () { return [{ type: i0.Injector }, { type: i1.App }]; }, { bsPopoverDirective: [{
271
271
  type: ViewChild,
272
272
  args: [PopoverDirective]
@@ -280,4 +280,4 @@ export class PopoverComponent extends StylableComponent {
280
280
  type: ContentChild,
281
281
  args: ['partial']
282
282
  }] }); })();
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9wb3BvdmVyL3NyYy9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL3BvcG92ZXIvc3JjL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFFUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXZELE9BQU8sRUFDSCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDaEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUNILGNBQWMsRUFDZCx1QkFBdUIsRUFFdkIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUk5QyxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLFlBQVk7SUFDeEIsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE9BQU8sRUFBRSxrQkFBa0I7Q0FDOUIsQ0FBQztBQUVGLElBQUksYUFBK0IsQ0FBQztBQVVwQyxNQUFNLE9BQU8sZ0JBQWlC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QkFGZCxnQkFBZ0I7Ozs7Ozs4Q0FwQ2hCO2dCQUNQLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDO2FBQ3ZDO1lDckRMLCtCQXFDK0M7WUEvQjNDLDRGQUFXLGFBQVMsSUFBQyxpRkFDVCxjQUFVLElBREQscUZBK0JWLGtDQUE4QixJQS9CcEI7WUFnQ3pCLGlCQUFJOztZQXpCQSx3QkFBZTtZQUxmLDRIQUFrRjtZQVJuRiw2Q0FBMkIsK0JBQUEsMkJBQUEsbUNBQUEsa0NBQUEsdUJBQUEsNENBQUEsc0JBQUEsMEJBQUEsa0JBQUEsNkRBQUEsMENBQUE7WUFpQjFCLHdEQUEwQyw2QkFBQTs7O3VGRHVDakMsZ0JBQWdCO2NBUjVCLFNBQVM7MkJBQ0ksWUFBWSxhQUVYO29CQUNQLGtCQUFrQixrQkFBa0I7aUJBQ3ZDOzZFQWtDb0Msa0JBQWtCO2tCQUF0RCxTQUFTO21CQUFDLGdCQUFnQjtZQUNZLFNBQVM7a0JBQS9DLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNWLGVBQWU7a0JBQXpDLFlBQVk7bUJBQUMsV0FBVztZQUNBLFVBQVU7a0JBQWxDLFlBQVk7bUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtQb3BvdmVyRGlyZWN0aXZlfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuXG5pbXBvcnQge1xuICAgIGFkZENsYXNzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgQXBwLFxuICAgIGZpbmRSb290Q29udGFpbmVyLFxuICAgIHNldENTU0Zyb21PYmpcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBVVRPQ0xPU0VfVFlQRSxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBJV2lkZ2V0Q29uZmlnLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBzdHlsZXJcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9wb3BvdmVyLnByb3BzJztcblxuZGVjbGFyZSBjb25zdCBfLCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtcG9wb3Zlci13cmFwcGVyJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXBvcG92ZXInLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbmNvbnN0IGV2ZW50c01hcCA9IHtcbiAgICBjbGljazogJ2NsaWNrJyxcbiAgICBob3ZlcjogJ21vdXNlZW50ZXI6Y2xpY2snLFxuICAgIGRlZmF1bHQ6ICdjbGljayBtb3VzZWVudGVyJ1xufTtcblxubGV0IGFjdGl2ZVBvcG92ZXI6IFBvcG92ZXJDb21wb25lbnQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoUG9wb3ZlckNvbXBvbmVudClcbiAgICBdXG59KVxuXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIGV2ZW50OiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgY2xvc2VQb3BvdmVyVGltZW91dDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9wb3ZlckNvbnRhaW5lckNscztcbiAgICBwdWJsaWMgY2FuUG9wb3Zlck9wZW4gPSB0cnVlO1xuICAgIHByaXZhdGUgV2lkZ2V0cztcbiAgICBwcml2YXRlIFZhcmlhYmxlcztcbiAgICBwcml2YXRlIEFjdGlvbnM7XG5cbiAgICBwdWJsaWMgaW50ZXJhY3Rpb246IHN0cmluZztcbiAgICBwdWJsaWMgcG9wb3ZlcmFycm93OiBib29sZWFuO1xuICAgIHB1YmxpYyBwb3BvdmVyd2lkdGg6IHN0cmluZztcbiAgICBwdWJsaWMgcG9wb3ZlcmhlaWdodDogc3RyaW5nO1xuICAgIHB1YmxpYyBjb250ZW50YW5pbWF0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIGNvbnRlbnRzb3VyY2U6IHN0cmluZztcbiAgICBwdWJsaWMgY29udGVudDogc3RyaW5nO1xuICAgIHB1YmxpYyBwb3BvdmVycGxhY2VtZW50OiBzdHJpbmc7XG4gICAgcHVibGljIG91dHNpZGVjbGljazogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXV0b2Nsb3NlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgICBwdWJsaWMgdGFiaW5kZXg6IGFueTtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBhZGFwdGl2ZXBvc2l0aW9uOmJvb2xlYW47XG4gICAgcHVibGljIGNvbnRhaW5lclRhcmdldDogc3RyaW5nO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKFBvcG92ZXJEaXJlY3RpdmUpIHByaXZhdGUgYnNQb3BvdmVyRGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ2FuY2hvcicsIHsgc3RhdGljOiB0cnVlIH0pIGFuY2hvclJlZjogRWxlbWVudFJlZjtcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSBwb3BvdmVyVGVtcGxhdGU7XG4gICAgQENvbnRlbnRDaGlsZCgncGFydGlhbCcpIHBhcnRpYWxSZWY7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBwcml2YXRlIGFwcDogQXBwKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRhaW5lckNscyA9IGBhcHAtcG9wb3Zlci0ke3RoaXMud2lkZ2V0SWR9YDtcbiAgICB9XG5cbiAgICAvLyBUaGlzIG1laHRvZCBpcyB1c2VkIHRvIHNob3cvb3BlbiB0aGUgcG9wb3Zlci4gVGhpcyByZWZlcnMgdG8gdGhlIHNhbWUgbWV0aG9kIHNob3dQb3BvdmVyLlxuICAgIHB1YmxpYyBvcGVuKCkge1xuICAgICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBtZWh0b2QgaXMgdXNlZCB0byBoaWRlL2Nsb3NlIHRoZSBwb3BvdmVyLlxuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIG9uIGhpZGluZyBwb3BvdmVyXG4gICAgcHVibGljIG9uSGlkZGVuKCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2hpZGUnLCB7JGV2ZW50OiB7dHlwZTogJ2hpZGUnfX0pO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9jdXNUb1BvcG92ZXJMaW5rKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRqdXN0UG9wb3ZlckFycm93UG9zaXRpb24ocG9wb3ZlckVsZW0sIHBvcG92ZXJMZWZ0U2hpZnQpIHtcbiAgICAgICAgdGhpcy5ic1BvcG92ZXJEaXJlY3RpdmUuX3BvcG92ZXIuX25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgcG9wb3ZlckVsZW0uZmluZCgnLnBvcG92ZXItYXJyb3cnKS5jc3MoJ2xlZnQnLCBwb3BvdmVyTGVmdFNoaWZ0ICsgJ3B4Jyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUG9wb3ZlclBvc3Rpb24oZWxlbWVudCkge1xuXG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtID0gJChlbGVtZW50KTtcbiAgICAgICAgbGV0IHBvcG92ZXJMZWZ0ID0gIHBvcG92ZXJFbGVtLm9mZnNldCgpLmxlZnQ7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJXaWR0aCA9IHBvcG92ZXJFbGVtWzBdLm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCB2aWV3UG9ydFdpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgIGNvbnN0IHBhcmVudERpbWVzaW9uID0gdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgLy8gQWRqdXN0aW5nIHBvcG92ZXIgcG9zaXRpb24sIGlmIGl0IGlzIG5vdCB2aXNpYmxlIGF0IGxlZnQgc2lkZVxuICAgICAgICBpZiAocG9wb3ZlckxlZnQgPCAwKSB7XG4gICAgICAgICAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbihwb3BvdmVyRWxlbSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzUG9wb3ZlckRpcmVjdGl2ZS5fcG9wb3Zlcik7XG4gICAgICAgICAgICBjb25zdCBwb3BvdmVyTGVmdFNoaWZ0ID0gNDtcbiAgICAgICAgICAgIGNvbnN0IGFycm93TGVmdFNoaWZ0ID0gKHBhcmVudERpbWVzaW9uLmxlZnQgKyAocGFyZW50RGltZXNpb24ud2lkdGggLyAyKSkgLSBwb3BvdmVyTGVmdFNoaWZ0O1xuICAgICAgICAgICAgdGhpcy5hZGp1c3RQb3BvdmVyQXJyb3dQb3NpdGlvbihwb3BvdmVyRWxlbSwgYXJyb3dMZWZ0U2hpZnQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkanVzdGluZyBwb3BvdmVyIHBvc2l0aW9uLCBpZiBpdCBpcyBub3QgdmlzaWJsZSBhdCByaWdodCBzaWRlXG4gICAgICAgIGlmIChwb3BvdmVyTGVmdCArIHBvcG92ZXJXaWR0aCA+IHZpZXdQb3J0V2lkdGgpIHtcbiAgICAgICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMocG9wb3ZlckVsZW0sIHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5ic1BvcG92ZXJEaXJlY3RpdmUuX3BvcG92ZXIpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcG9wb3ZlckxlZnQgPSBwb3BvdmVyRWxlbS5vZmZzZXQoKS5sZWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcG92ZXJMZWZ0QWRqdXN0ID0gKHBvcG92ZXJMZWZ0ICsgcG9wb3ZlcldpZHRoKSAtIHZpZXdQb3J0V2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9wb3ZlckxlZnRTaGlmdCA9ICBwb3BvdmVyTGVmdCAtIHBvcG92ZXJMZWZ0QWRqdXN0O1xuICAgICAgICAgICAgICAgIGxldCBhcnJvd0xlZnRTaGlmdCA7XG4gICAgICAgICAgICAgICAgaWYocG9wb3ZlckxlZnQ8PTEwMCl7XG4gICAgICAgICAgICAgICAgICAgIGFycm93TGVmdFNoaWZ0ID0gIChwYXJlbnREaW1lc2lvbi5sZWZ0ICsgKHBhcmVudERpbWVzaW9uLndpZHRoIC8gMikpIC0gcG9wb3ZlckxlZnQ7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGFycm93TGVmdFNoaWZ0ID0gKHBhcmVudERpbWVzaW9uLmxlZnQgKyAocGFyZW50RGltZXNpb24ud2lkdGggLyAyKSkgLSBwb3BvdmVyTGVmdFNoaWZ0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih2aWV3UG9ydFdpZHRoID4gNTAwKXtcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dMZWZ0U2hpZnQgKz0gMzA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RQb3BvdmVyQXJyb3dQb3NpdGlvbihwb3BvdmVyRWxlbSwgYXJyb3dMZWZ0U2hpZnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIG9uIHNob3dpbmcgcG9wb3ZlclxuICAgIHB1YmxpYyBvblNob3duKCkge1xuICAgICAgICBjb25zdCByb290ID0gZmluZFJvb3RDb250YWluZXIodGhpcy4kZWxlbWVudCk7XG4gICAgICAgIC8vIGlmIHBhZ2Ugc3R5bGVzIGhhdmUgdG8gYmUgYXBwbGllZCB0byBwb3BvdmVyIHRoZW4gcG9wb3ZlciBoYXMgdG8gYmUgY2hpbGQgb2YgcGFnZSBlbGVtZW50LlxuICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgICAgJCgnYm9keSA+IHBvcG92ZXItY29udGFpbmVyJykud3JhcCgnPCcgKyByb290ICsgJy8+Jyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRml4IGZvciBbV01TLTI1MTI1XTogTm90IGNsb3NpbmcgdGhlIGV4aXN0aW5nIG9wZW5lZCBwb3BvdmVycyB3aGVuIHRoZSBhdXRvY2xvc2UgcHJvcGVydHkgaXMgRElTQUJMRURcbiAgICAgICAgaWYgKGFjdGl2ZVBvcG92ZXIgJiYgYWN0aXZlUG9wb3Zlci5pc09wZW4gJiYgYWN0aXZlUG9wb3Zlci5hdXRvY2xvc2UgIT09IEFVVE9DTE9TRV9UWVBFLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBhY3RpdmVQb3BvdmVyLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgYWN0aXZlUG9wb3ZlciA9IHRoaXM7XG4gICAgICAgIGFjdGl2ZVBvcG92ZXIuaXNPcGVuID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBwb3BvdmVyQ29udGFpbmVyICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMucG9wb3ZlckNvbnRhaW5lckNsc31gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgc2V0Q1NTRnJvbU9iaihwb3BvdmVyQ29udGFpbmVyLCB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMucG9wb3ZlcmhlaWdodCxcbiAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnBvcG92ZXJ3aWR0aCxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBvcG92ZXJ3aWR0aFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXJhcnJvdykge1xuICAgICAgICAgICAgYWRkQ2xhc3MocG9wb3ZlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuYXJyb3cnKSBhcyBIVE1MRWxlbWVudCwgJ2hpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmludGVyYWN0aW9uID09PSAnaG92ZXInIHx8IHRoaXMuaW50ZXJhY3Rpb24gPT09ICdkZWZhdWx0Jykge1xuXG4gICAgICAgICAgICAvLyBkbyBub3QgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaGVyZVxuICAgICAgICAgICAgLy8gYXR0YWNoaW5nIHRoZSBldmVudCB0aGlzIHdheSB3aWxsIG92ZXJyaWRlIHRoZSBleGlzdGluZyBldmVudCBoYW5kbGVyc1xuICAgICAgICAgICAgcG9wb3ZlckNvbnRhaW5lci5vbm1vdXNlZW50ZXIgPSAoKSA9PiBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVBvcG92ZXJUaW1lb3V0KTtcbiAgICAgICAgICAgIHBvcG92ZXJDb250YWluZXIub25tb3VzZWxlYXZlID0gKCkgPT4gdGhpcy5oaWRlUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5vbm1vdXNlZW50ZXIgPSAoKSA9PiBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVBvcG92ZXJUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQub25tb3VzZWxlYXZlID0gKCkgPT4gdGhpcy5oaWRlUG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRlUmVnaXN0ZXIgPSB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHBvcG92ZXJDb250YWluZXIsICdrZXlkb3duLmVzYycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNldEZvY3VzVG9Qb3BvdmVyTGluaygpO1xuICAgICAgICAgICAgZGVSZWdpc3RlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcG9wb3ZlclN0YXJ0QnRuOiBIVE1MRWxlbWVudCA9IHBvcG92ZXJDb250YWluZXIucXVlcnlTZWxlY3RvcignLnBvcG92ZXItc3RhcnQnKTtcbiAgICAgICAgY29uc3QgcG9wb3ZlckVuZEJ0bjogSFRNTEVsZW1lbnQgPSBwb3BvdmVyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5wb3BvdmVyLWVuZCcpO1xuICAgICAgICBwb3BvdmVyU3RhcnRCdG4ub25rZXlkb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgU2hpZnQrVGFiIGtleVxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJzUG9wb3ZlckRpcmVjdGl2ZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvY3VzVG9Qb3BvdmVyTGluaygpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7ICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBwb3BvdmVyRW5kQnRuLm9ua2V5ZG93biA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIFRhYiBrZXlcbiAgICAgICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNQb3BvdmVyRGlyZWN0aXZlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNUb1BvcG92ZXJMaW5rKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTsgICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy9XaGVuZXZlciBhdXRvY2xvc2UgcHJvcGVydHkgaXMgc2V0IHRvICdhbHdheXMnLCBhZGRpbmcgdGhlIG9uY2xpY2sgbGlzdGVuZXIgdG8gdGhlIHBvcG92ZXIgY29udGFpbmVyIHRvIGNsb3NlIHRoZSBwb3BvdmVyLlxuICAgICAgICBpZiAodGhpcy5hdXRvY2xvc2UgPT09IEFVVE9DTE9TRV9UWVBFLkFMV0FZUykge1xuICAgICAgICAgICAgcG9wb3ZlckNvbnRhaW5lci5vbmNsaWNrID0gKCkgPT4gdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwb3BvdmVyU3RhcnRCdG4uZm9jdXMoKSwgNTApO1xuICAgICAgICAvLyBBZGp1c3RpbmcgcG9wb3ZlciBwb3NpdGlvbiBpZiB0aGUgcG9wb3ZlciBwbGFjZW1lbnQgaXMgdG9wIG9yIGJvdHRvbVxuICAgICAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWRhcHRpdmVwb3NpdGlvbiApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvcG92ZXJQb3N0aW9uKHBvcG92ZXJDb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdHJpZ2dlcmluZyBvbmxvYWQgYW5kIG9uc2hvdyBldmVudHMgYWZ0ZXIgcG9wb3ZlciBjb250ZW50IGhhcyByZW5kZXJlZFxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyUG9wb3ZlckV2ZW50cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmlnZ2VyUG9wb3ZlckV2ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudHNvdXJjZSA9PT0gJ3BhcnRpYWwnKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5jZWxTdWJzY3JpcHRpb24gPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ3BhcnRpYWxMb2FkZWQnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhckVsZSA9IHRoaXMucGFydGlhbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgIGxldCBwYXJ0aWFsU2NvcGU7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFyRWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRpYWxTY29wZSAgPSBwYXJFbGUud2lkZ2V0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLldpZGdldHMgICA9IHBhcnRpYWxTY29wZS5XaWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IHBhcnRpYWxTY29wZS5WYXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQWN0aW9ucyAgID0gcGFydGlhbFNjb3BlLkFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnbG9hZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Nob3cnLCB7JGV2ZW50OiB7dHlwZTogJ3Nob3cnfX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYW5jZWxTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5XaWRnZXRzICAgPSB0aGlzLnZpZXdQYXJlbnQuV2lkZ2V0cztcbiAgICAgICAgICAgIHRoaXMuVmFyaWFibGVzID0gdGhpcy52aWV3UGFyZW50LlZhcmlhYmxlcztcbiAgICAgICAgICAgIHRoaXMuQWN0aW9ucyAgID0gdGhpcy52aWV3UGFyZW50LkFjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Nob3cnLCB7JGV2ZW50OiB7dHlwZTogJ3Nob3cnfX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlUG9wb3ZlcigpIHtcbiAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXJUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmlzT3BlbiA9IGZhbHNlLCA1MDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1BvcG92ZXIoKSB7XG4gICAgICAgIHRoaXMuYnNQb3BvdmVyRGlyZWN0aXZlLnNob3coKTtcbiAgICB9XG5cbiAgICBvblBvcG92ZXJBbmNob3JLZXlkb3duKCRldmVudCkge1xuICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBjb250ZW50IGF2YWlsYWJsZSwgdGhlIHBvcG92ZXIgc2hvdWxkIG5vdCBvcGVuIHRocm91Z2ggZW50ZXIga2V5LiBTbyBjaGVja2luZyB3aGV0aGVyIHRoZSBjYW5Qb3BvdmVyT3BlbiBmbGFnIGlzIHRydWUgb3Igbm90LlxuICAgICAgICBpZiAoIXRoaXMuY2FuUG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdjb250ZW50c291cmNlJykge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gcGFydGlhbCBjb250ZW50IGF2YWlsYWJsZSwgdGhlIHBvcG92ZXIgc2hvdWxkIG5vdCBvcGVuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50c291cmNlID09PSAncGFydGlhbCcgJiYgIXRoaXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuUG9wb3Zlck9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnY29udGVudCcgJiYgbnYpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuUG9wb3Zlck9wZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdhdXRvY2xvc2UnKSB7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVjbGljayA9IChudiA9PT0gQVVUT0NMT1NFX1RZUEUuT1VUU0lERUNMSUNLIHx8IG52ID09PSBBVVRPQ0xPU0VfVFlQRS5BTFdBWVMpID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmV2ZW50ID0gZXZlbnRzTWFwW3RoaXMuaW50ZXJhY3Rpb25dO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcih0aGlzLmFuY2hvclJlZi5uYXRpdmVFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJUYXJnZXQgPSBnZXRDb250YWluZXJUYXJnZXRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAvLyBsZXQgcGFyZW50RWxlbVBvcG92ZXIgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkucGFyZW50cygpO1xuICAgICAgICAvLyBpZiAocGFyZW50RWxlbVBvcG92ZXIuY2xvc2VzdCgnW3dtVGFibGVdJykubGVuZ3RoIHx8XG4gICAgICAgIC8vICAgICBwYXJlbnRFbGVtUG9wb3Zlci5jbG9zZXN0KCdbd210YWJzXScpLmxlbmd0aCB8fFxuICAgICAgICAvLyAgICAgcGFyZW50RWxlbVBvcG92ZXIuY2xvc2VzdCgnbW9kYWwtY29udGFpbmVyJykubGVuZ3RoKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFkYXB0aXZlcG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIC8vIEhpZGUgdGhlIHBvcG92ZXIgY29udGFpbmVyIHdoaWxlIGF0dGFjaGluZyB0aGUgbmV4dCBjb21wb25lbnQgYXMgcGFydCBvZiBwYWdlIHJldXNlIHN0cmF0ZWd5LlxuICAgICAgICB0aGlzLmJzUG9wb3ZlckRpcmVjdGl2ZS5oaWRlKCk7XG4gICAgfVxufVxuIiwiPGEgW3BvcG92ZXJdPVwicG9wb3ZlclRlbXBsYXRlXCJcbiAgICBbcG9wb3ZlckNvbnRleHRdPVwiY29udGV4dFwiXG4gICAgW3BvcG92ZXJUaXRsZV09XCJ0aXRsZVwiXG4gICAgW3BsYWNlbWVudF09XCJwb3BvdmVycGxhY2VtZW50XCJcbiAgICBbb3V0c2lkZUNsaWNrXT1cIm91dHNpZGVjbGlja1wiXG4gICAgW3RyaWdnZXJzXT1cImV2ZW50XCJcbiAgICAob25TaG93bik9XCJvblNob3duKClcIlxuICAgIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCJcbiAgICBjb250YWluZXJDbGFzcz1cImFwcC1wb3BvdmVyIGFuaW1hdGVkIHt7Y29udGVudGFuaW1hdGlvbn19IHt7cG9wb3ZlckNvbnRhaW5lckNsc319XCJcbiAgICBbY29udGFpbmVyXT1cImNvbnRhaW5lclRhcmdldCB8fCAnYm9keSdcIlxuICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtjbGFzc109XCJjbGFzc1wiXG4gICAgW25nQ2xhc3NdPVwieydkaXNhYmxlLXBvcG92ZXInOiAhY2FuUG9wb3Zlck9wZW59XCJcbiAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJhZGFwdGl2ZXBvc2l0aW9uXCJcbiAgIGJvdW5kYXJpZXNFbGVtZW50PVwid2luZG93XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImhpbnQgfHwgJ1BvcG92ZXIgbWVudSdcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAjYW5jaG9yXG4gICAgbmFtZS5iaW5kPVwibmFtZVwiXG4gICAgd21BbmNob3JcbiAgICBhbmltYXRpb24uYmluZD1cImFuaW1hdGlvblwiXG4gICAgYmFkZ2V2YWx1ZS5iaW5kPVwiYmFkZ2V2YWx1ZVwiXG4gICAgY2FwdGlvbi5iaW5kPVwiY2FwdGlvblwiXG4gICAgZW5jb2RldXJsLmJpbmQ9XCJlbmNvZGV1cmxcIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIGh5cGVybGluay5iaW5kPVwiaHlwZXJsaW5rXCJcbiAgICBpY29udXJsLmJpbmQ9XCJpY29udXJsXCJcbiAgICBpY29ud2lkdGguYmluZD1cImljb253aWR0aFwiXG4gICAgaWNvbmhlaWdodC5iaW5kPVwiaWNvbmhlaWdodFwiXG4gICAgaWNvbm1hcmdpbi5iaW5kPVwiaWNvbm1hcmdpblwiXG4gICAgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGljb25wb3NpdGlvbi5iaW5kPVwiaWNvbnBvc2l0aW9uXCJcbiAgICBzaG9ydGN1dGtleS5iaW5kPVwic2hvcnRjdXRrZXlcIlxuICAgIHRhYmluZGV4LmJpbmQ9XCJ0YWJpbmRleFwiXG4gICAgKGtleWRvd24pPVwib25Qb3BvdmVyQW5jaG9yS2V5ZG93bigkZXZlbnQpXCI+XG48L2E+XG4iXX0=
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9wb3BvdmVyL3NyYy9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL3BvcG92ZXIvc3JjL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFFUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXZELE9BQU8sRUFDSCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDaEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUNILGNBQWMsRUFDZCx1QkFBdUIsRUFFdkIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUk5QyxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLFlBQVk7SUFDeEIsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE9BQU8sRUFBRSxrQkFBa0I7Q0FDOUIsQ0FBQztBQUVGLElBQUksYUFBK0IsQ0FBQztBQVVwQyxNQUFNLE9BQU8sZ0JBQWlC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QkFGZCxnQkFBZ0I7Ozs7Ozs4Q0FwQ2hCO2dCQUNQLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDO2FBQ3ZDO1lDckRMLCtCQXFDK0M7WUEvQjNDLDRGQUFXLGFBQVMsSUFBQyxpRkFDVCxjQUFVLElBREQscUZBK0JWLGtDQUE4QixJQS9CcEI7WUFnQ3pCLGlCQUFJOztZQXpCQSx3QkFBZTtZQUxmLDRIQUFrRjtZQVJuRiw2Q0FBMkIsK0JBQUEsMkJBQUEsbUNBQUEsa0NBQUEsdUJBQUEsK0NBQUEsc0JBQUEsMEJBQUEsa0JBQUEsNkRBQUEsMENBQUE7WUFpQjFCLHdEQUEwQyw2QkFBQTs7O3VGRHVDakMsZ0JBQWdCO2NBUjVCLFNBQVM7MkJBQ0ksWUFBWSxhQUVYO29CQUNQLGtCQUFrQixrQkFBa0I7aUJBQ3ZDOzZFQWtDb0Msa0JBQWtCO2tCQUF0RCxTQUFTO21CQUFDLGdCQUFnQjtZQUNZLFNBQVM7a0JBQS9DLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNWLGVBQWU7a0JBQXpDLFlBQVk7bUJBQUMsV0FBVztZQUNBLFVBQVU7a0JBQWxDLFlBQVk7bUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtQb3BvdmVyRGlyZWN0aXZlfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuXG5pbXBvcnQge1xuICAgIGFkZENsYXNzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgQXBwLFxuICAgIGZpbmRSb290Q29udGFpbmVyLFxuICAgIHNldENTU0Zyb21PYmpcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBVVRPQ0xPU0VfVFlQRSxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBJV2lkZ2V0Q29uZmlnLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBzdHlsZXJcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9wb3BvdmVyLnByb3BzJztcblxuZGVjbGFyZSBjb25zdCBfLCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtcG9wb3Zlci13cmFwcGVyJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXBvcG92ZXInLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbmNvbnN0IGV2ZW50c01hcCA9IHtcbiAgICBjbGljazogJ2NsaWNrJyxcbiAgICBob3ZlcjogJ21vdXNlZW50ZXI6Y2xpY2snLFxuICAgIGRlZmF1bHQ6ICdjbGljayBtb3VzZWVudGVyJ1xufTtcblxubGV0IGFjdGl2ZVBvcG92ZXI6IFBvcG92ZXJDb21wb25lbnQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoUG9wb3ZlckNvbXBvbmVudClcbiAgICBdXG59KVxuXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIGV2ZW50OiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgY2xvc2VQb3BvdmVyVGltZW91dDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9wb3ZlckNvbnRhaW5lckNscztcbiAgICBwdWJsaWMgY2FuUG9wb3Zlck9wZW4gPSB0cnVlO1xuICAgIHByaXZhdGUgV2lkZ2V0cztcbiAgICBwcml2YXRlIFZhcmlhYmxlcztcbiAgICBwcml2YXRlIEFjdGlvbnM7XG5cbiAgICBwdWJsaWMgaW50ZXJhY3Rpb246IHN0cmluZztcbiAgICBwdWJsaWMgcG9wb3ZlcmFycm93OiBib29sZWFuO1xuICAgIHB1YmxpYyBwb3BvdmVyd2lkdGg6IHN0cmluZztcbiAgICBwdWJsaWMgcG9wb3ZlcmhlaWdodDogc3RyaW5nO1xuICAgIHB1YmxpYyBjb250ZW50YW5pbWF0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIGNvbnRlbnRzb3VyY2U6IHN0cmluZztcbiAgICBwdWJsaWMgY29udGVudDogc3RyaW5nO1xuICAgIHB1YmxpYyBwb3BvdmVycGxhY2VtZW50OiBzdHJpbmc7XG4gICAgcHVibGljIG91dHNpZGVjbGljazogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXV0b2Nsb3NlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgICBwdWJsaWMgdGFiaW5kZXg6IGFueTtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBhZGFwdGl2ZXBvc2l0aW9uOmJvb2xlYW47XG4gICAgcHVibGljIGNvbnRhaW5lclRhcmdldDogc3RyaW5nO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKFBvcG92ZXJEaXJlY3RpdmUpIHByaXZhdGUgYnNQb3BvdmVyRGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ2FuY2hvcicsIHsgc3RhdGljOiB0cnVlIH0pIGFuY2hvclJlZjogRWxlbWVudFJlZjtcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSBwb3BvdmVyVGVtcGxhdGU7XG4gICAgQENvbnRlbnRDaGlsZCgncGFydGlhbCcpIHBhcnRpYWxSZWY7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBwcml2YXRlIGFwcDogQXBwKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHRoaXMucG9wb3ZlckNvbnRhaW5lckNscyA9IGBhcHAtcG9wb3Zlci0ke3RoaXMud2lkZ2V0SWR9YDtcbiAgICB9XG5cbiAgICAvLyBUaGlzIG1laHRvZCBpcyB1c2VkIHRvIHNob3cvb3BlbiB0aGUgcG9wb3Zlci4gVGhpcyByZWZlcnMgdG8gdGhlIHNhbWUgbWV0aG9kIHNob3dQb3BvdmVyLlxuICAgIHB1YmxpYyBvcGVuKCkge1xuICAgICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBtZWh0b2QgaXMgdXNlZCB0byBoaWRlL2Nsb3NlIHRoZSBwb3BvdmVyLlxuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIG9uIGhpZGluZyBwb3BvdmVyXG4gICAgcHVibGljIG9uSGlkZGVuKCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2hpZGUnLCB7JGV2ZW50OiB7dHlwZTogJ2hpZGUnfX0pO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9jdXNUb1BvcG92ZXJMaW5rKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRqdXN0UG9wb3ZlckFycm93UG9zaXRpb24ocG9wb3ZlckVsZW0sIHBvcG92ZXJMZWZ0U2hpZnQpIHtcbiAgICAgICAgdGhpcy5ic1BvcG92ZXJEaXJlY3RpdmUuX3BvcG92ZXIuX25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgcG9wb3ZlckVsZW0uZmluZCgnLnBvcG92ZXItYXJyb3cnKS5jc3MoJ2xlZnQnLCBwb3BvdmVyTGVmdFNoaWZ0ICsgJ3B4Jyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUG9wb3ZlclBvc3Rpb24oZWxlbWVudCkge1xuXG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtID0gJChlbGVtZW50KTtcbiAgICAgICAgbGV0IHBvcG92ZXJMZWZ0ID0gIHBvcG92ZXJFbGVtLm9mZnNldCgpLmxlZnQ7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJXaWR0aCA9IHBvcG92ZXJFbGVtWzBdLm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCB2aWV3UG9ydFdpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgIGNvbnN0IHBhcmVudERpbWVzaW9uID0gdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgLy8gQWRqdXN0aW5nIHBvcG92ZXIgcG9zaXRpb24sIGlmIGl0IGlzIG5vdCB2aXNpYmxlIGF0IGxlZnQgc2lkZVxuICAgICAgICBpZiAocG9wb3ZlckxlZnQgPCAwKSB7XG4gICAgICAgICAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbihwb3BvdmVyRWxlbSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzUG9wb3ZlckRpcmVjdGl2ZS5fcG9wb3Zlcik7XG4gICAgICAgICAgICBjb25zdCBwb3BvdmVyTGVmdFNoaWZ0ID0gNDtcbiAgICAgICAgICAgIGNvbnN0IGFycm93TGVmdFNoaWZ0ID0gKHBhcmVudERpbWVzaW9uLmxlZnQgKyAocGFyZW50RGltZXNpb24ud2lkdGggLyAyKSkgLSBwb3BvdmVyTGVmdFNoaWZ0O1xuICAgICAgICAgICAgdGhpcy5hZGp1c3RQb3BvdmVyQXJyb3dQb3NpdGlvbihwb3BvdmVyRWxlbSwgYXJyb3dMZWZ0U2hpZnQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkanVzdGluZyBwb3BvdmVyIHBvc2l0aW9uLCBpZiBpdCBpcyBub3QgdmlzaWJsZSBhdCByaWdodCBzaWRlXG4gICAgICAgIGlmIChwb3BvdmVyTGVmdCArIHBvcG92ZXJXaWR0aCA+IHZpZXdQb3J0V2lkdGgpIHtcbiAgICAgICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMocG9wb3ZlckVsZW0sIHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5ic1BvcG92ZXJEaXJlY3RpdmUuX3BvcG92ZXIpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcG9wb3ZlckxlZnQgPSBwb3BvdmVyRWxlbS5vZmZzZXQoKS5sZWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcG92ZXJMZWZ0QWRqdXN0ID0gKHBvcG92ZXJMZWZ0ICsgcG9wb3ZlcldpZHRoKSAtIHZpZXdQb3J0V2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9wb3ZlckxlZnRTaGlmdCA9ICBwb3BvdmVyTGVmdCAtIHBvcG92ZXJMZWZ0QWRqdXN0O1xuICAgICAgICAgICAgICAgIGxldCBhcnJvd0xlZnRTaGlmdCA7XG4gICAgICAgICAgICAgICAgaWYocG9wb3ZlckxlZnQ8PTEwMCl7XG4gICAgICAgICAgICAgICAgICAgIGFycm93TGVmdFNoaWZ0ID0gIChwYXJlbnREaW1lc2lvbi5sZWZ0ICsgKHBhcmVudERpbWVzaW9uLndpZHRoIC8gMikpIC0gcG9wb3ZlckxlZnQ7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGFycm93TGVmdFNoaWZ0ID0gKHBhcmVudERpbWVzaW9uLmxlZnQgKyAocGFyZW50RGltZXNpb24ud2lkdGggLyAyKSkgLSBwb3BvdmVyTGVmdFNoaWZ0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih2aWV3UG9ydFdpZHRoID4gNTAwKXtcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dMZWZ0U2hpZnQgKz0gMzA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RQb3BvdmVyQXJyb3dQb3NpdGlvbihwb3BvdmVyRWxlbSwgYXJyb3dMZWZ0U2hpZnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIG9uIHNob3dpbmcgcG9wb3ZlclxuICAgIHB1YmxpYyBvblNob3duKCkge1xuICAgICAgICBjb25zdCByb290ID0gZmluZFJvb3RDb250YWluZXIodGhpcy4kZWxlbWVudCk7XG4gICAgICAgIC8vIGlmIHBhZ2Ugc3R5bGVzIGhhdmUgdG8gYmUgYXBwbGllZCB0byBwb3BvdmVyIHRoZW4gcG9wb3ZlciBoYXMgdG8gYmUgY2hpbGQgb2YgcGFnZSBlbGVtZW50LlxuICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgICAgJCgnYm9keSA+IHBvcG92ZXItY29udGFpbmVyJykud3JhcCgnPCcgKyByb290ICsgJy8+Jyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRml4IGZvciBbV01TLTI1MTI1XTogTm90IGNsb3NpbmcgdGhlIGV4aXN0aW5nIG9wZW5lZCBwb3BvdmVycyB3aGVuIHRoZSBhdXRvY2xvc2UgcHJvcGVydHkgaXMgRElTQUJMRURcbiAgICAgICAgaWYgKGFjdGl2ZVBvcG92ZXIgJiYgYWN0aXZlUG9wb3Zlci5pc09wZW4gJiYgYWN0aXZlUG9wb3Zlci5hdXRvY2xvc2UgIT09IEFVVE9DTE9TRV9UWVBFLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBhY3RpdmVQb3BvdmVyLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgYWN0aXZlUG9wb3ZlciA9IHRoaXM7XG4gICAgICAgIGFjdGl2ZVBvcG92ZXIuaXNPcGVuID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBwb3BvdmVyQ29udGFpbmVyICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMucG9wb3ZlckNvbnRhaW5lckNsc31gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgc2V0Q1NTRnJvbU9iaihwb3BvdmVyQ29udGFpbmVyLCB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMucG9wb3ZlcmhlaWdodCxcbiAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnBvcG92ZXJ3aWR0aCxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBvcG92ZXJ3aWR0aFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXJhcnJvdykge1xuICAgICAgICAgICAgYWRkQ2xhc3MocG9wb3ZlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuYXJyb3cnKSBhcyBIVE1MRWxlbWVudCwgJ2hpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmludGVyYWN0aW9uID09PSAnaG92ZXInIHx8IHRoaXMuaW50ZXJhY3Rpb24gPT09ICdkZWZhdWx0Jykge1xuXG4gICAgICAgICAgICAvLyBkbyBub3QgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaGVyZVxuICAgICAgICAgICAgLy8gYXR0YWNoaW5nIHRoZSBldmVudCB0aGlzIHdheSB3aWxsIG92ZXJyaWRlIHRoZSBleGlzdGluZyBldmVudCBoYW5kbGVyc1xuICAgICAgICAgICAgcG9wb3ZlckNvbnRhaW5lci5vbm1vdXNlZW50ZXIgPSAoKSA9PiBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVBvcG92ZXJUaW1lb3V0KTtcbiAgICAgICAgICAgIHBvcG92ZXJDb250YWluZXIub25tb3VzZWxlYXZlID0gKCkgPT4gdGhpcy5oaWRlUG9wb3ZlcigpO1xuICAgICAgICAgICAgdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5vbm1vdXNlZW50ZXIgPSAoKSA9PiBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVBvcG92ZXJUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQub25tb3VzZWxlYXZlID0gKCkgPT4gdGhpcy5oaWRlUG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRlUmVnaXN0ZXIgPSB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHBvcG92ZXJDb250YWluZXIsICdrZXlkb3duLmVzYycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNldEZvY3VzVG9Qb3BvdmVyTGluaygpO1xuICAgICAgICAgICAgZGVSZWdpc3RlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcG9wb3ZlclN0YXJ0QnRuOiBIVE1MRWxlbWVudCA9IHBvcG92ZXJDb250YWluZXIucXVlcnlTZWxlY3RvcignLnBvcG92ZXItc3RhcnQnKTtcbiAgICAgICAgY29uc3QgcG9wb3ZlckVuZEJ0bjogSFRNTEVsZW1lbnQgPSBwb3BvdmVyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5wb3BvdmVyLWVuZCcpO1xuICAgICAgICBwb3BvdmVyU3RhcnRCdG4ub25rZXlkb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgU2hpZnQrVGFiIGtleVxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJzUG9wb3ZlckRpcmVjdGl2ZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvY3VzVG9Qb3BvdmVyTGluaygpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7ICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBwb3BvdmVyRW5kQnRuLm9ua2V5ZG93biA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIFRhYiBrZXlcbiAgICAgICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNQb3BvdmVyRGlyZWN0aXZlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNUb1BvcG92ZXJMaW5rKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTsgICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy9XaGVuZXZlciBhdXRvY2xvc2UgcHJvcGVydHkgaXMgc2V0IHRvICdhbHdheXMnLCBhZGRpbmcgdGhlIG9uY2xpY2sgbGlzdGVuZXIgdG8gdGhlIHBvcG92ZXIgY29udGFpbmVyIHRvIGNsb3NlIHRoZSBwb3BvdmVyLlxuICAgICAgICBpZiAodGhpcy5hdXRvY2xvc2UgPT09IEFVVE9DTE9TRV9UWVBFLkFMV0FZUykge1xuICAgICAgICAgICAgcG9wb3ZlckNvbnRhaW5lci5vbmNsaWNrID0gKCkgPT4gdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwb3BvdmVyU3RhcnRCdG4uZm9jdXMoKSwgNTApO1xuICAgICAgICAvLyBBZGp1c3RpbmcgcG9wb3ZlciBwb3NpdGlvbiBpZiB0aGUgcG9wb3ZlciBwbGFjZW1lbnQgaXMgdG9wIG9yIGJvdHRvbVxuICAgICAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWRhcHRpdmVwb3NpdGlvbiApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvcG92ZXJQb3N0aW9uKHBvcG92ZXJDb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdHJpZ2dlcmluZyBvbmxvYWQgYW5kIG9uc2hvdyBldmVudHMgYWZ0ZXIgcG9wb3ZlciBjb250ZW50IGhhcyByZW5kZXJlZFxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyUG9wb3ZlckV2ZW50cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmlnZ2VyUG9wb3ZlckV2ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudHNvdXJjZSA9PT0gJ3BhcnRpYWwnKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5jZWxTdWJzY3JpcHRpb24gPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ3BhcnRpYWxMb2FkZWQnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhckVsZSA9IHRoaXMucGFydGlhbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgIGxldCBwYXJ0aWFsU2NvcGU7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFyRWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRpYWxTY29wZSAgPSBwYXJFbGUud2lkZ2V0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLldpZGdldHMgICA9IHBhcnRpYWxTY29wZS5XaWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IHBhcnRpYWxTY29wZS5WYXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQWN0aW9ucyAgID0gcGFydGlhbFNjb3BlLkFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnbG9hZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Nob3cnLCB7JGV2ZW50OiB7dHlwZTogJ3Nob3cnfX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYW5jZWxTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5XaWRnZXRzICAgPSB0aGlzLnZpZXdQYXJlbnQuV2lkZ2V0cztcbiAgICAgICAgICAgIHRoaXMuVmFyaWFibGVzID0gdGhpcy52aWV3UGFyZW50LlZhcmlhYmxlcztcbiAgICAgICAgICAgIHRoaXMuQWN0aW9ucyAgID0gdGhpcy52aWV3UGFyZW50LkFjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Nob3cnLCB7JGV2ZW50OiB7dHlwZTogJ3Nob3cnfX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlUG9wb3ZlcigpIHtcbiAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXJUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmlzT3BlbiA9IGZhbHNlLCA1MDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1BvcG92ZXIoKSB7XG4gICAgICAgIHRoaXMuYnNQb3BvdmVyRGlyZWN0aXZlLnNob3coKTtcbiAgICB9XG5cbiAgICBvblBvcG92ZXJBbmNob3JLZXlkb3duKCRldmVudCkge1xuICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBjb250ZW50IGF2YWlsYWJsZSwgdGhlIHBvcG92ZXIgc2hvdWxkIG5vdCBvcGVuIHRocm91Z2ggZW50ZXIga2V5LiBTbyBjaGVja2luZyB3aGV0aGVyIHRoZSBjYW5Qb3BvdmVyT3BlbiBmbGFnIGlzIHRydWUgb3Igbm90LlxuICAgICAgICBpZiAoIXRoaXMuY2FuUG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdjb250ZW50c291cmNlJykge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gcGFydGlhbCBjb250ZW50IGF2YWlsYWJsZSwgdGhlIHBvcG92ZXIgc2hvdWxkIG5vdCBvcGVuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50c291cmNlID09PSAncGFydGlhbCcgJiYgIXRoaXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuUG9wb3Zlck9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnY29udGVudCcgJiYgbnYpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuUG9wb3Zlck9wZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdhdXRvY2xvc2UnKSB7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVjbGljayA9IChudiA9PT0gQVVUT0NMT1NFX1RZUEUuT1VUU0lERUNMSUNLIHx8IG52ID09PSBBVVRPQ0xPU0VfVFlQRS5BTFdBWVMpID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmV2ZW50ID0gZXZlbnRzTWFwW3RoaXMuaW50ZXJhY3Rpb25dO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcih0aGlzLmFuY2hvclJlZi5uYXRpdmVFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJUYXJnZXQgPSBnZXRDb250YWluZXJUYXJnZXRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAvLyBsZXQgcGFyZW50RWxlbVBvcG92ZXIgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkucGFyZW50cygpO1xuICAgICAgICAvLyBpZiAocGFyZW50RWxlbVBvcG92ZXIuY2xvc2VzdCgnW3dtVGFibGVdJykubGVuZ3RoIHx8XG4gICAgICAgIC8vICAgICBwYXJlbnRFbGVtUG9wb3Zlci5jbG9zZXN0KCdbd210YWJzXScpLmxlbmd0aCB8fFxuICAgICAgICAvLyAgICAgcGFyZW50RWxlbVBvcG92ZXIuY2xvc2VzdCgnbW9kYWwtY29udGFpbmVyJykubGVuZ3RoKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFkYXB0aXZlcG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIC8vIEhpZGUgdGhlIHBvcG92ZXIgY29udGFpbmVyIHdoaWxlIGF0dGFjaGluZyB0aGUgbmV4dCBjb21wb25lbnQgYXMgcGFydCBvZiBwYWdlIHJldXNlIHN0cmF0ZWd5LlxuICAgICAgICB0aGlzLmJzUG9wb3ZlckRpcmVjdGl2ZS5oaWRlKCk7XG4gICAgfVxufVxuIiwiPGEgW3BvcG92ZXJdPVwicG9wb3ZlclRlbXBsYXRlXCJcbiAgICBbcG9wb3ZlckNvbnRleHRdPVwiY29udGV4dFwiXG4gICAgW3BvcG92ZXJUaXRsZV09XCJ0aXRsZVwiXG4gICAgW3BsYWNlbWVudF09XCJwb3BvdmVycGxhY2VtZW50XCJcbiAgICBbb3V0c2lkZUNsaWNrXT1cIm91dHNpZGVjbGlja1wiXG4gICAgW3RyaWdnZXJzXT1cImV2ZW50XCJcbiAgICAob25TaG93bik9XCJvblNob3duKClcIlxuICAgIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCJcbiAgICBjb250YWluZXJDbGFzcz1cImFwcC1wb3BvdmVyIGFuaW1hdGVkIHt7Y29udGVudGFuaW1hdGlvbn19IHt7cG9wb3ZlckNvbnRhaW5lckNsc319XCJcbiAgICBbY29udGFpbmVyXT1cImNvbnRhaW5lclRhcmdldCB8fCAnLndtLWFwcCdcIlxuICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtjbGFzc109XCJjbGFzc1wiXG4gICAgW25nQ2xhc3NdPVwieydkaXNhYmxlLXBvcG92ZXInOiAhY2FuUG9wb3Zlck9wZW59XCJcbiAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJhZGFwdGl2ZXBvc2l0aW9uXCJcbiAgIGJvdW5kYXJpZXNFbGVtZW50PVwid2luZG93XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImhpbnQgfHwgJ1BvcG92ZXIgbWVudSdcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAjYW5jaG9yXG4gICAgbmFtZS5iaW5kPVwibmFtZVwiXG4gICAgd21BbmNob3JcbiAgICBhbmltYXRpb24uYmluZD1cImFuaW1hdGlvblwiXG4gICAgYmFkZ2V2YWx1ZS5iaW5kPVwiYmFkZ2V2YWx1ZVwiXG4gICAgY2FwdGlvbi5iaW5kPVwiY2FwdGlvblwiXG4gICAgZW5jb2RldXJsLmJpbmQ9XCJlbmNvZGV1cmxcIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIGh5cGVybGluay5iaW5kPVwiaHlwZXJsaW5rXCJcbiAgICBpY29udXJsLmJpbmQ9XCJpY29udXJsXCJcbiAgICBpY29ud2lkdGguYmluZD1cImljb253aWR0aFwiXG4gICAgaWNvbmhlaWdodC5iaW5kPVwiaWNvbmhlaWdodFwiXG4gICAgaWNvbm1hcmdpbi5iaW5kPVwiaWNvbm1hcmdpblwiXG4gICAgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGljb25wb3NpdGlvbi5iaW5kPVwiaWNvbnBvc2l0aW9uXCJcbiAgICBzaG9ydGN1dGtleS5iaW5kPVwic2hvcnRjdXRrZXlcIlxuICAgIHRhYmluZGV4LmJpbmQ9XCJ0YWJpbmRleFwiXG4gICAgKGtleWRvd24pPVwib25Qb3BvdmVyQW5jaG9yS2V5ZG93bigkZXZlbnQpXCI+XG48L2E+XG4iXX0=
@@ -293,7 +293,7 @@ class PopoverComponent extends StylableComponent {
293
293
  } if (rf & 2) {
294
294
  i0.ɵɵclassMap(ctx.class);
295
295
  i0.ɵɵpropertyInterpolate2("containerClass", "app-popover animated ", ctx.contentanimation, " ", ctx.popoverContainerCls, "");
296
- i0.ɵɵproperty("popover", ctx.popoverTemplate)("popoverContext", ctx.context)("popoverTitle", ctx.title)("placement", ctx.popoverplacement)("outsideClick", ctx.outsideclick)("triggers", ctx.event)("container", ctx.containerTarget || "body")("isOpen", ctx.isOpen)("tabindex", ctx.tabindex)("name", ctx.name)("ngClass", i0.ɵɵpureFunction1(18, _c2, !ctx.canPopoverOpen))("adaptivePosition", ctx.adaptiveposition);
296
+ i0.ɵɵproperty("popover", ctx.popoverTemplate)("popoverContext", ctx.context)("popoverTitle", ctx.title)("placement", ctx.popoverplacement)("outsideClick", ctx.outsideclick)("triggers", ctx.event)("container", ctx.containerTarget || ".wm-app")("isOpen", ctx.isOpen)("tabindex", ctx.tabindex)("name", ctx.name)("ngClass", i0.ɵɵpureFunction1(18, _c2, !ctx.canPopoverOpen))("adaptivePosition", ctx.adaptiveposition);
297
297
  i0.ɵɵattribute("aria-label", ctx.hint || "Popover menu")("aria-expanded", ctx.isOpen);
298
298
  } }, dependencies: [i2.NgClass, i3.AnchorComponent, i4.PopoverDirective], encapsulation: 2 }); }
299
299
  }
@@ -301,7 +301,7 @@ class PopoverComponent extends StylableComponent {
301
301
  type: Component,
302
302
  args: [{ selector: 'wm-popover', providers: [
303
303
  provideAsWidgetRef(PopoverComponent)
304
- ], template: "<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || 'body'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n" }]
304
+ ], template: "<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || '.wm-app'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n" }]
305
305
  }], function () { return [{ type: i0.Injector }, { type: i1.App }]; }, { bsPopoverDirective: [{
306
306
  type: ViewChild,
307
307
  args: [PopoverDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/navigation/popover/src/popover.props.ts","../../../../../projects/components/widgets/navigation/popover/src/popover.component.ts","../../../../../projects/components/widgets/navigation/popover/src/popover.component.html","../../../../../projects/components/widgets/navigation/popover/src/popover.module.ts","../../../../../projects/components/widgets/navigation/popover/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-popover',\n new Map(\n [\n ['autoclose', {value: 'outsideClick', ...PROP_STRING}],\n ['badgevalue', PROP_STRING],\n ['caption', {value: 'Link', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['conditionalclass', PROP_ANY],\n ['content', PROP_STRING],\n ['contentanimation', PROP_STRING],\n ['contentsource', {value: 'partial', ...PROP_STRING}],\n ['encodeurl', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['hyperlink', {value: 'javascript:void(0)', PROP_STRING}],\n ['iconclass', PROP_STRING],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconposition', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['interaction', {value: 'click', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['popoverarrow', {value: true, ...PROP_BOOLEAN}],\n ['popoverheight', PROP_STRING],\n ['popoverplacement', {value: 'bottom', ... PROP_STRING}],\n ['popoverwidth', PROP_STRING],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['title', PROP_STRING],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}]\n\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n Injector,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport {PopoverDirective} from 'ngx-bootstrap/popover';\n\nimport {\n addClass,\n adjustContainerPosition,\n adjustContainerRightEdges,\n App,\n findRootContainer,\n setCSSFromObj\n} from '@wm/core';\nimport {\n AUTOCLOSE_TYPE,\n getContainerTargetClass,\n IWidgetConfig,\n provideAsWidgetRef,\n StylableComponent,\n styler\n} from '@wm/components/base';\n\nimport {registerProps} from './popover.props';\n\ndeclare const _, $;\n\nconst DEFAULT_CLS = 'app-popover-wrapper';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-popover',\n hostClass: DEFAULT_CLS\n};\n\nconst eventsMap = {\n click: 'click',\n hover: 'mouseenter:click',\n default: 'click mouseenter'\n};\n\nlet activePopover: PopoverComponent;\n\n@Component({\n selector: 'wm-popover',\n templateUrl: './popover.component.html',\n providers: [\n provideAsWidgetRef(PopoverComponent)\n ]\n})\n\nexport class PopoverComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public event: string;\n public isOpen = false;\n private closePopoverTimeout;\n public readonly popoverContainerCls;\n public canPopoverOpen = true;\n private Widgets;\n private Variables;\n private Actions;\n\n public interaction: string;\n public popoverarrow: boolean;\n public popoverwidth: string;\n public popoverheight: string;\n public contentanimation: string;\n public contentsource: string;\n public content: string;\n public popoverplacement: string;\n public outsideclick: boolean;\n public autoclose: string;\n\n public class: string;\n public title: string;\n public tabindex: any;\n public name: string;\n public adaptiveposition:boolean;\n public containerTarget: string;\n public hint: string;\n\n @ViewChild(PopoverDirective) private bsPopoverDirective;\n @ViewChild('anchor', { static: true }) anchorRef: ElementRef;\n @ContentChild(TemplateRef) popoverTemplate;\n @ContentChild('partial') partialRef;\n\n constructor(inj: Injector, private app: App) {\n super(inj, WIDGET_CONFIG);\n this.popoverContainerCls = `app-popover-${this.widgetId}`;\n }\n\n // This mehtod is used to show/open the popover. This refers to the same method showPopover.\n public open() {\n this.showPopover();\n }\n\n // This mehtod is used to hide/close the popover.\n public close() {\n this.isOpen = false;\n }\n\n // Trigger on hiding popover\n public onHidden() {\n this.invokeEventCallback('hide', {$event: {type: 'hide'}});\n this.isOpen = false;\n }\n\n private setFocusToPopoverLink() {\n setTimeout(() => this.anchorRef.nativeElement.focus(), 10);\n }\n\n private adjustPopoverArrowPosition(popoverElem, popoverLeftShift) {\n this.bsPopoverDirective._popover._ngZone.onStable.subscribe(() => {\n popoverElem.find('.popover-arrow').css('left', popoverLeftShift + 'px');\n });\n }\n\n private calculatePopoverPostion(element) {\n\n const popoverElem = $(element);\n let popoverLeft = popoverElem.offset().left;\n const popoverWidth = popoverElem[0].offsetWidth;\n const viewPortWidth = $(window).width();\n const parentDimesion = this.anchorRef.nativeElement.getBoundingClientRect();\n // Adjusting popover position, if it is not visible at left side\n if (popoverLeft < 0) {\n adjustContainerPosition(popoverElem, this.nativeElement, this.bsPopoverDirective._popover);\n const popoverLeftShift = 4;\n const arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeftShift;\n this.adjustPopoverArrowPosition(popoverElem, arrowLeftShift);\n }\n // Adjusting popover position, if it is not visible at right side\n if (popoverLeft + popoverWidth > viewPortWidth) {\n adjustContainerRightEdges(popoverElem, this.nativeElement, this.bsPopoverDirective._popover);\n setTimeout(() => {\n popoverLeft = popoverElem.offset().left;\n const popoverLeftAdjust = (popoverLeft + popoverWidth) - viewPortWidth;\n const popoverLeftShift = popoverLeft - popoverLeftAdjust;\n let arrowLeftShift ;\n if(popoverLeft<=100){\n arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeft;\n }else{\n arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeftShift;\n }\n if(viewPortWidth > 500){\n arrowLeftShift += 30;\n }\n this.adjustPopoverArrowPosition(popoverElem, arrowLeftShift);\n });\n }\n }\n\n // Trigger on showing popover\n public onShown() {\n const root = findRootContainer(this.$element);\n // if page styles have to be applied to popover then popover has to be child of page element.\n if (root) {\n $('body > popover-container').wrap('<' + root + '/>');\n }\n // Fix for [WMS-25125]: Not closing the existing opened popovers when the autoclose property is DISABLED\n if (activePopover && activePopover.isOpen && activePopover.autoclose !== AUTOCLOSE_TYPE.DISABLED) {\n activePopover.isOpen = false;\n }\n\n activePopover = this;\n activePopover.isOpen = true;\n\n const popoverContainer = document.querySelector(`.${this.popoverContainerCls}`) as HTMLElement;\n setCSSFromObj(popoverContainer, {\n height: this.popoverheight,\n minWidth: this.popoverwidth,\n width: this.popoverwidth\n });\n if (!this.popoverarrow) {\n addClass(popoverContainer.querySelector('.arrow') as HTMLElement, 'hidden');\n }\n if (this.interaction === 'hover' || this.interaction === 'default') {\n\n // do not use addEventListener here\n // attaching the event this way will override the existing event handlers\n popoverContainer.onmouseenter = () => clearTimeout(this.closePopoverTimeout);\n popoverContainer.onmouseleave = () => this.hidePopover();\n this.anchorRef.nativeElement.onmouseenter = () => clearTimeout(this.closePopoverTimeout);\n this.anchorRef.nativeElement.onmouseleave = () => this.hidePopover();\n }\n setTimeout(() => {\n this.anchorRef.nativeElement.removeAttribute('aria-describedby');\n });\n const deRegister = this.eventManager.addEventListener(popoverContainer, 'keydown.esc', () => {\n this.isOpen = false;\n this.setFocusToPopoverLink();\n deRegister();\n });\n const popoverStartBtn: HTMLElement = popoverContainer.querySelector('.popover-start');\n const popoverEndBtn: HTMLElement = popoverContainer.querySelector('.popover-end');\n popoverStartBtn.onkeydown = (event) => {\n // Check for Shift+Tab key\n if (event.shiftKey && event.key === 'Tab') {\n this.bsPopoverDirective.hide();\n event.preventDefault();\n this.setFocusToPopoverLink();\n this.isOpen = false; }\n };\n popoverEndBtn.onkeydown = (event) => {\n // Check for Tab key\n if (!event.shiftKey && event.key === 'Tab') {\n this.bsPopoverDirective.hide();\n event.preventDefault();\n this.setFocusToPopoverLink();\n this.isOpen = false; }\n };\n\n //Whenever autoclose property is set to 'always', adding the onclick listener to the popover container to close the popover.\n if (this.autoclose === AUTOCLOSE_TYPE.ALWAYS) {\n popoverContainer.onclick = () => this.close();\n }\n\n setTimeout(() => popoverStartBtn.focus(), 50);\n // Adjusting popover position if the popover placement is top or bottom\n setTimeout( () => {\n if (!this.adaptiveposition ) {\n this.calculatePopoverPostion(popoverContainer);\n }\n // triggering onload and onshow events after popover content has rendered\n this.triggerPopoverEvents();\n });\n }\n\n triggerPopoverEvents() {\n if (this.contentsource === 'partial') {\n const cancelSubscription = this.app.subscribe('partialLoaded', (data) => {\n const parEle = this.partialRef.nativeElement;\n let partialScope;\n\n if (parEle) {\n partialScope = parEle.widget;\n this.Widgets = partialScope.Widgets;\n this.Variables = partialScope.Variables;\n this.Actions = partialScope.Actions;\n this.invokeEventCallback('load');\n this.invokeEventCallback('show', {$event: {type: 'show'}});\n }\n cancelSubscription();\n });\n } else {\n this.Widgets = this.viewParent.Widgets;\n this.Variables = this.viewParent.Variables;\n this.Actions = this.viewParent.Actions;\n this.invokeEventCallback('show', {$event: {type: 'show'}});\n }\n }\n\n private hidePopover() {\n this.closePopoverTimeout = setTimeout(() => this.isOpen = false, 500);\n }\n\n private showPopover() {\n this.bsPopoverDirective.show();\n }\n\n onPopoverAnchorKeydown($event) {\n // if there is no content available, the popover should not open through enter key. So checking whether the canPopoverOpen flag is true or not.\n if (!this.canPopoverOpen) {\n return;\n }\n if ($event.key === 'Enter') {\n $event.stopPropagation();\n this.showPopover();\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'class' || key === 'tabindex') {\n return;\n }\n if (key === 'contentsource') {\n // if there is no partial content available, the popover should not open\n if (this.contentsource === 'partial' && !this.content) {\n this.canPopoverOpen = false;\n }\n }\n if (key === 'content' && nv) {\n this.canPopoverOpen = true;\n }\n if (key === 'autoclose') {\n this.outsideclick = (nv === AUTOCLOSE_TYPE.OUTSIDECLICK || nv === AUTOCLOSE_TYPE.ALWAYS) ? true : false;\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.event = eventsMap[this.interaction];\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n styler(this.anchorRef.nativeElement, this);\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n // let parentElemPopover = $(this.nativeElement).parents();\n // if (parentElemPopover.closest('[wmTable]').length ||\n // parentElemPopover.closest('[wmtabs]').length ||\n // parentElemPopover.closest('modal-container').length) {\n // this.adaptiveposition = false;\n // }\n }\n\n ngOnDetach() {\n // Hide the popover container while attaching the next component as part of page reuse strategy.\n this.bsPopoverDirective.hide();\n }\n}\n","<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || 'body'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PopoverModule as NgxPopoverModule } from 'ngx-bootstrap/popover';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\n\nimport { PopoverComponent } from './popover.component';\n\nconst components = [\n PopoverComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BasicModule,\n NgxPopoverModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class PopoverModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NgxPopoverModule"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/navigation/popover/src/popover.props.ts","../../../../../projects/components/widgets/navigation/popover/src/popover.component.ts","../../../../../projects/components/widgets/navigation/popover/src/popover.component.html","../../../../../projects/components/widgets/navigation/popover/src/popover.module.ts","../../../../../projects/components/widgets/navigation/popover/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-popover',\n new Map(\n [\n ['autoclose', {value: 'outsideClick', ...PROP_STRING}],\n ['badgevalue', PROP_STRING],\n ['caption', {value: 'Link', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['conditionalclass', PROP_ANY],\n ['content', PROP_STRING],\n ['contentanimation', PROP_STRING],\n ['contentsource', {value: 'partial', ...PROP_STRING}],\n ['encodeurl', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['hyperlink', {value: 'javascript:void(0)', PROP_STRING}],\n ['iconclass', PROP_STRING],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconposition', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['interaction', {value: 'click', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['popoverarrow', {value: true, ...PROP_BOOLEAN}],\n ['popoverheight', PROP_STRING],\n ['popoverplacement', {value: 'bottom', ... PROP_STRING}],\n ['popoverwidth', PROP_STRING],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['title', PROP_STRING],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}]\n\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n Injector,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport {PopoverDirective} from 'ngx-bootstrap/popover';\n\nimport {\n addClass,\n adjustContainerPosition,\n adjustContainerRightEdges,\n App,\n findRootContainer,\n setCSSFromObj\n} from '@wm/core';\nimport {\n AUTOCLOSE_TYPE,\n getContainerTargetClass,\n IWidgetConfig,\n provideAsWidgetRef,\n StylableComponent,\n styler\n} from '@wm/components/base';\n\nimport {registerProps} from './popover.props';\n\ndeclare const _, $;\n\nconst DEFAULT_CLS = 'app-popover-wrapper';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-popover',\n hostClass: DEFAULT_CLS\n};\n\nconst eventsMap = {\n click: 'click',\n hover: 'mouseenter:click',\n default: 'click mouseenter'\n};\n\nlet activePopover: PopoverComponent;\n\n@Component({\n selector: 'wm-popover',\n templateUrl: './popover.component.html',\n providers: [\n provideAsWidgetRef(PopoverComponent)\n ]\n})\n\nexport class PopoverComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public event: string;\n public isOpen = false;\n private closePopoverTimeout;\n public readonly popoverContainerCls;\n public canPopoverOpen = true;\n private Widgets;\n private Variables;\n private Actions;\n\n public interaction: string;\n public popoverarrow: boolean;\n public popoverwidth: string;\n public popoverheight: string;\n public contentanimation: string;\n public contentsource: string;\n public content: string;\n public popoverplacement: string;\n public outsideclick: boolean;\n public autoclose: string;\n\n public class: string;\n public title: string;\n public tabindex: any;\n public name: string;\n public adaptiveposition:boolean;\n public containerTarget: string;\n public hint: string;\n\n @ViewChild(PopoverDirective) private bsPopoverDirective;\n @ViewChild('anchor', { static: true }) anchorRef: ElementRef;\n @ContentChild(TemplateRef) popoverTemplate;\n @ContentChild('partial') partialRef;\n\n constructor(inj: Injector, private app: App) {\n super(inj, WIDGET_CONFIG);\n this.popoverContainerCls = `app-popover-${this.widgetId}`;\n }\n\n // This mehtod is used to show/open the popover. This refers to the same method showPopover.\n public open() {\n this.showPopover();\n }\n\n // This mehtod is used to hide/close the popover.\n public close() {\n this.isOpen = false;\n }\n\n // Trigger on hiding popover\n public onHidden() {\n this.invokeEventCallback('hide', {$event: {type: 'hide'}});\n this.isOpen = false;\n }\n\n private setFocusToPopoverLink() {\n setTimeout(() => this.anchorRef.nativeElement.focus(), 10);\n }\n\n private adjustPopoverArrowPosition(popoverElem, popoverLeftShift) {\n this.bsPopoverDirective._popover._ngZone.onStable.subscribe(() => {\n popoverElem.find('.popover-arrow').css('left', popoverLeftShift + 'px');\n });\n }\n\n private calculatePopoverPostion(element) {\n\n const popoverElem = $(element);\n let popoverLeft = popoverElem.offset().left;\n const popoverWidth = popoverElem[0].offsetWidth;\n const viewPortWidth = $(window).width();\n const parentDimesion = this.anchorRef.nativeElement.getBoundingClientRect();\n // Adjusting popover position, if it is not visible at left side\n if (popoverLeft < 0) {\n adjustContainerPosition(popoverElem, this.nativeElement, this.bsPopoverDirective._popover);\n const popoverLeftShift = 4;\n const arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeftShift;\n this.adjustPopoverArrowPosition(popoverElem, arrowLeftShift);\n }\n // Adjusting popover position, if it is not visible at right side\n if (popoverLeft + popoverWidth > viewPortWidth) {\n adjustContainerRightEdges(popoverElem, this.nativeElement, this.bsPopoverDirective._popover);\n setTimeout(() => {\n popoverLeft = popoverElem.offset().left;\n const popoverLeftAdjust = (popoverLeft + popoverWidth) - viewPortWidth;\n const popoverLeftShift = popoverLeft - popoverLeftAdjust;\n let arrowLeftShift ;\n if(popoverLeft<=100){\n arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeft;\n }else{\n arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeftShift;\n }\n if(viewPortWidth > 500){\n arrowLeftShift += 30;\n }\n this.adjustPopoverArrowPosition(popoverElem, arrowLeftShift);\n });\n }\n }\n\n // Trigger on showing popover\n public onShown() {\n const root = findRootContainer(this.$element);\n // if page styles have to be applied to popover then popover has to be child of page element.\n if (root) {\n $('body > popover-container').wrap('<' + root + '/>');\n }\n // Fix for [WMS-25125]: Not closing the existing opened popovers when the autoclose property is DISABLED\n if (activePopover && activePopover.isOpen && activePopover.autoclose !== AUTOCLOSE_TYPE.DISABLED) {\n activePopover.isOpen = false;\n }\n\n activePopover = this;\n activePopover.isOpen = true;\n\n const popoverContainer = document.querySelector(`.${this.popoverContainerCls}`) as HTMLElement;\n setCSSFromObj(popoverContainer, {\n height: this.popoverheight,\n minWidth: this.popoverwidth,\n width: this.popoverwidth\n });\n if (!this.popoverarrow) {\n addClass(popoverContainer.querySelector('.arrow') as HTMLElement, 'hidden');\n }\n if (this.interaction === 'hover' || this.interaction === 'default') {\n\n // do not use addEventListener here\n // attaching the event this way will override the existing event handlers\n popoverContainer.onmouseenter = () => clearTimeout(this.closePopoverTimeout);\n popoverContainer.onmouseleave = () => this.hidePopover();\n this.anchorRef.nativeElement.onmouseenter = () => clearTimeout(this.closePopoverTimeout);\n this.anchorRef.nativeElement.onmouseleave = () => this.hidePopover();\n }\n setTimeout(() => {\n this.anchorRef.nativeElement.removeAttribute('aria-describedby');\n });\n const deRegister = this.eventManager.addEventListener(popoverContainer, 'keydown.esc', () => {\n this.isOpen = false;\n this.setFocusToPopoverLink();\n deRegister();\n });\n const popoverStartBtn: HTMLElement = popoverContainer.querySelector('.popover-start');\n const popoverEndBtn: HTMLElement = popoverContainer.querySelector('.popover-end');\n popoverStartBtn.onkeydown = (event) => {\n // Check for Shift+Tab key\n if (event.shiftKey && event.key === 'Tab') {\n this.bsPopoverDirective.hide();\n event.preventDefault();\n this.setFocusToPopoverLink();\n this.isOpen = false; }\n };\n popoverEndBtn.onkeydown = (event) => {\n // Check for Tab key\n if (!event.shiftKey && event.key === 'Tab') {\n this.bsPopoverDirective.hide();\n event.preventDefault();\n this.setFocusToPopoverLink();\n this.isOpen = false; }\n };\n\n //Whenever autoclose property is set to 'always', adding the onclick listener to the popover container to close the popover.\n if (this.autoclose === AUTOCLOSE_TYPE.ALWAYS) {\n popoverContainer.onclick = () => this.close();\n }\n\n setTimeout(() => popoverStartBtn.focus(), 50);\n // Adjusting popover position if the popover placement is top or bottom\n setTimeout( () => {\n if (!this.adaptiveposition ) {\n this.calculatePopoverPostion(popoverContainer);\n }\n // triggering onload and onshow events after popover content has rendered\n this.triggerPopoverEvents();\n });\n }\n\n triggerPopoverEvents() {\n if (this.contentsource === 'partial') {\n const cancelSubscription = this.app.subscribe('partialLoaded', (data) => {\n const parEle = this.partialRef.nativeElement;\n let partialScope;\n\n if (parEle) {\n partialScope = parEle.widget;\n this.Widgets = partialScope.Widgets;\n this.Variables = partialScope.Variables;\n this.Actions = partialScope.Actions;\n this.invokeEventCallback('load');\n this.invokeEventCallback('show', {$event: {type: 'show'}});\n }\n cancelSubscription();\n });\n } else {\n this.Widgets = this.viewParent.Widgets;\n this.Variables = this.viewParent.Variables;\n this.Actions = this.viewParent.Actions;\n this.invokeEventCallback('show', {$event: {type: 'show'}});\n }\n }\n\n private hidePopover() {\n this.closePopoverTimeout = setTimeout(() => this.isOpen = false, 500);\n }\n\n private showPopover() {\n this.bsPopoverDirective.show();\n }\n\n onPopoverAnchorKeydown($event) {\n // if there is no content available, the popover should not open through enter key. So checking whether the canPopoverOpen flag is true or not.\n if (!this.canPopoverOpen) {\n return;\n }\n if ($event.key === 'Enter') {\n $event.stopPropagation();\n this.showPopover();\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'class' || key === 'tabindex') {\n return;\n }\n if (key === 'contentsource') {\n // if there is no partial content available, the popover should not open\n if (this.contentsource === 'partial' && !this.content) {\n this.canPopoverOpen = false;\n }\n }\n if (key === 'content' && nv) {\n this.canPopoverOpen = true;\n }\n if (key === 'autoclose') {\n this.outsideclick = (nv === AUTOCLOSE_TYPE.OUTSIDECLICK || nv === AUTOCLOSE_TYPE.ALWAYS) ? true : false;\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.event = eventsMap[this.interaction];\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n styler(this.anchorRef.nativeElement, this);\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n // let parentElemPopover = $(this.nativeElement).parents();\n // if (parentElemPopover.closest('[wmTable]').length ||\n // parentElemPopover.closest('[wmtabs]').length ||\n // parentElemPopover.closest('modal-container').length) {\n // this.adaptiveposition = false;\n // }\n }\n\n ngOnDetach() {\n // Hide the popover container while attaching the next component as part of page reuse strategy.\n this.bsPopoverDirective.hide();\n }\n}\n","<a [popover]=\"popoverTemplate\"\n [popoverContext]=\"context\"\n [popoverTitle]=\"title\"\n [placement]=\"popoverplacement\"\n [outsideClick]=\"outsideclick\"\n [triggers]=\"event\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n [container]=\"containerTarget || '.wm-app'\"\n [isOpen]=\"isOpen\"\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n [class]=\"class\"\n [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n [adaptivePosition]=\"adaptiveposition\"\n boundariesElement=\"window\"\n [attr.aria-label]=\"hint || 'Popover menu'\"\n [attr.aria-expanded]=\"isOpen\"\n role=\"button\"\n #anchor\n name.bind=\"name\"\n wmAnchor\n animation.bind=\"animation\"\n badgevalue.bind=\"badgevalue\"\n caption.bind=\"caption\"\n encodeurl.bind=\"encodeurl\"\n hint.bind=\"hint\"\n hyperlink.bind=\"hyperlink\"\n iconurl.bind=\"iconurl\"\n iconwidth.bind=\"iconwidth\"\n iconheight.bind=\"iconheight\"\n iconmargin.bind=\"iconmargin\"\n iconclass.bind=\"iconclass\"\n iconposition.bind=\"iconposition\"\n shortcutkey.bind=\"shortcutkey\"\n tabindex.bind=\"tabindex\"\n (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PopoverModule as NgxPopoverModule } from 'ngx-bootstrap/popover';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\n\nimport { PopoverComponent } from './popover.component';\n\nconst components = [\n PopoverComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BasicModule,\n NgxPopoverModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class PopoverModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NgxPopoverModule"],"mappings":"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"}
@@ -1953,7 +1953,6 @@
1953
1953
  })(ExpressionType || (ExpressionType = {}));
1954
1954
  function $parseExpr(expr, defOnly) {
1955
1955
  if (!pipeProvider) {
1956
- console.log('set pipe provider');
1957
1956
  return noop$1;
1958
1957
  }
1959
1958
  if (typeof (expr) !== 'string') {
@@ -4310,6 +4309,28 @@
4310
4309
  args: [{ providedIn: 'root' }]
4311
4310
  }], null, null); })();
4312
4311
 
4312
+ class CustomIconsLoaderService {
4313
+ constructor() {
4314
+ this.http = i0.inject(i1.HttpClient);
4315
+ }
4316
+ load() {
4317
+ this.http.get('./font.config.js', { responseType: 'text' }).subscribe((fontConfig) => {
4318
+ const cssPaths = [], regex = /"csspath":\s*"([^"]+)"/g;
4319
+ let match;
4320
+ while ((match = regex.exec(fontConfig)) !== null) {
4321
+ cssPaths.push(match[1]);
4322
+ }
4323
+ loadStyleSheets(cssPaths);
4324
+ }, (error) => { });
4325
+ }
4326
+ static { this.ɵfac = function CustomIconsLoaderService_Factory(t) { return new (t || CustomIconsLoaderService)(); }; }
4327
+ static { this.ɵprov = /*@__PURE__*/ i0__namespace.ɵɵdefineInjectable({ token: CustomIconsLoaderService, factory: CustomIconsLoaderService.ɵfac, providedIn: 'root' }); }
4328
+ }
4329
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomIconsLoaderService, [{
4330
+ type: i0.Injectable,
4331
+ args: [{ providedIn: 'root' }]
4332
+ }], null, null); })();
4333
+
4313
4334
  class StatePersistence {
4314
4335
  constructor() {
4315
4336
  this.HISTORY_HANDLER = 'replace';
@@ -5176,6 +5197,7 @@
5176
5197
  exports.CURRENCY_INFO = CURRENCY_INFO;
5177
5198
  exports.ConstantService = ConstantService;
5178
5199
  exports.CoreModule = CoreModule;
5200
+ exports.CustomIconsLoaderService = CustomIconsLoaderService;
5179
5201
  exports.CustomPipeManager = CustomPipeManager;
5180
5202
  exports.DataSource = DataSource;
5181
5203
  exports.DynamicComponentRefProvider = DynamicComponentRefProvider;
@@ -18,9 +18,10 @@ export * from './services/field-type.service';
18
18
  export * from './services/field-widget.service';
19
19
  export * from './services/script-loader.service';
20
20
  export * from './services/user-custom-pipe-manager.service';
21
+ export * from './services/custom-icons-loader.service';
21
22
  export { StatePersistence } from './services/state-persistence.service';
22
23
  export { PaginationService } from './services/pagination.service';
23
24
  export * from './core.module';
24
25
  export * from './utils/wm-project-properties';
25
26
  export * from './utils/lru-cache';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLElBQUksRUFDSixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixTQUFTLEVBQ1QsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLEtBQUssRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29yZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYnVpbGQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvY3VycmVuY3ktY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgYXBwZW5kTm9kZSxcbiAgICBpbnNlcnRCZWZvcmUsXG4gICAgaW5zZXJ0QWZ0ZXIsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBhZGRDbGFzcyxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzZXRQcm9wZXJ0eSxcbiAgICBzZXRBdHRyLFxuICAgIHNldEh0bWwsXG4gICAgcmVtb3ZlQXR0cixcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIHRvRGltZW5zaW9uXG59IGZyb20gJy4vdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9ldmVudC1ub3RpZmllcic7XG5leHBvcnQge1xuICAgIFBhcnNlRXhwclJlc3VsdCxcbiAgICAkcGFyc2VFeHByLFxuICAgICRwYXJzZUV2ZW50LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgc2V0UGlwZVByb3ZpZGVyLFxuICAgIGdldEZuQnlFeHByLFxuICAgIGdldEZuRm9yQmluZEV4cHIsXG4gICAgZ2V0Rm5Gb3JFdmVudEV4cHJcbn0gZnJvbSAnLi91dGlscy9leHByZXNzaW9uLXBhcnNlcic7XG5leHBvcnQge1xuICAgIEVWRU5UX0xJRkUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzT2JqZWN0LFxuICAgIHRvQm9vbGVhbixcbiAgICBpc0lFLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0FuZHJvaWRUYWJsZXQsXG4gICAgaXNJcGhvbmUsXG4gICAgaXNJcG9kLFxuICAgIGlzSXBhZCxcbiAgICBpc0lvcyxcbiAgICBpc0xhcmdlVGFibGV0TGFuZHNjYXBlLFxuICAgIGlzTGFyZ2VUYWJsZXRQb3J0cmFpdCxcbiAgICBpc01vYmlsZSxcbiAgICBpc01vYmlsZUFwcCxcbiAgICBnZXRBbmRyb2lkVmVyc2lvbixcbiAgICBpc0tpdGthdERldmljZSxcbiAgICBlbmNvZGVVcmwsXG4gICAgZW5jb2RlVXJsUGFyYW1zLFxuICAgIGluaXRDYXBzLFxuICAgIHNwYWNlU2VwYXJhdGUsXG4gICAgcmVwbGFjZUF0LFxuICAgIHBlcmlvZFNlcGFyYXRlLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgcHJldHRpZnlMYWJlbHMsXG4gICAgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LFxuICAgIHN0cmluZ1N0YXJ0c1dpdGgsXG4gICAgZ2V0RXZhbHVhdGVkRXhwclZhbHVlLFxuICAgIGlzSW1hZ2VGaWxlLFxuICAgIGlzQXVkaW9GaWxlLFxuICAgIGlzVmlkZW9GaWxlLFxuICAgIGlzVmFsaWRXZWJVUkwsXG4gICAgZ2V0UmVzb3VyY2VVUkwsXG4gICAgdHJpZ2dlckZuLFxuICAgIGhhc09mZnNldFN0cixcbiAgICBnZXRGb3JtYXR0ZWREYXRlLFxuICAgIGdldERhdGVPYmosXG4gICAgYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudCxcbiAgICBnZXRDbG9uZWRPYmplY3QsXG4gICAgZ2V0RmlsZXMsXG4gICAgZ2VuZXJhdGVHVUlkLFxuICAgIHZhbGlkYXRlQWNjZXNzUm9sZXMsXG4gICAgZ2V0VmFsaWRKU09OLFxuICAgIHhtbFRvSnNvbixcbiAgICBmaW5kVmFsdWVPZixcbiAgICBleHRyYWN0VHlwZSxcbiAgICBpc051bWJlclR5cGUsXG4gICAgaXNFbXB0eU9iamVjdCxcbiAgICBzY3JvbGxUb0VsZW1lbnQsXG4gICAgaXNFbGVtZW50SW5WaWV3cG9ydCxcbiAgICBpc1BhZ2VhYmxlLFxuICAgIHJlcGxhY2UsXG4gICAgaXNEYXRlVGltZVR5cGUsXG4gICAgZ2V0VmFsaWREYXRlT2JqZWN0LFxuICAgIGdldE5hdGl2ZURhdGVPYmplY3QsXG4gICAgZ2V0QmxvYixcbiAgICBpc0VxdWFsV2l0aEZpZWxkcyxcbiAgICBsb2FkU3R5bGVTaGVldCxcbiAgICBsb2FkU3R5bGVTaGVldHMsXG4gICAgbG9hZFNjcmlwdCxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIGdldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBub29wLFxuICAgIGlzQXJyYXksXG4gICAgaXNTdHJpbmcsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNCb29sZWFuLFxuICAgIGNvbnZlcnRUb0Jsb2IsXG4gICAgaGFzQ29yZG92YSxcbiAgICBBcHBDb25zdGFudHMsXG4gICAgb3BlbkxpbmssXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIHRvUHJvbWlzZSxcbiAgICByZXRyeUlmRmFpbHMsXG4gICAgZ2V0QWJvcnRhYmxlRGVmZXIsXG4gICAgY3JlYXRlQ1NTUnVsZSxcbiAgICBnZXRVcmxQYXJhbXMsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0LFxuICAgIGdldFJvdXRlTmFtZUZyb21MaW5rLFxuICAgIGlzQXBwbGVQcm9kdWN0LFxuICAgIGRlZmVyLFxuICAgIGV4ZWN1dGVQcm9taXNlQ2hhaW4sXG4gICAgaXNEYXRhU291cmNlRXF1YWwsXG4gICAgdmFsaWRhdGVEYXRhU291cmNlQ3R4LFxuICAgIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSxcbiAgICBleHRlbmRQcm90byxcbiAgICByZW1vdmVFeHRyYVNsYXNoZXMsXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGFkZEZvcklkQXR0cmlidXRlcyxcbiAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbixcbiAgICBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLFxuICAgIHNldFRyYW5zbGF0aW9uM2RQb3NpdGlvbixcbiAgICBnZXRXZWJraXRUcmFzbGF0aW9uTWF0cml4LFxuICAgIGNsb3NlUG9wb3ZlcixcbiAgICBkZXRlY3RDaGFuZ2VzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIGdldERhdGFzb3VyY2VGcm9tRXhwcixcbiAgICBleHRyYWN0Q3VycmVudEl0ZW1FeHByLFxuICAgIGZpbmRSb290Q29udGFpbmVyLFxuICAgIFZBTElEQVRPUixcbiAgICB0cmFuc2Zvcm1GaWxlVVJJLFxuICAgIGFwcGVuZFNjcmlwdFRvSGVhZCxcbiAgICBnZXRBcHBTZXR0aW5nLFxuICAgIHNldExpc3RDbGFzcyxcbiAgICBmaW5kUGFyZW50XG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBGSVJTVF9USU1FX1dBVENILFxuICAgIGlzRmlyc3RUaW1lQ2hhbmdlLFxuICAgIGRlYm91bmNlLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICAkd2F0Y2gsXG4gICAgJHVud2F0Y2gsXG4gICAgc2V0Tmdab25lLFxuICAgIHNldEFwcFJlZixcbiAgICBpc0NoYW5nZUZyb21XYXRjaCxcbiAgICByZXNldENoYW5nZUZyb21XYXRjaCxcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgJGFwcERpZ2VzdFxufSBmcm9tICcuL3V0aWxzL3dhdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pZC1nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy90eXBlcyc7XG5leHBvcnQgeyBWaWV3cG9ydCwgVmlld3BvcnRFdmVudCB9IGZyb20gJy4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbnN0YW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmllbGQtdHlwZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmllbGQtd2lkZ2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zY3JpcHQtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy91c2VyLWN1c3RvbS1waXBlLW1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQgeyBTdGF0ZVBlcnNpc3RlbmNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zdGF0ZS1wZXJzaXN0ZW5jZS5zZXJ2aWNlJztcbmV4cG9ydCB7IFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYWdpbmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL3dtLXByb2plY3QtcHJvcGVydGllcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2xydS1jYWNoZSc7XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLElBQUksRUFDSixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixTQUFTLEVBQ1QsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLEtBQUssRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9idWlsZC11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9jdXJyZW5jeS1jb25zdGFudHMnO1xuZXhwb3J0IHtcbiAgICBhcHBlbmROb2RlLFxuICAgIGluc2VydEJlZm9yZSxcbiAgICBpbnNlcnRBZnRlcixcbiAgICByZW1vdmVOb2RlLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIGFkZENsYXNzLFxuICAgIHN3aXRjaENsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHNldENTUyxcbiAgICBzZXRDU1NGcm9tT2JqLFxuICAgIHNldFByb3BlcnR5LFxuICAgIHNldEF0dHIsXG4gICAgc2V0SHRtbCxcbiAgICByZW1vdmVBdHRyLFxuICAgIGNyZWF0ZUVsZW1lbnQsXG4gICAgdG9EaW1lbnNpb25cbn0gZnJvbSAnLi91dGlscy9kb20nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9lbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2V2ZW50LW5vdGlmaWVyJztcbmV4cG9ydCB7XG4gICAgUGFyc2VFeHByUmVzdWx0LFxuICAgICRwYXJzZUV4cHIsXG4gICAgJHBhcnNlRXZlbnQsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwcixcbiAgICBzZXRQaXBlUHJvdmlkZXIsXG4gICAgZ2V0Rm5CeUV4cHIsXG4gICAgZ2V0Rm5Gb3JCaW5kRXhwcixcbiAgICBnZXRGbkZvckV2ZW50RXhwclxufSBmcm9tICcuL3V0aWxzL2V4cHJlc3Npb24tcGFyc2VyJztcbmV4cG9ydCB7XG4gICAgRVZFTlRfTElGRSxcbiAgICBpc0RlZmluZWQsXG4gICAgaXNPYmplY3QsXG4gICAgdG9Cb29sZWFuLFxuICAgIGlzSUUsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzQW5kcm9pZFRhYmxldCxcbiAgICBpc0lwaG9uZSxcbiAgICBpc0lwb2QsXG4gICAgaXNJcGFkLFxuICAgIGlzSW9zLFxuICAgIGlzTGFyZ2VUYWJsZXRMYW5kc2NhcGUsXG4gICAgaXNMYXJnZVRhYmxldFBvcnRyYWl0LFxuICAgIGlzTW9iaWxlLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIGdldEFuZHJvaWRWZXJzaW9uLFxuICAgIGlzS2l0a2F0RGV2aWNlLFxuICAgIGVuY29kZVVybCxcbiAgICBlbmNvZGVVcmxQYXJhbXMsXG4gICAgaW5pdENhcHMsXG4gICAgc3BhY2VTZXBhcmF0ZSxcbiAgICByZXBsYWNlQXQsXG4gICAgcGVyaW9kU2VwYXJhdGUsXG4gICAgcHJldHRpZnlMYWJlbCxcbiAgICBkZUh5cGhlbmF0ZSxcbiAgICBwcmV0dGlmeUxhYmVscyxcbiAgICBpc0luc2VjdXJlQ29udGVudFJlcXVlc3QsXG4gICAgc3RyaW5nU3RhcnRzV2l0aCxcbiAgICBnZXRFdmFsdWF0ZWRFeHByVmFsdWUsXG4gICAgaXNJbWFnZUZpbGUsXG4gICAgaXNBdWRpb0ZpbGUsXG4gICAgaXNWaWRlb0ZpbGUsXG4gICAgaXNWYWxpZFdlYlVSTCxcbiAgICBnZXRSZXNvdXJjZVVSTCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgaGFzT2Zmc2V0U3RyLFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0RGF0ZU9iaixcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBnZXRGaWxlcyxcbiAgICBnZW5lcmF0ZUdVSWQsXG4gICAgdmFsaWRhdGVBY2Nlc3NSb2xlcyxcbiAgICBnZXRWYWxpZEpTT04sXG4gICAgeG1sVG9Kc29uLFxuICAgIGZpbmRWYWx1ZU9mLFxuICAgIGV4dHJhY3RUeXBlLFxuICAgIGlzTnVtYmVyVHlwZSxcbiAgICBpc0VtcHR5T2JqZWN0LFxuICAgIHNjcm9sbFRvRWxlbWVudCxcbiAgICBpc0VsZW1lbnRJblZpZXdwb3J0LFxuICAgIGlzUGFnZWFibGUsXG4gICAgcmVwbGFjZSxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBnZXRWYWxpZERhdGVPYmplY3QsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdCxcbiAgICBnZXRCbG9iLFxuICAgIGlzRXF1YWxXaXRoRmllbGRzLFxuICAgIGxvYWRTdHlsZVNoZWV0LFxuICAgIGxvYWRTdHlsZVNoZWV0cyxcbiAgICBsb2FkU2NyaXB0LFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIG5vb3AsXG4gICAgaXNBcnJheSxcbiAgICBpc1N0cmluZyxcbiAgICBpc051bWJlcixcbiAgICBpc0Jvb2xlYW4sXG4gICAgY29udmVydFRvQmxvYixcbiAgICBoYXNDb3Jkb3ZhLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBvcGVuTGluayxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgdG9Qcm9taXNlLFxuICAgIHJldHJ5SWZGYWlscyxcbiAgICBnZXRBYm9ydGFibGVEZWZlcixcbiAgICBjcmVhdGVDU1NSdWxlLFxuICAgIGdldFVybFBhcmFtcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0Um91dGVOYW1lRnJvbUxpbmssXG4gICAgaXNBcHBsZVByb2R1Y3QsXG4gICAgZGVmZXIsXG4gICAgZXhlY3V0ZVByb21pc2VDaGFpbixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICB2YWxpZGF0ZURhdGFTb3VyY2VDdHgsXG4gICAgcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIHJlbW92ZUV4dHJhU2xhc2hlcyxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgYWRkRm9ySWRBdHRyaWJ1dGVzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgc2V0VHJhbnNsYXRpb24zZFBvc2l0aW9uLFxuICAgIGdldFdlYmtpdFRyYXNsYXRpb25NYXRyaXgsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIGRldGVjdENoYW5nZXMsXG4gICAgdHJpZ2dlckl0ZW1BY3Rpb24sXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGV4dHJhY3RDdXJyZW50SXRlbUV4cHIsXG4gICAgZmluZFJvb3RDb250YWluZXIsXG4gICAgVkFMSURBVE9SLFxuICAgIHRyYW5zZm9ybUZpbGVVUkksXG4gICAgYXBwZW5kU2NyaXB0VG9IZWFkLFxuICAgIGdldEFwcFNldHRpbmcsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGZpbmRQYXJlbnRcbn0gZnJvbSAnLi91dGlscy91dGlscyc7XG5leHBvcnQge1xuICAgIEZJUlNUX1RJTUVfV0FUQ0gsXG4gICAgaXNGaXJzdFRpbWVDaGFuZ2UsXG4gICAgZGVib3VuY2UsXG4gICAgbXV0ZVdhdGNoZXJzLFxuICAgIHVuTXV0ZVdhdGNoZXJzLFxuICAgICR3YXRjaCxcbiAgICAkdW53YXRjaCxcbiAgICBzZXROZ1pvbmUsXG4gICAgc2V0QXBwUmVmLFxuICAgIGlzQ2hhbmdlRnJvbVdhdGNoLFxuICAgIHJlc2V0Q2hhbmdlRnJvbVdhdGNoLFxuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkYXBwRGlnZXN0XG59IGZyb20gJy4vdXRpbHMvd2F0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2lkLWdlbmVyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL3R5cGVzJztcbmV4cG9ydCB7IFZpZXdwb3J0LCBWaWV3cG9ydEV2ZW50IH0gZnJvbSAnLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29uc3RhbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC10eXBlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC13aWRnZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3VzZXItY3VzdG9tLXBpcGUtbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY3VzdG9tLWljb25zLWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFN0YXRlUGVyc2lzdGVuY2UgfSBmcm9tICcuL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { loadStyleSheets } from "../utils/utils";
4
+ import * as i0 from "@angular/core";
5
+ export class CustomIconsLoaderService {
6
+ constructor() {
7
+ this.http = inject(HttpClient);
8
+ }
9
+ load() {
10
+ this.http.get('./font.config.js', { responseType: 'text' }).subscribe((fontConfig) => {
11
+ const cssPaths = [], regex = /"csspath":\s*"([^"]+)"/g;
12
+ let match;
13
+ while ((match = regex.exec(fontConfig)) !== null) {
14
+ cssPaths.push(match[1]);
15
+ }
16
+ loadStyleSheets(cssPaths);
17
+ }, (error) => { });
18
+ }
19
+ static { this.ɵfac = function CustomIconsLoaderService_Factory(t) { return new (t || CustomIconsLoaderService)(); }; }
20
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CustomIconsLoaderService, factory: CustomIconsLoaderService.ɵfac, providedIn: 'root' }); }
21
+ }
22
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomIconsLoaderService, [{
23
+ type: Injectable,
24
+ args: [{ providedIn: 'root' }]
25
+ }], null, null); })();
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWljb25zLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvc2VydmljZXMvY3VzdG9tLWljb25zLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR2pELE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFWSxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBWXJDO0lBWEcsSUFBSTtRQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFDcEYsTUFBTSxRQUFRLEdBQUcsRUFBRSxFQUNmLEtBQUssR0FBRyx5QkFBeUIsQ0FBQztZQUN0QyxJQUFJLEtBQUssQ0FBQztZQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQjtZQUNELGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7eUZBWlEsd0JBQXdCO3VFQUF4Qix3QkFBd0IsV0FBeEIsd0JBQXdCLG1CQURaLE1BQU07O3VGQUNsQix3QkFBd0I7Y0FEcEMsVUFBVTtlQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGxvYWRTdHlsZVNoZWV0cyB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBDdXN0b21JY29uc0xvYWRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBsb2FkKCkge1xuICAgICAgICB0aGlzLmh0dHAuZ2V0KCcuL2ZvbnQuY29uZmlnLmpzJywge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSkuc3Vic2NyaWJlKChmb250Q29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNzc1BhdGhzID0gW10sXG4gICAgICAgICAgICAgICAgcmVnZXggPSAvXCJjc3NwYXRoXCI6XFxzKlwiKFteXCJdKylcIi9nO1xuICAgICAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoZm9udENvbmZpZykpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY3NzUGF0aHMucHVzaChtYXRjaFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2FkU3R5bGVTaGVldHMoY3NzUGF0aHMpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHt9KTtcbiAgICB9XG59XG5cbiJdfQ==