@wavemaker/app-ng-runtime 11.14.2-rc.6311 → 11.15.0-1.246

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 (177) hide show
  1. package/build-task/bundles/index.umd.js +13 -2
  2. package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +9 -2
  3. package/build-task/esm2022/input/default/radioset/radioset.build.mjs +6 -2
  4. package/build-task/fesm2022/index.mjs +13 -2
  5. package/build-task/fesm2022/index.mjs.map +1 -1
  6. package/components/base/bundles/index.umd.js +271 -128
  7. package/components/base/esm2022/public_api.mjs +2 -2
  8. package/components/base/esm2022/utils/autolayout-utils.mjs +252 -0
  9. package/components/base/esm2022/utils/live-utils.mjs +10 -7
  10. package/components/base/esm2022/utils/widget-utils.mjs +8 -1
  11. package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -8
  12. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +4 -1
  13. package/components/base/esm2022/widgets/common/container/container.directive.mjs +28 -150
  14. package/components/base/esm2022/widgets/common/container/container.props.mjs +6 -2
  15. package/components/base/fesm2022/index.mjs +273 -129
  16. package/components/base/fesm2022/index.mjs.map +1 -1
  17. package/components/base/public_api.d.ts +1 -1
  18. package/components/base/utils/autolayout-utils.d.ts +29 -0
  19. package/components/base/utils/widget-utils.d.ts +1 -0
  20. package/components/base/widgets/common/container/container.directive.d.ts +7 -9
  21. package/components/basic/label/bundles/index.umd.js +4 -0
  22. package/components/basic/label/esm2022/label.directive.mjs +5 -1
  23. package/components/basic/label/fesm2022/index.mjs +4 -0
  24. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  25. package/components/basic/search/bundles/index.umd.js +13 -11
  26. package/components/basic/search/esm2022/search.component.mjs +14 -12
  27. package/components/basic/search/fesm2022/index.mjs +13 -11
  28. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  29. package/components/chart/bundles/index.umd.js +2 -2
  30. package/components/chart/esm2022/chart.utils.mjs +3 -3
  31. package/components/chart/fesm2022/index.mjs +2 -2
  32. package/components/chart/fesm2022/index.mjs.map +1 -1
  33. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -0
  34. package/components/containers/accordion/accordion.directive.d.ts +4 -0
  35. package/components/containers/accordion/bundles/index.umd.js +34 -0
  36. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +6 -2
  37. package/components/containers/accordion/esm2022/accordion.directive.mjs +32 -2
  38. package/components/containers/accordion/fesm2022/index.mjs +36 -2
  39. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  40. package/components/containers/tabs/bundles/index.umd.js +34 -0
  41. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +6 -2
  42. package/components/containers/tabs/esm2022/tabs.component.mjs +33 -4
  43. package/components/containers/tabs/fesm2022/index.mjs +36 -2
  44. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  45. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -0
  46. package/components/containers/tabs/tabs.component.d.ts +5 -1
  47. package/components/containers/wizard/bundles/index.umd.js +46 -2
  48. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +8 -2
  49. package/components/containers/wizard/esm2022/wizard.component.mjs +42 -4
  50. package/components/containers/wizard/fesm2022/index.mjs +48 -4
  51. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  52. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +4 -0
  53. package/components/containers/wizard/wizard.component.d.ts +1 -0
  54. package/components/data/form/bundles/index.umd.js +28 -1
  55. package/components/data/form/esm2022/form-field/form-field.directive.mjs +4 -1
  56. package/components/data/form/esm2022/form.component.mjs +24 -2
  57. package/components/data/form/esm2022/form.props.mjs +3 -2
  58. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +2 -1
  59. package/components/data/form/fesm2022/index.mjs +29 -2
  60. package/components/data/form/fesm2022/index.mjs.map +1 -1
  61. package/components/data/form/form.component.d.ts +3 -0
  62. package/components/data/list/bundles/index.umd.js +0 -9
  63. package/components/data/list/esm2022/list-item.directive.mjs +1 -10
  64. package/components/data/list/fesm2022/index.mjs +0 -9
  65. package/components/data/list/fesm2022/index.mjs.map +1 -1
  66. package/components/data/pagination/bundles/index.umd.js +6 -2
  67. package/components/data/pagination/esm2022/pagination.component.mjs +7 -3
  68. package/components/data/pagination/fesm2022/index.mjs +6 -2
  69. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  70. package/components/data/table/bundles/index.umd.js +21 -4
  71. package/components/data/table/esm2022/table.component.mjs +22 -5
  72. package/components/data/table/fesm2022/index.mjs +21 -4
  73. package/components/data/table/fesm2022/index.mjs.map +1 -1
  74. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +6 -2
  75. package/components/dialogs/alert-dialog/bundles/index.umd.js +18 -8
  76. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +17 -7
  77. package/components/dialogs/alert-dialog/fesm2022/index.mjs +15 -5
  78. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  79. package/components/input/checkbox/bundles/index.umd.js +12 -3
  80. package/components/input/checkbox/checkbox.component.d.ts +2 -0
  81. package/components/input/checkbox/esm2022/checkbox.component.mjs +9 -3
  82. package/components/input/checkbox/esm2022/checkbox.props.mjs +5 -2
  83. package/components/input/checkbox/fesm2022/index.mjs +12 -3
  84. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  85. package/components/input/checkboxset/bundles/index.umd.js +12 -1
  86. package/components/input/checkboxset/checkboxset.component.d.ts +1 -0
  87. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +11 -1
  88. package/components/input/checkboxset/esm2022/checkboxset.props.mjs +3 -2
  89. package/components/input/checkboxset/fesm2022/index.mjs +12 -1
  90. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  91. package/components/input/epoch/base-date-time/base-date-time.component.d.ts +0 -1
  92. package/components/input/epoch/base-date-time/bundles/index.umd.js +29 -27
  93. package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +30 -28
  94. package/components/input/epoch/base-date-time/fesm2022/index.mjs +29 -27
  95. package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -1
  96. package/components/input/epoch/date/bundles/index.umd.js +4 -3
  97. package/components/input/epoch/date/esm2022/date.component.mjs +5 -4
  98. package/components/input/epoch/date/fesm2022/index.mjs +4 -3
  99. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  100. package/components/input/epoch/date-time/bundles/index.umd.js +5 -4
  101. package/components/input/epoch/date-time/esm2022/date-time.component.mjs +7 -6
  102. package/components/input/epoch/date-time/fesm2022/index.mjs +6 -5
  103. package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -1
  104. package/components/input/file-upload/bundles/index.umd.js +1 -1
  105. package/components/input/file-upload/esm2022/file-upload.props.mjs +2 -2
  106. package/components/input/file-upload/fesm2022/index.mjs +1 -1
  107. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  108. package/components/input/radioset/bundles/index.umd.js +13 -1
  109. package/components/input/radioset/esm2022/radioset.component.mjs +11 -1
  110. package/components/input/radioset/esm2022/radioset.props.mjs +4 -2
  111. package/components/input/radioset/fesm2022/index.mjs +13 -1
  112. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  113. package/components/input/radioset/radioset.component.d.ts +1 -0
  114. package/components/input/slider/bundles/index.umd.js +86 -16
  115. package/components/input/slider/esm2022/slider.component.mjs +76 -9
  116. package/components/input/slider/esm2022/slider.props.mjs +5 -1
  117. package/components/input/slider/fesm2022/index.mjs +79 -8
  118. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  119. package/components/input/slider/slider.component.d.ts +12 -3
  120. package/components/input/text/bundles/index.umd.js +24 -3
  121. package/components/input/text/esm2022/input-text/input-text.component.mjs +6 -3
  122. package/components/input/text/esm2022/input-text/input-text.props.mjs +5 -2
  123. package/components/input/text/esm2022/number-locale/number-locale.mjs +16 -1
  124. package/components/input/text/fesm2022/index.mjs +24 -3
  125. package/components/input/text/fesm2022/index.mjs.map +1 -1
  126. package/components/input/text/input-text/input-text.component.d.ts +4 -0
  127. package/components/input/text/number-locale/number-locale.d.ts +12 -0
  128. package/components/navigation/breadcrumb/bundles/index.umd.js +2 -2
  129. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +3 -3
  130. package/components/navigation/breadcrumb/fesm2022/index.mjs +2 -2
  131. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  132. package/components/navigation/popover/bundles/index.umd.js +12 -0
  133. package/components/navigation/popover/esm2022/popover.component.mjs +13 -1
  134. package/components/navigation/popover/fesm2022/index.mjs +12 -0
  135. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  136. package/components/navigation/popover/popover.component.d.ts +2 -0
  137. package/components/page/default/bundles/index.umd.js +0 -4
  138. package/components/page/default/esm2022/router-outlet.directive.mjs +1 -5
  139. package/components/page/default/fesm2022/index.mjs +0 -4
  140. package/components/page/default/fesm2022/index.mjs.map +1 -1
  141. package/components/page/header/bundles/index.umd.js +4 -3
  142. package/components/page/header/esm2022/header.component.mjs +5 -4
  143. package/components/page/header/fesm2022/index.mjs +4 -3
  144. package/components/page/header/fesm2022/index.mjs.map +1 -1
  145. package/components/page/header/header.component.d.ts +2 -1
  146. package/core/bundles/index.umd.js +90 -6
  147. package/core/enums/enums.d.ts +1 -0
  148. package/core/esm2022/enums/enums.mjs +2 -1
  149. package/core/esm2022/utils/build-utils.mjs +5 -1
  150. package/core/esm2022/utils/utils.mjs +5 -2
  151. package/core/esm2022/utils/watcher.mjs +83 -4
  152. package/core/fesm2022/index.mjs +91 -4
  153. package/core/fesm2022/index.mjs.map +1 -1
  154. package/core/utils/watcher.d.ts +2 -0
  155. package/npm-shrinkwrap.json +2 -2
  156. package/oAuth/esm2022/oAuth.service.mjs +1 -1
  157. package/oAuth/fesm2022/index.mjs.map +1 -1
  158. package/oAuth/oAuth.service.d.ts +1 -1
  159. package/package-lock.json +2 -2
  160. package/package.json +1 -1
  161. package/runtime/base/bundles/index.umd.js +33 -31
  162. package/runtime/base/components/base-prefab.component.d.ts +6 -4
  163. package/runtime/base/esm2022/components/app-component/app.component.mjs +1 -1
  164. package/runtime/base/esm2022/components/base-page.component.mjs +2 -5
  165. package/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
  166. package/runtime/base/esm2022/components/base-prefab.component.mjs +20 -12
  167. package/runtime/base/esm2022/components/base-spa-page.component.mjs +1 -4
  168. package/runtime/base/esm2022/services/http-interceptor.services.mjs +14 -13
  169. package/runtime/base/fesm2022/index.mjs +34 -31
  170. package/runtime/base/fesm2022/index.mjs.map +1 -1
  171. package/runtime/base/runtime-base.module.d.ts +2 -1
  172. package/runtime/dynamic/app/app.config.d.ts +1 -1
  173. package/runtime/dynamic/bundles/index.umd.js +1 -1
  174. package/runtime/dynamic/esm2022/app/app.config.mjs +7 -7
  175. package/runtime/dynamic/fesm2022/index.mjs +2 -2
  176. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  177. package/scripts/datatable/datatable.js +17 -15
