ngx-vector-components 5.138.0 → 5.138.1

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 (179) hide show
  1. package/CHANGELOG.md +2730 -2724
  2. package/README.md +35 -35
  3. package/assets/icons/chevron_down_icon.svg +3 -3
  4. package/assets/icons/home_menu_icon.svg +3 -3
  5. package/assets/icons/logout_icon.svg +9 -9
  6. package/assets/icons/menu_footer_icon.svg +3 -3
  7. package/assets/icons/menu_hamburguer_icon.svg +3 -3
  8. package/assets/icons/terms_of_use_icon.svg +9 -9
  9. package/assets/icons/vector_admin_icon.svg +4 -4
  10. package/assets/icons/vector_fintech_icon.svg +3 -3
  11. package/assets/icons/vector_logtech_icon.svg +6 -6
  12. package/assets/icons/vector_marketplace_icon.svg +3 -3
  13. package/assets/images/bunge_logo.svg +23 -23
  14. package/assets/images/cofco_logo.svg +117 -117
  15. package/assets/images/emote_bad.svg +6 -6
  16. package/assets/images/emote_cool.svg +5 -5
  17. package/assets/images/emote_nice.svg +5 -5
  18. package/assets/images/success_sign.svg +4 -4
  19. package/assets/images/vector-logo-horizontal-inverse-color.svg +13 -13
  20. package/assets/images/vector_logo_horizontal.svg +13 -13
  21. package/assets/images/warn_sign.svg +4 -4
  22. package/assets/styles/_fonts.scss +114 -114
  23. package/assets/styles/_mixins.scss +7 -7
  24. package/assets/styles/_primeng-custom-theme.scss +1269 -1269
  25. package/assets/styles/_spinner.scss +35 -35
  26. package/assets/styles/_styles.scss +115 -115
  27. package/assets/styles/_variables.scss +27 -27
  28. package/esm2022/lib/components/badge/badge.component.mjs +3 -3
  29. package/esm2022/lib/components/badge/badge.module.mjs +1 -1
  30. package/esm2022/lib/components/badge/index.mjs +1 -1
  31. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +3 -3
  32. package/esm2022/lib/components/breadcrumb/breadcrumb.module.mjs +1 -1
  33. package/esm2022/lib/components/breadcrumb/index.mjs +1 -1
  34. package/esm2022/lib/components/crud-base/crud-base.component.mjs +1 -1
  35. package/esm2022/lib/components/crud-base/index.mjs +1 -1
  36. package/esm2022/lib/components/crud-footer/crud-footer.component.mjs +3 -3
  37. package/esm2022/lib/components/crud-footer/crud-footer.module.mjs +1 -1
  38. package/esm2022/lib/components/crud-footer/index.mjs +1 -1
  39. package/esm2022/lib/components/crud-header/crud-header.component.mjs +3 -3
  40. package/esm2022/lib/components/crud-header/crud-header.module.mjs +1 -1
  41. package/esm2022/lib/components/crud-header/index.mjs +1 -1
  42. package/esm2022/lib/components/crud-history/crud-history.component.mjs +3 -3
  43. package/esm2022/lib/components/crud-history/crud-history.module.mjs +1 -1
  44. package/esm2022/lib/components/crud-history/index.mjs +1 -1
  45. package/esm2022/lib/components/fields/button/button.component.mjs +3 -3
  46. package/esm2022/lib/components/fields/button/index.mjs +1 -1
  47. package/esm2022/lib/components/fields/calendar-field/calendar-field.component.mjs +3 -3
  48. package/esm2022/lib/components/fields/calendar-field/index.mjs +1 -1
  49. package/esm2022/lib/components/fields/checkbox-field/checkbox-field.component.mjs +3 -3
  50. package/esm2022/lib/components/fields/checkbox-field/index.mjs +1 -1
  51. package/esm2022/lib/components/fields/currency-field/currency-field.component.mjs +3 -3
  52. package/esm2022/lib/components/fields/currency-field/index.mjs +1 -1
  53. package/esm2022/lib/components/fields/data-table/data-table.component.mjs +3 -3
  54. package/esm2022/lib/components/fields/data-table/index.mjs +1 -1
  55. package/esm2022/lib/components/fields/dropdown-field/dropdown-field.component.mjs +3 -3
  56. package/esm2022/lib/components/fields/dropdown-field/index.mjs +1 -1
  57. package/esm2022/lib/components/fields/field-error-message/field-error-message.component.mjs +3 -3
  58. package/esm2022/lib/components/fields/field-error-message/index.mjs +1 -1
  59. package/esm2022/lib/components/fields/fields.module.mjs +1 -1
  60. package/esm2022/lib/components/fields/filters/filters.component.mjs +3 -3
  61. package/esm2022/lib/components/fields/filters/index.mjs +1 -1
  62. package/esm2022/lib/components/fields/index.mjs +1 -1
  63. package/esm2022/lib/components/fields/input-number-field/index.mjs +1 -1
  64. package/esm2022/lib/components/fields/input-number-field/input-number-field.component.mjs +3 -3
  65. package/esm2022/lib/components/fields/input-otp/index.mjs +1 -1
  66. package/esm2022/lib/components/fields/input-otp/input-otp.component.mjs +3 -3
  67. package/esm2022/lib/components/fields/input-switch-field/index.mjs +1 -1
  68. package/esm2022/lib/components/fields/input-switch-field/input-switch-field.component.mjs +3 -3
  69. package/esm2022/lib/components/fields/multiselect-field/index.mjs +1 -1
  70. package/esm2022/lib/components/fields/multiselect-field/multiselect-field.component.mjs +3 -3
  71. package/esm2022/lib/components/fields/percentage-field/index.mjs +1 -1
  72. package/esm2022/lib/components/fields/percentage-field/percentage-field.component.mjs +3 -3
  73. package/esm2022/lib/components/fields/radio-button-field/index.mjs +1 -1
  74. package/esm2022/lib/components/fields/radio-button-field/radio-button-field.component.mjs +3 -3
  75. package/esm2022/lib/components/fields/range-value/index.mjs +1 -1
  76. package/esm2022/lib/components/fields/range-value/range-value.component.mjs +3 -3
  77. package/esm2022/lib/components/fields/search-field/index.mjs +1 -1
  78. package/esm2022/lib/components/fields/search-field/search-field.component.mjs +3 -3
  79. package/esm2022/lib/components/fields/select-button-field/index.mjs +1 -1
  80. package/esm2022/lib/components/fields/select-button-field/select-button-field.component.mjs +3 -3
  81. package/esm2022/lib/components/fields/text-field/index.mjs +1 -1
  82. package/esm2022/lib/components/fields/text-field/text-field.component.mjs +3 -3
  83. package/esm2022/lib/components/fields/textarea-field/index.mjs +1 -1
  84. package/esm2022/lib/components/fields/textarea-field/textarea-field.component.mjs +3 -3
  85. package/esm2022/lib/components/generic-error-modal/generic-error-modal.component.mjs +3 -3
  86. package/esm2022/lib/components/generic-error-modal/generic-error-modal.module.mjs +1 -1
  87. package/esm2022/lib/components/generic-error-modal/index.mjs +1 -1
  88. package/esm2022/lib/components/generic-modal/generic-modal.component.mjs +3 -3
  89. package/esm2022/lib/components/generic-modal/generic-modal.module.mjs +1 -1
  90. package/esm2022/lib/components/generic-modal/index.mjs +1 -1
  91. package/esm2022/lib/components/index.mjs +1 -1
  92. package/esm2022/lib/components/menu/index.mjs +1 -1
  93. package/esm2022/lib/components/menu/menu.component.mjs +3 -3
  94. package/esm2022/lib/components/menu/menu.module.mjs +1 -1
  95. package/esm2022/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +3 -3
  96. package/esm2022/lib/components/panel/index.mjs +1 -1
  97. package/esm2022/lib/components/panel/panel.component.mjs +3 -3
  98. package/esm2022/lib/components/panel/panel.module.mjs +1 -1
  99. package/esm2022/lib/components/score/index.mjs +1 -1
  100. package/esm2022/lib/components/score/score.component.mjs +3 -3
  101. package/esm2022/lib/components/score/score.module.mjs +1 -1
  102. package/esm2022/lib/components/stepper/index.mjs +1 -1
  103. package/esm2022/lib/components/stepper/stepper.component.mjs +3 -3
  104. package/esm2022/lib/components/stepper/stepper.module.mjs +1 -1
  105. package/esm2022/lib/components/top-bar/index.mjs +1 -1
  106. package/esm2022/lib/components/top-bar/top-bar.component.mjs +3 -3
  107. package/esm2022/lib/components/top-bar/top-bar.module.mjs +1 -1
  108. package/esm2022/lib/guards/crud-list-has-items.guard.mjs +1 -1
  109. package/esm2022/lib/guards/get-token-by-guid.guard.mjs +1 -1
  110. package/esm2022/lib/guards/has-permission.guard.mjs +1 -1
  111. package/esm2022/lib/guards/index.mjs +1 -1
  112. package/esm2022/lib/guards/role.guard.mjs +1 -1
  113. package/esm2022/lib/guards/token-is-present.guard.mjs +1 -1
  114. package/esm2022/lib/injections/index.mjs +1 -1
  115. package/esm2022/lib/interceptors/http-interceptor.mjs +1 -1
  116. package/esm2022/lib/interceptors/index.mjs +1 -1
  117. package/esm2022/lib/models/app-name.enum.mjs +1 -1
  118. package/esm2022/lib/models/boolean-type.enum.mjs +1 -1
  119. package/esm2022/lib/models/crud-history.model.mjs +1 -1
  120. package/esm2022/lib/models/crud-mode.enum.mjs +1 -1
  121. package/esm2022/lib/models/currency.enum.mjs +1 -1
  122. package/esm2022/lib/models/data-table.model.mjs +1 -1
  123. package/esm2022/lib/models/document-type.enum.mjs +1 -1
  124. package/esm2022/lib/models/filters.model.mjs +1 -1
  125. package/esm2022/lib/models/generic-modal.model.mjs +1 -1
  126. package/esm2022/lib/models/http-response.model.mjs +1 -1
  127. package/esm2022/lib/models/index.mjs +1 -1
  128. package/esm2022/lib/models/ip-info.enum.mjs +1 -1
  129. package/esm2022/lib/models/list-item.model.mjs +1 -1
  130. package/esm2022/lib/models/locale.enum.mjs +1 -1
  131. package/esm2022/lib/models/menu-item.model.mjs +1 -1
  132. package/esm2022/lib/models/message-status.enum.mjs +1 -1
  133. package/esm2022/lib/models/profile.model.mjs +1 -1
  134. package/esm2022/lib/models/role.enum.mjs +1 -1
  135. package/esm2022/lib/models/status.enum.mjs +1 -1
  136. package/esm2022/lib/models/topbar.model.mjs +1 -1
  137. package/esm2022/lib/models/vector-app.model.mjs +1 -1
  138. package/esm2022/lib/models/vector-notification.model.mjs +1 -1
  139. package/esm2022/lib/models/view.enum.mjs +1 -1
  140. package/esm2022/lib/pipes/currency-brl.pipe.mjs +1 -1
  141. package/esm2022/lib/pipes/format-document.pipe.mjs +1 -1
  142. package/esm2022/lib/pipes/index.mjs +1 -1
  143. package/esm2022/lib/pipes/mask.pipe.mjs +1 -1
  144. package/esm2022/lib/pipes/not-hidden.pipe.mjs +1 -1
  145. package/esm2022/lib/pipes/only-active.pipe.mjs +1 -1
  146. package/esm2022/lib/pipes/pipes.module.mjs +1 -1
  147. package/esm2022/lib/pipes/remove-last-child.pipe.mjs +1 -1
  148. package/esm2022/lib/pipes/unread-notifications.pipe.mjs +1 -1
  149. package/esm2022/lib/resolvers/get-selected-crud-item.resolver.mjs +1 -1
  150. package/esm2022/lib/resolvers/index.mjs +1 -1
  151. package/esm2022/lib/services/auth.service.mjs +1 -1
  152. package/esm2022/lib/services/base-dropdown.mjs +1 -1
  153. package/esm2022/lib/services/crud-base.service.mjs +1 -1
  154. package/esm2022/lib/services/enum.service.mjs +1 -1
  155. package/esm2022/lib/services/error-message.service.mjs +1 -1
  156. package/esm2022/lib/services/geolocation.service.mjs +1 -1
  157. package/esm2022/lib/services/index.mjs +1 -1
  158. package/esm2022/lib/services/loading.service.mjs +1 -1
  159. package/esm2022/lib/services/menu.service.mjs +1 -1
  160. package/esm2022/lib/services/modal.service.mjs +1 -1
  161. package/esm2022/lib/services/notifications.service.mjs +1 -1
  162. package/esm2022/lib/services/profile.service.mjs +1 -1
  163. package/esm2022/lib/services/storage.service.mjs +1 -1
  164. package/esm2022/lib/shared/shared.module.mjs +1 -1
  165. package/esm2022/lib/utils/cpf-cnpj-validator.util.mjs +36 -26
  166. package/esm2022/lib/utils/file.util.mjs +1 -1
  167. package/esm2022/lib/utils/index.mjs +1 -1
  168. package/esm2022/lib/utils/mask.util.mjs +9 -9
  169. package/esm2022/lib/utils/object.util.mjs +1 -1
  170. package/esm2022/lib/utils/string.util.mjs +1 -1
  171. package/esm2022/lib/utils/validation.util.mjs +29 -26
  172. package/esm2022/lib/utils/window.util.mjs +1 -1
  173. package/esm2022/public-api.mjs +1 -1
  174. package/fesm2022/ngx-vector-components.mjs +137 -124
  175. package/fesm2022/ngx-vector-components.mjs.map +1 -1
  176. package/lib/utils/cpf-cnpj-validator.util.d.ts +1 -0
  177. package/lib/utils/mask.util.d.ts +1 -1
  178. package/lib/utils/validation.util.d.ts +1 -0
  179. package/package.json +1 -1
