@annalib/anna-core 4.2.3 → 4.2.5

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 (147) hide show
  1. package/.browserslistrc +16 -0
  2. package/karma.conf.js +44 -0
  3. package/ng-package.json +14 -0
  4. package/package.json +18 -38
  5. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.html +22 -0
  6. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.scss +0 -0
  7. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.spec.ts +25 -0
  8. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.ts +16 -0
  9. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.html +33 -0
  10. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.scss +0 -0
  11. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.spec.ts +25 -0
  12. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.ts +28 -0
  13. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.html +20 -0
  14. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.scss +0 -0
  15. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.spec.ts +25 -0
  16. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.ts +16 -0
  17. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.html +3 -0
  18. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.scss +17 -0
  19. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.spec.ts +24 -0
  20. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.ts +20 -0
  21. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.html +23 -0
  22. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.scss +0 -0
  23. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.spec.ts +25 -0
  24. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.ts +16 -0
  25. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.html +15 -0
  26. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.scss +0 -0
  27. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.spec.ts +25 -0
  28. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.ts +19 -0
  29. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.html +14 -0
  30. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.scss +0 -0
  31. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.spec.ts +25 -0
  32. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.ts +16 -0
  33. package/src/lib/anna-core-shared-lib/constants/shared.constant.ts +34 -0
  34. package/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.ts +19 -0
  35. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.ts +19 -0
  36. package/{lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts → src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.ts} +21 -9
  37. package/{lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts → src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.ts} +27 -17
  38. package/src/lib/anna-core-shared-lib/models/anna-sort.model.ts +7 -0
  39. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.ts +44 -0
  40. package/src/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.ts +20 -0
  41. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.ts +43 -0
  42. package/src/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.ts +19 -0
  43. package/src/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.ts +12 -0
  44. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.ts +216 -0
  45. package/src/lib/anna-core-shared-lib/services/anna-filter.service.ts +514 -0
  46. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.ts +44 -0
  47. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.ts +170 -0
  48. package/src/lib/anna-core-shared-lib/services/anna-sort.service.ts +179 -0
  49. package/src/lib/anna-core.module.ts +110 -0
  50. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html +46 -0
  51. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.scss +153 -0
  52. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.spec.ts +24 -0
  53. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts +106 -0
  54. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html +129 -0
  55. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.scss +275 -0
  56. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.spec.ts +24 -0
  57. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts +412 -0
  58. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.html +926 -0
  59. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.scss +628 -0
  60. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.spec.ts +25 -0
  61. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.ts +2064 -0
  62. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.html +10 -0
  63. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.scss +1 -0
  64. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.spec.ts +24 -0
  65. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.ts +70 -0
  66. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.html +13 -0
  67. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.scss +88 -0
  68. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.spec.ts +25 -0
  69. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.ts +460 -0
  70. package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.ts +237 -0
  71. package/{lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts → src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.ts} +0 -0
  72. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.ts +204 -0
  73. package/{lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts → src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.ts} +0 -0
  74. package/{public-api.d.ts → src/public-api.ts} +28 -0
  75. package/src/test.ts +27 -0
  76. package/tsconfig.lib.json +19 -0
  77. package/tsconfig.lib.prod.json +10 -0
  78. package/tsconfig.spec.json +17 -0
  79. package/annalib-anna-core.d.ts +0 -5
  80. package/esm2020/annalib-anna-core.mjs +0 -5
  81. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -15
  82. package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +0 -35
  83. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -15
  84. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
  85. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -15
  86. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -21
  87. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -15
  88. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -34
  89. package/esm2020/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +0 -27
  90. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
  91. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
  92. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -3
  93. package/esm2020/lib/anna-core-shared-lib/models/anna-sort.model.mjs +0 -2
  94. package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +0 -30
  95. package/esm2020/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +0 -26
  96. package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +0 -46
  97. package/esm2020/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +0 -25
  98. package/esm2020/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +0 -16
  99. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +0 -196
  100. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -426
  101. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +0 -48
  102. package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -133
  103. package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +0 -147
  104. package/esm2020/lib/anna-core.module.mjs +0 -175
  105. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -100
  106. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -362
  107. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -1724
  108. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -67
  109. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
  110. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +0 -189
  111. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +0 -2
  112. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
  113. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +0 -2
  114. package/esm2020/public-api.mjs +0 -47
  115. package/fesm2015/annalib-anna-core.mjs +0 -4302
  116. package/fesm2015/annalib-anna-core.mjs.map +0 -1
  117. package/fesm2020/annalib-anna-core.mjs +0 -4299
  118. package/fesm2020/annalib-anna-core.mjs.map +0 -1
  119. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +0 -8
  120. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +0 -16
  121. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +0 -8
  122. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +0 -11
  123. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +0 -8
  124. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +0 -11
  125. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +0 -8
  126. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +0 -32
  127. package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +0 -9
  128. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +0 -16
  129. package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +0 -6
  130. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +0 -25
  131. package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +0 -9
  132. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +0 -9
  133. package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +0 -9
  134. package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +0 -7
  135. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +0 -27
  136. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +0 -73
  137. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +0 -14
  138. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +0 -21
  139. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +0 -16
  140. package/lib/anna-core.module.d.ts +0 -35
  141. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +0 -34
  142. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +0 -70
  143. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +0 -271
  144. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +0 -17
  145. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +0 -141
  146. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +0 -89
  147. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +0 -45