@@ -517,6 +517,13 @@
517
517
  && (!el.hasAttribute('tabindex') || (el.hasAttribute('tabindex') && !el.getAttribute("tabindex").startsWith('-'))));
518
518
  });
519
519
  };
520
+ const getCurrentWidgets = (element, widgets) => {
521
+ const componentElements = Array.from(element.querySelectorAll('[widget-id]'));
522
+ return Object.assign(widgets, componentElements.reduce((result, comp) => {
523
+ result[comp.widget.name] = comp.widget;
524
+ return result;
525
+ }, {}));
526
+ };
520
527
 
521
528
  const noop = () => { };
522
529
  exports.Live_Operations = void 0;
@@ -1626,7 +1633,7 @@
1626
1633
  };
1627
1634
  };
1628
1635
  const getDefaultViewModeWidget = widget => {
1629
- if (lodashEs.includes(['checkbox', 'toggle', 'rating'], widget)) {
1636
+ if (lodashEs.includes(['checkbox', 'toggle', 'iconbutton-toggle', 'rating'], widget)) {
1630
1637
  return VIEW_MODE_OPTIONS.DEFAULT;
1631
1638
  }
1632
1639
  return VIEW_MODE_OPTIONS.LABEL;
@@ -1645,16 +1652,19 @@
1645
1652
  };
1646
1653
  const parseValueByType = (value, type, widget, trailingzero) => {
1647
1654
  if (widget) {
1648
- if (widget === i1.FormWidgetType.NUMBER || widget === i1.FormWidgetType.SLIDER || widget === i1.FormWidgetType.CURRENCY) {
1655
+ if (widget === i1.FormWidgetType.SLIDER || widget === i1.FormWidgetType.CURRENCY) {
1649
1656
  return isNaN(Number(value)) ? null : trailingzero ? value : Number(value);
1650
1657
  }
1651
- if (widget === i1.FormWidgetType.CHECKBOX || widget === i1.FormWidgetType.TOGGLE) {
1658
+ if (widget === i1.FormWidgetType.NUMBER) {
1659
+ return (isNaN(Number(value)) || value == null) ? null : trailingzero ? value : Number(value);
1660
+ }
1661
+ if (widget === i1.FormWidgetType.CHECKBOX || widget === i1.FormWidgetType.TOGGLE || widget === i1.FormWidgetType.ICONBUTTONTOGGLE) {
1652
1662
  return parseBooleanValue(value);
1653
1663
  }
1654
1664
  return value;
1655
1665
  }
1656
1666
  if (i1.isNumberType(type)) {
1657
- return isNaN(Number(value)) ? null : Number(value);
1667
+ return (isNaN(Number(value)) || value == null) ? null : Number(value);
1658
1668
  }
1659
1669
  if (type === i1.DataType.BOOLEAN) {
1660
1670
  return parseBooleanValue(value);
@@ -1678,7 +1688,7 @@
1678
1688
  'time': ['time', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],
1679
1689
  'timestamp': ['timestamp', 'text', 'number', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],
1680
1690
  'datetime': ['datetime', 'text', 'select', 'checkboxset', 'radioset', 'autocomplete', 'chips'],
1681
- 'boolean': ['checkbox', 'radioset', 'toggle', 'select'],
1691
+ 'boolean': ['checkbox', 'radioset', 'toggle', 'iconbutton-toggle', 'select'],
1682
1692
  'list': ['select', 'radioset', 'checkboxset', 'switch', 'autocomplete', 'chips'],
1683
1693
  'clob': ['text', 'textarea', 'richtext'],
1684
1694
  'blob': ['upload'],
@@ -1736,7 +1746,7 @@
1736
1746
  if (widget === i1.FormWidgetType.NUMBER || widget === i1.FormWidgetType.SLIDER || widget === i1.FormWidgetType.CURRENCY) {
1737
1747
  return isNaN(Number(value)) ? null : Number(value);
1738
1748
  }
1739
- if (widget === i1.FormWidgetType.CHECKBOX || widget === i1.FormWidgetType.TOGGLE) {
1749
+ if (widget === i1.FormWidgetType.CHECKBOX || widget === i1.FormWidgetType.TOGGLE || widget === i1.FormWidgetType.ICONBUTTONTOGGLE) {
1740
1750
  return parseBooleanValue(value);
1741
1751
  }
1742
1752
  return value;
@@ -2535,8 +2545,9 @@
2535
2545
  const errorMessage = e.message || String(e);
2536
2546
  console.error(`Error executing event callback "${eventName}" on widget "${widgetName}":`, errorMessage);
2537
2547
  console.error('Event expression context:', { eventName, widgetName, locals });
2538
- // Re-throw to maintain original behavior but with better context
2539
- throw e;
2548
+ // Don't re-throw - allow execution to continue (e.g., navigation should still work)
2549
+ // Return undefined to indicate error was handled
2550
+ return undefined;
2540
2551
  }
2541
2552
  };
2542
2553
  if (child && !child.widget.eventHandlers)
@@ -2598,8 +2609,9 @@
2598
2609
  const errorMessage = error?.message || String(error);
2599
2610
  console.error(`Error executing event callback "${eventName}" on widget "${widgetName}":`, errorMessage);
2600
2611
  console.error('Full error:', error);
2601
- // Re-throw to maintain original behavior but with better error context
2602
- throw error;
2612
+ // Don't re-throw - allow execution to continue (e.g., navigation should still work)
2613
+ // Return undefined to indicate error was handled
2614
+ return undefined;
2603
2615
  }
2604
2616
  }
2605
2617
  }
@@ -2822,9 +2834,6 @@
2822
2834
  // This ensures all watchers registered for this component are cleaned up
2823
2835
  if (this.widgetId) {
2824
2836
  i1.$unwatchAll(this.widgetId);
2825
- // if (removedCount > 0) {
2826
- // console.log(`🧹 Cleaned up ${removedCount} watcher(s) for widget ${this.widgetId}`);
2827
- // }
2828
2837
  }
2829
2838
  // MEMORY LEAK FIX: Clear context to release references to parent scope data
2830
2839
  // The context object holds references to repeater items, wizard steps, etc.
@@ -3234,6 +3243,9 @@
3234
3243
  this.renderPartial = lodashEs.debounce(this._renderPartial, 200);
3235
3244
  componentInstance.registerPropertyChangeListener((key, nv, ov) => {
3236
3245
  if (key === 'content') {
3246
+ if ('isInlineContent' in componentInstance) {
3247
+ componentInstance.isInlineContent = !(nv && nv !== '');
3248
+ }
3237
3249
  if (componentInstance.$lazyLoad) {
3238
3250
  componentInstance.$lazyLoad = () => {
3239
3251
  this.renderPartial(nv);
@@ -5038,94 +5050,53 @@
5038
5050
  ['alignment', PROP_STRING],
5039
5051
  ['gap', PROP_STRING],
5040
5052
  ['wrap', PROP_BOOLEAN],
5041
- ['columngap', PROP_STRING]
5053
+ ['columngap', PROP_STRING],
5054
+ ['clipcontent', PROP_STRING],
5055
+ ['position', PROP_STRING],
5056
+ ['overflow', PROP_STRING],
5057
+ ['zindex', PROP_STRING],
5042
5058
  ]));
5043
5059
  };
5044
5060
 
5045
- const DEFAULT_CLS = 'app-container';
5046
- const WIDGET_CONFIG = {
5047
- widgetType: 'wm-container',
5048
- hostClass: DEFAULT_CLS
5049
- };
5050
- // Alignment matrix (assumes direction: 'row' as base)
5051
- const alignmentMatrix = {
5052
- 'top-left': { justifyContent: 'flex-start', alignItems: 'flex-start' },
5053
- 'top-center': { justifyContent: 'center', alignItems: 'flex-start' },
5054
- 'top-right': { justifyContent: 'flex-end', alignItems: 'flex-start' },
5055
- 'middle-left': { justifyContent: 'flex-start', alignItems: 'center' },
5056
- 'middle-center': { justifyContent: 'center', alignItems: 'center' },
5057
- 'middle-right': { justifyContent: 'flex-end', alignItems: 'center' },
5058
- 'bottom-left': { justifyContent: 'flex-start', alignItems: 'flex-end' },
5059
- 'bottom-center': { justifyContent: 'center', alignItems: 'flex-end' },
5060
- 'bottom-right': { justifyContent: 'flex-end', alignItems: 'flex-end' },
5061
- 'start': { justifyContent: 'space-between', alignItems: 'flex-start' },
5062
- 'center': { justifyContent: 'space-between', alignItems: 'center' },
5063
- 'end': { justifyContent: 'space-between', alignItems: 'flex-end' }
5064
- };
5065
- class ContainerDirective extends BaseContainerComponent {
5066
- static { this.initializeProps = registerProps(); }
5067
- constructor(inj, explicitContext) {
5068
- super(inj, WIDGET_CONFIG, explicitContext);
5061
+ class AutoLayoutUtils {
5062
+ constructor() {
5063
+ this.direction = 'row';
5069
5064
  this.hasWrap = false;
5070
- i1.addClass(this.nativeElement, DEFAULT_CLS);
5071
- styler(this.nativeElement, this, exports.APPLY_STYLES_TYPE.CONTAINER);
5065
+ this.alignment = 'top-left';
5066
+ // Alignment matrix
5067
+ this.alignmentMatrix = {
5068
+ 'top-left': { justifyContent: 'flex-start', alignItems: 'flex-start' },
5069
+ 'top-center': { justifyContent: 'center', alignItems: 'flex-start' },
5070
+ 'top-right': { justifyContent: 'flex-end', alignItems: 'flex-start' },
5071
+ 'middle-left': { justifyContent: 'flex-start', alignItems: 'center' },
5072
+ 'middle-center': { justifyContent: 'center', alignItems: 'center' },
5073
+ 'middle-right': { justifyContent: 'flex-end', alignItems: 'center' },
5074
+ 'bottom-left': { justifyContent: 'flex-start', alignItems: 'flex-end' },
5075
+ 'bottom-center': { justifyContent: 'center', alignItems: 'flex-end' },
5076
+ 'bottom-right': { justifyContent: 'flex-end', alignItems: 'flex-end' },
5077
+ 'start': { justifyContent: 'space-between', alignItems: 'flex-start' },
5078
+ 'center': { justifyContent: 'space-between', alignItems: 'center' },
5079
+ 'end': { justifyContent: 'space-between', alignItems: 'flex-end' }
5080
+ };
5072
5081
  }
5073
- onPropertyChange(key, nv, ov) {
5074
- switch (key) {
5075
- case 'direction':
5076
- this.direction = nv;
5077
- if (nv === 'column')
5078
- this.hasWrap = false; // disable wrap for column direction
5079
- this.$element.css({ 'flex-direction': nv, display: 'flex' });
5080
- this.applyAlignment(this.alignment);
5081
- break;
5082
- case 'wrap':
5083
- this.hasWrap = nv;
5084
- this.$element.css('flex-wrap', nv ? 'wrap' : 'nowrap');
5085
- break;
5086
- case 'alignment':
5087
- if (nv) {
5088
- this.alignment = nv;
5089
- this.applyAlignment(nv);
5090
- }
5091
- break;
5092
- case 'gap':
5093
- case 'columngap':
5094
- setTimeout(() => {
5095
- this.applySpacing(nv, key);
5096
- });
5097
- break;
5098
- }
5099
- super.onPropertyChange(key, nv, ov);
5082
+ /** Apply direction (row/column) */
5083
+ applyDirection(direction) {
5084
+ this.direction = direction;
5085
+ if (direction === 'column')
5086
+ this.hasWrap = false;
5087
+ this.$element.css({ display: 'flex', flexDirection: direction });
5088
+ this.applyAlignment(this.alignment);
5100
5089
  }
5101
- onStyleChange(key, nv, ov) {
5102
- if (key === 'alignment' && nv) {
5103
- this.alignment = nv;
5104
- this.applyAlignment(nv);
5105
- }
5106
- if (nv === 'fill') {
5107
- if (key === 'width')
5108
- this.$element.css('width', '100%');
5109
- if (key === 'height') {
5110
- const parentElement = this.nativeElement.parentElement;
5111
- if (parentElement?.hasAttribute('wmcontainer')) {
5112
- this.$element.css({ 'align-self': 'stretch', 'flex-grow': '1' });
5113
- }
5114
- else {
5115
- this.$element.css('height', '100%');
5116
- }
5117
- }
5118
- }
5119
- else if (nv === 'hug') {
5120
- if (key === 'width')
5121
- this.$element.css('width', 'fit-content');
5122
- if (key === 'height')
5123
- this.$element.css('height', 'fit-content');
5124
- }
5125
- super.onStyleChange(key, nv, ov);
5090
+ /** Apply wrapping */
5091
+ applyWrap(wrap) {
5092
+ this.hasWrap = wrap;
5093
+ this.$element.css('flex-wrap', wrap ? 'wrap' : 'nowrap');
5126
5094
  }
5095
+ /** Apply alignment based on direction */
5127
5096
  applyAlignment(alignmentKey) {
5128
- const base = alignmentMatrix[alignmentKey];
5097
+ if (!alignmentKey)
5098
+ return;
5099
+ const base = this.alignmentMatrix[alignmentKey];
5129
5100
  if (!base)
5130
5101
  return;
5131
5102
  const isRow = this.direction === 'row';
@@ -5134,80 +5105,251 @@
5134
5105
  this.$element.css({
5135
5106
  display: 'flex',
5136
5107
  'flex-wrap': this.hasWrap ? 'wrap' : 'nowrap',
5137
- justifyContent: justifyContent,
5138
- alignItems: alignItems
5108
+ justifyContent,
5109
+ alignItems
5139
5110
  });
5140
5111
  }
5141
- applySpacing(nv, key) {
5112
+ /** Apply spacing for gap + column gap */
5113
+ applySpacing(key, nv) {
5114
+ const base = this.alignmentMatrix[this.alignment];
5115
+ if (!base)
5116
+ return;
5117
+ const gapValue = key === 'gap' ? nv : this.gap;
5118
+ const colValue = key === 'columngap' ? nv : this.columngap;
5142
5119
  const isRow = this.direction === 'row';
5143
- const base = alignmentMatrix[this.alignment];
5144
- const el = this.$element;
5145
- // Normalize values
5146
- const gap = key === 'gap' ? nv : this.gap;
5147
- const columngap = key === 'columngap' ? nv : this.columngap;
5148
- const hasWrap = this.hasWrap;
5149
- // Default gap values
5150
- const colVal = (columngap && columngap !== 'auto') ? (columngap) : null;
5151
- const gapVal = (gap && gap !== 'auto') ? (gap) : null;
5152
- const rowVal = hasWrap ? gapVal : null;
5120
+ const gapVal = (gapValue && gapValue !== 'auto') ? gapValue : null;
5121
+ const colVal = (colValue && colValue !== 'auto') ? colValue : null;
5122
+ const rowVal = this.hasWrap && gapVal ? gapVal : null;
5153
5123
  let justifyContent = isRow ? base.justifyContent : base.alignItems;
5154
5124
  let alignItems = isRow ? base.alignItems : base.justifyContent;
5155
- // CASE: No wrap
5156
- if (!hasWrap) {
5157
- if (gap === 'auto') {
5158
- el.css({
5125
+ // ————— NO WRAP —————
5126
+ if (!this.hasWrap) {
5127
+ if (gapValue === 'auto') {
5128
+ this.$element.css({
5159
5129
  'justify-content': base.justifyContent,
5160
5130
  'align-items': base.alignItems
5161
5131
  });
5162
5132
  }
5163
5133
  else {
5164
- el.css({
5134
+ this.$element.css({
5165
5135
  'justify-content': justifyContent,
5166
5136
  'align-items': alignItems,
5167
5137
  gap: `${gapVal}px`
5168
5138
  });
5169
5139
  }
5170
5140
  }
5171
- // CASE: Wrap enabled
5141
+ // ————— WRAP LOGIC —————
5172
5142
  else {
5173
- // both auto (gap as rowgap and columngap)
5174
- if (columngap === 'auto' && gap === 'auto') {
5175
- el.css({
5143
+ if (gapValue === 'auto' && colValue === 'auto') {
5144
+ this.$element.css({
5176
5145
  'justify-content': justifyContent,
5177
5146
  'align-content': justifyContent
5178
5147
  });
5179
5148
  }
5180
- // columngap auto, gap (rowgap) fixed
5181
- else if (columngap === 'auto' && gap !== 'auto') {
5182
- el.css({
5149
+ else if (gapValue !== 'auto' && colValue === 'auto') {
5150
+ this.$element.css({
5183
5151
  'justify-content': justifyContent,
5184
5152
  'align-content': alignItems,
5185
5153
  'row-gap': `${rowVal}px`
5186
5154
  });
5187
5155
  }
5188
- // gap (rowgap) auto, columngap fixed
5189
- else if (gap === 'auto' && columngap !== 'auto') {
5190
- el.css({
5156
+ else if (gapValue === 'auto' && colValue !== 'auto') {
5157
+ this.$element.css({
5191
5158
  'align-content': 'space-between',
5192
5159
  'column-gap': `${colVal}px`
5193
5160
  });
5194
5161
  }
5195
- // both fixed numbers
5196
5162
  else {
5197
5163
  if (colVal && rowVal) {
5198
5164
  if (colVal === rowVal) {
5199
- el.css({ 'gap': `${colVal}px`, 'align-content': alignItems, 'justify-content': justifyContent });
5165
+ this.$element.css({
5166
+ 'gap': `${colVal}px`,
5167
+ 'align-content': alignItems,
5168
+ 'justify-content': justifyContent
5169
+ });
5200
5170
  }
5201
5171
  else {
5202
- el.css({ gap: `${rowVal}px ${colVal}px`, 'align-content': alignItems, 'justify-content': justifyContent });
5172
+ this.$element.css({
5173
+ 'gap': `${rowVal}px ${colVal}px`,
5174
+ 'align-content': alignItems,
5175
+ 'justify-content': justifyContent
5176
+ });
5203
5177
  }
5204
5178
  }
5205
5179
  }
5206
- this.columngap = columngap?.toString();
5207
5180
  }
5208
- this.gap = gap?.toString();
5181
+ this.gap = gapValue?.toString();
5182
+ this.columngap = colValue?.toString();
5209
5183
  }
5210
- static { this.ɵfac = function ContainerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ContainerDirective)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
5184
+ onPropertyChange(key, nv, ov) {
5185
+ switch (key) {
5186
+ case 'direction':
5187
+ this.applyDirection(nv);
5188
+ break;
5189
+ case 'wrap':
5190
+ this.applyWrap(nv);
5191
+ break;
5192
+ case 'alignment':
5193
+ this.alignment = nv;
5194
+ this.applyAlignment(nv);
5195
+ break;
5196
+ case 'gap':
5197
+ case 'columngap':
5198
+ setTimeout(() => {
5199
+ this.applySpacing(key, nv);
5200
+ });
5201
+ break;
5202
+ case 'position':
5203
+ this.position = nv;
5204
+ this.handlePosition();
5205
+ break;
5206
+ case 'clipcontent':
5207
+ this.clipContent = nv;
5208
+ this.handleClipBehaviour();
5209
+ break;
5210
+ }
5211
+ }
5212
+ applyStyleChange(key, nv) {
5213
+ if (key === 'width' || key === 'height') {
5214
+ this.applySize(key, nv);
5215
+ }
5216
+ else if (key === 'padding') {
5217
+ this.$element.css('padding', nv);
5218
+ }
5219
+ else if (key === 'overflow') {
5220
+ this.overflowtype = nv;
5221
+ this.handleClipBehaviour();
5222
+ }
5223
+ else if (key === 'zindex') {
5224
+ this.zIndex = nv;
5225
+ this.handlePosition();
5226
+ }
5227
+ }
5228
+ applySize(key, nv) {
5229
+ if (nv === 'fill') {
5230
+ if (key === 'width') {
5231
+ this.$element.css('width', '100%');
5232
+ }
5233
+ if (key === 'height') {
5234
+ if (this.parentElement?.hasAttribute('wmcontainer') || this.parentElement.hasAttribute('wmautolayout')) {
5235
+ this.$element.css({
5236
+ 'align-self': 'stretch',
5237
+ 'flex-grow': '1'
5238
+ });
5239
+ }
5240
+ else {
5241
+ this.$element.css('height', '100%');
5242
+ }
5243
+ }
5244
+ }
5245
+ else if (nv === 'hug') {
5246
+ if (key === 'width') {
5247
+ this.$element.css('width', 'fit-content');
5248
+ }
5249
+ if (key === 'height') {
5250
+ this.$element.css('height', 'fit-content');
5251
+ }
5252
+ }
5253
+ else {
5254
+ this.$element.css('flex-shrink', '0'); // Don't shrink when size is fixed
5255
+ }
5256
+ }
5257
+ // Determine whether the container should clip its content and configure scrolling behaviour accordingly.
5258
+ handleClipBehaviour() {
5259
+ const overflow = this.overflowtype?.toLowerCase();
5260
+ switch (overflow) {
5261
+ case 'vertical':
5262
+ this.$element.css({
5263
+ 'overflow-x': 'hidden',
5264
+ 'overflow-y': 'scroll'
5265
+ });
5266
+ break;
5267
+ case 'horizontal':
5268
+ this.$element.css({
5269
+ 'overflow-x': 'scroll',
5270
+ 'overflow-y': 'hidden'
5271
+ });
5272
+ break;
5273
+ case 'both directions':
5274
+ this.$element.css({
5275
+ 'overflow': 'scroll'
5276
+ });
5277
+ break;
5278
+ case 'no scrolling':
5279
+ if (this.clipContent) {
5280
+ this.$element.css({ 'overflow': 'hidden' });
5281
+ }
5282
+ else {
5283
+ this.$element.css({ 'overflow': '' });
5284
+ }
5285
+ break;
5286
+ }
5287
+ }
5288
+ // Toggle and apply positional behaviour and expose the z-index control when position is not relative.
5289
+ handlePosition() {
5290
+ if (this.position === 'sticky') {
5291
+ // Apply sticky styles
5292
+ this.$element.css({
5293
+ 'position': 'sticky',
5294
+ 'top': '0', // Sticks to top when scrolling vertically
5295
+ 'left': '0', // Sticks to left when scrolling horizontally
5296
+ 'z-index': this.zIndex
5297
+ });
5298
+ }
5299
+ else {
5300
+ // Reset to default (static/relative behavior)
5301
+ this.$element.css({
5302
+ 'position': '',
5303
+ 'top': '',
5304
+ 'left': '',
5305
+ 'z-index': ''
5306
+ });
5307
+ }
5308
+ }
5309
+ }
5310
+
5311
+ const DEFAULT_CLS = 'app-container';
5312
+ const WIDGET_CONFIG = {
5313
+ widgetType: 'wm-container',
5314
+ hostClass: DEFAULT_CLS
5315
+ };
5316
+ class ContainerDirective extends BaseContainerComponent {
5317
+ static { this.initializeProps = registerProps(); }
5318
+ constructor(inj, explicitContext, app) {
5319
+ super(inj, WIDGET_CONFIG, explicitContext);
5320
+ this.app = app;
5321
+ this.isPrism = false;
5322
+ i1.addClass(this.nativeElement, DEFAULT_CLS);
5323
+ styler(this.nativeElement, this, exports.APPLY_STYLES_TYPE.CONTAINER);
5324
+ this.isPrism = this.app.isPrism;
5325
+ if (this.isPrism) {
5326
+ this.initializeAutoLayout();
5327
+ }
5328
+ }
5329
+ initializeAutoLayout() {
5330
+ const self = this;
5331
+ this.autoLayoutUtils = new class extends AutoLayoutUtils {
5332
+ constructor() {
5333
+ super(...arguments);
5334
+ this.nativeElement = self.nativeElement;
5335
+ this.$element = self.$element;
5336
+ this.parentElement = self.nativeElement.parentElement ?? null;
5337
+ }
5338
+ }();
5339
+ }
5340
+ onPropertyChange(key, nv, ov) {
5341
+ if (this.isPrism && this.autoLayoutUtils) {
5342
+ this.autoLayoutUtils.onPropertyChange(key, nv, ov);
5343
+ }
5344
+ super.onPropertyChange(key, nv, ov);
5345
+ }
5346
+ onStyleChange(key, nv, ov) {
5347
+ if (this.isPrism && this.autoLayoutUtils) {
5348
+ this.autoLayoutUtils.applyStyleChange(key, nv);
5349
+ }
5350
+ super.onStyleChange(key, nv, ov);
5351
+ }
5352
+ static { this.ɵfac = function ContainerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ContainerDirective)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8), i0__namespace.ɵɵdirectiveInject(i1__namespace.App)); }; }
5211
5353
  static { this.ɵdir = /*@__PURE__*/ i0__namespace.ɵɵdefineDirective({ type: ContainerDirective, selectors: [["", "wmContainer", ""]], standalone: true, features: [i0__namespace.ɵɵProvidersFeature([
5212
5354
  provideAsWidgetRef(ContainerDirective)
5213
5355
  ]), i0__namespace.ɵɵInheritDefinitionFeature] }); }
@@ -5226,7 +5368,7 @@
5226
5368
  args: ['EXPLICIT_CONTEXT']
5227
5369
  }, {
5228
5370
  type: i0.Optional
5229
- }] }], null); })();
5371
+ }] }, { type: i1__namespace.App }], null); })();
5230
5372
 
5231
5373
  class LazyLoadDirective {
5232
5374
  constructor(inj, templateRef, viewContainer, explicitContext = {}) {
@@ -5569,6 +5711,7 @@
5569
5711
  exports.getBackGroundImageUrl = getBackGroundImageUrl;
5570
5712
  exports.getConditionalClasses = getConditionalClasses;
5571
5713
  exports.getContainerTargetClass = getContainerTargetClass;
5714
+ exports.getCurrentWidgets = getCurrentWidgets;
5572
5715
  exports.getDataTableFilterWidget = getDataTableFilterWidget;
5573
5716
  exports.getDefaultValue = getDefaultValue;
5574
5717
  exports.getDefaultViewModeWidget = getDefaultViewModeWidget;
@@ -1,7 +1,7 @@
1
1
  export { Live_Operations, ALLFIELDS, LIVE_CONSTANTS, performDataOperation, refreshDataSource, fetchRelatedFieldData, interpolateBindExpressions, getDistinctFieldProperties, getDistinctValues, fetchDistinctValues, getDistinctValuesForField, getRangeFieldValue, getRangeMatchMode, getEnableEmptyFilter, getEmptyMatchMode, createArrayFrom, applyFilterOnField, transformData } from './utils/data-utils';
2
2
  export { getOrderedDataset, transformDataWithKeys, extractDataAsArray, convertDataToObject, transformFormData, getUniqObjsByDataField, setItemByCompare, groupData, filterDate, toggleAllHeaders, handleHeaderClick, configureDnD, DataSetItem } from './utils/form-utils';
3
3
  export { EDIT_MODE, setHeaderConfig, setHeaderConfigForTable, getRowOperationsColumn, getFieldLayoutConfig, getDefaultViewModeWidget, parseValueByType, getFieldTypeWidgetTypesMap, getDataTableFilterWidget, getEditModeWidget, getDefaultValue } from './utils/live-utils';
4
- export { getObjValueByKey, getEvaluatedData, isActiveNavItem, hasLinkToCurrentPage, getOrderByExpr, isDataSetWidget, getImageUrl, getBackGroundImageUrl, provideAs, provideAsWidgetRef, provideAsDialogRef, unsupportedStatePersistenceTypes, NAVIGATION_TYPE, INPUTMODE, AUTOCLOSE_TYPE, getWatchIdentifier, getMatchModeTypesMap, getMatchModeMsgs, getConditionalClasses, prepareFieldDefs, getContainerTargetClass, extractDataSourceName, setFocusTrap, getKeyboardFocusableElements } from './utils/widget-utils';
4
+ export { getObjValueByKey, getEvaluatedData, isActiveNavItem, hasLinkToCurrentPage, getOrderByExpr, isDataSetWidget, getCurrentWidgets, getImageUrl, getBackGroundImageUrl, provideAs, provideAsWidgetRef, provideAsDialogRef, unsupportedStatePersistenceTypes, NAVIGATION_TYPE, INPUTMODE, AUTOCLOSE_TYPE, getWatchIdentifier, getMatchModeTypesMap, getMatchModeMsgs, getConditionalClasses, prepareFieldDefs, getContainerTargetClass, extractDataSourceName, setFocusTrap, getKeyboardFocusableElements } from './utils/widget-utils';
5
5
  export { BaseComponent } from './widgets/common/base/base.component';
6
6
  export * from './widgets/common/base/base-container.component';
7
7
  export { DatasetAwareNavComponent } from './widgets/common/base/dataset-aware-nav.component';
@@ -31,4 +31,4 @@ export * from './widgets/common/lazy-load/lazy-load.directive';
31
31
  export * from './widgets/common/partial-param/partial-param.directive';
32
32
  export * from './widgets/common/base/text-content.directive';
33
33
  export * from './directives/show-in-device.directive';
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsZUFBZSxFQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLDRCQUE0QixFQUMvQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDSCxhQUFhLEVBQ2hCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsd0JBQXdCLEVBRTNCLE1BQU0sbURBQW1ELENBQUM7QUFDM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDbkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDWCxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGl2ZV9PcGVyYXRpb25zfSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuXG5leHBvcnQge1xuICAgIExpdmVfT3BlcmF0aW9ucyxcbiAgICBBTExGSUVMRFMsXG4gICAgTElWRV9DT05TVEFOVFMsXG4gICAgcGVyZm9ybURhdGFPcGVyYXRpb24sXG4gICAgcmVmcmVzaERhdGFTb3VyY2UsXG4gICAgZmV0Y2hSZWxhdGVkRmllbGREYXRhLFxuICAgIGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zLFxuICAgIGdldERpc3RpbmN0RmllbGRQcm9wZXJ0aWVzLFxuICAgIGdldERpc3RpbmN0VmFsdWVzLFxuICAgIGZldGNoRGlzdGluY3RWYWx1ZXMsXG4gICAgZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZCxcbiAgICBnZXRSYW5nZUZpZWxkVmFsdWUsXG4gICAgZ2V0UmFuZ2VNYXRjaE1vZGUsXG4gICAgZ2V0RW5hYmxlRW1wdHlGaWx0ZXIsXG4gICAgZ2V0RW1wdHlNYXRjaE1vZGUsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIGFwcGx5RmlsdGVyT25GaWVsZCxcbiAgICB0cmFuc2Zvcm1EYXRhXG59IGZyb20gJy4vdXRpbHMvZGF0YS11dGlscyc7XG5leHBvcnQge1xuICAgIGdldE9yZGVyZWREYXRhc2V0LFxuICAgIHRyYW5zZm9ybURhdGFXaXRoS2V5cyxcbiAgICBleHRyYWN0RGF0YUFzQXJyYXksXG4gICAgY29udmVydERhdGFUb09iamVjdCxcbiAgICB0cmFuc2Zvcm1Gb3JtRGF0YSxcbiAgICBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLFxuICAgIHNldEl0ZW1CeUNvbXBhcmUsXG4gICAgZ3JvdXBEYXRhLFxuICAgIGZpbHRlckRhdGUsXG4gICAgdG9nZ2xlQWxsSGVhZGVycyxcbiAgICBoYW5kbGVIZWFkZXJDbGljayxcbiAgICBjb25maWd1cmVEbkQsXG4gICAgRGF0YVNldEl0ZW1cbn0gZnJvbSAnLi91dGlscy9mb3JtLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgRURJVF9NT0RFLFxuICAgIHNldEhlYWRlckNvbmZpZyxcbiAgICBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSxcbiAgICBnZXRSb3dPcGVyYXRpb25zQ29sdW1uLFxuICAgIGdldEZpZWxkTGF5b3V0Q29uZmlnLFxuICAgIGdldERlZmF1bHRWaWV3TW9kZVdpZGdldCxcbiAgICBwYXJzZVZhbHVlQnlUeXBlLFxuICAgIGdldEZpZWxkVHlwZVdpZGdldFR5cGVzTWFwLFxuICAgIGdldERhdGFUYWJsZUZpbHRlcldpZGdldCxcbiAgICBnZXRFZGl0TW9kZVdpZGdldCxcbiAgICBnZXREZWZhdWx0VmFsdWVcbn0gZnJvbSAnLi91dGlscy9saXZlLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgZ2V0T2JqVmFsdWVCeUtleSxcbiAgICBnZXRFdmFsdWF0ZWREYXRhLFxuICAgIGlzQWN0aXZlTmF2SXRlbSxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBnZXRPcmRlckJ5RXhwcixcbiAgICBpc0RhdGFTZXRXaWRnZXQsXG4gICAgZ2V0SW1hZ2VVcmwsXG4gICAgZ2V0QmFja0dyb3VuZEltYWdlVXJsLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgcHJvdmlkZUFzRGlhbG9nUmVmLFxuICAgIHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLFxuICAgIE5BVklHQVRJT05fVFlQRSxcbiAgICBJTlBVVE1PREUsXG4gICAgQVVUT0NMT1NFX1RZUEUsXG4gICAgZ2V0V2F0Y2hJZGVudGlmaWVyLFxuICAgIGdldE1hdGNoTW9kZVR5cGVzTWFwLFxuICAgIGdldE1hdGNoTW9kZU1zZ3MsXG4gICAgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzLFxuICAgIHByZXBhcmVGaWVsZERlZnMgLFxuICAgIGdldENvbnRhaW5lclRhcmdldENsYXNzLFxuICAgIGV4dHJhY3REYXRhU291cmNlTmFtZSxcbiAgICBzZXRGb2N1c1RyYXAsXG4gICAgZ2V0S2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50c1xufSBmcm9tICcuL3V0aWxzL3dpZGdldC11dGlscyc7XG5leHBvcnQge1xuICAgIEJhc2VDb21wb25lbnRcbn0gZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgICBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQsXG4gICAgTmF2Tm9kZVxufSBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvZGF0YXNldC1hd2FyZS1uYXYuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9wYXJ0aWFsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2N1c3RvbS13aWRnZXQtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS1maWVsZC12YWxpZGF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2l0ZW0tdGVtcGxhdGUvaXRlbS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9yZXBlYXQtdGVtcGxhdGUvcmVwZWF0LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2Uvc3R5bGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3B1bGwtdG8tcmVmcmVzaC9wdWxsLXRvLXJlZnJlc2gnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wYXJ0aWFsL3BhcnRpYWwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVkcmF3L3JlZHJhd2FibGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgdXBkYXRlRGV2aWNlVmlld1xufSBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2RldmljZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9zdHlsZXInO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3dpZGdldC1pZC1nZW5lcmF0b3InO1xuZXhwb3J0IHtcbiAgICBnZXRXaWRnZXRQcm9wc0J5VHlwZSxcbiAgICByZWdpc3RlcixcbiAgICByZWdpc3RlckZvcm1XaWRnZXQsXG4gICAgUFJPUF9UWVBFLFxuICAgIFBST1BfU1RSSU5HLFxuICAgIFBST1BfTlVNQkVSLFxuICAgIFBST1BfQk9PTEVBTixcbiAgICBQUk9QX0FOWVxufSBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3dpZGdldC1wcm9wcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5leHBvcnQge1xuICAgIFRvRGF0ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgU3VmZml4UGlwZSxcbiAgICBDdXN0b21QaXBlLFxuICAgIFRpbWVGcm9tTm93UGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIEZpbGVJY29uQ2xhc3NQaXBlLFxuICAgIFN0YXRlQ2xhc3NQaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgVHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUsXG4gICAgVGVtcGxhdGVSZXBsYWNlUGlwZVxufSBmcm9tICcuL3BpcGVzL2N1c3RvbS1waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RydXN0LWFzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9zYW5pdGl6ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvaW1hZ2UucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2NvbnRhaW5lci9jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vbGF6eS1sb2FkL2xhenktbG9hZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wYXJ0aWFsLXBhcmFtL3BhcnRpYWwtcGFyYW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS90ZXh0LWNvbnRlbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zaG93LWluLWRldmljZS5kaXJlY3RpdmUnO1xuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsZUFBZSxFQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWiw0QkFBNEIsRUFDL0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0gsYUFBYSxFQUNoQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsT0FBTyxFQUNILHdCQUF3QixFQUUzQixNQUFNLG1EQUFtRCxDQUFDO0FBQzNELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ25CLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsT0FBTyxFQUNILG9CQUFvQixFQUNwQixRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1gsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELE9BQU8sRUFDSCxVQUFVLEVBQ1YsWUFBWSxFQUNaLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDdEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpdmVfT3BlcmF0aW9uc30gZnJvbSAnLi91dGlscy9kYXRhLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgICBMaXZlX09wZXJhdGlvbnMsXG4gICAgQUxMRklFTERTLFxuICAgIExJVkVfQ09OU1RBTlRTLFxuICAgIHBlcmZvcm1EYXRhT3BlcmF0aW9uLFxuICAgIHJlZnJlc2hEYXRhU291cmNlLFxuICAgIGZldGNoUmVsYXRlZEZpZWxkRGF0YSxcbiAgICBpbnRlcnBvbGF0ZUJpbmRFeHByZXNzaW9ucyxcbiAgICBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcyxcbiAgICBnZXREaXN0aW5jdFZhbHVlcyxcbiAgICBmZXRjaERpc3RpbmN0VmFsdWVzLFxuICAgIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsXG4gICAgZ2V0UmFuZ2VGaWVsZFZhbHVlLFxuICAgIGdldFJhbmdlTWF0Y2hNb2RlLFxuICAgIGdldEVuYWJsZUVtcHR5RmlsdGVyLFxuICAgIGdldEVtcHR5TWF0Y2hNb2RlLFxuICAgIGNyZWF0ZUFycmF5RnJvbSxcbiAgICBhcHBseUZpbHRlck9uRmllbGQsXG4gICAgdHJhbnNmb3JtRGF0YVxufSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBnZXRPcmRlcmVkRGF0YXNldCxcbiAgICB0cmFuc2Zvcm1EYXRhV2l0aEtleXMsXG4gICAgZXh0cmFjdERhdGFBc0FycmF5LFxuICAgIGNvbnZlcnREYXRhVG9PYmplY3QsXG4gICAgdHJhbnNmb3JtRm9ybURhdGEsXG4gICAgZ2V0VW5pcU9ianNCeURhdGFGaWVsZCxcbiAgICBzZXRJdGVtQnlDb21wYXJlLFxuICAgIGdyb3VwRGF0YSxcbiAgICBmaWx0ZXJEYXRlLFxuICAgIHRvZ2dsZUFsbEhlYWRlcnMsXG4gICAgaGFuZGxlSGVhZGVyQ2xpY2ssXG4gICAgY29uZmlndXJlRG5ELFxuICAgIERhdGFTZXRJdGVtXG59IGZyb20gJy4vdXRpbHMvZm9ybS11dGlscyc7XG5leHBvcnQge1xuICAgIEVESVRfTU9ERSxcbiAgICBzZXRIZWFkZXJDb25maWcsXG4gICAgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGUsXG4gICAgZ2V0Um93T3BlcmF0aW9uc0NvbHVtbixcbiAgICBnZXRGaWVsZExheW91dENvbmZpZyxcbiAgICBnZXREZWZhdWx0Vmlld01vZGVXaWRnZXQsXG4gICAgcGFyc2VWYWx1ZUJ5VHlwZSxcbiAgICBnZXRGaWVsZFR5cGVXaWRnZXRUeXBlc01hcCxcbiAgICBnZXREYXRhVGFibGVGaWx0ZXJXaWRnZXQsXG4gICAgZ2V0RWRpdE1vZGVXaWRnZXQsXG4gICAgZ2V0RGVmYXVsdFZhbHVlXG59IGZyb20gJy4vdXRpbHMvbGl2ZS11dGlscyc7XG5leHBvcnQge1xuICAgIGdldE9ialZhbHVlQnlLZXksXG4gICAgZ2V0RXZhbHVhdGVkRGF0YSxcbiAgICBpc0FjdGl2ZU5hdkl0ZW0sXG4gICAgaGFzTGlua1RvQ3VycmVudFBhZ2UsXG4gICAgZ2V0T3JkZXJCeUV4cHIsXG4gICAgaXNEYXRhU2V0V2lkZ2V0LFxuICAgIGdldEN1cnJlbnRXaWRnZXRzLFxuICAgIGdldEltYWdlVXJsLFxuICAgIGdldEJhY2tHcm91bmRJbWFnZVVybCxcbiAgICBwcm92aWRlQXMsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHByb3ZpZGVBc0RpYWxvZ1JlZixcbiAgICB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcyxcbiAgICBOQVZJR0FUSU9OX1RZUEUsXG4gICAgSU5QVVRNT0RFLFxuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIGdldFdhdGNoSWRlbnRpZmllcixcbiAgICBnZXRNYXRjaE1vZGVUeXBlc01hcCxcbiAgICBnZXRNYXRjaE1vZGVNc2dzLFxuICAgIGdldENvbmRpdGlvbmFsQ2xhc3NlcyxcbiAgICBwcmVwYXJlRmllbGREZWZzICxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBleHRyYWN0RGF0YVNvdXJjZU5hbWUsXG4gICAgc2V0Rm9jdXNUcmFwLFxuICAgIGdldEtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNcbn0gZnJvbSAnLi91dGlscy93aWRnZXQtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50XG59IGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gICAgRGF0YXNldEF3YXJlTmF2Q29tcG9uZW50LFxuICAgIE5hdk5vZGVcbn0gZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2RhdGFzZXQtYXdhcmUtbmF2LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvcGFydGlhbC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9jdXN0b20td2lkZ2V0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UtZmllbGQtdmFsaWRhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9pdGVtLXRlbXBsYXRlL2l0ZW0tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVwZWF0LXRlbXBsYXRlL3JlcGVhdC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3N0eWxhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wdWxsLXRvLXJlZnJlc2gvcHVsbC10by1yZWZyZXNoJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC9wYXJ0aWFsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3JlZHJhdy9yZWRyYXdhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2NvbnN0YW50cyc7XG5leHBvcnQge1xuICAgIHVwZGF0ZURldmljZVZpZXdcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9kZXZpY2V2aWV3JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvc3R5bGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCB7XG4gICAgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0LFxuICAgIFBST1BfVFlQRSxcbiAgICBQUk9QX1NUUklORyxcbiAgICBQUk9QX05VTUJFUixcbiAgICBQUk9QX0JPT0xFQU4sXG4gICAgUFJPUF9BTllcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtcHJvcHMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgICBUb0RhdGVQaXBlLFxuICAgIFRvTnVtYmVyUGlwZSxcbiAgICBUb0N1cnJlbmN5UGlwZSxcbiAgICBQcmVmaXhQaXBlLFxuICAgIFN1ZmZpeFBpcGUsXG4gICAgQ3VzdG9tUGlwZSxcbiAgICBUaW1lRnJvbU5vd1BpcGUsXG4gICAgTnVtYmVyVG9TdHJpbmdQaXBlLFxuICAgIFN0cmluZ1RvTnVtYmVyUGlwZSxcbiAgICBGaWx0ZXJQaXBlLFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBTdGF0ZUNsYXNzUGlwZSxcbiAgICBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlLFxuICAgIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLFxuICAgIFRlbXBsYXRlUmVwbGFjZVBpcGVcbn0gZnJvbSAnLi9waXBlcy9jdXN0b20tcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy90cnVzdC1hcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FuaXRpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2ltYWdlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9jb250YWluZXIvY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2xhenktbG9hZC9sYXp5LWxvYWQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC1wYXJhbS9wYXJ0aWFsLXBhcmFtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvdGV4dC1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvc2hvdy1pbi1kZXZpY2UuZGlyZWN0aXZlJztcbiJdfQ==