@@ -40,10 +40,11 @@ export class ValidationUtil {
40
40
  if (!control.value) {
41
41
  return null;
42
42
  }
43
- if (control.value.length === 11) {
43
+ const stripped = control.value.replace(/[.\/-]/g, '');
44
+ if (stripped.length === 11) {
44
45
  return ValidationUtil.isValidCpf(control);
45
46
  }
46
- if (control.value.length === 14) {
47
+ if (stripped.length === 14) {
47
48
  return ValidationUtil.isValidCnpj(control);
48
49
  }
49
50
  return null;
@@ -90,39 +91,41 @@ export class ValidationUtil {
90
91
  }
91
92
  return null;
92
93
  }
94
+ static charToValue(char) {
95
+ return char.toUpperCase().charCodeAt(0) - 48;
96
+ }
93
97
  static isValidCnpj(control) {
94
98
  let cnpj = control.value;
95
- cnpj = cnpj.replace(/[^a-zA-Z0-9]/g, '');
96
- if (!cnpj || cnpj.length !== 14) {
97
- return { cnpjNotValid: true };
98
- }
99
- const first12 = cnpj.substring(0, 12);
100
- if (!first12.match(/^[a-zA-Z0-9]{12}$/)) {
99
+ cnpj = cnpj.replace(/[.\/-]/g, '');
100
+ if (cnpj.length !== 14) {
101
101
  return { cnpjNotValid: true };
102
102
  }
103
- const last2 = cnpj.substring(12, 14);
104
- if (!last2.match(/^[0-9]{2}$/)) {
103
+ const body = cnpj.substring(0, 12).toUpperCase();
104
+ const digits = cnpj.substring(12);
105
+ if (!/^[A-Z0-9]{12}$/.test(body) || !/^\d{2}$/.test(digits)) {
105
106
  return { cnpjNotValid: true };
106
107
  }
107
- if (/^(\d)\1+$/.test(cnpj)) {
108
+ if (/^(\d)\1{13}$/.test(cnpj)) {
108
109
  return { cnpjNotValid: true };
109
110
  }
110
- if (/^[0-9]{14}$/.test(cnpj)) {
111
- let t = cnpj.length - 2, d = cnpj.substring(t), d1 = parseInt(d.charAt(0)), d2 = parseInt(d.charAt(1)), calc = (x) => {
112
- let n = cnpj.substring(0, x), y = x - 7, s = 0, r = 0;
113
- for (let i = x; i >= 1; i--) {
114
- s += n.charAt(x - i) * y--;
115
- if (y < 2)
116
- y = 9;
117
- }
118
- r = 11 - (s % 11);
119
- return r > 9 ? 0 : r;
120
- };
121
- if (calc(t) !== d1 || calc(t + 1) !== d2) {
122
- return { cnpjNotValid: true };
111
+ const calc = (x) => {
112
+ let y = x - 7, s = 0;
113
+ for (let i = x; i >= 1; i--) {
114
+ s += this.charToValue(cnpj.charAt(x - i)) * y--;
115
+ if (y < 2)
116
+ y = 9;
123
117
  }
118
+ const r = 11 - (s % 11);
119
+ return r > 9 ? 0 : r;
120
+ };
121
+ const d1 = parseInt(digits.charAt(0));
122
+ const d2 = parseInt(digits.charAt(1));
123
+ if (calc(12) === d1 && calc(13) === d2) {
124
+ return null;
125
+ }
126
+ else {
127
+ return { cnpjNotValid: true };
124
128
  }
125
- return null;
126
129
  }
127
130
  static majorAge(control) {
128
131
  if (!control.value) {
@@ -273,4 +276,4 @@ export class ValidationUtil {
273
276
  return null;
274
277
  }
275
278
  }
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvdXRpbHMvdmFsaWRhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxPQUFPLGNBQWM7SUFDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUMxQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBZSxDQUFDO1FBRXRDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFDRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUM7WUFDakUsS0FBSyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxFQUN2RDtZQUNBLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQzdDLE1BQU0sSUFBSSxHQUFXLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJO2FBQ3RCLElBQUksRUFBRTthQUNOLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxFQUFFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxDQUFDO1NBQ25FO1FBQ0Qs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QixFQUFFLEVBQUU7WUFDN0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsZ0JBQWdCLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxJQUNFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztnQkFDaEMsVUFBVSxLQUFLLEVBQUU7Z0JBQ2pCLFlBQVksS0FBSyxFQUFFO2dCQUNuQixDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksRUFDNUI7Z0JBQ0EsT0FBTztvQkFDTCxPQUFPLEVBQUUsNkRBQTZEO2lCQUN2RSxDQUFDO2FBQ0g7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQXdCO1FBQ2hELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFlLENBQUM7UUFFdEMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxDQUFDO1NBQ2xFO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi9vYmplY3QudXRpbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvblV0aWwge1xyXG4gIHB1YmxpYyBzdGF0aWMgZW1haWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgZW1haWwgPSBjb250cm9sLnZhbHVlIGFzIHN0cmluZztcclxuXHJcbiAgICBpZiAoIWVtYWlsIHx8IGVtYWlsID09PSAnJykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICFlbWFpbC5tYXRjaCgvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw0fSQvKSB8fFxyXG4gICAgICBlbWFpbC5tYXRjaCgvWydgfiEjJV4mKigpfCvCqD0/OzonwrRcIiw8Plxce1xcfVxcW1xcXVxcXFxcXC9dL2dpKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZW1haWw6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGZ1bGxOYW1lKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoIW5hbWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3BsaXR0ZWROYW1lID0gbmFtZVxyXG4gICAgICAudHJpbSgpXHJcbiAgICAgIC5zcGxpdCgnICcpXHJcbiAgICAgIC5tYXAoKG5hbWVQYXJ0KSA9PiBuYW1lUGFydC50cmltKCkpO1xyXG5cclxuICAgIGlmIChzcGxpdHRlZE5hbWUubGVuZ3RoIDwgMikge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkOiAnRGV2ZSBjb250ZXIgcGVsbyBtZW5vcyB1bSBub21lIGUgc29icmVub21lLicgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBub011bHRpcGxlV2hpdGVzcGFjZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmIChuYW1lKSB7XHJcbiAgICAgIGlmICghbmFtZS5tYXRjaCgvXihbYS16QS1aw4Atw7owLTldK1xccykqW2EtekEtWsOALcO6MC05XSskLykpIHtcclxuICAgICAgICByZXR1cm4geyBoYXZlV2hpdGVTcGFjZTogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFRheElkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDExKSB7XHJcbiAgICAgIHJldHVybiBWYWxpZGF0aW9uVXRpbC5pc1ZhbGlkQ3BmKGNvbnRyb2wpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoID09PSAxNCkge1xyXG4gICAgICByZXR1cm4gVmFsaWRhdGlvblV0aWwuaXNWYWxpZENucGooY29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDcGYoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgY3BmID0gY29udHJvbC52YWx1ZTtcclxuICAgIGlmIChjcGYpIHtcclxuICAgICAgbGV0IG51bWJlcnMsIGRpZ2l0cywgc3VtLCBpLCByZXN1bHQsIGVxdWFsRGlnaXRzO1xyXG4gICAgICBlcXVhbERpZ2l0cyA9IDE7XHJcbiAgICAgIGlmIChjcGYubGVuZ3RoIDwgMTEpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChpID0gMDsgaSA8IGNwZi5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBpZiAoY3BmLmNoYXJBdChpKSAhPT0gY3BmLmNoYXJBdChpICsgMSkpIHtcclxuICAgICAgICAgIGVxdWFsRGlnaXRzID0gMDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFlcXVhbERpZ2l0cykge1xyXG4gICAgICAgIG51bWJlcnMgPSBjcGYuc3Vic3RyaW5nKDAsIDkpO1xyXG4gICAgICAgIGRpZ2l0cyA9IGNwZi5zdWJzdHJpbmcoOSk7XHJcbiAgICAgICAgc3VtID0gMDtcclxuICAgICAgICBmb3IgKGkgPSAxMDsgaSA+IDE7IGktLSkge1xyXG4gICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KDEwIC0gaSkgKiBpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMCkpKSB7XHJcbiAgICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBudW1iZXJzID0gY3BmLnN1YnN0cmluZygwLCAxMCk7XHJcbiAgICAgICAgc3VtID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChpID0gMTE7IGkgPiAxOyBpLS0pIHtcclxuICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdCgxMSAtIGkpICogaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMSkpKSB7XHJcbiAgICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZENucGooY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgbGV0IGNucGogPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJyk7XHJcblxyXG4gICAgaWYgKCFjbnBqIHx8IGNucGoubGVuZ3RoICE9PSAxNCkge1xyXG4gICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXJzdDEyID0gY25wai5zdWJzdHJpbmcoMCwgMTIpO1xyXG4gICAgaWYgKCFmaXJzdDEyLm1hdGNoKC9eW2EtekEtWjAtOV17MTJ9JC8pKSB7XHJcbiAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxhc3QyID0gY25wai5zdWJzdHJpbmcoMTIsIDE0KTtcclxuICAgIGlmICghbGFzdDIubWF0Y2goL15bMC05XXsyfSQvKSkge1xyXG4gICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoL14oXFxkKVxcMSskLy50ZXN0KGNucGopKSB7XHJcbiAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgvXlswLTldezE0fSQvLnRlc3QoY25waikpIHtcclxuICAgICAgbGV0IHQgPSBjbnBqLmxlbmd0aCAtIDIsXHJcbiAgICAgICAgZCA9IGNucGouc3Vic3RyaW5nKHQpLFxyXG4gICAgICAgIGQxID0gcGFyc2VJbnQoZC5jaGFyQXQoMCkpLFxyXG4gICAgICAgIGQyID0gcGFyc2VJbnQoZC5jaGFyQXQoMSkpLFxyXG4gICAgICAgIGNhbGMgPSAoeDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBsZXQgbiA9IGNucGouc3Vic3RyaW5nKDAsIHgpLFxyXG4gICAgICAgICAgICB5ID0geCAtIDcsXHJcbiAgICAgICAgICAgIHMgPSAwLFxyXG4gICAgICAgICAgICByID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSB4OyBpID49IDE7IGktLSkge1xyXG4gICAgICAgICAgICBzICs9IG4uY2hhckF0KHggLSBpKSAqIHktLTtcclxuICAgICAgICAgICAgaWYgKHkgPCAyKSB5ID0gOTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHIgPSAxMSAtIChzICUgMTEpO1xyXG4gICAgICAgICAgcmV0dXJuIHIgPiA5ID8gMCA6IHI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChjYWxjKHQpICE9PSBkMSB8fCBjYWxjKHQgKyAxKSAhPT0gZDIpIHtcclxuICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG1ham9yQWdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGFnZSA9IH5+KChEYXRlLm5vdygpIC0gY29udHJvbC52YWx1ZSkgLyAzMTU1NzYwMDAwMCk7XHJcblxyXG4gICAgaWYgKGFnZSA8IDE4KSB7XHJcbiAgICAgIHJldHVybiB7IGlzTm90TWFqb3JBZ2U6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBtYXRjaEZpZWxkKGFub3RoZXJGaWVsZDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IFZhbGlkYXRvckZuIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFhbm90aGVyRmllbGQ/LnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IGFub3RoZXJGaWVsZD8udmFsdWUpIHtcclxuICAgICAgICByZXR1cm4geyBmaWVsZERvZXNOb3RNYXRjaDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gdmFsaWRhdG9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjZWxscGhvbmUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgMTEpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlyc3ROdW1iZXIgPSBjb250cm9sLnZhbHVlLnN1YnN0cmluZygyLCAzKTtcclxuXHJcbiAgICBpZiAoZmlyc3ROdW1iZXIgIT0gJzknKSB7XHJcbiAgICAgIHJldHVybiB7IGNlbGxwaG9uZUludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbG93ZXJUaGFuT3JFcXVhbFRvKGdyZWF0ZXJDb250cm9sTmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBsb3dlclZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgY29uc3QgZ3JlYXRlclZhbHVlID0gY29udHJvbC5wYXJlbnQ/LmdldChncmVhdGVyQ29udHJvbE5hbWUpPy52YWx1ZTtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudD8uZ2V0KGdyZWF0ZXJDb250cm9sTmFtZSkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgQ29udHJvbCB3aXRoIG5hbWUgJHtncmVhdGVyQ29udHJvbE5hbWV9IG5vdCByZWdpc3RlcmVkYCk7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQobG93ZXJWYWx1ZSkgJiZcclxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQoZ3JlYXRlclZhbHVlKSAmJlxyXG4gICAgICAgIGxvd2VyVmFsdWUgIT09ICcnICYmXHJcbiAgICAgICAgZ3JlYXRlclZhbHVlICE9PSAnJyAmJlxyXG4gICAgICAgICtsb3dlclZhbHVlID4gK2dyZWF0ZXJWYWx1ZVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW52YWxpZDogJ1ZhbG9yIG3DrW5pbW8gZGV2ZSBzZXIgbWVub3Igb3UgaWd1YWwgYW8gdmFsb3IgbcOheGltbycsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ3JlYXRlclRoYW5PckVxdWFsVG8obG93ZXJDb250cm9sTmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBncmVhdGVyVmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBjb25zdCBsb3dlclZhbHVlID0gY29udHJvbC5wYXJlbnQ/LmdldChsb3dlckNvbnRyb2xOYW1lKT8udmFsdWU7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQ/LmdldChsb3dlckNvbnRyb2xOYW1lKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBDb250cm9sIHdpdGggbmFtZSAke2xvd2VyQ29udHJvbE5hbWV9IG5vdCByZWdpc3RlcmVkYCk7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQobG93ZXJWYWx1ZSkgJiZcclxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQoZ3JlYXRlclZhbHVlKSAmJlxyXG4gICAgICAgIGxvd2VyVmFsdWUgIT09ICcnICYmXHJcbiAgICAgICAgZ3JlYXRlclZhbHVlICE9PSAnJyAmJlxyXG4gICAgICAgICtsb3dlclZhbHVlID4gK2dyZWF0ZXJWYWx1ZVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW52YWxpZDogJ1ZhbG9yIG3DoXhpbW8gZGV2ZSBzZXIgbWFpb3Igb3UgaWd1YWwgYW8gdmFsb3IgbcOtbmltbycsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbm90U2VxdWVudGlhbE51bWJlcnMobGVuZ3RoOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sVmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBjb25zdCBzZXF1ZW50aWFsTnVtYmVycyA9ICcwMTIzNDU2Nzg5MDEyMzQ1Njc4OSc7XHJcblxyXG4gICAgICBpZiAoY29udHJvbFZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2xWYWx1ZS5sZW5ndGggPT09IGxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKH5zZXF1ZW50aWFsTnVtYmVycy5pbmRleE9mKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGlzU2VxdWVudGlhbDogdHJ1ZSB9O1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghIWNvbnRyb2xWYWx1ZS5tYXRjaCgvXihcXGQpXFwxKyQvKSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpc1NlcXVlbnRpYWw6IHRydWUgfTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gdmFsaWRhdG9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaXJzdExldHRlcklzVXBwZXJjYXNlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgcmVnZXggPSAvXihbQS1aw4Atw5pdW2EtesOgLcO6XSopKD86XFxzKyhbQS1aw4Atw5pdW2EtesOgLcO6XSopKSokLztcclxuXHJcbiAgICBpZiAoISFjb250cm9sVmFsdWUpIHtcclxuICAgICAgaWYgKCFjb250cm9sVmFsdWUubWF0Y2gocmVnZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZEZpZWxkOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY29udGFpbnNMZXR0ZXJzQW5kTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBjb250cm9sVmFsdWUgPSBjb250cm9sLnZhbHVlIGFzIHN0cmluZztcclxuICAgIGNvbnN0IHJlZ2V4ID0gL14oPz0uKlswLTldKSg/PS4qW0Etel0pKFtBLXowLTlfLV0rKSQvO1xyXG5cclxuICAgIGlmICghIWNvbnRyb2xWYWx1ZSkge1xyXG4gICAgICBpZiAoISEhY29udHJvbFZhbHVlLm1hdGNoKHJlZ2V4KSkge1xyXG4gICAgICAgIHJldHVybiB7IGlzTm90QWxwaGFOdW1lcmljOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ3JlYXRlclRoYW5Ubyhsb3dlckNvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGNvbnN0IGdyZWF0ZXJWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBjb250cm9sLnBhcmVudD8uZ2V0KGxvd2VyQ29udHJvbE5hbWUpPy52YWx1ZTtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudD8uZ2V0KGxvd2VyQ29udHJvbE5hbWUpKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coYENvbnRyb2wgd2l0aCBuYW1lICR7bG93ZXJDb250cm9sTmFtZX0gbm90IHJlZ2lzdGVyZWRgKTtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIE9iamVjdFV0aWwuaXNWYWxpZChsb3dlclZhbHVlKSAmJlxyXG4gICAgICAgIE9iamVjdFV0aWwuaXNWYWxpZChncmVhdGVyVmFsdWUpICYmXHJcbiAgICAgICAgbG93ZXJWYWx1ZSAhPT0gJycgJiZcclxuICAgICAgICBncmVhdGVyVmFsdWUgIT09ICcnICYmXHJcbiAgICAgICAgK2xvd2VyVmFsdWUgPj0gK2dyZWF0ZXJWYWx1ZVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW52YWxpZDogYCBFc3RlIHZhbG9yIG7Do28gcG9kZSBzZXIgaWd1YWwgb3UgbWVub3IgcXVlIG8gdmFsb3IgaW5pY2lhbGAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgb25seUxldHRlcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlIGFzIHN0cmluZztcclxuXHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSAnJykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoL1tcXGRcXFddLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkOiAnTyBsZW1icmV0ZSBkZSBzZW5oYSBzw7MgcG9kZSBjb250ZXIgbGV0cmFzLicgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvdXRpbHMvdmFsaWRhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxPQUFPLGNBQWM7SUFDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUMxQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBZSxDQUFDO1FBRXRDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFDRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUM7WUFDakUsS0FBSyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxFQUN2RDtZQUNBLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQzdDLE1BQU0sSUFBSSxHQUFXLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJO2FBQ3RCLElBQUksRUFBRTthQUNOLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxFQUFFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxDQUFDO1NBQ25FO1FBQ0Qs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LEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLGdCQUFnQixpQkFBaUIsQ0FBQyxDQUFDO2dCQUNwRSxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFDRSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFDOUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQ2hDLFVBQVUsS0FBSyxFQUFFO2dCQUNqQixZQUFZLEtBQUssRUFBRTtnQkFDbkIsQ0FBQyxVQUFVLElBQUksQ0FBQyxZQUFZLEVBQzVCO2dCQUNBLE9BQU87b0JBQ0wsT0FBTyxFQUFFLDZEQUE2RDtpQkFDdkUsQ0FBQzthQUNIO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUF3QjtRQUNoRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBZSxDQUFDO1FBRXRDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsNENBQTRDLEVBQUUsQ0FBQztTQUNsRTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuL29iamVjdC51dGlsJztcblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25VdGlsIHtcbiAgcHVibGljIHN0YXRpYyBlbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgZW1haWwgPSBjb250cm9sLnZhbHVlIGFzIHN0cmluZztcblxuICAgIGlmICghZW1haWwgfHwgZW1haWwgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhZW1haWwubWF0Y2goL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNH0kLykgfHxcbiAgICAgIGVtYWlsLm1hdGNoKC9bJ2B+ISMlXiYqKCl8K8KoPT87OifCtFwiLDw+XFx7XFx9XFxbXFxdXFxcXFxcL10vZ2kpXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZ1bGxOYW1lKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3BsaXR0ZWROYW1lID0gbmFtZVxuICAgICAgLnRyaW0oKVxuICAgICAgLnNwbGl0KCcgJylcbiAgICAgIC5tYXAoKG5hbWVQYXJ0KSA9PiBuYW1lUGFydC50cmltKCkpO1xuXG4gICAgaWYgKHNwbGl0dGVkTmFtZS5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4geyBpbnZhbGlkOiAnRGV2ZSBjb250ZXIgcGVsbyBtZW5vcyB1bSBub21lIGUgc29icmVub21lLicgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG5vTXVsdGlwbGVXaGl0ZXNwYWNlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGlmICghbmFtZS5tYXRjaCgvXihbYS16QS1aw4Atw7owLTldK1xccykqW2EtekEtWsOALcO6MC05XSskLykpIHtcbiAgICAgICAgcmV0dXJuIHsgaGF2ZVdoaXRlU3BhY2U6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRUYXhJZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZCA9IChjb250cm9sLnZhbHVlIGFzIHN0cmluZykucmVwbGFjZSgvWy5cXC8tXS9nLCAnJyk7XG5cbiAgICBpZiAoc3RyaXBwZWQubGVuZ3RoID09PSAxMSkge1xuICAgICAgcmV0dXJuIFZhbGlkYXRpb25VdGlsLmlzVmFsaWRDcGYoY29udHJvbCk7XG4gICAgfVxuICAgIGlmIChzdHJpcHBlZC5sZW5ndGggPT09IDE0KSB7XG4gICAgICByZXR1cm4gVmFsaWRhdGlvblV0aWwuaXNWYWxpZENucGooY29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDcGYoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IGNwZiA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKGNwZikge1xuICAgICAgbGV0IG51bWJlcnMsIGRpZ2l0cywgc3VtLCBpLCByZXN1bHQsIGVxdWFsRGlnaXRzO1xuICAgICAgZXF1YWxEaWdpdHMgPSAxO1xuICAgICAgaWYgKGNwZi5sZW5ndGggPCAxMSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IGNwZi5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgaWYgKGNwZi5jaGFyQXQoaSkgIT09IGNwZi5jaGFyQXQoaSArIDEpKSB7XG4gICAgICAgICAgZXF1YWxEaWdpdHMgPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXF1YWxEaWdpdHMpIHtcbiAgICAgICAgbnVtYmVycyA9IGNwZi5zdWJzdHJpbmcoMCwgOSk7XG4gICAgICAgIGRpZ2l0cyA9IGNwZi5zdWJzdHJpbmcoOSk7XG4gICAgICAgIHN1bSA9IDA7XG4gICAgICAgIGZvciAoaSA9IDEwOyBpID4gMTsgaS0tKSB7XG4gICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KDEwIC0gaSkgKiBpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcblxuICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIG51bWJlcnMgPSBjcGYuc3Vic3RyaW5nKDAsIDEwKTtcbiAgICAgICAgc3VtID0gMDtcblxuICAgICAgICBmb3IgKGkgPSAxMTsgaSA+IDE7IGktLSkge1xuICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdCgxMSAtIGkpICogaTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkge1xuICAgICAgICAgIHJldHVybiB7IGNwZk5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNoYXJUb1ZhbHVlKGNoYXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNoYXIudG9VcHBlckNhc2UoKS5jaGFyQ29kZUF0KDApIC0gNDg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDbnBqKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgY25wajogc3RyaW5nID0gY29udHJvbC52YWx1ZTtcbiAgICBjbnBqID0gY25wai5yZXBsYWNlKC9bLlxcLy1dL2csICcnKTtcblxuICAgIGlmIChjbnBqLmxlbmd0aCAhPT0gMTQpIHtcbiAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSBjbnBqLnN1YnN0cmluZygwLCAxMikudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBkaWdpdHMgPSBjbnBqLnN1YnN0cmluZygxMik7XG5cbiAgICBpZiAoIS9eW0EtWjAtOV17MTJ9JC8udGVzdChib2R5KSB8fCAhL15cXGR7Mn0kLy50ZXN0KGRpZ2l0cykpIHtcbiAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGlmICgvXihcXGQpXFwxezEzfSQvLnRlc3QoY25waikpIHtcbiAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGMgPSAoeDogbnVtYmVyKSA9PiB7XG4gICAgICBsZXQgeSA9IHggLSA3LFxuICAgICAgICBzID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSB4OyBpID49IDE7IGktLSkge1xuICAgICAgICBzICs9IHRoaXMuY2hhclRvVmFsdWUoY25wai5jaGFyQXQoeCAtIGkpKSAqIHktLTtcbiAgICAgICAgaWYgKHkgPCAyKSB5ID0gOTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHIgPSAxMSAtIChzICUgMTEpO1xuICAgICAgcmV0dXJuIHIgPiA5ID8gMCA6IHI7XG4gICAgfTtcblxuICAgIGNvbnN0IGQxID0gcGFyc2VJbnQoZGlnaXRzLmNoYXJBdCgwKSk7XG4gICAgY29uc3QgZDIgPSBwYXJzZUludChkaWdpdHMuY2hhckF0KDEpKTtcblxuICAgIGlmIChjYWxjKDEyKSA9PT0gZDEgJiYgY2FsYygxMykgPT09IGQyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtYWpvckFnZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgYWdlID0gfn4oKERhdGUubm93KCkgLSBjb250cm9sLnZhbHVlKSAvIDMxNTU3NjAwMDAwKTtcblxuICAgIGlmIChhZ2UgPCAxOCkge1xuICAgICAgcmV0dXJuIHsgaXNOb3RNYWpvckFnZTogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWF0Y2hGaWVsZChhbm90aGVyRmllbGQ6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFhbm90aGVyRmllbGQ/LnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IGFub3RoZXJGaWVsZD8udmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGREb2VzTm90TWF0Y2g6IHRydWUgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gdmFsaWRhdG9yO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjZWxscGhvbmUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCA8IDExKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdE51bWJlciA9IGNvbnRyb2wudmFsdWUuc3Vic3RyaW5nKDIsIDMpO1xuXG4gICAgaWYgKGZpcnN0TnVtYmVyICE9ICc5Jykge1xuICAgICAgcmV0dXJuIHsgY2VsbHBob25lSW52YWxpZDogdHJ1ZSB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBsb3dlclRoYW5PckVxdWFsVG8oZ3JlYXRlckNvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgY29uc3QgbG93ZXJWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICBjb25zdCBncmVhdGVyVmFsdWUgPSBjb250cm9sLnBhcmVudD8uZ2V0KGdyZWF0ZXJDb250cm9sTmFtZSk/LnZhbHVlO1xuICAgICAgaWYgKCFjb250cm9sLnBhcmVudD8uZ2V0KGdyZWF0ZXJDb250cm9sTmFtZSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENvbnRyb2wgd2l0aCBuYW1lICR7Z3JlYXRlckNvbnRyb2xOYW1lfSBub3QgcmVnaXN0ZXJlZGApO1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdFV0aWwuaXNWYWxpZChsb3dlclZhbHVlKSAmJlxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQoZ3JlYXRlclZhbHVlKSAmJlxuICAgICAgICBsb3dlclZhbHVlICE9PSAnJyAmJlxuICAgICAgICBncmVhdGVyVmFsdWUgIT09ICcnICYmXG4gICAgICAgICtsb3dlclZhbHVlID4gK2dyZWF0ZXJWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZDogJ1ZhbG9yIG3DrW5pbW8gZGV2ZSBzZXIgbWVub3Igb3UgaWd1YWwgYW8gdmFsb3IgbcOheGltbycsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfTtcbiAgICByZXR1cm4gdmFsaWRhdG9yO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBncmVhdGVyVGhhbk9yRXF1YWxUbyhsb3dlckNvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgY29uc3QgZ3JlYXRlclZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBjb250cm9sLnBhcmVudD8uZ2V0KGxvd2VyQ29udHJvbE5hbWUpPy52YWx1ZTtcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQ/LmdldChsb3dlckNvbnRyb2xOYW1lKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQ29udHJvbCB3aXRoIG5hbWUgJHtsb3dlckNvbnRyb2xOYW1lfSBub3QgcmVnaXN0ZXJlZGApO1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdFV0aWwuaXNWYWxpZChsb3dlclZhbHVlKSAmJlxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQoZ3JlYXRlclZhbHVlKSAmJlxuICAgICAgICBsb3dlclZhbHVlICE9PSAnJyAmJlxuICAgICAgICBncmVhdGVyVmFsdWUgIT09ICcnICYmXG4gICAgICAgICtsb3dlclZhbHVlID4gK2dyZWF0ZXJWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZDogJ1ZhbG9yIG3DoXhpbW8gZGV2ZSBzZXIgbWFpb3Igb3UgaWd1YWwgYW8gdmFsb3IgbcOtbmltbycsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfTtcbiAgICByZXR1cm4gdmFsaWRhdG9yO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBub3RTZXF1ZW50aWFsTnVtYmVycyhsZW5ndGg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICAgIGNvbnN0IHNlcXVlbnRpYWxOdW1iZXJzID0gJzAxMjM0NTY3ODkwMTIzNDU2Nzg5JztcblxuICAgICAgaWYgKGNvbnRyb2xWYWx1ZSkge1xuICAgICAgICBpZiAoY29udHJvbFZhbHVlLmxlbmd0aCA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKH5zZXF1ZW50aWFsTnVtYmVycy5pbmRleE9mKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpc1NlcXVlbnRpYWw6IHRydWUgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCEhY29udHJvbFZhbHVlLm1hdGNoKC9eKFxcZClcXDErJC8pKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpc1NlcXVlbnRpYWw6IHRydWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0b3I7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpcnN0TGV0dGVySXNVcHBlcmNhc2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWUgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHJlZ2V4ID0gL14oW0EtWsOALcOaXVthLXrDoC3Dul0qKSg/OlxccysoW0EtWsOALcOaXVthLXrDoC3Dul0qKSkqJC87XG5cbiAgICBpZiAoISFjb250cm9sVmFsdWUpIHtcbiAgICAgIGlmICghY29udHJvbFZhbHVlLm1hdGNoKHJlZ2V4KSkge1xuICAgICAgICByZXR1cm4geyBpbnZhbGlkRmllbGQ6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udGFpbnNMZXR0ZXJzQW5kTnVtYmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZSBhcyBzdHJpbmc7XG4gICAgY29uc3QgcmVnZXggPSAvXig/PS4qWzAtOV0pKD89LipbQS16XSkoW0EtejAtOV8tXSspJC87XG5cbiAgICBpZiAoISFjb250cm9sVmFsdWUpIHtcbiAgICAgIGlmICghISFjb250cm9sVmFsdWUubWF0Y2gocmVnZXgpKSB7XG4gICAgICAgIHJldHVybiB7IGlzTm90QWxwaGFOdW1lcmljOiB0cnVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdyZWF0ZXJUaGFuVG8obG93ZXJDb250cm9sTmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgIGNvbnN0IGdyZWF0ZXJWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICBjb25zdCBsb3dlclZhbHVlID0gY29udHJvbC5wYXJlbnQ/LmdldChsb3dlckNvbnRyb2xOYW1lKT8udmFsdWU7XG4gICAgICBpZiAoIWNvbnRyb2wucGFyZW50Py5nZXQobG93ZXJDb250cm9sTmFtZSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENvbnRyb2wgd2l0aCBuYW1lICR7bG93ZXJDb250cm9sTmFtZX0gbm90IHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBPYmplY3RVdGlsLmlzVmFsaWQobG93ZXJWYWx1ZSkgJiZcbiAgICAgICAgT2JqZWN0VXRpbC5pc1ZhbGlkKGdyZWF0ZXJWYWx1ZSkgJiZcbiAgICAgICAgbG93ZXJWYWx1ZSAhPT0gJycgJiZcbiAgICAgICAgZ3JlYXRlclZhbHVlICE9PSAnJyAmJlxuICAgICAgICArbG93ZXJWYWx1ZSA+PSArZ3JlYXRlclZhbHVlXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbnZhbGlkOiBgIEVzdGUgdmFsb3IgbsOjbyBwb2RlIHNlciBpZ3VhbCBvdSBtZW5vciBxdWUgbyB2YWxvciBpbmljaWFsYCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0b3I7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG9ubHlMZXR0ZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWUgYXMgc3RyaW5nO1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICgvW1xcZFxcV10vLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBpbnZhbGlkOiAnTyBsZW1icmV0ZSBkZSBzZW5oYSBzw7MgcG9kZSBjb250ZXIgbGV0cmFzLicgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -6,4 +6,4 @@ export class WindowUtil {
6
6
  return window.innerWidth >= 1024;
7
7
  }
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi91dGlscy93aW5kb3cudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsYUFBYTtRQUNsQixPQUFPLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxNQUFNLENBQUMsU0FBUztRQUNkLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFdpbmRvd1V0aWwge1xyXG4gIHN0YXRpYyBpc1NtYWxsRGV2aWNlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgNjQwO1xyXG4gIH1cclxuICBzdGF0aWMgaXNEZXNrdG9wKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID49IDEwMjQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi91dGlscy93aW5kb3cudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsYUFBYTtRQUNsQixPQUFPLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxNQUFNLENBQUMsU0FBUztRQUNkLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFdpbmRvd1V0aWwge1xuICBzdGF0aWMgaXNTbWFsbERldmljZSgpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPCA2NDA7XG4gIH1cbiAgc3RhdGljIGlzRGVza3RvcCgpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPj0gMTAyNDtcbiAgfVxufVxuIl19
@@ -7,4 +7,4 @@ export * from './lib/pipes';
7
7
  export * from './lib/resolvers';
8
8
  export * from './lib/services';
9
9
  export * from './lib/utils';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12ZWN0b3ItY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5qZWN0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyY2VwdG9ycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb2x2ZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XHJcbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12ZWN0b3ItY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbmplY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyY2VwdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb2x2ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzJztcbiJdfQ==