@c8y/ngx-components 1021.22.0 → 1021.22.27

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 (148) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +23 -10
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  3. package/alarms/alarms-type-filter.component.d.ts +21 -14
  4. package/alarms/alarms-type-filter.component.d.ts.map +1 -1
  5. package/alarms/alarms-view.service.d.ts +7 -0
  6. package/alarms/alarms-view.service.d.ts.map +1 -1
  7. package/alarms/alarms.model.d.ts +1 -6
  8. package/alarms/alarms.model.d.ts.map +1 -1
  9. package/alarms/alarms.module.d.ts +1 -1
  10. package/alarms/index.d.ts +1 -0
  11. package/alarms/index.d.ts.map +1 -1
  12. package/branding/shared/data/branding-tracking.service.d.ts +20 -0
  13. package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
  14. package/branding/shared/data/branding-version.service.d.ts.map +1 -1
  15. package/branding/shared/data/index.d.ts +1 -0
  16. package/branding/shared/data/index.d.ts.map +1 -1
  17. package/branding/shared/data/store-branding.service.d.ts +8 -1
  18. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  19. package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
  20. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  21. package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
  22. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  23. package/cockpit-config/cockpit-config.module.d.ts +1 -1
  24. package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
  25. package/context-dashboard/context-dashboard.service.d.ts +1 -1
  26. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  27. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  28. package/core/common/service-registry.model.d.ts +2 -1
  29. package/core/common/service-registry.model.d.ts.map +1 -1
  30. package/core/common/ui-state.service.d.ts +0 -1
  31. package/core/common/ui-state.service.d.ts.map +1 -1
  32. package/core/i18n/missing-translation-custom.handler.d.ts +1 -0
  33. package/core/i18n/missing-translation-custom.handler.d.ts.map +1 -1
  34. package/core/plugins/index.d.ts +1 -0
  35. package/core/plugins/index.d.ts.map +1 -1
  36. package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
  37. package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
  38. package/core/plugins/plugins-resolve.service.d.ts +4 -2
  39. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  40. package/core/plugins/plugins.model.d.ts +3 -1
  41. package/core/plugins/plugins.model.d.ts.map +1 -1
  42. package/core/plugins/plugins.service.d.ts +3 -0
  43. package/core/plugins/plugins.service.d.ts.map +1 -1
  44. package/core/router/router-tabs.resolver.d.ts +2 -2
  45. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  46. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  47. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  48. package/ecosystem/application-plugins/application-plugins.guard.d.ts.map +1 -1
  49. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  50. package/esm2022/alarms/alarm-info.component.mjs +3 -3
  51. package/esm2022/alarms/alarm-severity-to-label.pipe.mjs +2 -2
  52. package/esm2022/alarms/alarms-date-filter.component.mjs +94 -42
  53. package/esm2022/alarms/alarms-type-filter.component.mjs +102 -72
  54. package/esm2022/alarms/alarms-view.service.mjs +16 -2
  55. package/esm2022/alarms/alarms.component.mjs +3 -3
  56. package/esm2022/alarms/alarms.model.mjs +1 -1
  57. package/esm2022/alarms/alarms.module.mjs +3 -3
  58. package/esm2022/alarms/index.mjs +2 -1
  59. package/esm2022/branding/shared/data/branding-tracking.service.mjs +58 -0
  60. package/esm2022/branding/shared/data/branding-version.service.mjs +9 -5
  61. package/esm2022/branding/shared/data/index.mjs +2 -1
  62. package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
  63. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
  64. package/esm2022/branding/shared/lazy/branding-theme-form/branding-theme-form.component.mjs +5 -2
  65. package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
  66. package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
  67. package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
  68. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -13
  69. package/esm2022/core/bootstrap/bootstrap.component.mjs +4 -3
  70. package/esm2022/core/common/service-registry.model.mjs +1 -1
  71. package/esm2022/core/common/ui-state.service.mjs +1 -19
  72. package/esm2022/core/i18n/missing-translation-custom.handler.mjs +5 -1
  73. package/esm2022/core/i18n/translation-loader.service.mjs +2 -2
  74. package/esm2022/core/plugins/index.mjs +2 -1
  75. package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
  76. package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
  77. package/esm2022/core/plugins/plugins.model.mjs +2 -1
  78. package/esm2022/core/plugins/plugins.service.mjs +13 -5
  79. package/esm2022/core/router/router-tabs.resolver.mjs +22 -8
  80. package/esm2022/core/router/scoped-context-route.service.mjs +9 -4
  81. package/esm2022/core/tabs/tabs-outlet.component.mjs +3 -3
  82. package/esm2022/core/version/websdk-plugin-version.factory.mjs +2 -2
  83. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  84. package/esm2022/ecosystem/activity-log/activity-log.component.mjs +3 -3
  85. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +67 -23
  86. package/esm2022/ecosystem/application-plugins/application-plugins.guard.mjs +8 -2
  87. package/esm2022/ecosystem/application-plugins/orphaned-status-cell-renderer.component.mjs +7 -1
  88. package/esm2022/interval-picker/interval-picker.component.mjs +1 -1
  89. package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
  90. package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +5 -1
  91. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
  92. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +73 -4
  93. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +29 -5
  94. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +7 -1
  95. package/esm2022/widgets/implementations/alarms/alarm-widget.service.mjs +12 -2
  96. package/fesm2022/c8y-ngx-components-alarms.mjs +200 -107
  97. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +76 -9
  99. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +19 -12
  101. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
  103. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +46 -12
  105. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
  107. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +79 -23
  109. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-ecosystem.mjs +81 -25
  111. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +4 -0
  114. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
  116. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +124 -15
  118. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components.mjs +91 -50
  120. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  121. package/interval-picker/interval-picker.component.d.ts +2 -2
  122. package/interval-picker/interval-picker.component.d.ts.map +1 -1
  123. package/interval-picker/interval-picker.model.d.ts +5 -0
  124. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  125. package/locales/de.po +431 -538
  126. package/locales/en.po +2 -889
  127. package/locales/en_US.po +2 -880
  128. package/locales/es.po +462 -540
  129. package/locales/fr.po +470 -549
  130. package/locales/ja_JP.po +405 -598
  131. package/locales/ko.po +649 -502
  132. package/locales/locales.pot +27 -12
  133. package/locales/nl.po +463 -541
  134. package/locales/pl.po +502 -552
  135. package/locales/pt_BR.po +466 -543
  136. package/locales/zh_CN.po +650 -498
  137. package/locales/zh_TW.po +650 -498
  138. package/package.json +1 -1
  139. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts +4 -0
  140. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts.map +1 -1
  141. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  142. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +12 -1
  143. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  144. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +12 -1
  145. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  146. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +11 -1
  147. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  148. package/widgets/implementations/alarms/alarm-widget.service.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"plugins-resolve.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins-resolve.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,mBAAmB,EACnB,IAAI,EAEJ,QAAQ,EACR,QAAQ,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAmB,UAAU,EAAW,MAAM,MAAM,CAAC;;AAgB5D,qBAGa,qBAAqB;IAsGpB,OAAO,CAAC,QAAQ;IArG5B;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAelF,MAAM,CAAC,aAAa,CAClB,mBAAmB,EAAE,wBAAwB,EAC7C,eAAe,CAAC,EAAE,wBAAwB,GACzC,wBAAwB;IAkC3B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,mBAAmB,GAAG,QAAQ,CAAC,CAAC;IACvD;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B;;OAEG;IACH,cAAc,EAAE,UAAU,CAAC;QACzB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC;;OAEG;IACH,2CAA2C,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,eAAe,CAGlB;IACL,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,4CAA4C,CAAqC;gBAErE,QAAQ,EAAE,mBAAmB;IAejD;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,MAAA;KAAE,CAAC;IAM5D;;;OAGG;IACH,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,MAAA;KAAE,CAAC;IAgB9D,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM;IASjD,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAchE;;OAEG;IACH,YAAY;IAIZ,mBAAmB;IAInB;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,wBAAwB;IA+BnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAI/E;;OAEG;IACH,oBAAoB;IAIpB;;;OAGG;IACH,cAAc;YAeA,gBAAgB;IAgB9B,OAAO,CAAC,eAAe;YAeT,mBAAmB;yCA3StB,qBAAqB;6CAArB,qBAAqB;CAwVjC"}
1
+ {"version":3,"file":"plugins-resolve.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins-resolve.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,mBAAmB,EACnB,IAAI,EAEJ,QAAQ,EACR,QAAQ,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAmB,UAAU,EAAW,MAAM,MAAM,CAAC;;AAgB5D,qBAGa,qBAAqB;IAwGpB,OAAO,CAAC,QAAQ;IAvG5B;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAelF,MAAM,CAAC,aAAa,CAClB,mBAAmB,EAAE,wBAAwB,EAC7C,eAAe,CAAC,EAAE,wBAAwB,GACzC,wBAAwB;IAkC3B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,mBAAmB,GAAG,QAAQ,CAAC,CAAC;IACvD;;OAEG;IACH,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B;;OAEG;IACH,cAAc,EAAE,UAAU,CAAC;QACzB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,kBAAkB,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC;;OAEG;IACH,2CAA2C,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,eAAe,CAGlB;IACL,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,4CAA4C,CAAqC;IACzF,OAAO,CAAC,mBAAmB,CAAqC;gBAE5C,QAAQ,EAAE,mBAAmB;IAiBjD;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAMpE;;;OAGG;IACH,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,MAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBtE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM;IASjD,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAchE;;OAEG;IACH,YAAY;IAIZ,mBAAmB;IAInB;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,wBAAwB;IA+BnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,wBAAwB;IAI/E;;OAEG;IACH,oBAAoB;IAIpB;;;OAGG;IACH,cAAc;YAeA,gBAAgB;IAgB9B,OAAO,CAAC,eAAe;YAeT,mBAAmB;yCAjTtB,qBAAqB;6CAArB,qBAAqB;CA8VjC"}
@@ -8,7 +8,8 @@ export declare enum ApplicationPluginStatus {
8
8
  ORPHANED = "ORPHANED",
9
9
  LATEST = "LATEST",
10
10
  OUTDATED = "OUTDATED",
11
- REVOKED = "REVOKED"
11
+ REVOKED = "REVOKED",
12
+ AUTO = "AUTO"
12
13
  }
13
14
  export declare enum PackageType {
14
15
  /**
@@ -45,5 +46,6 @@ export interface ApplicationPlugin {
45
46
  type?: PackageType;
46
47
  versioningMatrix?: VersioningMatrix;
47
48
  selected?: boolean;
49
+ installedViaTag?: string | false;
48
50
  }
49
51
  //# sourceMappingURL=plugins.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.model.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,wBAAwB,CAAC;IAClC,eAAe,CAAC,EAAE,wBAAwB,CAAC;CAC5C;AAED,oBAAY,uBAAuB;IACjC,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,oBAAY,WAAW;IACrB;;OAEG;IACH,QAAQ,aAAa;IACrB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"plugins.model.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,wBAAwB,CAAC;IAClC,eAAe,CAAC,EAAE,wBAAwB,CAAC;CAC5C;AAED,oBAAY,uBAAuB;IACjC,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,oBAAY,WAAW;IACrB;;OAEG;IACH,QAAQ,aAAa;IACrB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAClC"}
@@ -57,6 +57,9 @@ export declare class PluginsService {
57
57
  * @returns Returns a list of remotes that has been assigned to the configuration object.
58
58
  */
59
59
  setInitialRemotes(application: IApplication): Promise<PluginsConfig>;
60
+ resetRemotes(application: IApplication): Promise<IApplication & {
61
+ config: PluginsConfig;
62
+ }>;
60
63
  /**
61
64
  * Sorts versions list or list of objects by version property
62
65
  * @returns list of versions as array of strings or array of objects sorted by version property
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Injector } from '@angular/core';
2
- import { ActivatedRouteSnapshot, Router } from '@angular/router';
2
+ import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';
3
3
  import { Observable } from 'rxjs';
4
4
  import { Tab } from '../tabs/tab.model';
5
5
  import * as i0 from "@angular/core";
@@ -7,7 +7,7 @@ export declare class RouterTabsResolver {
7
7
  private injector;
8
8
  private router;
9
9
  constructor(injector: Injector, router: Router);
10
- get routerStateSnapshot(): import("@angular/router").RouterStateSnapshot;
10
+ get routerStateSnapshot(): RouterStateSnapshot;
11
11
  resolve(currentRoute: ActivatedRouteSnapshot): Observable<Tab[]>;
12
12
  private getBaselUrl;
13
13
  private getLatestChildRoutes;
@@ -1 +1 @@
1
- {"version":3,"file":"router-tabs.resolver.d.ts","sourceRoot":"","sources":["../../../core/router/router-tabs.resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAqC,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAE1D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;;AAGxC,qBAGa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;gBADN,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM;IAGxB,IAAI,mBAAmB,kDAEtB;IAED,OAAO,CAAC,YAAY,EAAE,sBAAsB,GA+CrC,UAAU,CAAC,GAAG,EAAE,CAAC;IAGxB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,SAAS;yCAzFN,kBAAkB;6CAAlB,kBAAkB;CAkG9B"}
1
+ {"version":3,"file":"router-tabs.resolver.d.ts","sourceRoot":"","sources":["../../../core/router/router-tabs.resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoD,MAAM,eAAe,CAAC;AAC3F,OAAO,EACL,sBAAsB,EACtB,MAAM,EAKN,mBAAmB,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAE1D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;;AAGxC,qBAGa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;gBADN,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM;IAGxB,IAAI,mBAAmB,wBAEtB;IAED,OAAO,CAAC,YAAY,EAAE,sBAAsB,GA+CrC,UAAU,CAAC,GAAG,EAAE,CAAC;IAGxB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,SAAS;yCAzFN,kBAAkB;6CAAlB,kBAAkB;CAkH9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-context-route.service.d.ts","sourceRoot":"","sources":["../../../core/router/scoped-context-route.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,QAAQ,EAAE,SAAS,EAAQ,MAAM,eAAe,CAAC;AAElF,OAAO,EACL,cAAc,EAKd,MAAM,EAGP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAW,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAS,UAAU,EAAW,MAAM,MAAM,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;AAI5D;;GAEG;AACH,qBACa,yBAA0B,YAAW,SAAS;IAWvD,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAfpB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAc;IAE9B;;OAEG;IACH,OAAO,CAAC,cAAc,CAAc;gBAG1B,YAAY,EAAE,kBAAkB,EAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;IAGhC;;;OAGG;IACH,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAYjC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAwBjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,cAAc;IAId;;;OAGG;IACH,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;yCA7JpB,yBAAyB;6CAAzB,yBAAyB;CAoKrC"}
1
+ {"version":3,"file":"scoped-context-route.service.d.ts","sourceRoot":"","sources":["../../../core/router/scoped-context-route.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,QAAQ,EAAE,SAAS,EAAQ,MAAM,eAAe,CAAC;AAElF,OAAO,EACL,cAAc,EAKd,MAAM,EAGP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAW,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAS,UAAU,EAAW,MAAM,MAAM,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;AAI5D;;GAEG;AACH,qBACa,yBAA0B,YAAW,SAAS;IAWvD,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAfpB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAc;IAE9B;;OAEG;IACH,OAAO,CAAC,cAAc,CAAc;gBAG1B,YAAY,EAAE,kBAAkB,EAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;IAGhC;;;OAGG;IACH,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAYjC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAwBjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,cAAc;IAId;;;OAGG;IACH,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;yCAlKpB,yBAAyB;6CAAzB,yBAAyB;CA2KrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"application-plugins.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/application-plugins/application-plugins.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application-plugins.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/application-plugins/application-plugins.component.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"application-plugins.guard.d.ts","sourceRoot":"","sources":["../../../ecosystem/application-plugins/application-plugins.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;;AAExE,qBACa,uBAAuB;IACtB,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAEtD,WAAW,CAAC,KAAK,EAAE,sBAAsB;yCAH9B,uBAAuB;6CAAvB,uBAAuB;CAcnC"}
1
+ {"version":3,"file":"application-plugins.guard.d.ts","sourceRoot":"","sources":["../../../ecosystem/application-plugins/application-plugins.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;;AAExE,qBACa,uBAAuB;IACtB,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAEtD,WAAW,CAAC,KAAK,EAAE,sBAAsB;yCAH9B,uBAAuB;6CAAvB,uBAAuB;CAoBnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orphaned-status-cell-renderer.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/application-plugins/orphaned-status-cell-renderer.component.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,mBAAmB,EAAW,MAAM,qBAAqB,CAAC;;AAE5F,qBAIa,mCAAmC;IAE3B,OAAO,EAAE,mBAAmB;IAD/C,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;gBAC1C,OAAO,EAAE,mBAAmB;IAI/C,OAAO,CAAC,QAAQ;yCANL,mCAAmC;2CAAnC,mCAAmC;CAwC/C"}
1
+ {"version":3,"file":"orphaned-status-cell-renderer.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/application-plugins/orphaned-status-cell-renderer.component.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,mBAAmB,EAAW,MAAM,qBAAqB,CAAC;;AAE5F,qBAIa,mCAAmC;IAE3B,OAAO,EAAE,mBAAmB;IAD/C,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;gBAC1C,OAAO,EAAE,mBAAmB;IAI/C,OAAO,CAAC,QAAQ;yCANL,mCAAmC;2CAAnC,mCAAmC;CA8C/C"}
@@ -33,10 +33,10 @@ export class AlarmInfoComponent {
33
33
  this.router.navigate(backLink, { queryParamsHandling: 'preserve' });
34
34
  }
35
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmInfoComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ContextRouteService }, { token: i3.AlarmsViewService }], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmInfoComponent, selector: "c8y-alarm-info", ngImport: i0, template: "<ng-container *ngIf=\"!isContextRoute\">\n <c8y-title>{{ TITLE | translate }}</c8y-title>\n</ng-container>\n\n<div\n class=\"inner-scroll split-view__detail split-view__detail--selected\"\n *ngIf=\"selectedAlarm$ | async\"\n>\n <div class=\"sticky-top bg-component\">\n <div class=\"card-header gap-16 d-block-xs d-block-sm p-l-24 p-r-24 p-t-16 separator\">\n <button\n class=\"btn btn-clean text-primary visible-sm visible-xs\"\n [title]=\"'Back' | translate\"\n (click)=\"back()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span>{{ 'Back' | translate }}</span>\n </button>\n\n <div class=\"flex-no-shrink a-s-start\"></div>\n <div class=\"flex-grow d-col\">\n <div\n class=\"text-break-word flex-grow text-16\"\n data-cy=\"c8y-alarms-info--title\"\n >\n {{ (selectedAlarm$ | async)?.text | translate }}\n </div>\n </div>\n <div class=\"p-relative\">\n <c8y-tabs-outlet\n outletName=\"alarms\"\n orientation=\"horizontal\"\n ></c8y-tabs-outlet>\n </div>\n </div>\n <div class=\"card-block overflow-visible p-l-24 p-r-24\">\n <c8y-alarm-details [selectedAlarm]=\"selectedAlarm$ | async\"></c8y-alarm-details>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i2.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "hasHeader"] }, { kind: "component", type: i5.AlarmDetailsComponent, selector: "c8y-alarm-details", inputs: ["selectedAlarm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmInfoComponent, selector: "c8y-alarm-info", ngImport: i0, template: "<ng-container *ngIf=\"!isContextRoute\">\n <c8y-title>{{ TITLE | translate }}</c8y-title>\n</ng-container>\n\n<div\n class=\"inner-scroll split-view__detail split-view__detail--selected\"\n *ngIf=\"selectedAlarm$ | async\"\n>\n <div class=\"sticky-top bg-component\">\n <div class=\"card-header gap-16 d-block-xs d-block-sm p-l-24 p-r-24 p-t-16 separator\">\n <button\n class=\"btn btn-clean text-primary visible-sm visible-xs\"\n [title]=\"'Back' | translate\"\n (click)=\"back()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span>{{ 'Back' | translate }}</span>\n </button>\n\n <div class=\"flex-no-shrink a-s-start\"></div>\n <div class=\"flex-grow d-col\">\n <div\n class=\"text-break-word flex-grow text-16\"\n data-cy=\"c8y-alarms-info--title\"\n >\n {{ (selectedAlarm$ | async)?.text | translate }}\n </div>\n </div>\n </div>\n <div class=\"p-relative\">\n <c8y-tabs-outlet\n outletName=\"alarms\"\n orientation=\"horizontal\"\n ></c8y-tabs-outlet>\n </div>\n <div class=\"card-block overflow-visible p-l-24 p-r-24\">\n <c8y-alarm-details [selectedAlarm]=\"selectedAlarm$ | async\"></c8y-alarm-details>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i2.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "hasHeader"] }, { kind: "component", type: i5.AlarmDetailsComponent, selector: "c8y-alarm-details", inputs: ["selectedAlarm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
37
37
  }
38
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmInfoComponent, decorators: [{
39
39
  type: Component,
40
- args: [{ selector: 'c8y-alarm-info', template: "<ng-container *ngIf=\"!isContextRoute\">\n <c8y-title>{{ TITLE | translate }}</c8y-title>\n</ng-container>\n\n<div\n class=\"inner-scroll split-view__detail split-view__detail--selected\"\n *ngIf=\"selectedAlarm$ | async\"\n>\n <div class=\"sticky-top bg-component\">\n <div class=\"card-header gap-16 d-block-xs d-block-sm p-l-24 p-r-24 p-t-16 separator\">\n <button\n class=\"btn btn-clean text-primary visible-sm visible-xs\"\n [title]=\"'Back' | translate\"\n (click)=\"back()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span>{{ 'Back' | translate }}</span>\n </button>\n\n <div class=\"flex-no-shrink a-s-start\"></div>\n <div class=\"flex-grow d-col\">\n <div\n class=\"text-break-word flex-grow text-16\"\n data-cy=\"c8y-alarms-info--title\"\n >\n {{ (selectedAlarm$ | async)?.text | translate }}\n </div>\n </div>\n <div class=\"p-relative\">\n <c8y-tabs-outlet\n outletName=\"alarms\"\n orientation=\"horizontal\"\n ></c8y-tabs-outlet>\n </div>\n </div>\n <div class=\"card-block overflow-visible p-l-24 p-r-24\">\n <c8y-alarm-details [selectedAlarm]=\"selectedAlarm$ | async\"></c8y-alarm-details>\n </div>\n </div>\n</div>\n" }]
40
+ args: [{ selector: 'c8y-alarm-info', template: "<ng-container *ngIf=\"!isContextRoute\">\n <c8y-title>{{ TITLE | translate }}</c8y-title>\n</ng-container>\n\n<div\n class=\"inner-scroll split-view__detail split-view__detail--selected\"\n *ngIf=\"selectedAlarm$ | async\"\n>\n <div class=\"sticky-top bg-component\">\n <div class=\"card-header gap-16 d-block-xs d-block-sm p-l-24 p-r-24 p-t-16 separator\">\n <button\n class=\"btn btn-clean text-primary visible-sm visible-xs\"\n [title]=\"'Back' | translate\"\n (click)=\"back()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span>{{ 'Back' | translate }}</span>\n </button>\n\n <div class=\"flex-no-shrink a-s-start\"></div>\n <div class=\"flex-grow d-col\">\n <div\n class=\"text-break-word flex-grow text-16\"\n data-cy=\"c8y-alarms-info--title\"\n >\n {{ (selectedAlarm$ | async)?.text | translate }}\n </div>\n </div>\n </div>\n <div class=\"p-relative\">\n <c8y-tabs-outlet\n outletName=\"alarms\"\n orientation=\"horizontal\"\n ></c8y-tabs-outlet>\n </div>\n <div class=\"card-block overflow-visible p-l-24 p-r-24\">\n <c8y-alarm-details [selectedAlarm]=\"selectedAlarm$ | async\"></c8y-alarm-details>\n </div>\n </div>\n</div>\n" }]
41
41
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.ContextRouteService }, { type: i3.AlarmsViewService }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0taW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hbGFybXMvYWxhcm0taW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9hbGFybXMvYWxhcm0taW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCLFlBQ1MsY0FBOEIsRUFDN0IsTUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFIckMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFQOUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDZCxVQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBT2hDLENBQUM7SUFFSixLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFxQixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzdFLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxLQUFLO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs4R0E1QlUsa0JBQWtCO2tHQUFsQixrQkFBa0Isc0RDWC9CLGt5Q0F3Q0E7OzJGRDdCYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSwgZ2V0dGV4dCwgVmlld0NvbnRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGFybXNWaWV3U2VydmljZSB9IGZyb20gJy4vYWxhcm1zLXZpZXcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybS1pbmZvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtLWluZm8uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdGVkQWxhcm0kOiBPYnNlcnZhYmxlPElBbGFybT47XG5cbiAgaGFzQW55Um9sZUFsbG93aW5nVG9DcmVhdGVTbWFydFJ1bGU6IGJvb2xlYW47XG4gIGlzU21hcnRSdWxlc1NlcnZpY2VTdWJzY3JpYmVkOiBib29sZWFuO1xuICBpc0NvbnRleHRSb3V0ZSA9IGZhbHNlO1xuICByZWFkb25seSBUSVRMRSA9IGdldHRleHQoJ0FsYXJtcycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLmdldENvbnRleHREYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbGFybSQgPSBvZihjb250ZXh0RGF0YS5jb250ZXh0RGF0YSBhcyBJQWxhcm0pO1xuICAgIHRoaXMuaXNDb250ZXh0Um91dGUgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuaXNDb250ZXh0Um91dGUodGhpcy5yb3V0ZXIudXJsLCBbXG4gICAgICBWaWV3Q29udGV4dC5EZXZpY2UsXG4gICAgICBWaWV3Q29udGV4dC5Hcm91cFxuICAgIF0pO1xuICB9XG5cbiAgYmFjaygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICBjb25zdCBiYWNrTGluayA9IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0Um91dGVyTmF2aWdhdGlvbkFycmF5KGNvbnRleHREYXRhKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShiYWNrTGluaywgeyBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQ29udGV4dFJvdXRlXCI+XG4gIDxjOHktdGl0bGU+e3sgVElUTEUgfCB0cmFuc2xhdGUgfX08L2M4eS10aXRsZT5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2XG4gIGNsYXNzPVwiaW5uZXItc2Nyb2xsIHNwbGl0LXZpZXdfX2RldGFpbCBzcGxpdC12aWV3X19kZXRhaWwtLXNlbGVjdGVkXCJcbiAgKm5nSWY9XCJzZWxlY3RlZEFsYXJtJCB8IGFzeW5jXCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0aWNreS10b3AgYmctY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGdhcC0xNiBkLWJsb2NrLXhzIGQtYmxvY2stc20gcC1sLTI0IHAtci0yNCBwLXQtMTYgc2VwYXJhdG9yXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jbGVhbiB0ZXh0LXByaW1hcnkgdmlzaWJsZS1zbSB2aXNpYmxlLXhzXCJcbiAgICAgICAgW3RpdGxlXT1cIidCYWNrJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICA8c3Bhbj57eyAnQmFjaycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm8tc2hyaW5rIGEtcy1zdGFydFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBkLWNvbFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJyZWFrLXdvcmQgZmxleC1ncm93IHRleHQtMTZcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm1zLWluZm8tLXRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IChzZWxlY3RlZEFsYXJtJCB8IGFzeW5jKT8udGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtcmVsYXRpdmVcIj5cbiAgICAgICAgPGM4eS10YWJzLW91dGxldFxuICAgICAgICAgIG91dGxldE5hbWU9XCJhbGFybXNcIlxuICAgICAgICAgIG9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgID48L2M4eS10YWJzLW91dGxldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIG92ZXJmbG93LXZpc2libGUgcC1sLTI0IHAtci0yNFwiPlxuICAgICAgPGM4eS1hbGFybS1kZXRhaWxzIFtzZWxlY3RlZEFsYXJtXT1cInNlbGVjdGVkQWxhcm0kIHwgYXN5bmNcIj48L2M4eS1hbGFybS1kZXRhaWxzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0taW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hbGFybXMvYWxhcm0taW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9hbGFybXMvYWxhcm0taW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCLFlBQ1MsY0FBOEIsRUFDN0IsTUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFIckMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFQOUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDZCxVQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBT2hDLENBQUM7SUFFSixLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFxQixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzdFLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxLQUFLO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs4R0E1QlUsa0JBQWtCO2tHQUFsQixrQkFBa0Isc0RDWC9CLHN4Q0F3Q0E7OzJGRDdCYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSwgZ2V0dGV4dCwgVmlld0NvbnRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGFybXNWaWV3U2VydmljZSB9IGZyb20gJy4vYWxhcm1zLXZpZXcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybS1pbmZvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtLWluZm8uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdGVkQWxhcm0kOiBPYnNlcnZhYmxlPElBbGFybT47XG5cbiAgaGFzQW55Um9sZUFsbG93aW5nVG9DcmVhdGVTbWFydFJ1bGU6IGJvb2xlYW47XG4gIGlzU21hcnRSdWxlc1NlcnZpY2VTdWJzY3JpYmVkOiBib29sZWFuO1xuICBpc0NvbnRleHRSb3V0ZSA9IGZhbHNlO1xuICByZWFkb25seSBUSVRMRSA9IGdldHRleHQoJ0FsYXJtcycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLmdldENvbnRleHREYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbGFybSQgPSBvZihjb250ZXh0RGF0YS5jb250ZXh0RGF0YSBhcyBJQWxhcm0pO1xuICAgIHRoaXMuaXNDb250ZXh0Um91dGUgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuaXNDb250ZXh0Um91dGUodGhpcy5yb3V0ZXIudXJsLCBbXG4gICAgICBWaWV3Q29udGV4dC5EZXZpY2UsXG4gICAgICBWaWV3Q29udGV4dC5Hcm91cFxuICAgIF0pO1xuICB9XG5cbiAgYmFjaygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICBjb25zdCBiYWNrTGluayA9IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0Um91dGVyTmF2aWdhdGlvbkFycmF5KGNvbnRleHREYXRhKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShiYWNrTGluaywgeyBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQ29udGV4dFJvdXRlXCI+XG4gIDxjOHktdGl0bGU+e3sgVElUTEUgfCB0cmFuc2xhdGUgfX08L2M4eS10aXRsZT5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2XG4gIGNsYXNzPVwiaW5uZXItc2Nyb2xsIHNwbGl0LXZpZXdfX2RldGFpbCBzcGxpdC12aWV3X19kZXRhaWwtLXNlbGVjdGVkXCJcbiAgKm5nSWY9XCJzZWxlY3RlZEFsYXJtJCB8IGFzeW5jXCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0aWNreS10b3AgYmctY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGdhcC0xNiBkLWJsb2NrLXhzIGQtYmxvY2stc20gcC1sLTI0IHAtci0yNCBwLXQtMTYgc2VwYXJhdG9yXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jbGVhbiB0ZXh0LXByaW1hcnkgdmlzaWJsZS1zbSB2aXNpYmxlLXhzXCJcbiAgICAgICAgW3RpdGxlXT1cIidCYWNrJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICA8c3Bhbj57eyAnQmFjaycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm8tc2hyaW5rIGEtcy1zdGFydFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBkLWNvbFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJyZWFrLXdvcmQgZmxleC1ncm93IHRleHQtMTZcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm1zLWluZm8tLXRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IChzZWxlY3RlZEFsYXJtJCB8IGFzeW5jKT8udGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwLXJlbGF0aXZlXCI+XG4gICAgICA8Yzh5LXRhYnMtb3V0bGV0XG4gICAgICAgIG91dGxldE5hbWU9XCJhbGFybXNcIlxuICAgICAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgPjwvYzh5LXRhYnMtb3V0bGV0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIG92ZXJmbG93LXZpc2libGUgcC1sLTI0IHAtci0yNFwiPlxuICAgICAgPGM4eS1hbGFybS1kZXRhaWxzIFtzZWxlY3RlZEFsYXJtXT1cInNlbGVjdGVkQWxhcm0kIHwgYXN5bmNcIj48L2M4eS1hbGFybS1kZXRhaWxzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -17,7 +17,7 @@ export class AlarmSeverityToLabelPipe {
17
17
  */
18
18
  transform(alarmSeverity) {
19
19
  const alarmStatusMapped = SEVERITY_LABELS[alarmSeverity?.toUpperCase()];
20
- return this.translateService.instant(alarmStatusMapped);
20
+ return this.translateService.instant(alarmStatusMapped ?? alarmSeverity);
21
21
  }
22
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmSeverityToLabelPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
23
23
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: AlarmSeverityToLabelPipe, name: "AlarmSeverityToLabel" }); }
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
28
28
  name: 'AlarmSeverityToLabel'
