@coreui/angular-pro 5.2.25 → 5.3.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 (392) hide show
  1. package/README.md +5 -5
  2. package/fesm2022/coreui-angular-pro.mjs +1064 -1163
  3. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  4. package/lib/grid/col.directive.d.ts +26 -26
  5. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +2 -2
  6. package/lib/tabs-2/tab/tab.directive.d.ts +4 -3
  7. package/lib/tabs-2/tabs-list/tabs-list.component.d.ts +1 -1
  8. package/package.json +9 -11
  9. package/esm2022/coreui-angular-pro.mjs +0 -5
  10. package/esm2022/lib/accordion/accordion/accordion.component.mjs +0 -34
  11. package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +0 -35
  12. package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +0 -59
  13. package/esm2022/lib/accordion/accordion.module.mjs +0 -36
  14. package/esm2022/lib/accordion/accordion.service.mjs +0 -36
  15. package/esm2022/lib/accordion/index.mjs +0 -2
  16. package/esm2022/lib/accordion/public_api.mjs +0 -5
  17. package/esm2022/lib/alert/alert-heading.directive.mjs +0 -15
  18. package/esm2022/lib/alert/alert-link.directive.mjs +0 -15
  19. package/esm2022/lib/alert/alert.component.mjs +0 -173
  20. package/esm2022/lib/alert/alert.module.mjs +0 -30
  21. package/esm2022/lib/alert/index.mjs +0 -2
  22. package/esm2022/lib/alert/public_api.mjs +0 -5
  23. package/esm2022/lib/avatar/avatar.component.mjs +0 -71
  24. package/esm2022/lib/avatar/avatar.module.mjs +0 -20
  25. package/esm2022/lib/avatar/index.mjs +0 -2
  26. package/esm2022/lib/avatar/public_api.mjs +0 -3
  27. package/esm2022/lib/backdrop/backdrop.service.mjs +0 -82
  28. package/esm2022/lib/backdrop/index.mjs +0 -2
  29. package/esm2022/lib/backdrop/public_api.mjs +0 -2
  30. package/esm2022/lib/badge/badge.component.mjs +0 -77
  31. package/esm2022/lib/badge/badge.module.mjs +0 -20
  32. package/esm2022/lib/badge/index.mjs +0 -2
  33. package/esm2022/lib/badge/public_api.mjs +0 -3
  34. package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +0 -40
  35. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +0 -39
  36. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.mjs +0 -2
  37. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +0 -41
  38. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +0 -52
  39. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -34
  40. package/esm2022/lib/breadcrumb/index.mjs +0 -2
  41. package/esm2022/lib/breadcrumb/public_api.mjs +0 -6
  42. package/esm2022/lib/button/button-close.directive.mjs +0 -46
  43. package/esm2022/lib/button/button.directive.mjs +0 -88
  44. package/esm2022/lib/button/button.module.mjs +0 -25
  45. package/esm2022/lib/button/index.mjs +0 -2
  46. package/esm2022/lib/button/public_api.mjs +0 -4
  47. package/esm2022/lib/button-group/button-group/button-group.component.mjs +0 -41
  48. package/esm2022/lib/button-group/button-group.module.mjs +0 -17
  49. package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +0 -24
  50. package/esm2022/lib/button-group/index.mjs +0 -2
  51. package/esm2022/lib/button-group/public_api.mjs +0 -4
  52. package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +0 -20
  53. package/esm2022/lib/calendar/calendar/calendar.component.mjs +0 -380
  54. package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +0 -30
  55. package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +0 -24
  56. package/esm2022/lib/calendar/calendar-month/calendar-class-row.pipe.mjs +0 -24
  57. package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +0 -22
  58. package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +0 -17
  59. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +0 -138
  60. package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +0 -19
  61. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +0 -448
  62. package/esm2022/lib/calendar/calendar-month/calendar-row.directive.mjs +0 -123
  63. package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +0 -21
  64. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +0 -87
  65. package/esm2022/lib/calendar/calendar.module.mjs +0 -57
  66. package/esm2022/lib/calendar/calendar.service.mjs +0 -66
  67. package/esm2022/lib/calendar/calendar.utils.mjs +0 -393
  68. package/esm2022/lib/calendar/index.mjs +0 -2
  69. package/esm2022/lib/calendar/public_api.mjs +0 -5
  70. package/esm2022/lib/callout/callout.component.mjs +0 -25
  71. package/esm2022/lib/callout/callout.module.mjs +0 -16
  72. package/esm2022/lib/callout/index.mjs +0 -2
  73. package/esm2022/lib/callout/public_api.mjs +0 -3
  74. package/esm2022/lib/card/card-body.component.mjs +0 -16
  75. package/esm2022/lib/card/card-footer.component.mjs +0 -16
  76. package/esm2022/lib/card/card-group.component.mjs +0 -16
  77. package/esm2022/lib/card/card-header-actions.component.mjs +0 -16
  78. package/esm2022/lib/card/card-header.component.mjs +0 -16
  79. package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +0 -11
  80. package/esm2022/lib/card/card-img.directive.mjs +0 -32
  81. package/esm2022/lib/card/card-link.directive.mjs +0 -15
  82. package/esm2022/lib/card/card-subtitle.directive.mjs +0 -15
  83. package/esm2022/lib/card/card-text.directive.mjs +0 -15
  84. package/esm2022/lib/card/card-title.directive.mjs +0 -15
  85. package/esm2022/lib/card/card.component.mjs +0 -50
  86. package/esm2022/lib/card/card.module.mjs +0 -75
  87. package/esm2022/lib/card/index.mjs +0 -2
  88. package/esm2022/lib/card/public_api.mjs +0 -14
  89. package/esm2022/lib/carousel/carousel/carousel.component.mjs +0 -212
  90. package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +0 -17
  91. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +0 -82
  92. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +0 -44
  93. package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +0 -47
  94. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +0 -67
  95. package/esm2022/lib/carousel/carousel-state.mjs +0 -77
  96. package/esm2022/lib/carousel/carousel-state.type.mjs +0 -2
  97. package/esm2022/lib/carousel/carousel.animation.mjs +0 -70
  98. package/esm2022/lib/carousel/carousel.config.mjs +0 -22
  99. package/esm2022/lib/carousel/carousel.module.mjs +0 -52
  100. package/esm2022/lib/carousel/carousel.service.mjs +0 -18
  101. package/esm2022/lib/carousel/index.mjs +0 -2
  102. package/esm2022/lib/carousel/public_api.mjs +0 -9
  103. package/esm2022/lib/collapse/collapse.animations.mjs +0 -9
  104. package/esm2022/lib/collapse/collapse.directive.mjs +0 -145
  105. package/esm2022/lib/collapse/collapse.module.mjs +0 -19
  106. package/esm2022/lib/collapse/index.mjs +0 -2
  107. package/esm2022/lib/collapse/public_api.mjs +0 -3
  108. package/esm2022/lib/coreui.types.mjs +0 -10
  109. package/esm2022/lib/date-picker/date-picker.component.mjs +0 -80
  110. package/esm2022/lib/date-picker/date-picker.module.mjs +0 -16
  111. package/esm2022/lib/date-picker/index.mjs +0 -2
  112. package/esm2022/lib/date-picker/public_api.mjs +0 -3
  113. package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +0 -17
  114. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +0 -599
  115. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +0 -16
  116. package/esm2022/lib/date-range-picker/index.mjs +0 -2
  117. package/esm2022/lib/date-range-picker/public_api.mjs +0 -3
  118. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +0 -371
  119. package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +0 -73
  120. package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +0 -15
  121. package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +0 -15
  122. package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +0 -15
  123. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +0 -96
  124. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +0 -119
  125. package/esm2022/lib/dropdown/dropdown.module.mjs +0 -56
  126. package/esm2022/lib/dropdown/dropdown.service.mjs +0 -18
  127. package/esm2022/lib/dropdown/index.mjs +0 -2
  128. package/esm2022/lib/dropdown/public_api.mjs +0 -10
  129. package/esm2022/lib/element-cover/element-cover.component.mjs +0 -79
  130. package/esm2022/lib/element-cover/element-cover.module.mjs +0 -16
  131. package/esm2022/lib/element-cover/index.mjs +0 -2
  132. package/esm2022/lib/element-cover/public_api.mjs +0 -3
  133. package/esm2022/lib/footer/footer.component.mjs +0 -39
  134. package/esm2022/lib/footer/footer.module.mjs +0 -16
  135. package/esm2022/lib/footer/index.mjs +0 -2
  136. package/esm2022/lib/footer/public_api.mjs +0 -3
  137. package/esm2022/lib/form/form/form.directive.mjs +0 -33
  138. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +0 -78
  139. package/esm2022/lib/form/form-check/form-check-label.directive.mjs +0 -15
  140. package/esm2022/lib/form/form-check/form-check.component.mjs +0 -77
  141. package/esm2022/lib/form/form-control/form-control.directive.mjs +0 -66
  142. package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +0 -38
  143. package/esm2022/lib/form/form-floating/form-floating.directive.mjs +0 -32
  144. package/esm2022/lib/form/form-label/form-label.directive.mjs +0 -41
  145. package/esm2022/lib/form/form-select/form-select.directive.mjs +0 -36
  146. package/esm2022/lib/form/form-text/form-text.directive.mjs +0 -15
  147. package/esm2022/lib/form/form.module.mjs +0 -75
  148. package/esm2022/lib/form/index.mjs +0 -2
  149. package/esm2022/lib/form/input-group/input-group.component.mjs +0 -29
  150. package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +0 -15
  151. package/esm2022/lib/form/public_api.mjs +0 -14
  152. package/esm2022/lib/grid/col.component.mjs +0 -12
  153. package/esm2022/lib/grid/col.directive.mjs +0 -157
  154. package/esm2022/lib/grid/col.type.mjs +0 -2
  155. package/esm2022/lib/grid/container.component.mjs +0 -33
  156. package/esm2022/lib/grid/container.type.mjs +0 -2
  157. package/esm2022/lib/grid/grid.module.mjs +0 -45
  158. package/esm2022/lib/grid/gutter.directive.mjs +0 -57
  159. package/esm2022/lib/grid/gutter.type.mjs +0 -2
  160. package/esm2022/lib/grid/index.mjs +0 -2
  161. package/esm2022/lib/grid/public_api.mjs +0 -8
  162. package/esm2022/lib/grid/row.component.mjs +0 -16
  163. package/esm2022/lib/grid/row.directive.mjs +0 -47
  164. package/esm2022/lib/grid/row.type.mjs +0 -2
  165. package/esm2022/lib/header/header/header.component.mjs +0 -45
  166. package/esm2022/lib/header/header-brand/header-brand.component.mjs +0 -32
  167. package/esm2022/lib/header/header-divider/header-divider.component.mjs +0 -21
  168. package/esm2022/lib/header/header-nav/header-nav.component.mjs +0 -28
  169. package/esm2022/lib/header/header-text/header-text.component.mjs +0 -21
  170. package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +0 -55
  171. package/esm2022/lib/header/header.module.mjs +0 -45
  172. package/esm2022/lib/header/index.mjs +0 -2
  173. package/esm2022/lib/header/public_api.mjs +0 -8
  174. package/esm2022/lib/image/img.directive.mjs +0 -58
  175. package/esm2022/lib/image/img.module.mjs +0 -16
  176. package/esm2022/lib/image/index.mjs +0 -2
  177. package/esm2022/lib/image/public_api.mjs +0 -3
  178. package/esm2022/lib/list-group/index.mjs +0 -2
  179. package/esm2022/lib/list-group/list-group-item.directive.mjs +0 -63
  180. package/esm2022/lib/list-group/list-group.directive.mjs +0 -38
  181. package/esm2022/lib/list-group/list-group.module.mjs +0 -17
  182. package/esm2022/lib/list-group/public_api.mjs +0 -4
  183. package/esm2022/lib/loading-button/index.mjs +0 -2
  184. package/esm2022/lib/loading-button/loading-button.animations.mjs +0 -26
  185. package/esm2022/lib/loading-button/loading-button.component.mjs +0 -65
  186. package/esm2022/lib/loading-button/loading-button.module.mjs +0 -16
  187. package/esm2022/lib/loading-button/public_api.mjs +0 -3
  188. package/esm2022/lib/modal/index.mjs +0 -2
  189. package/esm2022/lib/modal/modal/modal.component.mjs +0 -334
  190. package/esm2022/lib/modal/modal-body/modal-body.component.mjs +0 -11
  191. package/esm2022/lib/modal/modal-content/modal-content.component.mjs +0 -16
  192. package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +0 -32
  193. package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +0 -28
  194. package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +0 -16
  195. package/esm2022/lib/modal/modal-header/modal-header.component.mjs +0 -16
  196. package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +0 -15
  197. package/esm2022/lib/modal/modal.module.mjs +0 -57
  198. package/esm2022/lib/modal/modal.service.mjs +0 -21
  199. package/esm2022/lib/modal/public_api.mjs +0 -11
  200. package/esm2022/lib/multi-select/index.mjs +0 -2
  201. package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +0 -65
  202. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +0 -1296
  203. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +0 -30
  204. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +0 -11
  205. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +0 -59
  206. package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +0 -302
  207. package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +0 -44
  208. package/esm2022/lib/multi-select/multi-select.module.mjs +0 -37
  209. package/esm2022/lib/multi-select/multi-select.service.mjs +0 -50
  210. package/esm2022/lib/multi-select/multi-select.type.mjs +0 -2
  211. package/esm2022/lib/multi-select/public_api.mjs +0 -6
  212. package/esm2022/lib/nav/index.mjs +0 -2
  213. package/esm2022/lib/nav/nav-item.component.mjs +0 -11
  214. package/esm2022/lib/nav/nav-link.directive.mjs +0 -76
  215. package/esm2022/lib/nav/nav.component.mjs +0 -25
  216. package/esm2022/lib/nav/nav.module.mjs +0 -30
  217. package/esm2022/lib/nav/public_api.mjs +0 -5
  218. package/esm2022/lib/navbar/index.mjs +0 -2
  219. package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +0 -18
  220. package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +0 -29
  221. package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +0 -16
  222. package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +0 -63
  223. package/esm2022/lib/navbar/navbar.component.mjs +0 -107
  224. package/esm2022/lib/navbar/navbar.module.mjs +0 -40
  225. package/esm2022/lib/navbar/public_api.mjs +0 -7
  226. package/esm2022/lib/offcanvas/index.mjs +0 -2
  227. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +0 -309
  228. package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +0 -11
  229. package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +0 -16
  230. package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +0 -15
  231. package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +0 -28
  232. package/esm2022/lib/offcanvas/offcanvas.module.mjs +0 -49
  233. package/esm2022/lib/offcanvas/offcanvas.service.mjs +0 -21
  234. package/esm2022/lib/offcanvas/public_api.mjs +0 -8
  235. package/esm2022/lib/pagination/index.mjs +0 -2
  236. package/esm2022/lib/pagination/page-item/page-item.component.mjs +0 -12
  237. package/esm2022/lib/pagination/page-item/page-item.directive.mjs +0 -64
  238. package/esm2022/lib/pagination/page-link/page-link.directive.mjs +0 -15
  239. package/esm2022/lib/pagination/pagination/pagination.component.mjs +0 -41
  240. package/esm2022/lib/pagination/pagination.module.mjs +0 -35
  241. package/esm2022/lib/pagination/public_api.mjs +0 -6
  242. package/esm2022/lib/placeholder/index.mjs +0 -2
  243. package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +0 -34
  244. package/esm2022/lib/placeholder/placeholder.directive.mjs +0 -43
  245. package/esm2022/lib/placeholder/placeholder.module.mjs +0 -25
  246. package/esm2022/lib/placeholder/public_api.mjs +0 -4
  247. package/esm2022/lib/popover/index.mjs +0 -2
  248. package/esm2022/lib/popover/popover/popover.component.mjs +0 -70
  249. package/esm2022/lib/popover/popover.directive.mjs +0 -204
  250. package/esm2022/lib/popover/popover.module.mjs +0 -25
  251. package/esm2022/lib/popover/public_api.mjs +0 -4
  252. package/esm2022/lib/progress/index.mjs +0 -2
  253. package/esm2022/lib/progress/progress-bar.component.mjs +0 -40
  254. package/esm2022/lib/progress/progress-bar.directive.mjs +0 -113
  255. package/esm2022/lib/progress/progress-stacked.component.mjs +0 -19
  256. package/esm2022/lib/progress/progress.component.mjs +0 -74
  257. package/esm2022/lib/progress/progress.module.mjs +0 -35
  258. package/esm2022/lib/progress/progress.type.mjs +0 -2
  259. package/esm2022/lib/progress/public_api.mjs +0 -6
  260. package/esm2022/lib/rating/index.mjs +0 -2
  261. package/esm2022/lib/rating/public_api.mjs +0 -3
  262. package/esm2022/lib/rating/rating-item-label/rating-item-label.component.mjs +0 -40
  263. package/esm2022/lib/rating/rating.component.mjs +0 -355
  264. package/esm2022/lib/rating/rating.module.mjs +0 -16
  265. package/esm2022/lib/services/class-toggle.service.mjs +0 -30
  266. package/esm2022/lib/services/color-mode.service.mjs +0 -78
  267. package/esm2022/lib/services/in-memory-storage.service.mjs +0 -32
  268. package/esm2022/lib/services/index.mjs +0 -2
  269. package/esm2022/lib/services/intersection.service.mjs +0 -51
  270. package/esm2022/lib/services/listeners.service.mjs +0 -52
  271. package/esm2022/lib/services/local-storage.service.mjs +0 -45
  272. package/esm2022/lib/services/public_api.mjs +0 -7
  273. package/esm2022/lib/shared/element-ref.directive.mjs +0 -18
  274. package/esm2022/lib/shared/html-attr.directive.mjs +0 -56
  275. package/esm2022/lib/shared/index.mjs +0 -2
  276. package/esm2022/lib/shared/public_api.mjs +0 -6
  277. package/esm2022/lib/shared/shared.module.mjs +0 -24
  278. package/esm2022/lib/shared/template-id.directive.mjs +0 -20
  279. package/esm2022/lib/shared/theme.directive.mjs +0 -45
  280. package/esm2022/lib/sidebar/index.mjs +0 -2
  281. package/esm2022/lib/sidebar/public_api.mjs +0 -10
  282. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +0 -241
  283. package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +0 -62
  284. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +0 -30
  285. package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +0 -16
  286. package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +0 -16
  287. package/esm2022/lib/sidebar/sidebar-nav/index.mjs +0 -2
  288. package/esm2022/lib/sidebar/sidebar-nav/public_api.mjs +0 -14
  289. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +0 -25
  290. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +0 -17
  291. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +0 -18
  292. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +0 -21
  293. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +0 -34
  294. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +0 -43
  295. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +0 -111
  296. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +0 -23
  297. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +0 -71
  298. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +0 -230
  299. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.mjs +0 -2
  300. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +0 -54
  301. package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +0 -41
  302. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.mjs +0 -39
  303. package/esm2022/lib/sidebar/sidebar.module.mjs +0 -83
  304. package/esm2022/lib/sidebar/sidebar.service.mjs +0 -21
  305. package/esm2022/lib/smart-pagination/index.mjs +0 -2
  306. package/esm2022/lib/smart-pagination/public_api.mjs +0 -3
  307. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +0 -191
  308. package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +0 -16
  309. package/esm2022/lib/smart-pagination/smart-pagination.type.mjs +0 -2
  310. package/esm2022/lib/smart-table/index.mjs +0 -2
  311. package/esm2022/lib/smart-table/public_api.mjs +0 -5
  312. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +0 -526
  313. package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +0 -27
  314. package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +0 -69
  315. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +0 -42
  316. package/esm2022/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +0 -18
  317. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +0 -229
  318. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +0 -46
  319. package/esm2022/lib/smart-table/smart-table.module.mjs +0 -17
  320. package/esm2022/lib/smart-table/smart-table.type.mjs +0 -2
  321. package/esm2022/lib/smart-table/smart-table.utils.mjs +0 -181
  322. package/esm2022/lib/spinner/index.mjs +0 -2
  323. package/esm2022/lib/spinner/public_api.mjs +0 -3
  324. package/esm2022/lib/spinner/spinner.component.mjs +0 -52
  325. package/esm2022/lib/spinner/spinner.module.mjs +0 -20
  326. package/esm2022/lib/table/index.mjs +0 -2
  327. package/esm2022/lib/table/public_api.mjs +0 -5
  328. package/esm2022/lib/table/table-active.directive.mjs +0 -32
  329. package/esm2022/lib/table/table-color.directive.mjs +0 -25
  330. package/esm2022/lib/table/table.directive.mjs +0 -112
  331. package/esm2022/lib/table/table.module.mjs +0 -30
  332. package/esm2022/lib/table/table.type.mjs +0 -2
  333. package/esm2022/lib/tabs/index.mjs +0 -2
  334. package/esm2022/lib/tabs/public_api.mjs +0 -6
  335. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +0 -83
  336. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +0 -141
  337. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +0 -60
  338. package/esm2022/lib/tabs/tab.service.mjs +0 -21
  339. package/esm2022/lib/tabs/tabs.module.mjs +0 -36
  340. package/esm2022/lib/tabs-2/index.mjs +0 -2
  341. package/esm2022/lib/tabs-2/public_api.mjs +0 -8
  342. package/esm2022/lib/tabs-2/tab/tab.directive.mjs +0 -96
  343. package/esm2022/lib/tabs-2/tab-panel/tab-panel.component.mjs +0 -113
  344. package/esm2022/lib/tabs-2/tabs-content/tabs-content.component.mjs +0 -19
  345. package/esm2022/lib/tabs-2/tabs-list/tabs-list.component.mjs +0 -93
  346. package/esm2022/lib/tabs-2/tabs.component.mjs +0 -37
  347. package/esm2022/lib/tabs-2/tabs.service.mjs +0 -15
  348. package/esm2022/lib/tabs-2/tabs2.module.mjs +0 -22
  349. package/esm2022/lib/time-picker/index.mjs +0 -2
  350. package/esm2022/lib/time-picker/public_api.mjs +0 -3
  351. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +0 -110
  352. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +0 -114
  353. package/esm2022/lib/time-picker/time-picker.component.mjs +0 -517
  354. package/esm2022/lib/time-picker/time-picker.module.mjs +0 -16
  355. package/esm2022/lib/time-picker/time.utils.mjs +0 -645
  356. package/esm2022/lib/toast/index.mjs +0 -2
  357. package/esm2022/lib/toast/public_api.mjs +0 -9
  358. package/esm2022/lib/toast/toast/toast.component.mjs +0 -204
  359. package/esm2022/lib/toast/toast-body/toast-body.component.mjs +0 -21
  360. package/esm2022/lib/toast/toast-close.directive.mjs +0 -29
  361. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +0 -30
  362. package/esm2022/lib/toast/toast.module.mjs +0 -47
  363. package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +0 -18
  364. package/esm2022/lib/toast/toaster/toaster.component.mjs +0 -123
  365. package/esm2022/lib/toast/toaster/toaster.service.mjs +0 -22
  366. package/esm2022/lib/tooltip/index.mjs +0 -2
  367. package/esm2022/lib/tooltip/public_api.mjs +0 -4
  368. package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +0 -66
  369. package/esm2022/lib/tooltip/tooltip.directive.mjs +0 -204
  370. package/esm2022/lib/tooltip/tooltip.module.mjs +0 -25
  371. package/esm2022/lib/utilities/align.directive.mjs +0 -25
  372. package/esm2022/lib/utilities/bg-color.directive.mjs +0 -34
  373. package/esm2022/lib/utilities/border.directive.mjs +0 -67
  374. package/esm2022/lib/utilities/border.type.mjs +0 -2
  375. package/esm2022/lib/utilities/index.mjs +0 -2
  376. package/esm2022/lib/utilities/public_api.mjs +0 -9
  377. package/esm2022/lib/utilities/rounded.directive.mjs +0 -66
  378. package/esm2022/lib/utilities/rounded.type.mjs +0 -2
  379. package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +0 -48
  380. package/esm2022/lib/utilities/text-bg-color.directive.mjs +0 -30
  381. package/esm2022/lib/utilities/text-color.directive.mjs +0 -30
  382. package/esm2022/lib/utilities/utilities.module.mjs +0 -16
  383. package/esm2022/lib/widget/index.mjs +0 -2
  384. package/esm2022/lib/widget/public_api.mjs +0 -8
  385. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +0 -55
  386. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +0 -57
  387. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +0 -71
  388. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +0 -36
  389. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +0 -36
  390. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +0 -96
  391. package/esm2022/lib/widget/widget.module.mjs +0 -45
  392. package/esm2022/public-api.mjs +0 -53
