@manticore-labs/nest 0.0.71 → 0.0.73

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 (236) hide show
  1. package/.circleci/config.yml +47 -47
  2. package/.idea/codeStyles/Project.xml +37 -37
  3. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  4. package/.idea/encodings.xml +3 -3
  5. package/.idea/inspectionProfiles/Project_Default.xml +5 -5
  6. package/.idea/manticore-labs-nest.iml +11 -11
  7. package/.idea/misc.xml +5 -5
  8. package/.idea/modules.xml +7 -7
  9. package/.idea/vcs.xml +5 -5
  10. package/.idea/workspace.xml +77 -399
  11. package/LICENSE +8 -8
  12. package/README.1.md +116 -116
  13. package/README.md +1 -1
  14. package/build/main/index.d.ts +42 -42
  15. package/build/main/index.js +25 -25
  16. package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.d.ts +5 -5
  17. package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +24 -24
  18. package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.d.ts +5 -5
  19. package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +24 -24
  20. package/build/main/lib/auth0/auth0.controller.d.ts +40 -40
  21. package/build/main/lib/auth0/auth0.controller.js +537 -537
  22. package/build/main/lib/auth0/auth0.service.d.ts +69 -69
  23. package/build/main/lib/auth0/auth0.service.js +604 -604
  24. package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.d.ts +5 -5
  25. package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +25 -25
  26. package/build/main/lib/auth0/interfaces/busqueda-nombre.d.ts +3 -3
  27. package/build/main/lib/auth0/interfaces/busqueda-nombre.js +2 -2
  28. package/build/main/lib/auth0/interfaces/funciones-seguridad.d.ts +10 -10
  29. package/build/main/lib/auth0/interfaces/funciones-seguridad.js +2 -2
  30. package/build/main/lib/auth0/interfaces/mensajes-controlador.d.ts +5 -5
  31. package/build/main/lib/auth0/interfaces/mensajes-controlador.js +2 -2
  32. package/build/main/lib/auth0/seguridad-jwt-moviles/check-jwt.d.ts +2 -2
  33. package/build/main/lib/auth0/seguridad-jwt-moviles/check-jwt.js +7 -7
  34. package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.d.ts +1 -1
  35. package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.js +3 -3
  36. package/build/main/lib/funciones-util/buscar-registro.d.ts +1 -1
  37. package/build/main/lib/funciones-util/buscar-registro.js +492 -351
  38. package/build/main/lib/funciones-util/buscar-un-registro-por-id.d.ts +1 -1
  39. package/build/main/lib/funciones-util/buscar-un-registro-por-id.js +25 -25
  40. package/build/main/lib/funciones-util/buscar-where-or.d.ts +1 -1
  41. package/build/main/lib/funciones-util/buscar-where-or.js +33 -33
  42. package/build/main/lib/funciones-util/contar-registros.d.ts +1 -1
  43. package/build/main/lib/funciones-util/contar-registros.js +41 -41
  44. package/build/main/lib/funciones-util/crear-un-registro.d.ts +1 -1
  45. package/build/main/lib/funciones-util/crear-un-registro.js +24 -24
  46. package/build/main/lib/funciones-util/editar-un-registro.d.ts +1 -1
  47. package/build/main/lib/funciones-util/editar-un-registro.js +24 -24
  48. package/build/main/lib/funciones-util/eliminar-uno.d.ts +1 -1
  49. package/build/main/lib/funciones-util/eliminar-uno.js +35 -35
  50. package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.d.ts +2 -2
  51. package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +21 -21
  52. package/build/main/lib/interfaces-util/arreglo-funciones-booleanas.d.ts +4 -4
  53. package/build/main/lib/interfaces-util/arreglo-funciones-booleanas.js +2 -2
  54. package/build/main/lib/interfaces-util/broadcast-join.gateway.d.ts +14 -14
  55. package/build/main/lib/interfaces-util/broadcast-join.gateway.js +2 -2
  56. package/build/main/lib/interfaces-util/campos-a-buscar.d.ts +9 -9
  57. package/build/main/lib/interfaces-util/campos-a-buscar.js +9 -9
  58. package/build/main/lib/interfaces-util/delete-service.d.ts +12 -12
  59. package/build/main/lib/interfaces-util/delete-service.js +2 -2
  60. package/build/main/lib/interfaces-util/dto.d.ts +4 -4
  61. package/build/main/lib/interfaces-util/dto.js +2 -2
  62. package/build/main/lib/interfaces-util/find-where-relations.d.ts +9 -9
  63. package/build/main/lib/interfaces-util/find-where-relations.js +2 -2
  64. package/build/main/lib/interfaces-util/funciones-seguridad.d.ts +13 -13
  65. package/build/main/lib/interfaces-util/funciones-seguridad.js +2 -2
  66. package/build/main/lib/interfaces-util/funciones.gateway.d.ts +5 -5
  67. package/build/main/lib/interfaces-util/funciones.gateway.js +2 -2
  68. package/build/main/lib/interfaces-util/mensajes-controller.d.ts +6 -6
  69. package/build/main/lib/interfaces-util/mensajes-controller.js +2 -2
  70. package/build/main/lib/interfaces-util/politicas-de-seguridad.d.ts +17 -17
  71. package/build/main/lib/interfaces-util/politicas-de-seguridad.js +2 -2
  72. package/build/main/lib/interfaces-util/respuesta-general.gateway.d.ts +5 -5
  73. package/build/main/lib/interfaces-util/respuesta-general.gateway.js +2 -2
  74. package/build/main/lib/menu/entities/menu-entity.d.ts +13 -13
  75. package/build/main/lib/menu/entities/menu-entity.js +93 -93
  76. package/build/main/lib/one-signal/interfaces/funciones-seguridad.d.ts +9 -9
  77. package/build/main/lib/one-signal/interfaces/funciones-seguridad.js +2 -2
  78. package/build/main/lib/one-signal/interfaces/one-signal-device.d.ts +19 -19
  79. package/build/main/lib/one-signal/interfaces/one-signal-device.js +2 -2
  80. package/build/main/lib/one-signal/interfaces/one-signal-notification.d.ts +15 -15
  81. package/build/main/lib/one-signal/interfaces/one-signal-notification.js +2 -2
  82. package/build/main/lib/one-signal/interfaces/one-signal-notifications.d.ts +7 -7
  83. package/build/main/lib/one-signal/interfaces/one-signal-notifications.js +2 -2
  84. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.d.ts +5 -5
  85. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.js +2 -2
  86. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification.d.ts +4 -4
  87. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification.js +2 -2
  88. package/build/main/lib/one-signal/interfaces/one-signal-success.d.ts +3 -3
  89. package/build/main/lib/one-signal/interfaces/one-signal-success.js +2 -2
  90. package/build/main/lib/one-signal/interfaces/one-signal-tags.d.ts +3 -3
  91. package/build/main/lib/one-signal/interfaces/one-signal-tags.js +2 -2
  92. package/build/main/lib/one-signal/interfaces/one-signal-view-devices.d.ts +7 -7
  93. package/build/main/lib/one-signal/interfaces/one-signal-view-devices.js +2 -2
  94. package/build/main/lib/one-signal/one-signal.controller.d.ts +15 -15
  95. package/build/main/lib/one-signal/one-signal.controller.js +250 -250
  96. package/build/main/lib/one-signal/one-signal.service.d.ts +32 -32
  97. package/build/main/lib/one-signal/one-signal.service.js +84 -84
  98. package/build/main/lib/politicas/revisar-si-tiene-nombre-permiso.d.ts +1 -1
  99. package/build/main/lib/politicas/revisar-si-tiene-nombre-permiso.js +9 -9
  100. package/build/main/lib/politicas/revisar-si-tiene-rol.d.ts +1 -1
  101. package/build/main/lib/politicas/revisar-si-tiene-rol.js +9 -9
  102. package/build/main/lib/principal.controller.d.ts +20 -20
  103. package/build/main/lib/principal.controller.js +309 -309
  104. package/build/main/lib/principal.dto.d.ts +5 -5
  105. package/build/main/lib/principal.dto.js +21 -21
  106. package/build/main/lib/principal.entity.d.ts +7 -7
  107. package/build/main/lib/principal.entity.js +42 -42
  108. package/build/main/lib/principal.find-many-options.d.ts +14 -14
  109. package/build/main/lib/principal.find-many-options.js +48 -48
  110. package/build/main/lib/principal.find-many-where-or.d.ts +10 -10
  111. package/build/main/lib/principal.find-many-where-or.js +28 -28
  112. package/build/main/lib/principal.gateway.d.ts +35 -35
  113. package/build/main/lib/principal.gateway.js +399 -399
  114. package/build/main/lib/principal.id.d.ts +3 -3
  115. package/build/main/lib/principal.id.js +16 -16
  116. package/build/main/lib/principal.resolver.d.ts +21 -21
  117. package/build/main/lib/principal.resolver.js +343 -343
  118. package/build/main/lib/principal.service.d.ts +38 -38
  119. package/build/main/lib/principal.service.js +261 -256
  120. package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.d.ts +4 -4
  121. package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.js +16 -16
  122. package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.d.ts +3 -3
  123. package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +30 -30
  124. package/build/main/lib/seguridad/funciones/index.d.ts +6 -6
  125. package/build/main/lib/seguridad/funciones/index.js +12 -12
  126. package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.d.ts +1 -1
  127. package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.js +6 -6
  128. package/build/main/lib/seguridad/funciones/obtener-request.d.ts +1 -1
  129. package/build/main/lib/seguridad/funciones/obtener-request.js +6 -6
  130. package/build/main/lib/seguridad/funciones/obtener-response.d.ts +1 -1
  131. package/build/main/lib/seguridad/funciones/obtener-response.js +6 -6
  132. package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.d.ts +2 -2
  133. package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.js +13 -13
  134. package/build/main/lib/seguridad/seguridad.decorator.d.ts +1 -1
  135. package/build/main/lib/seguridad/seguridad.decorator.js +4 -4
  136. package/build/module/index.d.ts +42 -42
  137. package/build/module/index.js +20 -20
  138. package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.d.ts +5 -5
  139. package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +21 -21
  140. package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.d.ts +5 -5
  141. package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +21 -21
  142. package/build/module/lib/auth0/auth0.controller.d.ts +40 -40
  143. package/build/module/lib/auth0/auth0.controller.js +535 -535
  144. package/build/module/lib/auth0/auth0.service.d.ts +69 -69
  145. package/build/module/lib/auth0/auth0.service.js +603 -603
  146. package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.d.ts +5 -5
  147. package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +22 -22
  148. package/build/module/lib/auth0/interfaces/busqueda-nombre.d.ts +3 -3
  149. package/build/module/lib/auth0/interfaces/funciones-seguridad.d.ts +10 -10
  150. package/build/module/lib/auth0/interfaces/mensajes-controlador.d.ts +5 -5
  151. package/build/module/lib/auth0/seguridad-jwt-moviles/check-jwt.d.ts +2 -2
  152. package/build/module/lib/auth0/seguridad-jwt-moviles/check-jwt.js +4 -4
  153. package/build/module/lib/expresiones-regulares/letras-espacios-tildes-enie.d.ts +1 -1
  154. package/build/module/lib/expresiones-regulares/letras-espacios-tildes-enie.js +1 -1
  155. package/build/module/lib/funciones-util/buscar-registro.d.ts +1 -1
  156. package/build/module/lib/funciones-util/buscar-registro.js +489 -348
  157. package/build/module/lib/funciones-util/buscar-un-registro-por-id.d.ts +1 -1
  158. package/build/module/lib/funciones-util/buscar-un-registro-por-id.js +22 -22
  159. package/build/module/lib/funciones-util/buscar-where-or.d.ts +1 -1
  160. package/build/module/lib/funciones-util/buscar-where-or.js +30 -30
  161. package/build/module/lib/funciones-util/contar-registros.d.ts +1 -1
  162. package/build/module/lib/funciones-util/contar-registros.js +38 -38
  163. package/build/module/lib/funciones-util/crear-un-registro.d.ts +1 -1
  164. package/build/module/lib/funciones-util/crear-un-registro.js +21 -21
  165. package/build/module/lib/funciones-util/editar-un-registro.d.ts +1 -1
  166. package/build/module/lib/funciones-util/editar-un-registro.js +21 -21
  167. package/build/module/lib/funciones-util/eliminar-uno.d.ts +1 -1
  168. package/build/module/lib/funciones-util/eliminar-uno.js +32 -32
  169. package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.d.ts +2 -2
  170. package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +18 -18
  171. package/build/module/lib/interfaces-util/arreglo-funciones-booleanas.d.ts +4 -4
  172. package/build/module/lib/interfaces-util/broadcast-join.gateway.d.ts +14 -14
  173. package/build/module/lib/interfaces-util/campos-a-buscar.d.ts +9 -9
  174. package/build/module/lib/interfaces-util/campos-a-buscar.js +6 -6
  175. package/build/module/lib/interfaces-util/delete-service.d.ts +12 -12
  176. package/build/module/lib/interfaces-util/dto.d.ts +4 -4
  177. package/build/module/lib/interfaces-util/find-where-relations.d.ts +9 -9
  178. package/build/module/lib/interfaces-util/funciones-seguridad.d.ts +13 -13
  179. package/build/module/lib/interfaces-util/funciones.gateway.d.ts +5 -5
  180. package/build/module/lib/interfaces-util/mensajes-controller.d.ts +6 -6
  181. package/build/module/lib/interfaces-util/politicas-de-seguridad.d.ts +17 -17
  182. package/build/module/lib/interfaces-util/respuesta-general.gateway.d.ts +5 -5
  183. package/build/module/lib/menu/entities/menu-entity.d.ts +13 -13
  184. package/build/module/lib/menu/entities/menu-entity.js +90 -90
  185. package/build/module/lib/one-signal/interfaces/funciones-seguridad.d.ts +9 -9
  186. package/build/module/lib/one-signal/interfaces/one-signal-device.d.ts +19 -19
  187. package/build/module/lib/one-signal/interfaces/one-signal-notification.d.ts +15 -15
  188. package/build/module/lib/one-signal/interfaces/one-signal-notifications.d.ts +7 -7
  189. package/build/module/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.d.ts +5 -5
  190. package/build/module/lib/one-signal/interfaces/one-signal-ok-create-notification.d.ts +4 -4
  191. package/build/module/lib/one-signal/interfaces/one-signal-success.d.ts +3 -3
  192. package/build/module/lib/one-signal/interfaces/one-signal-tags.d.ts +3 -3
  193. package/build/module/lib/one-signal/interfaces/one-signal-view-devices.d.ts +7 -7
  194. package/build/module/lib/one-signal/one-signal.controller.d.ts +15 -15
  195. package/build/module/lib/one-signal/one-signal.controller.js +248 -248
  196. package/build/module/lib/one-signal/one-signal.service.d.ts +32 -32
  197. package/build/module/lib/one-signal/one-signal.service.js +82 -82
  198. package/build/module/lib/politicas/revisar-si-tiene-nombre-permiso.d.ts +1 -1
  199. package/build/module/lib/politicas/revisar-si-tiene-nombre-permiso.js +6 -6
  200. package/build/module/lib/politicas/revisar-si-tiene-rol.d.ts +1 -1
  201. package/build/module/lib/politicas/revisar-si-tiene-rol.js +6 -6
  202. package/build/module/lib/principal.controller.d.ts +20 -20
  203. package/build/module/lib/principal.controller.js +306 -306
  204. package/build/module/lib/principal.dto.d.ts +5 -5
  205. package/build/module/lib/principal.dto.js +18 -18
  206. package/build/module/lib/principal.entity.d.ts +7 -7
  207. package/build/module/lib/principal.entity.js +39 -39
  208. package/build/module/lib/principal.find-many-options.d.ts +14 -14
  209. package/build/module/lib/principal.find-many-options.js +45 -45
  210. package/build/module/lib/principal.find-many-where-or.d.ts +10 -10
  211. package/build/module/lib/principal.find-many-where-or.js +25 -25
  212. package/build/module/lib/principal.gateway.d.ts +35 -35
  213. package/build/module/lib/principal.gateway.js +396 -396
  214. package/build/module/lib/principal.id.d.ts +3 -3
  215. package/build/module/lib/principal.id.js +13 -13
  216. package/build/module/lib/principal.resolver.d.ts +21 -21
  217. package/build/module/lib/principal.resolver.js +340 -340
  218. package/build/module/lib/principal.service.d.ts +38 -38
  219. package/build/module/lib/principal.service.js +258 -253
  220. package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.d.ts +4 -4
  221. package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.js +13 -13
  222. package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.d.ts +3 -3
  223. package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +27 -27
  224. package/build/module/lib/seguridad/funciones/index.d.ts +6 -6
  225. package/build/module/lib/seguridad/funciones/index.js +6 -6
  226. package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.d.ts +1 -1
  227. package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.js +3 -3
  228. package/build/module/lib/seguridad/funciones/obtener-request.d.ts +1 -1
  229. package/build/module/lib/seguridad/funciones/obtener-request.js +3 -3
  230. package/build/module/lib/seguridad/funciones/obtener-response.d.ts +1 -1
  231. package/build/module/lib/seguridad/funciones/obtener-response.js +3 -3
  232. package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.d.ts +2 -2
  233. package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.js +10 -10
  234. package/build/module/lib/seguridad/seguridad.decorator.d.ts +1 -1
  235. package/build/module/lib/seguridad/seguridad.decorator.js +2 -2
  236. package/package.json +117 -116
