wbcore 1.59.9__py2.py3-none-any.whl

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 (1239) hide show
  1. wbcore/__init__.py +1 -0
  2. wbcore/admin.py +197 -0
  3. wbcore/apps.py +17 -0
  4. wbcore/cache/__init__.py +0 -0
  5. wbcore/cache/buttons.py +23 -0
  6. wbcore/cache/decorators.py +31 -0
  7. wbcore/cache/mixins.py +49 -0
  8. wbcore/cache/registry.py +98 -0
  9. wbcore/cache/views.py +19 -0
  10. wbcore/configs/__init__.py +11 -0
  11. wbcore/configs/configs.py +52 -0
  12. wbcore/configs/decorators.py +11 -0
  13. wbcore/configs/registry.py +35 -0
  14. wbcore/configs/views.py +12 -0
  15. wbcore/configurations/__init__.py +1 -0
  16. wbcore/configurations/base.py +46 -0
  17. wbcore/configurations/configurations/__init__.py +16 -0
  18. wbcore/configurations/configurations/apps.py +55 -0
  19. wbcore/configurations/configurations/authentication.py +44 -0
  20. wbcore/configurations/configurations/base.py +15 -0
  21. wbcore/configurations/configurations/cache.py +20 -0
  22. wbcore/configurations/configurations/celery.py +26 -0
  23. wbcore/configurations/configurations/i18nl10n.py +11 -0
  24. wbcore/configurations/configurations/mail.py +2 -0
  25. wbcore/configurations/configurations/maintenance.py +53 -0
  26. wbcore/configurations/configurations/media.py +22 -0
  27. wbcore/configurations/configurations/middleware.py +27 -0
  28. wbcore/configurations/configurations/network.py +19 -0
  29. wbcore/configurations/configurations/rest_framework.py +42 -0
  30. wbcore/configurations/configurations/static.py +28 -0
  31. wbcore/configurations/configurations/templates.py +17 -0
  32. wbcore/configurations/configurations/uvicorn.py +9 -0
  33. wbcore/configurations/configurations/wbcore.py +61 -0
  34. wbcore/content_type/__init__.py +0 -0
  35. wbcore/content_type/admin.py +8 -0
  36. wbcore/content_type/filters.py +20 -0
  37. wbcore/content_type/serializers.py +98 -0
  38. wbcore/content_type/utils.py +30 -0
  39. wbcore/content_type/viewsets.py +81 -0
  40. wbcore/contrib/__init__.py +0 -0
  41. wbcore/contrib/agenda/__init__.py +0 -0
  42. wbcore/contrib/agenda/admin/__init__.py +2 -0
  43. wbcore/contrib/agenda/admin/calendar_item.py +14 -0
  44. wbcore/contrib/agenda/admin/conference_room.py +19 -0
  45. wbcore/contrib/agenda/apps.py +6 -0
  46. wbcore/contrib/agenda/configurations.py +11 -0
  47. wbcore/contrib/agenda/factories/__init__.py +2 -0
  48. wbcore/contrib/agenda/factories/calendar_item.py +49 -0
  49. wbcore/contrib/agenda/factories/conference_room.py +20 -0
  50. wbcore/contrib/agenda/filters/__init__.py +2 -0
  51. wbcore/contrib/agenda/filters/calendar_item.py +66 -0
  52. wbcore/contrib/agenda/filters/conference_room.py +42 -0
  53. wbcore/contrib/agenda/locale/de/LC_MESSAGES/django.po +206 -0
  54. wbcore/contrib/agenda/locale/de/LC_MESSAGES/django.po.translated +236 -0
  55. wbcore/contrib/agenda/locale/en/LC_MESSAGES/django.po +200 -0
  56. wbcore/contrib/agenda/locale/fr/LC_MESSAGES/django.po +201 -0
  57. wbcore/contrib/agenda/migrations/0001_initial.py +84 -0
  58. wbcore/contrib/agenda/migrations/0002_initial.py +26 -0
  59. wbcore/contrib/agenda/migrations/0003_calendaritem_endpoint_basename.py +42 -0
  60. wbcore/contrib/agenda/migrations/0004_alter_calendaritem_item_type.py +17 -0
  61. wbcore/contrib/agenda/migrations/0005_building_and_more.py +94 -0
  62. wbcore/contrib/agenda/migrations/0006_calendaritem_is_deletable.py +17 -0
  63. wbcore/contrib/agenda/migrations/0007_alter_calendaritem_options.py +21 -0
  64. wbcore/contrib/agenda/migrations/0008_alter_calendaritem_item_type.py +17 -0
  65. wbcore/contrib/agenda/migrations/0009_alter_calendaritem_icon.py +18 -0
  66. wbcore/contrib/agenda/migrations/__init__.py +0 -0
  67. wbcore/contrib/agenda/models/__init__.py +2 -0
  68. wbcore/contrib/agenda/models/calendar_item.py +240 -0
  69. wbcore/contrib/agenda/models/conference_room.py +96 -0
  70. wbcore/contrib/agenda/release_notes/1_0_0.md +13 -0
  71. wbcore/contrib/agenda/release_notes/__init__.py +0 -0
  72. wbcore/contrib/agenda/serializers/__init__.py +10 -0
  73. wbcore/contrib/agenda/serializers/calendar_item.py +77 -0
  74. wbcore/contrib/agenda/serializers/conference_room.py +99 -0
  75. wbcore/contrib/agenda/signals.py +5 -0
  76. wbcore/contrib/agenda/static/agenda/markdown/documentation/building.md +11 -0
  77. wbcore/contrib/agenda/static/agenda/markdown/documentation/conferenceroom.md +20 -0
  78. wbcore/contrib/agenda/tests/__init__.py +0 -0
  79. wbcore/contrib/agenda/tests/conftest.py +14 -0
  80. wbcore/contrib/agenda/tests/signals.py +17 -0
  81. wbcore/contrib/agenda/tests/test_models.py +34 -0
  82. wbcore/contrib/agenda/tests/test_viewsets.py +172 -0
  83. wbcore/contrib/agenda/tests/tests.py +26 -0
  84. wbcore/contrib/agenda/typings.py +19 -0
  85. wbcore/contrib/agenda/urls.py +26 -0
  86. wbcore/contrib/agenda/viewsets/__init__.py +13 -0
  87. wbcore/contrib/agenda/viewsets/buttons/__init__.py +1 -0
  88. wbcore/contrib/agenda/viewsets/buttons/conference_room.py +21 -0
  89. wbcore/contrib/agenda/viewsets/calendar_items.py +169 -0
  90. wbcore/contrib/agenda/viewsets/conference_room.py +48 -0
  91. wbcore/contrib/agenda/viewsets/display/__init__.py +2 -0
  92. wbcore/contrib/agenda/viewsets/display/calendar_items.py +17 -0
  93. wbcore/contrib/agenda/viewsets/display/conference_room.py +42 -0
  94. wbcore/contrib/agenda/viewsets/endpoints/__init__.py +1 -0
  95. wbcore/contrib/agenda/viewsets/endpoints/calendar_items.py +19 -0
  96. wbcore/contrib/agenda/viewsets/menu/__init__.py +2 -0
  97. wbcore/contrib/agenda/viewsets/menu/calendar_items.py +12 -0
  98. wbcore/contrib/agenda/viewsets/menu/conference_room.py +38 -0
  99. wbcore/contrib/agenda/viewsets/titles/__init__.py +2 -0
  100. wbcore/contrib/agenda/viewsets/titles/calendar_items.py +8 -0
  101. wbcore/contrib/agenda/viewsets/titles/conference_room.py +25 -0
  102. wbcore/contrib/ai/__init__.py +0 -0
  103. wbcore/contrib/ai/apps.py +5 -0
  104. wbcore/contrib/ai/exceptions.py +40 -0
  105. wbcore/contrib/ai/llm/__init__.py +0 -0
  106. wbcore/contrib/ai/llm/config.py +166 -0
  107. wbcore/contrib/ai/llm/decorators.py +10 -0
  108. wbcore/contrib/ai/llm/mixins.py +34 -0
  109. wbcore/contrib/ai/llm/utils.py +69 -0
  110. wbcore/contrib/authentication/__init__.py +9 -0
  111. wbcore/contrib/authentication/admin.py +247 -0
  112. wbcore/contrib/authentication/apps.py +14 -0
  113. wbcore/contrib/authentication/authentication.py +111 -0
  114. wbcore/contrib/authentication/configs.py +10 -0
  115. wbcore/contrib/authentication/configurations.py +60 -0
  116. wbcore/contrib/authentication/dynamic_preferences_registry.py +26 -0
  117. wbcore/contrib/authentication/factories/__init__.py +10 -0
  118. wbcore/contrib/authentication/factories/tokens.py +15 -0
  119. wbcore/contrib/authentication/factories/users.py +112 -0
  120. wbcore/contrib/authentication/factories/users_activities.py +19 -0
  121. wbcore/contrib/authentication/filters.py +17 -0
  122. wbcore/contrib/authentication/fixtures/authentication.json +62 -0
  123. wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po +632 -0
  124. wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po.translated +634 -0
  125. wbcore/contrib/authentication/locale/en/LC_MESSAGES/django.po +590 -0
  126. wbcore/contrib/authentication/locale/fr/LC_MESSAGES/django.po +592 -0
  127. wbcore/contrib/authentication/management/__init__.py +14 -0
  128. wbcore/contrib/authentication/migrations/0001_initial_squashed.py +174 -0
  129. wbcore/contrib/authentication/migrations/0002_profile.py +26 -0
  130. wbcore/contrib/authentication/migrations/0003_alter_user_profile.py +34 -0
  131. wbcore/contrib/authentication/migrations/0004_token.py +51 -0
  132. wbcore/contrib/authentication/migrations/0005_user_external_calendar_settings.py +17 -0
  133. wbcore/contrib/authentication/migrations/0006_auto_20231206_1422.py +13 -0
  134. wbcore/contrib/authentication/migrations/__init__.py +0 -0
  135. wbcore/contrib/authentication/models/__init__.py +3 -0
  136. wbcore/contrib/authentication/models/tokens.py +140 -0
  137. wbcore/contrib/authentication/models/users.py +224 -0
  138. wbcore/contrib/authentication/models/users_activities.py +114 -0
  139. wbcore/contrib/authentication/release_notes/1_0_0.md +13 -0
  140. wbcore/contrib/authentication/release_notes/__init__.py +0 -0
  141. wbcore/contrib/authentication/serializers/__init__.py +14 -0
  142. wbcore/contrib/authentication/serializers/users.py +351 -0
  143. wbcore/contrib/authentication/serializers/users_activites.py +37 -0
  144. wbcore/contrib/authentication/tasks.py +30 -0
  145. wbcore/contrib/authentication/templates/activate_confirm.html +12 -0
  146. wbcore/contrib/authentication/templates/base.html +135 -0
  147. wbcore/contrib/authentication/templates/email_base_template.html +335 -0
  148. wbcore/contrib/authentication/templates/password_reset_done.html +13 -0
  149. wbcore/contrib/authentication/templates/password_reset_email.html +11 -0
  150. wbcore/contrib/authentication/templates/password_reset_email_html.html +43 -0
  151. wbcore/contrib/authentication/templates/password_reset_form.html +23 -0
  152. wbcore/contrib/authentication/templates/password_reset_sent.html +11 -0
  153. wbcore/contrib/authentication/templates/reset_password.html +15 -0
  154. wbcore/contrib/authentication/templates/user_registration_email.html +37 -0
  155. wbcore/contrib/authentication/tests/__init__.py +0 -0
  156. wbcore/contrib/authentication/tests/conftest.py +18 -0
  157. wbcore/contrib/authentication/tests/e2e/__init__.py +1 -0
  158. wbcore/contrib/authentication/tests/e2e/e2e_auth_utility.py +20 -0
  159. wbcore/contrib/authentication/tests/signals.py +18 -0
  160. wbcore/contrib/authentication/tests/test_configs.py +6 -0
  161. wbcore/contrib/authentication/tests/test_serializers.py +6 -0
  162. wbcore/contrib/authentication/tests/test_tasks.py +34 -0
  163. wbcore/contrib/authentication/tests/test_tokens.py +127 -0
  164. wbcore/contrib/authentication/tests/test_users.py +338 -0
  165. wbcore/contrib/authentication/tests/test_viewsets.py +6 -0
  166. wbcore/contrib/authentication/tests/tests.py +15 -0
  167. wbcore/contrib/authentication/urls.py +94 -0
  168. wbcore/contrib/authentication/utils.py +10 -0
  169. wbcore/contrib/authentication/viewsets/__init__.py +19 -0
  170. wbcore/contrib/authentication/viewsets/buttons/__init__.py +1 -0
  171. wbcore/contrib/authentication/viewsets/buttons/users.py +56 -0
  172. wbcore/contrib/authentication/viewsets/display/__init__.py +6 -0
  173. wbcore/contrib/authentication/viewsets/display/user_activities.py +86 -0
  174. wbcore/contrib/authentication/viewsets/display/users.py +73 -0
  175. wbcore/contrib/authentication/viewsets/endpoints/__init__.py +6 -0
  176. wbcore/contrib/authentication/viewsets/endpoints/user_activities.py +14 -0
  177. wbcore/contrib/authentication/viewsets/endpoints/users.py +18 -0
  178. wbcore/contrib/authentication/viewsets/menu/__init__.py +6 -0
  179. wbcore/contrib/authentication/viewsets/menu/user_activities.py +40 -0
  180. wbcore/contrib/authentication/viewsets/menu/users.py +17 -0
  181. wbcore/contrib/authentication/viewsets/titles/__init__.py +12 -0
  182. wbcore/contrib/authentication/viewsets/titles/user_activities.py +32 -0
  183. wbcore/contrib/authentication/viewsets/titles/users.py +27 -0
  184. wbcore/contrib/authentication/viewsets/user_activities.py +224 -0
  185. wbcore/contrib/authentication/viewsets/users.py +331 -0
  186. wbcore/contrib/color/admin.py +28 -0
  187. wbcore/contrib/color/apps.py +5 -0
  188. wbcore/contrib/color/enums.py +17 -0
  189. wbcore/contrib/color/factories.py +10 -0
  190. wbcore/contrib/color/fields.py +29 -0
  191. wbcore/contrib/color/forms.py +13 -0
  192. wbcore/contrib/color/migrations/0001_initial.py +33 -0
  193. wbcore/contrib/color/migrations/0002_alter_colorgradient_colors.py +25 -0
  194. wbcore/contrib/color/migrations/__init__.py +0 -0
  195. wbcore/contrib/color/models.py +63 -0
  196. wbcore/contrib/color/tests/conftest.py +10 -0
  197. wbcore/contrib/color/tests/test_color_models.py +61 -0
  198. wbcore/contrib/color/tests/test_fields.py +25 -0
  199. wbcore/contrib/currency/__init__.py +0 -0
  200. wbcore/contrib/currency/admin.py +33 -0
  201. wbcore/contrib/currency/apps.py +5 -0
  202. wbcore/contrib/currency/dynamic_preferences_registry.py +39 -0
  203. wbcore/contrib/currency/factories.py +40 -0
  204. wbcore/contrib/currency/fixtures/currency.yaml +1014 -0
  205. wbcore/contrib/currency/fixtures/currency_fx_rate.yaml +73585 -0
  206. wbcore/contrib/currency/import_export/__init__.py +0 -0
  207. wbcore/contrib/currency/import_export/backends/__init__.py +1 -0
  208. wbcore/contrib/currency/import_export/backends/fixerio/__init__.py +1 -0
  209. wbcore/contrib/currency/import_export/backends/fixerio/currency_fx_rates.py +69 -0
  210. wbcore/contrib/currency/import_export/backends/utils.py +5 -0
  211. wbcore/contrib/currency/import_export/handlers/__init__.py +2 -0
  212. wbcore/contrib/currency/import_export/handlers/currency.py +25 -0
  213. wbcore/contrib/currency/import_export/handlers/currency_fx_rates.py +29 -0
  214. wbcore/contrib/currency/import_export/parsers/__init__.py +0 -0
  215. wbcore/contrib/currency/import_export/parsers/fixerio/__init__.py +0 -0
  216. wbcore/contrib/currency/import_export/parsers/fixerio/currency_fx_rates.py +34 -0
  217. wbcore/contrib/currency/migrations/0001_initial.py +89 -0
  218. wbcore/contrib/currency/migrations/__init__.py +0 -0
  219. wbcore/contrib/currency/models.py +199 -0
  220. wbcore/contrib/currency/release_notes/1_0_0.md +13 -0
  221. wbcore/contrib/currency/release_notes/__init__.py +0 -0
  222. wbcore/contrib/currency/serializers.py +45 -0
  223. wbcore/contrib/currency/tests/__init__.py +0 -0
  224. wbcore/contrib/currency/tests/conftest.py +7 -0
  225. wbcore/contrib/currency/tests/test_models.py +115 -0
  226. wbcore/contrib/currency/tests/test_serializers.py +67 -0
  227. wbcore/contrib/currency/tests/test_viewsets.py +196 -0
  228. wbcore/contrib/currency/urls.py +20 -0
  229. wbcore/contrib/currency/viewsets/__init__.py +2 -0
  230. wbcore/contrib/currency/viewsets/buttons/__init__.py +0 -0
  231. wbcore/contrib/currency/viewsets/currency.py +57 -0
  232. wbcore/contrib/currency/viewsets/currency_fx_rates.py +33 -0
  233. wbcore/contrib/currency/viewsets/display/__init__.py +2 -0
  234. wbcore/contrib/currency/viewsets/display/currency.py +38 -0
  235. wbcore/contrib/currency/viewsets/display/currency_fx_rates.py +9 -0
  236. wbcore/contrib/currency/viewsets/endpoints/__init__.py +1 -0
  237. wbcore/contrib/currency/viewsets/endpoints/currency_fx_rates.py +6 -0
  238. wbcore/contrib/currency/viewsets/menu/__init__.py +1 -0
  239. wbcore/contrib/currency/viewsets/menu/currency.py +8 -0
  240. wbcore/contrib/currency/viewsets/preview/__init__.py +1 -0
  241. wbcore/contrib/currency/viewsets/preview/currency.py +10 -0
  242. wbcore/contrib/currency/viewsets/titles/__init__.py +2 -0
  243. wbcore/contrib/currency/viewsets/titles/currency.py +6 -0
  244. wbcore/contrib/currency/viewsets/titles/currency_fx_rates.py +8 -0
  245. wbcore/contrib/dataloader/__init__.py +1 -0
  246. wbcore/contrib/dataloader/apps.py +5 -0
  247. wbcore/contrib/dataloader/dataloaders/__init__.py +2 -0
  248. wbcore/contrib/dataloader/dataloaders/dataloaders.py +25 -0
  249. wbcore/contrib/dataloader/dataloaders/proxies.py +82 -0
  250. wbcore/contrib/dataloader/models/__init__.py +1 -0
  251. wbcore/contrib/dataloader/models/entities.py +30 -0
  252. wbcore/contrib/dataloader/models/querysets/__init__.py +1 -0
  253. wbcore/contrib/dataloader/models/querysets/entities.py +28 -0
  254. wbcore/contrib/dataloader/tests/__init__.py +0 -0
  255. wbcore/contrib/dataloader/tests/conftest.py +26 -0
  256. wbcore/contrib/dataloader/tests/test/__init__.py +0 -0
  257. wbcore/contrib/dataloader/tests/test/dataloaders/__init__.py +0 -0
  258. wbcore/contrib/dataloader/tests/test/dataloaders/dataloaders.py +18 -0
  259. wbcore/contrib/dataloader/tests/test/dataloaders/protocols.py +5 -0
  260. wbcore/contrib/dataloader/tests/test/dataloaders/proxies.py +11 -0
  261. wbcore/contrib/dataloader/tests/test/factories.py +13 -0
  262. wbcore/contrib/dataloader/tests/test/models.py +11 -0
  263. wbcore/contrib/dataloader/tests/test_dataloaders.py +38 -0
  264. wbcore/contrib/dataloader/tests/test_entities.py +13 -0
  265. wbcore/contrib/dataloader/utils.py +20 -0
  266. wbcore/contrib/directory/__init__.py +0 -0
  267. wbcore/contrib/directory/admin/__init__.py +14 -0
  268. wbcore/contrib/directory/admin/contacts.py +55 -0
  269. wbcore/contrib/directory/admin/entries.py +235 -0
  270. wbcore/contrib/directory/admin/relationships.py +73 -0
  271. wbcore/contrib/directory/apps.py +6 -0
  272. wbcore/contrib/directory/configs.py +9 -0
  273. wbcore/contrib/directory/configurations.py +70 -0
  274. wbcore/contrib/directory/dynamic_preferences_registry.py +61 -0
  275. wbcore/contrib/directory/factories/__init__.py +35 -0
  276. wbcore/contrib/directory/factories/contacts.py +71 -0
  277. wbcore/contrib/directory/factories/entries.py +174 -0
  278. wbcore/contrib/directory/factories/relationships.py +77 -0
  279. wbcore/contrib/directory/filters/__init__.py +22 -0
  280. wbcore/contrib/directory/filters/contacts.py +234 -0
  281. wbcore/contrib/directory/filters/entries.py +273 -0
  282. wbcore/contrib/directory/filters/relationships.py +90 -0
  283. wbcore/contrib/directory/fixtures/directory.json +3884 -0
  284. wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po +1700 -0
  285. wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po.translated +1779 -0
  286. wbcore/contrib/directory/locale/en/LC_MESSAGES/django.po +1652 -0
  287. wbcore/contrib/directory/locale/fr/LC_MESSAGES/django.po +1654 -0
  288. wbcore/contrib/directory/migrations/0001_initial.py +871 -0
  289. wbcore/contrib/directory/migrations/0002_auto_20230414_1553.py +42 -0
  290. wbcore/contrib/directory/migrations/0003_remove_entry_last_event.py +16 -0
  291. wbcore/contrib/directory/migrations/0004_entry_is_draft_entry.py +21 -0
  292. wbcore/contrib/directory/migrations/0005_entry_salutation.py +17 -0
  293. wbcore/contrib/directory/migrations/0006_employeremployeerelationship_position_name.py +23 -0
  294. wbcore/contrib/directory/migrations/0007_alter_bankingcontact_options.py +20 -0
  295. wbcore/contrib/directory/migrations/0008_bankingcontact_access.py +17 -0
  296. wbcore/contrib/directory/migrations/0009_remove_entry_external_identfier_and_more.py +22 -0
  297. wbcore/contrib/directory/migrations/0010_remove_addresscontact_city.py +31 -0
  298. wbcore/contrib/directory/migrations/0011_person_description_person_i18n.py +24 -0
  299. wbcore/contrib/directory/migrations/0012_alter_person_managers.py +20 -0
  300. wbcore/contrib/directory/migrations/0013_alter_clientmanagerrelationship_options.py +17 -0
  301. wbcore/contrib/directory/migrations/0014_alter_entry_relationship_managers_and_more.py +28 -0
  302. wbcore/contrib/directory/migrations/__init__.py +0 -0
  303. wbcore/contrib/directory/models/__init__.py +27 -0
  304. wbcore/contrib/directory/models/contacts.py +554 -0
  305. wbcore/contrib/directory/models/entries.py +896 -0
  306. wbcore/contrib/directory/models/relationships.py +624 -0
  307. wbcore/contrib/directory/permissions.py +6 -0
  308. wbcore/contrib/directory/preferences.py +11 -0
  309. wbcore/contrib/directory/release_notes/1_0_0.md +13 -0
  310. wbcore/contrib/directory/release_notes/1_0_1.md +13 -0
  311. wbcore/contrib/directory/release_notes/__init__.py +0 -0
  312. wbcore/contrib/directory/serializers/__init__.py +62 -0
  313. wbcore/contrib/directory/serializers/companies.py +169 -0
  314. wbcore/contrib/directory/serializers/contacts.py +404 -0
  315. wbcore/contrib/directory/serializers/entries.py +355 -0
  316. wbcore/contrib/directory/serializers/entry_representations.py +38 -0
  317. wbcore/contrib/directory/serializers/persons.py +214 -0
  318. wbcore/contrib/directory/serializers/relationships.py +333 -0
  319. wbcore/contrib/directory/signals.py +3 -0
  320. wbcore/contrib/directory/static/directory/markdown/documentation/address.md +38 -0
  321. wbcore/contrib/directory/static/directory/markdown/documentation/banking.md +54 -0
  322. wbcore/contrib/directory/static/directory/markdown/documentation/bankingentry.md +38 -0
  323. wbcore/contrib/directory/static/directory/markdown/documentation/clientmanagerrelationship.md +42 -0
  324. wbcore/contrib/directory/static/directory/markdown/documentation/company.md +52 -0
  325. wbcore/contrib/directory/static/directory/markdown/documentation/companytype.md +2 -0
  326. wbcore/contrib/directory/static/directory/markdown/documentation/customerstatus.md +2 -0
  327. wbcore/contrib/directory/static/directory/markdown/documentation/email.md +20 -0
  328. wbcore/contrib/directory/static/directory/markdown/documentation/employeecompany.md +34 -0
  329. wbcore/contrib/directory/static/directory/markdown/documentation/employerperson.md +43 -0
  330. wbcore/contrib/directory/static/directory/markdown/documentation/person.md +61 -0
  331. wbcore/contrib/directory/static/directory/markdown/documentation/position.md +2 -0
  332. wbcore/contrib/directory/static/directory/markdown/documentation/relationshiptype.md +2 -0
  333. wbcore/contrib/directory/static/directory/markdown/documentation/socialmedia.md +23 -0
  334. wbcore/contrib/directory/static/directory/markdown/documentation/specialization.md +2 -0
  335. wbcore/contrib/directory/static/directory/markdown/documentation/systememployee.md +31 -0
  336. wbcore/contrib/directory/static/directory/markdown/documentation/telephone.md +23 -0
  337. wbcore/contrib/directory/static/directory/markdown/documentation/telephonesearch.md +26 -0
  338. wbcore/contrib/directory/static/directory/markdown/documentation/userisclient.md +14 -0
  339. wbcore/contrib/directory/static/directory/markdown/documentation/userismanager.md +28 -0
  340. wbcore/contrib/directory/static/directory/markdown/documentation/website.md +20 -0
  341. wbcore/contrib/directory/tests/__init__.py +0 -0
  342. wbcore/contrib/directory/tests/conftest.py +62 -0
  343. wbcore/contrib/directory/tests/disable_signals.py +62 -0
  344. wbcore/contrib/directory/tests/e2e/__init__.py +7 -0
  345. wbcore/contrib/directory/tests/e2e/e2e_directory_utility.py +163 -0
  346. wbcore/contrib/directory/tests/signals.py +89 -0
  347. wbcore/contrib/directory/tests/test_configs.py +6 -0
  348. wbcore/contrib/directory/tests/test_filters.py +60 -0
  349. wbcore/contrib/directory/tests/test_models.py +428 -0
  350. wbcore/contrib/directory/tests/test_permissions.py +123 -0
  351. wbcore/contrib/directory/tests/test_serializers.py +217 -0
  352. wbcore/contrib/directory/tests/test_viewsets.py +835 -0
  353. wbcore/contrib/directory/typings.py +17 -0
  354. wbcore/contrib/directory/urls.py +135 -0
  355. wbcore/contrib/directory/viewsets/__init__.py +57 -0
  356. wbcore/contrib/directory/viewsets/buttons/__init__.py +7 -0
  357. wbcore/contrib/directory/viewsets/buttons/contacts.py +17 -0
  358. wbcore/contrib/directory/viewsets/buttons/entries.py +134 -0
  359. wbcore/contrib/directory/viewsets/buttons/relationships.py +64 -0
  360. wbcore/contrib/directory/viewsets/contacts.py +392 -0
  361. wbcore/contrib/directory/viewsets/display/__init__.py +36 -0
  362. wbcore/contrib/directory/viewsets/display/contacts.py +368 -0
  363. wbcore/contrib/directory/viewsets/display/entries.py +532 -0
  364. wbcore/contrib/directory/viewsets/display/relationships.py +292 -0
  365. wbcore/contrib/directory/viewsets/display/utils.py +34 -0
  366. wbcore/contrib/directory/viewsets/endpoints/__init__.py +22 -0
  367. wbcore/contrib/directory/viewsets/endpoints/contacts.py +55 -0
  368. wbcore/contrib/directory/viewsets/endpoints/entries.py +31 -0
  369. wbcore/contrib/directory/viewsets/endpoints/relationships.py +81 -0
  370. wbcore/contrib/directory/viewsets/entries.py +205 -0
  371. wbcore/contrib/directory/viewsets/menu/__init__.py +16 -0
  372. wbcore/contrib/directory/viewsets/menu/contacts.py +26 -0
  373. wbcore/contrib/directory/viewsets/menu/entries.py +62 -0
  374. wbcore/contrib/directory/viewsets/menu/relationships.py +32 -0
  375. wbcore/contrib/directory/viewsets/menu/utils.py +73 -0
  376. wbcore/contrib/directory/viewsets/mixins.py +12 -0
  377. wbcore/contrib/directory/viewsets/previews/__init__.py +2 -0
  378. wbcore/contrib/directory/viewsets/previews/contacts.py +19 -0
  379. wbcore/contrib/directory/viewsets/previews/entries.py +32 -0
  380. wbcore/contrib/directory/viewsets/relationships.py +256 -0
  381. wbcore/contrib/directory/viewsets/titles/__init__.py +30 -0
  382. wbcore/contrib/directory/viewsets/titles/contacts.py +123 -0
  383. wbcore/contrib/directory/viewsets/titles/entries.py +30 -0
  384. wbcore/contrib/directory/viewsets/titles/relationships.py +86 -0
  385. wbcore/contrib/directory/viewsets/titles/utils.py +47 -0
  386. wbcore/contrib/directory/viewsets/utils.py +101 -0
  387. wbcore/contrib/documents/__init__.py +0 -0
  388. wbcore/contrib/documents/admin.py +80 -0
  389. wbcore/contrib/documents/apps.py +6 -0
  390. wbcore/contrib/documents/factories.py +44 -0
  391. wbcore/contrib/documents/filters.py +81 -0
  392. wbcore/contrib/documents/fixtures/docments.json +135 -0
  393. wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po +281 -0
  394. wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po.translated +285 -0
  395. wbcore/contrib/documents/locale/en/LC_MESSAGES/django.po +271 -0
  396. wbcore/contrib/documents/locale/fr/LC_MESSAGES/django.po +270 -0
  397. wbcore/contrib/documents/migrations/0001_initial.py +189 -0
  398. wbcore/contrib/documents/migrations/0002_documentmodelrelationship_primary_and_more.py +22 -0
  399. wbcore/contrib/documents/migrations/0003_alter_documentmodelrelationship_unique_together_and_more.py +30 -0
  400. wbcore/contrib/documents/migrations/0004_auto_20240103_0958.py +44 -0
  401. wbcore/contrib/documents/migrations/0005_document_valid_from_document_valid_until_and_more.py +32 -0
  402. wbcore/contrib/documents/migrations/__init__.py +0 -0
  403. wbcore/contrib/documents/models/__init__.py +4 -0
  404. wbcore/contrib/documents/models/document_model_relationships.py +58 -0
  405. wbcore/contrib/documents/models/document_types.py +36 -0
  406. wbcore/contrib/documents/models/documents.py +311 -0
  407. wbcore/contrib/documents/models/mixins.py +10 -0
  408. wbcore/contrib/documents/models/shareable_links.py +91 -0
  409. wbcore/contrib/documents/release_notes/1_0_0.md +13 -0
  410. wbcore/contrib/documents/release_notes/__init__.py +0 -0
  411. wbcore/contrib/documents/serializers/__init__.py +12 -0
  412. wbcore/contrib/documents/serializers/document_model_relationships.py +31 -0
  413. wbcore/contrib/documents/serializers/document_types.py +41 -0
  414. wbcore/contrib/documents/serializers/documents.py +65 -0
  415. wbcore/contrib/documents/serializers/shareable_links.py +91 -0
  416. wbcore/contrib/documents/static/documents/markdown/documentation/document_types.md +21 -0
  417. wbcore/contrib/documents/static/documents/markdown/documentation/documents.md +18 -0
  418. wbcore/contrib/documents/static/documents/markdown/documentation/shareablelink.md +28 -0
  419. wbcore/contrib/documents/static/documents/markdown/documentation/shareablelinkaccess.md +20 -0
  420. wbcore/contrib/documents/tests/conftest.py +30 -0
  421. wbcore/contrib/documents/tests/test_models.py +148 -0
  422. wbcore/contrib/documents/urls.py +43 -0
  423. wbcore/contrib/documents/viewsets/__init__.py +10 -0
  424. wbcore/contrib/documents/viewsets/buttons/__init__.py +3 -0
  425. wbcore/contrib/documents/viewsets/buttons/documents.py +54 -0
  426. wbcore/contrib/documents/viewsets/buttons/shareable_links.py +21 -0
  427. wbcore/contrib/documents/viewsets/buttons/signals.py +14 -0
  428. wbcore/contrib/documents/viewsets/display/__init__.py +4 -0
  429. wbcore/contrib/documents/viewsets/display/document_model_relationships.py +19 -0
  430. wbcore/contrib/documents/viewsets/display/document_types.py +24 -0
  431. wbcore/contrib/documents/viewsets/display/documents.py +102 -0
  432. wbcore/contrib/documents/viewsets/display/shareable_links.py +66 -0
  433. wbcore/contrib/documents/viewsets/document_model_relationships.py +25 -0
  434. wbcore/contrib/documents/viewsets/document_types.py +38 -0
  435. wbcore/contrib/documents/viewsets/documents.py +108 -0
  436. wbcore/contrib/documents/viewsets/endpoints/__init__.py +5 -0
  437. wbcore/contrib/documents/viewsets/endpoints/documents.py +20 -0
  438. wbcore/contrib/documents/viewsets/endpoints/documents_model_relationships.py +14 -0
  439. wbcore/contrib/documents/viewsets/endpoints/shareable_links.py +27 -0
  440. wbcore/contrib/documents/viewsets/menu/__init__.py +1 -0
  441. wbcore/contrib/documents/viewsets/menu/documents.py +25 -0
  442. wbcore/contrib/documents/viewsets/previews/__init__.py +1 -0
  443. wbcore/contrib/documents/viewsets/previews/documents.py +10 -0
  444. wbcore/contrib/documents/viewsets/shareable_links.py +110 -0
  445. wbcore/contrib/documents/viewsets/titles/__init__.py +3 -0
  446. wbcore/contrib/documents/viewsets/titles/document_types.py +14 -0
  447. wbcore/contrib/documents/viewsets/titles/documents.py +27 -0
  448. wbcore/contrib/documents/viewsets/titles/shareable_links.py +14 -0
  449. wbcore/contrib/dynamic_preferences/__init__.py +0 -0
  450. wbcore/contrib/dynamic_preferences/types.py +127 -0
  451. wbcore/contrib/dynamic_preferences/viewsets.py +27 -0
  452. wbcore/contrib/example_app/__init__.py +0 -0
  453. wbcore/contrib/example_app/admin.py +118 -0
  454. wbcore/contrib/example_app/apps.py +6 -0
  455. wbcore/contrib/example_app/factories/__init__.py +8 -0
  456. wbcore/contrib/example_app/factories/event.py +27 -0
  457. wbcore/contrib/example_app/factories/league.py +16 -0
  458. wbcore/contrib/example_app/factories/match.py +26 -0
  459. wbcore/contrib/example_app/factories/person.py +34 -0
  460. wbcore/contrib/example_app/factories/role.py +10 -0
  461. wbcore/contrib/example_app/factories/sport.py +13 -0
  462. wbcore/contrib/example_app/factories/stadium.py +13 -0
  463. wbcore/contrib/example_app/factories/team.py +37 -0
  464. wbcore/contrib/example_app/filters/__init__.py +9 -0
  465. wbcore/contrib/example_app/filters/event.py +83 -0
  466. wbcore/contrib/example_app/filters/league.py +75 -0
  467. wbcore/contrib/example_app/filters/match.py +93 -0
  468. wbcore/contrib/example_app/filters/person.py +78 -0
  469. wbcore/contrib/example_app/filters/role.py +18 -0
  470. wbcore/contrib/example_app/filters/sport.py +27 -0
  471. wbcore/contrib/example_app/filters/stadium.py +31 -0
  472. wbcore/contrib/example_app/filters/team.py +78 -0
  473. wbcore/contrib/example_app/filters/teamresult.py +48 -0
  474. wbcore/contrib/example_app/fixtures/example_app.json +7425 -0
  475. wbcore/contrib/example_app/migrations/0001_initial.py +498 -0
  476. wbcore/contrib/example_app/migrations/0002_sportperson_profile.py +49 -0
  477. wbcore/contrib/example_app/migrations/0003_change_stadium_capacity.py +31 -0
  478. wbcore/contrib/example_app/migrations/0004_alter_player_transfer_value.py +21 -0
  479. wbcore/contrib/example_app/migrations/0005_sportperson_profile_image.py +23 -0
  480. wbcore/contrib/example_app/migrations/0006_league_season_period_player_is_active_and_more.py +116 -0
  481. wbcore/contrib/example_app/migrations/0007_alter_player_options_alter_team_options_and_more.py +40 -0
  482. wbcore/contrib/example_app/migrations/__init__.py +0 -0
  483. wbcore/contrib/example_app/models.py +978 -0
  484. wbcore/contrib/example_app/serializers/__init__.py +31 -0
  485. wbcore/contrib/example_app/serializers/league.py +112 -0
  486. wbcore/contrib/example_app/serializers/match_event.py +305 -0
  487. wbcore/contrib/example_app/serializers/person_team.py +281 -0
  488. wbcore/contrib/example_app/serializers/role.py +16 -0
  489. wbcore/contrib/example_app/serializers/season.py +54 -0
  490. wbcore/contrib/example_app/serializers/sport.py +38 -0
  491. wbcore/contrib/example_app/serializers/stadium.py +59 -0
  492. wbcore/contrib/example_app/serializers/teamresult.py +44 -0
  493. wbcore/contrib/example_app/templates/example_app/embedded_view.html +19 -0
  494. wbcore/contrib/example_app/tests/__init__.py +0 -0
  495. wbcore/contrib/example_app/tests/conftest.py +13 -0
  496. wbcore/contrib/example_app/tests/e2e/__init__.py +1 -0
  497. wbcore/contrib/example_app/tests/e2e/e2e_example_app_utility.py +52 -0
  498. wbcore/contrib/example_app/tests/e2e/test_league.py +70 -0
  499. wbcore/contrib/example_app/tests/e2e/test_person.py +68 -0
  500. wbcore/contrib/example_app/tests/e2e/test_teams.py +57 -0
  501. wbcore/contrib/example_app/tests/signals.py +7 -0
  502. wbcore/contrib/example_app/tests/test_displays.py +41 -0
  503. wbcore/contrib/example_app/tests/test_filters.py +71 -0
  504. wbcore/contrib/example_app/tests/test_models/test_event.py +89 -0
  505. wbcore/contrib/example_app/tests/test_models/test_match.py +220 -0
  506. wbcore/contrib/example_app/tests/test_models/test_others.py +161 -0
  507. wbcore/contrib/example_app/tests/test_serializers/test_league_serializer.py +34 -0
  508. wbcore/contrib/example_app/tests/test_serializers/test_match_serializer.py +139 -0
  509. wbcore/contrib/example_app/tests/test_serializers/test_role_serializer.py +13 -0
  510. wbcore/contrib/example_app/tests/test_serializers/test_sport_serializer.py +14 -0
  511. wbcore/contrib/example_app/tests/test_serializers/test_stadium_serializer.py +14 -0
  512. wbcore/contrib/example_app/tests/test_serializers/test_team_result_serializer.py +30 -0
  513. wbcore/contrib/example_app/tests/test_serializers/test_team_serializer.py +70 -0
  514. wbcore/contrib/example_app/tests/test_utils.py +26 -0
  515. wbcore/contrib/example_app/tests/test_viewsets/test_event_viewset.py +167 -0
  516. wbcore/contrib/example_app/tests/test_viewsets/test_league_viewset.py +84 -0
  517. wbcore/contrib/example_app/tests/test_viewsets/test_match_viewset.py +65 -0
  518. wbcore/contrib/example_app/tests/test_viewsets/test_person_viewset.py +166 -0
  519. wbcore/contrib/example_app/tests/test_viewsets/test_role_viewset.py +75 -0
  520. wbcore/contrib/example_app/tests/test_viewsets/test_sport_viewset.py +75 -0
  521. wbcore/contrib/example_app/tests/test_viewsets/test_stadium_viewset.py +75 -0
  522. wbcore/contrib/example_app/tests/test_viewsets/test_team_viewset.py +92 -0
  523. wbcore/contrib/example_app/tests/test_viewsets/test_teamresult_viewset.py +58 -0
  524. wbcore/contrib/example_app/tests/test_viewsets/test_utils_viewsets.py +124 -0
  525. wbcore/contrib/example_app/urls.py +82 -0
  526. wbcore/contrib/example_app/utils.py +21 -0
  527. wbcore/contrib/example_app/views.py +6 -0
  528. wbcore/contrib/example_app/viewsets/__init__.py +29 -0
  529. wbcore/contrib/example_app/viewsets/buttons/__init__.py +2 -0
  530. wbcore/contrib/example_app/viewsets/buttons/person.py +19 -0
  531. wbcore/contrib/example_app/viewsets/buttons/team.py +24 -0
  532. wbcore/contrib/example_app/viewsets/displays/__init__.py +23 -0
  533. wbcore/contrib/example_app/viewsets/displays/event.py +187 -0
  534. wbcore/contrib/example_app/viewsets/displays/league.py +391 -0
  535. wbcore/contrib/example_app/viewsets/displays/match.py +265 -0
  536. wbcore/contrib/example_app/viewsets/displays/person.py +252 -0
  537. wbcore/contrib/example_app/viewsets/displays/role.py +17 -0
  538. wbcore/contrib/example_app/viewsets/displays/season.py +66 -0
  539. wbcore/contrib/example_app/viewsets/displays/sport.py +116 -0
  540. wbcore/contrib/example_app/viewsets/displays/stadium.py +150 -0
  541. wbcore/contrib/example_app/viewsets/displays/team.py +250 -0
  542. wbcore/contrib/example_app/viewsets/displays/teamresult.py +31 -0
  543. wbcore/contrib/example_app/viewsets/endpoints/__init__.py +12 -0
  544. wbcore/contrib/example_app/viewsets/endpoints/endpoints.py +80 -0
  545. wbcore/contrib/example_app/viewsets/event.py +288 -0
  546. wbcore/contrib/example_app/viewsets/league.py +73 -0
  547. wbcore/contrib/example_app/viewsets/match.py +120 -0
  548. wbcore/contrib/example_app/viewsets/menu/__init__.py +1 -0
  549. wbcore/contrib/example_app/viewsets/menu/menus.py +103 -0
  550. wbcore/contrib/example_app/viewsets/menus.py +64 -0
  551. wbcore/contrib/example_app/viewsets/person.py +134 -0
  552. wbcore/contrib/example_app/viewsets/role.py +25 -0
  553. wbcore/contrib/example_app/viewsets/season.py +23 -0
  554. wbcore/contrib/example_app/viewsets/sport.py +26 -0
  555. wbcore/contrib/example_app/viewsets/stadium.py +31 -0
  556. wbcore/contrib/example_app/viewsets/team.py +69 -0
  557. wbcore/contrib/example_app/viewsets/teamresult.py +107 -0
  558. wbcore/contrib/example_app/viewsets/titles/__init__.py +9 -0
  559. wbcore/contrib/example_app/viewsets/titles/event.py +42 -0
  560. wbcore/contrib/example_app/viewsets/titles/league.py +25 -0
  561. wbcore/contrib/example_app/viewsets/titles/match.py +35 -0
  562. wbcore/contrib/example_app/viewsets/titles/person.py +36 -0
  563. wbcore/contrib/example_app/viewsets/titles/role.py +14 -0
  564. wbcore/contrib/example_app/viewsets/titles/sport.py +14 -0
  565. wbcore/contrib/example_app/viewsets/titles/stadium.py +14 -0
  566. wbcore/contrib/example_app/viewsets/titles/team.py +25 -0
  567. wbcore/contrib/example_app/viewsets/titles/teamresult.py +13 -0
  568. wbcore/contrib/geography/__init__.py +0 -0
  569. wbcore/contrib/geography/admin.py +30 -0
  570. wbcore/contrib/geography/apps.py +5 -0
  571. wbcore/contrib/geography/factories.py +46 -0
  572. wbcore/contrib/geography/fixtures/geography.json +13454 -0
  573. wbcore/contrib/geography/import_export/__init__.py +0 -0
  574. wbcore/contrib/geography/import_export/resources/__init__.py +0 -0
  575. wbcore/contrib/geography/import_export/resources/geography.py +11 -0
  576. wbcore/contrib/geography/migrations/0001_initial.py +110 -0
  577. wbcore/contrib/geography/migrations/0002_geography_geography_geography_tree_i739a.py +17 -0
  578. wbcore/contrib/geography/migrations/__init__.py +0 -0
  579. wbcore/contrib/geography/models.py +150 -0
  580. wbcore/contrib/geography/release_notes/1_0_0.md +13 -0
  581. wbcore/contrib/geography/release_notes/__init__.py +0 -0
  582. wbcore/contrib/geography/serializers.py +29 -0
  583. wbcore/contrib/geography/static/geography/markdown/documentation/geography.md +16 -0
  584. wbcore/contrib/geography/tests/__init__.py +0 -0
  585. wbcore/contrib/geography/tests/conftest.py +26 -0
  586. wbcore/contrib/geography/tests/signals.py +7 -0
  587. wbcore/contrib/geography/tests/test_models.py +27 -0
  588. wbcore/contrib/geography/tests/test_viewsets.py +100 -0
  589. wbcore/contrib/geography/urls.py +13 -0
  590. wbcore/contrib/geography/viewsets/__init__.py +1 -0
  591. wbcore/contrib/geography/viewsets/buttons/__init__.py +0 -0
  592. wbcore/contrib/geography/viewsets/display/__init__.py +1 -0
  593. wbcore/contrib/geography/viewsets/display/geography.py +32 -0
  594. wbcore/contrib/geography/viewsets/endpoints/__init__.py +0 -0
  595. wbcore/contrib/geography/viewsets/geography.py +58 -0
  596. wbcore/contrib/geography/viewsets/menu/__init__.py +1 -0
  597. wbcore/contrib/geography/viewsets/menu/geography.py +8 -0
  598. wbcore/contrib/geography/viewsets/preview/__init__.py +1 -0
  599. wbcore/contrib/geography/viewsets/preview/geography.py +19 -0
  600. wbcore/contrib/geography/viewsets/titles/__init__.py +0 -0
  601. wbcore/contrib/geography/viewsets/titles/geography.py +14 -0
  602. wbcore/contrib/gleap/__init__.py +0 -0
  603. wbcore/contrib/gleap/apps.py +5 -0
  604. wbcore/contrib/gleap/configs.py +12 -0
  605. wbcore/contrib/gleap/configurations.py +6 -0
  606. wbcore/contrib/gleap/hashes.py +13 -0
  607. wbcore/contrib/gleap/tests/__init__.py +0 -0
  608. wbcore/contrib/gleap/tests/conftest.py +1 -0
  609. wbcore/contrib/gleap/tests/tests.py +29 -0
  610. wbcore/contrib/gleap/urls.py +8 -0
  611. wbcore/contrib/gleap/views.py +31 -0
  612. wbcore/contrib/guardian/apps.py +6 -0
  613. wbcore/contrib/guardian/configurations.py +3 -0
  614. wbcore/contrib/guardian/filters.py +21 -0
  615. wbcore/contrib/guardian/migrations/0001_initial.py +103 -0
  616. wbcore/contrib/guardian/migrations/__init__.py +0 -0
  617. wbcore/contrib/guardian/models/__init__.py +1 -0
  618. wbcore/contrib/guardian/models/mixins.py +139 -0
  619. wbcore/contrib/guardian/models/models.py +29 -0
  620. wbcore/contrib/guardian/tasks.py +11 -0
  621. wbcore/contrib/guardian/tests/__init__.py +0 -0
  622. wbcore/contrib/guardian/tests/conftest.py +1 -0
  623. wbcore/contrib/guardian/tests/test_model_mixins.py +92 -0
  624. wbcore/contrib/guardian/tests/test_tasks.py +77 -0
  625. wbcore/contrib/guardian/tests/test_utils.py +196 -0
  626. wbcore/contrib/guardian/tests/test_viewsets.py +48 -0
  627. wbcore/contrib/guardian/urls.py +12 -0
  628. wbcore/contrib/guardian/utils.py +124 -0
  629. wbcore/contrib/guardian/viewsets/__init__.py +1 -0
  630. wbcore/contrib/guardian/viewsets/configs/__init__.py +4 -0
  631. wbcore/contrib/guardian/viewsets/configs/buttons.py +36 -0
  632. wbcore/contrib/guardian/viewsets/configs/displays.py +43 -0
  633. wbcore/contrib/guardian/viewsets/configs/endpoints.py +25 -0
  634. wbcore/contrib/guardian/viewsets/configs/titles.py +16 -0
  635. wbcore/contrib/guardian/viewsets/mixins.py +6 -0
  636. wbcore/contrib/guardian/viewsets/viewsets.py +141 -0
  637. wbcore/contrib/i18n/__init__.py +2 -0
  638. wbcore/contrib/i18n/buttons.py +33 -0
  639. wbcore/contrib/i18n/serializers/__init__.py +0 -0
  640. wbcore/contrib/i18n/serializers/fields.py +20 -0
  641. wbcore/contrib/i18n/serializers/mixins.py +13 -0
  642. wbcore/contrib/i18n/tests/conftest.py +11 -0
  643. wbcore/contrib/i18n/tests/test_viewsets.py +67 -0
  644. wbcore/contrib/i18n/translation.py +141 -0
  645. wbcore/contrib/i18n/viewsets.py +36 -0
  646. wbcore/contrib/icons/__init__.py +1 -0
  647. wbcore/contrib/icons/apps.py +5 -0
  648. wbcore/contrib/icons/backends/__init__.py +5 -0
  649. wbcore/contrib/icons/backends/default.py +375 -0
  650. wbcore/contrib/icons/backends/material.py +136 -0
  651. wbcore/contrib/icons/icons.py +167 -0
  652. wbcore/contrib/icons/models.py +11 -0
  653. wbcore/contrib/icons/serializers.py +18 -0
  654. wbcore/contrib/io/__init__.py +0 -0
  655. wbcore/contrib/io/admin.py +151 -0
  656. wbcore/contrib/io/apps.py +37 -0
  657. wbcore/contrib/io/backends/__init__.py +3 -0
  658. wbcore/contrib/io/backends/abstract.py +60 -0
  659. wbcore/contrib/io/backends/mail.py +39 -0
  660. wbcore/contrib/io/backends/utils.py +39 -0
  661. wbcore/contrib/io/configs/__init__.py +0 -0
  662. wbcore/contrib/io/configs/endpoints.py +13 -0
  663. wbcore/contrib/io/configurations/__init__.py +1 -0
  664. wbcore/contrib/io/configurations/base.py +7 -0
  665. wbcore/contrib/io/dynamic_preferences_registry.py +25 -0
  666. wbcore/contrib/io/enums.py +15 -0
  667. wbcore/contrib/io/exceptions.py +24 -0
  668. wbcore/contrib/io/factories.py +205 -0
  669. wbcore/contrib/io/fixtures/io.json +145 -0
  670. wbcore/contrib/io/import_export/backends/__init__.py +3 -0
  671. wbcore/contrib/io/import_export/backends/mail.py +51 -0
  672. wbcore/contrib/io/import_export/backends/sftp.py +69 -0
  673. wbcore/contrib/io/import_export/backends/stream.py +92 -0
  674. wbcore/contrib/io/import_export/parsers/__init__.py +0 -0
  675. wbcore/contrib/io/import_export/parsers/base_csv.py +36 -0
  676. wbcore/contrib/io/import_export/parsers/resources.py +50 -0
  677. wbcore/contrib/io/imports.py +313 -0
  678. wbcore/contrib/io/locale/de/LC_MESSAGES/django.po +144 -0
  679. wbcore/contrib/io/locale/de/LC_MESSAGES/django.po.translated +103 -0
  680. wbcore/contrib/io/locale/en/LC_MESSAGES/django.po +138 -0
  681. wbcore/contrib/io/locale/fr/LC_MESSAGES/django.po +138 -0
  682. wbcore/contrib/io/management/__init__.py +13 -0
  683. wbcore/contrib/io/migrations/0001_initial_squashed.py +319 -0
  684. wbcore/contrib/io/migrations/0002_importsource_creator.py +26 -0
  685. wbcore/contrib/io/migrations/0003_auto_20240103_1000.py +46 -0
  686. wbcore/contrib/io/migrations/0004_alter_importsource_status_exportsource.py +134 -0
  687. wbcore/contrib/io/migrations/0005_exportsource_data_alter_exportsource_query_str_and_more.py +67 -0
  688. wbcore/contrib/io/migrations/0006_alter_exportsource_query_params.py +20 -0
  689. wbcore/contrib/io/migrations/0007_alter_exportsource_query_params.py +23 -0
  690. wbcore/contrib/io/migrations/0008_importsource_resource_kwargs.py +18 -0
  691. wbcore/contrib/io/migrations/__init__.py +0 -0
  692. wbcore/contrib/io/mixins.py +37 -0
  693. wbcore/contrib/io/models.py +1037 -0
  694. wbcore/contrib/io/release_notes/1_0_0.md +13 -0
  695. wbcore/contrib/io/release_notes/__init__.py +0 -0
  696. wbcore/contrib/io/resources.py +176 -0
  697. wbcore/contrib/io/serializers.py +137 -0
  698. wbcore/contrib/io/signals.py +4 -0
  699. wbcore/contrib/io/tasks.py +27 -0
  700. wbcore/contrib/io/tests/__init__.py +0 -0
  701. wbcore/contrib/io/tests/conftest.py +42 -0
  702. wbcore/contrib/io/tests/test_backends.py +134 -0
  703. wbcore/contrib/io/tests/test_exports.py +130 -0
  704. wbcore/contrib/io/tests/test_imports.py +168 -0
  705. wbcore/contrib/io/tests/test_models.py +396 -0
  706. wbcore/contrib/io/tests/test_viewsets.py +271 -0
  707. wbcore/contrib/io/urls.py +29 -0
  708. wbcore/contrib/io/utils.py +44 -0
  709. wbcore/contrib/io/viewset_mixins.py +271 -0
  710. wbcore/contrib/io/viewsets.py +139 -0
  711. wbcore/contrib/notifications/__init__.py +0 -0
  712. wbcore/contrib/notifications/admin.py +63 -0
  713. wbcore/contrib/notifications/apps.py +43 -0
  714. wbcore/contrib/notifications/backends/__init__.py +0 -0
  715. wbcore/contrib/notifications/backends/abstract_backend.py +11 -0
  716. wbcore/contrib/notifications/backends/console/__init__.py +1 -0
  717. wbcore/contrib/notifications/backends/console/backends.py +25 -0
  718. wbcore/contrib/notifications/backends/firebase/__init__.py +1 -0
  719. wbcore/contrib/notifications/backends/firebase/backends.py +106 -0
  720. wbcore/contrib/notifications/configs.py +13 -0
  721. wbcore/contrib/notifications/configurations.py +9 -0
  722. wbcore/contrib/notifications/dispatch.py +90 -0
  723. wbcore/contrib/notifications/factories/__init__.py +0 -0
  724. wbcore/contrib/notifications/factories/notification_types.py +24 -0
  725. wbcore/contrib/notifications/factories/notifications.py +17 -0
  726. wbcore/contrib/notifications/factories/tokens.py +12 -0
  727. wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po +66 -0
  728. wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po.translated +63 -0
  729. wbcore/contrib/notifications/locale/en/LC_MESSAGES/django.po +61 -0
  730. wbcore/contrib/notifications/locale/fr/LC_MESSAGES/django.po +62 -0
  731. wbcore/contrib/notifications/migrations/0001_initial.py +116 -0
  732. wbcore/contrib/notifications/migrations/0002_notificationusertoken_unique_user_token_device.py +18 -0
  733. wbcore/contrib/notifications/migrations/0003_notificationusertoken_updated.py +17 -0
  734. wbcore/contrib/notifications/migrations/0004_alter_notification_body.py +17 -0
  735. wbcore/contrib/notifications/migrations/0005_alter_notification_endpoint.py +17 -0
  736. wbcore/contrib/notifications/migrations/0006_notification_created.py +25 -0
  737. wbcore/contrib/notifications/migrations/0007_notificationtype_resource_button_label.py +19 -0
  738. wbcore/contrib/notifications/migrations/0008_notificationtype_is_lock.py +18 -0
  739. wbcore/contrib/notifications/migrations/0009_alter_notificationtypesetting_options_and_more.py +32 -0
  740. wbcore/contrib/notifications/migrations/__init__.py +0 -0
  741. wbcore/contrib/notifications/models/__init__.py +3 -0
  742. wbcore/contrib/notifications/models/notification_types.py +165 -0
  743. wbcore/contrib/notifications/models/notifications.py +82 -0
  744. wbcore/contrib/notifications/models/tokens.py +46 -0
  745. wbcore/contrib/notifications/release_notes/1_0_0.md +13 -0
  746. wbcore/contrib/notifications/release_notes/__init__.py +0 -0
  747. wbcore/contrib/notifications/serializers/__init__.py +5 -0
  748. wbcore/contrib/notifications/serializers/notification_types.py +51 -0
  749. wbcore/contrib/notifications/serializers/notifications.py +33 -0
  750. wbcore/contrib/notifications/static/notifications/service-worker.js +1 -0
  751. wbcore/contrib/notifications/tasks.py +57 -0
  752. wbcore/contrib/notifications/templates/notifications/notification_template.html +43 -0
  753. wbcore/contrib/notifications/tests/__init__.py +0 -0
  754. wbcore/contrib/notifications/tests/conftest.py +47 -0
  755. wbcore/contrib/notifications/tests/test_backends/__init__.py +0 -0
  756. wbcore/contrib/notifications/tests/test_backends/test_firebase.py +79 -0
  757. wbcore/contrib/notifications/tests/test_configs.py +7 -0
  758. wbcore/contrib/notifications/tests/test_models/__init__.py +0 -0
  759. wbcore/contrib/notifications/tests/test_models/test_notification_types.py +85 -0
  760. wbcore/contrib/notifications/tests/test_models/test_notifications.py +46 -0
  761. wbcore/contrib/notifications/tests/test_models/test_tokens.py +30 -0
  762. wbcore/contrib/notifications/tests/test_serializers/__init__.py +0 -0
  763. wbcore/contrib/notifications/tests/test_serializers/test_notification_types.py +59 -0
  764. wbcore/contrib/notifications/tests/test_serializers/test_notifications.py +24 -0
  765. wbcore/contrib/notifications/tests/test_tasks.py +72 -0
  766. wbcore/contrib/notifications/tests/test_utils.py +0 -0
  767. wbcore/contrib/notifications/tests/test_viewsets/__init__.py +0 -0
  768. wbcore/contrib/notifications/tests/test_viewsets/test_notification_types.py +120 -0
  769. wbcore/contrib/notifications/tests/test_viewsets/test_notifications.py +143 -0
  770. wbcore/contrib/notifications/urls.py +27 -0
  771. wbcore/contrib/notifications/utils.py +27 -0
  772. wbcore/contrib/notifications/views.py +63 -0
  773. wbcore/contrib/notifications/viewsets/__init__.py +5 -0
  774. wbcore/contrib/notifications/viewsets/configs/notification_types.py +49 -0
  775. wbcore/contrib/notifications/viewsets/configs/notifications.py +91 -0
  776. wbcore/contrib/notifications/viewsets/menus.py +15 -0
  777. wbcore/contrib/notifications/viewsets/notification_types.py +51 -0
  778. wbcore/contrib/notifications/viewsets/notifications.py +58 -0
  779. wbcore/contrib/pandas/__init__.py +0 -0
  780. wbcore/contrib/pandas/fields.py +172 -0
  781. wbcore/contrib/pandas/filters.py +118 -0
  782. wbcore/contrib/pandas/filterset.py +28 -0
  783. wbcore/contrib/pandas/metadata.py +15 -0
  784. wbcore/contrib/pandas/tests/__init__.py +0 -0
  785. wbcore/contrib/pandas/tests/test_base.py +22 -0
  786. wbcore/contrib/pandas/tests/test_fields/__init__.py +0 -0
  787. wbcore/contrib/pandas/tests/test_fields/test_number_fields.py +19 -0
  788. wbcore/contrib/pandas/tests/test_filters/__init__.py +0 -0
  789. wbcore/contrib/pandas/tests/test_filters/test_pandas.py +115 -0
  790. wbcore/contrib/pandas/tests/test_views.py +22 -0
  791. wbcore/contrib/pandas/utils.py +170 -0
  792. wbcore/contrib/pandas/views.py +158 -0
  793. wbcore/contrib/tags/__init__.py +0 -0
  794. wbcore/contrib/tags/admin.py +17 -0
  795. wbcore/contrib/tags/apps.py +9 -0
  796. wbcore/contrib/tags/factories.py +28 -0
  797. wbcore/contrib/tags/filters.py +43 -0
  798. wbcore/contrib/tags/migrations/0001_initial.py +62 -0
  799. wbcore/contrib/tags/migrations/__init__.py +0 -0
  800. wbcore/contrib/tags/models/__init__.py +2 -0
  801. wbcore/contrib/tags/models/mixins.py +27 -0
  802. wbcore/contrib/tags/models/tags.py +107 -0
  803. wbcore/contrib/tags/release_notes/1_0_0.md +13 -0
  804. wbcore/contrib/tags/release_notes/__init__.py +0 -0
  805. wbcore/contrib/tags/serializers.py +90 -0
  806. wbcore/contrib/tags/signals.py +19 -0
  807. wbcore/contrib/tags/tests/__init__.py +0 -0
  808. wbcore/contrib/tags/tests/conftest.py +7 -0
  809. wbcore/contrib/tags/tests/tests.py +144 -0
  810. wbcore/contrib/tags/urls.py +15 -0
  811. wbcore/contrib/tags/viewsets/__init__.py +10 -0
  812. wbcore/contrib/tags/viewsets/display.py +50 -0
  813. wbcore/contrib/tags/viewsets/menu.py +15 -0
  814. wbcore/contrib/tags/viewsets/viewsets.py +58 -0
  815. wbcore/contrib/workflow/__init__.py +1 -0
  816. wbcore/contrib/workflow/admin/__init__.py +15 -0
  817. wbcore/contrib/workflow/admin/condition.py +9 -0
  818. wbcore/contrib/workflow/admin/data.py +15 -0
  819. wbcore/contrib/workflow/admin/display.py +9 -0
  820. wbcore/contrib/workflow/admin/process.py +37 -0
  821. wbcore/contrib/workflow/admin/step.py +92 -0
  822. wbcore/contrib/workflow/admin/transition.py +9 -0
  823. wbcore/contrib/workflow/admin/workflow.py +9 -0
  824. wbcore/contrib/workflow/apps.py +25 -0
  825. wbcore/contrib/workflow/configs.py +11 -0
  826. wbcore/contrib/workflow/decorators.py +25 -0
  827. wbcore/contrib/workflow/dispatch.py +24 -0
  828. wbcore/contrib/workflow/factories/__init__.py +18 -0
  829. wbcore/contrib/workflow/factories/condition.py +16 -0
  830. wbcore/contrib/workflow/factories/data.py +23 -0
  831. wbcore/contrib/workflow/factories/display.py +28 -0
  832. wbcore/contrib/workflow/factories/process.py +70 -0
  833. wbcore/contrib/workflow/factories/step.py +157 -0
  834. wbcore/contrib/workflow/factories/transition.py +27 -0
  835. wbcore/contrib/workflow/factories/workflow.py +20 -0
  836. wbcore/contrib/workflow/filters/__init__.py +24 -0
  837. wbcore/contrib/workflow/filters/condition.py +24 -0
  838. wbcore/contrib/workflow/filters/data.py +25 -0
  839. wbcore/contrib/workflow/filters/process.py +165 -0
  840. wbcore/contrib/workflow/filters/step.py +227 -0
  841. wbcore/contrib/workflow/filters/transition.py +42 -0
  842. wbcore/contrib/workflow/filters/workflow.py +44 -0
  843. wbcore/contrib/workflow/fixtures/workflow.json +612 -0
  844. wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po +1180 -0
  845. wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po.translated +1326 -0
  846. wbcore/contrib/workflow/locale/en/LC_MESSAGES/django.po +1102 -0
  847. wbcore/contrib/workflow/locale/fr/LC_MESSAGES/django.po +1114 -0
  848. wbcore/contrib/workflow/migrations/0001_initial.py +788 -0
  849. wbcore/contrib/workflow/migrations/0002_alter_step_step_type.py +31 -0
  850. wbcore/contrib/workflow/migrations/0003_alter_condition_attribute_name_and_more.py +75 -0
  851. wbcore/contrib/workflow/migrations/0004_alter_userstep_assignee_method.py +27 -0
  852. wbcore/contrib/workflow/migrations/0005_alter_userstep_assignee_method.py +17 -0
  853. wbcore/contrib/workflow/migrations/__init__.py +0 -0
  854. wbcore/contrib/workflow/models/__init__.py +19 -0
  855. wbcore/contrib/workflow/models/condition.py +124 -0
  856. wbcore/contrib/workflow/models/data.py +242 -0
  857. wbcore/contrib/workflow/models/display.py +34 -0
  858. wbcore/contrib/workflow/models/process.py +244 -0
  859. wbcore/contrib/workflow/models/step.py +778 -0
  860. wbcore/contrib/workflow/models/transition.py +71 -0
  861. wbcore/contrib/workflow/models/workflow.py +317 -0
  862. wbcore/contrib/workflow/serializers/__init__.py +37 -0
  863. wbcore/contrib/workflow/serializers/condition.py +65 -0
  864. wbcore/contrib/workflow/serializers/data.py +136 -0
  865. wbcore/contrib/workflow/serializers/display.py +25 -0
  866. wbcore/contrib/workflow/serializers/process.py +184 -0
  867. wbcore/contrib/workflow/serializers/signals.py +26 -0
  868. wbcore/contrib/workflow/serializers/step.py +365 -0
  869. wbcore/contrib/workflow/serializers/transition.py +81 -0
  870. wbcore/contrib/workflow/serializers/workflow.py +125 -0
  871. wbcore/contrib/workflow/sites.py +43 -0
  872. wbcore/contrib/workflow/static/workflow/markdown/documentation/assignedprocessstep.md +33 -0
  873. wbcore/contrib/workflow/static/workflow/markdown/documentation/condition.md +24 -0
  874. wbcore/contrib/workflow/static/workflow/markdown/documentation/decisionstep.md +30 -0
  875. wbcore/contrib/workflow/static/workflow/markdown/documentation/emailstep.md +45 -0
  876. wbcore/contrib/workflow/static/workflow/markdown/documentation/finishstep.md +33 -0
  877. wbcore/contrib/workflow/static/workflow/markdown/documentation/joinstep.md +33 -0
  878. wbcore/contrib/workflow/static/workflow/markdown/documentation/process.md +33 -0
  879. wbcore/contrib/workflow/static/workflow/markdown/documentation/processstep.md +51 -0
  880. wbcore/contrib/workflow/static/workflow/markdown/documentation/scriptstep.md +33 -0
  881. wbcore/contrib/workflow/static/workflow/markdown/documentation/splitstep.md +30 -0
  882. wbcore/contrib/workflow/static/workflow/markdown/documentation/startstep.md +27 -0
  883. wbcore/contrib/workflow/static/workflow/markdown/documentation/transition.md +27 -0
  884. wbcore/contrib/workflow/static/workflow/markdown/documentation/userstep.md +42 -0
  885. wbcore/contrib/workflow/static/workflow/markdown/documentation/workflow.md +32 -0
  886. wbcore/contrib/workflow/templates/Test_Templates.txt +25 -0
  887. wbcore/contrib/workflow/tests/__init__.py +0 -0
  888. wbcore/contrib/workflow/tests/conftest.py +281 -0
  889. wbcore/contrib/workflow/tests/test_configs.py +6 -0
  890. wbcore/contrib/workflow/tests/test_dispatch.py +94 -0
  891. wbcore/contrib/workflow/tests/test_displays.py +42 -0
  892. wbcore/contrib/workflow/tests/test_filters.py +104 -0
  893. wbcore/contrib/workflow/tests/test_models/step/test_decision_step.py +82 -0
  894. wbcore/contrib/workflow/tests/test_models/step/test_email_step.py +85 -0
  895. wbcore/contrib/workflow/tests/test_models/step/test_finish_step.py +167 -0
  896. wbcore/contrib/workflow/tests/test_models/step/test_join_step.py +117 -0
  897. wbcore/contrib/workflow/tests/test_models/step/test_script_step.py +24 -0
  898. wbcore/contrib/workflow/tests/test_models/step/test_split_step.py +49 -0
  899. wbcore/contrib/workflow/tests/test_models/step/test_step.py +756 -0
  900. wbcore/contrib/workflow/tests/test_models/step/test_user_step.py +225 -0
  901. wbcore/contrib/workflow/tests/test_models/test_condition.py +103 -0
  902. wbcore/contrib/workflow/tests/test_models/test_data.py +134 -0
  903. wbcore/contrib/workflow/tests/test_models/test_process.py +98 -0
  904. wbcore/contrib/workflow/tests/test_models/test_transition.py +128 -0
  905. wbcore/contrib/workflow/tests/test_models/test_workflow.py +358 -0
  906. wbcore/contrib/workflow/tests/test_serializers.py +200 -0
  907. wbcore/contrib/workflow/tests/test_viewsets.py +300 -0
  908. wbcore/contrib/workflow/tests/test_workflow_assignees.py +236 -0
  909. wbcore/contrib/workflow/urls.py +67 -0
  910. wbcore/contrib/workflow/utils.py +13 -0
  911. wbcore/contrib/workflow/viewsets/__init__.py +17 -0
  912. wbcore/contrib/workflow/viewsets/buttons/__init__.py +1 -0
  913. wbcore/contrib/workflow/viewsets/buttons/step.py +68 -0
  914. wbcore/contrib/workflow/viewsets/condition.py +32 -0
  915. wbcore/contrib/workflow/viewsets/data.py +33 -0
  916. wbcore/contrib/workflow/viewsets/display/__init__.py +15 -0
  917. wbcore/contrib/workflow/viewsets/display/condition.py +51 -0
  918. wbcore/contrib/workflow/viewsets/display/data.py +51 -0
  919. wbcore/contrib/workflow/viewsets/display/process.py +186 -0
  920. wbcore/contrib/workflow/viewsets/display/step.py +454 -0
  921. wbcore/contrib/workflow/viewsets/display/transition.py +76 -0
  922. wbcore/contrib/workflow/viewsets/display/workflow.py +168 -0
  923. wbcore/contrib/workflow/viewsets/endpoints/__init__.py +5 -0
  924. wbcore/contrib/workflow/viewsets/endpoints/condition.py +9 -0
  925. wbcore/contrib/workflow/viewsets/endpoints/data.py +9 -0
  926. wbcore/contrib/workflow/viewsets/endpoints/process.py +11 -0
  927. wbcore/contrib/workflow/viewsets/endpoints/step.py +24 -0
  928. wbcore/contrib/workflow/viewsets/endpoints/transition.py +19 -0
  929. wbcore/contrib/workflow/viewsets/menu/__init__.py +15 -0
  930. wbcore/contrib/workflow/viewsets/menu/condition.py +19 -0
  931. wbcore/contrib/workflow/viewsets/menu/data.py +19 -0
  932. wbcore/contrib/workflow/viewsets/menu/process.py +19 -0
  933. wbcore/contrib/workflow/viewsets/menu/step.py +124 -0
  934. wbcore/contrib/workflow/viewsets/menu/transition.py +19 -0
  935. wbcore/contrib/workflow/viewsets/menu/workflow.py +19 -0
  936. wbcore/contrib/workflow/viewsets/process.py +175 -0
  937. wbcore/contrib/workflow/viewsets/step.py +229 -0
  938. wbcore/contrib/workflow/viewsets/titles/__init__.py +16 -0
  939. wbcore/contrib/workflow/viewsets/titles/condition.py +14 -0
  940. wbcore/contrib/workflow/viewsets/titles/data.py +14 -0
  941. wbcore/contrib/workflow/viewsets/titles/process.py +27 -0
  942. wbcore/contrib/workflow/viewsets/titles/step.py +102 -0
  943. wbcore/contrib/workflow/viewsets/titles/transition.py +14 -0
  944. wbcore/contrib/workflow/viewsets/titles/workflow.py +14 -0
  945. wbcore/contrib/workflow/viewsets/transition.py +58 -0
  946. wbcore/contrib/workflow/viewsets/workflow.py +37 -0
  947. wbcore/contrib/workflow/workflows/__init__.py +1 -0
  948. wbcore/contrib/workflow/workflows/assignees.py +88 -0
  949. wbcore/crontab/__init__.py +0 -0
  950. wbcore/crontab/serializers.py +24 -0
  951. wbcore/crontab/viewsets.py +10 -0
  952. wbcore/dispatch.py +56 -0
  953. wbcore/docs/__init__.py +23 -0
  954. wbcore/docs/orderable.md +29 -0
  955. wbcore/docs/reparent.md +13 -0
  956. wbcore/dynamic_preferences_registry.py +131 -0
  957. wbcore/enums.py +50 -0
  958. wbcore/filters/__init__.py +21 -0
  959. wbcore/filters/backends.py +19 -0
  960. wbcore/filters/defaults.py +70 -0
  961. wbcore/filters/fields/__init__.py +15 -0
  962. wbcore/filters/fields/booleans.py +7 -0
  963. wbcore/filters/fields/choices.py +60 -0
  964. wbcore/filters/fields/content_type.py +45 -0
  965. wbcore/filters/fields/datetime.py +117 -0
  966. wbcore/filters/fields/models.py +123 -0
  967. wbcore/filters/fields/multiple_lookups.py +20 -0
  968. wbcore/filters/fields/numbers.py +48 -0
  969. wbcore/filters/fields/text.py +7 -0
  970. wbcore/filters/filterset.py +250 -0
  971. wbcore/filters/lookups.py +41 -0
  972. wbcore/filters/mixins.py +111 -0
  973. wbcore/filters/utils.py +21 -0
  974. wbcore/forms.py +125 -0
  975. wbcore/frontend.py +23 -0
  976. wbcore/frontend_user_configuration.py +96 -0
  977. wbcore/fsm/__init__.py +0 -0
  978. wbcore/fsm/markdown_extensions.py +31 -0
  979. wbcore/fsm/mixins.py +128 -0
  980. wbcore/locale/de/LC_MESSAGES/django.po +1252 -0
  981. wbcore/locale/de/LC_MESSAGES/django.po.translated +1580 -0
  982. wbcore/locale/en/LC_MESSAGES/django.po +1234 -0
  983. wbcore/locale/fr/LC_MESSAGES/django.po +1235 -0
  984. wbcore/management/__init__.py +88 -0
  985. wbcore/management/commands/__init__.py +0 -0
  986. wbcore/management/commands/bootstrap.py +18 -0
  987. wbcore/management/commands/clean_obsolete_object.py +21 -0
  988. wbcore/management/commands/handle_release_notes.py +54 -0
  989. wbcore/markdown/__init__.py +1 -0
  990. wbcore/markdown/admin.py +9 -0
  991. wbcore/markdown/dynamic_preferences_registry.py +16 -0
  992. wbcore/markdown/models.py +41 -0
  993. wbcore/markdown/template.py +38 -0
  994. wbcore/markdown/utils.py +37 -0
  995. wbcore/markdown/views.py +50 -0
  996. wbcore/menus/__init__.py +2 -0
  997. wbcore/menus/menus.py +96 -0
  998. wbcore/menus/registry.py +28 -0
  999. wbcore/menus/views.py +41 -0
  1000. wbcore/messages.py +60 -0
  1001. wbcore/metadata/__init__.py +0 -0
  1002. wbcore/metadata/configs/__init__.py +0 -0
  1003. wbcore/metadata/configs/base.py +86 -0
  1004. wbcore/metadata/configs/buttons/__init__.py +4 -0
  1005. wbcore/metadata/configs/buttons/bases.py +89 -0
  1006. wbcore/metadata/configs/buttons/buttons.py +138 -0
  1007. wbcore/metadata/configs/buttons/enums.py +68 -0
  1008. wbcore/metadata/configs/buttons/metadata.py +8 -0
  1009. wbcore/metadata/configs/buttons/view_config.py +145 -0
  1010. wbcore/metadata/configs/display/__init__.py +4 -0
  1011. wbcore/metadata/configs/display/configs.py +16 -0
  1012. wbcore/metadata/configs/display/display.py +234 -0
  1013. wbcore/metadata/configs/display/formatting.py +47 -0
  1014. wbcore/metadata/configs/display/instance_display/__init__.py +15 -0
  1015. wbcore/metadata/configs/display/instance_display/display.py +40 -0
  1016. wbcore/metadata/configs/display/instance_display/enums.py +7 -0
  1017. wbcore/metadata/configs/display/instance_display/layouts/__init__.py +3 -0
  1018. wbcore/metadata/configs/display/instance_display/layouts/inlines.py +58 -0
  1019. wbcore/metadata/configs/display/instance_display/layouts/layouts.py +77 -0
  1020. wbcore/metadata/configs/display/instance_display/layouts/sections.py +43 -0
  1021. wbcore/metadata/configs/display/instance_display/operators.py +22 -0
  1022. wbcore/metadata/configs/display/instance_display/pages.py +40 -0
  1023. wbcore/metadata/configs/display/instance_display/shortcuts.py +81 -0
  1024. wbcore/metadata/configs/display/instance_display/signals.py +3 -0
  1025. wbcore/metadata/configs/display/instance_display/styles.py +42 -0
  1026. wbcore/metadata/configs/display/instance_display/utils.py +74 -0
  1027. wbcore/metadata/configs/display/list_display.py +290 -0
  1028. wbcore/metadata/configs/display/models.py +26 -0
  1029. wbcore/metadata/configs/display/view_config.py +85 -0
  1030. wbcore/metadata/configs/display/views.py +48 -0
  1031. wbcore/metadata/configs/display/windows.py +28 -0
  1032. wbcore/metadata/configs/documentations.py +11 -0
  1033. wbcore/metadata/configs/endpoints.py +189 -0
  1034. wbcore/metadata/configs/fields.py +22 -0
  1035. wbcore/metadata/configs/filter_fields.py +41 -0
  1036. wbcore/metadata/configs/identifiers.py +27 -0
  1037. wbcore/metadata/configs/ordering_fields.py +24 -0
  1038. wbcore/metadata/configs/paginations.py +11 -0
  1039. wbcore/metadata/configs/preview.py +41 -0
  1040. wbcore/metadata/configs/primary_keys.py +9 -0
  1041. wbcore/metadata/configs/search_fields.py +9 -0
  1042. wbcore/metadata/configs/titles.py +48 -0
  1043. wbcore/metadata/configs/window_types.py +13 -0
  1044. wbcore/metadata/exceptions.py +0 -0
  1045. wbcore/metadata/metadata.py +34 -0
  1046. wbcore/metadata/mixins.py +106 -0
  1047. wbcore/metadata/tests/__init__.py +0 -0
  1048. wbcore/metadata/tests/test_buttons.py +165 -0
  1049. wbcore/metadata/utils.py +4 -0
  1050. wbcore/migrations/0001_initial_squashed_squashed_0010_preset_appliedpreset.py +398 -0
  1051. wbcore/migrations/0011_genericmodel.py +22 -0
  1052. wbcore/migrations/0012_delete_notification.py +15 -0
  1053. wbcore/migrations/0013_delete_colorgradient.py +14 -0
  1054. wbcore/migrations/0014_biguserobjectpermission_system.py +44 -0
  1055. wbcore/migrations/__init__.py +0 -0
  1056. wbcore/models/__init__.py +6 -0
  1057. wbcore/models/base.py +184 -0
  1058. wbcore/models/fields.py +29 -0
  1059. wbcore/models/orderable.py +6 -0
  1060. wbcore/pagination.py +64 -0
  1061. wbcore/pandas/__init__.py +53 -0
  1062. wbcore/pandas/fields.py +25 -0
  1063. wbcore/pandas/filterset.py +9 -0
  1064. wbcore/pandas/utils.py +25 -0
  1065. wbcore/pandas/views.py +9 -0
  1066. wbcore/permissions/__init__.py +0 -0
  1067. wbcore/permissions/backend.py +36 -0
  1068. wbcore/permissions/mixins.py +72 -0
  1069. wbcore/permissions/permissions.py +51 -0
  1070. wbcore/permissions/registry.py +33 -0
  1071. wbcore/permissions/shortcuts.py +38 -0
  1072. wbcore/permissions/utils.py +26 -0
  1073. wbcore/release_notes/__init__.py +0 -0
  1074. wbcore/release_notes/admin.py +30 -0
  1075. wbcore/release_notes/buttons.py +26 -0
  1076. wbcore/release_notes/display.py +52 -0
  1077. wbcore/release_notes/filters.py +36 -0
  1078. wbcore/release_notes/models.py +66 -0
  1079. wbcore/release_notes/serializers.py +12 -0
  1080. wbcore/release_notes/utils.py +14 -0
  1081. wbcore/release_notes/viewsets.py +52 -0
  1082. wbcore/reversion/__init__.py +0 -0
  1083. wbcore/reversion/filters.py +39 -0
  1084. wbcore/reversion/serializers.py +81 -0
  1085. wbcore/reversion/viewsets/__init__.py +6 -0
  1086. wbcore/reversion/viewsets/buttons.py +95 -0
  1087. wbcore/reversion/viewsets/displays.py +45 -0
  1088. wbcore/reversion/viewsets/endpoints.py +30 -0
  1089. wbcore/reversion/viewsets/titles.py +19 -0
  1090. wbcore/reversion/viewsets/viewsets.py +112 -0
  1091. wbcore/routers.py +63 -0
  1092. wbcore/search/__init__.py +62 -0
  1093. wbcore/serializers/__init__.py +68 -0
  1094. wbcore/serializers/fields/__init__.py +59 -0
  1095. wbcore/serializers/fields/boolean.py +51 -0
  1096. wbcore/serializers/fields/choice.py +60 -0
  1097. wbcore/serializers/fields/datetime.py +178 -0
  1098. wbcore/serializers/fields/fields.py +193 -0
  1099. wbcore/serializers/fields/file.py +20 -0
  1100. wbcore/serializers/fields/fsm.py +20 -0
  1101. wbcore/serializers/fields/json.py +56 -0
  1102. wbcore/serializers/fields/list.py +104 -0
  1103. wbcore/serializers/fields/mixins.py +196 -0
  1104. wbcore/serializers/fields/number.py +94 -0
  1105. wbcore/serializers/fields/other.py +34 -0
  1106. wbcore/serializers/fields/primary_key.py +22 -0
  1107. wbcore/serializers/fields/related.py +150 -0
  1108. wbcore/serializers/fields/text.py +141 -0
  1109. wbcore/serializers/fields/types.py +46 -0
  1110. wbcore/serializers/mixins.py +24 -0
  1111. wbcore/serializers/serializers.py +425 -0
  1112. wbcore/serializers/utils.py +143 -0
  1113. wbcore/shares/__init__.py +1 -0
  1114. wbcore/shares/config.py +64 -0
  1115. wbcore/shares/decorator.py +13 -0
  1116. wbcore/shares/signals.py +3 -0
  1117. wbcore/shares/sites.py +29 -0
  1118. wbcore/shares/views.py +25 -0
  1119. wbcore/signals/__init__.py +7 -0
  1120. wbcore/signals/clone.py +4 -0
  1121. wbcore/signals/filters.py +3 -0
  1122. wbcore/signals/instance_buttons.py +5 -0
  1123. wbcore/signals/merge.py +4 -0
  1124. wbcore/signals/models.py +4 -0
  1125. wbcore/signals/permissions.py +3 -0
  1126. wbcore/signals/serializers.py +5 -0
  1127. wbcore/tasks.py +87 -0
  1128. wbcore/template.py +29 -0
  1129. wbcore/templates/errors/404.html +134 -0
  1130. wbcore/templates/errors/500.html +138 -0
  1131. wbcore/templates/errors/503.html +132 -0
  1132. wbcore/templates/errors/custom.html +132 -0
  1133. wbcore/templates/forms.py +0 -0
  1134. wbcore/templates/notifications/email_template.html +43 -0
  1135. wbcore/templates/reversion/__init__.py +0 -0
  1136. wbcore/templates/reversion/compare_detail.html +19 -0
  1137. wbcore/templates/wbcore/admin/change_list.html +8 -0
  1138. wbcore/templates/wbcore/admin/csv_form.html +15 -0
  1139. wbcore/templates/wbcore/dynamic_color_array.html +29 -0
  1140. wbcore/templates/wbcore/email_base_template.html +335 -0
  1141. wbcore/templates/wbcore/email_notification_template.html +10 -0
  1142. wbcore/templates/wbcore/frontend.html +51 -0
  1143. wbcore/test/__init__.py +30 -0
  1144. wbcore/test/e2e_helpers_methods/e2e_checks.py +127 -0
  1145. wbcore/test/e2e_helpers_methods/e2e_helper_methods.py +397 -0
  1146. wbcore/test/mixins.py +660 -0
  1147. wbcore/test/signals.py +6 -0
  1148. wbcore/test/tests.py +129 -0
  1149. wbcore/test/utils.py +227 -0
  1150. wbcore/tests/__init__.py +0 -0
  1151. wbcore/tests/conftest.py +55 -0
  1152. wbcore/tests/e2e/__init__.py +0 -0
  1153. wbcore/tests/e2e/test_e2e.py +25 -0
  1154. wbcore/tests/models.py +6 -0
  1155. wbcore/tests/test_cache/__init__.py +0 -0
  1156. wbcore/tests/test_cache/test_decorators.py +28 -0
  1157. wbcore/tests/test_cache/test_mixins.py +30 -0
  1158. wbcore/tests/test_cache/test_registry.py +58 -0
  1159. wbcore/tests/test_configs.py +58 -0
  1160. wbcore/tests/test_enums.py +56 -0
  1161. wbcore/tests/test_fields/__init__.py +0 -0
  1162. wbcore/tests/test_fields/test_boolean_fields.py +49 -0
  1163. wbcore/tests/test_fields/test_choice_fields.py +57 -0
  1164. wbcore/tests/test_fields/test_datetime_fields.py +152 -0
  1165. wbcore/tests/test_fields/test_fields.py +24 -0
  1166. wbcore/tests/test_fields/test_file_fields.py +52 -0
  1167. wbcore/tests/test_fields/test_json_fields.py +28 -0
  1168. wbcore/tests/test_fields/test_list_fields.py +27 -0
  1169. wbcore/tests/test_fields/test_mixins.py +112 -0
  1170. wbcore/tests/test_fields/test_number_fields.py +166 -0
  1171. wbcore/tests/test_fields/test_other_fields.py +60 -0
  1172. wbcore/tests/test_fields/test_primary_key_fields.py +52 -0
  1173. wbcore/tests/test_fields/test_related.py +81 -0
  1174. wbcore/tests/test_fields/test_text_fields.py +118 -0
  1175. wbcore/tests/test_filters/__init__.py +0 -0
  1176. wbcore/tests/test_filters/test_mixins.py +109 -0
  1177. wbcore/tests/test_list_display.py +29 -0
  1178. wbcore/tests/test_models/__init__.py +0 -0
  1179. wbcore/tests/test_models/test_fields.py +26 -0
  1180. wbcore/tests/test_models/test_mixins.py +32 -0
  1181. wbcore/tests/test_new_display/__init__.py +0 -0
  1182. wbcore/tests/test_new_display/test_inlines.py +13 -0
  1183. wbcore/tests/test_new_display/test_layouts.py +15 -0
  1184. wbcore/tests/test_new_display/test_operators.py +16 -0
  1185. wbcore/tests/test_new_display/test_pages.py +8 -0
  1186. wbcore/tests/test_new_display/test_sections.py +0 -0
  1187. wbcore/tests/test_new_display/test_shortcuts.py +38 -0
  1188. wbcore/tests/test_new_display/test_utils.py +49 -0
  1189. wbcore/tests/test_pagination.py +32 -0
  1190. wbcore/tests/test_permissions/test_backend.py +29 -0
  1191. wbcore/tests/test_serializers/__init__.py +0 -0
  1192. wbcore/tests/test_serializers/test_fields.py +141 -0
  1193. wbcore/tests/test_serializers/test_mixins.py +54 -0
  1194. wbcore/tests/test_serializers/test_related.py +78 -0
  1195. wbcore/tests/test_something.py +39 -0
  1196. wbcore/tests/test_utils/__init__.py +0 -0
  1197. wbcore/tests/test_utils/test_date.py +50 -0
  1198. wbcore/tests/test_utils/test_date_builder.py +124 -0
  1199. wbcore/tests/test_utils/test_primary.py +80 -0
  1200. wbcore/tests/test_utils/test_signals.py +40 -0
  1201. wbcore/tests/test_viewsets.py +21 -0
  1202. wbcore/urls.py +117 -0
  1203. wbcore/utils/__init__.py +13 -0
  1204. wbcore/utils/cache.py +8 -0
  1205. wbcore/utils/date.py +237 -0
  1206. wbcore/utils/date_builder/__init__.py +18 -0
  1207. wbcore/utils/date_builder/components.py +42 -0
  1208. wbcore/utils/date_builder/offsets.py +27 -0
  1209. wbcore/utils/deprecations.py +11 -0
  1210. wbcore/utils/enum.py +23 -0
  1211. wbcore/utils/figures.py +286 -0
  1212. wbcore/utils/html.py +8 -0
  1213. wbcore/utils/importlib.py +13 -0
  1214. wbcore/utils/itertools.py +40 -0
  1215. wbcore/utils/models.py +293 -0
  1216. wbcore/utils/numbers.py +69 -0
  1217. wbcore/utils/prettytable.py +35 -0
  1218. wbcore/utils/print.py +29 -0
  1219. wbcore/utils/renderers.py +13 -0
  1220. wbcore/utils/reportlab.py +7 -0
  1221. wbcore/utils/rrules.py +82 -0
  1222. wbcore/utils/serializers.py +9 -0
  1223. wbcore/utils/settings.py +5 -0
  1224. wbcore/utils/signals.py +36 -0
  1225. wbcore/utils/string_loader.py +42 -0
  1226. wbcore/utils/strings.py +77 -0
  1227. wbcore/utils/urls.py +70 -0
  1228. wbcore/utils/views.py +207 -0
  1229. wbcore/views.py +26 -0
  1230. wbcore/viewsets/__init__.py +12 -0
  1231. wbcore/viewsets/encoders.py +18 -0
  1232. wbcore/viewsets/generics.py +5 -0
  1233. wbcore/viewsets/mixins.py +295 -0
  1234. wbcore/viewsets/utils.py +27 -0
  1235. wbcore/viewsets/viewsets.py +202 -0
  1236. wbcore/workers.py +8 -0
  1237. wbcore-1.59.9.dist-info/METADATA +65 -0
  1238. wbcore-1.59.9.dist-info/RECORD +1239 -0
  1239. wbcore-1.59.9.dist-info/WHEEL +5 -0
