@taiga-ui/cdk 2.31.0 → 2.35.0

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 (200) hide show
  1. package/abstract/interactive.d.ts +1 -1
  2. package/bundles/taiga-ui-cdk-abstract.umd.js +3 -6
  3. package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
  4. package/bundles/taiga-ui-cdk-abstract.umd.min.js +1 -1
  5. package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
  6. package/bundles/taiga-ui-cdk-components-portal-host.umd.js +5 -6
  7. package/bundles/taiga-ui-cdk-components-portal-host.umd.js.map +1 -1
  8. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js +2 -2
  9. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js.map +1 -1
  10. package/bundles/taiga-ui-cdk-date-time.umd.js +18 -12
  11. package/bundles/taiga-ui-cdk-date-time.umd.js.map +1 -1
  12. package/bundles/taiga-ui-cdk-date-time.umd.min.js +2 -2
  13. package/bundles/taiga-ui-cdk-date-time.umd.min.js.map +1 -1
  14. package/bundles/taiga-ui-cdk-decorators.umd.js +16 -14
  15. package/bundles/taiga-ui-cdk-decorators.umd.js.map +1 -1
  16. package/bundles/taiga-ui-cdk-decorators.umd.min.js +2 -2
  17. package/bundles/taiga-ui-cdk-decorators.umd.min.js.map +1 -1
  18. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js +13 -7
  19. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js.map +1 -1
  20. package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js +1 -1
  21. package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js.map +1 -1
  22. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +31 -48
  23. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
  24. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js +2 -2
  25. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
  26. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js +1 -1
  27. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js.map +1 -1
  28. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js +1 -1
  29. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js.map +1 -1
  30. package/bundles/taiga-ui-cdk-exceptions.umd.js +347 -0
  31. package/bundles/taiga-ui-cdk-exceptions.umd.js.map +1 -0
  32. package/bundles/taiga-ui-cdk-exceptions.umd.min.js +16 -0
  33. package/bundles/taiga-ui-cdk-exceptions.umd.min.js.map +1 -0
  34. package/bundles/taiga-ui-cdk-observables.umd.js +9 -9
  35. package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
  36. package/bundles/taiga-ui-cdk-observables.umd.min.js +1 -1
  37. package/bundles/taiga-ui-cdk-observables.umd.min.js.map +1 -1
  38. package/bundles/taiga-ui-cdk-services.umd.js +2 -2
  39. package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
  40. package/bundles/taiga-ui-cdk-services.umd.min.js +1 -1
  41. package/bundles/taiga-ui-cdk-services.umd.min.js.map +1 -1
  42. package/bundles/taiga-ui-cdk-utils-format.umd.js +2 -0
  43. package/bundles/taiga-ui-cdk-utils-format.umd.js.map +1 -1
  44. package/bundles/taiga-ui-cdk-utils-format.umd.min.js.map +1 -1
  45. package/bundles/taiga-ui-cdk.umd.js +12 -4
  46. package/bundles/taiga-ui-cdk.umd.js.map +1 -1
  47. package/bundles/taiga-ui-cdk.umd.min.js +1 -1
  48. package/components/portal-host/taiga-ui-cdk-components-portal-host.metadata.json +1 -1
  49. package/date-time/month-range.d.ts +4 -0
  50. package/date-time/month.d.ts +2 -0
  51. package/date-time/taiga-ui-cdk-date-time.metadata.json +1 -1
  52. package/directives/active-zone/active-zone.directive.d.ts +1 -0
  53. package/directives/active-zone/taiga-ui-cdk-directives-active-zone.metadata.json +1 -1
  54. package/directives/auto-focus/autofocus.directive.d.ts +3 -6
  55. package/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.metadata.json +1 -1
  56. package/directives/autofilled/taiga-ui-cdk-directives-autofilled.metadata.json +1 -1
  57. package/esm2015/abstract/control.js +4 -7
  58. package/esm2015/abstract/interactive.js +1 -1
  59. package/esm2015/components/portal-host/portal.service.js +3 -3
  60. package/esm2015/date-time/date-separator.js +2 -2
  61. package/esm2015/date-time/day.js +6 -5
  62. package/esm2015/date-time/month-range.js +5 -1
  63. package/esm2015/date-time/month.js +4 -2
  64. package/esm2015/date-time/time.js +2 -2
  65. package/esm2015/date-time/year.js +2 -2
  66. package/esm2015/decorators/pure.js +14 -11
  67. package/esm2015/directives/active-zone/active-zone.directive.js +15 -9
  68. package/esm2015/directives/auto-focus/autofocus.directive.js +29 -45
  69. package/esm2015/directives/autofilled/autofilled.directive.js +2 -2
  70. package/esm2015/exceptions/computed-document.exception.js +6 -0
  71. package/esm2015/exceptions/document-selection.exception.js +6 -0
  72. package/esm2015/exceptions/index.js +14 -0
  73. package/esm2015/exceptions/invalid-day.exception.js +6 -0
  74. package/esm2015/exceptions/invalid-month.exception.js +6 -0
  75. package/esm2015/exceptions/invalid-year.exception.js +6 -0
  76. package/esm2015/exceptions/no-host.exception.js +6 -0
  77. package/esm2015/exceptions/owner-document.exception.js +6 -0
  78. package/esm2015/exceptions/pure.exception.js +6 -0
  79. package/esm2015/exceptions/table-sort-key.exception.js +6 -0
  80. package/esm2015/exceptions/taiga-ui-cdk-exceptions.js +5 -0
  81. package/esm2015/exceptions/ts-parser.exception.js +6 -0
  82. package/esm2015/exceptions/value-changes.exception.js +6 -0
  83. package/esm2015/exceptions/value-present.exception.js +6 -0
  84. package/esm2015/exceptions/xml-parsing.exception.js +6 -0
  85. package/esm2015/index.js +2 -1
  86. package/esm2015/observables/drag-and-drop-from.js +3 -2
  87. package/esm2015/observables/focus-visible-observable.js +3 -2
  88. package/esm2015/observables/must-be-present.js +3 -2
  89. package/esm2015/observables/pressed-observable.js +3 -2
  90. package/esm2015/observables/replay-control-value-changes.js +3 -2
  91. package/esm2015/services/parents-scroll.service.js +3 -2
  92. package/esm2015/utils/format/pad-start.js +3 -1
  93. package/esm5/abstract/control.js +4 -7
  94. package/esm5/abstract/interactive.js +1 -1
  95. package/esm5/components/portal-host/portal.service.js +3 -3
  96. package/esm5/date-time/date-separator.js +2 -2
  97. package/esm5/date-time/day.js +6 -5
  98. package/esm5/date-time/month-range.js +5 -1
  99. package/esm5/date-time/month.js +4 -2
  100. package/esm5/date-time/time.js +2 -2
  101. package/esm5/date-time/year.js +2 -2
  102. package/esm5/decorators/pure.js +14 -11
  103. package/esm5/directives/active-zone/active-zone.directive.js +15 -9
  104. package/esm5/directives/auto-focus/autofocus.directive.js +29 -47
  105. package/esm5/directives/autofilled/autofilled.directive.js +2 -2
  106. package/esm5/exceptions/computed-document.exception.js +10 -0
  107. package/esm5/exceptions/document-selection.exception.js +10 -0
  108. package/esm5/exceptions/index.js +14 -0
  109. package/esm5/exceptions/invalid-day.exception.js +10 -0
  110. package/esm5/exceptions/invalid-month.exception.js +10 -0
  111. package/esm5/exceptions/invalid-year.exception.js +10 -0
  112. package/esm5/exceptions/no-host.exception.js +10 -0
  113. package/esm5/exceptions/owner-document.exception.js +10 -0
  114. package/esm5/exceptions/pure.exception.js +10 -0
  115. package/esm5/exceptions/table-sort-key.exception.js +10 -0
  116. package/esm5/exceptions/taiga-ui-cdk-exceptions.js +5 -0
  117. package/esm5/exceptions/ts-parser.exception.js +10 -0
  118. package/esm5/exceptions/value-changes.exception.js +10 -0
  119. package/esm5/exceptions/value-present.exception.js +10 -0
  120. package/esm5/exceptions/xml-parsing.exception.js +10 -0
  121. package/esm5/index.js +2 -1
  122. package/esm5/observables/drag-and-drop-from.js +3 -2
  123. package/esm5/observables/focus-visible-observable.js +3 -2
  124. package/esm5/observables/must-be-present.js +3 -2
  125. package/esm5/observables/pressed-observable.js +3 -2
  126. package/esm5/observables/replay-control-value-changes.js +3 -2
  127. package/esm5/services/parents-scroll.service.js +3 -3
  128. package/esm5/utils/format/pad-start.js +3 -1
  129. package/exceptions/computed-document.exception.d.ts +3 -0
  130. package/exceptions/document-selection.exception.d.ts +3 -0
  131. package/exceptions/index.d.ts +13 -0
  132. package/exceptions/invalid-day.exception.d.ts +3 -0
  133. package/exceptions/invalid-month.exception.d.ts +3 -0
  134. package/exceptions/invalid-year.exception.d.ts +3 -0
  135. package/exceptions/no-host.exception.d.ts +3 -0
  136. package/exceptions/owner-document.exception.d.ts +3 -0
  137. package/exceptions/package.json +13 -0
  138. package/exceptions/pure.exception.d.ts +3 -0
  139. package/exceptions/table-sort-key.exception.d.ts +3 -0
  140. package/exceptions/taiga-ui-cdk-exceptions.d.ts +4 -0
  141. package/exceptions/taiga-ui-cdk-exceptions.metadata.json +1 -0
  142. package/exceptions/ts-parser.exception.d.ts +3 -0
  143. package/exceptions/value-changes.exception.d.ts +3 -0
  144. package/exceptions/value-present.exception.d.ts +3 -0
  145. package/exceptions/xml-parsing.exception.d.ts +3 -0
  146. package/fesm2015/taiga-ui-cdk-abstract.js +3 -6
  147. package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
  148. package/fesm2015/taiga-ui-cdk-components-portal-host.js +2 -2
  149. package/fesm2015/taiga-ui-cdk-components-portal-host.js.map +1 -1
  150. package/fesm2015/taiga-ui-cdk-date-time.js +15 -8
  151. package/fesm2015/taiga-ui-cdk-date-time.js.map +1 -1
  152. package/fesm2015/taiga-ui-cdk-decorators.js +13 -10
  153. package/fesm2015/taiga-ui-cdk-decorators.js.map +1 -1
  154. package/fesm2015/taiga-ui-cdk-directives-active-zone.js +14 -8
  155. package/fesm2015/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  156. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +28 -44
  157. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  158. package/fesm2015/taiga-ui-cdk-directives-autofilled.js +1 -1
  159. package/fesm2015/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  160. package/fesm2015/taiga-ui-cdk-exceptions.js +84 -0
  161. package/fesm2015/taiga-ui-cdk-exceptions.js.map +1 -0
  162. package/fesm2015/taiga-ui-cdk-observables.js +6 -5
  163. package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
  164. package/fesm2015/taiga-ui-cdk-services.js +2 -1
  165. package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
  166. package/fesm2015/taiga-ui-cdk-utils-format.js +2 -0
  167. package/fesm2015/taiga-ui-cdk-utils-format.js.map +1 -1
  168. package/fesm2015/taiga-ui-cdk.js +1 -0
  169. package/fesm2015/taiga-ui-cdk.js.map +1 -1
  170. package/fesm5/taiga-ui-cdk-abstract.js +3 -6
  171. package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
  172. package/fesm5/taiga-ui-cdk-components-portal-host.js +2 -2
  173. package/fesm5/taiga-ui-cdk-components-portal-host.js.map +1 -1
  174. package/fesm5/taiga-ui-cdk-date-time.js +15 -8
  175. package/fesm5/taiga-ui-cdk-date-time.js.map +1 -1
  176. package/fesm5/taiga-ui-cdk-decorators.js +13 -10
  177. package/fesm5/taiga-ui-cdk-decorators.js.map +1 -1
  178. package/fesm5/taiga-ui-cdk-directives-active-zone.js +14 -8
  179. package/fesm5/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  180. package/fesm5/taiga-ui-cdk-directives-auto-focus.js +28 -46
  181. package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  182. package/fesm5/taiga-ui-cdk-directives-autofilled.js +1 -1
  183. package/fesm5/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  184. package/fesm5/taiga-ui-cdk-exceptions.js +112 -0
  185. package/fesm5/taiga-ui-cdk-exceptions.js.map +1 -0
  186. package/fesm5/taiga-ui-cdk-observables.js +6 -5
  187. package/fesm5/taiga-ui-cdk-observables.js.map +1 -1
  188. package/fesm5/taiga-ui-cdk-services.js +2 -2
  189. package/fesm5/taiga-ui-cdk-services.js.map +1 -1
  190. package/fesm5/taiga-ui-cdk-utils-format.js +2 -0
  191. package/fesm5/taiga-ui-cdk-utils-format.js.map +1 -1
  192. package/fesm5/taiga-ui-cdk.js +1 -0
  193. package/fesm5/taiga-ui-cdk.js.map +1 -1
  194. package/index.d.ts +1 -0
  195. package/observables/taiga-ui-cdk-observables.metadata.json +1 -1
  196. package/package.json +7 -7
  197. package/services/parents-scroll.service.d.ts +1 -1
  198. package/services/taiga-ui-cdk-services.metadata.json +1 -1
  199. package/taiga-ui-cdk.metadata.json +1 -1
  200. package/utils/format/pad-start.d.ts +2 -0
@@ -1,5 +1,6 @@
1
1
  import { __extends } from "tslib";
2
2
  import { tuiAssert } from '@taiga-ui/cdk/classes';
3
+ import { InvalidDayException, InvalidMonthException, InvalidYearException, } from '@taiga-ui/cdk/exceptions';
3
4
  import { padStart } from '@taiga-ui/cdk/utils/format';
4
5
  import { inRange, normalizeToIntNumber } from '@taiga-ui/cdk/utils/math';
5
6
  import { DATE_FILLER_LENGTH } from './date-fillers';