29
29
  }]
30
30
  }], ctorParameters: () => [{ type: i1.TranslateService }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tc2V2ZXJpdHktdG8tbGFiZWwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybS1zZXZlcml0eS10by1sYWJlbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUV2RDs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTFEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsYUFBcUI7UUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQzs4R0FYVSx3QkFBd0I7NEdBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFIcEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsc0JBQXNCO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNFVkVSSVRZX0xBQkVMUyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuLyoqXG4gKiBQaXBlIHRvIHRyYW5zZm9ybSBhbGFybSBzZXZlcml0eSB0byBjb3JyZXNwb25kaW5nIGxhYmVsLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdBbGFybVNldmVyaXR5VG9MYWJlbCdcbn0pXG5leHBvcnQgY2xhc3MgQWxhcm1TZXZlcml0eVRvTGFiZWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBhbGFybSBzZXZlcml0eSB0byBpdHMgY29ycmVzcG9uZGluZyBsYWJlbC5cbiAgICogQHBhcmFtIGFsYXJtU2V2ZXJpdHkgLSBUaGUgYWxhcm0gc2V2ZXJpdHkgdG8gdHJhbnNmb3JtLlxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNsYXRlZCBsYWJlbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBhbGFybSBzZXZlcml0eS5cbiAgICovXG4gIHRyYW5zZm9ybShhbGFybVNldmVyaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsYXJtU3RhdHVzTWFwcGVkID0gU0VWRVJJVFlfTEFCRUxTW2FsYXJtU2V2ZXJpdHk/LnRvVXBwZXJDYXNlKCldO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChhbGFybVN0YXR1c01hcHBlZCk7XG4gIH1cbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tc2V2ZXJpdHktdG8tbGFiZWwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybS1zZXZlcml0eS10by1sYWJlbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUV2RDs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTFEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsYUFBcUI7UUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7OEdBWFUsd0JBQXdCOzRHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSHBDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHNCQUFzQjtpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTRVZFUklUWV9MQUJFTFMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbi8qKlxuICogUGlwZSB0byB0cmFuc2Zvcm0gYWxhcm0gc2V2ZXJpdHkgdG8gY29ycmVzcG9uZGluZyBsYWJlbC5cbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnQWxhcm1TZXZlcml0eVRvTGFiZWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtU2V2ZXJpdHlUb0xhYmVsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYW4gYWxhcm0gc2V2ZXJpdHkgdG8gaXRzIGNvcnJlc3BvbmRpbmcgbGFiZWwuXG4gICAqIEBwYXJhbSBhbGFybVNldmVyaXR5IC0gVGhlIGFsYXJtIHNldmVyaXR5IHRvIHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zbGF0ZWQgbGFiZWwgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gYWxhcm0gc2V2ZXJpdHkuXG4gICAqL1xuICB0cmFuc2Zvcm0oYWxhcm1TZXZlcml0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGFybVN0YXR1c01hcHBlZCA9IFNFVkVSSVRZX0xBQkVMU1thbGFybVNldmVyaXR5Py50b1VwcGVyQ2FzZSgpXTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYWxhcm1TdGF0dXNNYXBwZWQgPz8gYWxhcm1TZXZlcml0eSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,30 +1,38 @@
1
- import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
2
- import { FormBuilder } from '@angular/forms';
1
+ import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
+ import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { Severity } from '@c8y/client';
5
- import { Subject, takeUntil } from 'rxjs';
5
+ import { gettext } from '@c8y/ngx-components';
6
+ import { Subject, take, takeUntil } from 'rxjs';
6
7
  import { INTERVAL_TITLES_EXTENDED, INTERVALS_EXTENDED } from './alarms.model';
7
8
  import { BsDropdownDirective } from 'ngx-bootstrap/dropdown';
9
+ import { AlarmsViewService } from './alarms-view.service';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@angular/forms";
10
12
  import * as i2 from "@angular/router";
11
- import * as i3 from "ngx-bootstrap/dropdown";
12
- import * as i4 from "@c8y/ngx-components";
13
- import * as i5 from "@angular/common";
14
- import * as i6 from "ngx-bootstrap/tooltip";
15
- import * as i7 from "@ngx-translate/core";
16
- import * as i8 from "@c8y/ngx-components/interval-picker";
13
+ import * as i3 from "./alarms-view.service";
14
+ import * as i4 from "ngx-bootstrap/dropdown";
15
+ import * as i5 from "@c8y/ngx-components";
16
+ import * as i6 from "@angular/common";
17
+ import * as i7 from "ngx-bootstrap/tooltip";
18
+ import * as i8 from "@ngx-translate/core";
19
+ import * as i9 from "@c8y/ngx-components/interval-picker";
17
20
  export class AlarmsDateFilterComponent {
18
- constructor(formBuilder, router, activatedRoute) {
21
+ constructor(formBuilder, router, activatedRoute, alarmsViewService) {
19
22
  this.formBuilder = formBuilder;
20
23
  this.router = router;
21
24
  this.activatedRoute = activatedRoute;
22
- this.DEFAULT_INTERVAL = 'none';
25
+ this.alarmsViewService = alarmsViewService;
23
26
  this.INTERVALS = INTERVALS_EXTENDED;
24
27
  this.INTERVAL_TITLES = INTERVAL_TITLES_EXTENDED;
25
28
  this.DATE_FORMAT = 'short';
29
+ this.DEFAULT_INTERVAL = 'none';
30
+ this.updateQueryParams = true;
31
+ this.noFilterLabel = gettext('No date filter');
26
32
  this.destroy$ = new Subject();
27
33
  this.dateFilterChange = new EventEmitter();
34
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
35
+ this.onTouched = () => { };
28
36
  }
29
37
  ngOnInit() {
30
38
  const context = this.getDefaultContext();
@@ -33,7 +41,7 @@ export class AlarmsDateFilterComponent {
33
41
  this.form.value.currentDateContextFromDate,
34
42
  this.form.value.currentDateContextToDate
35
43
  ];
36
- this.activatedRoute.queryParams.pipe(takeUntil(this.destroy$)).subscribe(params => {
44
+ this.activatedRoute.queryParams.pipe(take(1), takeUntil(this.destroy$)).subscribe(params => {
37
45
  this.showCleared = params.showCleared === 'true';
38
46
  this.severityOptions = {
39
47
  [Severity.CRITICAL]: params.critical === 'true',
@@ -44,6 +52,20 @@ export class AlarmsDateFilterComponent {
44
52
  if (params.typeFilters) {
45
53
  this.typeFilters = params.typeFilters;
46
54
  }
55
+ if (!params.interval) {
56
+ return;
57
+ }
58
+ if (params.interval !== 'custom') {
59
+ this.updateDateTime(params.interval);
60
+ }
61
+ else {
62
+ this.form.patchValue({
63
+ currentDateContextInterval: params.interval,
64
+ temporaryUserSelectedFromDate: params.lastUpdatedFrom,
65
+ temporaryUserSelectedToDate: params.createdTo
66
+ });
67
+ this.date = [params.lastUpdatedFrom, params.createdTo];
68
+ }
47
69
  });
48
70
  this.subscribeToIntervalChange();
49
71
  }
@@ -56,6 +78,7 @@ export class AlarmsDateFilterComponent {
56
78
  showCleared: this.showCleared,
57
79
  severityOptions: this.severityOptions,
58
80
  typeFilters: this.typeFilters,
81
+ interval: this.form.value.currentDateContextInterval,
59
82
  selectedDates: [
60
83
  new Date(this.form.value.temporaryUserSelectedFromDate),
61
84
  new Date(this.form.value.temporaryUserSelectedToDate)
@@ -69,50 +92,61 @@ export class AlarmsDateFilterComponent {
69
92
  this.router.navigate([], {
70
93
  relativeTo: this.activatedRoute,
71
94
  queryParams: {
72
- showCleared: combinedFormEvent.showCleared,
73
- ...combinedFormEvent.severityOptions,
74
- typeFilters: this.typeFilters,
95
+ interval: this.form.value.currentDateContextInterval,
75
96
  lastUpdatedFrom: combinedFormEvent.selectedDates[0].toISOString(),
76
97
  createdTo: combinedFormEvent.selectedDates[1].toISOString()
77
- }
98
+ },
99
+ queryParamsHandling: 'merge'
78
100
  });
79
101
  this.dateFilterChange.emit(combinedFormEvent);
80
102
  }
103
+ writeValue(value) {
104
+ if (value) {
105
+ this.form.patchValue({
106
+ currentDateContextFromDate: typeof value[0] === 'string' ? value[0] : value[0].toISOString(),
107
+ currentDateContextToDate: typeof value[1] === 'string' ? value[1] : value[1].toISOString()
108
+ });
109
+ }
110
+ }
111
+ registerOnChange(fn) {
112
+ this.onChange = fn;
113
+ }
114
+ registerOnTouched(onTouched) {
115
+ this.onTouched = onTouched;
116
+ }
117
+ updateDateTime(interval) {
118
+ const date = this.alarmsViewService.getDateTimeContextByInterval(interval);
119
+ if (this.dropdown) {
120
+ this.dropdown.isOpen = false;
121
+ }
122
+ this.date = date.map(d => d.toISOString());
123
+ this.form.patchValue({
124
+ temporaryUserSelectedFromDate: date[0].toISOString(),
125
+ temporaryUserSelectedToDate: date[1].toISOString(),
126
+ currentDateContextInterval: interval
127
+ }, { emitEvent: false });
128
+ this.applyDateFilter();
129
+ }
81
130
  getDefaultContext() {
82
- const defaultStartDate = 'months';
83
131
  return {
84
- date: this.getDateTimeContextByInterval(defaultStartDate),
132
+ date: this.alarmsViewService.getDateTimeContextByInterval(this.DEFAULT_INTERVAL),
85
133
  interval: this.DEFAULT_INTERVAL
86
134
  };
87
135
  }
88
- getDateTimeContextByInterval(intervalId) {
89
- const interval = INTERVALS_EXTENDED.find(({ id }) => id === intervalId);
90
- if (interval.id === 'none') {
91
- return [new Date(0), new Date()];
92
- }
93
- const dateTo = new Date();
94
- const dateFrom = new Date(dateTo.valueOf() - interval.timespanInMs);
95
- return [dateFrom, dateTo];
96
- }
97
136
  subscribeToIntervalChange() {
98
137
  this.form.controls.currentDateContextInterval.valueChanges
99
138
  .pipe(takeUntil(this.destroy$))
100
139
  .subscribe(interval => {
101
140
  if (interval === 'custom') {
102
141
  this.form.patchValue({
103
- temporaryUserSelectedFromDate: this.form.controls.currentDateContextFromDate.value
142
+ temporaryUserSelectedFromDate: this.form.controls.temporaryUserSelectedFromDate.value === new Date(0).toISOString()
143
+ ? this.form.controls.currentDateContextToDate.value
144
+ : this.form.controls.temporaryUserSelectedFromDate.value,
145
+ currentDateContextInterval: interval
104
146
  }, { emitEvent: false });
105
147
  return;
106
148
  }
107
- const date = this.getDateTimeContextByInterval(interval);
108
- this.dropdown.isOpen = false;
109
- this.date = date.map(d => d.toISOString());
110
- this.form.patchValue({
111
- temporaryUserSelectedFromDate: date[0].toISOString(),
112
- temporaryUserSelectedToDate: date[1].toISOString(),
113
- currentDateContextInterval: interval
114
- }, { emitEvent: false });
115
- this.applyDateFilter();
149
+ this.updateDateTime(interval);
116
150
  });
117
151
  }
118
152
  createForm(context) {
@@ -124,16 +158,34 @@ export class AlarmsDateFilterComponent {
124
158
  currentDateContextInterval: context.interval || 'custom'
125
159
  });
126
160
  }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsDateFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", outputs: { dateFilterChange: "dateFilterChange" }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n>\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{\n form.value.currentDateContextInterval === 'none'\n ? 'No date filter'\n : (date[0] | c8yDate: DATE_FORMAT) + ' \u2014 ' + (date[1] | c8yDate: DATE_FORMAT)\n }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"alarms-date-filter--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span class=\"text-12 text-truncate\">\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"alarms-date-filter--selected-time-range\"\n *ngIf=\"form.controls.currentDateContextInterval.value !== 'none'\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n [INTERVALS]=\"INTERVALS\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDateFilter(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid || form.value.realtime\"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i4.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS"] }, { kind: "pipe", type: i4.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsDateFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.AlarmsViewService }], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", inputs: { DEFAULT_INTERVAL: "DEFAULT_INTERVAL", updateQueryParams: "updateQueryParams", date: "date" }, outputs: { dateFilterChange: "dateFilterChange" }, providers: [
163
+ {
164
+ provide: NG_VALUE_ACCESSOR,
165
+ useExisting: forwardRef(() => AlarmsDateFilterComponent),
166
+ multi: true
167
+ }
168
+ ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n>\n <div\n class=\"dropdown flex-grow\"\n c8yDropdownDirection\n #dropDirection=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{\n (form.value.currentDateContextInterval === 'none'\n ? noFilterLabel\n : (date[0] | c8yDate: DATE_FORMAT) + ' \u2014 ' + (date[1] | c8yDate: DATE_FORMAT)\n ) | translate\n }}\"\n tooltip=\"{{\n (form.value.currentDateContextInterval === 'none'\n ? noFilterLabel\n : (date[0] | c8yDate: DATE_FORMAT) + ' \u2014 ' + (date[1] | c8yDate: DATE_FORMAT)\n ) | translate\n }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"alarms-date-filter--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span\n class=\"text-12\"\n data-cy=\"widget-time-context--selected-interval\"\n >\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"alarms-date-filter--selected-time-range\"\n *ngIf=\"form.controls.currentDateContextInterval.value !== 'none'\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n [INTERVALS]=\"INTERVALS\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDateFilter(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DropdownDirectionDirective, selector: "[dropdown][c8yBsDropdownDirection],[dropdown][c8yDropdownDirection]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i5.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i8.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i9.IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS"] }, { kind: "pipe", type: i5.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
129
169
  }
130
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsDateFilterComponent, decorators: [{
131
171
  type: Component,
132
- args: [{ selector: 'c8y-alarms-date-filter', template: "<form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n>\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{\n form.value.currentDateContextInterval === 'none'\n ? 'No date filter'\n : (date[0] | c8yDate: DATE_FORMAT) + ' \u2014 ' + (date[1] | c8yDate: DATE_FORMAT)\n }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"alarms-date-filter--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span class=\"text-12 text-truncate\">\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"alarms-date-filter--selected-time-range\"\n *ngIf=\"form.controls.currentDateContextInterval.value !== 'none'\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n [INTERVALS]=\"INTERVALS\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDateFilter(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid || form.value.realtime\"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n</form>\n" }]
133
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { dateFilterChange: [{
172
+ args: [{ selector: 'c8y-alarms-date-filter', providers: [
173
+ {
174
+ provide: NG_VALUE_ACCESSOR,
175
+ useExisting: forwardRef(() => AlarmsDateFilterComponent),
176
+ multi: true
177
+ }
178
+ ], template: "<form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n>\n <div\n class=\"dropdown flex-grow\"\n c8yDropdownDirection\n #dropDirection=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{\n (form.value.currentDateContextInterval === 'none'\n ? noFilterLabel\n : (date[0] | c8yDate: DATE_FORMAT) + ' \u2014 ' + (date[1] | c8yDate: DATE_FORMAT)\n ) | translate\n }}\"\n tooltip=\"{{\n (form.value.currentDateContextInterval === 'none'\n ? noFilterLabel\n : (date[0] | c8yDate: DATE_FORMAT) + ' \u2014 ' + (date[1] | c8yDate: DATE_FORMAT)\n ) | translate\n }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"alarms-date-filter--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span\n class=\"text-12\"\n data-cy=\"widget-time-context--selected-interval\"\n >\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"alarms-date-filter--selected-time-range\"\n *ngIf=\"form.controls.currentDateContextInterval.value !== 'none'\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n [INTERVALS]=\"INTERVALS\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n class=\"m-b-8\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDateFilter(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n</form>\n" }]
179
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.AlarmsViewService }], propDecorators: { DEFAULT_INTERVAL: [{
180
+ type: Input
181
+ }], updateQueryParams: [{
182
+ type: Input
183
+ }], date: [{
184
+ type: Input
185
+ }], dateFilterChange: [{
134
186
  type: Output
135
187
  }], dropdown: [{
136
188
  type: ViewChild,
137
189
  args: [BsDropdownDirective]
138
190
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWRhdGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtZGF0ZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1kYXRlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFHTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEVBRW5CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFNN0QsTUFBTSxPQUFPLHlCQUF5QjtJQWdCcEMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBOEI7UUFGOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWxCL0IscUJBQWdCLEdBQThCLE1BQU0sQ0FBQztRQUNyRCxjQUFTLEdBQUcsa0JBQWtCLENBQUM7UUFDL0Isb0JBQWUsR0FBRyx3QkFBd0IsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQUN2QixhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFLNUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZ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dklVLHlCQUF5QjtrR0FBekIseUJBQXlCLDJKQVd6QixtQkFBbUIsZ0RDOUJoQyw4dEtBdUlBOzsyRkRwSGEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHdCQUF3QjtrSUFheEIsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUN5QixRQUFRO3NCQUF2QyxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2V2ZXJpdHksIFNldmVyaXR5VHlwZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBbGFybUxpc3RGb3JtRmlsdGVycyxcbiAgQWxhcm1GaWx0ZXJJbnRlcnZhbCxcbiAgSU5URVJWQUxfVElUTEVTX0VYVEVOREVELFxuICBJTlRFUlZBTFNfRVhURU5ERUQsXG4gIFdpZGdldFRpbWVDb250ZXh0U3RhdGVFeHRlbmRlZFxufSBmcm9tICcuL2FsYXJtcy5tb2RlbCc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMtZGF0ZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWRhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNEYXRlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgREVGQVVMVF9JTlRFUlZBTDogQWxhcm1GaWx0ZXJJbnRlcnZhbFsnaWQnXSA9ICdub25lJztcbiAgcmVhZG9ubHkgSU5URVJWQUxTID0gSU5URVJWQUxTX0VYVEVOREVEO1xuICByZWFkb25seSBJTlRFUlZBTF9USVRMRVMgPSBJTlRFUlZBTF9USVRMRVNfRVhURU5ERUQ7XG4gIHJlYWRvbmx5IERBVEVfRk9STUFUID0gJ3Nob3J0JztcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2hvd0NsZWFyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgc2V2ZXJpdHlPcHRpb25zOiB7IFtrZXkgaW4gU2V2ZXJpdHlUeXBlXTogYm9vbGVhbiB9O1xuICBwcml2YXRlIHR5cGVGaWx0ZXJzOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGRhdGVGaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFsYXJtTGlzdEZvcm1GaWx0ZXJzPigpO1xuICBAVmlld0NoaWxkKEJzRHJvcGRvd25EaXJlY3RpdmUpIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGZvcm06IFJldHVyblR5cGU8QWxhcm1zRGF0ZUZpbHRlckNvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgZGF0ZTogW3N0cmluZywgc3RyaW5nXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXREZWZhdWx0Q29udGV4dCgpO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuY3JlYXRlRm9ybShjb250ZXh0KTtcbiAgICB0aGlzLmRhdGUgPSBbXG4gICAgICB0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0RnJvbURhdGUsXG4gICAgICB0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0VG9EYXRlXG4gICAgXTtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuc2hvd0NsZWFyZWQgPSBwYXJhbXMuc2hvd0NsZWFyZWQgPT09ICd0cnVlJztcbiAgICAgIHRoaXMuc2V2ZXJpdHlPcHRpb25zID0ge1xuICAgICAgICBbU2V2ZXJpdHkuQ1JJVElDQUxdOiBwYXJhbXMuY3JpdGljYWwgPT09ICd0cnVlJyxcbiAgICAgICAgW1NldmVyaXR5Lk1BSk9SXTogcGFyYW1zLm1ham9yID09PSAndHJ1ZScsXG4gICAgICAgIFtTZXZlcml0eS5NSU5PUl06IHBhcmFtcy5taW5vciA9PT0gJ3RydWUnLFxuICAgICAgICBbU2V2ZXJpdHkuV0FSTklOR106IHBhcmFtcy53YXJuaW5nID09PSAndHJ1ZSdcbiAgICAgIH07XG4gICAgICBpZiAocGFyYW1zLnR5cGVGaWx0ZXJzKSB7XG4gICAgICAgIHRoaXMudHlwZUZpbHRlcnMgPSBwYXJhbXMudHlwZUZpbHRlcnM7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmliZVRvSW50ZXJ2YWxDaGFuZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFwcGx5RGF0ZUZpbHRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBjb21iaW5lZEZvcm1FdmVudCA9IHtcbiAgICAgIHNob3dDbGVhcmVkOiB0aGlzLnNob3dDbGVhcmVkLFxuICAgICAgc2V2ZXJpdHlPcHRpb25zOiB0aGlzLnNldmVyaXR5T3B0aW9ucyxcbiAgICAgIHR5cGVGaWx0ZXJzOiB0aGlzLnR5cGVGaWx0ZXJzLFxuICAgICAgc2VsZWN0ZWREYXRlczogW1xuICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUpLFxuICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlKVxuICAgICAgXSBhcyBEYXRlVGltZUNvbnRleHRcbiAgICB9O1xuXG4gICAgLy8gbmVlZGVkIGZvciBjdXN0b20gaW50ZXJ2YWxcbiAgICB0aGlzLmRhdGUgPSBbXG4gICAgICB0aGlzLmZvcm0udmFsdWUudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUsXG4gICAgICB0aGlzLmZvcm0udmFsdWUudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlXG4gICAgXTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgc2hvd0NsZWFyZWQ6IGNvbWJpbmVkRm9ybUV2ZW50LnNob3dDbGVhcmVkLFxuICAgICAgICAuLi5jb21iaW5lZEZvcm1FdmVudC5zZXZlcml0eU9wdGlvbnMsXG4gICAgICAgIHR5cGVGaWx0ZXJzOiB0aGlzLnR5cGVGaWx0ZXJzLFxuICAgICAgICBsYXN0VXBkYXRlZEZyb206IGNvbWJpbmVkRm9ybUV2ZW50LnNlbGVjdGVkRGF0ZXNbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgY3JlYXRlZFRvOiBjb21iaW5lZEZvcm1FdmVudC5zZWxlY3RlZERhdGVzWzFdLnRvSVNPU3RyaW5nKClcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRhdGVGaWx0ZXJDaGFuZ2UuZW1pdChjb21iaW5lZEZvcm1FdmVudCk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDb250ZXh0KCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydERhdGU6IEFsYXJtRmlsdGVySW50ZXJ2YWxbJ2lkJ10gPSAnbW9udGhzJztcbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZTogdGhpcy5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGRlZmF1bHRTdGFydERhdGUpLFxuICAgICAgaW50ZXJ2YWw6IHRoaXMuREVGQVVMVF9JTlRFUlZBTFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoaW50ZXJ2YWxJZDogQWxhcm1GaWx0ZXJJbnRlcnZhbFsnaWQnXSk6IERhdGVUaW1lQ29udGV4dCB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBJTlRFUlZBTFNfRVhURU5ERUQuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gaW50ZXJ2YWxJZCk7XG4gICAgaWYgKGludGVydmFsLmlkID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBbbmV3IERhdGUoMCksIG5ldyBEYXRlKCldO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShkYXRlVG8udmFsdWVPZigpIC0gaW50ZXJ2YWwudGltZXNwYW5Jbk1zKTtcbiAgICByZXR1cm4gW2RhdGVGcm9tLCBkYXRlVG9dO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0ludGVydmFsQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoaW50ZXJ2YWwgPT4ge1xuICAgICAgICBpZiAoaW50ZXJ2YWwgPT09ICdjdXN0b20nKSB7XG4gICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlOiB0aGlzLmZvcm0uY29udHJvbHMuY3VycmVudERhdGVDb250ZXh0RnJvbURhdGUudmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRhdGUgPSBkYXRlLm1hcChkID0+IGQudG9JU09TdHJpbmcoKSkgYXMgW3N0cmluZywgc3RyaW5nXTtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGU6IGRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZTogZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWw6IGludGVydmFsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmFwcGx5RGF0ZUZpbHRlcigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oY29udGV4dDogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZUV4dGVuZGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGU6IGNvbnRleHQuZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlOiBjb250ZXh0LmRhdGVbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgIGN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlOiBjb250ZXh0LmRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIGN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZTogY29udGV4dC5kYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogY29udGV4dC5pbnRlcnZhbCB8fCAnY3VzdG9tJ1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybVxuICBjbGFzcz1cImQtZmxleCBnYXAtMTYgcC1sLXhzLTE2IHAtci14cy0xNiBtLXQteHMtOCBtLWIteHMtOFwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4+XG4gIDxkaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkcm9wZG93biBmbGV4LWdyb3dcIlxuICAgICAgI2Ryb3Bkb3duPVwiYnMtZHJvcGRvd25cIlxuICAgICAgZHJvcGRvd25cbiAgICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGZvcm0tY29udHJvbCBsLWgtdGlnaHQgZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBkYXRlWzBdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQgfX0g4oCUIHt7XG4gICAgICAgICAgZGF0ZVsxXSB8IGM4eURhdGU6IERBVEVfRk9STUFUXG4gICAgICAgIH19XCJcbiAgICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgICAgZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCA9PT0gJ25vbmUnXG4gICAgICAgICAgICA/ICdObyBkYXRlIGZpbHRlcidcbiAgICAgICAgICAgIDogKGRhdGVbMF0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCkgKyAnIOKAlCAnICsgKGRhdGVbMV0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVClcbiAgICAgICAgfX1cIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgZGF0YS1jeT1cImFsYXJtcy1kYXRlLWZpbHRlci0tZGF0ZS1waWNrZXItZHJvcGRvd24tYnV0dG9uXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICBjOHlJY29uPVwic2NoZWR1bGUxXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtY29sIHRleHQtbGVmdCBmaXQtd1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xMiB0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICB7eyBJTlRFUlZBTF9USVRMRVNbZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC0xMCB0ZXh0LW11dGVkIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgZGF0YS1jeT1cImFsYXJtcy1kYXRlLWZpbHRlci0tc2VsZWN0ZWQtdGltZS1yYW5nZVwiXG4gICAgICAgICAgICAqbmdJZj1cImZvcm0uY29udHJvbHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwudmFsdWUgIT09ICdub25lJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZGF0ZVswXSB8IGM4eURhdGU6IERBVEVfRk9STUFUIH19IOKAlCB7eyBkYXRlWzFdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmV0IG0tci0xNiBtLWwtNFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8dWxcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtLWRhdGUtcmFuZ2VcIlxuICAgICAgICAqZHJvcGRvd25NZW51XG4gICAgICA+XG4gICAgICAgIDxjOHktaW50ZXJ2YWwtcGlja2VyXG4gICAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbFwiXG4gICAgICAgICAgW0lOVEVSVkFMU109XCJJTlRFUlZBTFNcIlxuICAgICAgICA+PC9jOHktaW50ZXJ2YWwtcGlja2VyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLnZhbHVlID09PSAnY3VzdG9tJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2XCI+XG4gICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLWItOFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZXJyb3JzID8gJ2hhcy1lcnJvcicgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRnJvbWBkYXRlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIGZvcj1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEZyb21gZGF0ZWBcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGM4eS1kYXRlLXRpbWUtcGlja2VyXG4gICAgICAgICAgICAgICAgaWQ9XCJ0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZVwiXG4gICAgICAgICAgICAgICAgW21heERhdGVdPVwiZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRnJvbWBkYXRlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgICA+PC9jOHktZGF0ZS10aW1lLXBpY2tlcj5cbiAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmVycm9yc1wiPlxuICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRhdGVBZnRlclJhbmdlTWF4XCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgYWZ0ZXIgdGhlIGxhdGVzdCBhbGxvd2VkIGRhdGUuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiaW52YWxpZERhdGVUaW1lXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgaW52YWxpZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLWItOFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgZm9yPVwidGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFRvYGRhdGVgXG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgICAgICAgIGlkPVwidGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlXCJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJmb3JtLnZhbHVlLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZS5lcnJvcnMgPyAnaGFzLWVycm9yJyA6ICcnXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZXMgW3Nob3ddPVwiZm9ybS5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGUuZXJyb3JzXCI+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGF0ZUJlZm9yZVJhbmdlTWluXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgYmVmb3JlIHRoZSBlYXJsaWVzdCBhbGxvd2VkIGRhdGUuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiaW52YWxpZERhdGVUaW1lXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgaW52YWxpZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZC1mbGV4IGdhcC04IHNlcGFyYXRvci10b3BcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FwcGx5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlEYXRlRmlsdGVyKCk7IGRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihmb3JtLnByaXN0aW5lICYmIGZvcm0udW50b3VjaGVkKSB8fCBmb3JtLmludmFsaWQgfHwgZm9ybS52YWx1ZS5yZWFsdGltZVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBcHBseVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWRhdGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtZGF0ZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1kYXRlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBbUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEVBRW5CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7O0FBYzFELE1BQU0sT0FBTyx5QkFBeUI7SUF5QnBDLFlBQ1UsV0FBd0IsRUFDeEIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLGlCQUFvQztRQUhwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7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TyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDNUQsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDMUQsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDekQsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDdkQsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxRQUFRO1NBQ3pELENBQUMsQ0FBQztJQUNMLENBQUM7OEdBakxVLHlCQUF5QjtrR0FBekIseUJBQXlCLDRNQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixvRUFxQlUsbUJBQW1CLGdEQ3REaEMsc3NLQStJQTs7MkZENUdhLHlCQUF5QjtrQkFYckMsU0FBUzsrQkFDRSx3QkFBd0IsYUFFdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2tLQU9RLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQVFJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDeUIsUUFBUTtzQkFBdkMsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZXZlcml0eSwgU2V2ZXJpdHlUeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFsYXJtTGlzdEZvcm1GaWx0ZXJzLFxuICBJTlRFUlZBTF9USVRMRVNfRVhURU5ERUQsXG4gIElOVEVSVkFMU19FWFRFTkRFRCxcbiAgV2lkZ2V0VGltZUNvbnRleHRTdGF0ZUV4dGVuZGVkXG59IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFsYXJtc1ZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9hbGFybXMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsYXJtRmlsdGVySW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMtZGF0ZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWRhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbGFybXNEYXRlRmlsdGVyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0RhdGVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcmVhZG9ubHkgSU5URVJWQUxTID0gSU5URVJWQUxTX0VYVEVOREVEO1xuICByZWFkb25seSBJTlRFUlZBTF9USVRMRVMgPSBJTlRFUlZBTF9USVRMRVNfRVhURU5ERUQ7XG4gIHJlYWRvbmx5IERBVEVfRk9STUFUID0gJ3Nob3J0JztcblxuICBASW5wdXQoKSBERUZBVUxUX0lOVEVSVkFMOiBBbGFybUZpbHRlckludGVydmFsWydpZCddID0gJ25vbmUnO1xuICBASW5wdXQoKSB1cGRhdGVRdWVyeVBhcmFtcyA9IHRydWU7XG4gIC8qKlxuICAgKiBEYXRlIHJhbmdlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoKSBkYXRlOiBbc3RyaW5nLCBzdHJpbmddO1xuICBub0ZpbHRlckxhYmVsID0gZ2V0dGV4dCgnTm8gZGF0ZSBmaWx0ZXInKTtcblxuICBwcml2YXRlIHNob3dDbGVhcmVkOiBib29sZWFuO1xuICBwcml2YXRlIHNldmVyaXR5T3B0aW9uczogeyBba2V5IGluIFNldmVyaXR5VHlwZV06IGJvb2xlYW4gfTtcbiAgcHJpdmF0ZSB0eXBlRmlsdGVyczogc3RyaW5nO1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBAT3V0cHV0KCkgZGF0ZUZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QWxhcm1MaXN0Rm9ybUZpbHRlcnM+KCk7XG4gIEBWaWV3Q2hpbGQoQnNEcm9wZG93bkRpcmVjdGl2ZSkgZHJvcGRvd246IEJzRHJvcGRvd25EaXJlY3RpdmU7XG5cbiAgZm9ybTogUmV0dXJuVHlwZTxBbGFybXNEYXRlRmlsdGVyQ29tcG9uZW50WydjcmVhdGVGb3JtJ10+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlXG4gICkge31cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldERlZmF1bHRDb250ZXh0KCk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5jcmVhdGVGb3JtKGNvbnRleHQpO1xuICAgIHRoaXMuZGF0ZSA9IFtcbiAgICAgIHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSxcbiAgICAgIHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGVcbiAgICBdO1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgdGhpcy5zaG93Q2xlYXJlZCA9IHBhcmFtcy5zaG93Q2xlYXJlZCA9PT0gJ3RydWUnO1xuICAgICAgdGhpcy5zZXZlcml0eU9wdGlvbnMgPSB7XG4gICAgICAgIFtTZXZlcml0eS5DUklUSUNBTF06IHBhcmFtcy5jcml0aWNhbCA9PT0gJ3RydWUnLFxuICAgICAgICBbU2V2ZXJpdHkuTUFKT1JdOiBwYXJhbXMubWFqb3IgPT09ICd0cnVlJyxcbiAgICAgICAgW1NldmVyaXR5Lk1JTk9SXTogcGFyYW1zLm1pbm9yID09PSAndHJ1ZScsXG4gICAgICAgIFtTZXZlcml0eS5XQVJOSU5HXTogcGFyYW1zLndhcm5pbmcgPT09ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIGlmIChwYXJhbXMudHlwZUZpbHRlcnMpIHtcbiAgICAgICAgdGhpcy50eXBlRmlsdGVycyA9IHBhcmFtcy50eXBlRmlsdGVycztcbiAgICAgIH1cbiAgICAgIGlmICghcGFyYW1zLmludGVydmFsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMuaW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGF0ZVRpbWUocGFyYW1zLmludGVydmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogcGFyYW1zLmludGVydmFsLFxuICAgICAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlOiBwYXJhbXMubGFzdFVwZGF0ZWRGcm9tLFxuICAgICAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZTogcGFyYW1zLmNyZWF0ZWRUb1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kYXRlID0gW3BhcmFtcy5sYXN0VXBkYXRlZEZyb20sIHBhcmFtcy5jcmVhdGVkVG9dO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVUb0ludGVydmFsQ2hhbmdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBhcHBseURhdGVGaWx0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY29tYmluZWRGb3JtRXZlbnQgPSB7XG4gICAgICBzaG93Q2xlYXJlZDogdGhpcy5zaG93Q2xlYXJlZCxcbiAgICAgIHNldmVyaXR5T3B0aW9uczogdGhpcy5zZXZlcml0eU9wdGlvbnMsXG4gICAgICB0eXBlRmlsdGVyczogdGhpcy50eXBlRmlsdGVycyxcbiAgICAgIGludGVydmFsOiB0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICBzZWxlY3RlZERhdGVzOiBbXG4gICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZSksXG4gICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGUpXG4gICAgICBdIGFzIERhdGVUaW1lQ29udGV4dFxuICAgIH07XG5cbiAgICAvLyBuZWVkZWQgZm9yIGN1c3RvbSBpbnRlcnZhbFxuICAgIHRoaXMuZGF0ZSA9IFtcbiAgICAgIHRoaXMuZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZSxcbiAgICAgIHRoaXMuZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcbiAgICBdO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBpbnRlcnZhbDogdGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLFxuICAgICAgICBsYXN0VXBkYXRlZEZyb206IGNvbWJpbmVkRm9ybUV2ZW50LnNlbGVjdGVkRGF0ZXNbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgY3JlYXRlZFRvOiBjb21iaW5lZEZvcm1FdmVudC5zZWxlY3RlZERhdGVzWzFdLnRvSVNPU3RyaW5nKClcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgfSk7XG4gICAgdGhpcy5kYXRlRmlsdGVyQ2hhbmdlLmVtaXQoY29tYmluZWRGb3JtRXZlbnQpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlOlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZVswXSA9PT0gJ3N0cmluZycgPyB2YWx1ZVswXSA6IHZhbHVlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZTogdHlwZW9mIHZhbHVlWzFdID09PSAnc3RyaW5nJyA/IHZhbHVlWzFdIDogdmFsdWVbMV0udG9JU09TdHJpbmcoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0ZVRpbWUoaW50ZXJ2YWw6IEFsYXJtRmlsdGVySW50ZXJ2YWxbJ2lkJ10pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGludGVydmFsKTtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRlID0gZGF0ZS5tYXAoZCA9PiBkLnRvSVNPU3RyaW5nKCkpIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICB7XG4gICAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlOiBkYXRlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZTogZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogaW50ZXJ2YWxcbiAgICAgIH0sXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICk7XG4gICAgdGhpcy5hcHBseURhdGVGaWx0ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbnRleHQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGU6IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbCh0aGlzLkRFRkFVTFRfSU5URVJWQUwpLFxuICAgICAgaW50ZXJ2YWw6IHRoaXMuREVGQVVMVF9JTlRFUlZBTFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvSW50ZXJ2YWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShpbnRlcnZhbCA9PiB7XG4gICAgICAgIGlmIChpbnRlcnZhbCA9PT0gJ2N1c3RvbScpIHtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGU6XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLnZhbHVlID09PSBuZXcgRGF0ZSgwKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGUudmFsdWVcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5mb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLnZhbHVlLFxuICAgICAgICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogaW50ZXJ2YWxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRGF0ZVRpbWUoaW50ZXJ2YWwpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oY29udGV4dDogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZUV4dGVuZGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGU6IGNvbnRleHQuZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlOiBjb250ZXh0LmRhdGVbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgIGN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlOiBjb250ZXh0LmRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIGN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZTogY29udGV4dC5kYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogY29udGV4dC5pbnRlcnZhbCB8fCAnY3VzdG9tJ1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybVxuICBjbGFzcz1cImQtZmxleCBnYXAtMTYgcC1sLXhzLTE2IHAtci14cy0xNiBtLXQteHMtOCBtLWIteHMtOFwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duIGZsZXgtZ3Jvd1wiXG4gICAgYzh5RHJvcGRvd25EaXJlY3Rpb25cbiAgICAjZHJvcERpcmVjdGlvbj1cImJzLWRyb3Bkb3duXCJcbiAgICBkcm9wZG93blxuICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGZvcm0tY29udHJvbCBsLWgtdGlnaHQgZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3tcbiAgICAgICAgKGZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwgPT09ICdub25lJ1xuICAgICAgICAgID8gbm9GaWx0ZXJMYWJlbFxuICAgICAgICAgIDogKGRhdGVbMF0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCkgKyAnIOKAlCAnICsgKGRhdGVbMV0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVClcbiAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgfX1cIlxuICAgICAgdG9vbHRpcD1cInt7XG4gICAgICAgIChmb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsID09PSAnbm9uZSdcbiAgICAgICAgICA/IG5vRmlsdGVyTGFiZWxcbiAgICAgICAgICA6IChkYXRlWzBdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQpICsgJyDigJQgJyArIChkYXRlWzFdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQpXG4gICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgIH19XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIGRhdGEtY3k9XCJhbGFybXMtZGF0ZS1maWx0ZXItLWRhdGUtcGlja2VyLWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgIGM4eUljb249XCJzY2hlZHVsZTFcIlxuICAgICAgPjwvaT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWNvbCB0ZXh0LWxlZnQgZml0LXdcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRleHQtMTJcIlxuICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXQtdGltZS1jb250ZXh0LS1zZWxlY3RlZC1pbnRlcnZhbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBJTlRFUlZBTF9USVRMRVNbZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidGV4dC0xMCB0ZXh0LW11dGVkIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIGRhdGEtY3k9XCJhbGFybXMtZGF0ZS1maWx0ZXItLXNlbGVjdGVkLXRpbWUtcmFuZ2VcIlxuICAgICAgICAgICpuZ0lmPVwiZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZSAhPT0gJ25vbmUnXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGRhdGVbMF0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6IERBVEVfRk9STUFUIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldCBtLXItMTYgbS1sLTRcIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LS1kYXRlLXJhbmdlXCJcbiAgICAgICpkcm9wZG93bk1lbnVcbiAgICA+XG4gICAgICA8Yzh5LWludGVydmFsLXBpY2tlclxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbFwiXG4gICAgICAgIFtJTlRFUlZBTFNdPVwiSU5URVJWQUxTXCJcbiAgICAgID48L2M4eS1pbnRlcnZhbC1waWNrZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLnZhbHVlID09PSAnY3VzdG9tJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNlwiPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICAgY2xhc3M9XCJtLWItOFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Zyb21gZGF0ZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgZm9yPVwidGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgRnJvbWBkYXRlYFxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgICAgICBpZD1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlXCJcbiAgICAgICAgICAgICAgW21heERhdGVdPVwiZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Zyb21gZGF0ZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgPjwvYzh5LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZXJyb3JzXCI+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJkYXRlQWZ0ZXJSYW5nZU1heFwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiJ1RoaXMgZGF0ZSBpcyBhZnRlciB0aGUgbGF0ZXN0IGFsbG93ZWQgZGF0ZS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJpbnZhbGlkRGF0ZVRpbWVcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgaW52YWxpZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICA8L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBjbGFzcz1cIm0tYi04XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIGZvcj1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBUb2BkYXRlYFxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgICAgICBpZD1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgIFttaW5EYXRlXT1cImZvcm0udmFsdWUudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgPjwvYzh5LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9yc1wiPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBuYW1lPVwiZGF0ZUJlZm9yZVJhbmdlTWluXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCInVGhpcyBkYXRlIGlzIGJlZm9yZSB0aGUgZWFybGllc3QgYWxsb3dlZCBkYXRlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgbmFtZT1cImludmFsaWREYXRlVGltZVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiJ1RoaXMgZGF0ZSBpcyBpbnZhbGlkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGQtZmxleCBnYXAtOCBzZXBhcmF0b3ItdG9wXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlEYXRlRmlsdGVyKCk7IGRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoZm9ybS5wcmlzdGluZSAmJiBmb3JtLnVudG91Y2hlZCkgfHwgZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEFwcGx5XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=