@@ -0,0 +1,42 @@
1
+ # Client Manager Relationships
2
+ This view is used to represent the relationship between a client and its relationship manager. A client can have many relationship managers and we can declare a relationship manager as primary (displayed by a star icon to the left of the row). Only the primary relationship manager is displayed when looking at a list of persons or companies.
3
+
4
+ ## Workflow:
5
+ A relationship can have one of five different states that can be switched between by clicking on the corresponding buttons. These are displayed at the top of the instance.
6
+
7
+ ![Client Manager Relationship Workflow](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwEAAAJcCAYAAACheKiIAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAADPfdEVYdG14ZmlsZQAlM0NteGZpbGUlMjBob3N0JTNEJTIyYXBwLmRpYWdyYW1zLm5ldCUyMiUyMG1vZGlmaWVkJTNEJTIyMjAyMy0wMy0yNFQxNCUzQTMyJTNBMjcuMDQ5WiUyMiUyMGFnZW50JTNEJTIyTW96aWxsYSUyRjUuMCUyMChYMTElM0IlMjBMaW51eCUyMHg4Nl82NCklMjBBcHBsZVdlYktpdCUyRjUzNy4zNiUyMChLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyklMjBDaHJvbWUlMkYxMTEuMC4wLjAlMjBTYWZhcmklMkY1MzcuMzYlMjIlMjBldGFnJTNEJTIyMERIcm1lRVp6MEJzZUk2TmRJZ24lMjIlMjB2ZXJzaW9uJTNEJTIyMjEuMS4wJTIyJTIwdHlwZSUzRCUyMmRldmljZSUyMiUzRSUwQSUyMCUyMCUzQ2RpYWdyYW0lMjBpZCUzRCUyMkM1UkJzNDNvRGEtS2R6WmVOdHV5JTIyJTIwbmFtZSUzRCUyMlBhZ2UtMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ214R3JhcGhNb2RlbCUyMGR4JTNEJTIyMTQzNCUyMiUyMGR5JTNEJTIyNjk0JTIyJTIwZ3JpZCUzRCUyMjElMjIlMjBncmlkU2l6ZSUzRCUyMjEwJTIyJTIwZ3VpZGVzJTNEJTIyMSUyMiUyMHRvb2x0aXBzJTNEJTIyMSUyMiUyMGNvbm5lY3QlM0QlMjIxJTIyJTIwYXJyb3dzJTNEJTIyMSUyMiUyMGZvbGQlM0QlMjIxJTIyJTIwcGFnZSUzRCUyMjElMjIlMjBwYWdlU2NhbGUlM0QlMjIxJTIyJTIwcGFnZVdpZHRoJTNEJTIyODI3JTIyJTIwcGFnZUhlaWdodCUzRCUyMjExNjklMjIlMjBtYXRoJTNEJTIyMCUyMiUyMHNoYWRvdyUzRCUyMjAlMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlM0Nyb290JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0wJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwcGFyZW50JTNEJTIyV0l5V2xMazZHSlFzcWFVQktUTlYtMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyYkx3SmdWazEtcHVjX09heW1NTkUtMCUyMiUyMHZhbHVlJTNEJTIyQXBwcm92ZSUyMiUyMHN0eWxlJTNEJTIyZWRnZVN0eWxlJTNEb3J0aG9nb25hbEVkZ2VTdHlsZSUzQnJvdW5kZWQlM0QwJTNCb3J0aG9nb25hbExvb3AlM0QxJTNCamV0dHlTaXplJTNEYXV0byUzQmh0bWwlM0QxJTNCZXhpdFglM0QxJTNCZXhpdFklM0QwLjUlM0JleGl0RHglM0QwJTNCZXhpdER5JTNEMCUzQmVudHJ5WCUzRDAlM0JlbnRyeVklM0QwLjI1JTNCZW50cnlEeCUzRDAlM0JlbnRyeUR5JTNEMCUzQmZvbnRTaXplJTNEMTUlM0Jmb250Q29sb3IlM0QlMjNGRjAwMDAlM0IlMjIlMjBlZGdlJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMldJeVdsTGs2R0pRc3FhVUJLVE5WLTElMjIlMjBzb3VyY2UlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0wJTIyJTIwdGFyZ2V0JTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyMC4xOTEzJTIyJTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjBhcyUzRCUyMm9mZnNldCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14R2VvbWV0cnklM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTAlMjIlMjB2YWx1ZSUzRCUyMiUyNmx0JTNCYiUyNmd0JTNCJTI2bHQlM0Jmb250JTIwc3R5bGUlM0QlMjZxdW90JTNCZm9udC1zaXplJTNBJTIwMjFweCUzQiUyNnF1b3QlM0IlMjZndCUzQkRyYWZ0JTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjZsdCUzQiUyRmIlMjZndCUzQiUyMiUyMHN0eWxlJTNEJTIycm91bmRlZCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQmh0bWwlM0QxJTNCZ2xhc3MlM0QwJTNCc2tldGNoJTNEMCUzQnNoYWRvdyUzRDElM0Jmb250RmFtaWx5JTNEUm9ib3RvJTNCZm9udFNvdXJjZSUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGZm9udHMuZ29vZ2xlYXBpcy5jb20lMjUyRmNzcyUyNTNGZmFtaWx5JTI1M0RSb2JvdG8lM0IlMjIlMjBwYXJlbnQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwdmVydGV4JTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyODAlMjIlMjB5JTNEJTIyMzAlMjIlMjB3aWR0aCUzRCUyMjEyMCUyMiUyMGhlaWdodCUzRCUyMjYwJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtNyUyMiUyMHZhbHVlJTNEJTIyQXBwcm92ZSUyMiUyMHN0eWxlJTNEJTIyZWRnZVN0eWxlJTNEb3J0aG9nb25hbEVkZ2VTdHlsZSUzQnJvdW5kZWQlM0QwJTNCb3J0aG9nb25hbExvb3AlM0QxJTNCamV0dHlTaXplJTNEYXV0byUzQmh0bWwlM0QxJTNCZXhpdFglM0QwLjUlM0JleGl0WSUzRDElM0JleGl0RHglM0QwJTNCZXhpdER5JTNEMCUzQmVudHJ5WCUzRDAlM0JlbnRyeVklM0QwLjUlM0JlbnRyeUR4JTNEMCUzQmVudHJ5RHklM0QwJTNCZm9udFNpemUlM0QxNSUzQmZvbnRTdHlsZSUzRDIlM0Jmb250Q29sb3IlM0QlMjNGRjAwMDAlM0Jmb250RmFtaWx5JTNEUm9ib3RvJTNCZm9udFNvdXJjZSUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGZm9udHMuZ29vZ2xlYXBpcy5jb20lMjUyRmNzcyUyNTNGZmFtaWx5JTI1M0RSb2JvdG8lM0IlMjIlMjBwYXJlbnQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwc291cmNlJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMSUyMiUyMHRhcmdldCUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTMlMjIlMjBlZGdlJTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjByZWxhdGl2ZSUzRCUyMjElMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0xMiUyMiUyMHZhbHVlJTNEJTIyRGVueSUyMiUyMHN0eWxlJTNEJTIyZWRnZVN0eWxlJTNEb3J0aG9nb25hbEVkZ2VTdHlsZSUzQnJvdW5kZWQlM0QwJTNCb3J0aG9nb25hbExvb3AlM0QxJTNCamV0dHlTaXplJTNEYXV0byUzQmh0bWwlM0QxJTNCZXhpdFglM0QwLjc1JTNCZXhpdFklM0QwJTNCZXhpdER4JTNEMCUzQmV4aXREeSUzRDAlM0JlbnRyeVglM0QwLjc1JTNCZW50cnlZJTNEMSUzQmVudHJ5RHglM0QwJTNCZW50cnlEeSUzRDAlM0Jmb250U2l6ZSUzRDE1JTNCdmVydGljYWxBbGlnbiUzRG1pZGRsZSUzQmZvbnRTdHlsZSUzRDIlM0Jmb250Q29sb3IlM0QlMjNGRjAwMDAlM0Jmb250RmFtaWx5JTNEUm9ib3RvJTNCZm9udFNvdXJjZSUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGZm9udHMuZ29vZ2xlYXBpcy5jb20lMjUyRmNzcyUyNTNGZmFtaWx5JTI1M0RSb2JvdG8lM0IlMjIlMjBwYXJlbnQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwc291cmNlJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMSUyMiUyMHRhcmdldCUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTAlMjIlMjBlZGdlJTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjByZWxhdGl2ZSUzRCUyMjElMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDQXJyYXklMjBhcyUzRCUyMnBvaW50cyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjB4JTNEJTIyMTcwJTIyJTIweSUzRCUyMjIzMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjB4JTNEJTIyMTcwJTIyJTIweSUzRCUyMjkwJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGQXJyYXklM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteEdlb21ldHJ5JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0xJTIyJTIwdmFsdWUlM0QlMjIlMjZsdCUzQmIlMjZndCUzQiUyNmx0JTNCZm9udCUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDIxcHglM0IlMjZxdW90JTNCJTI2Z3QlM0JQZW5kaW5nJTIwQWRkJTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjZsdCUzQiUyRmIlMjZndCUzQiUyMiUyMHN0eWxlJTNEJTIycm91bmRlZCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQmh0bWwlM0QxJTNCc2hhZG93JTNEMSUzQmZvbnRGYW1pbHklM0RSb2JvdG8lM0Jmb250U291cmNlJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZmb250cy5nb29nbGVhcGlzLmNvbSUyNTJGY3NzJTI1M0ZmYW1pbHklMjUzRFJvYm90byUzQiUyMiUyMHBhcmVudCUzRCUyMldJeVdsTGs2R0pRc3FhVUJLVE5WLTElMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHglM0QlMjI4MCUyMiUyMHklM0QlMjIyMzAlMjIlMjB3aWR0aCUzRCUyMjEyMCUyMiUyMGhlaWdodCUzRCUyMjYwJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMTUlMjIlMjB2YWx1ZSUzRCUyMkFwcHJvdmUlMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMSUzQmV4aXRZJTNEMC41JTNCZXhpdER4JTNEMCUzQmV4aXREeSUzRDAlM0JlbnRyeVglM0QxJTNCZW50cnlZJTNEMC41JTNCZW50cnlEeCUzRDAlM0JlbnRyeUR5JTNEMCUzQmZvbnRTaXplJTNEMTUlM0Jmb250U3R5bGUlM0QyJTNCZm9udENvbG9yJTNEJTIzRkYwMDAwJTNCZm9udEZhbWlseSUzRFJvYm90byUzQmZvbnRTb3VyY2UlM0RodHRwcyUyNTNBJTI1MkYlMjUyRmZvbnRzLmdvb2dsZWFwaXMuY29tJTI1MkZjc3MlMjUzRmZhbWlseSUyNTNEUm9ib3RvJTNCJTIyJTIwcGFyZW50JTNEJTIyV0l5V2xMazZHSlFzcWFVQktUTlYtMSUyMiUyMHNvdXJjZSUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTIlMjIlMjB0YXJnZXQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi00JTIyJTIwZWRnZSUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMTklMjIlMjB2YWx1ZSUzRCUyMkRlbnklMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMC41JTNCZXhpdFklM0QxJTNCZXhpdER4JTNEMCUzQmV4aXREeSUzRDAlM0JlbnRyeVglM0QxJTNCZW50cnlZJTNEMC41JTNCZW50cnlEeCUzRDAlM0JlbnRyeUR5JTNEMCUzQmZvbnRTaXplJTNEMTUlM0Jmb250U3R5bGUlM0QyJTNCZm9udENvbG9yJTNEJTIzRkYwMDAwJTNCZm9udEZhbWlseSUzRFJvYm90byUzQmZvbnRTb3VyY2UlM0RodHRwcyUyNTNBJTI1MkYlMjUyRmZvbnRzLmdvb2dsZWFwaXMuY29tJTI1MkZjc3MlMjUzRmZhbWlseSUyNTNEUm9ib3RvJTNCJTIyJTIwcGFyZW50JTNEJTIyV0l5V2xMazZHSlFzcWFVQktUTlYtMSUyMiUyMHNvdXJjZSUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTIlMjIlMjB0YXJnZXQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0zJTIyJTIwZWRnZSUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMiUyMiUyMHZhbHVlJTNEJTIyJTI2bHQlM0JiJTI2Z3QlM0IlMjZsdCUzQmZvbnQlMjBzdHlsZSUzRCUyNnF1b3QlM0Jmb250LXNpemUlM0ElMjAyMXB4JTNCJTI2cXVvdCUzQiUyNmd0JTNCUGVuZGluZyUyMFJlbW92ZSUyNmx0JTNCJTJGZm9udCUyNmd0JTNCJTI2bHQlM0IlMkZiJTI2Z3QlM0IlMjIlMjBzdHlsZSUzRCUyMnJvdW5kZWQlM0QxJTNCd2hpdGVTcGFjZSUzRHdyYXAlM0JodG1sJTNEMSUzQnNoYWRvdyUzRDElM0Jmb250RmFtaWx5JTNEUm9ib3RvJTNCZm9udFNvdXJjZSUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGZm9udHMuZ29vZ2xlYXBpcy5jb20lMjUyRmNzcyUyNTNGZmFtaWx5JTI1M0RSb2JvdG8lM0IlMjIlMjBwYXJlbnQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwdmVydGV4JTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyNjMwJTIyJTIweSUzRCUyMjIzMCUyMiUyMHdpZHRoJTNEJTIyMTIwJTIyJTIwaGVpZ2h0JTNEJTIyNjAlMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0xMyUyMiUyMHZhbHVlJTNEJTIyTWFrZSUyMFByaW1hcnklMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMC41JTNCZXhpdFklM0QwJTNCZXhpdER4JTNEMCUzQmV4aXREeSUzRDAlM0JlbnRyeVglM0QxJTNCZW50cnlZJTNEMC41JTNCZW50cnlEeCUzRDAlM0JlbnRyeUR5JTNEMCUzQmZvbnRTaXplJTNEMTUlM0Jmb250U3R5bGUlM0QyJTNCbGFiZWxQb3NpdGlvbiUzRGxlZnQlM0J2ZXJ0aWNhbExhYmVsUG9zaXRpb24lM0RtaWRkbGUlM0JhbGlnbiUzRHJpZ2h0JTNCdmVydGljYWxBbGlnbiUzRG1pZGRsZSUzQmZvbnRGYW1pbHklM0RSb2JvdG8lM0Jmb250U291cmNlJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZmb250cy5nb29nbGVhcGlzLmNvbSUyNTJGY3NzJTI1M0ZmYW1pbHklMjUzRFJvYm90byUzQiUyMiUyMHBhcmVudCUzRCUyMldJeVdsTGs2R0pRc3FhVUJLVE5WLTElMjIlMjBzb3VyY2UlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0zJTIyJTIwdGFyZ2V0JTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMSUyMiUyMGVkZ2UlM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHJlbGF0aXZlJTNEJTIyMSUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTE0JTIyJTIwdmFsdWUlM0QlMjJSZW1vdmUlMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMC43NSUzQmV4aXRZJTNEMCUzQmV4aXREeCUzRDAlM0JleGl0RHklM0QwJTNCZW50cnlYJTNEMCUzQmVudHJ5WSUzRDAuNSUzQmVudHJ5RHglM0QwJTNCZW50cnlEeSUzRDAlM0Jmb250U2l6ZSUzRDE1JTNCZm9udFN0eWxlJTNEMiUzQmxhYmVsUG9zaXRpb24lM0RyaWdodCUzQnZlcnRpY2FsTGFiZWxQb3NpdGlvbiUzRG1pZGRsZSUzQmFsaWduJTNEbGVmdCUzQnZlcnRpY2FsQWxpZ24lM0RtaWRkbGUlM0Jmb250RmFtaWx5JTNEUm9ib3RvJTNCZm9udFNvdXJjZSUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGZm9udHMuZ29vZ2xlYXBpcy5jb20lMjUyRmNzcyUyNTNGZmFtaWx5JTI1M0RSb2JvdG8lM0IlMjIlMjBwYXJlbnQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwc291cmNlJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtMyUyMiUyMHRhcmdldCUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTIlMjIlMjBlZGdlJTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjByZWxhdGl2ZSUzRCUyMjElMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0zJTIyJTIwdmFsdWUlM0QlMjIlMjZsdCUzQmIlMjZndCUzQiUyNmx0JTNCZm9udCUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDIxcHglM0IlMjZxdW90JTNCJTI2Z3QlM0JBcHByb3ZlZCUyNmx0JTNCJTJGZm9udCUyNmd0JTNCJTI2bHQlM0IlMkZiJTI2Z3QlM0IlMjZsdCUzQnNwYW4lMjBzdHlsZSUzRCUyNnF1b3QlM0Jjb2xvciUzQSUyMHJnYmEoMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCklM0IlMjBmb250LXNpemUlM0ElMjAwcHglM0IlMjB0ZXh0LWFsaWduJTNBJTIwc3RhcnQlM0IlMjZxdW90JTNCJTI2Z3QlM0IlMjUzQ214R3JhcGhNb2RlbCUyNTNFJTI1M0Nyb290JTI1M0UlMjUzQ214Q2VsbCUyNTIwaWQlMjUzRCUyNTIyMCUyNTIyJTI1MkYlMjUzRSUyNTNDbXhDZWxsJTI1MjBpZCUyNTNEJTI1MjIxJTI1MjIlMjUyMHBhcmVudCUyNTNEJTI1MjIwJTI1MjIlMjUyRiUyNTNFJTI1M0NteENlbGwlMjUyMGlkJTI1M0QlMjUyMjIlMjUyMiUyNTIwdmFsdWUlMjUzRCUyNTIyJTI1MjZsdCUyNTNCYiUyNTI2Z3QlMjUzQiUyNTI2bHQlMjUzQmZvbnQlMjUyMHN0eWxlJTI1M0QlMjUyNnF1b3QlMjUzQmZvbnQtc2l6ZSUyNTNBJTI1MjAyMXB4JTI1M0IlMjUyNnF1b3QlMjUzQiUyNTI2Z3QlMjUzQkRyYWZ0JTI1MjZsdCUyNTNCJTI1MkZmb250JTI1MjZndCUyNTNCJTI1MjZsdCUyNTNCJTI1MkZiJTI1MjZndCUyNTNCJTI1MjIlMjUyMHN0eWxlJTI1M0QlMjUyMnJvdW5kZWQlMjUzRDAlMjUzQndoaXRlU3BhY2UlMjUzRHdyYXAlMjUzQmh0bWwlMjUzRDElMjUzQiUyNTIyJTI1MjB2ZXJ0ZXglMjUzRCUyNTIyMSUyNTIyJTI1MjBwYXJlbnQlMjUzRCUyNTIyMSUyNTIyJTI1M0UlMjUzQ214R2VvbWV0cnklMjUyMHglMjUzRCUyNTIyMzU0JTI1MjIlMjUyMHklMjUzRCUyNTIyOTAlMjUyMiUyNTIwd2lkdGglMjUzRCUyNTIyMTIwJTI1MjIlMjUyMGhlaWdodCUyNTNEJTI1MjI2MCUyNTIyJTI1MjBhcyUyNTNEJTI1MjJnZW9tZXRyeSUyNTIyJTI1MkYlMjUzRSUyNTNDJTI1MkZteENlbGwlMjUzRSUyNTNDJTI1MkZyb290JTI1M0UlMjUzQyUyNTJGbXhHcmFwaE1vZGVsJTI1M0UlMjZsdCUzQiUyRnNwYW4lMjZndCUzQiUyMiUyMHN0eWxlJTNEJTIycm91bmRlZCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQmh0bWwlM0QxJTNCc2hhZG93JTNEMSUzQmZvbnRGYW1pbHklM0RSb2JvdG8lM0Jmb250U291cmNlJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZmb250cy5nb29nbGVhcGlzLmNvbSUyNTJGY3NzJTI1M0ZmYW1pbHklMjUzRFJvYm90byUzQiUyMiUyMHBhcmVudCUzRCUyMldJeVdsTGs2R0pRc3FhVUJLVE5WLTElMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHglM0QlMjIzNTQlMjIlMjB5JTNEJTIyNDQwJTIyJTIwd2lkdGglM0QlMjIxMjAlMjIlMjBoZWlnaHQlM0QlMjI2MCUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTE2JTIyJTIwdmFsdWUlM0QlMjJSZWluc3RhdGUlMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMCUzQmV4aXRZJTNEMC41JTNCZXhpdER4JTNEMCUzQmV4aXREeSUzRDAlM0JlbnRyeVglM0QwJTNCZW50cnlZJTNEMC41JTNCZW50cnlEeCUzRDAlM0JlbnRyeUR5JTNEMCUzQmZvbnRTaXplJTNEMTUlM0Jmb250U3R5bGUlM0QyJTNCZm9udEZhbWlseSUzRFJvYm90byUzQmZvbnRTb3VyY2UlM0RodHRwcyUyNTNBJTI1MkYlMjUyRmZvbnRzLmdvb2dsZWFwaXMuY29tJTI1MkZjc3MlMjUzRmZhbWlseSUyNTNEUm9ib3RvJTNCJTIyJTIwcGFyZW50JTNEJTIyV0l5V2xMazZHSlFzcWFVQktUTlYtMSUyMiUyMHNvdXJjZSUzRCUyMnF0Ynp6U2hwV0d4NnB4XzhOQVRmLTQlMjIlMjB0YXJnZXQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi0xJTIyJTIwZWRnZSUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIycXRienpTaHBXR3g2cHhfOE5BVGYtNCUyMiUyMHZhbHVlJTNEJTIyJTI2bHQlM0JzcGFuJTIwc3R5bGUlM0QlMjZxdW90JTNCZm9udC1zaXplJTNBJTIwMjFweCUzQiUyNnF1b3QlM0IlMjZndCUzQiUyNmx0JTNCYiUyNmd0JTNCUmVtb3ZlZCUyNmx0JTNCJTJGYiUyNmd0JTNCJTI2bHQlM0IlMkZzcGFuJTI2Z3QlM0IlMjIlMjBzdHlsZSUzRCUyMnJvdW5kZWQlM0QxJTNCd2hpdGVTcGFjZSUzRHdyYXAlM0JodG1sJTNEMSUzQnNoYWRvdyUzRDElM0Jmb250RmFtaWx5JTNEUm9ib3RvJTNCZm9udFNvdXJjZSUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGZm9udHMuZ29vZ2xlYXBpcy5jb20lMjUyRmNzcyUyNTNGZmFtaWx5JTI1M0RSb2JvdG8lM0IlMjIlMjBwYXJlbnQlM0QlMjJXSXlXbExrNkdKUXNxYVVCS1ROVi0xJTIyJTIwdmVydGV4JTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyMzU0JTIyJTIweSUzRCUyMjU3MCUyMiUyMHdpZHRoJTNEJTIyMTIwJTIyJTIwaGVpZ2h0JTNEJTIyNjAlMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJxdGJ6elNocFdHeDZweF84TkFUZi01JTIyJTIwdmFsdWUlM0QlMjJTdWJtaXQlMjIlMjBzdHlsZSUzRCUyMmVuZEFycm93JTNEY2xhc3NpYyUzQmh0bWwlM0QxJTNCcm91bmRlZCUzRDAlM0Jmb250U2l6ZSUzRDE1JTNCZXhpdFglM0QwLjI1JTNCZXhpdFklM0QxJTNCZXhpdER4JTNEMCUzQmV4aXREeSUzRDAlM0JlbnRyeVglM0QwLjI1JTNCZW50cnlZJTNEMCUzQmVudHJ5RHglM0QwJTNCZW50cnlEeSUzRDAlM0J2ZXJ0aWNhbEFsaWduJTNEbWlkZGxlJTNCbGFiZWxQb3NpdGlvbiUzRGNlbnRlciUzQnZlcnRpY2FsTGFiZWxQb3NpdGlvbiUzRG1pZGRsZSUzQmFsaWduJTNEY2VudGVyJTNCaG9yaXpvbnRhbCUzRDElM0Jmb250U3R5bGUlM0QyJTNCc2hhZG93JTNEMCUzQnNrZXRjaCUzRDAlM0JsYWJlbEJvcmRlckNvbG9yJTNEbm9uZSUzQmZvbnRGYW1pbHklM0RSb2JvdG8lM0Jmb250U291cmNlJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZmb250cy5nb29nbGVhcGlzLmNvbSUyNTJGY3NzJTI1M0ZmYW1pbHklMjUzRFJvYm90byUzQiUyMiUyMHBhcmVudCUzRCUyMldJeVdsTGs2R0pRc3FhVUJLVE5WLTEl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/RtuuKHfN+677LKLHXfccTb99NO35Y5+/etf22677TbZ2F/5ylfs0Ucftdtuu80ef/zx7GebbbaZzTLLLG25h9BBSQJCCdIfAhCAAAQgAAEI1AmQBETwhMYkYPjw4TZy5Ej7+OOP7amnnrKbbropK81R22STTeyyyy5ryx2tvPLKdvvtt5sC6T/96U+2+uqr2+uvv25zzTWXbb311nbeeedlcpUUKDmoYiMJqKJVuCcIQAACEIAABDqRAElABKs1JgF643/iiSf2SH366adto402svHjx2f/dvbZZ9uPfvSjqd6VSnummWaalu580UUXtSeeeMLmnntue+GFFybrSxLQEkouhgAEIAABCEAAAh1PgCQgggmnlgRIvILzJZZYwj788EP7+te/bvfff392V+utt55pI+8Xv/hFW2CBBbLrJk2aZIceeqgpmdD/n3LKKabxJ06caAMGDLBlllnGRo8ebVpxUNtjjz3s8ssvt2effTZbfZh22mlt/vnnz36ma++77z77z3/+Y2+//Xb2b/PNN59NN910dtVVV/WMEQFRUyJYCWgKExdBAAIQgAAEIACBfgmQBPSLKPyC/pIASdhggw3smmuuyYQ98sgjtthii2UJQb5C0HgXv/nNb2zppZe29ddf31599dXP3aD2FVx88cW28cYbT1bq0/vCVVdd1W6++eY+Fbz33nuzJKFKjSSgStbgXiAAAQhAAAIQ6GQCJAERrNdMEnDwwQfbL37xi+xurr32Wlt33XUnSwIGDhyYJQozzzxztndgzz33tMceeyy7XuVESy21lD355JN2wQUXZG/8Bw8ebM8991wW5E+YMME0vk4CGjRokB122GFZvznmmCP7t3POOccU9KvpOu0T+N73vpeNUaVGElAla3AvEIAABCAAAQh0MgGSgAjWayYJaDy954wzzrDtt9++JwlQ/f/f//737DhRtZdfftm+8Y1vZP+/0kor2YUXXtijxahRo+z000/P/t74Nn+hhRbKNiKr3EelQY2NPQERnAAREIAABCAAAQhAoEIESAIiGKPVJEBBvM70z8uBtCfgrbfe+tyd6s3/SSedlL3t11v/d999N/vv/fffz669/vrrbc0118z+nyQggqERAQEIQAACEIAABDqEAElABEM1kwRos+8hhxyS3c2VV15pG2644VSTAG3cVcmOgv4ptW5MAiKY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IAABCFSaAElACeZJLdBKTd8SXMRtCGzlhh7BEIAABCAAgUoTIAmotHm4OQiEESAJCONHbwhAAAIQgEC3EiAJ6FbLohcEagRIAnADCEAAAhCAAAT6IkASUNAv3nrrLbvvvvtsueWWswEDBhQchW4QaC8BkoD28mV0CEAAAhCAQKcSSDYJeOSRR+y3v/2tPfjgg/bhhx/ayiuvbPvtt58NHDiwKVtecMEFtu2229prr71mM800U1N9mrlI9zB48GDbc889m7k8/Jqnn7aasPo4X/iC2RxzmH3722Zbbmk2/fTh4zOCKwGSAFf8CIcABCAAAQhUlkCSScD5559vO+ywg22zzTbZm/znnnvOjj32WFt++eXtz3/+c1PG2mmnnWzChAl28803N3V9sxf95Cc/se9///u26qqrZl3WXHNN+973vmc77rhjs0O0dt0ZZ5jtsovVMiCzTz81e+YZs4suMvvWt8yuu85suulaG4+rK0WAJKBS5uBmIAABCEAAApUhkFwS8MILL9hCCy1kp5xyiv34xz/uMcRRRx2VrQS8//77tRfg/b8BHzp0aO1l+ZZ2yCGH2JtvvpmtICjg6qt99NFH9sEHH0xWNqS/TzPNNLUYe8pB9sSJE22++eazW2+9NVupaEvbemuzJ580u/32z4a/4w6zlVYyu+QSs803n1xsjU+2YjDDDFO+nbffNvviF9tyuwzaGgGSgNZ4cTUEIAABCEAgFQLJJQHnnnuu/fCHP7Tnn3/e5plnnh47jx8/3u6880776U9/alopOOCAA+yxxx6zaaedNrtGScLll19ud999tymR+PKXv2y77rqrXXvttfbEE0/YXHPNZRdeeKGtscYa2fW77babPfroozZo0CC77LLLsuRio402shNOOMH0tv8vf/lLlgBojF/96ldZn1/+8pfZGNprsMoqq5ju6fXXX7fZZ5/dfvGLX2TXlt6GDLHakojZ2LGTD73wwmY/+IHZ4YfX//3++8322svslluslr2Ybb+92ckn1xOCmn62995S2uzII81efNFsySWtpqTZ/PObrb662SKLmGnVIW/ipGtOPLF0lRjwMwIkAXgDBCAAAQhAAAJ9EUguCbj33nuzEqC11lqrFq8eaUsvvfTnuGiFQIF+Y2nQaqutZosuumgtjj3DtB/gB7UAWcnEvvvum73lV8nOF2tvv//+979n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vpIASXjllVdsjjnmKFdYxNHyyaYSrJEjR0aU3Lmi2vkLqHOpcOcQgAAE4hBo5zOYuCSODacmpdPjEpKAJn2ov8mmYVRvf8EFF2Qj3njjjbb66qtn///888/bb37zG9MmkkmTJmXlLJtvvrltt912PWVDf/nLX2zUqFHZ9dtss409/PDD9n//939ZUrHgggvaj3/848/tSfjkk0/srLPOsvPPP9+0GjHzzDPbUkstZbfddlv297wcSGMuu+yyWWIy//zz2+23357JyWv09G/6uJpWCl588UX74he/mCU0++23X3Z9Y3vssceyVY577rnH3n33Xfvyl79sa6yxhv3ud7/LLtNu+V133bVJqq1dlk829Vp11VVb65zo1e38BZQoUtSGAAQg0DSBdj6DiUvqZiAuadodP3chSUCT7JqZbCoDyo8nvfTSS23TTTe1W2+9NftTwX/vpiThT3/6k80wwwx2xRVX2CabbDLVu9Hm3n333Te7RgmAEonLL798in0ak4B55pknC/CVUDz55JNZn3zFYEoDzDfffNnegjnnnDO7RLqsu+662cfYptQOO+ywtn2pmSSgSWdtuKydv4Bavxt6QAACEEiLQDufwcQlxCWhs4kkoEmCzUw2vU2/9tprsxH1tn2RRRbJTg1SGY4eBN/5zneyE26uuuqqnkD8kEMOsYMPPvhzSYCC9f/6r/+yZ555pqeGX+VFL730ks0000x2wgknmL5CqKa/662+fq6xJU+tlSRAJTYK8PVmXysCWr1QO/zww23//fe3t99+Ozuac+LEidm/a1/EiiuumJ0+pOQgbyQBTTpUpMva+QsokgqIgQAEINCxBNr5DCYuIS4JnRgkAU0SnNpk06k7p5xySk8ZzKBBg+yFF17IjuI89thjMwlnnHGGbb/99tn/67jLJZdcMrtm7rnnzv5sXAlQcH399df3HIOplYT8jb/2Hiy99NJZSZESBJ1CpBNzVL6jpn8bMWJE9mGtVpIAjb/xxhtnY/zjH//IxlDThmIlFio7UvmSmpKFK6+8sqeUSUmCVinUSAKadKhIl7XzF1AkFRADAQhAoGMJtPMZTFxCXBI6MUgCmiTYONn0xj3fYPvpp59mb83zk4E0nN7S68NWX/nKV+zxxx/PavWVBCg50H86N1hv/1UypPbvf//bHnjggZ5yIJUUqbY+b4ceeqhpxUDtuuuuy1YYFltssezv+i6BSooaW18bg6dWDqQ9AG+99VbPENJJyYVKjvShkzvvvDPbp6CjT9W0t6FxY+7VV19tG264YfYzkoAmHSrSZe38BRRJBcRAAAIQ6FgC7XwGE5cQl4RODJKAJgk2cx6vynIUsGtvgAJovYn/6KOP+pXwt7/9LSuzyfcE9E4Cxo4da/r0uJoCfslZbbXVsr//7Gc/s6OPPrrUJECDKQnQCsfyyy9vd999t6255prZZmc1lSQNHjy4RyZJQL8mdrugnb+A3JRCMAQgAIEOIdDOZzBxCXFJ6DQgCWiSYONkGz58eM+bcE1wrQwsscQSWV3+XHPNlY2oD3IpWG+m6TSf//znP00nAUou8pOHtFE4L8XJZYWuBPSXBLzxxhuTHX9KEtCMlX2uaecvIB+NkAoBCECgcwi08xlMXPJZEkBcUmxOkAQ0ya2ZDTi9h1LZjxxTZUGPPvroVCU17gnobyVAX8tV0qG21VZb2bnnnjvZ2O1IAn70ox/Z73//+0zO/fffn50slDeSgCadyOGydv4CclAHkRCAAAQ6ikA7n8HEJcQloZOBJKBJgkUmm04D0gZatTPPPLNnY63+/sQTT2Rn///qV7+yZZZZZrKNwf0lAfrqr07x0ZGfSjR05Kf2Gqhpb4KSjt7fCWhlT4DG6V0OdNppp9lOO+2Uydh22217vgugv+u7AfnRpewJaNKhIl3Wzl9AkVRADAQgAIGOJdDOZzBxCXFJ6MQgCWiSYJHJdscdd2RlQ9ofoAeBPia23HLL2XPPPWenn356doLP7LPPnm0Mvummm5ouB9JmYAXbBx10UHb3eiuvvQHagKxTivThMbVmTwfqvTG4ryTg9ddft0UXXbTnewc6vnSllVayf/3rX3bhhReaNhOrkQQ06VCRLmvnL6BIKiAGAhCAQMcSaOczmLiEuCR0YpAENEmwyGTT0PpSsM7zVyLQuyn4VgCtYzhbKQdSEqA9B9qsm3/9ty81ykwCNL5WNTbbbLOpbnYmCWjSoSJd1s5fQJFUQAwEIACBjiXQzmcwcQlxSejEIAlokmDRyabh77rrrux7AdoArG8EqDRnrbXWyk4R0ge41FpNAtTn3XfftSOOOMLOO++87PsACvr1cTJ90ffBBx8sdSUgx6TVDZ2ApBOD3nvvPVtooYVMexTy1QfpueeeezZJtbXL+GJwa7x0dTt/AbV+N/SAAAQgkBaBdj6DiUvqvkRcUnxOkQQUZ5dcTwX6Wtm44IILbODAgT36//CHP+zZnKxNwvpycjsaSUDrVNv5C6j1uwnroW9Z6GN5KqkbMGBA2GD0hgAEIBCBQDc9gyPgalkEcUnLyCbrQBIQxi+Z3tpoPGzYMHv77bdtwQUXzL5+rP0Mf/3rX3u+Zjz//PPbY489lq1AtKORBLRO1esXkL5noc3wKh/bcsst+7xxfftCe0q0OV5fwO6vKfnUZnqtpmn/S2jTBvc333yzZxhtrv/mN79pO+64o00//fRTHP6iiy4yJbv5aVmh90H/vgnomdO4qjjttNPavPPOm52IpsMUaBDoBAJez+BOYBN6j8QloQRr1QK1DZ31HZ0d0FRqMmrUqMnOqG+8bSZbe42oX8jHHXdcn0L0rYRrr7022yzcrja1JEDBnE4w2muvvdolviPH9ZoTW2+9dVamps3w+rN3++Mf/2gbb7xxtqKkDfI6jaq/ptOpHnrooaysLrQpWdVXt/U80Ulbak899VR2r/JhJbdTar/+9a+z+915551Db4P+UyGgr6zvsssutt9++2VXaSVI+5J0kIKW/7UiRIOANwHiEl8LVDku8SXTnPSOSgL09k9fsVWgt//++38uGfAKeJpD3R1XaentpJNOyvYEKHjL9zfIHjo9qJ2tryRAwb/2RehBrDeF2idB+4yA15wYMmRItmq0yCKLZCU8jU0nTWlVSZvb9Ub3z3/+82Q/1zG3+Re3G38wdOhQ22KLLbITqKbWtCdGH+qbZppppnhZHmD2XlXIj7t9/vnnM9/O2wcffJCNN7VkRV8H13WNpUr99VNg21ha1/uG++vfzb6uRFLHHzcefqCvlcsuhx9+eE9ykDPoj6WeDbJf4yqPfEW/VzRP+moaUwc4TOnnU+MvH9a+KUrXutlLLfMf4hJfG1ctLvGl0Zr0jkoCTjjhhOw8+vzIzT322GOyZMAr4GkNOVcXJdCYBCy99NJZ8K+VCS1mKQHQl5N32223osN3ZT+POZG/Zf/pT3+alcw0ltwI8g477JAFdxMnTjR9hC7/xoRKg2Q/vYWXTfVG/rLLLrM555zTXnjhheyNvTbCrbHGGtlbeyUEOh73xBNPzAI7lekccsgh9vDDD9uss86alRmpbK2vpgBTY/ReVdBYe++9d5bgqqRJ97PppptmR+/qSF59qXvDDTe08ePH23zzzZf9XB8CVCmR7lWJzUYbbWR6Vv3kJz/JNswr8Nx1112z+1FTwCC/VeIqvfStD/1d5UlqGqe33BtvvDFLqJS85E0cllxyyUz/bmxKJLfZZhsbO3Zsj3r6svrgwYOzfUnf//73s++ijBs3Ltur9PLLL2cHFcgP8lUCJZn67//+7/+y1QPZ4he/+IWtsMIK2UqOVpa0iimu8ic1JV5KMmRzJR36CrzGlzz5peyuZFF7odRkc8nTeFqt0n3oyGbdh5KAlVdeOSuZlB/Tuo8AcUn32bQVjTq9TLmjkgAZRg/SV155JbPRDDPMkL2hyZMB/eLvoOqmVvyMa2sEZOtrrrkmK9m49NJLM1vrF3buFwoQaJMT8EgCFFApkL7kkktM35PQdzFUy62mYFZlQLLjKquskp2c9a1vfcv+9re/ZQH20UcfbQrQFVh/+9vfNn04b/To0VnQl+8H0BerN9lkkyxoVuInHfXnb3/726wkTInBwQcfnCUgkyZN6vNNrAJMjde4qqCATffyjW98w84666wsiJcuCuh0HK9O3tL3PfRvSmLU9GE+BfUKGLW6oYBAwf3w4cOzP7V6oaDzf/7nf7KVEe2Xkf760J/uVXshlCCIR/5c60uukhm9tc7LlHS0sEqZlPDkbLvJ9/NEUkmUTlLLm45b/sMf/mCPPPJI9vzXBxn1tl7clUx997vfzd7c33LLLZnfaZ+SkiX5lRK17bbbLvM5jankQm/pFdzrT604KKnQwQZKAlX2pYD/5z//eRbE6wQ2JSA6DU3s8zIl+Z6eSfJLPYNWXHFFW3fddbN+SnR1pLPuW6eq0bqTAHFJd9q1Ga1IApqhNIVrVl111exhHdr0FlBv3/LAMHQ8+leTgCabPr525513TvVbBdW8++6/qzwBVxCvN6i/+93vTMG2AtfVVlstC2IVHCsg0hK6kvd8P4CCfgXsCsLVNJaCNr3l1YpCvh9Af+qNqwI0BfFqf//732355Ze3e++9N0sA1OQjSiL0ZW4FbY0tDzAVpOktsWSp/Ef3q5Kem2++OXv7u8QSS2TPFQWQeVMyoMBSQX0eZDYGqtddd10W9OmelEyoKaFQbbv0V8KgDwMutdRS9qUvfSn7uVYI9GZZiYFaX3LFQEGqjv7Vm2ddkycioZ6lZEw6x259Pf9zH1KipQ3a2jyuAF0JlPxIOmtfgFYCtXpy/PHHZ2/585IqrQ6eeuqp2SrPueeem606KTDPf67AXfbQvoJ8c7lWG/T2XnuaZAf5ljjPMcccGRIlHErmrr/++iwZ1DNIfiO7aSVHxzxro7j+XUmJViW1mpM3JcLqS0uLAHFJGvYuUio4NTKxn8euKwFF3lLql7OCBTVWAtKYZLmWU1sJ0C/s3C/SojJ1bYvMsVB+Cvz1ll5vwFVqobf5erutoF+BukpwVHqhMqF8P4De5iqwVrmP3p6qfvuf//xn9nZVgb2CMAW/Og1Cb3C1ByVvKinSdza0kpA3BX733HNPJqP3aVUKMHU/CqTV9Mta96y3w3rjrqAzLz9ScKyHspreEisx0Z4YJSB5kKl9BdqDoKaVBSUTCjLzJlkTJkzIgn81MdDJSfo39X322WezhEU69CVXfRTc6m23EgUFquecc4498MADUz3FqFk7eviI7m1qcpVIKujPy3r09l6rJrKH3vQrWVByp30aSqjyppWRueeeO3u5pARAyWXjiyatCmgcJQJ5kx/oBCuVe8kPlGQ2+leeBGi1Svejze4K9LXSpJUFJY6yhxJO7YtadtllJ1udUfKmJJCVgGY9svOuIy7pPJuVdcdlrwTEfh53VBKgX4J6k6O3aY1lQAo0+vulUpbBGcePAHsCWmcf+4HSu4xDb0xVE62SCwVgekOuU3lUVqGSIe0HUBmM3gorGFMQrhKM888/PyuxUTCvVQXtB1A5jt7eKmFQgpBv/NUbdY2tQLqx6QhbHSfZu/W14bT3NSq3USKjID1PIhTMSRcF+Ko9bzXIVImS3lLrT/0nNnpDrfp07WXQCklfcnVvCjIVcGr1QQmRylO0ulJGi+0j+T1PTW7vci2t2oid3tgraVMt/1e/+tVspSBfUcnHlZ/In1SqJfvnwbdKB5XEnXzyydleA7XGpEuBnPoqSWs8glRy5adKwPTiSfeiPSHaN6C3/NrLontQOZp+P+nfe7e1114783ta9xEgLuk+m7aiEUlAK7R6XdvqLx924QfA7oKunA7UuhFbnWOtS5i8h96y602qgme9UVfArVIbBVsKvPSVbAVQeruf7wfQG1iV8qmsI2/ajKsDAPR2XPsB1FfJgJIIBfz5xlC9hVVQqIRBpULNtL42nPbu1/vtvX6uFYje+wGknwJ4tf6CTOmsUiKtAuSbUP/xj3/YiBEjelY8+pKrsbWKoJWOzTffPNNXSVJZLbaP5Pc9Jbl5IplvAtf1epuvwD4vycm/lKo3/0qKere8VEvc1E9NK1Aq2VFJkb51otaYdOnEM10rP9T+DjXtE9G3I7RPQCtaatqIrdUerUhoBSE/KnbMmDGZbeXvtHQIEJekY+u+NCUJCLB/q798uvk8XtWSKjjSUvWtt97aMlWVXugXk5reEub1yFMaaL311svepuktp8oSOqFNbbLxnYC+LdjqHAv1g95v2RU4622t3qwqyFIZheq49W/5fgBt5vzf//3fnk2vOoklr5NX0qDgXoFZflSkynO0QqC6ba0GaAVBCYfqsvVGVhtH9XZOQV/vIz3zADMPJqekb14iojf2eWvcD6ASHiUTrQSZkq03zdrnIJ2UBGnTs4LGN954o0cXBZaNciU/v2+tepa9GTi2j+Q8pyS3r+Nblexp86WSQdXsi79WY/R3+YtWh/X7QaVk2nBdpFRLqwxK0rQaJf/Tm3+V8UiWfClfcdY3LpSkKjlQiVC+IqWEQrbT5nGtIuletLqjZ7tK1mjdScAzLlGJZF9JsJ57KpFVHKA5os3qtPYQIAkI4Fr2L5+yxwtQraWuec1p3kmbGlUi0ErTLxsFPmr5G9ap9ddbSSUdSgL0tqsTWtmTrRN0Dr3H2HOi91t2BeSqoVaQr03BajodRz6X7wdQIK0vCyspUEmG3qwqqVXNtZIKBeR6A54fFam6cJXC5KsBOvpRwZdOb9EvPyUcmgt9fUwqDzAla0rnt/dVl6+3/Covmtp+AN2f3gRPaT+A6tilp5J0BY7agyD7qG5dQf6U9gOImXjpjeMvf/nL0j+IF9tH+ksCpnR8q9hpJSjnq7IendyUn/8vv1KCqdIxlWqJaeOGZyVx8s++9gPkSZdepOh4Vm3iVumPyonEXGVEedM9qO5fCUBj2ZASEZ0apL0tsq9WCrShW748tS9Qh85x+lebQDvnV/5c6I+AXjbk8UF/1/Lz1giUHZe001/60qyj9gT0Z5rY8Pq7n2Z/rnpTbfbLm36B6W1SK40koBVa6VzbKXNCb3r1dr/xA12tWEmlQ3rzqhr7xoCtlTFiXas9EEq+FSQ225QQaQWhrM3AjXK9fKQMuXoTqjf22mOSn/bTLNMpXacxVXqmDcZKBFptWtXRf/LlZr6E3er4XN9ZBMrw8ylp3JgE6M2/Xoao6aWFVvgbqwoUUyi2oJVLgCQggGfZk6Ps8QJUa7qr3h6pBEgBTN607Ky3gq18yuVSdgAAIABJREFUaZIkoGnkSV3YiXMiKQP1o6ySG5WiqGRK+yPasazv5SNecvEvCMQk0E4/b0wCtFFeByY0NpXF5R+1U/maVmRp5RIgCQjgWfbkKHu8ANWa7qqPBG2wwQbZ9SrR0Zs+tbPPPnuKdaQ6Ok9lCarpV9NReToxJf/6aWM5kIIILX9rI6GOV9TbMh2pp2v1d8qBmjZVR17YiXOiI0G34aZVkqISJB0/qhNqdMJSO5qXj3jJbQdDxoTAlAi008/7SwJ0T/nxpSpJyz+uqX9XGZ1iA33TQvtetOdGJXMqh8u/kaGvpqukTU37YFS6+Pjjj2fH4qrsTiV4KjVSSaaeUTroQC82FWNonL7Kmu+7777sIAeVIytu0ZfQVe6pfTPaM6bTtvSxPTV9c0XXNjbdj+5LTX/qq+lqV111VbYvUuXVimtUDqp7yH/eLg8lCQggW/bkKHu8ANWa7irn18koqiHV5kdt5NHE1ikV+bnijYPpAzl77rnnVMfPkwAlABpfNchTaiQBTZuqIy/sxDnRkaDbcNP6ZaolfZ1k00rpUKu34uUjXnJb5cP1EAgh0E4/byYJULCuygK9TNCLBd2PTs/Sy8f8pWOjfto3o700Cs61p0urkFNrjS8vG69TQK/DGhTI501f1z7ggAOy73z0biuttFJ2vb78rX1gevbpuafSvLwqQvqq9E/JgzZE65AEJTbaiN/XiWmKbxRf6XSvdjWSgACyZU+OsscLUK2prqqB1pnocmJtEtSXR7/3ve/ZxRdfnE1UbWzTRMybNqQpu1VwoKbNkTp7WsmCMvS85UmANgKpTEhNDwCdCKRSI2XMqktWIwloylQde1GnzYmOBd3BN+7lI15yO9hU3HoHEminn/eXBDRWGugr23oLr5eDOmEtP21NX1vXG3ud3qb/1PKXkL2TAF2roF9v/BVnNDZ97V0rACo5ysuOcpm6Ti8jtZqgpr02m2yySbZ/S1/q1qEOatr8L5n61oaO3FW76KKLeo5UbhxDBzEoodCH/ZRcqOmFib7yrpUNlU8q2dBqqj7k1669YiQBAZOy7MlR9ngBqjXVtTFI18eAVLvXOGl1jKJOlsibfq4aPzVtEtRHa9S0kU1niOtUIbU8CdBeg/zEFGX2+ceU9G86m1wnpJAENGWqjr2o0+ZEx4Lu4Bv38hEvuR1sKm69Awm0088bkwBtRN9rr70yQnqxqMoCvVBU6Y7aeeedl53UprftG264YfZvKsHRaVb5PeqNeV5qo3JjjZGvBGjTcePbdpUO3Xjjjdk4OkUrj02UZOhNvl5Maty33347K0PW6XDas6B/U0lz/v0OvZDUKoDKgNT0slOlSToCWEG8Ege9zVfT/etUOI2hwH7WWWfNypKkr77toSQmP8pXh63o0BU1fcgvL2sq24VIAgKIlj05yh4vQLWmuubHdGrJS8t1OtlEE1arA1oCUxCv4/Dyc6h1hrWW8eTkkyZNmuzYud4bg1UHmH+hUstx+cTOb4wjQpsyUcdf1GlzouOBd6ACXj7iJbcDTcQtdzCBdvp5s0eE6nsX+sidmk4I0lHGanqbruBcb8lVhqNqBH2bRU37BRST5EmAPpanr7znTW/q869jX3nllT2JhX6ut/x6E6+mmEX7D/QFbzV9PTs/Hjofq3EDc/6GX0mCPhKoKgZ9w0Mnbek7MPomkL7crpOPGvspQVD5s/SQProuTzT0rQQlO+1oJAEBVMueHGWPF6Bav12V7WqpTG3xxRe3HXfcsaePsu37778/+7smpUqFlF1rY4/+1BnV99xzz2QyeicBejioXEhNZ2kfffTRk11PEtCvibrigk6aE10BvAOV8PIRL7kdaCJuuYMJtNPPm0kC9AZcb8LzpqqBvvYb9kasN+kqR55SEqAvpR966KFZN71kbKz9z/c66meqPFB9v1YO1JRI5F/fzmVqhSD/jow+1qfvuShRyY801SqG9gUouVDTBwEVM6lSoveHFftyFW00VtlROxpJQADVsidH2eMFqNZv11133TU74ae/phNBtPyl4F+ZsJbHVHvXux6vdxKgzFuTXU1LYnnNXC6PJKA/8t3x806aE91BvPO08PIRL7mdZyHuuJMJtNPPp7QnQBUEKslRmYzenmt/YV4mo/hBH7rrrx122GHZGGUkAQry8xN/tIKgsRtbYxKgTb465Sf/1oZiGdX5a1VCL0hVwqzKCb3t7/2NpSnptMYaa9gNN9zQn8qFfk4SUAhbvVPZk6Ps8QJUm2pX1fDPO++8PZtzp3axlsKef/75zOHzXf4qF9LGl8bWOwnQZhhNYLXGej2SgHZZtZrjdsqcqCa9NO7Ky0e85KZhVbSsCoF2+vnUNgY3xgSNgfd3vvMdU/mOmuIIxRNTao0bg3uXA7WyEvD666/b1772tUyMVgkuueSSyUTq71tssUX2bwcddFDPCoNegmpjsDYSK/hXiU++eVjXNp6WqNIgxTqxG0lAAPGyJ0fZ4wWoNtWucur8zO++SnXUuXFTi1YMdt5552yS5JNHy3l5vZuuzzfM6P+1SqBd/Eoa9DVN1cg9+eSTPbvjP/zww6w+j+8EtMvC1Rm3U+ZEdYildydePuIlNz0Lo7EngXb6+dSSAJ0+uOiii2Zv1FVKo426evnYGDirVl61/7pHNb11V2yiQF0HkZSVBCjR0NGj2h+gsmYdTaqNvGpardBpRfnJRI3fOWo8KCW3ofYaKJFRU9m0PoKmpo+lqW++4qF/0+lBYqSDVCS3HY0kIIBq2ZOj7PECVJtqV9XOXXfddT1OrNKc3k11dDruSuU/yyyzjN17773ZRhhNFjXtnlc9nmr2NFFU85efvZtPIi25KatWkwwlHNqlr49vaK+BGqcDtcvK1Ri3U+ZENWileRdePuIlN00ro7UXgXb6eX9HhDYetZnX2uutvPYh6vARNW2yVbmNgnGdUqj6fTVtytU1ZZQD6VATvcxUGbSaKhV22mmn7E+92NTRpWq9v4/UeFCKfq6PmKkyQisDedNG4zye0YdTldiockJHoeenF2nvgE5bbEcjCQigWvbkKHu8ANWm2FXLbwruVeOvL9nlX/3tq4MCfgX+ajqXVxtntHO/96aa3n3zJEBlR9qMk58H3JcMkoB2WLk6Y3bCnKgOrTTvxMtHvOSmaWW09iLQTj/vLwnQx8F0SuDEiROzr/HqDbzKcvSFX30s7LXXXusTS16SU9ZKgJIAvaRUIqKVh76aVgb0clTXNrbGsqbem5x1naodFOdoX0FfTUmCVg9UWt2ORhIQQLXsyVH2eAGqTbFrY2auN/X5BzH66qAd8MqW1TQRtIynpqOufv3rX/ckEDpPV8ttOntXrXE5Tct7RxxxRHZGsFYXFPTrIaCHw4MPPshKQDuMXKExO2FOVAhXkrfi5SNecpM0Mkq7EWinn/eXBEjp008/3UaNGpXprw+GqnJATeXAKjvWqTlKElQ2rDJixRraSKtWZhKQG+DCCy/MqhFUyqM3/apmUAnS6NGjJyvlya/Xh8dUDaGm5GXFFVf8nC31LQJ9d0ml1ip7UumPkortttsuSzzyY9bb4QQkAQFUy54cZY8XoBpd20Cg7MnWhlus3JDMicqZpHI35OUjXnIrZwBuqKsJ4Oddbd5sP0V+5GrjPs2iWsf2ly/Ulmg+LXqzof3KVrbs8UL1o3+5BMqebOXeXTVHY05U0y5VuisvH/GSWyX23Ev3E8DPu9vGZcclsf2lq5IALWc99dRTPafgdLfrpaWdahd1uoA2+6iVkXGnQDD2AyUFpt2mo5ePeMntNvuhT7UJEJdU2z4hd9eOuCT2c7GrkoAVVlghOwoqP0EnxLj0rRYBnVSgmkHV/ZEENG+b2A+U5u+MK6tCwMtHvORWhTv3kQYB4pLutXM74pLYz8WuSgJ0BJQ2yvR3ek73umT3aqZPjeu4Mm30IQlo3s6xHyjN3xlXVoWAl494ya0Kd+4jDQLEJd1r53bEJbGfi12VBOh82+WWW46SoC6bc/mSm76FoJIg7fQfOXJkl2nZHnViP1DaowWjtpOAl494yW0nS8aGQG8CxCXd6RPtiktiPxe7KgmQq+l4q7feesvOOOOM7vS8BLXSEV/6XLi+mqymrx8q2aP1TyD2A6X/O+KKqhHw8hEvuVXjz/10PwHiku6zcbviktjPxa5LAuRqOlN24403nuoZ/N3nkt2p0dixY7MvCuZ7ATRBFlhgAdOXAWn9E4j9QOn/jriiagS8fMRLbtX4cz9pECAu6R47tzMuif1c7Mok4PHHH7dNN900SwaOPfZYTgvqwLmnpba99tor+5y4vl4455xzZlqoFEh21WoArX8CsR8o/d8RV1SNgJePeMmtGn/uJw0CxCWdb+cYcUns52JXJgFytUceecS0IUdfw9NXdzfccEMbMWIECUGF56Em2Pjx47NjQE899VRbd911e0qAdNv67Pncc89tiy++eIW1qNatxX6gVEt77qYZAl4+4iW3GSZcA4F2ECAuaQfV9o4ZOy6J/Vzs2iRAbnHPPfeYNuVcf/31WXD5xBNPZPsFaNUkMHDgwOwT4krW1lprrWwTcGNjL0Drdov9QGn9DunhTcDLR7zkevNGftoEiEs6y/6x45LYz8WuTgLef//9LPjXnx9//HFneV4Td7vaaqv1fK66ics79hKtAMw444xZcqA/ac0TiP1Aaf7OuLIqBLx8xEtuVbhzH2kSIC7pDru3Ky6J/Vzs6iQgdzUtwb3wwgv26aefZv91S+v2JECTQf/NM888lAAVdNrYD5SCt0k3RwJePuIl1xE1oiHQQ4C4pDOdod1xSeznYhJJgFztnXfesRdffNFefvnl7INin3zySWd6YMNdd2sSoM2/M800kw0ePDjbA8Am4OKuGvuBUvxO6elFwMtHvOR6cUYuBHoTIC7pHJ+IFZfEfi4mkwR0jqs1f6exnaX5O+PKqhDAR6piiereh5ePeMmtriW4Mwh0PgHmdZgNY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswiEAgbYQ8HqOeMltC0QGhQAEMgLM6zBHiM2PJCDMXq69YzuLq7IIhwAE2kLA6zniJbctEBkUAhAgCSjBB2I/F0kCSjCa1xCxncVLT+RCAALtI+D1HPGS2z6SjAwBCDCvw3wgNj+SgDB7ufaO7SyuyiIcAhBoCwGv54iX3LZAZFAIQICVgBJ8IPZzkSSgBKN5DRHbWbz07Gq5RxxhdsABZj//udm4cV2tKspVk4DXc8RLbjWtwF1BoDsIMK/D7BibH0lAmL1ce8d2Fldlu1H4xx+bLbyw2WqrmV17rdmzz5rNOGP7NP3wQ7Ppp2/f+IzckQS8niNecjvSSNw0BDqEAPM6zFCx+ZEEhNnLtXdsZ3FVthuFX3652Y9/bPbMM2aLLmp23HFmW2/9maYHH2z2l7+YbbaZ2e9/b/bii2Zf/7rZ6aebDRli9sknZtNOa3byyWaXXWb22GM6msFs993N/vu/6+OssYbZcsuZPfCA2fXXm330Uf2/I480O/dcs+eeM1twQbOf/tRsl13q16y9ttmTT9b/PW/bbGP2xBNmt91mNmlSXcY119Tv4WtfM9OKxsiR3WilrtfJ6zniJbfrDYqCEHAkwLwOgx+bH0lAmL1ce8d2Fldlu1G4AvTFFjM75RSzPfc0u/tuszvv/EzTsWPNDj/cbN99zQ46yOyDD8zWX9/snXc+u2666cwWWsjs5pvN5p/f7IYbzNZay+y668z+67/M1lvP7B//qAf9Cu6/9CUzJRdnnGGmJOQb36gH9htvXJe18871BGOPPcx+9rP6vbz/fr3fscea7bBD/R6UbGiMOeYwO+sss912M5swYfLEoRtt1oU6eT1HvOR2oQlRCQKVIcC8DjNFbH4kAWH2cu0d21lcle024f/6l9mwYWb33mu2zDJmDz1k9tWvmt1/f/1tv5qSAP332mtmM81U/ze98dfKwEsvmQ0ebKYkQHsKDj30M0JLLWW28spmJ51ktsEGZv/5Tz3ByNtcc5ntvXc9ucjb9tvXVwv+93/N9trL7NZb6/empmRhq63Mnn++LnfxxeurDlq9yNs3v2m2ySZmBx7YbZbqen28niNecrveoCgIAUcCzOsw+LH5kQSE2cu1d2xncVW224TvuqvZ7bfXA++8ffvb9UTgtNPq/6IE4OyzzR599LNr7rvPbNll68G6Am8lAbpGQXreFPhPM43ZlVfWk4DZZ6+XE6m9/rrZoEH1wF5v//N21FH11QIlHEpENLbKf7RnYYst6nLOP9/s6qvNNtywb2uotEmrArSOIuD1HPGS21HG4WYh0GEEmNdhBovNjyQgzF6uvWM7i6uy3ST8zTfN5puvXmYz88yfafbee/VgW3X6s81WTwLOPNPs3//+7Bq90V9hhfrKwZJL1q/XNarZz9s669T7X3RRPQmYZ5566U5jEnDFFWbf+c5nfZQAHH202auv1v9Ndf4//GF9n8Dcc9dXIFROpA3MKgd65ZV6ckHreAJezxEvuR1vMBSAQIUJMK/DjBObH0lAmL1ce8d2Fldlu0m4ynR0JKjKbRqTAG3Y1Vt+lfaMHl1PAg47rL4Rd+DAOgG9jdfmYb3Rn2WWehKwzz71jbl5GzrUbKONzI455vNJgK5RUK+Nvfvt91kfJREPP2z2t7/V/03HlSrw114FlQc9/XR9E7JWJVQOdOONZquv/ll/JSram6C9ArSOIuD1HPGS21HG4WYh0GEEmNdhBovNjyQgzF6uvWM7i6uy3SRcJT8q/cnLfhp10wZbnQikPQNKAlSmozIbBeVvv11/C683+1ddVe+Vbwy+4IJ6Cc9559VXBVQ2tPTSfScB2gCsE4VU2jN8uNlf/1ovDfrNb8y2264+rk4sUimQTvxRYqL7yJs2G7/wgtnFF9evUdnRD35QH0erFLSOIuD1HPGS21HG4WYh0GEEmNdhBovNjyQgzF6uvWM7i6uy3SJcgbJOBWrcANyoW75hWG/adVKQSnp22qleqqO3/yutVC//USKQJwE6tUcB/V131d/ya8PvjjvWf967HEj/phWHMWPMzjnH7I03zBZZpP7GX8lGY9Ob/ptuMvvnP+t7FfL28sv104NUGqQSJq0MaLzNN+8WKyWlh9dzxEtuUsZFWQhEJsC8DgMemx9JQJi9XHvHdhZXZVMUrpWACy+sB+FTaloJ0DUE4Cl6SCk6ez1HvOSWAo1BIACBPgkwr8McIzY/koAwe7n2ju0srsqmKJwkIEWrR9fZ6zniJTc6YARCICECzOswY8fmRxIQZi/X3rGdxVXZFIWTBKRo9eg6ez1HvORGB4xACCREgHkdZuzY/EgCwuzl2ju2s7gqi3AIQKAtBLyeI15y2wKRQSEAgYwA8zrMEWLzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgci7yO9EAAAgAElEQVQEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYUuqk5ePeMlNyrgoC4HIBJjXYcBj8yMJCLOXa+/YzuKqLMILEcBHCmFLqpOXj3jJTcq4KAuByASY12HAY/MjCQizl2vv2M7iqizCCxHARwphS6qTl494yU3KuCgLgcgEmNdhwGPzIwkIs5dr79jO4qoswgsRwEcKYftcpwkTJti5555rN9xwgz300EP2xhtvlDMwo5ROYNZZZ7Vhw4bZmmuuaVtvvbUNHTq0dBkMCAEI9E2A3zlhnhGbH0lAmL1ce8d2FldlEV6IAD5SCNtknXbffXc766yzbNSoUbbBBhvYiBEjbNCgQeEDM0JbCLz22ms2fvx4u/rqq+20006zbbfd1o4//vi2yGJQCEBgcgL8zgnziNj8SALC7OXaO7azuCqL8EIE8JFC2LJOEydOtM0228yGDx9uRx99NIF/cZRuPZUQ7LPPPvbggw/apZdeavPOO6/bvSAYAikQ4HdOmJVj8yMJCLOXa+/YzuKqLMILEcBHCmHLOq2wwgq2/vrr25gxY4oPQs9KEBg7dqxdc801dtddd1XifrgJCHQrAX7nhFk2Nj+SgDB7ufaO7SyuyiK8EAF8pBA2UwnQO++8k5WT0LqDwA477GADBw6kNKg7zIkWFSXA75www8TmRxIQZi/X3rGdxVVZhBcigI+0jk2bgJdbbjl76qmnKAFqHV9le6g0aIEFFrA77rgjK/GiQQAC5RPgd04Y09j8SALC7OXaO7azuCqL8EIE8JHWsR144IH23nvv2THHHNN6Z3pUmsDee+9tr776qp155pmVvk9uDgKdSoDfOWGWi82PJCDMXq69YzuLq7IIL0QAH2kdm/YCjBs3zlZZZZXWO9Oj0gRuueUWGz16tF1yySW2+OKLV/peuTkIdCIBfueEWS02P5KAMHu59o7tLK7KIrwQAXykdWyzzTYbpUCtY+uIHioJGjJkSLZJeJlllrEBAwZ0xH1zkxDoFAL8zgmzVGx+JAFh9nLtHdtZXJVFeCEC+Ejr2GDWOrNO6iH73nzzzdn+gIUXXriTbp17hUDlCfD8DDNRbH4kAWH2cu0d21lclUV4IQL4SOvYYNY6s07qIfvedNNN2SqANoDTIACB8gjw/AxjGZsfSUCYvVx7x3YWV2URXogAPvJ5bMcee2z29d9ZZpmlT6YwK+RqHdMpTwKmmWYaGzlyZMfcNzcKgU4gwPMzzEqx+ZEEhNnLtXdsZ3FVFuGFCOAjn8c288wz28cff2x77bWX7b///p9LBmBWyNU6plOeBOiGV1111Y65b24UAp1AgOdnmJVi8yMJCLOXa+/YzuKqLMILEcBHPo/thBNOsH333dc++eQTE5899thjsmQAZoVcrWM6kQR0jKm40Q4kwPMzzGix+ZEEhNnLtXdsZ3FVFuGFCOAjfWObc8457ZVXXsl+OMMMM0yWDMw666z26aefFuJNp+oTIAmovo24w84lwO+cMNvF5kcSEGYv196xncVVWYQXIqByB52NTuufwPTTT28bbbSRXXrppSQB/ePq2CtIAjrWdNx4BxAgLgkzUmx+JAFh9nLtHdtZXJVFOARKJDDXXHPZpEmTWAkokWmnDEUS0CmW4j47kQBxSZjVYvMjCQizl2vv2M7iqizCIVASAe0J2G+//bLNwewJKAlqBw1DEtBBxuJWO44AcUmYyWLzIwkIs5dr79jO4qoswiFQEgFOByoJZIcOQxLQoYbjtjuCAHFJmJli8yMJCLOXa+/YzuKqLMIhUBIBvhNQEsgOHYYkoEMNx213BAHikjAzxeZHEhBmL9fesZ3FVVmEQyASAeZVJNBOYkgCnMAjNgkCPD/DzBybH0lAmL1ce8d2FldlEQ6BSATaMa+OPPJIO/XUU7M9CLfffrvNN998kbTpDjHrrbeePfTQQzbjjDPahAkTgpQiCQjCR2cITJVAO56fKSGPzY8kICXvQlcIQKBfAmU/hPVRsgUXXNCeffbZTPYRRxyRbUymNU/g61//uo0fPz5LAt57773mO/ZxJUlAED46Q4AkoI0+UPbvn/5ulSSgP0L8HAIQSIpA2Q/hP//5z7buuuv2MFxsscXskUceSYppqLIkAaEE6Q+BOATKfn7GuevqSInNjySgOrbnTiAAgQoQKPsh/L3vfc8uvvjiyTS77bbbbKWVVqqAtmZaqZhmmmkqcS9TugmSgEqbh5uDQA+Bsp+fqaGNzY8koJM87J//NDvkELPDDzcbOrST7px7hUDHECjzIfzKK6/YvPPOa++//76NGDEiK2lR23bbbe13v/vdZEz+8pe/2KhRo7J/23DDDe3hhx+2Z555JttHMGzYMNt1111ttdVW6+nzi1/8omeMrbbayv7617/af/7zHxswYIB961vfsn322ccWXXTRnuvzuvovfvGLtsACC9gTTzyRfTDt0EMPtV122SW77r777rNTTjklu8+33nrLFllkEdt8883tRz/6kU077bT2r3/9q2dVY5111smubWw//elP7U9/+lP2T/pzySWXzP7/qquuyu5VKyAq6VluueVst9126/l5PoYSkrPOOsvOP/98e/rpp03HuS611FKmpEl/pxyoY6YRN+pJoDZXbM8963dQe37YHHOYffvbZltuaVb7Mno7W5nPz3beZ1XHjs2PJKCqntD7vmq/HLNJfPfdZhdeaFZ7u0iDAARaJxDziNATTzzR/vu//zu7yYsuusiOP/54u+uuu2zgwIH2/PPPZ3/m7YorrrBNNtlkqgr95je/yZIBtd1339304bMpNY19/fXXZwmBWv42vff1+ZjavHzAAQfYp59++rkhtWpx9dVX22yzzWZLLLFEtjlXycRLL72UJR1qqtUfPHhwljwMrb2kUBLzwQcfZAmPgvreTQH9pZdeauuvv372IyUASjguv/zyKerU7iTgzTfftNNOO8322muv1h2LHhCoCoEzzrBaZm+1zUdWm9BWe5ugB5DVHgZm111nNt10bbvT2EFs2xRxGjg2P5IAJ0O3LLYWTNhJJ+k3pdmPf1yf3H01/fydd6wWXUxZhH6utwFTeiOgn///X+w9g7z7bv36Ig8P3ZM28/Ues2UIdIBAOIGYHwv75je/affff7/NOuus9uKLL2ZvuXfeeedMCb0ZV4Cct8YkQL8ItttuO1t++eXt73//exaYKkievjYH//GPf2SBeGMSoPFHjx6drTpceeWVpn0IagsvvHAWsKtfYxKgBGGDDTbI3rQr8fjoo49s0003zfrMMMMM2b8NGjTIrr322mw1Qm2zzTazP/zhD7WFyMNtzJgx2b8psdliiy2y/1fwno8xduzYLKHYf//9TcmFmjZHb7TRRtkGaemqZGP22WfPViQkSwmNdFKbaaaZTCsXs8wyS7aKoBUVtXYlAQr+tWFbCaJWPN7V844GgU4lsPXWZk8+abWjyD7T4I47rFaDaHbJJVbLtifXrLZSma0Y1Ob+FNvbb1st8++XSOwgtt8b6rALYvMjCegEB3nuOavVA5j98Y9mRx1lNmSI1aKCz+78ssvMfvYzs+9/v54ovP661WoPrPYb3GpRQf06vQGoBSS1iKS+mlD7JWuHHWa29971n+vN1wMP1B8CCiD08NDKw3nn1cuPamUAWR+9hTzmmHofPUjmmstqNQGf3UstcKlFFGbnnGP28sv1+9IbCCUBK6+sSMFszjk7gTr32KUEFGzuu+++WVCtB+4ee+yRBasKONXKegirpEaBt5oC+jPPPDMLZr/85S9nb8hXrs2HW2+9tYdyYxKgYPi4447r+dkxtTmn8h41Bft5wJyvBKjvd77zneznCq4VbOvNvdplteeDgvo8CVD9vxILlSflbfjw4fbPWrmhdFdZ0aqrrpr9SPerVQCVAamp35y1+bvQQgtlchT0622+2g9+8AO74IIL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QAACEIBAagggAlIzVDQUAhCAAAQgAAEIQAAC0RBABETDkaNAAAIQgAAEIAABCEAgNQQQAakZKhoKAQhAAAIQgAAEIACBaAhkSgREg4yjQAACEIAABCAAAQhAIN0EEAHpHj9aDwEIQAACEIAABCAAgcQT+M1SZ4lvJQ2EAAQgAAEIQAACEIAABCIj8CsRcNJJJ9m8efP8CbQsseaaa9o+++xjhx12WEEnXbBggR1zzDH2xz/+0Tp37lzQPmwEAQhAAAIQgAAEIAABCMRHoIII+PDDD23TTTe1U045xdZdd1376aef7MUXX7RJkybZ8OHD7ZxzzqmyZf/73//s3HPPtSuvvNLWW2+9KrevaoMvv/zS9txzT7vnnnusXbt2VW3uP6/OPgUdmI0gAAEIQAACEIAABCDw9ttmF19sdtllZpttlkoeFUTA6NGjrU+fPjZ37lxr1KhReYe22morW3/99e3xxx+v0Mn58+db48aNC+74Dz/8YKuttlre7ZcsWWI///yzNWjQoMLnd9xxhxclatMqq6xS4TOtOmj7+vXrF7yPzrNw4cIK/Su4A2wIAQhAAAIQgAAEIJBtAm4uabvuavbyy2Z33232+9+nkkcFEXDcccfZJ598Ys8//3yFzmy99da222672Q033OAn6kOHDrW///3vNmfOHNtwww29l75Dhw5+n0MPPdRat25tI0aMsJkzZ9o222xjF154oY0ZM8beeustW2ONNezee++1vffe22+v8yl0aMKECfbLL7/Yzjvv7I8nsbCZU1YSDpq0a7+JEyfadtttZw8//LBdcMEF9s4773hhoBAmte3bb7+tdB+1VSsUOraOt/vuu9uDDz5ozZo1S+XA0WgIQAACEIAABCAAgTogcN11ZtdfbyYx8Ic/mJvo5m+EPncOa+cxr7yR+nzllXM/+UyfhxzzfpMff8xtv9JKxXdebXLzYB2zggho1aqVnXDCCW5lwy1tlJkmykcccYS98sorPhznkEMOMa0AaJLfpEkT/5km7AoZkkBo2rSp43K9Y/IHJ47utqOPPtoOPPBAf0x57Lt162YdO3b0k3HlHmyxxRZ25JFH+gn6559/bvvuu6/fV0JDYT0SH8cee6ydfvrpXlxce+21dsUVV9jtt9/uj6N/zzjjDJs6daptvvnmefeZNWuW7bLLLv7c559/vt9mv/32s379+tkl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8wcRkPALguZBAALxEoj7Jhxv7zgbIoBrAAIQSCqBuJ8/iICkXgm0CwIQqBMCcd+E66STGT4pIiDDg0/XIZBwAnE/fxABCb8gaB4EIBAvgbhvwvH2jrMhArgGIACBpBKI+/mDCEjqlUC7IACBOiEQ9024TjqZ4ZMiAjI8+HQdAgknEPfzBxGQ8AuC5kEAAvESiOImvGjRIttss81+1fCVVlrJ1lxzTdtuu+3sxBNPtF122SXezqXwbPvvv7+9++671qBBA5s2bVqNe4AIqDFCDgABCNQSgSieP8U0DRFQDC22hQAESp5AFDfhhQsX2qqrrlolq759+9qIESOq3C7LG/zud7+zqVOnehEgrjU1REBNCbI/BCBQWwSieP4U0zZEQDG02BYCECh5AlHchMMiQJ7/o48+2nP76aefvDf73//+dznHm266yU4++eSS51rdDiICqkuO/SAAgbQRiOL5U0yfEQHF0GJbCECg5AlEcRMOi4CtttrK3n777Qrcxo4da8cff7z/2/bbb2+vvfZayXOtbgcRAdUlx34QgEDaCETx/Cmmz4iAYmixLQQgUPIEorgJVyUCBHGttdayr7/+2lZeeWW/QhDYjz/+aLfccos98MAD9vnnn1uzZs1s7733trPPPtvnE8i+/fZbn1cg23XXXa1+/fo+ZOaHH36wNdZYwzp37mx/+tOfbO7cuXbttdfa888/b/PmzbMNN9zQi4/jjjvuV+M4ZcoUu+GGG/xx5s+fbxtttJEdfvjhdsIJJ/jjL1682HbccUf75ptvfJteffVVq1evXvlxbr31Vrvooov87/r3pJNO8v/X8dSGN954w/dziy22sF69etl+++1XoQ1Llizx/b7zzjvt008/9eFU2267rT333HP+d8KBSv6rRwchkHkCUTx/ioGICCiGFttCAAIlTyCKm3AhImCdddaxmTNnWsOGDW3BggWm837xxRd24IEH2ptvvvkrzq1atbJnn33WT86/+uora968+QrHYvPNN7ePP/7YlKS8vEkgXHbZZeV/vuKKK+zPf/6zLV269Ffb7rbbbvbwww9bkyZN7LTTTrNRo0b5bdQWiY3A9tprL3v66ae9MPjss89s3XXX9ZP/c845xwuI5U3nGzJkiP+zBIAEx4MPPlhpn+IQARJKN954o/Xv37/kr3M6CAEIJI9AFM+fYnqFCCiGFttCAAIlTyCKm3BVIuCRRx7xk33ZDjvsYPLCayKsSbW89rKddtrJOnbsaC+//LL/kXXp0sWeeeaZX4kAefi7du1qc+bMsX/961/+WIG1adPGryRIYDz66KN+or/KKqvYl19+6T36mnj36NHDb66/H3rooda0aVObMGGCn8zLDjvsMLvvvvvshRdeMIkC2emnn24jR470/9d5JWo02de5Jk6caI8//ni5t3+11Vazo446ygudu+66y69YyNQX9UnJ0f369fN/kyhSRaDVV1/dxo8f71ceZLUpAjT5v/zyy2348OF+1UOrMRgEIACBuAlE8fwpps2IgGJosS0EIFDyBKK4CYdFQMuWLcs9ywqHeeedd+zee++1X375xbO844477JhjjvHe9oMOOsj/TSE4Y8aM8ZNmTdoPOOAAP4GXqVymVgGClYCNN97Yh9xooi279NJLbfDgwf7/m266qV9VaNSokf9dCcg333yz//9jjz1m++67r22zzTY+Z0Hnkidfk3KZJt+a8L/33nv+99dff92HIG2yySY2ffp0W3vttb2Q0KRZ3vPevXv77dRulT9t3769z3XQuSVidB7ZSy+95EOY1K8jjzzS7rnnHmvdurUXHCqhqhUGfS7T39q1a+fDn2pDBEiAafJ/zTXX+PaoL1oVUegVBgEIQCBuAlE8f4ppMyKgGFpsCwEIlDyBKG7ChZYIPeOMM+y6667zTMMTdIXJaNIsj7zCcJ544gk777zz/HaKm9cqQiACJBAkIAJ78skn/aqATKE48m4HFva4S3xotUGTepkEgYRB2MIJzGqTQnguvvhiu+SSS/xmOpfCgHQ+/V8TfoU4fffdd6bwJZmEw4UXXuj7EfRHqwXKd9hggw38fhIrMuUJBGInaEdtJAZrJUb9v//++/3kP8jJ0MqIQq0wCEAAAnVBIIrnTzHtrlMRII/TpEmTimkv20IAAhCodQL5YuOLOWkhIiAcTqNj77nnnj48piq78sorrWfPnpWKAHnS99hjD3+Y888/34YOHVp+SAmOs846y/9+++23+xAeTchlAwYMsGHDhlU4vVYIAg++knlHjx7tVwEC4XDKKad4T7qOo5UNrWhocq0SqOF8gcr6pORfhR0F7T333HPtqquuqrB5bYiATp062Ysvvli+GlMVcz6HAAQgEAcB3Td1D4/L6lQExNVJzgMBCECgUAJR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)
8
+
9
+ _Displayed in red are those transitions that can only be administered by a manager._
10
+
11
+ ### Draft:
12
+ The initial status after creating a new relationship. You are able to modify and directly delete the relationship in this status. After checking if the information you provided is correct you can either submit the relationship for review by a manager or directly approve the relationship if you yourself are a manager.
13
+
14
+ ### Pending Add:
15
+ Displays the pending requests to add a relationship. The request can no longer be modified from here on. This status only concerns managers as only they have the permissions to approve or deny any requests. After denial the request returns to its prior draft status and can once again be modified and submitted or deleted.
16
+
17
+ ### Approved:
18
+ After approval by a manager this is the status of the relationship. Exclusively approved relationships are the ones displayed under "Your Clients/Prospects/Contacts" and "Your contact". Only if a relationship is non-primary it is possible to request to a) make the relationship primary or b) remove the relationship. Both options create a pending (add/remove) request that again needs to be approved by a manager. As a consequence, when trying to remove a primary relationship one needs to first approve a different primary relationship manager for the client making the old relationship non-primary and removable. The only exception to this is when the primary relationship manager is the only manager for its client. In this case you can request their removal.
19
+
20
+ ### Pending Remove:
21
+ Displays requests to remove a relationship. This is the second status that only concerns managers as they have the relevant permissions. If a remove request is denied the relationship switches back to its prior approved status.
22
+
23
+ ### Removed:
24
+ The status after approval of a remove request that serves as a history of recent client manager relationships. From here it is possible to directly delete the relationship or reinstate it which creates a pending add request.
25
+
26
+ ## Columns:
27
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
28
+
29
+ ### Client:
30
+ The name of the external client. The client can be either a company or an individual person. Hover over the name to display more information about the client.
31
+
32
+ ### Relationship Manager:
33
+ The name of the internal employee in charge of the client. Hover over the name to display more information about the person.
34
+
35
+ ### Created:
36
+ Timestamp at which the relationship between client and manager was created.
37
+
38
+ ## Legend:
39
+ Click on the legend to filter by relationship status (see workflow) or primary relationship manager.
40
+
41
+ ## Search Field:
42
+ Typing in the search field allows to filter the relationships by the client's or the manager's name.
@@ -0,0 +1,52 @@
1
+ # Companies
2
+ A list of every company saved in the database.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The name of the company.
9
+
10
+ ### City:
11
+ The city of the company's primary address. Hover over the name to display the full address.
12
+
13
+ ### Type:
14
+ The company's type. Company types can be added, edited and deleted by managers under CRM > Administration > Company Types.
15
+
16
+ ### Tier:
17
+ The company's tier. Tiers range from 1 to 5 and are automatically computed.
18
+
19
+ ### Status:
20
+ The company's status. Company statuses can be added, edited and deleted by managers under CRM > Administration > Customer Status.
21
+
22
+ ### Primary Relationship Manager:
23
+ The primary relationship manager of this company. Hover over the name to display further information about the person.
24
+
25
+ ### Last Activity:
26
+ The name and end date of the company's last activity. Hover over it to display further information about the activity. Column can also be ordered by end date of the activity.
27
+
28
+ ### Activity Heat:
29
+ A visual representation of the company's activeness. The data representation ranges from 0 to 1 which needs to be kept in mind to be able to apply a proper filter to the column.
30
+
31
+ ## Filters:
32
+
33
+ ### No Activity:
34
+ Filter companies with no activity for x amount of time.
35
+
36
+ ### Companies' Employee:
37
+ Display employers of the selected person.
38
+
39
+ ## Search Field:
40
+ Typing in the search field allows to filter the companies by name.
41
+
42
+ ## Buttons:
43
+ You can right-click each row to reveal three buttons:
44
+
45
+ ### Activities:
46
+ Displays activities for the row's company.
47
+
48
+ ### Employees:
49
+ Displays a list of the company's employees.
50
+
51
+ ### Relationship Managers:
52
+ Displays all relationship managers of the row's company.
@@ -0,0 +1,2 @@
1
+ # Company Types
2
+ This is a list of every company type in the database where you can modify, delete and add new company types. Typing in the search field or the column filter accessible from the three lines at the end of the column title filters the company types by name. Click on the column title to order it.
@@ -0,0 +1,2 @@
1
+ # Customer Statuses
2
+ This is a list of every customer status in the database where you can modify, delete and add new customer statuses. Typing in the search field or the column filter accessible from the three lines at the end of the column title filters the customer statuses by name. Click on the column title to order it.
@@ -0,0 +1,20 @@
1
+ # Email Contacts
2
+ A list of email contacts for the selected person/company saved in the database. Email contacts will also include data from a person's primary employer. If the person has no primary employer it will include email addresses from every one of its employers.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Location:
8
+ The contact's location of use. Can be one of four locations: Work, Private, Home or Other. Work will be selected by default when creating a new contact.
9
+
10
+ ### Email address:
11
+ The email adress.
12
+
13
+ ## Primary Functionality:
14
+ Primary email contacts cannot be deleted unless they are the entry's last email contact. You need to make one of the other contacts their primary email contact before being able to delete that contact.
15
+
16
+ ## Legend:
17
+ Click on the legend to filter primary email contacts. When displaying email contacts of a person you can also filter contacts belonging to the person's employer(s) by clicking on the legend "Company Contact".
18
+
19
+ ## Search Field:
20
+ Typing in the search field allows to filter the email contacts by their address.
@@ -0,0 +1,34 @@
1
+ # Employees
2
+ A list of employees for the selected company. For more details on how to add/delete employees see section "Buttons".
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The employee's first and last name.
9
+
10
+ ### Position:
11
+ The position of the employee within his company. Positions can be added, edited and deleted by managers under CRM > Administration > Company Positions.
12
+
13
+ ### Primary Relationship Manager:
14
+ Displays the primary relationship manager of the employee. Hover over the name to display more information about the person.
15
+
16
+ ### Primary Telephone:
17
+ The employee's primary telephone number.
18
+
19
+ ### Primary Email:
20
+ Primary email address of the employee.
21
+
22
+ ## Legend:
23
+ Click on the legend to filter for employees where the selected company is their primary employer.
24
+
25
+ ## Buttons:
26
+ To add employees to the company the person needs to already exist in the database. Use the custom button labeled "New Person" at the top of the list if you need to create a new person and return to this view. Now you are able to add the person to the company by pressing the green plus button. Deleting an employee (but not the person) can be achieved by using the trash button at the end of the row if the company is a) not the employee's primary employer or b) the employee's only employer. If the employee has several employers you need to first make one of the other employers primary to be able to see the delete button. The button below the trash icon shwowing a group of persons can be used to modify the relationship, e.g. make it primary or modify the employee's position within the company.
27
+
28
+ ## Filters:
29
+
30
+ ### No Activity:
31
+ Filter employees with no activity for x amount of time.
32
+
33
+ ## Search Field:
34
+ Typing in the search field allows to filter the employees by name.
@@ -0,0 +1,43 @@
1
+ # Employers
2
+ A list of employers for the selected person. For more details on how to add/delete employers see section "Buttons".
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The employer's first and last name.
9
+
10
+ ### Position in Company:
11
+ The person's position within its company. Positions can be added, edited and deleted by managers under CRM > Administration > Company Positions.
12
+
13
+ ### City:
14
+ The city where the employer is located. Hover over the name to display the detailed address.
15
+
16
+ ### Type:
17
+ The company type of the employer. Company types can be added, edited and deleted by managers under CRM > Administration > Company Types.
18
+
19
+ ### Tier:
20
+ The employer's tier. Tiers range from 1 to 5 and are automatically computed.
21
+
22
+ ### Status:
23
+ The employer's status. Company statuses can be added, edited and deleted by managers under CRM > Administration > Customer Status.
24
+
25
+ ### Primary Relationship Manager:
26
+ Displays the primary relationship manager of the employer. Hover over the name to display more information about the person.
27
+
28
+ ## Legend:
29
+ Click on the legend to filter for primary employers.
30
+
31
+ ## Buttons:
32
+ To add employers to the person the company needs to already exist in the database. Use the custom button labeled "New Company" at the top of the list if you need to create a new company and return to this view. Now you are able to add the company to the person by pressing the green plus button. Deleting an employer (but not the company) can be achieved by using the trash button at the end of the row if the company is a) not the person's primary employer or b) the person's only employer. If the person has several employers you need to first make one of the other employers primary to be able to see the delete button. The button below the trash icon shwowing a group of persons can be used to modify the relationship, e.g. make it primary or modify the person's position within their employer.
33
+
34
+ ## Filters:
35
+
36
+ ### No Relationship Manager:
37
+ Filter employers by if they have a relationship manager.
38
+
39
+ ### No Activity:
40
+ Filter employees with no activity for x amount of time.
41
+
42
+ ## Search Field:
43
+ Typing in the search field allows to filter the employers by name.
@@ -0,0 +1,61 @@
1
+ # Persons
2
+ A list of every person saved in the database.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The first and last name of the person.
9
+
10
+ ### Primary Employer:
11
+ The primary employer of the person.
12
+
13
+ ### Status:
14
+ The primary employer's status. Company statuses can be added, edited and deleted by managers under CRM > Administration > Customer Status.
15
+
16
+ ### Position:
17
+ The position of the person within its primary employer. Positions can be added, edited and deleted by managers under CRM > Administration > Company Positions.
18
+
19
+ ### City:
20
+ The city of the person's primary address. Hover over the name to display the full address.
21
+
22
+ ### Primary Phone Number:
23
+ The person's primary phone number.
24
+
25
+ ### Tier:
26
+ The person's primary employer's tier. Tiers range from 1 to 5 and are automatically computed.
27
+
28
+ ### Primary Relationship Manager:
29
+ The primary relationship manager of this person. Hover over the name to display further information about the person.
30
+
31
+ ### Last Activity:
32
+ The name and end date of the person's last activity. Hover over it to display further information about the activity. Column can also be ordered by end date of the activity.
33
+
34
+ ### Activity Heat:
35
+ A visual representation of the person's activeness. The data representation ranges from 0 to 1 which needs to be kept in mind to be able to apply a proper filter to the column.
36
+
37
+ ## Filters:
38
+
39
+ ### Specializations:
40
+ Filter persons by their specializations.
41
+
42
+ ### No Activity:
43
+ Filter persons with no activity for x amount of time.
44
+
45
+ ### Has User Account:
46
+ Filter persons by if they have a user account on the workbench.
47
+
48
+ ### Email:
49
+ Filter persons by their email address.
50
+
51
+ ## Search Field:
52
+ Typing in the search field allows to filter the persons by name.
53
+
54
+ ## Buttons:
55
+ Each row can be right-clicked to reveal two buttons at the end of it.
56
+
57
+ ### Activities:
58
+ Displays all activities for the row's person.
59
+
60
+ ### Relationship Managers:
61
+ Displays all relationship managers of the row's person.
@@ -0,0 +1,2 @@
1
+ # Company Positions
2
+ This is a list of every company position in the database where you can modify, delete and add new company positions. Typing in the search field or the column filter accessible from the three lines at the end of the column title filters the company positions by name. Click on the column title to order it.
@@ -0,0 +1,2 @@
1
+ # Relationship Types
2
+ This is a list of every relationship type in the database where you can modify, delete and add new types. You can also add a counter relationship (e.g. parent <> child) for an already existing relationship type. Typing in the search field or the column filter accessible from the three lines at the end of the column title filters the relationship types by name. Click on the column title to order it.
@@ -0,0 +1,23 @@
1
+ # Social Media
2
+ A list of social media accounts for the selected person/company saved in the database. This will also include accounts from a person's primary employer. If the person has no primary employer it will include social media accounts from every one of its employers.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Platform:
8
+ The account's platform. Can be one of the following: Facebook, Instagram, LinkedIn, Reddit, TikTok, Tumblr, Twitter or Xing.
9
+
10
+ ### Location:
11
+ The account's location of use. Can be one of four locations: Work, Private, Home or Other. Work will be selected by default when creating a new contact.
12
+
13
+ ### URL:
14
+ The social media account's url.
15
+
16
+ ## Primary Functionality:
17
+ Primary social media accounts cannot be deleted unless they are the entry's last account. You need to make one of the other accounts their primary account before being able to delete it.
18
+
19
+ ## Legend:
20
+ Click on the legend to filter primary social media accounts. When displaying social media accounts of a person you can also filter accounts belonging to the person's employer(s) by clicking on the legend "Company Contact".
21
+
22
+ ## Search Field:
23
+ Typing in the search field allows to filter the social media accounts by their platform.
@@ -0,0 +1,2 @@
1
+ # Specializations
2
+ This is a list of every specialization in the database where you can modify, delete and add new specializations. Typing in the search field or the column filter accessible from the three lines at the end of the column title filters the specializations by name. Click on the column title to order it.
@@ -0,0 +1,31 @@
1
+ # Employees:
2
+ A list of every employee working at the main (internal) company.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The employee's first and last name.
9
+
10
+ ### Position:
11
+ The position of the employee within the company. Positions can be added, edited and deleted by managers under CRM > Administration > Company Positions.
12
+
13
+ ### Primary Relationship Manager:
14
+ Displays the primary relationship manager of the employee. Hover over the name to display more information about the person.
15
+
16
+ ### Primary Telephone:
17
+ The employee's primary telephone number.
18
+
19
+ ## Legend:
20
+ Click on the legend to filter for employees where the main company is their primary employer.
21
+
22
+ ## Filters:
23
+
24
+ ### No Activity:
25
+ Filter employees with no activity for x amount of time.
26
+
27
+ ### Primary Email:
28
+ Filter employees by their primary email address.
29
+
30
+ ## Search Field:
31
+ Typing in the search field allows to filter the employees by name.
@@ -0,0 +1,23 @@
1
+ # Telephone Contacts
2
+ A list of telephone contacts for the selected person/company saved in the database. Telephone contacts will also include data from a person's primary employer. If the person has no primary employer it will include contacts from every one of its employers.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Location:
8
+ The contact's location of use. Can be one of four locations: Work, Private, Home or Other. Work will be selected by default when creating a new contact.
9
+
10
+ ### Type:
11
+ The telephone's type. Can be one of four types: Fix, Cell, Fax or Other. Fix will be selected by default.
12
+
13
+ ### Number:
14
+ The telephone number.
15
+
16
+ ## Primary Functionality:
17
+ Primary telephone contacts cannot be deleted unless they are the entry's last telephone contact. You need to make one of the other contacts their primary telephone contact before being able to delete that contact.
18
+
19
+ ## Legend:
20
+ Click on the legend to filter primary telephone contacts. When displaying telephone contacts of a person you can also filter contacts belonging to the person's employer(s) by clicking on the legend "Company Contact".
21
+
22
+ ## Search Field:
23
+ Typing in the search field allows to filter the telephone contacts by their number.
@@ -0,0 +1,26 @@
1
+ # Telephone Contacts By Number
2
+ A list of telephone contacts saved in the database.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Number:
8
+ The telephone number.
9
+
10
+ ### Type:
11
+ The telephone's type. Can be one of four types: Fix, Cell, Fax or Other. Fix will be selected by default.
12
+
13
+ ### Entry:
14
+ The entry to which the telphone number is assigned.
15
+
16
+ ## Search Field:
17
+ Typing in the search field allows to filter the telephone contacts by their number and by the name of the entry they are assigned to.
18
+
19
+ ## Buttons:
20
+ Each row can be right-clicked to reveal more options.
21
+
22
+ ### List Of Activities:
23
+ Displays a list of activities for the entry of the chosen row.
24
+
25
+ ### Create New Call Activity:
26
+ Creates a new call activity for the row's entry.
@@ -0,0 +1,14 @@
1
+ # Your Contacts
2
+ A list of approved relationship managers for you.
3
+
4
+ ## Columns:
5
+ Click on the column title to order the column. Hold shift while clicking to order multiple columns with individual weight.
6
+
7
+ ### Name:
8
+ The manager's first and last name.
9
+
10
+ ### Telephone:
11
+ The manager's primary telephone number.
12
+
13
+ ### Email:
14
+ The manager's primary email address.
@@ -0,0 +1,28 @@
1
+ # Your Clients/Prospects/Contacts
2
+ A list of entries for which you are the approved relationship manager.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The client's name.
9
+
10
+ ### Primary Telephone:
11
+ The client's primary telephone number.
12
+
13
+ ### Primary Email:
14
+ The primary email address for the client.
15
+
16
+ ### Primary Address:
17
+ The client's primary address.
18
+
19
+ ## Buttons:
20
+ Each row can be right-clicked to reveal a button labeled "See entry" which will redirect you to the entry instance.
21
+
22
+ ## Filters:
23
+
24
+ ### No Activity:
25
+ Filter clients with no activity for x amount of time.
26
+
27
+ ## Search Field:
28
+ Typing in the search field allows to filter the clients by name.