@@ -1,645 +0,0 @@
1
- import { isValidDate } from '../calendar/calendar.utils';
2
- export const getSupportedLocale = (locale = 'default') => {
3
- let supportedLocale;
4
- try {
5
- supportedLocale = Intl.DateTimeFormat.supportedLocalesOf(locale).length ? locale : 'default';
6
- }
7
- catch (e) {
8
- supportedLocale = 'default';
9
- }
10
- return supportedLocale;
11
- };
12
- export const isHour12 = (locale = 'default') => {
13
- const supportedLocale = getSupportedLocale(locale);
14
- const hour12 = Intl.DateTimeFormat(supportedLocale, { timeStyle: 'short' }).resolvedOptions().hour12;
15
- return hour12 ?? false;
16
- };
17
- export const convert12hTo24h = (abbr, hour) => {
18
- if (abbr === 'am' && hour === 12) {
19
- return 0;
20
- }
21
- if (abbr === 'am') {
22
- return hour;
23
- }
24
- if (abbr === 'pm' && hour === 12) {
25
- return 12;
26
- }
27
- return hour + 12;
28
- };
29
- export const convert24hTo12h = (hour) => hour % 12 || 12;
30
- export const convertTimeToDate = (time) => time ? (time instanceof Date ? new Date(time) : new Date(`1970-01-01 ${time}`)) : null;
31
- // export const getAmPm = (date: Date, locale: string) => {
32
- // if (date.toLocaleTimeString(locale).includes('AM')) {
33
- // return 'am'
34
- // }
35
- // if (date.toLocaleTimeString(locale).includes('PM')) {
36
- // return 'pm'
37
- // }
38
- // return date.getHours() >= 12 ? 'pm' : 'am'
39
- // }
40
- export const getAmPm = (date, locale, options = {}) => {
41
- const dayPeriods = getDayPeriods('en-US', options);
42
- const time = new Intl.DateTimeFormat('en-US', { timeStyle: 'short', hour12: true }).format(date);
43
- const dayPeriod = dayPeriods.find(element => time.includes(element.label));
44
- return (dayPeriod?.value ?? (date.getHours() >= 12 ? 'pm' : 'am'));
45
- };
46
- export const isAm = (date) => {
47
- return date.getHours() < 12;
48
- };
49
- export const isPm = (date) => {
50
- return date.getHours() > 11;
51
- };
52
- export const isValidTimeZone = (timeZone) => {
53
- try {
54
- if (timeZone === undefined) {
55
- return false;
56
- }
57
- if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {
58
- throw new Error('Time zones not supported.');
59
- }
60
- if (typeof timeZone !== 'string') {
61
- throw new Error(`Invalid timeZone type specified: ${timeZone}`);
62
- }
63
- try {
64
- // throws an error if timezone is not valid
65
- Intl.DateTimeFormat(undefined, { timeZone: timeZone });
66
- }
67
- catch (error) {
68
- throw new Error(`Invalid timeZone string specified: ${timeZone}`);
69
- }
70
- return true;
71
- }
72
- catch (error) {
73
- console.warn(error);
74
- return false;
75
- }
76
- };
77
- export const getListOfHours = (locale, options = {}) => {
78
- const hour12 = isHour12(locale);
79
- const time = new Date(0);
80
- return Array.from({ length: 24 }, (_, i) => {
81
- time.setHours(i);
82
- const dayPeriod = getAmPm(time, locale);
83
- return {
84
- value: i,
85
- dayPeriod: dayPeriod,
86
- label: time.toLocaleTimeString(locale, {
87
- hour: '2-digit',
88
- hour12: hour12,
89
- minute: '2-digit',
90
- second: '2-digit'
91
- }).split(':')[0]
92
- };
93
- });
94
- };
95
- export const getListOfMinutes = (locale, options = {}, valueAsString = false) => {
96
- const d = new Date(0);
97
- return Array.from({ length: 60 }, (_, i) => {
98
- d.setMinutes(i);
99
- return {
100
- value: i,
101
- // value: valueAsString ? i.toString() : i,
102
- label: d.toLocaleTimeString(locale, {
103
- // ...options,
104
- hour: '2-digit',
105
- hour12: false,
106
- minute: '2-digit',
107
- second: '2-digit'
108
- }).split(':')[1]
109
- };
110
- });
111
- };
112
- export const getListOfSeconds = (locale, options = {}, valueAsString = false) => Array.from({ length: 60 }, (_, i) => {
113
- const d = new Date(0);
114
- d.setSeconds(i);
115
- return {
116
- value: i,
117
- // value: valueAsString ? i.toString() : i,
118
- label: d.toLocaleTimeString(locale, {
119
- // ...options,
120
- hour: '2-digit',
121
- hour12: false,
122
- minute: '2-digit',
123
- second: '2-digit'
124
- }).split(':')[2]
125
- };
126
- });
127
- export const getSelectedHour = (date, locale) => date instanceof Date ? (isHour12(locale) ? convert24hTo12h(date.getHours()) : date.getHours()) : '';
128
- export const getSelectedMinutes = (date) => (date ? date.getMinutes() : '');
129
- export const getSelectedSeconds = (date) => (date ? date.getSeconds() : '');
130
- // export const isAmPm = (locale: string) =>
131
- // ['am', 'AM', 'pm', 'PM'].some((el) => new Date().toLocaleString(locale).includes(el))
132
- export const isAmPm = (locale = 'default') => {
133
- const supportedLocale = getSupportedLocale(locale);
134
- const date = new Date();
135
- const time = new Intl.DateTimeFormat(supportedLocale, { timeStyle: 'short' }).format(date);
136
- const isAmPm = time.match(/(?:\p{L}\p{M}\p{P}*)+|(?:\p{L}\p{P}*)+/gu) ?? [];
137
- return isAmPm.length > 0;
138
- };
139
- export const isValidTime = (time) => {
140
- if (typeof time === 'string') {
141
- return isValidDate(time) || isValidDate(new Date(`1970-01-01 ${time}`));
142
- }
143
- return isValidDate(time);
144
- // const d = new Date(`1970-01-01 ${time}`)
145
- // return d instanceof Date && d.getTime()
146
- };
147
- // export const _getDayPeriods = (locale: string = 'default', options: DateTimeFormatOptions = {}) => {
148
- // const supportedLocale = getSupportedLocale(locale);
149
- //
150
- // const dayPeriods = { am: 'am', pm: 'pm' };
151
- //
152
- // const hour12 = isHour12(supportedLocale);
153
- // if (!hour12) {
154
- // return dayPeriods;
155
- // }
156
- //
157
- // const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
158
- // const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
159
- //
160
- // const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
161
- // dayPeriods.am = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
162
- // dayPeriods.pm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm'
163
- // return dayPeriods;
164
- // };
165
- export const getDayPeriods = (locale = 'default', options = {}) => {
166
- const supportedLocale = getSupportedLocale(locale);
167
- const dayPeriods = [
168
- { value: 'am', label: 'am' },
169
- { value: 'pm', label: 'pm' }
170
- ];
171
- const hour12 = isHour12(supportedLocale);
172
- if (!hour12) {
173
- return dayPeriods;
174
- }
175
- const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
176
- const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
177
- const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
178
- const formattedAm = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
179
- const formattedPm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm';
180
- dayPeriods.forEach((element, index, dayPeriods) => {
181
- dayPeriods[index].label = element.value === 'am' ? (formattedAm ?? 'am') : (formattedPm ?? 'pm');
182
- });
183
- return dayPeriods;
184
- };
185
- // testing
186
- // const langs = [
187
- // ['Abkhazian', 'ab'],
188
- // ['Afar', 'aa'],
189
- // ['Afrikaans', 'af'],
190
- // ['Akan', 'ak'],
191
- // ['Albanian', 'sq'],
192
- // ['Amharic', 'am'],
193
- // ['Arabic', 'ar'],
194
- // ['Aragonese', 'an'],
195
- // ['Argentina', 'es-ar'],
196
- // ['Armenian', 'hy'],
197
- // ['Assamese', 'as'],
198
- // ['Avaric', 'av'],
199
- // ['Avestan', 'ae'],
200
- // ['Aymara', 'ay'],
201
- // ['Azerbaijani', 'az'],
202
- // ['Bambara', 'bm'],
203
- // ['Bashkir', 'ba'],
204
- // ['Basque', 'eu'],
205
- // ['Belarusian', 'be'],
206
- // ['Bengali (Bangla)', 'bn'],
207
- // ['Bihari', 'bh'],
208
- // ['Bislama', 'bi'],
209
- // ['Bosnian', 'bs'],
210
- // ['Breton', 'br'],
211
- // ['Bulgarian', 'bg'],
212
- // ['Burmese', 'my'],
213
- // ['Catalan', 'ca'],
214
- // ['Chamorro', 'ch'],
215
- // ['Chechen', 'ce'],
216
- // ['Chichewa, Chewa, Nyanja', 'ny'],
217
- // ['Chinese', 'zh'],
218
- // ['Chinese (Simplified)', 'zh-Hans'],
219
- // ['Chinese (Traditional)', 'zh-Hant'],
220
- // ['Chuvash', 'cv'],
221
- // ['Cornish', 'kw'],
222
- // ['Corsican', 'co'],
223
- // ['Cree', 'cr'],
224
- // ['Croatian', 'hr'],
225
- // ['Czech', 'cs'],
226
- // ['Danish', 'da'],
227
- // ['Divehi, Dhivehi, Maldivian', 'dv'],
228
- // ['Dutch', 'nl'],
229
- // ['Dzongkha', 'dz'],
230
- // ['English', 'en'],
231
- // ['Esperanto', 'eo'],
232
- // ['Estonian', 'et'],
233
- // ['Ewe', 'ee'],
234
- // ['Faroese', 'fo'],
235
- // ['Fijian', 'fj'],
236
- // ['Finnish', 'fi'],
237
- // ['French', 'fr'],
238
- // ['Fula, Fulah, Pulaar, Pular', 'ff'],
239
- // ['Galician', 'gl'],
240
- // ['Gaelic (Scottish)', 'gd'],
241
- // ['Gaelic (Manx)', 'gv'],
242
- // ['Georgian', 'ka'],
243
- // ['German', 'de'],
244
- // ['Greek', 'el'],
245
- // ['Greenlandic', 'kl'],
246
- // ['Guarani', 'gn'],
247
- // ['Gujarati', 'gu'],
248
- // ['Haitian Creole', 'ht'],
249
- // ['Hausa', 'ha'],
250
- // ['Hebrew', 'he'],
251
- // ['Herero', 'hz'],
252
- // ['Hindi', 'hi'],
253
- // ['Hiri Motu', 'ho'],
254
- // ['Hungarian', 'hu'],
255
- // ['Icelandic', 'is'],
256
- // ['Ido', 'io'],
257
- // ['Igbo', 'ig'],
258
- // ['Indonesian', 'id', 'in'],
259
- // ['Interlingua', 'ia'],
260
- // ['Interlingue', 'ie'],
261
- // ['Inuktitut', 'iu'],
262
- // ['Inupiak', 'ik'],
263
- // ['Irish', 'ga'],
264
- // ['Italian', 'it'],
265
- // ['Japanese', 'ja'],
266
- // ['Javanese', 'jv'],
267
- // ['Kalaallisut, Greenlandic', 'kl'],
268
- // ['Kannada', 'kn'],
269
- // ['Kanuri', 'kr'],
270
- // ['Kashmiri', 'ks'],
271
- // ['Kazakh', 'kk'],
272
- // ['Khmer', 'km'],
273
- // ['Kikuyu', 'ki'],
274
- // ['Kinyarwanda (Rwanda)', 'rw'],
275
- // ['Kirundi', 'rn'],
276
- // ['Kyrgyz', 'ky'],
277
- // ['Komi', 'kv'],
278
- // ['Kongo', 'kg'],
279
- // ['Korean', 'ko'],
280
- // ['Kurdish', 'ku'],
281
- // ['Kwanyama', 'kj'],
282
- // ['Lao', 'lo'],
283
- // ['Latin', 'la'],
284
- // ['Latvian (Lettish)', 'lv'],
285
- // ['Limburgish (Limburger)', 'li'],
286
- // ['Lingala', 'ln'],
287
- // ['Lithuanian', 'lt'],
288
- // ['Luga-Katanga', 'lu'],
289
- // ['Luganda, Ganda', 'lg'],
290
- // ['Luxembourgish', 'lb'],
291
- // ['Manx', 'gv'],
292
- // ['Macedonian', 'mk'],
293
- // ['Malagasy', 'mg'],
294
- // ['Malay', 'ms'],
295
- // ['Malayalam', 'ml'],
296
- // ['Maltese', 'mt'],
297
- // ['Maori', 'mi'],
298
- // ['Marathi', 'mr'],
299
- // ['Marshallese', 'mh'],
300
- // ['Moldavian', 'mo'],
301
- // ['Mongolian', 'mn'],
302
- // ['Nauru', 'na'],
303
- // ['Navajo', 'nv'],
304
- // ['Ndonga', 'ng'],
305
- // ['Northern Ndebele', 'nd'],
306
- // ['Nepali', 'ne'],
307
- // ['Norwegian', 'no'],
308
- // ['Norwegian bokmål', 'nb'],
309
- // ['Norwegian nynorsk', 'nn'],
310
- // ['Nuosu', 'ii'],
311
- // ['Occitan', 'oc'],
312
- // ['Ojibwe', 'oj'],
313
- // ['Old Church Slavonic, Old Bulgarian', 'cu'],
314
- // ['Oriya', 'or'],
315
- // ['Oromo (Afaan Oromo)', 'om'],
316
- // ['Ossetian', 'os'],
317
- // ['Pāli', 'pi'],
318
- // ['Pashto, Pushto', 'ps'],
319
- // ['Persian (Farsi)', 'fa'],
320
- // ['Polish', 'pl'],
321
- // ['Portuguese', 'pt'],
322
- // ['Punjabi (Eastern)', 'pa'],
323
- // ['Quechua', 'qu'],
324
- // ['Romansh', 'rm'],
325
- // ['Romanian', 'ro'],
326
- // ['Russian', 'ru'],
327
- // ['Sami', 'se'],
328
- // ['Samoan', 'sm'],
329
- // ['Sango', 'sg'],
330
- // ['Sanskrit', 'sa'],
331
- // ['Serbian', 'sr'],
332
- // ['Serbo-Croatian', 'sh'],
333
- // ['Sesotho', 'st'],
334
- // ['Setswana', 'tn'],
335
- // ['Shona', 'sn'],
336
- // ['Sichuan Yi', 'ii'],
337
- // ['Sindhi', 'sd'],
338
- // ['Sinhalese', 'si'],
339
- // ['Siswati', 'ss'],
340
- // ['Slovak', 'sk'],
341
- // ['Slovenian', 'sl'],
342
- // ['Somali', 'so'],
343
- // ['Southern Ndebele', 'nr'],
344
- // ['Spanish', 'es'],
345
- // ['Sundanese', 'su'],
346
- // ['Swahili (Kiswahili)', 'sw'],
347
- // ['Swati', 'ss'],
348
- // ['Swedish', 'sv'],
349
- // ['Tagalog', 'tl'],
350
- // ['Tahitian', 'ty'],
351
- // ['Tajik', 'tg'],
352
- // ['Tamil', 'ta'],
353
- // ['Tatar', 'tt'],
354
- // ['Telugu', 'te'],
355
- // ['Thai', 'th'],
356
- // ['Tibetan', 'bo'],
357
- // ['Tigrinya', 'ti'],
358
- // ['Tonga', 'to'],
359
- // ['Tsonga', 'ts'],
360
- // ['Turkish', 'tr'],
361
- // ['Turkmen', 'tk'],
362
- // ['Twi', 'tw'],
363
- // ['Uyghur', 'ug'],
364
- // ['Ukrainian', 'uk'],
365
- // ['Urdu', 'ur'],
366
- // ['Uzbek', 'uz'],
367
- // ['Venda', 've'],
368
- // ['Vietnamese', 'vi'],
369
- // ['Volapük', 'vo'],
370
- // ['Wallon', 'wa'],
371
- // ['Welsh', 'cy'],
372
- // ['Wolof', 'wo'],
373
- // ['Western Frisian', 'fy'],
374
- // ['Xhosa', 'xh'],
375
- // ['Yiddish', 'yi', 'ji'],
376
- // ['Yoruba', 'yo'],
377
- // ['Zhuang, Chuang', 'za'],
378
- // ['Zulu', 'zu'],
379
- // ]
380
- //
381
- // langs.forEach(lang => {const period = getDayPeriods(lang[1]); if (period.am === 'AM') return; console.log(lang[1], period )})
382
- // Chrome / Opera
383
- // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
384
- // Arabic ar {am: 'ص', pm: 'م'}
385
- // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
386
- // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
387
- // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
388
- // Hindi hi {am: 'am', pm: 'pm'}
389
- // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
390
- // Korean ko {am: '오전', pm: '오후'}
391
- // Malay ms {am: 'PG', pm: 'PTG'}
392
- // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
393
- // Edge Chromium
394
- // Albanian sq {am: 'e paradites', pm: 'e pasdites'}
395
- // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
396
- // Arabic ar {am: 'ص', pm: 'م'}
397
- // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
398
- // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
399
- // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
400
- // Hindi hi {am: 'am', pm: 'pm'}
401
- // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
402
- // Korean ko {am: '오전', pm: '오후'}
403
- // Malay ms {am: 'PG', pm: 'PTG'}
404
- // Punjabi (Eastern) pa {am: 'ਪੂ.ਦੁ.', pm: 'ਬਾ.ਦੁ.'}
405
- // Sindhi sd {am: 'صبح، منجهند', pm: 'منجهند، شام'}
406
- // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
407
- // Firefox
408
- // Akan ak { am: "AN", pm: "EW" }
409
- // Albanian sq { am: "e paradites", pm: "e pasdites" }
410
- // Amharic am { am: "ጥዋት", pm: "ከሰዓት" }
411
- // Arabic ar { am: "ص", pm: "م" }
412
- // Assamese as { am: "পূৰ্বাহ্ন", pm: "অপৰাহ্ন" }
413
- // Bulgarian bg { am: "пр.об.", pm: "сл.об." }
414
- // Chinese (Traditional) zh-Hant { am: "上午", pm: "下午" }
415
- // Dzongkha dz { am: "སྔ་ཆ་", pm: "ཕྱི་ཆ་" }
416
- // Ewe ee { am: "ŋdi", pm: "ɣetrɔ" }
417
- // Greek el { am: "π.μ.", pm: "μ.μ." }
418
- // Hindi hi { am: "am", pm: "pm" }
419
- // Kannada kn { am: "ಪೂರ್ವಾಹ್ನ", pm: "ಅಪರಾಹ್ನ" }
420
- // Korean ko { am: "오전", pm: "오후" }
421
- // Malay ms { am: "PG", pm: "PTG" }
422
- // Oromo (Afaan Oromo) om { am: "WD", pm: "WB" }
423
- // Punjabi (Eastern) pa { am: "ਪੂ.ਦੁ.", pm: "ਬਾ.ਦੁ." }
424
- // Sanskrit sa { am: "पूर्वाह्न", pm: "अपराह्न" }
425
- // Sindhi sd { am: "صبح، منجهند", pm: "منجهند، شام" }
426
- // Somali so { am: "GH", pm: "GD" }
427
- // Tamil ta { am: "முற்பகல்", pm: "பிற்பகல்" }
428
- // Tigrinya ti { am: "ቅ.ቀ.", pm: "ድ.ቀ." }
429
- // Tonga to { am: "hengihengi", pm: "efiafi" }
430
- // Twi tw { am: "AN", pm: "EW" }
431
- // const formats = {
432
- // "ar-SA" : "dd/MM/yy",
433
- // "bg-BG" : "dd.M.yyyy",
434
- // "ca-ES" : "dd/MM/yyyy",
435
- // "zh-TW" : "yyyy/M/d",
436
- // "cs-CZ" : "d.M.yyyy",
437
- // "da-DK" : "dd-MM-yyyy",
438
- // "de-DE" : "dd.MM.yyyy",
439
- // "el-GR" : "d/M/yyyy",
440
- // "en-US" : "M/d/yyyy",
441
- // "fi-FI" : "d.M.yyyy",
442
- // "fr-FR" : "dd/MM/yyyy",
443
- // "he-IL" : "dd/MM/yyyy",
444
- // "hu-HU" : "yyyy. MM. dd.",
445
- // "is-IS" : "d.M.yyyy",
446
- // "it-IT" : "dd/MM/yyyy",
447
- // "ja-JP" : "yyyy/MM/dd",
448
- // "ko-KR" : "yyyy-MM-dd",
449
- // "nl-NL" : "d-M-yyyy",
450
- // "nb-NO" : "dd.MM.yyyy",
451
- // "pl-PL" : "yyyy-MM-dd",
452
- // "pt-BR" : "d/M/yyyy",
453
- // "ro-RO" : "dd.MM.yyyy",
454
- // "ru-RU" : "dd.MM.yyyy",
455
- // "hr-HR" : "d.M.yyyy",
456
- // "sk-SK" : "d. M. yyyy",
457
- // "sq-AL" : "yyyy-MM-dd",
458
- // "sv-SE" : "yyyy-MM-dd",
459
- // "th-TH" : "d/M/yyyy",
460
- // "tr-TR" : "dd.MM.yyyy",
461
- // "ur-PK" : "dd/MM/yyyy",
462
- // "id-ID" : "dd/MM/yyyy",
463
- // "uk-UA" : "dd.MM.yyyy",
464
- // "be-BY" : "dd.MM.yyyy",
465
- // "sl-SI" : "d.M.yyyy",
466
- // "et-EE" : "d.MM.yyyy",
467
- // "lv-LV" : "yyyy.MM.dd.",
468
- // "lt-LT" : "yyyy.MM.dd",
469
- // "fa-IR" : "MM/dd/yyyy",
470
- // "vi-VN" : "dd/MM/yyyy",
471
- // "hy-AM" : "dd.MM.yyyy",
472
- // "az-Latn-AZ" : "dd.MM.yyyy",
473
- // "eu-ES" : "yyyy/MM/dd",
474
- // "mk-MK" : "dd.MM.yyyy",
475
- // "af-ZA" : "yyyy/MM/dd",
476
- // "ka-GE" : "dd.MM.yyyy",
477
- // "fo-FO" : "dd-MM-yyyy",
478
- // "hi-IN" : "dd-MM-yyyy",
479
- // "ms-MY" : "dd/MM/yyyy",
480
- // "kk-KZ" : "dd.MM.yyyy",
481
- // "ky-KG" : "dd.MM.yy",
482
- // "sw-KE" : "M/d/yyyy",
483
- // "uz-Latn-UZ" : "dd/MM yyyy",
484
- // "tt-RU" : "dd.MM.yyyy",
485
- // "pa-IN" : "dd-MM-yy",
486
- // "gu-IN" : "dd-MM-yy",
487
- // "ta-IN" : "dd-MM-yyyy",
488
- // "te-IN" : "dd-MM-yy",
489
- // "kn-IN" : "dd-MM-yy",
490
- // "mr-IN" : "dd-MM-yyyy",
491
- // "sa-IN" : "dd-MM-yyyy",
492
- // "mn-MN" : "yy.MM.dd",
493
- // "gl-ES" : "dd/MM/yy",
494
- // "kok-IN" : "dd-MM-yyyy",
495
- // "syr-SY" : "dd/MM/yyyy",
496
- // "dv-MV" : "dd/MM/yy",
497
- // "ar-IQ" : "dd/MM/yyyy",
498
- // "zh-CN" : "yyyy/M/d",
499
- // "de-CH" : "dd.MM.yyyy",
500
- // "en-GB" : "dd/MM/yyyy",
501
- // "es-MX" : "dd/MM/yyyy",
502
- // "fr-BE" : "d/MM/yyyy",
503
- // "it-CH" : "dd.MM.yyyy",
504
- // "nl-BE" : "d/MM/yyyy",
505
- // "nn-NO" : "dd.MM.yyyy",
506
- // "pt-PT" : "dd-MM-yyyy",
507
- // "sr-Latn-CS" : "d.M.yyyy",
508
- // "sv-FI" : "d.M.yyyy",
509
- // "az-Cyrl-AZ" : "dd.MM.yyyy",
510
- // "ms-BN" : "dd/MM/yyyy",
511
- // "uz-Cyrl-UZ" : "dd.MM.yyyy",
512
- // "ar-EG" : "dd/MM/yyyy",
513
- // "zh-HK" : "d/M/yyyy",
514
- // "de-AT" : "dd.MM.yyyy",
515
- // "en-AU" : "d/MM/yyyy",
516
- // "es-ES" : "dd/MM/yyyy",
517
- // "fr-CA" : "yyyy-MM-dd",
518
- // "sr-Cyrl-CS" : "d.M.yyyy",
519
- // "ar-LY" : "dd/MM/yyyy",
520
- // "zh-SG" : "d/M/yyyy",
521
- // "de-LU" : "dd.MM.yyyy",
522
- // "en-CA" : "dd/MM/yyyy",
523
- // "es-GT" : "dd/MM/yyyy",
524
- // "fr-CH" : "dd.MM.yyyy",
525
- // "ar-DZ" : "dd-MM-yyyy",
526
- // "zh-MO" : "d/M/yyyy",
527
- // "de-LI" : "dd.MM.yyyy",
528
- // "en-NZ" : "d/MM/yyyy",
529
- // "es-CR" : "dd/MM/yyyy",
530
- // "fr-LU" : "dd/MM/yyyy",
531
- // "ar-MA" : "dd-MM-yyyy",
532
- // "en-IE" : "dd/MM/yyyy",
533
- // "es-PA" : "MM/dd/yyyy",
534
- // "fr-MC" : "dd/MM/yyyy",
535
- // "ar-TN" : "dd-MM-yyyy",
536
- // "en-ZA" : "yyyy/MM/dd",
537
- // "es-DO" : "dd/MM/yyyy",
538
- // "ar-OM" : "dd/MM/yyyy",
539
- // "en-JM" : "dd/MM/yyyy",
540
- // "es-VE" : "dd/MM/yyyy",
541
- // "ar-YE" : "dd/MM/yyyy",
542
- // "en-029" : "MM/dd/yyyy",
543
- // "es-CO" : "dd/MM/yyyy",
544
- // "ar-SY" : "dd/MM/yyyy",
545
- // "en-BZ" : "dd/MM/yyyy",
546
- // "es-PE" : "dd/MM/yyyy",
547
- // "ar-JO" : "dd/MM/yyyy",
548
- // "en-TT" : "dd/MM/yyyy",
549
- // "es-AR" : "dd/MM/yyyy",
550
- // "ar-LB" : "dd/MM/yyyy",
551
- // "en-ZW" : "M/d/yyyy",
552
- // "es-EC" : "dd/MM/yyyy",
553
- // "ar-KW" : "dd/MM/yyyy",
554
- // "en-PH" : "M/d/yyyy",
555
- // "es-CL" : "dd-MM-yyyy",
556
- // "ar-AE" : "dd/MM/yyyy",
557
- // "es-UY" : "dd/MM/yyyy",
558
- // "ar-BH" : "dd/MM/yyyy",
559
- // "es-PY" : "dd/MM/yyyy",
560
- // "ar-QA" : "dd/MM/yyyy",
561
- // "es-BO" : "dd/MM/yyyy",
562
- // "es-SV" : "dd/MM/yyyy",
563
- // "es-HN" : "dd/MM/yyyy",
564
- // "es-NI" : "dd/MM/yyyy",
565
- // "es-PR" : "dd/MM/yyyy",
566
- // "am-ET" : "d/M/yyyy",
567
- // "tzm-Latn-DZ" : "dd-MM-yyyy",
568
- // "iu-Latn-CA" : "d/MM/yyyy",
569
- // "sma-NO" : "dd.MM.yyyy",
570
- // "mn-Mong-CN" : "yyyy/M/d",
571
- // "gd-GB" : "dd/MM/yyyy",
572
- // "en-MY" : "d/M/yyyy",
573
- // "prs-AF" : "dd/MM/yy",
574
- // "bn-BD" : "dd-MM-yy",
575
- // "wo-SN" : "dd/MM/yyyy",
576
- // "rw-RW" : "M/d/yyyy",
577
- // "qut-GT" : "dd/MM/yyyy",
578
- // "sah-RU" : "MM.dd.yyyy",
579
- // "gsw-FR" : "dd/MM/yyyy",
580
- // "co-FR" : "dd/MM/yyyy",
581
- // "oc-FR" : "dd/MM/yyyy",
582
- // "mi-NZ" : "dd/MM/yyyy",
583
- // "ga-IE" : "dd/MM/yyyy",
584
- // "se-SE" : "yyyy-MM-dd",
585
- // "br-FR" : "dd/MM/yyyy",
586
- // "smn-FI" : "d.M.yyyy",
587
- // "moh-CA" : "M/d/yyyy",
588
- // "arn-CL" : "dd-MM-yyyy",
589
- // "ii-CN" : "yyyy/M/d",
590
- // "dsb-DE" : "d. M. yyyy",
591
- // "ig-NG" : "d/M/yyyy",
592
- // "kl-GL" : "dd-MM-yyyy",
593
- // "lb-LU" : "dd/MM/yyyy",
594
- // "ba-RU" : "dd.MM.yy",
595
- // "nso-ZA" : "yyyy/MM/dd",
596
- // "quz-BO" : "dd/MM/yyyy",
597
- // "yo-NG" : "d/M/yyyy",
598
- // "ha-Latn-NG" : "d/M/yyyy",
599
- // "fil-PH" : "M/d/yyyy",
600
- // "ps-AF" : "dd/MM/yy",
601
- // "fy-NL" : "d-M-yyyy",
602
- // "ne-NP" : "M/d/yyyy",
603
- // "se-NO" : "dd.MM.yyyy",
604
- // "iu-Cans-CA" : "d/M/yyyy",
605
- // "sr-Latn-RS" : "d.M.yyyy",
606
- // "si-LK" : "yyyy-MM-dd",
607
- // "sr-Cyrl-RS" : "d.M.yyyy",
608
- // "lo-LA" : "dd/MM/yyyy",
609
- // "km-KH" : "yyyy-MM-dd",
610
- // "cy-GB" : "dd/MM/yyyy",
611
- // "bo-CN" : "yyyy/M/d",
612
- // "sms-FI" : "d.M.yyyy",
613
- // "as-IN" : "dd-MM-yyyy",
614
- // "ml-IN" : "dd-MM-yy",
615
- // "en-IN" : "dd-MM-yyyy",
616
- // "or-IN" : "dd-MM-yy",
617
- // "bn-IN" : "dd-MM-yy",
618
- // "tk-TM" : "dd.MM.yy",
619
- // "bs-Latn-BA" : "d.M.yyyy",
620
- // "mt-MT" : "dd/MM/yyyy",
621
- // "sr-Cyrl-ME" : "d.M.yyyy",
622
- // "se-FI" : "d.M.yyyy",
623
- // "zu-ZA" : "yyyy/MM/dd",
624
- // "xh-ZA" : "yyyy/MM/dd",
625
- // "tn-ZA" : "yyyy/MM/dd",
626
- // "hsb-DE" : "d. M. yyyy",
627
- // "bs-Cyrl-BA" : "d.M.yyyy",
628
- // "tg-Cyrl-TJ" : "dd.MM.yy",
629
- // "sr-Latn-BA" : "d.M.yyyy",
630
- // "smj-NO" : "dd.MM.yyyy",
631
- // "rm-CH" : "dd/MM/yyyy",
632
- // "smj-SE" : "yyyy-MM-dd",
633
- // "quz-EC" : "dd/MM/yyyy",
634
- // "quz-PE" : "dd/MM/yyyy",
635
- // "hr-BA" : "d.M.yyyy.",
636
- // "sr-Latn-ME" : "d.M.yyyy",
637
- // "sma-SE" : "yyyy-MM-dd",
638
- // "en-SG" : "d/M/yyyy",
639
- // "ug-CN" : "yyyy-M-d",
640
- // "sr-Cyrl-BA" : "d.M.yyyy",
641
- // "es-US" : "M/d/yyyy"
642
- // };
643
- //
644
- // Object.keys(formats).forEach(lang => {const period = getDayPeriods(lang); if (period.am === 'AM') return; console.log(lang, period )})
645
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFnQ3pELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBaUIsU0FBUyxFQUFFLEVBQUU7SUFDL0QsSUFBSSxlQUF1QixDQUFDO0lBQzVCLElBQUksQ0FBQztRQUNILGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0YsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxTQUFpQixTQUFTLEVBQVcsRUFBRTtJQUM5RCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNyRyxPQUFPLE1BQU0sSUFBSSxLQUFLLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBaUIsRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUNqRSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFD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QjtBQUM1Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDJCQUEyQjtBQUMzQiwyQkFBMkI7QUFDM0IsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsS0FBSztBQUNMLEVBQUU7QUFDRix5SUFBeUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkRGF0ZSB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUZvcm1hdE9wdGlvbnMge1xuICBsb2NhbGVNYXRjaGVyPzogJ2Jlc3QgZml0JyB8ICdsb29rdXAnIHwgdW5kZWZpbmVkO1xuICB3ZWVrZGF5PzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgdW5kZWZpbmVkO1xuICBlcmE/OiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycgfCB1bmRlZmluZWQ7XG4gIHllYXI/OiAnbnVtZXJpYycgfCAnMi1kaWdpdCcgfCB1bmRlZmluZWQ7XG4gIG1vbnRoPzogJ251bWVyaWMnIHwgJzItZGlnaXQnIHwgJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgdW5kZWZpbmVkO1xuICBkYXk/OiAnbnVtZXJpYycgfCAnMi1kaWdpdCcgfCB1bmRlZmluZWQ7XG4gIGhvdXI/OiAnbnVtZXJpYycgfCAnMi1kaWdpdCcgfCB1bmRlZmluZWQ7XG4gIG1pbnV0ZT86ICdudW1lcmljJyB8ICcyLWRpZ2l0JyB8IHVuZGVmaW5lZDtcbiAgc2Vjb25kPzogJ251bWVyaWMnIHwgJzItZGlnaXQnIHwgdW5kZWZpbmVkO1xuICB0aW1lWm9uZU5hbWU/OiAnbG9uZycgfCAnc2hvcnQnIHwgdW5kZWZpbmVkO1xuICBmb3JtYXRNYXRjaGVyPzogJ2Jlc3QgZml0JyB8ICdiYXNpYycgfCB1bmRlZmluZWQ7XG4gIGhvdXIxMj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHRpbWVab25lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBEYXlQZXJpb2QgPSAoJ2FtJyB8ICdwbScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lVmFsdWUge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xuICBkYXlQZXJpb2Q/OiBEYXlQZXJpb2Q7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF5UGVyaW9kcyB7XG4gIGFtOiBzdHJpbmc7XG4gIHBtOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRTdXBwb3J0ZWRMb2NhbGUgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcpID0+IHtcbiAgbGV0IHN1cHBvcnRlZExvY2FsZTogc3RyaW5nO1xuICB0cnkge1xuICAgIHN1cHBvcnRlZExvY2FsZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZSkubGVuZ3RoID8gbG9jYWxlIDogJ2RlZmF1bHQnO1xuICB9IGNhdGNoIChlKSB7XG4gICAgc3VwcG9ydGVkTG9jYWxlID0gJ2RlZmF1bHQnO1xuICB9XG4gIHJldHVybiBzdXBwb3J0ZWRMb2NhbGU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIb3VyMTIgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcpOiBib29sZWFuID0+IHtcbiAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gZ2V0U3VwcG9ydGVkTG9jYWxlKGxvY2FsZSk7XG4gIGNvbnN0IGhvdXIxMiA9IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IHRpbWVTdHlsZTogJ3Nob3J0JyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5ob3VyMTI7XG4gIHJldHVybiBob3VyMTIgPz8gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydDEyaFRvMjRoID0gKGFiYnI6ICdhbScgfCAncG0nLCBob3VyOiBudW1iZXIpID0+IHtcbiAgaWYgKGFiYnIgPT09ICdhbScgJiYgaG91ciA9PT0gMTIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoYWJiciA9PT0gJ2FtJykge1xuICAgIHJldHVybiBob3VyO1xuICB9XG4gIGlmIChhYmJyID09PSAncG0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgcmV0dXJuIDEyO1xuICB9XG4gIHJldHVybiBob3VyICsgMTI7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydDI0aFRvMTJoID0gKGhvdXI6IG51bWJlcikgPT4gaG91ciAlIDEyIHx8IDEyO1xuXG5leHBvcnQgY29uc3QgY29udmVydFRpbWVUb0RhdGUgPSAodGltZTogRGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpID0+XG4gIHRpbWUgPyAodGltZSBpbnN0YW5jZW9mIERhdGUgPyBuZXcgRGF0ZSh0aW1lKSA6IG5ldyBEYXRlKGAxOTcwLTAxLTAxICR7dGltZX1gKSkgOiBudWxsO1xuXG4vLyBleHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykgPT4ge1xuLy8gICBpZiAoZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlKS5pbmNsdWRlcygnQU0nKSkge1xuLy8gICAgIHJldHVybiAnYW0nXG4vLyAgIH1cbi8vICAgaWYgKGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoJ1BNJykpIHtcbi8vICAgICByZXR1cm4gJ3BtJ1xuLy8gICB9XG4vLyAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJ1xuLy8gfVxuXG5leHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pOiBEYXlQZXJpb2QgPT4ge1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKCdlbi1VUycsIG9wdGlvbnMpO1xuICBjb25zdCB0aW1lID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywgeyB0aW1lU3R5bGU6ICdzaG9ydCcsIGhvdXIxMjogdHJ1ZSB9KS5mb3JtYXQoZGF0ZSk7XG5cbiAgY29uc3QgZGF5UGVyaW9kID0gZGF5UGVyaW9kcy5maW5kKGVsZW1lbnQgPT4gdGltZS5pbmNsdWRlcyhlbGVtZW50LmxhYmVsKSk7XG5cbiAgcmV0dXJuIDxEYXlQZXJpb2Q+KGRheVBlcmlvZD8udmFsdWUgPz8gKGRhdGUuZ2V0SG91cnMoKSA+PSAxMiA/ICdwbScgOiAnYW0nKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNBbSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldEhvdXJzKCkgPCAxMjtcbn07XG5leHBvcnQgY29uc3QgaXNQbSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldEhvdXJzKCkgPiAxMTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZVpvbmUgPSAodGltZVpvbmU6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgdHJ5IHtcbiAgICBpZiAodGltZVpvbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghSW50bCB8fCAhSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RpbWUgem9uZXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRpbWVab25lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRpbWVab25lIHR5cGUgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyB0aHJvd3MgYW4gZXJyb3IgaWYgdGltZXpvbmUgaXMgbm90IHZhbGlkXG4gICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KHVuZGVmaW5lZCwgeyB0aW1lWm9uZTogdGltZVpvbmUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSBzdHJpbmcgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mSG91cnMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKGxvY2FsZSk7XG4gIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiB7XG4gICAgdGltZS5zZXRIb3VycyhpKTtcbiAgICBjb25zdCBkYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIGxvY2FsZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgZGF5UGVyaW9kOiA8RGF5UGVyaW9kPmRheVBlcmlvZCxcbiAgICAgIGxhYmVsOiB0aW1lLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICBob3VyMTI6IGhvdXIxMixcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnXG4gICAgICB9KS5zcGxpdCgnOicpWzBdXG4gICAgfTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mTWludXRlcyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30sIHZhbHVlQXNTdHJpbmcgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBkID0gbmV3IERhdGUoMCk7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4ge1xuICAgIGQuc2V0TWludXRlcyhpKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IGksXG4gICAgICAvLyB2YWx1ZTogdmFsdWVBc1N0cmluZyA/IGkudG9TdHJpbmcoKSA6IGksXG4gICAgICBsYWJlbDogZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgIC8vIC4uLm9wdGlvbnMsXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnXG4gICAgICB9KS5zcGxpdCgnOicpWzFdXG4gICAgfTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mU2Vjb25kcyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30sIHZhbHVlQXNTdHJpbmcgPSBmYWxzZSkgPT5cbiAgQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoMCk7XG4gICAgZC5zZXRTZWNvbmRzKGkpO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogaSxcbiAgICAgIC8vIHZhbHVlOiB2YWx1ZUFzU3RyaW5nID8gaS50b1N0cmluZygpIDogaSxcbiAgICAgIGxhYmVsOiBkLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgLy8gLi4ub3B0aW9ucyxcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCdcbiAgICAgIH0pLnNwbGl0KCc6JylbMl1cbiAgICB9O1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkSG91ciA9IChkYXRlOiBEYXRlIHwgbnVsbCwgbG9jYWxlOiBzdHJpbmcpID0+XG4gIGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gKGlzSG91cjEyKGxvY2FsZSkgPyBjb252ZXJ0MjRoVG8xMmgoZGF0ZS5nZXRIb3VycygpKSA6IGRhdGUuZ2V0SG91cnMoKSkgOiAnJztcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkTWludXRlcyA9IChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gKGRhdGUgPyBkYXRlLmdldE1pbnV0ZXMoKSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkU2Vjb25kcyA9IChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gKGRhdGUgPyBkYXRlLmdldFNlY29uZHMoKSA6ICcnKTtcblxuLy8gZXhwb3J0IGNvbnN0IGlzQW1QbSA9IChsb2NhbGU6IHN0cmluZykgPT5cbi8vICAgWydhbScsICdBTScsICdwbScsICdQTSddLnNvbWUoKGVsKSA9PiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoZWwpKVxuXG5leHBvcnQgY29uc3QgaXNBbVBtID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgY29uc3QgdGltZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwgeyB0aW1lU3R5bGU6ICdzaG9ydCcgfSkuZm9ybWF0KGRhdGUpO1xuICBjb25zdCBpc0FtUG0gPSB0aW1lLm1hdGNoKC8oPzpcXHB7TH1cXHB7TX1cXHB7UH0qKSt8KD86XFxwe0x9XFxwe1B9KikrL2d1KSA/PyBbXTtcbiAgcmV0dXJuIGlzQW1QbS5sZW5ndGggPiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lID0gKHRpbWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXIgfCBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpc1ZhbGlkRGF0ZSh0aW1lKSB8fCBpc1ZhbGlkRGF0ZShuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpO1xuICB9XG4gIHJldHVybiBpc1ZhbGlkRGF0ZSh0aW1lKTtcbiAgLy8gY29uc3QgZCA9IG5ldyBEYXRlKGAxOTcwLTAxLTAxICR7dGltZX1gKVxuICAvLyByZXR1cm4gZCBpbnN0YW5jZW9mIERhdGUgJiYgZC5nZXRUaW1lKClcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBfZ2V0RGF5UGVyaW9kcyA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0Jywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pID0+IHtcbi8vICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gZ2V0U3VwcG9ydGVkTG9jYWxlKGxvY2FsZSk7XG4vL1xuLy8gICBjb25zdCBkYXlQZXJpb2RzID0geyBhbTogJ2FtJywgcG06ICdwbScgfTtcbi8vXG4vLyAgIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKHN1cHBvcnRlZExvY2FsZSk7XG4vLyAgIGlmICghaG91cjEyKSB7XG4vLyAgICAgcmV0dXJuIGRheVBlcmlvZHM7XG4vLyAgIH1cbi8vXG4vLyAgIGNvbnN0IGFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMTk3MCwgMCwgMSwgMCwgMCwgMCkpO1xuLy8gICBjb25zdCBwbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDEzLCAwLCAwKSk7XG4vL1xuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHsgaG91cjEyOiBob3VyMTIsIGhvdXI6ICdudW1lcmljJywgdGltZVpvbmU6ICdVVEMnIH0pO1xuLy8gICBkYXlQZXJpb2RzLmFtID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoYW0pLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWUgPz8gJ2FtJztcbi8vICAgZGF5UGVyaW9kcy5wbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKHBtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdwbSdcbi8vICAgcmV0dXJuIGRheVBlcmlvZHM7XG4vLyB9O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF5UGVyaW9kcyA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0Jywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gZ2V0U3VwcG9ydGVkTG9jYWxlKGxvY2FsZSk7XG5cbiAgY29uc3QgZGF5UGVyaW9kcyA9IFtcbiAgICB7IHZhbHVlOiAnYW0nLCBsYWJlbDogJ2FtJyB9LFxuICAgIHsgdmFsdWU6ICdwbScsIGxhYmVsOiAncG0nIH1cbiAgXTtcblxuICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihzdXBwb3J0ZWRMb2NhbGUpO1xuICBpZiAoIWhvdXIxMikge1xuICAgIHJldHVybiBkYXlQZXJpb2RzO1xuICB9XG5cbiAgY29uc3QgYW0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAwLCAwLCAwKSk7XG4gIGNvbnN0IHBtID0gbmV3IERhdGUoRGF0ZS5VVEMoMTk3MCwgMCwgMSwgMTMsIDAsIDApKTtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IGhvdXIxMjogaG91cjEyLCBob3VyOiAnbnVtZXJpYycsIHRpbWVab25lOiAnVVRDJyB9KTtcbiAgY29uc3QgZm9ybWF0dGVkQW0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhhbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAnYW0nO1xuICBjb25zdCBmb3JtYXR0ZWRQbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKHBtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdwbSc7XG5cbiAgZGF5UGVyaW9kcy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCwgZGF5UGVyaW9kcykgPT4ge1xuICAgIGRheVBlcmlvZHNbaW5kZXhdLmxhYmVsID0gZWxlbWVudC52YWx1ZSA9PT0gJ2FtJyA/IChmb3JtYXR0ZWRBbSA/PyAnYW0nKSA6IChmb3JtYXR0ZWRQbSA/PyAncG0nKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRheVBlcmlvZHM7XG59O1xuXG4vLyB0ZXN0aW5nXG4vLyBjb25zdCBsYW5ncyA9IFtcbi8vICAgWydBYmtoYXppYW4nLCAnYWInXSxcbi8vICAgWydBZmFyJywgJ2FhJ10sXG4vLyAgIFsnQWZyaWthYW5zJywgJ2FmJ10sXG4vLyAgIFsnQWthbicsICdhayddLFxuLy8gICBbJ0FsYmFuaWFuJywgJ3NxJ10sXG4vLyAgIFsnQW1oYXJpYycsICdhbSddLFxuLy8gICBbJ0FyYWJpYycsICdhciddLFxuLy8gICBbJ0FyYWdvbmVzZScsICdhbiddLFxuLy8gICBbJ0FyZ2VudGluYScsICdlcy1hciddLFxuLy8gICBbJ0FybWVuaWFuJywgJ2h5J10sXG4vLyAgIFsnQXNzYW1lc2UnLCAnYXMnXSxcbi8vICAgWydBdmFyaWMnLCAnYXYnXSxcbi8vICAgWydBdmVzdGFuJywgJ2FlJ10sXG4vLyAgIFsnQXltYXJhJywgJ2F5J10sXG4vLyAgIFsnQXplcmJhaWphbmknLCAnYXonXSxcbi8vICAgWydCYW1iYXJhJywgJ2JtJ10sXG4vLyAgIFsnQmFzaGtpcicsICdiYSddLFxuLy8gICBbJ0Jhc3F1ZScsICdldSddLFxuLy8gICBbJ0JlbGFydXNpYW4nLCAnYmUnXSxcbi8vICAgWydCZW5nYWxpIChCYW5nbGEpJywgJ2JuJ10sXG4vLyAgIFsnQmloYXJpJywgJ2JoJ10sXG4vLyAgIFsnQmlzbGFtYScsICdiaSddLFxuLy8gICBbJ0Jvc25pYW4nLCAnYnMnXSxcbi8vICAgWydCcmV0b24nLCAnYnInXSxcbi8vICAgWydCdWxnYXJpYW4nLCAnYmcnXSxcbi8vICAgWydCdXJtZXNlJywgJ215J10sXG4vLyAgIFsnQ2F0YWxhbicsICdjYSddLFxuLy8gICBbJ0NoYW1vcnJvJywgJ2NoJ10sXG4vLyAgIFsnQ2hlY2hlbicsICdjZSddLFxuLy8gICBbJ0NoaWNoZXdhLCBDaGV3YSwgTnlhbmphJywgJ255J10sXG4vLyAgIFsnQ2hpbmVzZScsICd6aCddLFxuLy8gICBbJ0NoaW5lc2UgKFNpbXBsaWZpZWQpJywgJ3poLUhhbnMnXSxcbi8vICAgWydDaGluZXNlIChUcmFkaXRpb25hbCknLCAnemgtSGFudCddLFxuLy8gICBbJ0NodXZhc2gnLCAnY3YnXSxcbi8vICAgWydDb3JuaXNoJywgJ2t3J10sXG4vLyAgIFsnQ29yc2ljYW4nLCAnY28nXSxcbi8vICAgWydDcmVlJywgJ2NyJ10sXG4vLyAgIFsnQ3JvYXRpYW4nLCAnaHInXSxcbi8vICAgWydDemVjaCcsICdjcyddLFxuLy8gICBbJ0RhbmlzaCcsICdkYSddLFxuLy8gICBbJ0RpdmVoaSwgRGhpdmVoaSwgTWFsZGl2aWFuJywgJ2R2J10sXG4vLyAgIFsnRHV0Y2gnLCAnbmwnXSxcbi8vICAgWydEem9uZ2toYScsICdkeiddLFxuLy8gICBbJ0VuZ2xpc2gnLCAnZW4nXSxcbi8vICAgWydFc3BlcmFudG8nLCAnZW8nXSxcbi8vICAgWydFc3RvbmlhbicsICdldCddLFxuLy8gICBbJ0V3ZScsICdlZSddLFxuLy8gICBbJ0Zhcm9lc2UnLCAnZm8nXSxcbi8vICAgWydGaWppYW4nLCAnZmonXSxcbi8vICAgWydGaW5uaXNoJywgJ2ZpJ10sXG4vLyAgIFsnRnJlbmNoJywgJ2ZyJ10sXG4vLyAgIFsnRnVsYSwgRnVsYWgsIFB1bGFhciwgUHVsYXInLCAnZmYnXSxcbi8vICAgWydHYWxpY2lhbicsICdnbCddLFxuLy8gICBbJ0dhZWxpYyAoU2NvdHRpc2gpJywgJ2dkJ10sXG4vLyAgIFsnR2FlbGljIChNYW54KScsICdndiddLFxuLy8gICBbJ0dlb3JnaWFuJywgJ2thJ10sXG4vLyAgIFsnR2VybWFuJywgJ2RlJ10sXG4vLyAgIFsnR3JlZWsnLCAnZWwnXSxcbi8vICAgWydHcmVlbmxhbmRpYycsICdrbCddLFxuLy8gICBbJ0d1YXJhbmknLCAnZ24nXSxcbi8vICAgWydHdWphcmF0aScsICdndSddLFxuLy8gICBbJ0hhaXRpYW4gQ3Jlb2xlJywgJ2h0J10sXG4vLyAgIFsnSGF1c2EnLCAnaGEnXSxcbi8vICAgWydIZWJyZXcnLCAnaGUnXSxcbi8vICAgWydIZXJlcm8nLCAnaHonXSxcbi8vICAgWydIaW5kaScsICdoaSddLFxuLy8gICBbJ0hpcmkgTW90dScsICdobyddLFxuLy8gICBbJ0h1bmdhcmlhbicsICdodSddLFxuLy8gICBbJ0ljZWxhbmRpYycsICdpcyddLFxuLy8gICBbJ0lkbycsICdpbyddLFxuLy8gICBbJ0lnYm8nLCAnaWcnXSxcbi8vICAgWydJbmRvbmVzaWFuJywgJ2lkJywgJ2luJ10sXG4vLyAgIFsnSW50ZXJsaW5ndWEnLCAnaWEnXSxcbi8vICAgWydJbnRlcmxpbmd1ZScsICdpZSddLFxuLy8gICBbJ0ludWt0aXR1dCcsICdpdSddLFxuLy8gICBbJ0ludXBpYWsnLCAnaWsnXSxcbi8vICAgWydJcmlzaCcsICdnYSddLFxuLy8gICBbJ0l0YWxpYW4nLCAnaXQnXSxcbi8vICAgWydKYXBhbmVzZScsICdqYSddLFxuLy8gICBbJ0phdmFuZXNlJywgJ2p2J10sXG4vLyAgIFsnS2FsYWFsbGlzdXQsIEdyZWVubGFuZGljJywgJ2tsJ10sXG4vLyAgIFsnS2FubmFkYScsICdrbiddLFxuLy8gICBbJ0thbnVyaScsICdrciddLFxuLy8gICBbJ0thc2htaXJpJywgJ2tzJ10sXG4vLyAgIFsnS2F6YWtoJywgJ2trJ10sXG4vLyAgIFsnS2htZXInLCAna20nXSxcbi8vICAgWydLaWt1eXUnLCAna2knXSxcbi8vICAgWydLaW55YXJ3YW5kYSAoUndhbmRhKScsICdydyddLFxuLy8gICBbJ0tpcnVuZGknLCAncm4nXSxcbi8vICAgWydLeXJneXonLCAna3knXSxcbi8vICAgWydLb21pJywgJ2t2J10sXG4vLyAgIFsnS29uZ28nLCAna2cnXSxcbi8vICAgWydLb3JlYW4nLCAna28nXSxcbi8vICAgWydLdXJkaXNoJywgJ2t1J10sXG4vLyAgIFsnS3dhbnlhbWEnLCAna2onXSxcbi8vICAgWydMYW8nLCAnbG8nXSxcbi8vICAgWydMYXRpbicsICdsYSddLFxuLy8gICBbJ0xhdHZpYW4gKExldHRpc2gpJywgJ2x2J10sXG4vLyAgIFsnTGltYnVyZ2lzaCAoTGltYnVyZ2VyKScsICdsaSddLFxuLy8gICBbJ0xpbmdhbGEnLCAnbG4nXSxcbi8vICAgWydMaXRodWFuaWFuJywgJ2x0J10sXG4vLyAgIFsnTHVnYS1LYXRhbmdhJywgJ2x1J10sXG4vLyAgIFsnTHVnYW5kYSwgR2FuZGEnLCAnbGcnXSxcbi8vICAgWydMdXhlbWJvdXJnaXNoJywgJ2xiJ10sXG4vLyAgIFsnTWFueCcsICdndiddLFxuLy8gICBbJ01hY2Vkb25pYW4nLCAnbWsnXSxcbi8vICAgWydNYWxhZ2FzeScsICdtZyddLFxuLy8gICBbJ01hbGF5JywgJ21zJ10sXG4vLyAgIFsnTWFsYXlhbGFtJywgJ21sJ10sXG4vLyAgIFsnTWFsdGVzZScsICdtdCddLFxuLy8gICBbJ01hb3JpJywgJ21pJ10sXG4vLyAgIFsnTWFyYXRoaScsICdtciddLFxuLy8gICBbJ01hcnNoYWxsZXNlJywgJ21oJ10sXG4vLyAgIFsnTW9sZGF2aWFuJywgJ21vJ10sXG4vLyAgIFsnTW9uZ29saWFuJywgJ21uJ10sXG4vLyAgIFsnTmF1cnUnLCAnbmEnXSxcbi8vICAgWydOYXZham8nLCAnbnYnXSxcbi8vICAgWydOZG9uZ2EnLCAnbmcnXSxcbi8vICAgWydOb3J0aGVybiBOZGViZWxlJywgJ25kJ10sXG4vLyAgIFsnTmVwYWxpJywgJ25lJ10sXG4vLyAgIFsnTm9yd2VnaWFuJywgJ25vJ10sXG4vLyAgIFsnTm9yd2VnaWFuIGJva23DpWwnLCAnbmInXSxcbi8vICAgWydOb3J3ZWdpYW4gbnlub3JzaycsICdubiddLFxuLy8gICBbJ051b3N1JywgJ2lpJ10sXG4vLyAgIFsnT2NjaXRhbicsICdvYyddLFxuLy8gICBbJ09qaWJ3ZScsICdvaiddLFxuLy8gICBbJ09sZCBDaHVyY2ggU2xhdm9uaWMsIE9sZCBCdWxnYXJpYW4nLCAnY3UnXSxcbi8vICAgWydPcml5YScsICdvciddLFxuLy8gICBbJ09yb21vIChBZmFhbiBPcm9tbyknLCAnb20nXSxcbi8vICAgWydPc3NldGlhbicsICdvcyddLFxuLy8gICBbJ1DEgWxpJywgJ3BpJ10sXG4vLyAgIFsnUGFzaHRvLCBQdXNodG8nLCAncHMnXSxcbi8vICAgWydQZXJzaWFuIChGYXJzaSknLCAnZmEnXSxcbi8vICAgWydQb2xpc2gnLCAncGwnXSxcbi8vICAgWydQb3J0dWd1ZXNlJywgJ3B0J10sXG4vLyAgIFsnUHVuamFiaSAoRWFzdGVybiknLCAncGEnXSxcbi8vICAgWydRdWVjaHVhJywgJ3F1J10sXG4vLyAgIFsnUm9tYW5zaCcsICdybSddLFxuLy8gICBbJ1JvbWFuaWFuJywgJ3JvJ10sXG4vLyAgIFsnUnVzc2lhbicsICdydSddLFxuLy8gICBbJ1NhbWknLCAnc2UnXSxcbi8vICAgWydTYW1vYW4nLCAnc20nXSxcbi8vICAgWydTYW5nbycsICdzZyddLFxuLy8gICBbJ1NhbnNrcml0JywgJ3NhJ10sXG4vLyAgIFsnU2VyYmlhbicsICdzciddLFxuLy8gICBbJ1NlcmJvLUNyb2F0aWFuJywgJ3NoJ10sXG4vLyAgIFsnU2Vzb3RobycsICdzdCddLFxuLy8gICBbJ1NldHN3YW5hJywgJ3RuJ10sXG4vLyAgIFsnU2hvbmEnLCAnc24nXSxcbi8vICAgWydTaWNodWFuIFlpJywgJ2lpJ10sXG4vLyAgIFsnU2luZGhpJywgJ3NkJ10sXG4vLyAgIFsnU2luaGFsZXNlJywgJ3NpJ10sXG4vLyAgIFsnU2lzd2F0aScsICdzcyddLFxuLy8gICBbJ1Nsb3ZhaycsICdzayddLFxuLy8gICBbJ1Nsb3ZlbmlhbicsICdzbCddLFxuLy8gICBbJ1NvbWFsaScsICdzbyddLFxuLy8gICBbJ1NvdXRoZXJuIE5kZWJlbGUnLCAnbnInXSxcbi8vICAgWydTcGFuaXNoJywgJ2VzJ10sXG4vLyAgIFsnU3VuZGFuZXNlJywgJ3N1J10sXG4vLyAgIFsnU3dhaGlsaSAoS2lzd2FoaWxpKScsICdzdyddLFxuLy8gICBbJ1N3YXRpJywgJ3NzJ10sXG4vLyAgIFsnU3dlZGlzaCcsICdzdiddLFxuLy8gICBbJ1RhZ2Fsb2cnLCAndGwnXSxcbi8vICAgWydUYWhpdGlhbicsICd0eSddLFxuLy8gICBbJ1RhamlrJywgJ3RnJ10sXG4vLyAgIFsnVGFtaWwnLCAndGEnXSxcbi8vICAgWydUYXRhcicsICd0dCddLFxuLy8gICBbJ1RlbHVndScsICd0ZSddLFxuLy8gICBbJ1RoYWknLCAndGgnXSxcbi8vICAgWydUaWJldGFuJywgJ2JvJ10sXG4vLyAgIFsnVGlncmlueWEnLCAndGknXSxcbi8vICAgWydUb25nYScsICd0byddLFxuLy8gICBbJ1Rzb25nYScsICd0cyddLFxuLy8gICBbJ1R1cmtpc2gnLCAndHInXSxcbi8vICAgWydUdXJrbWVuJywgJ3RrJ10sXG4vLyAgIFsnVHdpJywgJ3R3J10sXG4vLyAgIFsnVXlnaHVyJywgJ3VnJ10sXG4vLyAgIFsnVWtyYWluaWFuJywgJ3VrJ10sXG4vLyAgIFsnVXJkdScsICd1ciddLFxuLy8gICBbJ1V6YmVrJywgJ3V6J10sXG4vLyAgIFsnVmVuZGEnLCAndmUnXSxcbi8vICAgWydWaWV0bmFtZXNlJywgJ3ZpJ10sXG4vLyAgIFsnVm9sYXDDvGsnLCAndm8nXSxcbi8vICAgWydXYWxsb24nLCAnd2EnXSxcbi8vICAgWydXZWxzaCcsICdjeSddLFxuLy8gICBbJ1dvbG9mJywgJ3dvJ10sXG4vLyAgIFsnV2VzdGVybiBGcmlzaWFuJywgJ2Z5J10sXG4vLyAgIFsnWGhvc2EnLCAneGgnXSxcbi8vICAgWydZaWRkaXNoJywgJ3lpJywgJ2ppJ10sXG4vLyAgIFsnWW9ydWJhJywgJ3lvJ10sXG4vLyAgIFsnWmh1YW5nLCBDaHVhbmcnLCAnemEnXSxcbi8vICAgWydadWx1JywgJ3p1J10sXG4vLyBdXG4vL1xuLy8gbGFuZ3MuZm9yRWFjaChsYW5nID0+IHtjb25zdCBwZXJpb2QgPSBnZXREYXlQZXJpb2RzKGxhbmdbMV0pOyBpZiAocGVyaW9kLmFtID09PSAnQU0nKSByZXR1cm47IGNvbnNvbGUubG9nKGxhbmdbMV0sIHBlcmlvZCApfSlcblxuLy8gQ2hyb21lIC8gT3BlcmFcbi8vIEFtaGFyaWMgYW0ge2FtOiAn4Yyl4YuL4Ym1JywgcG06ICfhiqjhiLDhi5PhibUnfVxuLy8gQXJhYmljIGFyIHthbTogJ9i1JywgcG06ICfZhSd9XG4vLyBCdWxnYXJpYW4gYmcge2FtOiAn0L/RgC7QvtCxLicsIHBtOiAn0YHQuy7QvtCxLid9XG4vLyBDaGluZXNlIChUcmFkaXRpb25hbCkgemgtSGFudCB7YW06ICfkuIrljYgnLCBwbTogJ+S4i+WNiCd9XG4vLyBHcmVlayBlbCB7YW06ICfPgC7OvC4nLCBwbTogJ868Ls68Lid9XG4vLyBIaW5kaSBoaSB7YW06ICdhbScsIHBtOiAncG0nfVxuLy8gS2FubmFkYSBrbiB7YW06ICfgsqrgs4LgsrDgs43gsrXgsr7gsrngs43gsqgnLCBwbTogJ+CyheCyquCysOCyvuCyueCzjeCyqCd9XG4vLyBLb3JlYW4ga28ge2FtOiAn7Jik7KCEJywgcG06ICfsmKTtm4QnfVxuLy8gTWFsYXkgbXMge2FtOiAnUEcnLCBwbTogJ1BURyd9XG4vLyBUYW1pbCB0YSB7YW06ICfgrq7gr4HgrrHgr43grqrgrpXgrrLgr40nLCBwbTogJ+CuquCuv+CuseCvjeCuquCuleCusuCvjSd9XG5cbi8vIEVkZ2UgQ2hyb21pdW1cbi8vIEFsYmFuaWFuIHNxIHthbTogJ2UgcGFyYWRpdGVzJywgcG06ICdlIHBhc2RpdGVzJ31cbi8vIEFtaGFyaWMgYW0ge2FtOiAn4Yyl4YuL4Ym1JywgcG06ICfhiqjhiLDhi5PhibUnfVxuLy8gQXJhYmljIGFyIHthbTogJ9i1JywgcG06ICfZhSd9XG4vLyBCdWxnYXJpYW4gYmcge2FtOiAn0L/RgC7QvtCxLicsIHBtOiAn0YHQuy7QvtCxLid9XG4vLyBDaGluZXNlIChUcmFkaXRpb25hbCkgemgtSGFudCB7YW06ICfkuIrljYgnLCBwbTogJ+S4i+WNiCd9XG4vLyBHcmVlayBlbCB7YW06ICfPgC7OvC4nLCBwbTogJ868Ls68Lid9XG4vLyBIaW5kaSBoaSB7YW06ICdhbScsIHBtOiAncG0nfVxuLy8gS2FubmFkYSBrbiB7YW06ICfgsqrgs4LgsrDgs43gsrXgsr7gsrngs43gsqgnLCBwbTogJ+CyheCyquCysOCyvuCyueCzjeCyqCd9XG4vLyBLb3JlYW4ga28ge2FtOiAn7Jik7KCEJywgcG06ICfsmKTtm4QnfVxuLy8gTWFsYXkgbXMge2FtOiAnUEcnLCBwbTogJ1BURyd9XG4vLyBQdW5qYWJpIChFYXN0ZXJuKSBwYSB7YW06ICfgqKrgqYIu4Kim4KmBLicsIHBtOiAn4Kis4Ki+LuCopuCpgS4nfVxuLy8gU2luZGhpIHNkIHthbTogJ9i12KjYrdiMINmF2YbYrNmH2YbYrycsIHBtOiAn2YXZhtis2YfZhtiv2Iwg2LTYp9mFJ31cbi8vIFRhbWlsIHRhIHthbTogJ+CuruCvgeCuseCvjeCuquCuleCusuCvjScsIHBtOiAn4K6q4K6/4K6x4K+N4K6q4K6V4K6y4K+NJ31cblxuLy8gRmlyZWZveFxuLy8gQWthbiBhayB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuLy8gQWxiYW5pYW4gc3EgeyBhbTogXCJlIHBhcmFkaXRlc1wiLCBwbTogXCJlIHBhc2RpdGVzXCIgfVxuLy8gQW1oYXJpYyBhbSB7IGFtOiBcIuGMpeGLi+GJtVwiLCBwbTogXCLhiqjhiLDhi5PhibVcIiB9XG4vLyBBcmFiaWMgYXIgeyBhbTogXCLYtVwiLCBwbTogXCLZhVwiIH1cbi8vIEFzc2FtZXNlIGFzIHsgYW06IFwi4Kaq4KeC4Kew4KeN4Kas4Ka+4Ka54KeN4KaoXCIsIHBtOiBcIuCmheCmquCnsOCmvuCmueCnjeCmqFwiIH1cbi8vIEJ1bGdhcmlhbiBiZyB7IGFtOiBcItC/0YAu0L7QsS5cIiwgcG06IFwi0YHQuy7QvtCxLlwiIH1cbi8vIENoaW5lc2UgKFRyYWRpdGlvbmFsKSB6aC1IYW50IHsgYW06IFwi5LiK5Y2IXCIsIHBtOiBcIuS4i+WNiFwiIH1cbi8vIER6b25na2hhIGR6IHsgYW06IFwi4L2m4L6U4LyL4L2G4LyLXCIsIHBtOiBcIuC9leC+seC9suC8i+C9huC8i1wiIH1cbi8vIEV3ZSBlZSB7IGFtOiBcIsWLZGlcIiwgcG06IFwiyaNldHLJlFwiIH1cbi8vIEdyZWVrIGVsIHsgYW06IFwiz4AuzrwuXCIsIHBtOiBcIs68Ls68LlwiIH1cbi8vIEhpbmRpIGhpIHsgYW06IFwiYW1cIiwgcG06IFwicG1cIiB9XG4vLyBLYW5uYWRhIGtuIHsgYW06IFwi4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoXCIsIHBtOiBcIuCyheCyquCysOCyvuCyueCzjeCyqFwiIH1cbi8vIEtvcmVhbiBrbyB7IGFtOiBcIuyYpOyghFwiLCBwbTogXCLsmKTtm4RcIiB9XG4vLyBNYWxheSBtcyB7IGFtOiBcIlBHXCIsIHBtOiBcIlBUR1wiIH1cbi8vIE9yb21vIChBZmFhbiBPcm9tbykgb20geyBhbTogXCJXRFwiLCBwbTogXCJXQlwiIH1cbi8vIFB1bmphYmkgKEVhc3Rlcm4pIHBhIHsgYW06IFwi4Kiq4KmCLuCopuCpgS5cIiwgcG06IFwi4Kis4Ki+LuCopuCpgS5cIiB9XG4vLyBTYW5za3JpdCBzYSB7IGFtOiBcIuCkquClguCksOCljeCkteCkvuCkueCljeCkqFwiLCBwbTogXCLgpIXgpKrgpLDgpL7gpLngpY3gpKhcIiB9XG4vLyBTaW5kaGkgc2QgeyBhbTogXCLYtdio2K3YjCDZhdmG2KzZh9mG2K9cIiwgcG06IFwi2YXZhtis2YfZhtiv2Iwg2LTYp9mFXCIgfVxuLy8gU29tYWxpIHNvIHsgYW06IFwiR0hcIiwgcG06IFwiR0RcIiB9XG4vLyBUYW1pbCB0YSB7IGFtOiBcIuCuruCvgeCuseCvjeCuquCuleCusuCvjVwiLCBwbTogXCLgrqrgrr/grrHgr43grqrgrpXgrrLgr41cIiB9XG4vLyBUaWdyaW55YSB0aSB7IGFtOiBcIuGJhS7hiYAuXCIsIHBtOiBcIuGLtS7hiYAuXCIgfVxuLy8gVG9uZ2EgdG8geyBhbTogXCJoZW5naWhlbmdpXCIsIHBtOiBcImVmaWFmaVwiIH1cbi8vIFR3aSB0dyB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuXG4vLyBjb25zdCBmb3JtYXRzID0ge1xuLy8gICBcImFyLVNBXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiYmctQkdcIiA6IFwiZGQuTS55eXl5XCIsXG4vLyAgIFwiY2EtRVNcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInpoLVRXXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiY3MtQ1pcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJkYS1ES1wiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwiZGUtREVcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVsLUdSXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZW4tVVNcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJmaS1GSVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcImZyLUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJoZS1JTFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaHUtSFVcIiA6IFwieXl5eS4gTU0uIGRkLlwiLFxuLy8gICBcImlzLUlTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiaXQtSVRcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImphLUpQXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJrby1LUlwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwibmwtTkxcIiA6IFwiZC1NLXl5eXlcIixcbi8vICAgXCJuYi1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicGwtUExcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInB0LUJSXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwicm8tUk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInJ1LVJVXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJoci1IUlwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNrLVNLXCIgOiBcImQuIE0uIHl5eXlcIixcbi8vICAgXCJzcS1BTFwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwic3YtU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInRoLVRIXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwidHItVFJcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInVyLVBLXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJpZC1JRFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwidWstVUFcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImJlLUJZXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJzbC1TSVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcImV0LUVFXCIgOiBcImQuTU0ueXl5eVwiLFxuLy8gICBcImx2LUxWXCIgOiBcInl5eXkuTU0uZGQuXCIsXG4vLyAgIFwibHQtTFRcIiA6IFwieXl5eS5NTS5kZFwiLFxuLy8gICBcImZhLUlSXCIgOiBcIk1NL2RkL3l5eXlcIixcbi8vICAgXCJ2aS1WTlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaHktQU1cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImF6LUxhdG4tQVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImV1LUVTXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJtay1NS1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiYWYtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcImthLUdFXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJmby1GT1wiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwiaGktSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcIm1zLU1ZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJray1LWlwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwia3ktS0dcIiA6IFwiZGQuTU0ueXlcIixcbi8vICAgXCJzdy1LRVwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInV6LUxhdG4tVVpcIiA6IFwiZGQvTU0geXl5eVwiLFxuLy8gICBcInR0LVJVXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJwYS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImd1LUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwidGEtSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInRlLUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwia24tSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJtci1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwic2EtSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcIm1uLU1OXCIgOiBcInl5Lk1NLmRkXCIsXG4vLyAgIFwiZ2wtRVNcIiA6IFwiZGQvTU0veXlcIixcbi8vICAgXCJrb2stSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInN5ci1TWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZHYtTVZcIiA6IFwiZGQvTU0veXlcIixcbi8vICAgXCJhci1JUVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiemgtQ05cIiA6IFwieXl5eS9NL2RcIixcbi8vICAgXCJkZS1DSFwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZW4tR0JcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLU1YXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1CRVwiIDogXCJkL01NL3l5eXlcIixcbi8vICAgXCJpdC1DSFwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibmwtQkVcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwibm4tTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInB0LVBUXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJzci1MYXRuLUNTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic3YtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhei1DeXJsLUFaXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJtcy1CTlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwidXotQ3lybC1VWlwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiYXItRUdcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInpoLUhLXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZGUtQVRcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLUFVXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcImVzLUVTXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1DQVwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwic3ItQ3lybC1DU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcImFyLUxZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1TR1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImRlLUxVXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbi1DQVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtR1RcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImZyLUNIXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJhci1EWlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwiemgtTU9cIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJkZS1MSVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZW4tTlpcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtQ1JcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImZyLUxVXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1NQVwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwiZW4tSUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBBXCIgOiBcIk1NL2RkL3l5eXlcIixcbi8vICAgXCJmci1NQ1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItVE5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImVuLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJlcy1ET1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItT01cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLUpNXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1WRVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItWUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLTAyOVwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwiZXMtQ09cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVNZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1CWlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtUEVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLUpPXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1UVFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtQVJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLUxCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1aV1wiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcImVzLUVDXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1LV1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tUEhcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJlcy1DTFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwiYXItQUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVVZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1CSFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtUFlcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVFBXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1CT1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtU1ZcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUhOXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1OSVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtUFJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFtLUVUXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwidHptLUxhdG4tRFpcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcIml1LUxhdG4tQ0FcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwic21hLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJtbi1Nb25nLUNOXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiZ2QtR0JcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLU1ZXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwicHJzLUFGXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiYm4tQkRcIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJ3by1TTlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwicnctUldcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJxdXQtR1RcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNhaC1SVVwiIDogXCJNTS5kZC55eXl5XCIsXG4vLyAgIFwiZ3N3LUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJjby1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwib2MtRlJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcIm1pLU5aXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJnYS1JRVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwic2UtU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcImJyLUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzbW4tRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJtb2gtQ0FcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJhcm4tQ0xcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImlpLUNOXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiZHNiLURFXCIgOiBcImQuIE0uIHl5eXlcIixcbi8vICAgXCJpZy1OR1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImtsLUdMXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJsYi1MVVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYmEtUlVcIiA6IFwiZGQuTU0ueXlcIixcbi8vICAgXCJuc28tWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcInF1ei1CT1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwieW8tTkdcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJoYS1MYXRuLU5HXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZmlsLVBIXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwicHMtQUZcIiA6IFwiZGQvTU0veXlcIixcbi8vICAgXCJmeS1OTFwiIDogXCJkLU0teXl5eVwiLFxuLy8gICBcIm5lLU5QXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwic2UtTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcIml1LUNhbnMtQ0FcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJzci1MYXRuLVJTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic2ktTEtcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInNyLUN5cmwtUlNcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJsby1MQVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwia20tS0hcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcImN5LUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJiby1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcInNtcy1GSVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcImFzLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtbC1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImVuLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJvci1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImJuLUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwidGstVE1cIiA6IFwiZGQuTU0ueXlcIixcbi8vICAgXCJicy1MYXRuLUJBXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibXQtTVRcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNyLUN5cmwtTUVcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzZS1GSVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInp1LVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJ4aC1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwidG4tWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcImhzYi1ERVwiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwiYnMtQ3lybC1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInRnLUN5cmwtVEpcIiA6IFwiZGQuTU0ueXlcIixcbi8vICAgXCJzci1MYXRuLUJBXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic21qLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJybS1DSFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwic21qLVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJxdXotRUNcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInF1ei1QRVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaHItQkFcIiA6IFwiZC5NLnl5eXkuXCIsXG4vLyAgIFwic3ItTGF0bi1NRVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNtYS1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwiZW4tU0dcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJ1Zy1DTlwiIDogXCJ5eXl5LU0tZFwiLFxuLy8gICBcInNyLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJlcy1VU1wiIDogXCJNL2QveXl5eVwiXG4vLyB9O1xuLy9cbi8vIE9iamVjdC5rZXlzKGZvcm1hdHMpLmZvckVhY2gobGFuZyA9PiB7Y29uc3QgcGVyaW9kID0gZ2V0RGF5UGVyaW9kcyhsYW5nKTsgaWYgKHBlcmlvZC5hbSA9PT0gJ0FNJykgcmV0dXJuOyBjb25zb2xlLmxvZyhsYW5nLCBwZXJpb2QgKX0pXG4iXX0=