@@ -1,196 +0,0 @@
1
- // Angular import statements
2
- import { Injectable } from '@angular/core';
3
- // Third party import statements
4
- import moment from "moment";
5
- import * as i0 from "@angular/core";
6
- export class AnnaDateTimeFormatService {
7
- constructor() {
8
- console.log("AnnaDateTimeFormatService service created.");
9
- }
10
- convertToNgbDateStandardFormat(date) {
11
- return {
12
- year: parseInt(moment(date, "MM/DD/YYYY").format("YYYY")),
13
- month: parseInt(moment(date, "MM/DD/YYYY").format("M")),
14
- day: parseInt(moment(date, "MM/DD/YYYY").format("D")),
15
- };
16
- }
17
- convertToNgbDate(date, parseFormat) {
18
- return {
19
- year: parseInt(moment(date, parseFormat).format("YYYY")),
20
- month: parseInt(moment(date, parseFormat).format("M")),
21
- day: parseInt(moment(date, parseFormat).format("D")),
22
- };
23
- }
24
- formatToTwelveHrs(time, callRemoveZero) {
25
- if (time.endsWith('A') || time.endsWith('P')) {
26
- time = time.substring(0, time.length - 1);
27
- }
28
- let tmp = time.split(":");
29
- let formattedTime = [];
30
- if (+tmp[0] > 12) {
31
- formattedTime[0] = (+tmp[0] - 12).toString();
32
- if (+tmp[0] == 24)
33
- formattedTime[2] = "AM";
34
- else
35
- formattedTime[2] = "PM";
36
- }
37
- else if (tmp[0] == "12") {
38
- formattedTime[0] = tmp[0];
39
- formattedTime[2] = "PM";
40
- }
41
- else if (tmp[0] == "00") {
42
- formattedTime[0] = "12";
43
- formattedTime[2] = "AM";
44
- }
45
- else {
46
- formattedTime[0] = tmp[0];
47
- formattedTime[2] = "AM";
48
- }
49
- formattedTime[1] = tmp[1];
50
- if (callRemoveZero)
51
- formattedTime = this.removeZero(formattedTime);
52
- return formattedTime;
53
- }
54
- convertTotwentyFourHrsFormat(time, callAddZero) {
55
- let tmp = time.split(/[ :]+/);
56
- let formattedTime = [];
57
- if (tmp[0] != "12" && tmp[2] == "PM") {
58
- formattedTime[0] = (+tmp[0] + 12).toString();
59
- }
60
- else if (tmp[0] == "12" && tmp[2] == "AM") {
61
- formattedTime[0] = "00";
62
- }
63
- else
64
- formattedTime[0] = tmp[0].toString();
65
- formattedTime[1] = tmp[1].toString();
66
- if (callAddZero)
67
- formattedTime = this.addZero(formattedTime);
68
- return formattedTime;
69
- }
70
- removeZero(time) {
71
- let removedZero;
72
- let formattedTime = time;
73
- if (time[0] == "01" ||
74
- time[0] == "02" ||
75
- time[0] == "03" ||
76
- time[0] == "04" ||
77
- time[0] == "05" ||
78
- time[0] == "06" ||
79
- time[0] == "07" ||
80
- time[0] == "08" ||
81
- time[0] == "09") {
82
- removedZero = time[0].toString();
83
- formattedTime[0] = removedZero.charAt(1);
84
- formattedTime[1] = time[1];
85
- formattedTime[2] = time[2];
86
- }
87
- return formattedTime;
88
- }
89
- addZero(time) {
90
- let addedZero;
91
- let formattedTime = time;
92
- if (time[1] == "0")
93
- time[1] = "0" + time[1];
94
- if (time[0] == "0" ||
95
- time[0] == "1" ||
96
- time[0] == "2" ||
97
- time[0] == "3" ||
98
- time[0] == "4" ||
99
- time[0] == "5" ||
100
- time[0] == "6" ||
101
- time[0] == "7" ||
102
- time[0] == "8" ||
103
- time[0] == "9") {
104
- addedZero = "0" + time[0];
105
- formattedTime[0] = addedZero;
106
- formattedTime[1] = time[1];
107
- }
108
- return formattedTime;
109
- }
110
- sortByTimeAscending(a, b) {
111
- let format = "HH:mm:ss";
112
- a = moment(a, format);
113
- b = moment(b, format);
114
- let results;
115
- results = a.hours() > b.hours() ? 1 : a.hours() < b.hours() ? -1 : 0;
116
- if (results === 0)
117
- results = a.minutes() > b.minutes() ? 1 : a.minutes() < b.minutes() ? -1 : 0;
118
- if (results === 0)
119
- results = a.seconds() > b.seconds() ? 1 : a.seconds() < b.seconds() ? -1 : 0;
120
- return results;
121
- }
122
- sortByTimeDescending(a, b) {
123
- let format = "HH:mm:ss";
124
- a = moment(a, format);
125
- b = moment(b, format);
126
- let results;
127
- results = a.hours() < b.hours() ? 1 : a.hours() > b.hours() ? -1 : 0;
128
- if (results === 0)
129
- results = a.minutes() < b.minutes() ? 1 : a.minutes() > b.minutes() ? -1 : 0;
130
- if (results === 0)
131
- results = a.seconds() < b.seconds() ? 1 : a.seconds() > b.seconds() ? -1 : 0;
132
- return results;
133
- }
134
- convertNgbDateToMoment(ngbDate) {
135
- let converted = moment();
136
- converted.month(ngbDate.month - 1);
137
- converted.date(ngbDate.day);
138
- converted.year(ngbDate.year);
139
- return converted.format("MM/DD/YYYY");
140
- }
141
- compareDate(a, b, isAsc) {
142
- return isAsc ? moment(a).diff(b) : moment(b).diff(a);
143
- }
144
- static formatTwentyFourHourTimeToHHMMAFormat(value) {
145
- value = moment(value, ["HH:mm:ss"]).format("HH:mm:ss");
146
- return value[3] == "0" && value[4] == "0"
147
- ? moment(value, ["HH:mm:ss"]).format("hA").slice(0, -1)
148
- : moment(value, ["HH:mm:ss"]).format("h:mmA").slice(0, -1);
149
- }
150
- static formatTwelveHourTimeToHHMMAFormat(value) {
151
- value = moment(value, ["HH:mm:A"]).format("HH:mm:ss");
152
- return value[3] == "0" && value[4] == "0"
153
- ? moment(value, ["HH:mm:ss"]).format("hA").slice(0, -1)
154
- : moment(value, ["HH:mm:ss"]).format("h:mmA").slice(0, -1);
155
- }
156
- formatDateAndHHMMATimeToStandardFormat(dateAndTime) {
157
- let standardFormat, date, time;
158
- if (dateAndTime.includes("|")) {
159
- date = dateAndTime.slice(0, dateAndTime.indexOf("|"));
160
- time = dateAndTime.slice(dateAndTime.indexOf('|') + 1, dateAndTime.length).trim();
161
- time = time.slice(0, 2) + ":" + time.slice(2, 4) + " " + time.slice(4, 5);
162
- time = time + "M";
163
- standardFormat = date + time;
164
- }
165
- else {
166
- standardFormat = dateAndTime + " 00:00 AM";
167
- }
168
- return moment(standardFormat).format("MM/DD/YYYY hh:mm A");
169
- }
170
- compare(a, b, isAsc) {
171
- if (typeof a == 'string' && typeof b == 'string') {
172
- a = a.toLowerCase();
173
- b = b.toLowerCase();
174
- }
175
- return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
176
- }
177
- sortDataByBroadcastTimeAsc(firstParamTime, secondParamTime, broadcastTime) {
178
- let format = "HH:mm:ss";
179
- let a = moment(firstParamTime, format);
180
- let b = moment(secondParamTime, format);
181
- let broadcastMomentDateTime = moment(broadcastTime, "HH:mm:ss");
182
- a = a.isBefore(broadcastMomentDateTime) ? a.add(1, "d") : a;
183
- b = b.isBefore(broadcastMomentDateTime) ? b.add(1, "d") : b;
184
- let result = a.isBefore(b) ? -1 : a.isAfter(b) ? 1 : 0;
185
- return result;
186
- }
187
- }
188
- AnnaDateTimeFormatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDateTimeFormatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
189
- AnnaDateTimeFormatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDateTimeFormatService, providedIn: 'root' });
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDateTimeFormatService, decorators: [{
191
- type: Injectable,
192
- args: [{
193
- providedIn: 'root'
194
- }]
195
- }], ctorParameters: function () { return []; } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxnQ0FBZ0M7QUFDaEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQVE1QixNQUFNLE9BQU8seUJBQXlCO0lBRXBDO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxJQUFTO1FBQ3RDLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pELEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVMsRUFBRSxXQUFnQjtRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFB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QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzIFxyXG5leHBvcnQgdHlwZSBOZ2JEYXRlVHlwZSA9IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciB9O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlIHNlcnZpY2UgY3JlYXRlZC5cIilcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb05nYkRhdGVTdGFuZGFyZEZvcm1hdChkYXRlOiBhbnkpOiBOZ2JEYXRlVHlwZSB8IE5nYkRhdGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeWVhcjogcGFyc2VJbnQobW9tZW50KGRhdGUsIFwiTU0vREQvWVlZWVwiKS5mb3JtYXQoXCJZWVlZXCIpKSxcclxuICAgICAgbW9udGg6IHBhcnNlSW50KG1vbWVudChkYXRlLCBcIk1NL0REL1lZWVlcIikuZm9ybWF0KFwiTVwiKSksXHJcbiAgICAgIGRheTogcGFyc2VJbnQobW9tZW50KGRhdGUsIFwiTU0vREQvWVlZWVwiKS5mb3JtYXQoXCJEXCIpKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9OZ2JEYXRlKGRhdGU6IGFueSwgcGFyc2VGb3JtYXQ6IGFueSk6IE5nYkRhdGVUeXBlIHwgTmdiRGF0ZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB5ZWFyOiBwYXJzZUludChtb21lbnQoZGF0ZSwgcGFyc2VGb3JtYXQpLmZvcm1hdChcIllZWVlcIikpLFxyXG4gICAgICBtb250aDogcGFyc2VJbnQobW9tZW50KGRhdGUsIHBhcnNlRm9ybWF0KS5mb3JtYXQoXCJNXCIpKSxcclxuICAgICAgZGF5OiBwYXJzZUludChtb21lbnQoZGF0ZSwgcGFyc2VGb3JtYXQpLmZvcm1hdChcIkRcIikpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFRvVHdlbHZlSHJzKHRpbWU6IGFueSwgY2FsbFJlbW92ZVplcm86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aW1lLmVuZHNXaXRoKCdBJykgfHwgdGltZS5lbmRzV2l0aCgnUCcpKSB7XHJcbiAgICAgIHRpbWUgPSB0aW1lLnN1YnN0cmluZygwLCB0aW1lLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgbGV0IHRtcCA9IHRpbWUuc3BsaXQoXCI6XCIpO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSBbXTtcclxuICAgIGlmICgrdG1wWzBdID4gMTIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9ICgrdG1wWzBdIC0gMTIpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmICgrdG1wWzBdID09IDI0KSBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgICBlbHNlIGZvcm1hdHRlZFRpbWVbMl0gPSBcIlBNXCI7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjEyXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHRtcFswXTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsyXSA9IFwiUE1cIjtcclxuICAgIH0gZWxzZSBpZiAodG1wWzBdID09IFwiMDBcIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gXCIxMlwiXHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSBcIkFNXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gdG1wWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzJdID0gXCJBTVwiO1xyXG4gICAgfVxyXG4gICAgZm9ybWF0dGVkVGltZVsxXSA9IHRtcFsxXTtcclxuICAgIGlmIChjYWxsUmVtb3ZlWmVybykgZm9ybWF0dGVkVGltZSA9IHRoaXMucmVtb3ZlWmVybyhmb3JtYXR0ZWRUaW1lKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdCh0aW1lOiBhbnksIGNhbGxBZGRaZXJvOiBhbnkpIHtcclxuICAgIGxldCB0bXAgPSB0aW1lLnNwbGl0KC9bIDpdKy8pO1xyXG4gICAgbGV0IGZvcm1hdHRlZFRpbWUgPSBbXTtcclxuICAgIGlmICh0bXBbMF0gIT0gXCIxMlwiICYmIHRtcFsyXSA9PSBcIlBNXCIpIHtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9ICgrdG1wWzBdICsgMTIpLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRtcFswXSA9PSBcIjEyXCIgJiYgdG1wWzJdID09IFwiQU1cIikge1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gXCIwMFwiO1xyXG4gICAgfSBlbHNlIGZvcm1hdHRlZFRpbWVbMF0gPSB0bXBbMF0udG9TdHJpbmcoKTtcclxuICAgIGZvcm1hdHRlZFRpbWVbMV0gPSB0bXBbMV0udG9TdHJpbmcoKTtcclxuICAgIGlmIChjYWxsQWRkWmVybykgZm9ybWF0dGVkVGltZSA9IHRoaXMuYWRkWmVybyhmb3JtYXR0ZWRUaW1lKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlWmVybyh0aW1lOiBhbnkpIHtcclxuICAgIGxldCByZW1vdmVkWmVybztcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gdGltZTtcclxuICAgIGlmIChcclxuICAgICAgdGltZVswXSA9PSBcIjAxXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjAyXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjAzXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA0XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA1XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA2XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA3XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA4XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjA5XCJcclxuICAgICkge1xyXG4gICAgICByZW1vdmVkWmVybyA9IHRpbWVbMF0udG9TdHJpbmcoKTtcclxuICAgICAgZm9ybWF0dGVkVGltZVswXSA9IHJlbW92ZWRaZXJvLmNoYXJBdCgxKTtcclxuICAgICAgZm9ybWF0dGVkVGltZVsxXSA9IHRpbWVbMV07XHJcbiAgICAgIGZvcm1hdHRlZFRpbWVbMl0gPSB0aW1lWzJdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBhZGRaZXJvKHRpbWU6IGFueSkge1xyXG4gICAgbGV0IGFkZGVkWmVybztcclxuICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gdGltZTtcclxuICAgIGlmICh0aW1lWzFdID09IFwiMFwiKSB0aW1lWzFdID0gXCIwXCIgKyB0aW1lWzFdO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aW1lWzBdID09IFwiMFwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCIxXCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjJcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiM1wiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI0XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjVcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiNlwiIHx8XHJcbiAgICAgIHRpbWVbMF0gPT0gXCI3XCIgfHxcclxuICAgICAgdGltZVswXSA9PSBcIjhcIiB8fFxyXG4gICAgICB0aW1lWzBdID09IFwiOVwiXHJcbiAgICApIHtcclxuICAgICAgYWRkZWRaZXJvID0gXCIwXCIgKyB0aW1lWzBdO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzBdID0gYWRkZWRaZXJvO1xyXG4gICAgICBmb3JtYXR0ZWRUaW1lWzFdID0gdGltZVsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtYXR0ZWRUaW1lO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5VGltZUFzY2VuZGluZyhhOiBhbnksIGI6IGFueSkge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuICAgIGEgPSBtb21lbnQoYSwgZm9ybWF0KTtcclxuICAgIGIgPSBtb21lbnQoYiwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgcmVzdWx0cztcclxuXHJcbiAgICByZXN1bHRzID0gYS5ob3VycygpID4gYi5ob3VycygpID8gMSA6IGEuaG91cnMoKSA8IGIuaG91cnMoKSA/IC0xIDogMDtcclxuXHJcbiAgICBpZiAocmVzdWx0cyA9PT0gMCkgcmVzdWx0cyA9IGEubWludXRlcygpID4gYi5taW51dGVzKCkgPyAxIDogYS5taW51dGVzKCkgPCBiLm1pbnV0ZXMoKSA/IC0xIDogMDtcclxuXHJcbiAgICBpZiAocmVzdWx0cyA9PT0gMCkgcmVzdWx0cyA9IGEuc2Vjb25kcygpID4gYi5zZWNvbmRzKCkgPyAxIDogYS5zZWNvbmRzKCkgPCBiLnNlY29uZHMoKSA/IC0xIDogMDtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHNvcnRCeVRpbWVEZXNjZW5kaW5nKGE6IGFueSwgYjogYW55KSB7XHJcbiAgICBsZXQgZm9ybWF0ID0gXCJISDptbTpzc1wiO1xyXG4gICAgYSA9IG1vbWVudChhLCBmb3JtYXQpO1xyXG4gICAgYiA9IG1vbWVudChiLCBmb3JtYXQpO1xyXG5cclxuICAgIGxldCByZXN1bHRzO1xyXG5cclxuICAgIHJlc3VsdHMgPSBhLmhvdXJzKCkgPCBiLmhvdXJzKCkgPyAxIDogYS5ob3VycygpID4gYi5ob3VycygpID8gLTEgOiAwO1xyXG5cclxuICAgIGlmIChyZXN1bHRzID09PSAwKSByZXN1bHRzID0gYS5taW51dGVzKCkgPCBiLm1pbnV0ZXMoKSA/IDEgOiBhLm1pbnV0ZXMoKSA+IGIubWludXRlcygpID8gLTEgOiAwO1xyXG5cclxuICAgIGlmIChyZXN1bHRzID09PSAwKSByZXN1bHRzID0gYS5zZWNvbmRzKCkgPCBiLnNlY29uZHMoKSA/IDEgOiBhLnNlY29uZHMoKSA+IGIuc2Vjb25kcygpID8gLTEgOiAwO1xyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0TmdiRGF0ZVRvTW9tZW50KG5nYkRhdGU6IE5nYkRhdGUgfCBOZ2JEYXRlVHlwZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgY29udmVydGVkID0gbW9tZW50KCk7XHJcbiAgICBjb252ZXJ0ZWQubW9udGgobmdiRGF0ZS5tb250aCAtIDEpO1xyXG4gICAgY29udmVydGVkLmRhdGUobmdiRGF0ZS5kYXkpO1xyXG4gICAgY29udmVydGVkLnllYXIobmdiRGF0ZS55ZWFyKTtcclxuICAgIHJldHVybiBjb252ZXJ0ZWQuZm9ybWF0KFwiTU0vREQvWVlZWVwiKTtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVEYXRlKGE6IHN0cmluZywgYjogc3RyaW5nLCBpc0FzYzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGlzQXNjID8gbW9tZW50KGEpLmRpZmYoYikgOiBtb21lbnQoYikuZGlmZihhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0VHdlbnR5Rm91ckhvdXJUaW1lVG9ISE1NQUZvcm1hdCh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIHZhbHVlID0gbW9tZW50KHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XHJcbiAgICByZXR1cm4gdmFsdWVbM10gPT0gXCIwXCIgJiYgdmFsdWVbNF0gPT0gXCIwXCJcclxuICAgICAgICA/IG1vbWVudCh2YWx1ZSwgW1wiSEg6bW06c3NcIl0pLmZvcm1hdChcImhBXCIpLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgIDogbW9tZW50KHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiaDptbUFcIikuc2xpY2UoMCwgLTEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtYXRUd2VsdmVIb3VyVGltZVRvSEhNTUFGb3JtYXQodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSwgW1wiSEg6bW06QVwiXSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XHJcbiAgICByZXR1cm4gdmFsdWVbM10gPT0gXCIwXCIgJiYgdmFsdWVbNF0gPT0gXCIwXCJcclxuICAgICAgICA/IG1vbWVudCh2YWx1ZSwgW1wiSEg6bW06c3NcIl0pLmZvcm1hdChcImhBXCIpLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgIDogbW9tZW50KHZhbHVlLCBbXCJISDptbTpzc1wiXSkuZm9ybWF0KFwiaDptbUFcIikuc2xpY2UoMCwgLTEpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZUFuZEhITU1BVGltZVRvU3RhbmRhcmRGb3JtYXQoZGF0ZUFuZFRpbWU6IGFueSkge1xyXG4gICAgbGV0IHN0YW5kYXJkRm9ybWF0LCBkYXRlLCB0aW1lO1xyXG4gICAgaWYgKGRhdGVBbmRUaW1lLmluY2x1ZGVzKFwifFwiKSkge1xyXG4gICAgICBkYXRlID0gZGF0ZUFuZFRpbWUuc2xpY2UoMCwgZGF0ZUFuZFRpbWUuaW5kZXhPZihcInxcIikpO1xyXG4gICAgICB0aW1lID0gZGF0ZUFuZFRpbWUuc2xpY2UoZGF0ZUFuZFRpbWUuaW5kZXhPZignfCcpICsgMSwgZGF0ZUFuZFRpbWUubGVuZ3RoKS50cmltKCk7XHJcblxyXG4gICAgICB0aW1lID0gdGltZS5zbGljZSgwLCAyKSArIFwiOlwiICsgdGltZS5zbGljZSgyLCA0KSArIFwiIFwiICsgdGltZS5zbGljZSg0LCA1KTtcclxuICAgICAgdGltZSA9IHRpbWUgKyBcIk1cIjtcclxuICAgICAgc3RhbmRhcmRGb3JtYXQgPSBkYXRlICsgdGltZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzdGFuZGFyZEZvcm1hdCA9IGRhdGVBbmRUaW1lICsgXCIgMDA6MDAgQU1cIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vbWVudChzdGFuZGFyZEZvcm1hdCkuZm9ybWF0KFwiTU0vREQvWVlZWSBoaDptbSBBXCIpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZShhOiBudW1iZXIgfCBzdHJpbmcsIGI6IG51bWJlciB8IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcclxuICAgIGlmKHR5cGVvZiBhID09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09ICdzdHJpbmcnKXtcclxuICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgc29ydERhdGFCeUJyb2FkY2FzdFRpbWVBc2MoZmlyc3RQYXJhbVRpbWU6IHN0cmluZywgc2Vjb25kUGFyYW1UaW1lOiBzdHJpbmcsIGJyb2FkY2FzdFRpbWU6IHN0cmluZykge1xyXG4gICAgbGV0IGZvcm1hdCA9IFwiSEg6bW06c3NcIjtcclxuXHJcbiAgICBsZXQgYSA9IG1vbWVudChmaXJzdFBhcmFtVGltZSwgZm9ybWF0KTtcclxuICAgIGxldCBiID0gbW9tZW50KHNlY29uZFBhcmFtVGltZSwgZm9ybWF0KTtcclxuXHJcbiAgICBsZXQgYnJvYWRjYXN0TW9tZW50RGF0ZVRpbWUgPSBtb21lbnQoYnJvYWRjYXN0VGltZSwgXCJISDptbTpzc1wiKTtcclxuXHJcbiAgICBhID0gYS5pc0JlZm9yZShicm9hZGNhc3RNb21lbnREYXRlVGltZSkgPyBhLmFkZCgxLCBcImRcIikgOiBhO1xyXG4gICAgYiA9IGIuaXNCZWZvcmUoYnJvYWRjYXN0TW9tZW50RGF0ZVRpbWUpID8gYi5hZGQoMSwgXCJkXCIpIDogYjtcclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gYS5pc0JlZm9yZShiKSA/IC0xIDogYS5pc0FmdGVyKGIpID8gMSA6IDA7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=