@@ -1,341 +1,341 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __param = (this && this.__param) || function (paramIndex, decorator) {
8
- return function (target, key) { decorator(target, key, paramIndex); }
9
- };
10
- import { Args, Context, Info, Parent, Root } from "@nestjs/graphql";
11
- import { PrincipalFindManyOptions } from "./principal.find-many-options";
12
- import { buscarVariosRegistros } from "./funciones-util/buscar-registro";
13
- import { buscarRegistroPorId } from "./funciones-util/buscar-un-registro-por-id";
14
- import { PrincipalId } from "./principal.id";
15
- import { BadRequestException, ForbiddenException, InternalServerErrorException, NotFoundException } from "@nestjs/common";
16
- import { crearUnRegistro } from "./funciones-util/crear-un-registro";
17
- import { eliminarUno } from "./funciones-util/eliminar-uno";
18
- import { editarUnRegistro } from "./funciones-util/editar-un-registro";
19
- import { from, of } from 'rxjs';
20
- import { aplicarPoliticasDeSeguridad } from "./seguridad/aplicar-politicas-de-seguridad";
21
- import { mergeMap, map } from "rxjs/operators";
22
- import { contarRegistros } from "./funciones-util/contar-registros";
23
- import { buscarWhereOr } from "./funciones-util/buscar-where-or";
24
- import { PrincipalFindWhereOrOptions } from "./principal.find-many-where-or";
25
- export class PrincipalResolver {
26
- constructor(_funcionesSeguridad, _servicio, _dto, _skip = 0, _take = 30, _mensajes = {
27
- encontrarUno: 'Id incorrecto',
28
- crearUno: 'Registro inválido',
29
- actualizarUno: 'Error al actualizar',
30
- eliminarUno: 'Error al eliminar'
31
- }, contexto) {
32
- this._funcionesSeguridad = _funcionesSeguridad;
33
- this._servicio = _servicio;
34
- this._dto = _dto;
35
- this._skip = _skip;
36
- this._take = _take;
37
- this._mensajes = _mensajes;
38
- this.contexto = contexto;
39
- }
40
- // @Query('findAll')
41
- async findAll(criterioBusqueda, args, context, info, parent, root) {
42
- const tipoPoliticaSeguridad = {
43
- graphql: {
44
- args,
45
- context,
46
- info,
47
- parent,
48
- root
49
- }
50
- };
51
- const objetoPoliticasDeSeguridad = {
52
- funciones: this._funcionesSeguridad.findAll ? this._funcionesSeguridad.findAll : []
53
- };
54
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
55
- return puedeRealizarAccion$
56
- .pipe(mergeMap((puedeRealizarAccion) => {
57
- if (puedeRealizarAccion) {
58
- return from(buscarVariosRegistros(criterioBusqueda, PrincipalFindManyOptions, this._skip, this._take, this._servicio));
59
- }
60
- else {
61
- return of({ error: 403, mensaje: 'No tiene permisos' });
62
- }
63
- }), map((respuesta) => {
64
- if (respuesta.error) {
65
- throw new ForbiddenException(respuesta);
66
- }
67
- else {
68
- return respuesta;
69
- }
70
- }));
71
- }
72
- // @Query('findWhereOr')
73
- async findWhereOr(criterioBusqueda, args, context, info, parent, root) {
74
- const tipoPoliticaSeguridad = {
75
- graphql: {
76
- args,
77
- context,
78
- info,
79
- parent,
80
- root
81
- }
82
- };
83
- const objetoPoliticasDeSeguridad = {
84
- funciones: this._funcionesSeguridad.findWhereOr ? this._funcionesSeguridad.findWhereOr : []
85
- };
86
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
87
- return puedeRealizarAccion$
88
- .pipe(mergeMap((puedeRealizarAccion) => {
89
- if (puedeRealizarAccion) {
90
- return from(buscarWhereOr(criterioBusqueda, PrincipalFindWhereOrOptions, this._skip, this._take, this._servicio));
91
- }
92
- else {
93
- return of({ error: 403, mensaje: 'No tiene permisos' });
94
- }
95
- }), map((respuesta) => {
96
- if (respuesta.error) {
97
- throw new ForbiddenException(respuesta);
98
- }
99
- else {
100
- return respuesta;
101
- }
102
- }));
103
- }
104
- // @Query('count')
105
- async count(criterioBusqueda, args, context, info, parent, root) {
106
- const tipoPoliticaSeguridad = {
107
- graphql: {
108
- args,
109
- context,
110
- info,
111
- parent,
112
- root
113
- }
114
- };
115
- const objetoPoliticasDeSeguridad = {
116
- funciones: this._funcionesSeguridad.count ? this._funcionesSeguridad.count : []
117
- };
118
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
119
- return puedeRealizarAccion$
120
- .pipe(mergeMap((puedeRealizarAccion) => {
121
- if (puedeRealizarAccion) {
122
- return from(contarRegistros(criterioBusqueda, PrincipalFindManyOptions, this._skip, this._take, this._servicio));
123
- }
124
- else {
125
- return of({ error: 403, mensaje: 'No tiene permisos' });
126
- }
127
- }), map((respuesta) => {
128
- if (respuesta.error) {
129
- throw new ForbiddenException(respuesta);
130
- }
131
- else {
132
- return respuesta;
133
- }
134
- }));
135
- }
136
- // @Query('findOneById')
137
- async findOneById(id, args, context, info, parent, root) {
138
- if (id && typeof id === 'string') {
139
- const tipoPoliticaSeguridad = {
140
- graphql: {
141
- args,
142
- context,
143
- info,
144
- parent,
145
- root
146
- }
147
- };
148
- const objetoPoliticasDeSeguridad = {
149
- funciones: this._funcionesSeguridad.findOne ? this._funcionesSeguridad.findOne : []
150
- };
151
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
152
- return puedeRealizarAccion$
153
- .pipe(mergeMap((puedeRealizarAccion) => {
154
- if (puedeRealizarAccion) {
155
- return from(buscarRegistroPorId(PrincipalId, id, this._servicio, this._mensajes.encontrarUno));
156
- }
157
- else {
158
- return of({ error: 403, mensaje: 'No tiene permisos' });
159
- }
160
- }), map((respuesta) => {
161
- if (respuesta.error) {
162
- throw new ForbiddenException(respuesta);
163
- }
164
- else {
165
- return respuesta;
166
- }
167
- }));
168
- }
169
- else {
170
- throw new BadRequestException(this._mensajes.encontrarUno);
171
- }
172
- }
173
- // @Mutation('createOne')
174
- async createOne(nuevoRegistro, args, context, info, parent, root) {
175
- const tipoPoliticaSeguridad = {
176
- graphql: {
177
- args,
178
- context,
179
- info,
180
- parent,
181
- root
182
- }
183
- };
184
- const objetoPoliticasDeSeguridad = {
185
- funciones: this._funcionesSeguridad.createOne ? this._funcionesSeguridad.createOne : []
186
- };
187
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
188
- return puedeRealizarAccion$
189
- .pipe(mergeMap((puedeRealizarAccion) => {
190
- if (puedeRealizarAccion) {
191
- return from(crearUnRegistro(nuevoRegistro, this._servicio, this._dto.CreateDto, this._mensajes.crearUno));
192
- }
193
- else {
194
- return of({ error: 403, mensaje: 'No tiene permisos' });
195
- }
196
- }), map((respuesta) => {
197
- if (respuesta.error) {
198
- throw new ForbiddenException(respuesta);
199
- }
200
- else {
201
- return respuesta;
202
- }
203
- }));
204
- }
205
- // @Mutation('deleteOne')
206
- async deleteOne(id, args, context, info, parent, root) {
207
- if (id && typeof id === 'string') {
208
- const tipoPoliticaSeguridad = {
209
- graphql: {
210
- args,
211
- context,
212
- info,
213
- parent,
214
- root
215
- }
216
- };
217
- const objetoPoliticasDeSeguridad = {
218
- funciones: this._funcionesSeguridad.deleteOne ? this._funcionesSeguridad.deleteOne : []
219
- };
220
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
221
- return puedeRealizarAccion$
222
- .pipe(mergeMap((puedeRealizarAccion) => {
223
- if (puedeRealizarAccion) {
224
- return from(eliminarUno(id, PrincipalId, this._servicio, this._mensajes.eliminarUno, true));
225
- }
226
- else {
227
- return of({ error: 403, mensaje: 'No tiene permisos' });
228
- }
229
- }), map((respuesta) => {
230
- if (respuesta.error) {
231
- switch (respuesta.error) {
232
- case 403:
233
- throw new ForbiddenException(respuesta);
234
- case 400:
235
- throw new BadRequestException(respuesta);
236
- case 404:
237
- throw new NotFoundException(respuesta);
238
- default:
239
- throw new InternalServerErrorException(respuesta);
240
- }
241
- }
242
- else {
243
- return respuesta;
244
- }
245
- }));
246
- }
247
- else {
248
- throw new BadRequestException(this._mensajes.eliminarUno);
249
- }
250
- }
251
- // @Mutation('updateOne')
252
- async updateOne(id, registroAActualizar, args, context, info, parent, root) {
253
- const tipoPoliticaSeguridad = {
254
- graphql: {
255
- args,
256
- context,
257
- info,
258
- parent,
259
- root
260
- }
261
- };
262
- const objetoPoliticasDeSeguridad = {
263
- funciones: this._funcionesSeguridad.updateOne ? this._funcionesSeguridad.updateOne : []
264
- };
265
- const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
266
- return puedeRealizarAccion$
267
- .pipe(mergeMap((puedeRealizarAccion) => {
268
- if (puedeRealizarAccion) {
269
- return from(editarUnRegistro(id, registroAActualizar, this._servicio, this._dto.UpdateDto, this._mensajes.actualizarUno));
270
- }
271
- else {
272
- return of({ error: 403, mensaje: 'No tiene permisos' });
273
- }
274
- }), map((respuesta) => {
275
- if (respuesta.error) {
276
- throw new ForbiddenException(respuesta);
277
- }
278
- else {
279
- return respuesta;
280
- }
281
- }));
282
- }
283
- }
284
- __decorate([
285
- __param(0, Args('criterioBusqueda')),
286
- __param(1, Args()),
287
- __param(2, Context()),
288
- __param(3, Info()),
289
- __param(4, Parent()),
290
- __param(5, Root())
291
- ], PrincipalResolver.prototype, "findAll", null);
292
- __decorate([
293
- __param(0, Args('criterioBusqueda')),
294
- __param(1, Args()),
295
- __param(2, Context()),
296
- __param(3, Info()),
297
- __param(4, Parent()),
298
- __param(5, Root())
299
- ], PrincipalResolver.prototype, "findWhereOr", null);
300
- __decorate([
301
- __param(0, Args('criterioBusqueda')),
302
- __param(1, Args()),
303
- __param(2, Context()),
304
- __param(3, Info()),
305
- __param(4, Parent()),
306
- __param(5, Root())
307
- ], PrincipalResolver.prototype, "count", null);
308
- __decorate([
309
- __param(0, Args('id')),
310
- __param(1, Args()),
311
- __param(2, Context()),
312
- __param(3, Info()),
313
- __param(4, Parent()),
314
- __param(5, Root())
315
- ], PrincipalResolver.prototype, "findOneById", null);
316
- __decorate([
317
- __param(0, Args('nuevoRegistro')),
318
- __param(1, Args()),
319
- __param(2, Context()),
320
- __param(3, Info()),
321
- __param(4, Parent()),
322
- __param(5, Root())
323
- ], PrincipalResolver.prototype, "createOne", null);
324
- __decorate([
325
- __param(0, Args('id')),
326
- __param(1, Args()),
327
- __param(2, Context()),
328
- __param(3, Info()),
329
- __param(4, Parent()),
330
- __param(5, Root())
331
- ], PrincipalResolver.prototype, "deleteOne", null);
332
- __decorate([
333
- __param(0, Args('id')),
334
- __param(1, Args('registroAActualizar')),
335
- __param(2, Args()),
336
- __param(3, Context()),
337
- __param(4, Info()),
338
- __param(5, Parent()),
339
- __param(6, Root())
340
- ], PrincipalResolver.prototype, "updateOne", null);
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Args, Context, Info, Parent, Root } from "@nestjs/graphql";
11
+ import { PrincipalFindManyOptions } from "./principal.find-many-options";
12
+ import { buscarVariosRegistros } from "./funciones-util/buscar-registro";
13
+ import { buscarRegistroPorId } from "./funciones-util/buscar-un-registro-por-id";
14
+ import { PrincipalId } from "./principal.id";
15
+ import { BadRequestException, ForbiddenException, InternalServerErrorException, NotFoundException } from "@nestjs/common";
16
+ import { crearUnRegistro } from "./funciones-util/crear-un-registro";
17
+ import { eliminarUno } from "./funciones-util/eliminar-uno";
18
+ import { editarUnRegistro } from "./funciones-util/editar-un-registro";
19
+ import { from, of } from 'rxjs';
20
+ import { aplicarPoliticasDeSeguridad } from "./seguridad/aplicar-politicas-de-seguridad";
21
+ import { mergeMap, map } from "rxjs/operators";
22
+ import { contarRegistros } from "./funciones-util/contar-registros";
23
+ import { buscarWhereOr } from "./funciones-util/buscar-where-or";
24
+ import { PrincipalFindWhereOrOptions } from "./principal.find-many-where-or";
25
+ export class PrincipalResolver {
26
+ constructor(_funcionesSeguridad, _servicio, _dto, _skip = 0, _take = 30, _mensajes = {
27
+ encontrarUno: 'Id incorrecto',
28
+ crearUno: 'Registro inválido',
29
+ actualizarUno: 'Error al actualizar',
30
+ eliminarUno: 'Error al eliminar'
31
+ }, contexto) {
32
+ this._funcionesSeguridad = _funcionesSeguridad;
33
+ this._servicio = _servicio;
34
+ this._dto = _dto;
35
+ this._skip = _skip;
36
+ this._take = _take;
37
+ this._mensajes = _mensajes;
38
+ this.contexto = contexto;
39
+ }
40
+ // @Query('findAll')
41
+ async findAll(criterioBusqueda, args, context, info, parent, root) {
42
+ const tipoPoliticaSeguridad = {
43
+ graphql: {
44
+ args,
45
+ context,
46
+ info,
47
+ parent,
48
+ root
49
+ }
50
+ };
51
+ const objetoPoliticasDeSeguridad = {
52
+ funciones: this._funcionesSeguridad.findAll ? this._funcionesSeguridad.findAll : []
53
+ };
54
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
55
+ return puedeRealizarAccion$
56
+ .pipe(mergeMap((puedeRealizarAccion) => {
57
+ if (puedeRealizarAccion) {
58
+ return from(buscarVariosRegistros(criterioBusqueda, PrincipalFindManyOptions, this._skip, this._take, this._servicio));
59
+ }
60
+ else {
61
+ return of({ error: 403, mensaje: 'No tiene permisos' });
62
+ }
63
+ }), map((respuesta) => {
64
+ if (respuesta.error) {
65
+ throw new ForbiddenException(respuesta);
66
+ }
67
+ else {
68
+ return respuesta;
69
+ }
70
+ }));
71
+ }
72
+ // @Query('findWhereOr')
73
+ async findWhereOr(criterioBusqueda, args, context, info, parent, root) {
74
+ const tipoPoliticaSeguridad = {
75
+ graphql: {
76
+ args,
77
+ context,
78
+ info,
79
+ parent,
80
+ root
81
+ }
82
+ };
83
+ const objetoPoliticasDeSeguridad = {
84
+ funciones: this._funcionesSeguridad.findWhereOr ? this._funcionesSeguridad.findWhereOr : []
85
+ };
86
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
87
+ return puedeRealizarAccion$
88
+ .pipe(mergeMap((puedeRealizarAccion) => {
89
+ if (puedeRealizarAccion) {
90
+ return from(buscarWhereOr(criterioBusqueda, PrincipalFindWhereOrOptions, this._skip, this._take, this._servicio));
91
+ }
92
+ else {
93
+ return of({ error: 403, mensaje: 'No tiene permisos' });
94
+ }
95
+ }), map((respuesta) => {
96
+ if (respuesta.error) {
97
+ throw new ForbiddenException(respuesta);
98
+ }
99
+ else {
100
+ return respuesta;
101
+ }
102
+ }));
103
+ }
104
+ // @Query('count')
105
+ async count(criterioBusqueda, args, context, info, parent, root) {
106
+ const tipoPoliticaSeguridad = {
107
+ graphql: {
108
+ args,
109
+ context,
110
+ info,
111
+ parent,
112
+ root
113
+ }
114
+ };
115
+ const objetoPoliticasDeSeguridad = {
116
+ funciones: this._funcionesSeguridad.count ? this._funcionesSeguridad.count : []
117
+ };
118
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
119
+ return puedeRealizarAccion$
120
+ .pipe(mergeMap((puedeRealizarAccion) => {
121
+ if (puedeRealizarAccion) {
122
+ return from(contarRegistros(criterioBusqueda, PrincipalFindManyOptions, this._skip, this._take, this._servicio));
123
+ }
124
+ else {
125
+ return of({ error: 403, mensaje: 'No tiene permisos' });
126
+ }
127
+ }), map((respuesta) => {
128
+ if (respuesta.error) {
129
+ throw new ForbiddenException(respuesta);
130
+ }
131
+ else {
132
+ return respuesta;
133
+ }
134
+ }));
135
+ }
136
+ // @Query('findOneById')
137
+ async findOneById(id, args, context, info, parent, root) {
138
+ if (id && typeof id === 'string') {
139
+ const tipoPoliticaSeguridad = {
140
+ graphql: {
141
+ args,
142
+ context,
143
+ info,
144
+ parent,
145
+ root
146
+ }
147
+ };
148
+ const objetoPoliticasDeSeguridad = {
149
+ funciones: this._funcionesSeguridad.findOne ? this._funcionesSeguridad.findOne : []
150
+ };
151
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
152
+ return puedeRealizarAccion$
153
+ .pipe(mergeMap((puedeRealizarAccion) => {
154
+ if (puedeRealizarAccion) {
155
+ return from(buscarRegistroPorId(PrincipalId, id, this._servicio, this._mensajes.encontrarUno));
156
+ }
157
+ else {
158
+ return of({ error: 403, mensaje: 'No tiene permisos' });
159
+ }
160
+ }), map((respuesta) => {
161
+ if (respuesta.error) {
162
+ throw new ForbiddenException(respuesta);
163
+ }
164
+ else {
165
+ return respuesta;
166
+ }
167
+ }));
168
+ }
169
+ else {
170
+ throw new BadRequestException(this._mensajes.encontrarUno);
171
+ }
172
+ }
173
+ // @Mutation('createOne')
174
+ async createOne(nuevoRegistro, args, context, info, parent, root) {
175
+ const tipoPoliticaSeguridad = {
176
+ graphql: {
177
+ args,
178
+ context,
179
+ info,
180
+ parent,
181
+ root
182
+ }
183
+ };
184
+ const objetoPoliticasDeSeguridad = {
185
+ funciones: this._funcionesSeguridad.createOne ? this._funcionesSeguridad.createOne : []
186
+ };
187
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
188
+ return puedeRealizarAccion$
189
+ .pipe(mergeMap((puedeRealizarAccion) => {
190
+ if (puedeRealizarAccion) {
191
+ return from(crearUnRegistro(nuevoRegistro, this._servicio, this._dto.CreateDto, this._mensajes.crearUno));
192
+ }
193
+ else {
194
+ return of({ error: 403, mensaje: 'No tiene permisos' });
195
+ }
196
+ }), map((respuesta) => {
197
+ if (respuesta.error) {
198
+ throw new ForbiddenException(respuesta);
199
+ }
200
+ else {
201
+ return respuesta;
202
+ }
203
+ }));
204
+ }
205
+ // @Mutation('deleteOne')
206
+ async deleteOne(id, args, context, info, parent, root) {
207
+ if (id && typeof id === 'string') {
208
+ const tipoPoliticaSeguridad = {
209
+ graphql: {
210
+ args,
211
+ context,
212
+ info,
213
+ parent,
214
+ root
215
+ }
216
+ };
217
+ const objetoPoliticasDeSeguridad = {
218
+ funciones: this._funcionesSeguridad.deleteOne ? this._funcionesSeguridad.deleteOne : []
219
+ };
220
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
221
+ return puedeRealizarAccion$
222
+ .pipe(mergeMap((puedeRealizarAccion) => {
223
+ if (puedeRealizarAccion) {
224
+ return from(eliminarUno(id, PrincipalId, this._servicio, this._mensajes.eliminarUno, true));
225
+ }
226
+ else {
227
+ return of({ error: 403, mensaje: 'No tiene permisos' });
228
+ }
229
+ }), map((respuesta) => {
230
+ if (respuesta.error) {
231
+ switch (respuesta.error) {
232
+ case 403:
233
+ throw new ForbiddenException(respuesta);
234
+ case 400:
235
+ throw new BadRequestException(respuesta);
236
+ case 404:
237
+ throw new NotFoundException(respuesta);
238
+ default:
239
+ throw new InternalServerErrorException(respuesta);
240
+ }
241
+ }
242
+ else {
243
+ return respuesta;
244
+ }
245
+ }));
246
+ }
247
+ else {
248
+ throw new BadRequestException(this._mensajes.eliminarUno);
249
+ }
250
+ }
251
+ // @Mutation('updateOne')
252
+ async updateOne(id, registroAActualizar, args, context, info, parent, root) {
253
+ const tipoPoliticaSeguridad = {
254
+ graphql: {
255
+ args,
256
+ context,
257
+ info,
258
+ parent,
259
+ root
260
+ }
261
+ };
262
+ const objetoPoliticasDeSeguridad = {
263
+ funciones: this._funcionesSeguridad.updateOne ? this._funcionesSeguridad.updateOne : []
264
+ };
265
+ const puedeRealizarAccion$ = aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
266
+ return puedeRealizarAccion$
267
+ .pipe(mergeMap((puedeRealizarAccion) => {
268
+ if (puedeRealizarAccion) {
269
+ return from(editarUnRegistro(id, registroAActualizar, this._servicio, this._dto.UpdateDto, this._mensajes.actualizarUno));
270
+ }
271
+ else {
272
+ return of({ error: 403, mensaje: 'No tiene permisos' });
273
+ }
274
+ }), map((respuesta) => {
275
+ if (respuesta.error) {
276
+ throw new ForbiddenException(respuesta);
277
+ }
278
+ else {
279
+ return respuesta;
280
+ }
281
+ }));
282
+ }
283
+ }
284
+ __decorate([
285
+ __param(0, Args('criterioBusqueda')),
286
+ __param(1, Args()),
287
+ __param(2, Context()),
288
+ __param(3, Info()),
289
+ __param(4, Parent()),
290
+ __param(5, Root())
291
+ ], PrincipalResolver.prototype, "findAll", null);
292
+ __decorate([
293
+ __param(0, Args('criterioBusqueda')),
294
+ __param(1, Args()),
295
+ __param(2, Context()),
296
+ __param(3, Info()),
297
+ __param(4, Parent()),
298
+ __param(5, Root())
299
+ ], PrincipalResolver.prototype, "findWhereOr", null);
300
+ __decorate([
301
+ __param(0, Args('criterioBusqueda')),
302
+ __param(1, Args()),
303
+ __param(2, Context()),
304
+ __param(3, Info()),
305
+ __param(4, Parent()),
306
+ __param(5, Root())
307
+ ], PrincipalResolver.prototype, "count", null);
308
+ __decorate([
309
+ __param(0, Args('id')),
310
+ __param(1, Args()),
311
+ __param(2, Context()),
312
+ __param(3, Info()),
313
+ __param(4, Parent()),
314
+ __param(5, Root())
315
+ ], PrincipalResolver.prototype, "findOneById", null);
316
+ __decorate([
317
+ __param(0, Args('nuevoRegistro')),
318
+ __param(1, Args()),
319
+ __param(2, Context()),
320
+ __param(3, Info()),
321
+ __param(4, Parent()),
322
+ __param(5, Root())
323
+ ], PrincipalResolver.prototype, "createOne", null);
324
+ __decorate([
325
+ __param(0, Args('id')),
326
+ __param(1, Args()),
327
+ __param(2, Context()),
328
+ __param(3, Info()),
329
+ __param(4, Parent()),
330
+ __param(5, Root())
331
+ ], PrincipalResolver.prototype, "deleteOne", null);
332
+ __decorate([
333
+ __param(0, Args('id')),
334
+ __param(1, Args('registroAActualizar')),
335
+ __param(2, Args()),
336
+ __param(3, Context()),
337
+ __param(4, Info()),
338
+ __param(5, Parent()),
339
+ __param(6, Root())
340
+ ], PrincipalResolver.prototype, "updateOne", null);
341
341
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLnJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9wcmluY2lwYWwucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUd2RSxPQUFPLEVBQUMsSUFBSSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0UsTUFBTTtJQUNGLFlBQTZCLG1CQUF1QyxFQUMvQyxTQUFTLEVBQ1QsSUFBa0IsRUFDbEIsUUFBUSxDQUFDLEVBQ1QsUUFBUSxFQUFFLEVBQ1YsWUFBZ0M7UUFDN0MsWUFBWSxFQUFFLGVBQWU7UUFDN0IsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixhQUFhLEVBQUUscUJBQXFCO1FBQ3BDLFdBQVcsRUFBRSxtQkFBbUI7S0FDbkMsRUFDUyxRQUFRO1FBWE8sd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUMvQyxjQUFTLEdBQVQsU0FBUyxDQUFBO1FBQ1QsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFJO1FBQ1QsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUNWLGNBQVMsR0FBVCxTQUFTLENBS3pCO1FBQ1MsYUFBUSxHQUFSLFFBQVEsQ0FBQTtJQUd0QixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQ2lCLGdCQUF3QixFQUMxQyxJQUFJLEVBQ0QsT0FBTyxFQUNWLElBQUksRUFDRixNQUFNLEVBQ1IsSUFBSTtRQUdaLE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELE9BQU8sRUFBRTtnQkFDTCxJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixNQUFNO2dCQUNOLElBQUk7YUFDUDtTQUNKLENBQUE7UUFDRCxNQUFNLDBCQUEwQixHQUE4QjtZQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN0RixDQUFBO1FBRUQsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0gsT0FBTyxvQkFBb0I7YUFDdEIsSUFBSSxDQUNELFFBQVEsQ0FDSixDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDcEIsSUFBSSxtQkFBbUIsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQzFIO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2FBQzFEO1FBQ0wsQ0FBQyxDQUNKLEVBQ0QsR0FBRyxDQUNDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDZixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMzQztpQkFBTTtnQkFFSCxPQUFPLFNBQVMsQ0FBQzthQUNwQjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUM7SUFDVixDQUFDO0lBR0Qsd0JBQXdCO0lBQ3hCLEtBQUssQ0FBQyxXQUFXLENBQ2EsZ0JBQXdCLEVBQzFDLElBQUksRUFDRCxPQUFPLEVBQ1YsSUFBSSxFQUNGLE1BQU0sRUFDUixJQUFJO1FBR1osTUFBTSxxQkFBcUIsR0FBeUI7WUFDaEQsT0FBTyxFQUFFO2dCQUNMLElBQUk7Z0JBQ0osT0FBTztnQkFDUCxJQUFJO2dCQUNKLE1BQU07Z0JBQ04sSUFBSTthQUNQO1NBQ0osQ0FBQTtRQUNELE1BQU0sMEJBQTBCLEdBQThCO1lBQzFELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzlGLENBQUE7UUFFRCxNQUFNLG9CQUFvQixHQUFHLDJCQUEyQixDQUFDLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzSCxPQUFPLG9CQUFvQjthQUN0QixJQUFJLENBQ0QsUUFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNwQixJQUFJLG1CQUFtQixFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3JIO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2FBQzFEO1FBQ0wsQ0FBQyxDQUNKLEVBQ0QsR0FBRyxDQUNDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDZixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMzQztpQkFBTTtnQkFFSCxPQUFPLFNBQVMsQ0FBQzthQUNwQjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUM7SUFDVixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQ21CLGdCQUF3QixFQUMxQyxJQUFJLEVBQ0QsT0FBTyxFQUNWLElBQUksRUFDRixNQUFNLEVBQ1IsSUFBSTtRQUdaLE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELE9BQU8sRUFBRTtnQkFDTCxJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixNQUFNO2dCQUNOLElBQUk7YUFDUDtTQUNKLENBQUE7UUFDRCxNQUFNLDBCQUEwQixHQUE4QjtZQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNsRixDQUFBO1FBRUQsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0gsT0FBTyxvQkFBb0I7YUFDdEIsSUFBSSxDQUNELFFBQVEsQ0FDSixDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDcEIsSUFBSSxtQkFBbUIsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNwSDtpQkFBTTtnQkFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQTthQUMxRDtRQUNMLENBQUMsQ0FDSixFQUNELEdBQUcsQ0FDQyxDQUFDLFNBQWMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNqQixNQUFNLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDM0M7aUJBQU07Z0JBRUgsT0FBTyxTQUFTLENBQUM7YUFDcEI7UUFDTCxDQUFDLENBQ0osQ0FDSixDQUFDO0lBQ1YsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixLQUFLLENBQUMsV0FBVyxDQUNELEVBQUUsRUFDTixJQUFJLEVBQ0QsT0FBTyxFQUNWLElBQUksRUFDRixNQUFNLEVBQ1IsSUFBSTtRQUVaLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUU5QixNQUFNLHFCQUFxQixHQUF5QjtnQkFDaEQsT0FBTyxFQUFFO29CQUNMLElBQUk7b0JBQ0osT0FBTztvQkFDUCxJQUFJO29CQUNKLE1BQU07b0JBQ04sSUFBSTtpQkFDUDthQUNKLENBQUE7WUFDRCxNQUFNLDBCQUEwQixHQUE4QjtnQkFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDdEYsQ0FBQTtZQUVELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTNILE9BQU8sb0JBQW9CO2lCQUN0QixJQUFJLENBQ0QsUUFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxtQkFBbUIsRUFBRTtvQkFDckIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztpQkFDbEc7cUJBQU07b0JBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7aUJBQzFEO1lBQ0wsQ0FBQyxDQUNKLEVBQ0QsR0FBRyxDQUNDLENBQUMsU0FBYyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO29CQUNqQixNQUFNLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQzNDO3FCQUFNO29CQUVILE9BQU8sU0FBUyxDQUFDO2lCQUNwQjtZQUNMLENBQUMsQ0FDSixDQUNKLENBQUM7U0FDVDthQUFNO1lBQ0gsTUFBTSxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUQ7SUFFTCxDQUFDO0lBR0QseUJBQXlCO0lBQ3pCLEtBQUssQ0FBQyxTQUFTLENBQ1ksYUFBYSxFQUM1QixJQUFJLEVBQ0QsT0FBTyxFQUNWLElBQUksRUFDRixNQUFNLEVBQ1IsSUFBSTtRQUdaLE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELE9BQU8sRUFBRTtnQkFDTCxJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixNQUFNO2dCQUNOLElBQUk7YUFDUDtTQUNKLENBQUE7UUFDRCxNQUFNLDBCQUEwQixHQUE4QjtZQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUMxRixDQUFBO1FBRUQsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0gsT0FBTyxvQkFBb0I7YUFDdEIsSUFBSSxDQUNELFFBQVEsQ0FDSixDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDcEIsSUFBSSxtQkFBbUIsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUM3RztpQkFBTTtnQkFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQTthQUMxRDtRQUNMLENBQUMsQ0FDSixFQUNELEdBQUcsQ0FDQyxDQUFDLFNBQWMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNqQixNQUFNLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDM0M7aUJBQU07Z0JBQ0gsT0FBTyxTQUFTLENBQUM7YUFDcEI7UUFDTCxDQUFDLENBQ0osQ0FDSixDQUFDO0lBQ1YsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixLQUFLLENBQUMsU0FBUyxDQUNDLEVBQUUsRUFDTixJQUFJLEVBQ0QsT0FBTyxFQUNWLElBQUksRUFDRixNQUFNLEVBQ1IsSUFBSTtRQUVaLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUU5QixNQUFNLHFCQUFxQixHQUF5QjtnQkFDaEQsT0FBTyxFQUFFO29CQUNMLElBQUk7b0JBQ0osT0FBTztvQkFDUCxJQUFJO29CQUNKLE1BQU07b0JBQ04sSUFBSTtpQkFDUDthQUNKLENBQUE7WUFDRCxNQUFNLDBCQUEwQixHQUE4QjtnQkFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDMUYsQ0FBQTtZQUVELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTNILE9BQU8sb0JBQW9CO2lCQUN0QixJQUFJLENBQ0QsUUFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxtQkFBbUIsRUFBRTtvQkFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUMvRjtxQkFBTTtvQkFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQTtpQkFDMUQ7WUFDTCxDQUFDLENBQ0osRUFDRCxHQUFHLENBQ0MsQ0FBQyxTQUFjLEVBQUUsRUFBRTtnQkFDZixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7b0JBQ2pCLFFBQVEsU0FBUyxDQUFDLEtBQUssRUFBRTt3QkFDckIsS0FBSyxHQUFHOzRCQUNKLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDNUMsS0FBSyxHQUFHOzRCQUNKLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDN0MsS0FBSyxHQUFHOzRCQUNKLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDM0M7NEJBQ0ksTUFBTSxJQUFJLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFBO3FCQUN4RDtpQkFDSjtxQkFBTTtvQkFDSCxPQUFPLFNBQVMsQ0FBQztpQkFDcEI7WUFDTCxDQUFDLENBQ0osQ0FDSixDQUFDO1NBQ1Q7YUFBTTtZQUNILE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdEO0lBRUwsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixLQUFLLENBQUMsU0FBUyxDQUNDLEVBQUUsRUFDZSxtQkFBbUIsRUFDeEMsSUFBSSxFQUNELE9BQU8sRUFDVixJQUFJLEVBQ0YsTUFBTSxFQUNSLElBQUk7UUFFWixNQUFNLHFCQUFxQixHQUF5QjtZQUNoRCxPQUFPLEVBQUU7Z0JBQ0wsSUFBSTtnQkFDSixPQUFPO2dCQUNQLElBQUk7Z0JBQ0osTUFBTTtnQkFDTixJQUFJO2FBQ1A7U0FDSixDQUFBO1FBQ0QsTUFBTSwwQkFBMEIsR0FBOEI7WUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDMUYsQ0FBQTtRQUVELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNILE9BQU8sb0JBQW9CO2FBQ3RCLElBQUksQ0FDRCxRQUFRLENBQ0osQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQ3BCLElBQUksbUJBQW1CLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzthQUM3SDtpQkFBTTtnQkFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQTthQUMxRDtRQUNMLENBQUMsQ0FDSixFQUNELEdBQUcsQ0FDQyxDQUFDLFNBQWMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNqQixNQUFNLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDM0M7aUJBQU07Z0JBQ0gsT0FBTyxTQUFTLENBQUM7YUFDcEI7UUFDTCxDQUFDLENBQ0osQ0FDSixDQUFDO0lBQ1YsQ0FBQztDQUVKO0FBeFdHO0lBQ0ssV0FBQSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUN4QixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxPQUFPLEVBQUUsQ0FBQTtJQUNULFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE1BQU0sRUFBRSxDQUFBO0lBQ1IsV0FBQSxJQUFJLEVBQUUsQ0FBQTtnREF3Q1Y7QUFJRDtJQUNLLFdBQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDeEIsV0FBQSxJQUFJLEVBQUUsQ0FBQTtJQUNOLFdBQUEsT0FBTyxFQUFFLENBQUE7SUFDVCxXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxNQUFNLEVBQUUsQ0FBQTtJQUNSLFdBQUEsSUFBSSxFQUFFLENBQUE7b0RBd0NWO0FBR0Q7SUFDSyxXQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0lBQ3hCLFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE9BQU8sRUFBRSxDQUFBO0lBQ1QsV0FBQSxJQUFJLEVBQUUsQ0FBQTtJQUNOLFdBQUEsTUFBTSxFQUFFLENBQUE7SUFDUixXQUFBLElBQUksRUFBRSxDQUFBOzhDQXdDVjtBQUdEO0lBQ0ssV0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDVixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxPQUFPLEVBQUUsQ0FBQTtJQUNULFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE1BQU0sRUFBRSxDQUFBO0lBQ1IsV0FBQSxJQUFJLEVBQUUsQ0FBQTtvREE2Q1Y7QUFJRDtJQUNLLFdBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3JCLFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE9BQU8sRUFBRSxDQUFBO0lBQ1QsV0FBQSxJQUFJLEVBQUUsQ0FBQTtJQUNOLFdBQUEsTUFBTSxFQUFFLENBQUE7SUFDUixXQUFBLElBQUksRUFBRSxDQUFBO2tEQXVDVjtBQUdEO0lBQ0ssV0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDVixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxPQUFPLEVBQUUsQ0FBQTtJQUNULFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE1BQU0sRUFBRSxDQUFBO0lBQ1IsV0FBQSxJQUFJLEVBQUUsQ0FBQTtrREFxRFY7QUFHRDtJQUNLLFdBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ1YsV0FBQSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUMzQixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxPQUFPLEVBQUUsQ0FBQTtJQUNULFdBQUEsSUFBSSxFQUFFLENBQUE7SUFDTixXQUFBLE1BQU0sRUFBRSxDQUFBO0lBQ1IsV0FBQSxJQUFJLEVBQUUsQ0FBQTtrREFzQ1YifQ==