@@ -144,14 +145,14 @@ var TuiDay = /** @class */ (function (_super) {
144
145
  TuiDay.jsonParse = function (yearMonthDayString) {
145
146
  var _a = this.parseRawDateString(yearMonthDayString, 'YMD'), day = _a.day, month = _a.month, year = _a.year;
146
147
  if (!TuiYear.isValidYear(year)) {
147
- throw new Error('Invalid year: ' + year);
148
+ throw new InvalidYearException(year);
148
149
  }
149
150
  if (!TuiMonth.isValidMonth(year, month)) {
150
- throw new Error('Invalid month: ' + month);
151
+ throw new InvalidMonthException(month);
151
152
  }
152
153
  if (!Number.isInteger(day) ||
153
154
  !inRange(day, MIN_DAY, TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1)) {
154
- throw new Error('Invalid day: ' + day);
155
+ throw new InvalidDayException(day);
155
156
  }
156
157
  return new TuiDay(year, month, day);
157
158
  };
@@ -162,7 +163,7 @@ var TuiDay = /** @class */ (function (_super) {
162
163
  };
163
164
  Object.defineProperty(TuiDay.prototype, "formattedDayPart", {
164
165
  get: function () {
165
- return padStart(this.day.toString(), 2, '0');
166
+ return padStart(String(this.day), 2, '0');
166
167
  },
167
168
  enumerable: true,
168
169
  configurable: true
@@ -337,4 +338,4 @@ var TuiDay = /** @class */ (function (_super) {
337
338
  return TuiDay;
338
339
  }(TuiMonth));
339
340
  export { TuiDay };
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUloRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0IsNkJBQTZCO0FBQzdCOztHQUVHO0FBQ0g7SUFBNEIsMEJBQVE7SUFDaEMsZ0JBQVksSUFBWSxFQUFFLEtBQWEsRUFBVyxHQUFXO1FBQTdELFlBQ0ksa0JBQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUVyQjtRQUhpRCxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBRXpELFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFtQixHQUExQixVQUEyQixJQUFVO1FBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSx3QkFBaUIsR0FBeEIsVUFBeUIsSUFBVTtRQUMvQixPQUFP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QUMsZ0JBQWtCLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0NBQWlCLEdBQWpCO1FBQ0ksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILGdDQUFlLEdBQWY7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDTCxhQUFDO0FBQUQsQ0FBQyxBQWpaRCxDQUE0QixRQUFRLEdBaVpuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlEYXlPZldlZWssIFR1aU1vbnRoTnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2VudW1zJztcbmltcG9ydCB7VHVpRGF5TGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7VHVpRGF0ZU1vZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtwYWRTdGFydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHtpblJhbmdlLCBub3JtYWxpemVUb0ludE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcblxuaW1wb3J0IHtEQVRFX0ZJTExFUl9MRU5HVEh9IGZyb20gJy4vZGF0ZS1maWxsZXJzJztcbmltcG9ydCB7REFZU19JTl9XRUVLLCBNSU5fREFZLCBNT05USFNfSU5fWUVBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlNb250aH0gZnJvbSAnLi9tb250aCc7XG5pbXBvcnQge1R1aVllYXJ9IGZyb20gJy4veWVhcic7XG5cbi8vIFRPRE86IExvY2FsaXplZCBmb3JtYXR0aW5nXG4vKipcbiAqIEltbXV0YWJsZSBkYXRlIG9iamVjdCwgY29uc2lzdGluZyBvZiBkYXksIG1vbnRoIGFuZCB5ZWFyXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlEYXkgZXh0ZW5kcyBUdWlNb250aCB7XG4gICAgY29uc3RydWN0b3IoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCByZWFkb25seSBkYXk6IG51bWJlcikge1xuICAgICAgICBzdXBlcih5ZWFyLCBtb250aCk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpRGF5LmlzVmFsaWREYXkoeWVhciwgbW9udGgsIGRheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMge0BsaW5rIFR1aURheX0gZnJvbSBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tTG9jYWxOYXRpdmVEYXRlKGRhdGU6IERhdGUpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gbmV3IFR1aURheShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMge0BsaW5rIFR1aURheX0gZnJvbSBuYXRpdmUge0BsaW5rIERhdGV9IHVzaW5nIFVUQ1xuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tVXRjTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayB2YWxpZGl0eSBvZiB5ZWFyLCBtb250aCBhbmQgZGF5XG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEBwYXJhbSBkYXlcbiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsaWRpdHlcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZERheSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKGRheSkgJiZcbiAgICAgICAgICAgIGluUmFuZ2UoXG4gICAgICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgICAgIE1JTl9EQVksXG4gICAgICAgICAgICAgICAgVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGgsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFyKSkgKyAxLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUICh3aWxsIGJlIGRlbGV0ZWQgc29vbilcbiAgICAgKlxuICAgICAqIENhbGN1bGF0ZWQgZGF5IG9uIGEgY2FsZW5kYXIgZ3JpZFxuICAgICAqXG4gICAgICogQHBhcmFtIG1vbnRoXG4gICAgICogQHBhcmFtIHJvdyByb3cgaW4gYSBjYWxlbmRhclxuICAgICAqIEBwYXJhbSBjb2wgY29sdW1uIGluIGEgY2FsZW5kYXJcbiAgICAgKiBAcmV0dXJuIHJlc3VsdGluZyBkYXkgb24gdGhlc2UgY29vcmRpbmF0ZXMgKGNvdWxkIGV4Y2VlZCBwYXNzZWQgbW9udGgpXG4gICAgICovXG4gICAgc3RhdGljIGdldERheUZyb21Nb250aFJvd0NvbChtb250aDogVHVpTW9udGgsIHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IFR1aURheSB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihyb3cpKTtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChpblJhbmdlKHJvdywgMCwgNikpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoY29sKSk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoaW5SYW5nZShjb2wsIDAsIERBWVNfSU5fV0VFSykpO1xuXG4gICAgICAgIGxldCBkYXkgPSByb3cgKiBEQVlTX0lOX1dFRUsgKyBjb2wgLSBtb250aC5tb250aFN0YXJ0RGF5c09mZnNldCArIDE7XG5cbiAgICAgICAgaWYgKGRheSA+IG1vbnRoLmRheXNDb3VudCkge1xuICAgICAgICAgICAgZGF5ID0gZGF5IC0gbW9udGguZGF5c0NvdW50O1xuICAgICAgICAgICAgbW9udGggPSBtb250aC5hcHBlbmQoe21vbnRoOiAxfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF5IDw9IDApIHtcbiAgICAgICAgICAgIG1vbnRoID0gbW9udGguYXBwZW5kKHttb250aDogLTF9KTtcbiAgICAgICAgICAgIGRheSA9IG1vbnRoLmRheXNDb3VudCArIGRheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KG1vbnRoLnllYXIsIG1vbnRoLm1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgZGF5IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHN0YXRpYyBjdXJyZW50TG9jYWwoKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gbmF0aXZlRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCBkYXkgPSBuYXRpdmVEYXRlLmdldERhdGUoKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHtAbGluayBUdWlEYXl9IG5vcm1hbGl6aW5nIHllYXIsIG1vbnRoIGFuZCBkYXkuIHtAbGluayBOYU59IGlzIHR1cm5lZCBpbnRvIG1pbmltYWwgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhciBhbnkgeWVhciB2YWx1ZSwgaW5jbHVkaW5nIGludmFsaWRcbiAgICAgKiBAcGFyYW0gbW9udGggYW55IG1vbnRoIHZhbHVlLCBpbmNsdWRpbmcgaW52YWxpZCAobW9udGhzIHN0YXJ0IHdpdGggMClcbiAgICAgKiBAcGFyYW0gZGF5IGFueSBkYXkgdmFsdWUsIGluY2x1ZGluZyBpbnZhbGlkXG4gICAgICogQHJldHVybiBub3JtYWxpemVkIGRhdGVcbiAgICAgKi9cbiAgICBzdGF0aWMgbm9ybWFsaXplT2YoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRZZWFyID0gVHVpWWVhci5ub3JtYWxpemVZZWFyUGFydCh5ZWFyKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZE1vbnRoID0gVHVpTW9udGgubm9ybWFsaXplTW9udGhQYXJ0KG1vbnRoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERheSA9IFR1aURheS5ub3JtYWxpemVEYXlQYXJ0KFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbm9ybWFsaXplZE1vbnRoLFxuICAgICAgICAgICAgbm9ybWFsaXplZFllYXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkobm9ybWFsaXplZFllYXIsIG5vcm1hbGl6ZWRNb250aCwgbm9ybWFsaXplZERheSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGxlbmd0aEJldHdlZW4oZnJvbTogVHVpRGF5LCB0bzogVHVpRGF5KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICAgICAgICAodG8udG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXRUaW1lKCkgLSBmcm9tLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0VGltZSgpKSAvXG4gICAgICAgICAgICAgICAgKDEwMDAgKiA2MCAqIDYwICogMjQpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHN0YXRpYyBwYXJzZVJhd0RhdGVTdHJpbmcoXG4gICAgICAgIGRhdGU6IHN0cmluZyxcbiAgICAgICAgZGF0ZU1vZGU6IFR1aURhdGVNb2RlID0gJ0RNWScsXG4gICAgKToge2RheTogbnVtYmVyOyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXJ9IHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIGRhdGUubGVuZ3RoID09PSBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgICAgICAgICAnW3BhcnNlUmF3RGF0ZVN0cmluZ106IHdyb25nIGRhdGUgc3RyaW5nIGxlbmd0aCcsXG4gICAgICAgICk7XG5cbiAgICAgICAgc3dpdGNoIChkYXRlTW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoOCwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBwYXJzZUludChkYXRlLnNsaWNlKDUsIDcpLCAxMCkgLSAxLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBwYXJzZUludChkYXRlLnNsaWNlKDAsIDQpLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY2FzZSAnTURZJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoMywgNSksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgMiksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoNiwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhc2UgJ0RNWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5OiBwYXJzZUludChkYXRlLnNsaWNlKDAsIDIpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBwYXJzZUludChkYXRlLnNsaWNlKDMsIDUpLCAxMCkgLSAxLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBwYXJzZUludChkYXRlLnNsaWNlKDYsIDEwKSwgMTApLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBNb3ZlIG1vbnRoIGFuZCB5ZWFyIHJlbGF0ZWQgY29kZSBjb3JyZXNwb25kaW5nIGNsYXNzZXNcbiAgICAvKipcbiAgICAgKiBQYXJzaW5nIGEgc3RyaW5nIHdpdGggZGF0ZSB3aXRoIG5vcm1hbGl6YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByYXdEYXRlIGRhdGUgc3RyaW5nXG4gICAgICogQHBhcmFtIGRhdGVNb2RlIGRhdGUgZm9ybWF0IG9mIHRoZSBkYXRlIHN0cmluZyAoRE1ZIHwgTURZIHwgWU1EKVxuICAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBkYXRlXG4gICAgICovXG4gICAgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKHJhd0RhdGU6IHN0cmluZywgZGF0ZU1vZGU6IFR1aURhdGVNb2RlID0gJ0RNWScpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCB7ZGF5LCBtb250aCwgeWVhcn0gPSB0aGlzLnBhcnNlUmF3RGF0ZVN0cmluZyhyYXdEYXRlLCBkYXRlTW9kZSk7XG5cbiAgICAgICAgcmV0dXJuIFR1aURheS5ub3JtYWxpemVPZih5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzaW5nIGEgZGF0ZSBzdHJpbmdpZmllZCBpbiBhIHRvSlNPTiBmb3JtYXRcbiAgICAgKiBAcGFyYW0geWVhck1vbnRoRGF5U3RyaW5nIGRhdGUgc3RyaW5nIGluIGZvcm1hdCBvZiBZWVlZLU1NLUREXG4gICAgICogQHJldHVybiBkYXRlXG4gICAgICogQHRocm93cyBleGNlcHRpb25zIGlmIGFueSBwYXJ0IG9mIHRoZSBkYXRlIGlzIGludmFsaWRcbiAgICAgKi9cbiAgICBzdGF0aWMganNvblBhcnNlKHllYXJNb250aERheVN0cmluZzogc3RyaW5nKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3Qge2RheSwgbW9udGgsIHllYXJ9ID0gdGhpcy5wYXJzZVJhd0RhdGVTdHJpbmcoeWVhck1vbnRoRGF5U3RyaW5nLCAnWU1EJyk7XG5cbiAgICAgICAgaWYgKCFUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgeWVhcjogJyArIHllYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9udGg6ICcgKyBtb250aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgICAgICAhaW5SYW5nZShcbiAgICAgICAgICAgICAgICBkYXksXG4gICAgICAgICAgICAgICAgTUlOX0RBWSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aCwgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpKSArIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRheTogJyArIGRheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIG5vcm1hbGl6ZURheVBhcnQoZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSk7XG5cbiAgICAgICAgY29uc3QgbW9udGhEYXlzQ291bnQgPSBUdWlNb250aC5nZXRNb250aERheXNDb3VudChcbiAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVUb0ludE51bWJlcihkYXksIDEsIG1vbnRoRGF5c0NvdW50KTtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkRGF5UGFydCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGFkU3RhcnQodGhpcy5kYXkudG9TdHJpbmcoKSwgMiwgJzAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGdldEZvcm1hdHRlZERheX0gaW5zdGVhZFxuICAgICAqIFRPRE8gcmVtb3ZlIGluIDMuMFxuICAgICAqIEZvcm1hdHRlZCB3aG9sZSBkYXRlXG4gICAgICovXG4gICAgZ2V0IGZvcm1hdHRlZERheSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXR0ZWREYXlQYXJ0fS4ke3RoaXMuZm9ybWF0dGVkTW9udGh9YDtcbiAgICB9XG5cbiAgICBnZXQgaXNXZWVrZW5kKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXlPZldlZWsgPSB0aGlzLmRheU9mV2VlayhmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGRheU9mV2VlayA9PT0gVHVpRGF5T2ZXZWVrLlNhdHVyZGF5IHx8IGRheU9mV2VlayA9PT0gVHVpRGF5T2ZXZWVrLlN1bmRheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheSBvZiB3ZWVrXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnRGcm9tTW9uZGF5IHdoZXRoZXIgd2VlayBzdGFydHMgZnJvbSBNb25kYXkgYW5kIG5vdCBmcm9tIFN1bmRheVxuICAgICAqIEByZXR1cm4gZGF5IG9mIHdlZWsgKGZyb20gMCB0byA2KVxuICAgICAqL1xuICAgIGRheU9mV2VlayhzdGFydEZyb21Nb25kYXk6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF5T2ZXZWVrID0gc3RhcnRGcm9tTW9uZGF5XG4gICAgICAgICAgICA/IHRoaXMudG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXREYXkoKSAtIDFcbiAgICAgICAgICAgIDogdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldERheSgpO1xuXG4gICAgICAgIHJldHVybiBkYXlPZldlZWsgPCAwID8gNiA6IGRheU9mV2VlaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgZGF5QmVmb3JlKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aEJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5IDwgYW5vdGhlci5kYXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgYWZ0ZXIgb3IgZXF1YWxzIHRvIGN1cnJlbnRcbiAgICAgKi9cbiAgICBkYXlTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPD0gYW5vdGhlci5kYXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIGRheVNhbWUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA9PT0gYW5vdGhlci5kYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgZWl0aGVyIGJlZm9yZSBvciB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgZGF5U2FtZU9yQWZ0ZXIoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA+PSBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBiZWZvcmUgY3VycmVudFxuICAgICAqL1xuICAgIGRheUFmdGVyKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aEFmdGVyKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPiBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGFtcGluZyBkYXRlIGJldHdlZW4gdHdvIGxpbWl0c1xuICAgICAqXG4gICAgICogQHBhcmFtIG1pblxuICAgICAqIEBwYXJhbSBtYXhcbiAgICAgKiBAcmV0dXJuIGNsYW1wZWQgZGF0ZVxuICAgICAqL1xuICAgIGRheUxpbWl0KG1pbjogVHVpRGF5IHwgbnVsbCwgbWF4OiBUdWlEYXkgfCBudWxsKTogVHVpRGF5IHtcbiAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiB0aGlzLmRheUJlZm9yZShtaW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbWluO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1heCAhPT0gbnVsbCAmJiB0aGlzLmRheUFmdGVyKG1heCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBDb25zaWRlciByZW1vdmluZyBgYmFja3dhcmRzYCBvcHRpb25cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgZGF5IGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIElmIHJlc3VsdGluZyBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gb3JpZ2luYWwgb25lLCBkYXRlIGlzIHJvdW5kZWQgdG8gdGhlIG1heGltdW0gZGF5XG4gICAgICogaW4gdGhlIHJlc3VsdGluZyBtb250aC4gT2Zmc2V0IG9mIGRheXMgd2lsbCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSByZXN1bHRlZCB5ZWFyIGFuZCBtb250aFxuICAgICAqIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBwYXJlbnQgY2xhc3NlcyBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHBhcmFtIGJhY2t3YXJkcyBzaGlmdCBkYXRlIGJhY2t3YXJkc1xuICAgICAqIEByZXR1cm4gbmV3IGRhdGUgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIGFwcGVuZChcbiAgICAgICAge3llYXIgPSAwLCBtb250aCA9IDAsIGRheSA9IDB9OiBUdWlEYXlMaWtlLFxuICAgICAgICBiYWNrd2FyZHM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiBUdWlEYXkge1xuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICAgICAgbW9udGggKj0gLTE7XG4gICAgICAgICAgICBkYXkgKj0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3RhbE1vbnRocyA9ICh0aGlzLnllYXIgKyB5ZWFyKSAqIE1PTlRIU19JTl9ZRUFSICsgdGhpcy5tb250aCArIG1vbnRoO1xuICAgICAgICBsZXQgeWVhcnMgPSBNYXRoLmZsb29yKHRvdGFsTW9udGhzIC8gTU9OVEhTX0lOX1lFQVIpO1xuICAgICAgICBsZXQgbW9udGhzID0gdG90YWxNb250aHMgJSBNT05USFNfSU5fWUVBUjtcblxuICAgICAgICBsZXQgZGF5cyA9XG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICB0aGlzLmRheSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aHMsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFycykpLFxuICAgICAgICAgICAgKSArIGRheTtcblxuICAgICAgICB3aGlsZSAoZGF5cyA+IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSkpIHtcbiAgICAgICAgICAgIGRheXMgLT0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcblxuICAgICAgICAgICAgaWYgKG1vbnRocyA9PT0gVHVpTW9udGhOdW1iZXIuRGVjZW1iZXIpIHtcbiAgICAgICAgICAgICAgICB5ZWFycysrO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IFR1aU1vbnRoTnVtYmVyLkphbnVhcnk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbnRocysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGRheXMgPCBNSU5fREFZKSB7XG4gICAgICAgICAgICBpZiAobW9udGhzID09PSBUdWlNb250aE51bWJlci5KYW51YXJ5KSB7XG4gICAgICAgICAgICAgICAgeWVhcnMtLTtcbiAgICAgICAgICAgICAgICBtb250aHMgPSBUdWlNb250aE51bWJlci5EZWNlbWJlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9udGhzLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXMgKz0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXJzLCBtb250aHMsIGRheXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBnZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsIHNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIHNlcGFyYXRvci5sZW5ndGggPT09IDEsXG4gICAgICAgICAgICAnU2VwYXJhdG9yIHNob3VsZCBjb25zaXN0IG9mIG9ubHkgMSBzeW1ib2wnLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRkID0gdGhpcy5mb3JtYXR0ZWREYXlQYXJ0O1xuICAgICAgICBjb25zdCBtbSA9IHRoaXMuZm9ybWF0dGVkTW9udGhQYXJ0O1xuICAgICAgICBjb25zdCB5eXl5ID0gdGhpcy5mb3JtYXR0ZWRZZWFyO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7eXl5eX0ke3NlcGFyYXRvcn0ke21tfSR7c2VwYXJhdG9yfSR7ZGR9YDtcbiAgICAgICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke21tfSR7c2VwYXJhdG9yfSR7ZGR9JHtzZXBhcmF0b3J9JHt5eXl5fWA7XG4gICAgICAgICAgICBjYXNlICdETVknOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZGR9JHtzZXBhcmF0b3J9JHttbX0ke3NlcGFyYXRvcn0ke3l5eXl9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlID0gJ0RNWScsIHNlcGFyYXRvcjogc3RyaW5nID0gJy4nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkRGF5KGRhdGVGb3JtYXQsIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtzdXBlci50b0pTT04oKX0tJHt0aGlzLmZvcm1hdHRlZERheVBhcnR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIHRoaXMuZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRheSkpO1xuICAgIH1cbn1cbiJdfQ==
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0IsNkJBQTZCO0FBQzdCOztHQUVHO0FBQ0g7SUFBNEIsMEJBQVE7SUFDaEMsZ0JBQVksSUFBWSxFQUFFLEtBQWEsRUFBVyxHQUFXO1FBQTdELFlBQ0ksa0JBQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUVyQjtRQUhpRCxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBRXpELFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFtQixHQUExQixVQUEyQixJQUFVO1FBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFF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LEdBQU47UUFDSSxPQUFVLGlCQUFNLE1BQU0sV0FBRSxTQUFJLElBQUksQ0FBQyxnQkFBa0IsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQ0FBaUIsR0FBakI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0NBQWUsR0FBZjtRQUNJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQUFDLEFBalpELENBQTRCLFFBQVEsR0FpWm5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aURheU9mV2VlaywgVHVpTW9udGhOdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvZW51bXMnO1xuaW1wb3J0IHtcbiAgICBJbnZhbGlkRGF5RXhjZXB0aW9uLFxuICAgIEludmFsaWRNb250aEV4Y2VwdGlvbixcbiAgICBJbnZhbGlkWWVhckV4Y2VwdGlvbixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9leGNlcHRpb25zJztcbmltcG9ydCB7VHVpRGF5TGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7VHVpRGF0ZU1vZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtwYWRTdGFydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHtpblJhbmdlLCBub3JtYWxpemVUb0ludE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcblxuaW1wb3J0IHtEQVRFX0ZJTExFUl9MRU5HVEh9IGZyb20gJy4vZGF0ZS1maWxsZXJzJztcbmltcG9ydCB7REFZU19JTl9XRUVLLCBNSU5fREFZLCBNT05USFNfSU5fWUVBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlNb250aH0gZnJvbSAnLi9tb250aCc7XG5pbXBvcnQge1R1aVllYXJ9IGZyb20gJy4veWVhcic7XG5cbi8vIFRPRE86IExvY2FsaXplZCBmb3JtYXR0aW5nXG4vKipcbiAqIEltbXV0YWJsZSBkYXRlIG9iamVjdCwgY29uc2lzdGluZyBvZiBkYXksIG1vbnRoIGFuZCB5ZWFyXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlEYXkgZXh0ZW5kcyBUdWlNb250aCB7XG4gICAgY29uc3RydWN0b3IoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCByZWFkb25seSBkYXk6IG51bWJlcikge1xuICAgICAgICBzdXBlcih5ZWFyLCBtb250aCk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpRGF5LmlzVmFsaWREYXkoeWVhciwgbW9udGgsIGRheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMge0BsaW5rIFR1aURheX0gZnJvbSBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tTG9jYWxOYXRpdmVEYXRlKGRhdGU6IERhdGUpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gbmV3IFR1aURheShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMge0BsaW5rIFR1aURheX0gZnJvbSBuYXRpdmUge0BsaW5rIERhdGV9IHVzaW5nIFVUQ1xuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tVXRjTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayB2YWxpZGl0eSBvZiB5ZWFyLCBtb250aCBhbmQgZGF5XG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEBwYXJhbSBkYXlcbiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsaWRpdHlcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZERheSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKGRheSkgJiZcbiAgICAgICAgICAgIGluUmFuZ2UoXG4gICAgICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgICAgIE1JTl9EQVksXG4gICAgICAgICAgICAgICAgVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGgsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFyKSkgKyAxLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUICh3aWxsIGJlIGRlbGV0ZWQgc29vbilcbiAgICAgKlxuICAgICAqIENhbGN1bGF0ZWQgZGF5IG9uIGEgY2FsZW5kYXIgZ3JpZFxuICAgICAqXG4gICAgICogQHBhcmFtIG1vbnRoXG4gICAgICogQHBhcmFtIHJvdyByb3cgaW4gYSBjYWxlbmRhclxuICAgICAqIEBwYXJhbSBjb2wgY29sdW1uIGluIGEgY2FsZW5kYXJcbiAgICAgKiBAcmV0dXJuIHJlc3VsdGluZyBkYXkgb24gdGhlc2UgY29vcmRpbmF0ZXMgKGNvdWxkIGV4Y2VlZCBwYXNzZWQgbW9udGgpXG4gICAgICovXG4gICAgc3RhdGljIGdldERheUZyb21Nb250aFJvd0NvbChtb250aDogVHVpTW9udGgsIHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IFR1aURheSB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihyb3cpKTtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChpblJhbmdlKHJvdywgMCwgNikpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoY29sKSk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoaW5SYW5nZShjb2wsIDAsIERBWVNfSU5fV0VFSykpO1xuXG4gICAgICAgIGxldCBkYXkgPSByb3cgKiBEQVlTX0lOX1dFRUsgKyBjb2wgLSBtb250aC5tb250aFN0YXJ0RGF5c09mZnNldCArIDE7XG5cbiAgICAgICAgaWYgKGRheSA+IG1vbnRoLmRheXNDb3VudCkge1xuICAgICAgICAgICAgZGF5ID0gZGF5IC0gbW9udGguZGF5c0NvdW50O1xuICAgICAgICAgICAgbW9udGggPSBtb250aC5hcHBlbmQoe21vbnRoOiAxfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF5IDw9IDApIHtcbiAgICAgICAgICAgIG1vbnRoID0gbW9udGguYXBwZW5kKHttb250aDogLTF9KTtcbiAgICAgICAgICAgIGRheSA9IG1vbnRoLmRheXNDb3VudCArIGRheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KG1vbnRoLnllYXIsIG1vbnRoLm1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgZGF5IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHN0YXRpYyBjdXJyZW50TG9jYWwoKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gbmF0aXZlRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCBkYXkgPSBuYXRpdmVEYXRlLmdldERhdGUoKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHtAbGluayBUdWlEYXl9IG5vcm1hbGl6aW5nIHllYXIsIG1vbnRoIGFuZCBkYXkuIHtAbGluayBOYU59IGlzIHR1cm5lZCBpbnRvIG1pbmltYWwgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhciBhbnkgeWVhciB2YWx1ZSwgaW5jbHVkaW5nIGludmFsaWRcbiAgICAgKiBAcGFyYW0gbW9udGggYW55IG1vbnRoIHZhbHVlLCBpbmNsdWRpbmcgaW52YWxpZCAobW9udGhzIHN0YXJ0IHdpdGggMClcbiAgICAgKiBAcGFyYW0gZGF5IGFueSBkYXkgdmFsdWUsIGluY2x1ZGluZyBpbnZhbGlkXG4gICAgICogQHJldHVybiBub3JtYWxpemVkIGRhdGVcbiAgICAgKi9cbiAgICBzdGF0aWMgbm9ybWFsaXplT2YoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRZZWFyID0gVHVpWWVhci5ub3JtYWxpemVZZWFyUGFydCh5ZWFyKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZE1vbnRoID0gVHVpTW9udGgubm9ybWFsaXplTW9udGhQYXJ0KG1vbnRoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERheSA9IFR1aURheS5ub3JtYWxpemVEYXlQYXJ0KFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbm9ybWFsaXplZE1vbnRoLFxuICAgICAgICAgICAgbm9ybWFsaXplZFllYXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkobm9ybWFsaXplZFllYXIsIG5vcm1hbGl6ZWRNb250aCwgbm9ybWFsaXplZERheSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGxlbmd0aEJldHdlZW4oZnJvbTogVHVpRGF5LCB0bzogVHVpRGF5KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICAgICAgICAodG8udG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXRUaW1lKCkgLSBmcm9tLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0VGltZSgpKSAvXG4gICAgICAgICAgICAgICAgKDEwMDAgKiA2MCAqIDYwICogMjQpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHN0YXRpYyBwYXJzZVJhd0RhdGVTdHJpbmcoXG4gICAgICAgIGRhdGU6IHN0cmluZyxcbiAgICAgICAgZGF0ZU1vZGU6IFR1aURhdGVNb2RlID0gJ0RNWScsXG4gICAgKToge2RheTogbnVtYmVyOyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXJ9IHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIGRhdGUubGVuZ3RoID09PSBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgICAgICAgICAnW3BhcnNlUmF3RGF0ZVN0cmluZ106IHdyb25nIGRhdGUgc3RyaW5nIGxlbmd0aCcsXG4gICAgICAgICk7XG5cbiAgICAgICAgc3dpdGNoIChkYXRlTW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoOCwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBwYXJzZUludChkYXRlLnNsaWNlKDUsIDcpLCAxMCkgLSAxLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBwYXJzZUludChkYXRlLnNsaWNlKDAsIDQpLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY2FzZSAnTURZJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoMywgNSksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgMiksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoNiwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhc2UgJ0RNWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5OiBwYXJzZUludChkYXRlLnNsaWNlKDAsIDIpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBwYXJzZUludChkYXRlLnNsaWNlKDMsIDUpLCAxMCkgLSAxLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBwYXJzZUludChkYXRlLnNsaWNlKDYsIDEwKSwgMTApLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBNb3ZlIG1vbnRoIGFuZCB5ZWFyIHJlbGF0ZWQgY29kZSBjb3JyZXNwb25kaW5nIGNsYXNzZXNcbiAgICAvKipcbiAgICAgKiBQYXJzaW5nIGEgc3RyaW5nIHdpdGggZGF0ZSB3aXRoIG5vcm1hbGl6YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByYXdEYXRlIGRhdGUgc3RyaW5nXG4gICAgICogQHBhcmFtIGRhdGVNb2RlIGRhdGUgZm9ybWF0IG9mIHRoZSBkYXRlIHN0cmluZyAoRE1ZIHwgTURZIHwgWU1EKVxuICAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBkYXRlXG4gICAgICovXG4gICAgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKHJhd0RhdGU6IHN0cmluZywgZGF0ZU1vZGU6IFR1aURhdGVNb2RlID0gJ0RNWScpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCB7ZGF5LCBtb250aCwgeWVhcn0gPSB0aGlzLnBhcnNlUmF3RGF0ZVN0cmluZyhyYXdEYXRlLCBkYXRlTW9kZSk7XG5cbiAgICAgICAgcmV0dXJuIFR1aURheS5ub3JtYWxpemVPZih5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzaW5nIGEgZGF0ZSBzdHJpbmdpZmllZCBpbiBhIHRvSlNPTiBmb3JtYXRcbiAgICAgKiBAcGFyYW0geWVhck1vbnRoRGF5U3RyaW5nIGRhdGUgc3RyaW5nIGluIGZvcm1hdCBvZiBZWVlZLU1NLUREXG4gICAgICogQHJldHVybiBkYXRlXG4gICAgICogQHRocm93cyBleGNlcHRpb25zIGlmIGFueSBwYXJ0IG9mIHRoZSBkYXRlIGlzIGludmFsaWRcbiAgICAgKi9cbiAgICBzdGF0aWMganNvblBhcnNlKHllYXJNb250aERheVN0cmluZzogc3RyaW5nKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3Qge2RheSwgbW9udGgsIHllYXJ9ID0gdGhpcy5wYXJzZVJhd0RhdGVTdHJpbmcoeWVhck1vbnRoRGF5U3RyaW5nLCAnWU1EJyk7XG5cbiAgICAgICAgaWYgKCFUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFllYXJFeGNlcHRpb24oeWVhcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVR1aU1vbnRoLmlzVmFsaWRNb250aCh5ZWFyLCBtb250aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkTW9udGhFeGNlcHRpb24obW9udGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIU51bWJlci5pc0ludGVnZXIoZGF5KSB8fFxuICAgICAgICAgICAgIWluUmFuZ2UoXG4gICAgICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgICAgIE1JTl9EQVksXG4gICAgICAgICAgICAgICAgVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGgsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFyKSkgKyAxLFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF5RXhjZXB0aW9uKGRheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIG5vcm1hbGl6ZURheVBhcnQoZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSk7XG5cbiAgICAgICAgY29uc3QgbW9udGhEYXlzQ291bnQgPSBUdWlNb250aC5nZXRNb250aERheXNDb3VudChcbiAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVUb0ludE51bWJlcihkYXksIDEsIG1vbnRoRGF5c0NvdW50KTtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkRGF5UGFydCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGFkU3RhcnQoU3RyaW5nKHRoaXMuZGF5KSwgMiwgJzAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGdldEZvcm1hdHRlZERheX0gaW5zdGVhZFxuICAgICAqIFRPRE8gcmVtb3ZlIGluIDMuMFxuICAgICAqIEZvcm1hdHRlZCB3aG9sZSBkYXRlXG4gICAgICovXG4gICAgZ2V0IGZvcm1hdHRlZERheSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXR0ZWREYXlQYXJ0fS4ke3RoaXMuZm9ybWF0dGVkTW9udGh9YDtcbiAgICB9XG5cbiAgICBnZXQgaXNXZWVrZW5kKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXlPZldlZWsgPSB0aGlzLmRheU9mV2VlayhmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGRheU9mV2VlayA9PT0gVHVpRGF5T2ZXZWVrLlNhdHVyZGF5IHx8IGRheU9mV2VlayA9PT0gVHVpRGF5T2ZXZWVrLlN1bmRheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheSBvZiB3ZWVrXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnRGcm9tTW9uZGF5IHdoZXRoZXIgd2VlayBzdGFydHMgZnJvbSBNb25kYXkgYW5kIG5vdCBmcm9tIFN1bmRheVxuICAgICAqIEByZXR1cm4gZGF5IG9mIHdlZWsgKGZyb20gMCB0byA2KVxuICAgICAqL1xuICAgIGRheU9mV2VlayhzdGFydEZyb21Nb25kYXk6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF5T2ZXZWVrID0gc3RhcnRGcm9tTW9uZGF5XG4gICAgICAgICAgICA/IHRoaXMudG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXREYXkoKSAtIDFcbiAgICAgICAgICAgIDogdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldERheSgpO1xuXG4gICAgICAgIHJldHVybiBkYXlPZldlZWsgPCAwID8gNiA6IGRheU9mV2VlaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgZGF5QmVmb3JlKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aEJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5IDwgYW5vdGhlci5kYXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgYWZ0ZXIgb3IgZXF1YWxzIHRvIGN1cnJlbnRcbiAgICAgKi9cbiAgICBkYXlTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPD0gYW5vdGhlci5kYXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIGRheVNhbWUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA9PT0gYW5vdGhlci5kYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgZWl0aGVyIGJlZm9yZSBvciB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgZGF5U2FtZU9yQWZ0ZXIoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA+PSBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBiZWZvcmUgY3VycmVudFxuICAgICAqL1xuICAgIGRheUFmdGVyKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aEFmdGVyKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPiBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGFtcGluZyBkYXRlIGJldHdlZW4gdHdvIGxpbWl0c1xuICAgICAqXG4gICAgICogQHBhcmFtIG1pblxuICAgICAqIEBwYXJhbSBtYXhcbiAgICAgKiBAcmV0dXJuIGNsYW1wZWQgZGF0ZVxuICAgICAqL1xuICAgIGRheUxpbWl0KG1pbjogVHVpRGF5IHwgbnVsbCwgbWF4OiBUdWlEYXkgfCBudWxsKTogVHVpRGF5IHtcbiAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiB0aGlzLmRheUJlZm9yZShtaW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbWluO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1heCAhPT0gbnVsbCAmJiB0aGlzLmRheUFmdGVyKG1heCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBDb25zaWRlciByZW1vdmluZyBgYmFja3dhcmRzYCBvcHRpb25cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgZGF5IGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIElmIHJlc3VsdGluZyBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gb3JpZ2luYWwgb25lLCBkYXRlIGlzIHJvdW5kZWQgdG8gdGhlIG1heGltdW0gZGF5XG4gICAgICogaW4gdGhlIHJlc3VsdGluZyBtb250aC4gT2Zmc2V0IG9mIGRheXMgd2lsbCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSByZXN1bHRlZCB5ZWFyIGFuZCBtb250aFxuICAgICAqIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBwYXJlbnQgY2xhc3NlcyBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHBhcmFtIGJhY2t3YXJkcyBzaGlmdCBkYXRlIGJhY2t3YXJkc1xuICAgICAqIEByZXR1cm4gbmV3IGRhdGUgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIGFwcGVuZChcbiAgICAgICAge3llYXIgPSAwLCBtb250aCA9IDAsIGRheSA9IDB9OiBUdWlEYXlMaWtlLFxuICAgICAgICBiYWNrd2FyZHM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiBUdWlEYXkge1xuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICAgICAgbW9udGggKj0gLTE7XG4gICAgICAgICAgICBkYXkgKj0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3RhbE1vbnRocyA9ICh0aGlzLnllYXIgKyB5ZWFyKSAqIE1PTlRIU19JTl9ZRUFSICsgdGhpcy5tb250aCArIG1vbnRoO1xuICAgICAgICBsZXQgeWVhcnMgPSBNYXRoLmZsb29yKHRvdGFsTW9udGhzIC8gTU9OVEhTX0lOX1lFQVIpO1xuICAgICAgICBsZXQgbW9udGhzID0gdG90YWxNb250aHMgJSBNT05USFNfSU5fWUVBUjtcblxuICAgICAgICBsZXQgZGF5cyA9XG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICB0aGlzLmRheSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aHMsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFycykpLFxuICAgICAgICAgICAgKSArIGRheTtcblxuICAgICAgICB3aGlsZSAoZGF5cyA+IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSkpIHtcbiAgICAgICAgICAgIGRheXMgLT0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcblxuICAgICAgICAgICAgaWYgKG1vbnRocyA9PT0gVHVpTW9udGhOdW1iZXIuRGVjZW1iZXIpIHtcbiAgICAgICAgICAgICAgICB5ZWFycysrO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IFR1aU1vbnRoTnVtYmVyLkphbnVhcnk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbnRocysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGRheXMgPCBNSU5fREFZKSB7XG4gICAgICAgICAgICBpZiAobW9udGhzID09PSBUdWlNb250aE51bWJlci5KYW51YXJ5KSB7XG4gICAgICAgICAgICAgICAgeWVhcnMtLTtcbiAgICAgICAgICAgICAgICBtb250aHMgPSBUdWlNb250aE51bWJlci5EZWNlbWJlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9udGhzLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXMgKz0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXJzLCBtb250aHMsIGRheXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBnZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsIHNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIHNlcGFyYXRvci5sZW5ndGggPT09IDEsXG4gICAgICAgICAgICAnU2VwYXJhdG9yIHNob3VsZCBjb25zaXN0IG9mIG9ubHkgMSBzeW1ib2wnLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRkID0gdGhpcy5mb3JtYXR0ZWREYXlQYXJ0O1xuICAgICAgICBjb25zdCBtbSA9IHRoaXMuZm9ybWF0dGVkTW9udGhQYXJ0O1xuICAgICAgICBjb25zdCB5eXl5ID0gdGhpcy5mb3JtYXR0ZWRZZWFyO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7eXl5eX0ke3NlcGFyYXRvcn0ke21tfSR7c2VwYXJhdG9yfSR7ZGR9YDtcbiAgICAgICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke21tfSR7c2VwYXJhdG9yfSR7ZGR9JHtzZXBhcmF0b3J9JHt5eXl5fWA7XG4gICAgICAgICAgICBjYXNlICdETVknOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZGR9JHtzZXBhcmF0b3J9JHttbX0ke3NlcGFyYXRvcn0ke3l5eXl9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlID0gJ0RNWScsIHNlcGFyYXRvcjogc3RyaW5nID0gJy4nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkRGF5KGRhdGVGb3JtYXQsIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtzdXBlci50b0pTT04oKX0tJHt0aGlzLmZvcm1hdHRlZERheVBhcnR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIHRoaXMuZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRheSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -22,6 +22,10 @@ var TuiMonthRange = /** @class */ (function () {
22
22
  configurable: true
23
23
  });
24
24
  Object.defineProperty(TuiMonthRange.prototype, "formattedMonthRange", {
25
+ /**
26
+ * @deprecated
27
+ * TODO remove in 3.0
28
+ */
25
29
  get: function () {
26
30
  return "" + this.from.formattedMonth + RANGE_SEPARATOR_CHAR + this.to.formattedMonth;
27
31
  },
@@ -37,4 +41,4 @@ var TuiMonthRange = /** @class */ (function () {
37
41
  return TuiMonthRange;
38
42
  }());
39
43
  export { TuiMonthRange };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcmFuZ2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbIm1vbnRoLXJhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFHakQ7O0dBRUc7QUFDSDtJQUNJLHVCQUFxQixJQUFjLEVBQVcsRUFBWTtRQUFyQyxTQUFJLEdBQUosSUFBSSxDQUFVO1FBQVcsT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUN0RCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxrQkFBSSxHQUFYLFVBQVksTUFBZ0IsRUFBRSxNQUFnQjtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7WUFDbkMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7WUFDbkMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsc0JBQUksd0NBQWE7YUFBakI7WUFDSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDhDQUFtQjthQUF2QjtZQUNJLE9BQU8sS0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWdCLENBQUM7UUFDekYsQ0FBQzs7O09BQUE7SUFFRCxpQ0FBUyxHQUFULFVBQVUsT0FBc0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxnQ0FBUSxHQUFSO1FBQ0ksT0FBTyxLQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEVBQUksQ0FBQztJQUMzRCxDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBMUJELElBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5cbmltcG9ydCB7UkFOR0VfU0VQQVJBVE9SX0NIQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpTW9udGh9IGZyb20gJy4vbW9udGgnO1xuXG4vKipcbiAqIEFuIGltbXV0YWJsZSByYW5nZSBvZiB0d28ge0BsaW5rIFR1aU1vbnRofSBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlNb250aFJhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBmcm9tOiBUdWlNb250aCwgcmVhZG9ubHkgdG86IFR1aU1vbnRoKSB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoZnJvbS5tb250aFNhbWVPckJlZm9yZSh0bykpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzb3J0KG1vbnRoMTogVHVpTW9udGgsIG1vbnRoMjogVHVpTW9udGgpOiBUdWlNb250aFJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoMS5tb250aFNhbWVPckJlZm9yZShtb250aDIpXG4gICAgICAgICAgICA/IG5ldyBUdWlNb250aFJhbmdlKG1vbnRoMSwgbW9udGgyKVxuICAgICAgICAgICAgOiBuZXcgVHVpTW9udGhSYW5nZShtb250aDIsIG1vbnRoMSk7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2luZ2xlTW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20ubW9udGhTYW1lKHRoaXMudG8pO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRNb250aFJhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmZyb20uZm9ybWF0dGVkTW9udGh9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke3RoaXMudG8uZm9ybWF0dGVkTW9udGh9YDtcbiAgICB9XG5cbiAgICBtb250aFNhbWUoYW5vdGhlcjogVHVpTW9udGhSYW5nZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tLm1vbnRoU2FtZShhbm90aGVyLmZyb20pICYmIHRoaXMudG8ubW9udGhTYW1lKGFub3RoZXIudG8pO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmZyb219JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke3RoaXMudG99YDtcbiAgICB9XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcmFuZ2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbIm1vbnRoLXJhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFHakQ7O0dBRUc7QUFDSDtJQUNJLHVCQUFxQixJQUFjLEVBQVcsRUFBWTtRQUFyQyxTQUFJLEdBQUosSUFBSSxDQUFVO1FBQVcsT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUN0RCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxrQkFBSSxHQUFYLFVBQVksTUFBZ0IsRUFBRSxNQUFnQjtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7WUFDbkMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7WUFDbkMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsc0JBQUksd0NBQWE7YUFBakI7WUFDSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDOzs7T0FBQTtJQU1ELHNCQUFJLDhDQUFtQjtRQUp2Qjs7O1dBR0c7YUFDSDtZQUNJLE9BQU8sS0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWdCLENBQUM7UUFDekYsQ0FBQzs7O09BQUE7SUFFRCxpQ0FBUyxHQUFULFVBQVUsT0FBc0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxnQ0FBUSxHQUFSO1FBQ0ksT0FBTyxLQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEVBQUksQ0FBQztJQUMzRCxDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBOUJELElBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5cbmltcG9ydCB7UkFOR0VfU0VQQVJBVE9SX0NIQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpTW9udGh9IGZyb20gJy4vbW9udGgnO1xuXG4vKipcbiAqIEFuIGltbXV0YWJsZSByYW5nZSBvZiB0d28ge0BsaW5rIFR1aU1vbnRofSBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlNb250aFJhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBmcm9tOiBUdWlNb250aCwgcmVhZG9ubHkgdG86IFR1aU1vbnRoKSB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoZnJvbS5tb250aFNhbWVPckJlZm9yZSh0bykpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzb3J0KG1vbnRoMTogVHVpTW9udGgsIG1vbnRoMjogVHVpTW9udGgpOiBUdWlNb250aFJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoMS5tb250aFNhbWVPckJlZm9yZShtb250aDIpXG4gICAgICAgICAgICA/IG5ldyBUdWlNb250aFJhbmdlKG1vbnRoMSwgbW9udGgyKVxuICAgICAgICAgICAgOiBuZXcgVHVpTW9udGhSYW5nZShtb250aDIsIG1vbnRoMSk7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2luZ2xlTW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20ubW9udGhTYW1lKHRoaXMudG8pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogVE9ETyByZW1vdmUgaW4gMy4wXG4gICAgICovXG4gICAgZ2V0IGZvcm1hdHRlZE1vbnRoUmFuZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZnJvbS5mb3JtYXR0ZWRNb250aH0ke1JBTkdFX1NFUEFSQVRPUl9DSEFSfSR7dGhpcy50by5mb3JtYXR0ZWRNb250aH1gO1xuICAgIH1cblxuICAgIG1vbnRoU2FtZShhbm90aGVyOiBUdWlNb250aFJhbmdlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20ubW9udGhTYW1lKGFub3RoZXIuZnJvbSkgJiYgdGhpcy50by5tb250aFNhbWUoYW5vdGhlci50byk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZnJvbX0ke1JBTkdFX1NFUEFSQVRPUl9DSEFSfSR7dGhpcy50b31gO1xuICAgIH1cbn1cbiJdfQ==
@@ -76,13 +76,15 @@ var TuiMonth = /** @class */ (function (_super) {
76
76
  };
77
77
  Object.defineProperty(TuiMonth.prototype, "formattedMonthPart", {
78
78
  get: function () {
79
- return padStart((this.month + 1).toString(), 2, '0');
79
+ return padStart(String(this.month + 1), 2, '0');
80
80
  },
81
81
  enumerable: true,
82
82
  configurable: true
83
83
  });
84
84
  Object.defineProperty(TuiMonth.prototype, "formattedMonth", {
85
85
  /**
86
+ * @deprecated
87
+ * TODO remove in 3.0
86
88
  * Formatter month and year
87
89
  */
88
90
  get: function () {
@@ -202,4 +204,4 @@ var TuiMonth = /** @class */ (function (_super) {
202
204
  return TuiMonth;
203
205
  }(TuiYear));
204
206
  export { TuiMonth };
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbIm1vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSDtJQUE4Qiw0QkFBTztJQUNqQzs7O09BR0c7SUFDSCxrQkFBWSxJQUFZLEVBQVcsS0FBYTtRQUFoRCxZQUNJLGtCQUFNLElBQUksQ0FBQyxTQUVkO1FBSGtDLFdBQUssR0FBTCxLQUFLLENBQVE7UUFFNUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDOztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBWSxHQUFuQixVQUFvQixJQUFZLEVBQUUsS0FBYTtRQUMzQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFpQixHQUF4QixVQUF5QixLQUFhLEVBQUUsVUFBbUI7UUFDdkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRCxRQUFRLEtBQUssRUFBRTtZQUNYO2dCQUNJLE9BQU8sVUFBVSxDQUFDLENB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O09BTUc7SUFDSCx5QkFBTSxHQUFOLFVBQU8sRUFBbUMsRUFBRSxTQUEwQjtZQUE5RCxZQUFRLEVBQVIsNkJBQVEsRUFBRSxhQUFTLEVBQVQsOEJBQVM7UUFBaUIsMEJBQUEsRUFBQSxpQkFBMEI7UUFDbEUsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDWCxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDZjtRQUVELElBQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFN0UsT0FBTyxJQUFJLFFBQVEsQ0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsRUFDeEMsV0FBVyxHQUFHLGNBQWMsQ0FDL0IsQ0FBQztJQUNOLENBQUM7SUFFRCwyQkFBUSxHQUFSO1FBQ0ksT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCx5QkFBTSxHQUFOO1FBQ0ksT0FBVSxpQkFBTSxNQUFNLFdBQUUsU0FBSSxJQUFJLENBQUMsa0JBQW9CLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0NBQWlCLEdBQWpCO1FBQ0ksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQ0FBZSxHQUFmO1FBQ0ksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNMLGVBQUM7QUFBRCxDQUFDLEFBaE5ELENBQThCLE9BQU8sR0FnTnBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aU1vbnRoTnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2VudW1zJztcbmltcG9ydCB7VHVpTW9udGhMaWtlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtwYWRTdGFydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHtpblJhbmdlLCBub3JtYWxpemVUb0ludE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcblxuaW1wb3J0IHtEQVlTX0lOX1dFRUssIE1BWF9NT05USCwgTUlOX01PTlRILCBNT05USFNfSU5fWUVBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlZZWFyfSBmcm9tICcuL3llYXInO1xuXG4vKipcbiAqIEltbXV0YWJsZSBvYmplY3QgY29uc2lzdGluZyBvZiB5ZWFyIGFuZCBtb250aFxuICovXG5leHBvcnQgY2xhc3MgVHVpTW9udGggZXh0ZW5kcyBUdWlZZWFyIGltcGxlbWVudHMgVHVpTW9udGhMaWtlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aCAoc3RhcnRpbmcgd2l0aCAwKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgcmVhZG9ubHkgbW9udGg6IG51bWJlcikge1xuICAgICAgICBzdXBlcih5ZWFyKTtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBtb250aCBhbmQgeWVhciBmb3IgdmFsaWRpdHlcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZE1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gVHVpWWVhci5pc1ZhbGlkWWVhcih5ZWFyKSAmJiBUdWlNb250aC5pc1ZhbGlkTW9udGhQYXJ0KG1vbnRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGhcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TW9udGhEYXlzQ291bnQobW9udGg6IG51bWJlciwgaXNMZWFwWWVhcjogYm9vbGVhbik6IG51bWJlciB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoUGFydChtb250aCkpO1xuXG4gICAgICAgIHN3aXRjaCAobW9udGgpIHtcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuRmVicnVhcnk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIgPyAyOSA6IDI4O1xuICAgICAgICAgICAgY2FzZSBUdWlNb250aE51bWJlci5BcHJpbDpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuSnVuZTpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuU2VwdGVtYmVyOlxuICAgICAgICAgICAgY2FzZSBUdWlNb250aE51bWJlci5Ob3ZlbWJlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gMzA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAzMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VycmVudCBtb250aCBhbmQgeWVhciBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKiBAbm9zaWRlZWZmZWN0c1xuICAgICAqL1xuICAgIHN0YXRpYyBjdXJyZW50TG9jYWwoKTogVHVpTW9udGgge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aU1vbnRoKG5hdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSwgbmF0aXZlRGF0ZS5nZXRNb250aCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgc3RhdGljIGN1cnJlbnRVdGMoKTogVHVpTW9udGgge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aU1vbnRoKG5hdGl2ZURhdGUuZ2V0VVRDRnVsbFllYXIoKSwgbmF0aXZlRGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbGVuZ3RoQmV0d2Vlbihmcm9tOiBUdWlNb250aCwgdG86IFR1aU1vbnRoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVGcm9tID0gZnJvbS5tb250aCArIGZyb20ueWVhciAqIDEyO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZVRvID0gdG8ubW9udGggKyB0by55ZWFyICogMTI7XG5cbiAgICAgICAgcmV0dXJuIGFic29sdXRlVG8gLSBhYnNvbHV0ZUZyb207XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplcyBudW1iZXIgYnkgY2xhbXBpbmcgaXQgYmV0d2VlbiBtaW4gYW5kIG1heCBtb250aFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgbm9ybWFsaXplTW9udGhQYXJ0KG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplVG9JbnROdW1iZXIobW9udGgsIE1JTl9NT05USCwgTUFYX01PTlRIKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBtb250aCBmb3IgdmFsaWRpdHlcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkTW9udGhQYXJ0KG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIobW9udGgpICYmIGluUmFuZ2UobW9udGgsIE1JTl9NT05USCwgTUFYX01PTlRIICsgMSk7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1hdHRlZE1vbnRoUGFydCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGFkU3RhcnQoKHRoaXMubW9udGggKyAxKS50b1N0cmluZygpLCAyLCAnMCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcm1hdHRlciBtb250aCBhbmQgeWVhclxuICAgICAqL1xuICAgIGdldCBmb3JtYXR0ZWRNb250aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXR0ZWRNb250aFBhcnR9LiR7dGhpcy5mb3JtYXR0ZWRZZWFyfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQgKHdpbGwgYmUgZGVsZXRlZCBzb29uKVxuICAgICAqXG4gICAgICogQ2FsY3VsYXRlcyBudW1iZXIgb2Ygd2Vla3MgaW4gYSBtb250aCAoY291bnRpbmcgbm9uLWZ1bGwgd2Vla3MpXG4gICAgICovXG4gICAgZ2V0IHdlZWtzUm93c0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoKHRoaXMubW9udGhTdGFydERheXNPZmZzZXQgKyB0aGlzLmRheXNDb3VudCkgLyBEQVlTX0lOX1dFRUspO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGF5cyBpbiBhIG1vbnRoXG4gICAgICovXG4gICAgZ2V0IGRheXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQodGhpcy5tb250aCwgdGhpcy5pc0xlYXBZZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBET05UIFVTRSBJVCAod2lsbCBiZSBkZWxldGVkIHNvb24pXG4gICAgICpcbiAgICAgKiBDb21wdXRlcyBkYXkgb2Ygd2VlayBvZmZzZXQgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgbW9udGhcbiAgICAgKi9cbiAgICBnZXQgbW9udGhTdGFydERheXNPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMueWVhclN0YXJ0RGF5c09mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBjdXJyZW50TW9udGggPSAwOyBjdXJyZW50TW9udGggPD0gdGhpcy5tb250aCAtIDE7IGN1cnJlbnRNb250aCsrKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQoY3VycmVudE1vbnRoLCB0aGlzLmlzTGVhcFllYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCAlIERBWVNfSU5fV0VFSztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGFmdGVyIGN1cnJlbnRcbiAgICAgKi9cbiAgICBtb250aEJlZm9yZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoIDwgYW5vdGhlci5tb250aClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGFmdGVyIG9yIHRoZSBzYW1lIGFzIGN1cnJlbnRcbiAgICAgKi9cbiAgICBtb250aFNhbWVPckJlZm9yZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoIDw9IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lKGFub3RoZXI6IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPT09IGFub3RoZXIubW9udGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBlaXRoZXIgYmVmb3JlIG9yIGVxdWFsIHRvIGN1cnJlbnRcbiAgICAgKi9cbiAgICBtb250aFNhbWVPckFmdGVyKGFub3RoZXI6IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnllYXJBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA+PSBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgYmVmb3JlIGN1cnJlbnRcbiAgICAgKi9cbiAgICBtb250aEFmdGVyKGFub3RoZXI6IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnllYXJBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA+IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgYGJhY2t3YXJkc2Agb3B0aW9uXG4gICAgLyoqXG4gICAgICogSW1tdXRhYmx5IGFsdGVycyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXRcbiAgICAgKiBAcGFyYW0gYmFja3dhcmRzIHNoaWZ0IGRhdGUgYmFja3dhcmRzXG4gICAgICogQHJldHVybiBuZXcgbW9udGggYW5kIHllYXIgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIGFwcGVuZCh7eWVhciA9IDAsIG1vbnRoID0gMH06IFR1aU1vbnRoTGlrZSwgYmFja3dhcmRzOiBib29sZWFuID0gZmFsc2UpOiBUdWlNb250aCB7XG4gICAgICAgIGlmIChiYWNrd2FyZHMpIHtcbiAgICAgICAgICAgIHllYXIgKj0gLTE7XG4gICAgICAgICAgICBtb250aCAqPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsTW9udGhzID0gKHRoaXMueWVhciArIHllYXIpICogTU9OVEhTX0lOX1lFQVIgKyB0aGlzLm1vbnRoICsgbW9udGg7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChcbiAgICAgICAgICAgIE1hdGguZmxvb3IodG90YWxNb250aHMgLyBNT05USFNfSU5fWUVBUiksXG4gICAgICAgICAgICB0b3RhbE1vbnRocyAlIE1PTlRIU19JTl9ZRUFSLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlZE1vbnRoO1xuICAgIH1cblxuICAgIHRvSlNPTigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7c3VwZXIudG9KU09OKCl9LSR7dGhpcy5mb3JtYXR0ZWRNb250aFBhcnR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbmF0aXZlIHtAbGluayBEYXRlfSBiYXNlZCBvbiBVVENcbiAgICAgKi9cbiAgICB0b1V0Y05hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0aGlzLnllYXIsIHRoaXMubW9udGgpKTtcbiAgICB9XG59XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbIm1vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSDtJQUE4Qiw0QkFBTztJQUNqQzs7O09BR0c7SUFDSCxrQkFBWSxJQUFZLEVBQVcsS0FBYTtRQUFoRCxZQUNJLGtCQUFNLElBQUksQ0FBQyxTQUVkO1FBSGtDLFdBQUssR0FBTCxLQUFLLENBQVE7UUFFNUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDOztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBWSxHQUFuQixVQUFvQixJQUFZLEVBQUUsS0FBYTtRQUMzQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFpQixHQUF4QixVQUF5QixLQUFhLEVBQUUsVUFBbUI7UUFDdkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRCxRQUFRLEtBQUssRUFBRTtZQUNYO2dCQUNJLE9BQU8sVUFBVSxDQUFDLENB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Q0gseUJBQU0sR0FBTixVQUFPLEVBQW1DLEVBQUUsU0FBMEI7WUFBOUQsWUFBUSxFQUFSLDZCQUFRLEVBQUUsYUFBUyxFQUFULDhCQUFTO1FBQWlCLDBCQUFBLEVBQUEsaUJBQTBCO1FBQ2xFLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2Y7UUFFRCxJQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRTdFLE9BQU8sSUFBSSxRQUFRLENBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLEVBQ3hDLFdBQVcsR0FBRyxjQUFjLENBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQseUJBQU0sR0FBTjtRQUNJLE9BQVUsaUJBQU0sTUFBTSxXQUFFLFNBQUksSUFBSSxDQUFDLGtCQUFvQixDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNILG9DQUFpQixHQUFqQjtRQUNJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0NBQWUsR0FBZjtRQUNJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDTCxlQUFDO0FBQUQsQ0FBQyxBQWxORCxDQUE4QixPQUFPLEdBa05wQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlNb250aE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9lbnVtcyc7XG5pbXBvcnQge1R1aU1vbnRoTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7cGFkU3RhcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7aW5SYW5nZSwgbm9ybWFsaXplVG9JbnROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5cbmltcG9ydCB7REFZU19JTl9XRUVLLCBNQVhfTU9OVEgsIE1JTl9NT05USCwgTU9OVEhTX0lOX1lFQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpWWVhcn0gZnJvbSAnLi95ZWFyJztcblxuLyoqXG4gKiBJbW11dGFibGUgb2JqZWN0IGNvbnNpc3Rpbmcgb2YgeWVhciBhbmQgbW9udGhcbiAqL1xuZXhwb3J0IGNsYXNzIFR1aU1vbnRoIGV4dGVuZHMgVHVpWWVhciBpbXBsZW1lbnRzIFR1aU1vbnRoTGlrZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGggKHN0YXJ0aW5nIHdpdGggMClcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIHJlYWRvbmx5IG1vbnRoOiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoeWVhcik7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggYW5kIHllYXIgZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikgJiYgVHVpTW9udGguaXNWYWxpZE1vbnRoUGFydChtb250aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoXG4gICAgICovXG4gICAgc3RhdGljIGdldE1vbnRoRGF5c0NvdW50KG1vbnRoOiBudW1iZXIsIGlzTGVhcFllYXI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aU1vbnRoLmlzVmFsaWRNb250aFBhcnQobW9udGgpKTtcblxuICAgICAgICBzd2l0Y2ggKG1vbnRoKSB7XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkZlYnJ1YXJ5OlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0xlYXBZZWFyID8gMjkgOiAyODtcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuQXByaWw6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkp1bmU6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLlNlcHRlbWJlcjpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuTm92ZW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gMzE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICogQG5vc2lkZWVmZmVjdHNcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0TW9udGgoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJhc2VkIG9uIFVUQ1xuICAgICAqL1xuICAgIHN0YXRpYyBjdXJyZW50VXRjKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGxlbmd0aEJldHdlZW4oZnJvbTogVHVpTW9udGgsIHRvOiBUdWlNb250aCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGFic29sdXRlRnJvbSA9IGZyb20ubW9udGggKyBmcm9tLnllYXIgKiAxMjtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVUbyA9IHRvLm1vbnRoICsgdG8ueWVhciAqIDEyO1xuXG4gICAgICAgIHJldHVybiBhYnNvbHV0ZVRvIC0gYWJzb2x1dGVGcm9tO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZXMgbnVtYmVyIGJ5IGNsYW1waW5nIGl0IGJldHdlZW4gbWluIGFuZCBtYXggbW9udGhcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIG5vcm1hbGl6ZU1vbnRoUGFydChtb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVRvSW50TnVtYmVyKG1vbnRoLCBNSU5fTU9OVEgsIE1BWF9NT05USCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZE1vbnRoUGFydChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSAmJiBpblJhbmdlKG1vbnRoLCBNSU5fTU9OVEgsIE1BWF9NT05USCArIDEpO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRNb250aFBhcnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KFN0cmluZyh0aGlzLm1vbnRoICsgMSksIDIsICcwJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBUT0RPIHJlbW92ZSBpbiAzLjBcbiAgICAgKiBGb3JtYXR0ZXIgbW9udGggYW5kIHllYXJcbiAgICAgKi9cbiAgICBnZXQgZm9ybWF0dGVkTW9udGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0dGVkTW9udGhQYXJ0fS4ke3RoaXMuZm9ybWF0dGVkWWVhcn1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUICh3aWxsIGJlIGRlbGV0ZWQgc29vbilcbiAgICAgKlxuICAgICAqIENhbGN1bGF0ZXMgbnVtYmVyIG9mIHdlZWtzIGluIGEgbW9udGggKGNvdW50aW5nIG5vbi1mdWxsIHdlZWtzKVxuICAgICAqL1xuICAgIGdldCB3ZWVrc1Jvd3NDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCh0aGlzLm1vbnRoU3RhcnREYXlzT2Zmc2V0ICsgdGhpcy5kYXlzQ291bnQpIC8gREFZU19JTl9XRUVLKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheXMgaW4gYSBtb250aFxuICAgICAqL1xuICAgIGdldCBkYXlzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KHRoaXMubW9udGgsIHRoaXMuaXNMZWFwWWVhcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQgKHdpbGwgYmUgZGVsZXRlZCBzb29uKVxuICAgICAqXG4gICAgICogQ29tcHV0ZXMgZGF5IG9mIHdlZWsgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1vbnRoXG4gICAgICovXG4gICAgZ2V0IG1vbnRoU3RhcnREYXlzT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnllYXJTdGFydERheXNPZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgY3VycmVudE1vbnRoID0gMDsgY3VycmVudE1vbnRoIDw9IHRoaXMubW9udGggLSAxOyBjdXJyZW50TW9udGgrKykge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KGN1cnJlbnRNb250aCwgdGhpcy5pc0xlYXBZZWFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQgJSBEQVlTX0lOX1dFRUs7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBvciB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8PSBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIG1vbnRoU2FtZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoID09PSBhbm90aGVyLm1vbnRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgZWl0aGVyIGJlZm9yZSBvciBlcXVhbCB0byBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lT3JBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPj0gYW5vdGhlci5tb250aClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGJlZm9yZSBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPiBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IENvbnNpZGVyIHJlbW92aW5nIGBiYWNrd2FyZHNgIG9wdGlvblxuICAgIC8qKlxuICAgICAqIEltbXV0YWJseSBhbHRlcnMgY3VycmVudCBtb250aCBhbmQgeWVhciBieSBwYXNzZWQgb2Zmc2V0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHBhcmFtIGJhY2t3YXJkcyBzaGlmdCBkYXRlIGJhY2t3YXJkc1xuICAgICAqIEByZXR1cm4gbmV3IG1vbnRoIGFuZCB5ZWFyIG9iamVjdCBhcyBhIHJlc3VsdCBvZiBvZmZzZXR0aW5nIGN1cnJlbnRcbiAgICAgKi9cbiAgICBhcHBlbmQoe3llYXIgPSAwLCBtb250aCA9IDB9OiBUdWlNb250aExpa2UsIGJhY2t3YXJkczogYm9vbGVhbiA9IGZhbHNlKTogVHVpTW9udGgge1xuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICAgICAgbW9udGggKj0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3RhbE1vbnRocyA9ICh0aGlzLnllYXIgKyB5ZWFyKSAqIE1PTlRIU19JTl9ZRUFSICsgdGhpcy5tb250aCArIG1vbnRoO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpTW9udGgoXG4gICAgICAgICAgICBNYXRoLmZsb29yKHRvdGFsTW9udGhzIC8gTU9OVEhTX0lOX1lFQVIpLFxuICAgICAgICAgICAgdG90YWxNb250aHMgJSBNT05USFNfSU5fWUVBUixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZWRNb250aDtcbiAgICB9XG5cbiAgICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3N1cGVyLnRvSlNPTigpfS0ke3RoaXMuZm9ybWF0dGVkTW9udGhQYXJ0fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHRvTG9jYWxOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoKSk7XG4gICAgfVxufVxuIl19
@@ -115,9 +115,9 @@ var TuiTime = /** @class */ (function () {
115
115
  };
116
116
  TuiTime.prototype.formatTime = function (time, digits) {
117
117
  if (digits === void 0) { digits = 2; }
118
- return padStart(time.toString(), digits, '0');
118
+ return padStart(String(time), digits, '0');
119
119
  };
120
120
  return TuiTime;
121
121
  }());
122
122
  export { TuiTime };
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lLyIsInNvdXJjZXMiOlsidGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVqRCxPQUFPLEVBQ0gsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixpQkFBaUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFFckI7O0dBRUc7QUFDSDtJQUNJLGlCQUNhLEtBQWEsRUFDYixPQUFlLEVBQ2YsT0FBbUIsRUFDbkIsRUFBYztRQURkLHdCQUFBLEVBQUEsV0FBbUI7UUFDbkIsbUJBQUEsRUFBQSxNQUFjO1FBSGQsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFFdkIsU0FBUyxDQUFDLE1BQU0sQ0FDWixPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUNoRCw2QkFBNkIsRUFDN0IsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsRUFBRSxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBVyxHQUFsQixVQUNJLEtBQWEsRUFDYixPQUFlLEVBQ2YsT0FBbUIsRUFDbkIsRUFBYztRQURkLHdCQUFBLEVBQUEsV0FBbUI7UUFDbkIsbUJBQUEsRUFBQSxNQUFjO1FBRWQsT0FBTyxDQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFL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YUFDOUQsTUFBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFBLENBQzFELENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCx3Q0FBc0IsR0FBdEI7UUFDSSxPQUFPLENBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxvQkFBb0I7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxzQkFBc0I7WUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJO1lBQ25CLElBQUksQ0FBQyxFQUFFLENBQ1YsQ0FBQztJQUNOLENBQUM7SUFFTyw0QkFBVSxHQUFsQixVQUFtQixJQUFZLEVBQUUsTUFBa0I7UUFBbEIsdUJBQUEsRUFBQSxVQUFrQjtRQUMvQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDTCxjQUFDO0FBQUQsQ0FBQyxBQXJLRCxJQXFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlUaW1lTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7VHVpVGltZU1vZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtwYWRTdGFydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHtpblJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge1xuICAgIEhPVVJTX0lOX0RBWSxcbiAgICBNSUxMSVNFQ09ORFNfSU5fREFZLFxuICAgIE1JTExJU0VDT05EU19JTl9IT1VSLFxuICAgIE1JTExJU0VDT05EU19JTl9NSU5VVEUsXG4gICAgTUlOVVRFU19JTl9IT1VSLFxuICAgIFNFQ09ORFNfSU5fTUlOVVRFLFxufSBmcm9tICcuL2RhdGUtdGltZSc7XG5cbi8qKlxuICogSW1tdXRhYmxlIHRpbWUgb2JqZWN0IHdpdGggaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgYW5kIG1zXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlUaW1lIGltcGxlbWVudHMgVHVpVGltZUxpa2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBob3VyczogbnVtYmVyLFxuICAgICAgICByZWFkb25seSBtaW51dGVzOiBudW1iZXIsXG4gICAgICAgIHJlYWRvbmx5IHNlY29uZHM6IG51bWJlciA9IDAsXG4gICAgICAgIHJlYWRvbmx5IG1zOiBudW1iZXIgPSAwLFxuICAgICkge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFxuICAgICAgICAgICAgVHVpVGltZS5pc1ZhbGlkVGltZShob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpLFxuICAgICAgICAgICAgJ1RpbWUgbXVzdCBiZSByZWFsLCBidXQgZ290OicsXG4gICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgbXMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRpbWUgaXMgdmFsaWRcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFRpbWUoXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kczogbnVtYmVyID0gMCxcbiAgICAgICAgbXM6IG51bWJlciA9IDAsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKGhvdXJzKSAmJlxuICAgICAgICAgICAgaW5SYW5nZShob3VycywgMCwgSE9VUlNfSU5fREFZKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihtaW51dGVzKSAmJlxuICAgICAgICAgICAgaW5SYW5nZShtaW51dGVzLCAwLCBNSU5VVEVTX0lOX0hPVVIpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKHNlY29uZHMpICYmXG4gICAgICAgICAgICBpblJhbmdlKHNlY29uZHMsIDAsIFNFQ09ORFNfSU5fTUlOVVRFKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihtcykgJiZcbiAgICAgICAgICAgIGluUmFuZ2UobXMsIDAsIDEwMDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBVVEMgdGltZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudCgpOiBUdWlUaW1lIHtcbiAgICAgICAgcmV0dXJuIFR1aVRpbWUuZnJvbUFic29sdXRlTWlsbGlzZWNvbmRzKERhdGUubm93KCkgJSBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHRpbWUgaW4gbG9jYWwgdGltZXpvbmVcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aVRpbWUge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcblxuICAgICAgICByZXR1cm4gVHVpVGltZS5mcm9tQWJzb2x1dGVNaWxsaXNlY29uZHMoXG4gICAgICAgICAgICAoRGF0ZS5ub3coKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUpICVcbiAgICAgICAgICAgICAgICBNSUxMSVNFQ09ORFNfSU5fREFZLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgVHVpVGltZSBmcm9tIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tQWJzb2x1dGVNaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzOiBudW1iZXIpOiBUdWlUaW1lIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1pbGxpc2Vjb25kcykpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFxuICAgICAgICAgICAgaW5SYW5nZShtaWxsaXNlY29uZHMsIDAsIE1JTExJU0VDT05EU19JTl9EQVkpLFxuICAgICAgICAgICAgYE1pbGxpc2Vjb25kcyBtdXN0IGJlIGJlbG93ICR7TUlMTElTRUNPTkRTX0lOX0RBWX0gKG1pbGxpc2Vjb25kcyBpbiBhIGRheSkuYCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gTUlMTElTRUNPTkRTX0lOX0hPVVIpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihcbiAgICAgICAgICAgIChtaWxsaXNlY29uZHMgJSBNSUxMSVNFQ09ORFNfSU5fSE9VUikgLyBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzZWNvbmRzID1cbiAgICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgKChtaWxsaXNlY29uZHMgJSBNSUxMSVNFQ09ORFNfSU5fSE9VUikgJSBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKSAvIDEwMDAsXG4gICAgICAgICAgICApIHx8IDA7XG4gICAgICAgIGNvbnN0IG1zID1cbiAgICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgKChtaWxsaXNlY29uZHMgJSBNSUxMSVNFQ09ORFNfSU5fSE9VUikgJSBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKSAlIDEwMDAsXG4gICAgICAgICAgICApIHx8IDA7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHN0cmluZyBpbnRvIFR1aVRpbWUgb2JqZWN0XG4gICAgICovXG4gICAgc3RhdGljIGZyb21TdHJpbmcodGltZTogc3RyaW5nKTogVHVpVGltZSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHRpbWUuc2xpY2UoMCwgMikpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKHRpbWUuc2xpY2UoMywgNSkpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTnVtYmVyKHRpbWUuc2xpY2UoNiwgOCkpIHx8IDA7XG4gICAgICAgIGNvbnN0IG1zID0gTnVtYmVyKHRpbWUuc2xpY2UoOSwgMTIpKSB8fCAwO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpVGltZShob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIERhdGUgb2JqZWN0IGludG8gVHVpVGltZVxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgc3RhdGljIGZyb21Mb2NhbE5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IFR1aVRpbWUge1xuICAgICAgICByZXR1cm4gbmV3IFR1aVRpbWUoXG4gICAgICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaGlmdHMgdGltZSBieSBob3VycyBhbmQgbWludXRlc1xuICAgICAqL1xuICAgIHNoaWZ0KHtob3VycyA9IDAsIG1pbnV0ZXMgPSAwLCBzZWNvbmRzID0gMCwgbXMgPSAwfTogVHVpVGltZUxpa2UpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgbmV3TXMgPSAoMTAwMCArIHRoaXMubXMgKyAobXMgJSAxMDAwKSkgJSAxMDAwO1xuXG4gICAgICAgIGNvbnN0IHNlY29uZHNJbk1zID0gbXMgPCAwID8gTWF0aC5jZWlsKG1zIC8gMTAwMCkgOiBNYXRoLmZsb29yKG1zIC8gMTAwMCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHNUb0FkZCA9IHNlY29uZHNJbk1zICsgc2Vjb25kcztcbiAgICAgICAgY29uc3QgbmV3U2Vjb25kcyA9ICg2MCArIHRoaXMuc2Vjb25kcyArIChzZWNvbmRzVG9BZGQgJSA2MCkpICUgNjA7XG5cbiAgICAgICAgY29uc3QgbWludXRlc0luU2Vjb25kcyA9XG4gICAgICAgICAgICBzZWNvbmRzVG9BZGQgPCAwXG4gICAgICAgICAgICAgICAgPyBNYXRoLmNlaWwoc2Vjb25kc1RvQWRkIC8gNjApXG4gICAgICAgICAgICAgICAgOiBNYXRoLmZsb29yKHNlY29uZHNUb0FkZCAvIDYwKTtcbiAgICAgICAgY29uc3QgbWludXRlc1RvQWRkID0gbWludXRlc0luU2Vjb25kcyArIG1pbnV0ZXM7XG4gICAgICAgIGNvbnN0IG5ld01pbnV0ZXMgPSAoNjAgKyB0aGlzLm1pbnV0ZXMgKyAobWludXRlc1RvQWRkICUgNjApKSAlIDYwO1xuXG4gICAgICAgIGNvbnN0IGhvdXJzSW5NaW51dGVzID1cbiAgICAgICAgICAgIG1pbnV0ZXNUb0FkZCA8IDBcbiAgICAgICAgICAgICAgICA/IE1hdGguY2VpbChtaW51dGVzVG9BZGQgLyA2MClcbiAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3IobWludXRlc1RvQWRkIC8gNjApO1xuICAgICAgICBjb25zdCBob3Vyc1RvQWRkID0gaG91cnNJbk1pbnV0ZXMgKyBob3VycztcbiAgICAgICAgY29uc3QgbmV3SG91cnMgPSAoMjQgKyB0aGlzLmhvdXJzICsgKGhvdXJzVG9BZGQgJSAyNCkpICUgMjQ7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlUaW1lKG5ld0hvdXJzLCBuZXdNaW51dGVzLCBuZXdTZWNvbmRzLCBuZXdNcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgVHVpVGltZSB0byBzdHJpbmdcbiAgICAgKi9cbiAgICB0b1N0cmluZyhtb2RlPzogVHVpVGltZU1vZGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBuZWVkQWRkTXMgPSBtb2RlID09PSAnSEg6TU06U1MuTVNTJyB8fCAoIW1vZGUgJiYgdGhpcy5tcyA+IDApO1xuICAgICAgICBjb25zdCBuZWVkQWRkU2Vjb25kcyA9XG4gICAgICAgICAgICBuZWVkQWRkTXMgfHwgbW9kZSA9PT0gJ0hIOk1NOlNTJyB8fCAoIW1vZGUgJiYgdGhpcy5zZWNvbmRzID4gMCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGAke3RoaXMuZm9ybWF0VGltZSh0aGlzLmhvdXJzKX06JHt0aGlzLmZvcm1hdFRpbWUodGhpcy5taW51dGVzKX1gICtcbiAgICAgICAgICAgIGAke25lZWRBZGRTZWNvbmRzID8gJzonICsgdGhpcy5mb3JtYXRUaW1lKHRoaXMuc2Vjb25kcykgOiAnJ31gICtcbiAgICAgICAgICAgIGAke25lZWRBZGRNcyA/ICcuJyArIHRoaXMuZm9ybWF0VGltZSh0aGlzLm1zLCAzKSA6ICcnfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBUdWlUaW1lIHRvIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUiArXG4gICAgICAgICAgICB0aGlzLm1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFICtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kcyAqIDEwMDAgK1xuICAgICAgICAgICAgdGhpcy5tc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0VGltZSh0aW1lOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyID0gMik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYWRTdGFydCh0aW1lLnRvU3RyaW5nKCksIGRpZ2l0cywgJzAnKTtcbiAgICB9XG59XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lLyIsInNvdXJjZXMiOlsidGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVqRCxPQUFPLEVBQ0gsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixpQkFBaUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFFckI7O0dBRUc7QUFDSDtJQUNJLGlCQUNhLEtBQWEsRUFDYixPQUFlLEVBQ2YsT0FBbUIsRUFDbkIsRUFBYztRQURkLHdCQUFBLEVBQUEsV0FBbUI7UUFDbkIsbUJBQUEsRUFBQSxNQUFjO1FBSGQsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFFdkIsU0FBUyxDQUFDLE1BQU0sQ0FDWixPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUNoRCw2QkFBNkIsRUFDN0IsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsRUFBRSxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBVyxHQUFsQixVQUNJLEtBQWEsRUFDYixPQUFlLEVBQ2YsT0FBbUIsRUFDbkIsRUFBYztRQURkLHdCQUFBLEVBQUEsV0FBbUI7UUFDbkIsbUJBQUEsRUFBQSxNQUFjO1FBRWQsT0FBTyxDQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQztZQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN6QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUM7WUFDcEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDekIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsaUJBQWlCLENBQUM7WUFDdEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ3ZCLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFPLEdBQWQ7UUFDSSxPQUFPLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBWSxHQUFuQjtRQUNJLElBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFeEIsT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQ25DLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLHNCQUFzQixDQUFDO1lBQzVELG1CQUFtQixDQUMxQixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0NBQXdCLEdBQS9CLFVBQWdDLFlBQW9CO1FBQ2hELFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxNQUFNLENBQ1osT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsRUFDN0MsZ0NBQThCLG1CQUFtQiw4QkFBMkIsQ0FDL0UsQ0FBQztRQUVGLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFDLENBQUM7UUFDOUQsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEIsQ0FBQyxZQUFZLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxzQkFBc0IsQ0FDakUsQ0FBQztRQUNGLElBQU0sT0FBTyxHQUNULElBQUksQ0FBQyxLQUFLLENBQ04sQ0FBQyxDQUFDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUMxRSxJQUFJLENBQUMsQ0FBQztRQUNYLElBQU0sRUFBRSxHQUNKLElBQUksQ0FBQyxLQUFLLENBQ04sQ0FBQyxDQUFDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUMxRSxJQUFJLENBQUMsQ0FBQztRQUVYLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixJQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLDJCQUFtQixHQUExQixVQUEyQixJQUFVO1FBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBSyxHQUFMLFVBQU0sRUFBMEQ7WUFBekQsYUFBUyxFQUFULDhCQUFTLEVBQUUsZUFBVyxFQUFYLGdDQUFXLEVBQUUsZUFBVyxFQUFYLGdDQUFXLEVBQUUsVUFBTSxFQUFOLDJCQUFNO1FBQzlDLElBQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFcEQsSUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFFLElBQU0sWUFBWSxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDM0MsSUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVsRSxJQUFNLGdCQUFnQixHQUNsQixZQUFZLEdBQUcsQ0FBQztZQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQU0sWUFBWSxHQUFHLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUNoRCxJQUFNLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxFLElBQU0sY0FBYyxHQUNoQixZQUFZLEdBQUcsQ0FBQztZQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQU0sVUFBVSxHQUFHLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDMUMsSUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU1RCxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILDBCQUFRLEdBQVIsVUFBUyxJQUFrQjtRQUN2QixJQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssY0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFNLGNBQWMsR0FDaEIsU0FBUyxJQUFJLElBQUksS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBFLE9BQU8sQ0FDQSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUc7YUFDakUsTUFBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUE7YUFDOUQsTUFBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFBLENBQzFELENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCx3Q0FBc0IsR0FBdEI7UUFDSSxPQUFPLENBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxvQkFBb0I7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxzQkFBc0I7WUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJO1lBQ25CLElBQUksQ0FBQyxFQUFFLENBQ1YsQ0FBQztJQUNOLENBQUM7SUFFTyw0QkFBVSxHQUFsQixVQUFtQixJQUFZLEVBQUUsTUFBa0I7UUFBbEIsdUJBQUEsRUFBQSxVQUFrQjtRQUMvQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDTCxjQUFDO0FBQUQsQ0FBQyxBQXJLRCxJQXFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlUaW1lTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7VHVpVGltZU1vZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtwYWRTdGFydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHtpblJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge1xuICAgIEhPVVJTX0lOX0RBWSxcbiAgICBNSUxMSVNFQ09ORFNfSU5fREFZLFxuICAgIE1JTExJU0VDT05EU19JTl9IT1VSLFxuICAgIE1JTExJU0VDT05EU19JTl9NSU5VVEUsXG4gICAgTUlOVVRFU19JTl9IT1VSLFxuICAgIFNFQ09ORFNfSU5fTUlOVVRFLFxufSBmcm9tICcuL2RhdGUtdGltZSc7XG5cbi8qKlxuICogSW1tdXRhYmxlIHRpbWUgb2JqZWN0IHdpdGggaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgYW5kIG1zXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlUaW1lIGltcGxlbWVudHMgVHVpVGltZUxpa2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBob3VyczogbnVtYmVyLFxuICAgICAgICByZWFkb25seSBtaW51dGVzOiBudW1iZXIsXG4gICAgICAgIHJlYWRvbmx5IHNlY29uZHM6IG51bWJlciA9IDAsXG4gICAgICAgIHJlYWRvbmx5IG1zOiBudW1iZXIgPSAwLFxuICAgICkge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFxuICAgICAgICAgICAgVHVpVGltZS5pc1ZhbGlkVGltZShob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpLFxuICAgICAgICAgICAgJ1RpbWUgbXVzdCBiZSByZWFsLCBidXQgZ290OicsXG4gICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgbXMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRpbWUgaXMgdmFsaWRcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFRpbWUoXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kczogbnVtYmVyID0gMCxcbiAgICAgICAgbXM6IG51bWJlciA9IDAsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKGhvdXJzKSAmJlxuICAgICAgICAgICAgaW5SYW5nZShob3VycywgMCwgSE9VUlNfSU5fREFZKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihtaW51dGVzKSAmJlxuICAgICAgICAgICAgaW5SYW5nZShtaW51dGVzLCAwLCBNSU5VVEVTX0lOX0hPVVIpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKHNlY29uZHMpICYmXG4gICAgICAgICAgICBpblJhbmdlKHNlY29uZHMsIDAsIFNFQ09ORFNfSU5fTUlOVVRFKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihtcykgJiZcbiAgICAgICAgICAgIGluUmFuZ2UobXMsIDAsIDEwMDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBVVEMgdGltZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudCgpOiBUdWlUaW1lIHtcbiAgICAgICAgcmV0dXJuIFR1aVRpbWUuZnJvbUFic29sdXRlTWlsbGlzZWNvbmRzKERhdGUubm93KCkgJSBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHRpbWUgaW4gbG9jYWwgdGltZXpvbmVcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aVRpbWUge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcblxuICAgICAgICByZXR1cm4gVHVpVGltZS5mcm9tQWJzb2x1dGVNaWxsaXNlY29uZHMoXG4gICAgICAgICAgICAoRGF0ZS5ub3coKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUpICVcbiAgICAgICAgICAgICAgICBNSUxMSVNFQ09ORFNfSU5fREFZLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgVHVpVGltZSBmcm9tIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tQWJzb2x1dGVNaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzOiBudW1iZXIpOiBUdWlUaW1lIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1pbGxpc2Vjb25kcykpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFxuICAgICAgICAgICAgaW5SYW5nZShtaWxsaXNlY29uZHMsIDAsIE1JTExJU0VDT05EU19JTl9EQVkpLFxuICAgICAgICAgICAgYE1pbGxpc2Vjb25kcyBtdXN0IGJlIGJlbG93ICR7TUlMTElTRUNPTkRTX0lOX0RBWX0gKG1pbGxpc2Vjb25kcyBpbiBhIGRheSkuYCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gTUlMTElTRUNPTkRTX0lOX0hPVVIpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihcbiAgICAgICAgICAgIChtaWxsaXNlY29uZHMgJSBNSUxMSVNFQ09ORFNfSU5fSE9VUikgLyBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzZWNvbmRzID1cbiAgICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgKChtaWxsaXNlY29uZHMgJSBNSUxMSVNFQ09ORFNfSU5fSE9VUikgJSBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKSAvIDEwMDAsXG4gICAgICAgICAgICApIHx8IDA7XG4gICAgICAgIGNvbnN0IG1zID1cbiAgICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgKChtaWxsaXNlY29uZHMgJSBNSUxMSVNFQ09ORFNfSU5fSE9VUikgJSBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKSAlIDEwMDAsXG4gICAgICAgICAgICApIHx8IDA7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHN0cmluZyBpbnRvIFR1aVRpbWUgb2JqZWN0XG4gICAgICovXG4gICAgc3RhdGljIGZyb21TdHJpbmcodGltZTogc3RyaW5nKTogVHVpVGltZSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHRpbWUuc2xpY2UoMCwgMikpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKHRpbWUuc2xpY2UoMywgNSkpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTnVtYmVyKHRpbWUuc2xpY2UoNiwgOCkpIHx8IDA7XG4gICAgICAgIGNvbnN0IG1zID0gTnVtYmVyKHRpbWUuc2xpY2UoOSwgMTIpKSB8fCAwO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpVGltZShob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIERhdGUgb2JqZWN0IGludG8gVHVpVGltZVxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgc3RhdGljIGZyb21Mb2NhbE5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IFR1aVRpbWUge1xuICAgICAgICByZXR1cm4gbmV3IFR1aVRpbWUoXG4gICAgICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaGlmdHMgdGltZSBieSBob3VycyBhbmQgbWludXRlc1xuICAgICAqL1xuICAgIHNoaWZ0KHtob3VycyA9IDAsIG1pbnV0ZXMgPSAwLCBzZWNvbmRzID0gMCwgbXMgPSAwfTogVHVpVGltZUxpa2UpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgbmV3TXMgPSAoMTAwMCArIHRoaXMubXMgKyAobXMgJSAxMDAwKSkgJSAxMDAwO1xuXG4gICAgICAgIGNvbnN0IHNlY29uZHNJbk1zID0gbXMgPCAwID8gTWF0aC5jZWlsKG1zIC8gMTAwMCkgOiBNYXRoLmZsb29yKG1zIC8gMTAwMCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHNUb0FkZCA9IHNlY29uZHNJbk1zICsgc2Vjb25kcztcbiAgICAgICAgY29uc3QgbmV3U2Vjb25kcyA9ICg2MCArIHRoaXMuc2Vjb25kcyArIChzZWNvbmRzVG9BZGQgJSA2MCkpICUgNjA7XG5cbiAgICAgICAgY29uc3QgbWludXRlc0luU2Vjb25kcyA9XG4gICAgICAgICAgICBzZWNvbmRzVG9BZGQgPCAwXG4gICAgICAgICAgICAgICAgPyBNYXRoLmNlaWwoc2Vjb25kc1RvQWRkIC8gNjApXG4gICAgICAgICAgICAgICAgOiBNYXRoLmZsb29yKHNlY29uZHNUb0FkZCAvIDYwKTtcbiAgICAgICAgY29uc3QgbWludXRlc1RvQWRkID0gbWludXRlc0luU2Vjb25kcyArIG1pbnV0ZXM7XG4gICAgICAgIGNvbnN0IG5ld01pbnV0ZXMgPSAoNjAgKyB0aGlzLm1pbnV0ZXMgKyAobWludXRlc1RvQWRkICUgNjApKSAlIDYwO1xuXG4gICAgICAgIGNvbnN0IGhvdXJzSW5NaW51dGVzID1cbiAgICAgICAgICAgIG1pbnV0ZXNUb0FkZCA8IDBcbiAgICAgICAgICAgICAgICA/IE1hdGguY2VpbChtaW51dGVzVG9BZGQgLyA2MClcbiAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3IobWludXRlc1RvQWRkIC8gNjApO1xuICAgICAgICBjb25zdCBob3Vyc1RvQWRkID0gaG91cnNJbk1pbnV0ZXMgKyBob3VycztcbiAgICAgICAgY29uc3QgbmV3SG91cnMgPSAoMjQgKyB0aGlzLmhvdXJzICsgKGhvdXJzVG9BZGQgJSAyNCkpICUgMjQ7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlUaW1lKG5ld0hvdXJzLCBuZXdNaW51dGVzLCBuZXdTZWNvbmRzLCBuZXdNcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgVHVpVGltZSB0byBzdHJpbmdcbiAgICAgKi9cbiAgICB0b1N0cmluZyhtb2RlPzogVHVpVGltZU1vZGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBuZWVkQWRkTXMgPSBtb2RlID09PSAnSEg6TU06U1MuTVNTJyB8fCAoIW1vZGUgJiYgdGhpcy5tcyA+IDApO1xuICAgICAgICBjb25zdCBuZWVkQWRkU2Vjb25kcyA9XG4gICAgICAgICAgICBuZWVkQWRkTXMgfHwgbW9kZSA9PT0gJ0hIOk1NOlNTJyB8fCAoIW1vZGUgJiYgdGhpcy5zZWNvbmRzID4gMCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGAke3RoaXMuZm9ybWF0VGltZSh0aGlzLmhvdXJzKX06JHt0aGlzLmZvcm1hdFRpbWUodGhpcy5taW51dGVzKX1gICtcbiAgICAgICAgICAgIGAke25lZWRBZGRTZWNvbmRzID8gJzonICsgdGhpcy5mb3JtYXRUaW1lKHRoaXMuc2Vjb25kcykgOiAnJ31gICtcbiAgICAgICAgICAgIGAke25lZWRBZGRNcyA/ICcuJyArIHRoaXMuZm9ybWF0VGltZSh0aGlzLm1zLCAzKSA6ICcnfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBUdWlUaW1lIHRvIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUiArXG4gICAgICAgICAgICB0aGlzLm1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFICtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kcyAqIDEwMDAgK1xuICAgICAgICAgICAgdGhpcy5tc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0VGltZSh0aW1lOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyID0gMik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYWRTdGFydChTdHJpbmcodGltZSksIGRpZ2l0cywgJzAnKTtcbiAgICB9XG59XG4iXX0=
@@ -61,7 +61,7 @@ var TuiYear = /** @class */ (function () {
61
61
  };
62
62
  Object.defineProperty(TuiYear.prototype, "formattedYear", {
63
63
  get: function () {
64
- return padStart(this.year.toString(), 4, '0');
64
+ return padStart(String(this.year), 4, '0');
65
65
  },
66
66
  enumerable: true,
67
67
  configurable: true
@@ -154,4 +154,4 @@ var TuiYear = /** @class */ (function () {
154
154
  return TuiYear;
155
155
  }());
156
156
  export { TuiYear };
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lLyIsInNvdXJjZXMiOlsieWVhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLFFBQVEsR0FDWCxNQUFNLGFBQWEsQ0FBQztBQUVyQjs7O0dBR0c7QUFDSDtJQUNJLGlCQUFxQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUM3QixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBVyxHQUFsQixVQUFtQixJQUFZO1FBQzNCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSw0QkFBb0IsR0FBM0IsVUFBNEIsSUFB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QUksR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELDZDQUE2QztJQUM3Qzs7T0FFRztJQUNILHdCQUFNLEdBQU4sVUFBTyxFQUF1QixFQUFFLFNBQTBCO1lBQWxELFlBQVEsRUFBUiw2QkFBUTtRQUFnQiwwQkFBQSxFQUFBLGlCQUEwQjtRQUN0RCxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6QyxJQUFJLFNBQVMsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNkO1FBRUQsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFcEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsMEJBQVEsR0FBUjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsd0JBQU0sR0FBTjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBQ0wsY0FBQztBQUFELENBQUMsQUFwSkQsSUFvSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3R1aUFzc2VydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VHVpWWVhckxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvaW50ZXJmYWNlcyc7XG5pbXBvcnQge3BhZFN0YXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQge2luUmFuZ2UsIG5vcm1hbGl6ZVRvSW50TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge1xuICAgIERBWVNfSU5fTEVBUF9ZRUFSLFxuICAgIERBWVNfSU5fTk9STUFMX1lFQVIsXG4gICAgREFZU19JTl9XRUVLLFxuICAgIE1BWF9ZRUFSLFxuICAgIE1JTl9ZRUFSLFxufSBmcm9tICcuL2RhdGUtdGltZSc7XG5cbi8qKlxuICogSW1tdXRhYmxlIHllYXIgb2JqZWN0XG4gKiBAbm9zaWRlZWZmZWN0c1xuICovXG5leHBvcnQgY2xhc3MgVHVpWWVhciBpbXBsZW1lbnRzIFR1aVllYXJMaWtlIHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSB5ZWFyOiBudW1iZXIpIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgeWVhciBmb3IgdmFsaWRpdHlcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHllYXIpICYmIGluUmFuZ2UoeWVhciwgTUlOX1lFQVIsIE1BWF9ZRUFSICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgcGFzc2VkIHllYXIgaXMgYSBsZWFwIHllYXJcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpKTtcblxuICAgICAgICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbW91bnQgb2YgbGVhcCB5ZWFycyBmcm9tIHllYXIgMCB0byB0aGUgcGFzc2VkIG9uZVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRBYnNvbHV0ZUxlYXBZZWFycyh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikpO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoeWVhciAvIDQwMCkgKyAoTWF0aC5jZWlsKHllYXIgLyA0KSAtIE1hdGguY2VpbCh5ZWFyIC8gMTAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQgKHdpbGwgYmUgZGVsZXRlZCBzb29uKVxuICAgICAqXG4gICAgICogUmV0dXJucyBkYXkgb2Ygd2VlayBvZmZzZXQgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFzc2VkIHllYXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyXG4gICAgICogQHBhcmFtIGFic29sdXRlTGVhcFllYXJzIGFtb3VudCBvZiBsZWFwIHllYXJzIHByaW9yIHRvIHRoZSBwYXNzZWQgb25lXG4gICAgICogQHJldHVybiBvZmZzZXQgaW4gZGF5c1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRZZWFyU3RhcnREYXlzT2Zmc2V0KHllYXI6IG51bWJlciwgYWJzb2x1dGVMZWFwWWVhcnM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpWWVhci5pc1ZhbGlkWWVhcih5ZWFyKSk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihhYnNvbHV0ZUxlYXBZZWFycykpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KHllYXIgPj0gYWJzb2x1dGVMZWFwWWVhcnMpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KGFic29sdXRlTGVhcFllYXJzID49IDApO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoYWJzb2x1dGVMZWFwWWVhcnMgKiBEQVlTX0lOX0xFQVBfWUVBUiArXG4gICAgICAgICAgICAgICAgKHllYXIgLSBhYnNvbHV0ZUxlYXBZZWFycykgKiBEQVlTX0lOX05PUk1BTF9ZRUFSICtcbiAgICAgICAgICAgICAgICA1KSAlXG4gICAgICAgICAgICBEQVlTX0lOX1dFRUtcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbGVuZ3RoQmV0d2Vlbihmcm9tOiBUdWlZZWFyLCB0bzogVHVpWWVhcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0by55ZWFyIC0gZnJvbS55ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZXMgeWVhciBieSBjbGFtcGluZyBpdCBiZXR3ZWVuIG1pbiBhbmQgbWF4IHllYXJzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBub3JtYWxpemVZZWFyUGFydCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplVG9JbnROdW1iZXIoeWVhciwgTUlOX1lFQVIsIE1BWF9ZRUFSKTtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkWWVhcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGFkU3RhcnQodGhpcy55ZWFyLnRvU3RyaW5nKCksIDQsICcwJyk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTGVhcFllYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBUdWlZZWFyLmlzTGVhcFllYXIodGhpcy55ZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFtb3VudCBvZiBsZWFwIHllYXJzIGZyb20geWVhciAwIHRvIGN1cnJlbnRcbiAgICAgKi9cbiAgICBnZXQgYWJzb2x1dGVMZWFwWWVhcnMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFR1aVllYXIuZ2V0QWJzb2x1dGVMZWFwWWVhcnModGhpcy55ZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBET05UIFVTRSBJVCAod2lsbCBiZSBkZWxldGVkIHNvb24pXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGRheSBvZiB3ZWVrIG9mZnNldCBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IHllYXJcbiAgICAgKi9cbiAgICBnZXQgeWVhclN0YXJ0RGF5c09mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVHVpWWVhci5nZXRZZWFyU3RhcnREYXlzT2Zmc2V0KHRoaXMueWVhciwgdGhpcy5hYnNvbHV0ZUxlYXBZZWFycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIHllYXIgaXMgYWZ0ZXIgY3VycmVudFxuICAgICAqL1xuICAgIHllYXJCZWZvcmUoe3llYXJ9OiBUdWlZZWFyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIgPCB5ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCB5ZWFyIGlzIHRoZSBzYW1lIG9yIGFmdGVyIGN1cnJlbnRcbiAgICAgKi9cbiAgICB5ZWFyU2FtZU9yQmVmb3JlKHt5ZWFyfTogVHVpWWVhcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyIDw9IHllYXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIHllYXIgaXMgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIHllYXJTYW1lKHt5ZWFyfTogVHVpWWVhcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyID09PSB5ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCB5ZWFyIGlzIGVpdGhlciB0aGUgc2FtZSBvZiBiZWZvcmUgdGhlIGN1cnJlbnRcbiAgICAgKi9cbiAgICB5ZWFyU2FtZU9yQWZ0ZXIoe3llYXJ9OiBUdWlZZWFyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIgPj0geWVhcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgeWVhciBpcyBiZWZvcmUgY3VycmVudFxuICAgICAqL1xuICAgIHllYXJBZnRlcih7eWVhcn06IFR1aVllYXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhciA+IHllYXI7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgYGJhY2t3YXJkc2Agb3B0aW9uXG4gICAgLyoqXG4gICAgICogSW1tdXRhYmx5IG9mZnNldHMgeWVhclxuICAgICAqL1xuICAgIGFwcGVuZCh7eWVhciA9IDB9OiBUdWlZZWFyTGlrZSwgYmFja3dhcmRzOiBib29sZWFuID0gZmFsc2UpOiBUdWlZZWFyIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHllYXIpKTtcblxuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0WWVhciA9IHRoaXMueWVhciArIHllYXI7XG5cbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlZZWFyLmlzVmFsaWRZZWFyKHJlc3VsdFllYXIpKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aVllYXIocmVzdWx0WWVhcik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkWWVhcjtcbiAgICB9XG5cbiAgICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkWWVhcjtcbiAgICB9XG59XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lLyIsInNvdXJjZXMiOlsieWVhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLFFBQVEsR0FDWCxNQUFNLGFBQWEsQ0FBQztBQUVyQjs7O0dBR0c7QUFDSDtJQUNJLGlCQUFxQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUM3QixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBVyxHQUFsQixVQUFtQixJQUFZO1FBQzNCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSw0QkFBb0IsR0FBM0IsVUFBNEIsSUFB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QUksR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELDZDQUE2QztJQUM3Qzs7T0FFRztJQUNILHdCQUFNLEdBQU4sVUFBTyxFQUF1QixFQUFFLFNBQTBCO1lBQWxELFlBQVEsRUFBUiw2QkFBUTtRQUFnQiwwQkFBQSxFQUFBLGlCQUEwQjtRQUN0RCxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6QyxJQUFJLFNBQVMsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNkO1FBRUQsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFcEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsMEJBQVEsR0FBUjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsd0JBQU0sR0FBTjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBQ0wsY0FBQztBQUFELENBQUMsQUFwSkQsSUFvSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3R1aUFzc2VydH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VHVpWWVhckxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvaW50ZXJmYWNlcyc7XG5pbXBvcnQge3BhZFN0YXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQge2luUmFuZ2UsIG5vcm1hbGl6ZVRvSW50TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge1xuICAgIERBWVNfSU5fTEVBUF9ZRUFSLFxuICAgIERBWVNfSU5fTk9STUFMX1lFQVIsXG4gICAgREFZU19JTl9XRUVLLFxuICAgIE1BWF9ZRUFSLFxuICAgIE1JTl9ZRUFSLFxufSBmcm9tICcuL2RhdGUtdGltZSc7XG5cbi8qKlxuICogSW1tdXRhYmxlIHllYXIgb2JqZWN0XG4gKiBAbm9zaWRlZWZmZWN0c1xuICovXG5leHBvcnQgY2xhc3MgVHVpWWVhciBpbXBsZW1lbnRzIFR1aVllYXJMaWtlIHtcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSB5ZWFyOiBudW1iZXIpIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgeWVhciBmb3IgdmFsaWRpdHlcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHllYXIpICYmIGluUmFuZ2UoeWVhciwgTUlOX1lFQVIsIE1BWF9ZRUFSICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgcGFzc2VkIHllYXIgaXMgYSBsZWFwIHllYXJcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpKTtcblxuICAgICAgICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbW91bnQgb2YgbGVhcCB5ZWFycyBmcm9tIHllYXIgMCB0byB0aGUgcGFzc2VkIG9uZVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRBYnNvbHV0ZUxlYXBZZWFycyh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikpO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoeWVhciAvIDQwMCkgKyAoTWF0aC5jZWlsKHllYXIgLyA0KSAtIE1hdGguY2VpbCh5ZWFyIC8gMTAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQgKHdpbGwgYmUgZGVsZXRlZCBzb29uKVxuICAgICAqXG4gICAgICogUmV0dXJucyBkYXkgb2Ygd2VlayBvZmZzZXQgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFzc2VkIHllYXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyXG4gICAgICogQHBhcmFtIGFic29sdXRlTGVhcFllYXJzIGFtb3VudCBvZiBsZWFwIHllYXJzIHByaW9yIHRvIHRoZSBwYXNzZWQgb25lXG4gICAgICogQHJldHVybiBvZmZzZXQgaW4gZGF5c1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRZZWFyU3RhcnREYXlzT2Zmc2V0KHllYXI6IG51bWJlciwgYWJzb2x1dGVMZWFwWWVhcnM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpWWVhci5pc1ZhbGlkWWVhcih5ZWFyKSk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihhYnNvbHV0ZUxlYXBZZWFycykpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KHllYXIgPj0gYWJzb2x1dGVMZWFwWWVhcnMpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KGFic29sdXRlTGVhcFllYXJzID49IDApO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoYWJzb2x1dGVMZWFwWWVhcnMgKiBEQVlTX0lOX0xFQVBfWUVBUiArXG4gICAgICAgICAgICAgICAgKHllYXIgLSBhYnNvbHV0ZUxlYXBZZWFycykgKiBEQVlTX0lOX05PUk1BTF9ZRUFSICtcbiAgICAgICAgICAgICAgICA1KSAlXG4gICAgICAgICAgICBEQVlTX0lOX1dFRUtcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbGVuZ3RoQmV0d2Vlbihmcm9tOiBUdWlZZWFyLCB0bzogVHVpWWVhcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0by55ZWFyIC0gZnJvbS55ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZXMgeWVhciBieSBjbGFtcGluZyBpdCBiZXR3ZWVuIG1pbiBhbmQgbWF4IHllYXJzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBub3JtYWxpemVZZWFyUGFydCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplVG9JbnROdW1iZXIoeWVhciwgTUlOX1lFQVIsIE1BWF9ZRUFSKTtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkWWVhcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGFkU3RhcnQoU3RyaW5nKHRoaXMueWVhciksIDQsICcwJyk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTGVhcFllYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBUdWlZZWFyLmlzTGVhcFllYXIodGhpcy55ZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFtb3VudCBvZiBsZWFwIHllYXJzIGZyb20geWVhciAwIHRvIGN1cnJlbnRcbiAgICAgKi9cbiAgICBnZXQgYWJzb2x1dGVMZWFwWWVhcnMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFR1aVllYXIuZ2V0QWJzb2x1dGVMZWFwWWVhcnModGhpcy55ZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBET05UIFVTRSBJVCAod2lsbCBiZSBkZWxldGVkIHNvb24pXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGRheSBvZiB3ZWVrIG9mZnNldCBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IHllYXJcbiAgICAgKi9cbiAgICBnZXQgeWVhclN0YXJ0RGF5c09mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVHVpWWVhci5nZXRZZWFyU3RhcnREYXlzT2Zmc2V0KHRoaXMueWVhciwgdGhpcy5hYnNvbHV0ZUxlYXBZZWFycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIHllYXIgaXMgYWZ0ZXIgY3VycmVudFxuICAgICAqL1xuICAgIHllYXJCZWZvcmUoe3llYXJ9OiBUdWlZZWFyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIgPCB5ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCB5ZWFyIGlzIHRoZSBzYW1lIG9yIGFmdGVyIGN1cnJlbnRcbiAgICAgKi9cbiAgICB5ZWFyU2FtZU9yQmVmb3JlKHt5ZWFyfTogVHVpWWVhcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyIDw9IHllYXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIHllYXIgaXMgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIHllYXJTYW1lKHt5ZWFyfTogVHVpWWVhcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyID09PSB5ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCB5ZWFyIGlzIGVpdGhlciB0aGUgc2FtZSBvZiBiZWZvcmUgdGhlIGN1cnJlbnRcbiAgICAgKi9cbiAgICB5ZWFyU2FtZU9yQWZ0ZXIoe3llYXJ9OiBUdWlZZWFyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIgPj0geWVhcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgeWVhciBpcyBiZWZvcmUgY3VycmVudFxuICAgICAqL1xuICAgIHllYXJBZnRlcih7eWVhcn06IFR1aVllYXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhciA+IHllYXI7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgYGJhY2t3YXJkc2Agb3B0aW9uXG4gICAgLyoqXG4gICAgICogSW1tdXRhYmx5IG9mZnNldHMgeWVhclxuICAgICAqL1xuICAgIGFwcGVuZCh7eWVhciA9IDB9OiBUdWlZZWFyTGlrZSwgYmFja3dhcmRzOiBib29sZWFuID0gZmFsc2UpOiBUdWlZZWFyIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHllYXIpKTtcblxuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0WWVhciA9IHRoaXMueWVhciArIHllYXI7XG5cbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlZZWFyLmlzVmFsaWRZZWFyKHJlc3VsdFllYXIpKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aVllYXIocmVzdWx0WWVhcik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkWWVhcjtcbiAgICB9XG5cbiAgICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkWWVhcjtcbiAgICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { TuiPureException } from '@taiga-ui/cdk/exceptions';
1
2
  /**
2
3
  * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.
3
4
  * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned
@@ -20,7 +21,7 @@ export function tuiPure(_target, propertyKey, _a) {
20
21
  };
21
22
  }
22
23
  if (typeof value !== 'function') {
23
- throw new Error('tuiPure can only be used with functions or getters');
24
+ throw new TuiPureException();
24
25
  }
25
26
  var original = value;
26
27
  return {
@@ -28,25 +29,27 @@ export function tuiPure(_target, propertyKey, _a) {
28
29
  get: function () {
29
30
  var _this = this;
30
31
  var previousArgs = [];
31
- var previousResult;
32
+ var originalFnWasCalledLeastAtOnce = false;
33
+ var pureValue;
32
34
  var patched = function () {
33
35
  var args = [];
34
36
  for (var _i = 0; _i < arguments.length; _i++) {
35
37
  args[_i] = arguments[_i];
36
38
  }
37
- if (previousArgs.length === args.length &&
38
- args.every(function (arg, index) { return arg === previousArgs[index]; })) {
39
- return previousResult;
39
+ var isPure = originalFnWasCalledLeastAtOnce &&
40
+ previousArgs.length === args.length &&
41
+ args.every(function (arg, index) { return arg === previousArgs[index]; });
42
+ if (isPure) {
43
+ return pureValue;
40
44
  }
41
45
  previousArgs = args;
42
- previousResult = original.apply(_this, args);
43
- return previousResult;
46
+ pureValue = original.apply(_this, args);
47
+ originalFnWasCalledLeastAtOnce = true;
48
+ return pureValue;
44
49
  };
45
- Object.defineProperty(this, propertyKey, {
46
- value: patched,
47
- });
50
+ Object.defineProperty(this, propertyKey, { value: patched });
48
51
  return patched;
49
52
  },
50
53
  };
51
54
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvZGVjb3JhdG9ycy8iLCJzb3VyY2VzIjpbInB1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUNuQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsRUFBb0Q7UUFBbkQsWUFBRyxFQUFFLDBCQUFVLEVBQUUsZ0JBQUs7SUFFdkIsSUFBSSxHQUFHLEVBQUU7UUFDTCxPQUFPO1lBQ0gsVUFBVSxZQUFBO1lBQ1YsR0FBRyxFQUFIO2dCQUNJLElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLFVBQVUsWUFBQSxFQUFFLEtBQUssT0FBQSxFQUFDLENBQUMsQ0FBQztnQkFFOUQsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztTQUNKLENBQUM7S0FDTDtJQUVELElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztLQUN6RTtJQUVELElBQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV2QixPQUFPO1FBQ0gsVUFBVSxZQUFBO1FBQ1YsR0FBRyxFQUFIO1lBQUEsaUJBdUJDO1lBdEJHLElBQUksWUFBWSxHQUEyQixFQUFFLENBQUM7WUFDOUMsSUFBSSxjQUFtQixDQUFDO1lBRXhCLElBQU0sT0FBTyxHQUFHO2dCQUFDLGNBQXVCO3FCQUF2QixVQUF1QixFQUF2QixxQkFBdUIsRUFBdkIsSUFBdUI7b0JBQXZCLHlCQUF1Qjs7Z0JBQ3BDLElBQ0ksWUFBWSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTTtvQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFDLEdBQUcsRUFBRSxLQUFLLElBQUssT0FBQSxHQUFHLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUEzQixDQUEyQixDQUFDLEVBQ3pEO29CQUNFLE9BQU8sY0FBYyxDQUFDO2lCQUN6QjtnQkFFRCxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRTVDLE9BQU8sY0FBYyxDQUFDO1lBQzFCLENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDckMsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxPQUFjLENBQUM7UUFDMUIsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbXBsZW1lbnRzIGxhenkgaW5pdGlhbGl6YXRpb24gZm9yIGdldHRlciBvciBtZW1vaXphdGlvbiBvZiBhIGZ1bmN0aW9uIGNhbGwgc2ltaWxhciB0byBwdXJlIHtAbGluazogUGlwZX0uXG4gKiBSZXBsYWNlcyBnZXR0ZXIgd2l0aCBpdHMgY2FsY3VsYXRlZCB2YWx1ZSB1cG9uIGZpcnN0IGNhbGwgb3Iga2VlcHMgdHJhY2sgb2YgbGFzdCBjYWxsIGFyZ3VtZW50cyBhbmQgcmV0dXJuZWRcbiAqIHZhbHVlIGZvciBmdW5jdGlvbiwgc2tpcHBpbmcgY2FsY3VsYXRpb24gd2hlbiBhcmd1bWVudHMgYXJlIHN0cmljdGx5IHRoZSBzYW1lLlxuICpcbiAqIEB0aHJvd3MgZXJyb3IgaWYgdXNlZCBub3Qgb24gZ2V0dGVyIG9yIGZ1bmN0aW9uXG4gKlxuICogQ0FVVElPTjogYHRoaXNgIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHN1Y2ggZnVuY3Rpb25zL2dldHRlcnMsIHRoZXkgbXVzdCBiZSBwdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHVpUHVyZTxUPihcbiAgICBfdGFyZ2V0OiBPYmplY3QsXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB7Z2V0LCBlbnVtZXJhYmxlLCB2YWx1ZX06IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+LFxuKTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4ge1xuICAgIGlmIChnZXQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVudW1lcmFibGUsXG4gICAgICAgICAgICBnZXQoKTogVCB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge2VudW1lcmFibGUsIHZhbHVlfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0dWlQdXJlIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBmdW5jdGlvbnMgb3IgZ2V0dGVycycpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsID0gdmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBlbnVtZXJhYmxlLFxuICAgICAgICBnZXQoKTogVCB7XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNBcmdzOiBSZWFkb25seUFycmF5PHVua25vd24+ID0gW107XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNSZXN1bHQ6IGFueTtcblxuICAgICAgICAgICAgY29uc3QgcGF0Y2hlZCA9ICguLi5hcmdzOiBBcnJheTx1bmtub3duPikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBcmdzLmxlbmd0aCA9PT0gYXJncy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgYXJncy5ldmVyeSgoYXJnLCBpbmRleCkgPT4gYXJnID09PSBwcmV2aW91c0FyZ3NbaW5kZXhdKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNSZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcHJldmlvdXNBcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICBwcmV2aW91c1Jlc3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzUmVzdWx0O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHBhdGNoZWQsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHBhdGNoZWQgYXMgYW55O1xuICAgICAgICB9LFxuICAgIH07XG59XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvZGVjb3JhdG9ycy8iLCJzb3VyY2VzIjpbInB1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUNuQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsRUFBb0Q7UUFBbkQsWUFBRyxFQUFFLDBCQUFVLEVBQUUsZ0JBQUs7SUFFdkIsSUFBSSxHQUFHLEVBQUU7UUFDTCxPQUFPO1lBQ0gsVUFBVSxZQUFBO1lBQ1YsR0FBRyxFQUFIO2dCQUNJLElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLFVBQVUsWUFBQSxFQUFFLEtBQUssT0FBQSxFQUFDLENBQUMsQ0FBQztnQkFFOUQsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztTQUNKLENBQUM7S0FDTDtJQUVELElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsSUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXZCLE9BQU87UUFDSCxVQUFVLFlBQUE7UUFDVixHQUFHLEVBQUg7WUFBQSxpQkF5QkM7WUF4QkcsSUFBSSxZQUFZLEdBQXVCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLDhCQUE4QixHQUFHLEtBQUssQ0FBQztZQUMzQyxJQUFJLFNBQWtCLENBQUM7WUFFdkIsSUFBTSxPQUFPLEdBQUc7Z0JBQUMsY0FBa0I7cUJBQWxCLFVBQWtCLEVBQWxCLHFCQUFrQixFQUFsQixJQUFrQjtvQkFBbEIseUJBQWtCOztnQkFDL0IsSUFBTSxNQUFNLEdBQ1IsOEJBQThCO29CQUM5QixZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO29CQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQUMsR0FBRyxFQUFFLEtBQUssSUFBSyxPQUFBLEdBQUcsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQTNCLENBQTJCLENBQUMsQ0FBQztnQkFFNUQsSUFBSSxNQUFNLEVBQUU7b0JBQ1IsT0FBTyxTQUFTLENBQUM7aUJBQ3BCO2dCQUVELFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdkMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO2dCQUV0QyxPQUFPLFNBQVMsQ0FBQztZQUNyQixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztZQUUzRCxPQUFPLE9BQXVCLENBQUM7UUFDbkMsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUdWlQdXJlRXhjZXB0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2V4Y2VwdGlvbnMnO1xuXG4vKipcbiAqIEltcGxlbWVudHMgbGF6eSBpbml0aWFsaXphdGlvbiBmb3IgZ2V0dGVyIG9yIG1lbW9pemF0aW9uIG9mIGEgZnVuY3Rpb24gY2FsbCBzaW1pbGFyIHRvIHB1cmUge0BsaW5rOiBQaXBlfS5cbiAqIFJlcGxhY2VzIGdldHRlciB3aXRoIGl0cyBjYWxjdWxhdGVkIHZhbHVlIHVwb24gZmlyc3QgY2FsbCBvciBrZWVwcyB0cmFjayBvZiBsYXN0IGNhbGwgYXJndW1lbnRzIGFuZCByZXR1cm5lZFxuICogdmFsdWUgZm9yIGZ1bmN0aW9uLCBza2lwcGluZyBjYWxjdWxhdGlvbiB3aGVuIGFyZ3VtZW50cyBhcmUgc3RyaWN0bHkgdGhlIHNhbWUuXG4gKlxuICogQHRocm93cyBlcnJvciBpZiB1c2VkIG5vdCBvbiBnZXR0ZXIgb3IgZnVuY3Rpb25cbiAqXG4gKiBDQVVUSU9OOiBgdGhpc2AgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgc3VjaCBmdW5jdGlvbnMvZ2V0dGVycywgdGhleSBtdXN0IGJlIHB1cmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0dWlQdXJlPFQ+KFxuICAgIF90YXJnZXQ6IE9iamVjdCxcbiAgICBwcm9wZXJ0eUtleTogc3RyaW5nLFxuICAgIHtnZXQsIGVudW1lcmFibGUsIHZhbHVlfTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4sXG4pOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPiB7XG4gICAgaWYgKGdldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW51bWVyYWJsZSxcbiAgICAgICAgICAgIGdldCgpOiBUIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldC5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7ZW51bWVyYWJsZSwgdmFsdWV9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHVpUHVyZUV4Y2VwdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsID0gdmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBlbnVtZXJhYmxlLFxuICAgICAgICBnZXQoKTogVCB7XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNBcmdzOiByZWFkb25seSB1bmtub3duW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBvcmlnaW5hbEZuV2FzQ2FsbGVkTGVhc3RBdE9uY2UgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwdXJlVmFsdWU6IHVua25vd247XG5cbiAgICAgICAgICAgIGNvbnN0IHBhdGNoZWQgPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNQdXJlID1cbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxGbldhc0NhbGxlZExlYXN0QXRPbmNlICYmXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQXJncy5sZW5ndGggPT09IGFyZ3MubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIGFyZ3MuZXZlcnkoKGFyZywgaW5kZXgpID0+IGFyZyA9PT0gcHJldmlvdXNBcmdzW2luZGV4XSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNQdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJlVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcHJldmlvdXNBcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICBwdXJlVmFsdWUgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEZuV2FzQ2FsbGVkTGVhc3RBdE9uY2UgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1cmVWYWx1ZTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge3ZhbHVlOiBwYXRjaGVkfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXRjaGVkIGFzIHVua25vd24gYXMgVDtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __param, __read, __spread } from "tslib";
2
2
  import { Directive, ElementRef, Inject, Input, NgZone, OnDestroy, Optional, Output, SkipSelf, } from '@angular/core';
3
- import { tuiDefaultProp } from '@taiga-ui/cdk/decorators';
3
+ import { tuiDefaultProp, tuiPure } from '@taiga-ui/cdk/decorators';
4
4
  import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
5
5
  import { TUI_ACTIVE_ELEMENT } from '@taiga-ui/cdk/tokens';
6
6
  import { Observable } from 'rxjs';
@@ -22,13 +22,7 @@ var TuiActiveZoneDirective = /** @class */ (function () {
22
22
  TuiActiveZoneDirective_1 = TuiActiveZoneDirective;
23
23
  Object.defineProperty(TuiActiveZoneDirective.prototype, "tuiActiveZoneParentSetter", {
24
24
  set: function (zone) {
25
- if (this.tuiActiveZoneParent) {
26
- this.tuiActiveZoneParent.removeSubActiveZone(this);
27
- }
28
- if (zone) {
29
- zone.addSubActiveZone(this);
30
- }
31
- this.tuiActiveZoneParent = zone;
25
+ this.setZone(zone);
32
26
  },
33
27
  enumerable: true,
34
28
  configurable: true
@@ -47,6 +41,15 @@ var TuiActiveZoneDirective = /** @class */ (function () {
47
41
  return array.indexOf(item) === index && item.contains(node);
48
42
  }));
49
43
  };
44
+ TuiActiveZoneDirective.prototype.setZone = function (zone) {
45
+ if (this.tuiActiveZoneParent) {
46
+ this.tuiActiveZoneParent.removeSubActiveZone(this);
47
+ }
48
+ if (zone) {
49
+ zone.addSubActiveZone(this);
50
+ }
51
+ this.tuiActiveZoneParent = zone;
52
+ };
50
53
  TuiActiveZoneDirective.prototype.addSubActiveZone = function (activeZone) {
51
54
  this.subActiveZones = __spread(this.subActiveZones, [activeZone]);
52
55
  };
@@ -68,6 +71,9 @@ var TuiActiveZoneDirective = /** @class */ (function () {
68
71
  __decorate([
69
72
  Output()
70
73
  ], TuiActiveZoneDirective.prototype, "tuiActiveZoneChange", void 0);
74
+ __decorate([
75
+ tuiPure
76
+ ], TuiActiveZoneDirective.prototype, "setZone", null);
71
77
  TuiActiveZoneDirective = TuiActiveZoneDirective_1 = __decorate([
72
78
  Directive({
73
79
  selector: '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',
@@ -83,4 +89,4 @@ var TuiActiveZoneDirective = /** @class */ (function () {
83
89
  return TuiActiveZoneDirective;
84
90
  }());
85
91
  export { TuiActiveZoneDirective };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2FjdGl2ZS16b25lLyIsInNvdXJjZXMiOlsiYWN0aXZlLXpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPMUU7SUE0QkksZ0NBRXFCLE9BQW1DLEVBQ25CLE1BQWMsRUFDVixVQUErQixFQUluRCxzQkFBcUQ7UUFSMUUsaUJBYUM7UUFYb0IsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNWLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBSW5ELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBK0I7UUFuQ2xFLG1CQUFjLEdBQTBDLEVBQUUsQ0FBQztRQUUzRCx3QkFBbUIsR0FBa0MsSUFBSSxDQUFDO1FBaUJ6RCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFJLENBQUMsUUFBUSxDQUFDLE9B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QUFDLENBQUE7UUFDZCxXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsTUFBTSxDQUFDLHdCQUFzQixDQUFDLENBQUE7T0FuQzFCLHNCQUFzQixDQTJFbEM7SUFBRCw2QkFBQztDQUFBLEFBM0VELElBMkVDO1NBM0VZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNraXBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpRGVmYXVsdFByb3B9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGVjb3JhdG9ycyc7XG5pbXBvcnQge3R1aVpvbmVPcHRpbWl6ZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUVUlfQUNUSVZFX0VMRU1FTlR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNraXAsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjpcbiAgICAgICAgJ1t0dWlBY3RpdmVab25lXTpub3QobmctY29udGFpbmVyKSwgW3R1aUFjdGl2ZVpvbmVDaGFuZ2VdOm5vdChuZy1jb250YWluZXIpLCBbdHVpQWN0aXZlWm9uZVBhcmVudF06bm90KG5nLWNvbnRhaW5lciknLFxuICAgIGV4cG9ydEFzOiAndHVpQWN0aXZlWm9uZScsXG59KVxuZXhwb3J0IGNsYXNzIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgc3ViQWN0aXZlWm9uZXM6IFJlYWRvbmx5QXJyYXk8VHVpQWN0aXZlWm9uZURpcmVjdGl2ZT4gPSBbXTtcblxuICAgIHByaXZhdGUgdHVpQWN0aXZlWm9uZVBhcmVudDogVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KCd0dWlBY3RpdmVab25lUGFyZW50JylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNldCB0dWlBY3RpdmVab25lUGFyZW50U2V0dGVyKHpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgfCBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLnR1aUFjdGl2ZVpvbmVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudC5yZW1vdmVTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHpvbmUpIHtcbiAgICAgICAgICAgIHpvbmUuYWRkU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudCA9IHpvbmU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgdHVpQWN0aXZlWm9uZUNoYW5nZSA9IHRoaXMuYWN0aXZlJC5waXBlKFxuICAgICAgICBtYXAoZWxlbWVudCA9PiAhIWVsZW1lbnQgJiYgdGhpcy5jb250YWlucyhlbGVtZW50KSksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHR1aVpvbmVPcHRpbWl6ZWQodGhpcy5uZ1pvbmUpLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUVUlfQUNUSVZFX0VMRU1FTlQpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlJDogT2JzZXJ2YWJsZTxFbGVtZW50IHwgbnVsbD4sXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNraXBTZWxmKClcbiAgICAgICAgQEluamVjdChUdWlBY3RpdmVab25lRGlyZWN0aXZlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdFBhcmVudEFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgfCBudWxsLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5kaXJlY3RQYXJlbnRBY3RpdmVab25lKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdFBhcmVudEFjdGl2ZVpvbmUuYWRkU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5kaXJlY3RQYXJlbnRBY3RpdmVab25lKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdFBhcmVudEFjdGl2ZVpvbmUucmVtb3ZlU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnR1aUFjdGl2ZVpvbmVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudC5yZW1vdmVTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29udGFpbnMobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMobm9kZSkgfHxcbiAgICAgICAgICAgIHRoaXMuc3ViQWN0aXZlWm9uZXMuc29tZShcbiAgICAgICAgICAgICAgICAoaXRlbSwgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICAgICAgICAgICAgICBhcnJheS5pbmRleE9mKGl0ZW0pID09PSBpbmRleCAmJiBpdGVtLmNvbnRhaW5zKG5vZGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3ViQWN0aXZlWm9uZShhY3RpdmVab25lOiBUdWlBY3RpdmVab25lRGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc3ViQWN0aXZlWm9uZXMgPSBbLi4udGhpcy5zdWJBY3RpdmVab25lcywgYWN0aXZlWm9uZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVTdWJBY3RpdmVab25lKGFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnN1YkFjdGl2ZVpvbmVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0gPT09IGFjdGl2ZVpvbmUpO1xuXG4gICAgICAgIHRoaXMuc3ViQWN0aXZlWm9uZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnN1YkFjdGl2ZVpvbmVzLnNsaWNlKDAsIGluZGV4KSxcbiAgICAgICAgICAgIC4uLnRoaXMuc3ViQWN0aXZlWm9uZXMuc2xpY2UoaW5kZXggKyAxKSxcbiAgICAgICAgXTtcbiAgICB9XG59XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2FjdGl2ZS16b25lLyIsInNvdXJjZXMiOlsiYWN0aXZlLXpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBTzFFO0lBb0JJLGdDQUVxQixPQUFtQyxFQUNuQixNQUFjLEVBQ1YsVUFBK0IsRUFJbkQsc0JBQXFEO1FBUjFFLGlCQWFDO1FBWG9CLFlBQU8sR0FBUCxPQUFPLENBQTRCO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDVixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUluRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQStCO1FBM0JsRSxtQkFBYyxHQUEwQyxFQUFFLENBQUM7UUFFM0Qsd0JBQW1CLEdBQWtDLElBQUksQ0FBQztRQVN6RCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFuQyxDQUFtQyxDQUFDLEVBQ25ELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFDaEIsb0JBQW9CLEVBQUUsRUFDdEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDaEMsQ0FBQztRQVlFLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7K0JBakNRLHNCQUFzQjtJQU8vQixzQkFBSSw2REFBeUI7YUFBN0IsVUFBOEIsSUFBbUM7WUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDOzs7T0FBQTtJQTBCRCw0Q0FBVyxHQUFYO1FBQ0ksSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUVELHlDQUFRLEdBQVIsVUFBUyxJQUFVO1FBQ2YsT0FBTyxDQUNILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BCLFVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNmLE9BQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBcEQsQ0FBb0QsQ0FDM0QsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUdPLHdDQUFPLEdBQWYsVUFBZ0IsSUFBbUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3REO1FBRUQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxpREFBZ0IsR0FBeEIsVUFBeUIsVUFBa0M7UUFDdkQsSUFBSSxDQUFDLGNBQWMsWUFBTyxJQUFJLENBQUMsY0FBYyxHQUFFLFVBQVUsRUFBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxvREFBbUIsR0FBM0IsVUFBNEIsVUFBa0M7UUFDMUQsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLEtBQUssVUFBVSxFQUFuQixDQUFtQixDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLGNBQWMsWUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FDMUMsQ0FBQztJQUNOLENBQUM7OztnQkF6RDZCLFVBQVUsdUJBRG5DLE1BQU0sU0FBQyxrQkFBa0I7Z0JBRWUsTUFBTSx1QkFBOUMsTUFBTSxTQUFDLE1BQU07Z0JBQ21DLFVBQVUsdUJBQTFELE1BQU0sU0FBQyxVQUFVO2dCQUl1QixzQkFBc0IsdUJBSDlELFFBQVEsWUFDUixRQUFRLFlBQ1IsTUFBTSxTQUFDLHdCQUFzQjs7SUFwQmxDO1FBRkMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1FBQzVCLGNBQWMsRUFBRTsyRUFHaEI7SUFHRDtRQURDLE1BQU0sRUFBRTt1RUFPUDtJQXNDRjtRQURDLE9BQU87eURBV1A7SUFsRVEsc0JBQXNCO1FBTGxDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFDSixxSEFBcUg7WUFDekgsUUFBUSxFQUFFLGVBQWU7U0FDNUIsQ0FBQztRQXNCTyxXQUFBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBRTFCLFdBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2QsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEIsV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLE1BQU0sQ0FBQyx3QkFBc0IsQ0FBQyxDQUFBO09BM0IxQixzQkFBc0IsQ0FnRmxDO0lBQUQsNkJBQUM7Q0FBQSxBQWhGRCxJQWdGQztTQWhGWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aURlZmF1bHRQcm9wLCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RlY29yYXRvcnMnO1xuaW1wb3J0IHt0dWlab25lT3B0aW1pemVkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VFVJX0FDVElWRV9FTEVNRU5UfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBza2lwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6XG4gICAgICAgICdbdHVpQWN0aXZlWm9uZV06bm90KG5nLWNvbnRhaW5lciksIFt0dWlBY3RpdmVab25lQ2hhbmdlXTpub3QobmctY29udGFpbmVyKSwgW3R1aUFjdGl2ZVpvbmVQYXJlbnRdOm5vdChuZy1jb250YWluZXIpJyxcbiAgICBleHBvcnRBczogJ3R1aUFjdGl2ZVpvbmUnLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlBY3RpdmVab25lRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHN1YkFjdGl2ZVpvbmVzOiBSZWFkb25seUFycmF5PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+ID0gW107XG5cbiAgICBwcml2YXRlIHR1aUFjdGl2ZVpvbmVQYXJlbnQ6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgndHVpQWN0aXZlWm9uZVBhcmVudCcpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZXQgdHVpQWN0aXZlWm9uZVBhcmVudFNldHRlcih6b25lOiBUdWlBY3RpdmVab25lRGlyZWN0aXZlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnNldFpvbmUoem9uZSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgdHVpQWN0aXZlWm9uZUNoYW5nZSA9IHRoaXMuYWN0aXZlJC5waXBlKFxuICAgICAgICBtYXAoZWxlbWVudCA9PiAhIWVsZW1lbnQgJiYgdGhpcy5jb250YWlucyhlbGVtZW50KSksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHR1aVpvbmVPcHRpbWl6ZWQodGhpcy5uZ1pvbmUpLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUVUlfQUNUSVZFX0VMRU1FTlQpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlJDogT2JzZXJ2YWJsZTxFbGVtZW50IHwgbnVsbD4sXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNraXBTZWxmKClcbiAgICAgICAgQEluamVjdChUdWlBY3RpdmVab25lRGlyZWN0aXZlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdFBhcmVudEFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgfCBudWxsLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5kaXJlY3RQYXJlbnRBY3RpdmVab25lKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdFBhcmVudEFjdGl2ZVpvbmUuYWRkU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5kaXJlY3RQYXJlbnRBY3RpdmVab25lKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdFBhcmVudEFjdGl2ZVpvbmUucmVtb3ZlU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnR1aUFjdGl2ZVpvbmVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudC5yZW1vdmVTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29udGFpbnMobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMobm9kZSkgfHxcbiAgICAgICAgICAgIHRoaXMuc3ViQWN0aXZlWm9uZXMuc29tZShcbiAgICAgICAgICAgICAgICAoaXRlbSwgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICAgICAgICAgICAgICBhcnJheS5pbmRleE9mKGl0ZW0pID09PSBpbmRleCAmJiBpdGVtLmNvbnRhaW5zKG5vZGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBzZXRab25lKHpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgfCBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLnR1aUFjdGl2ZVpvbmVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudC5yZW1vdmVTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHpvbmUpIHtcbiAgICAgICAgICAgIHpvbmUuYWRkU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudCA9IHpvbmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRTdWJBY3RpdmVab25lKGFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcyA9IFsuLi50aGlzLnN1YkFjdGl2ZVpvbmVzLCBhY3RpdmVab25lXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVN1YkFjdGl2ZVpvbmUoYWN0aXZlWm9uZTogVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc3ViQWN0aXZlWm9uZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gYWN0aXZlWm9uZSk7XG5cbiAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuc3ViQWN0aXZlWm9uZXMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAgICAgICAgLi4udGhpcy5zdWJBY3RpdmVab25lcy5zbGljZShpbmRleCArIDEpLFxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==