ethyca-fides 2.66.2rc0__py2.py3-none-any.whl → 2.67.0rc0__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.

Potentially problematic release.


This version of ethyca-fides might be problematic. Click here for more details.

Files changed (326) hide show
  1. {ethyca_fides-2.66.2rc0.dist-info → ethyca_fides-2.67.0rc0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.66.2rc0.dist-info → ethyca_fides-2.67.0rc0.dist-info}/RECORD +292 -279
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/7e9a2b52f498_adding_masking_secrets.py +60 -0
  5. fides/api/alembic/migrations/versions/a7065df4dcf1_add_finalized_fields_to_privacy_request.py +65 -0
  6. fides/api/alembic/migrations/versions/d0031087eacb_create_manualtaskconditionaldependency_.py +106 -0
  7. fides/api/api/v1/endpoints/dataset_config_endpoints.py +13 -5
  8. fides/api/api/v1/endpoints/drp_endpoints.py +7 -1
  9. fides/api/api/v1/endpoints/privacy_request_endpoints.py +44 -1
  10. fides/api/api/v1/endpoints/user_endpoints.py +83 -7
  11. fides/api/app_setup.py +3 -2
  12. fides/api/common_exceptions.py +4 -0
  13. fides/api/db/base.py +1 -0
  14. fides/api/db/database.py +1 -1
  15. fides/api/graph/execution.py +30 -0
  16. fides/api/graph/graph.py +13 -2
  17. fides/api/graph/traversal.py +126 -39
  18. fides/api/models/manual_task/__init__.py +2 -0
  19. fides/api/models/manual_task/conditional_dependency.py +144 -0
  20. fides/api/models/{manual_task.py → manual_task/manual_task.py} +10 -0
  21. fides/api/models/masking_secret.py +72 -0
  22. fides/api/models/policy.py +23 -0
  23. fides/api/models/privacy_request/execution_log.py +1 -0
  24. fides/api/models/privacy_request/privacy_request.py +31 -13
  25. fides/api/oauth/roles.py +2 -0
  26. fides/api/schemas/application_config.py +11 -1
  27. fides/api/schemas/masking/masking_secrets.py +1 -1
  28. fides/api/schemas/policy.py +1 -0
  29. fides/api/schemas/privacy_request.py +5 -0
  30. fides/api/service/connectors/base_connector.py +1 -0
  31. fides/api/service/connectors/bigquery_connector.py +67 -19
  32. fides/api/service/connectors/dynamodb_connector.py +2 -1
  33. fides/api/service/connectors/fides_connector.py +1 -0
  34. fides/api/service/connectors/http_connector.py +1 -0
  35. fides/api/service/connectors/manual_task_connector.py +1 -0
  36. fides/api/service/connectors/manual_webhook_connector.py +2 -1
  37. fides/api/service/connectors/mongodb_connector.py +1 -0
  38. fides/api/service/connectors/okta_connector.py +1 -0
  39. fides/api/service/connectors/query_configs/bigquery_query_config.py +91 -32
  40. fides/api/service/connectors/rds_mysql_connector.py +1 -0
  41. fides/api/service/connectors/rds_postgres_connector.py +1 -0
  42. fides/api/service/connectors/s3_connector.py +1 -0
  43. fides/api/service/connectors/saas_connector.py +1 -0
  44. fides/api/service/connectors/scylla_connector.py +1 -0
  45. fides/api/service/connectors/sql_connector.py +36 -4
  46. fides/api/service/connectors/website_connector.py +1 -0
  47. fides/api/service/privacy_request/dsr_package/templates/welcome.html +2 -2
  48. fides/api/service/privacy_request/request_runner_service.py +142 -53
  49. fides/api/service/privacy_request/request_service.py +1 -22
  50. fides/api/task/conditional_dependencies/__init__.py +0 -0
  51. fides/api/task/conditional_dependencies/evaluator.py +109 -0
  52. fides/api/task/conditional_dependencies/schemas.py +54 -0
  53. fides/api/task/create_request_tasks.py +1 -1
  54. fides/api/task/deprecated_graph_task.py +24 -6
  55. fides/api/task/execute_request_tasks.py +89 -12
  56. fides/api/task/filter_results.py +1 -1
  57. fides/api/task/graph_task.py +38 -3
  58. fides/api/task/manual/manual_task_address.py +46 -0
  59. fides/api/task/manual/manual_task_graph_task.py +118 -126
  60. fides/api/task/manual/manual_task_utils.py +52 -105
  61. fides/api/util/aws_util.py +5 -1
  62. fides/api/util/cache.py +5 -0
  63. fides/api/util/encryption/secrets_util.py +48 -18
  64. fides/common/api/scope_registry.py +3 -0
  65. fides/common/api/v1/urn_registry.py +1 -1
  66. fides/config/execution_settings.py +4 -0
  67. fides/config/utils.py +1 -0
  68. fides/service/privacy_request/privacy_request_service.py +6 -1
  69. fides/ui-build/static/admin/404.html +1 -1
  70. fides/ui-build/static/admin/_next/static/GKmhMPa_1gMto8JZO8ENy/_buildManifest.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/1316-2606e19807c08aa5.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/1467-8808ec8836e033f9.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/1817-b78b58ae3b75d75a.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/1975.7d4634a0e823a02b.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/{203-5a663f465ba26bb4.js → 203-cd78ea279cecba60.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/2150-930ffaf2c4718edc.js +1 -0
  77. fides/ui-build/static/admin/_next/static/chunks/255-1bc0cbef7a59cdc6.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/{3450-0ba194991d0cca88.js → 3450-ca4ba70da999f264.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/346-aa3b88efb85f2e28.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/3550-d04125c828d591a1.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/{3855-e172870d3e21b0dd.js → 3855-509ca7ac99b5eada.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/{3872-46cebf7ec1b31a2b.js → 3872-0a0f0032ca39a93f.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/409-ea70638a59296659.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/{4121-2bc09fc4ddbfe5cb.js → 4121-877e19d3fa078c7b.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/{4230-60100f7ef3ddcde1.js → 4230-114e31621c19ea69.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/4259.d1507e0db19cbed7.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/431-1db919f6569a4021.js +1 -0
  88. fides/ui-build/static/admin/_next/static/chunks/{4608-bbb7bf511a05c3c2.js → 4608-43acf39319177bee.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/5163-e682273cd76a7d07.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/{5309-b2c4803370634ff8.js → 5309-ce5702b9faeaff55.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/{905-ffdbd0b14167e8bd.js → 5596-4378b2927dae65b2.js} +3 -3
  92. fides/ui-build/static/admin/_next/static/chunks/5619-9b50cec521203989.js +1 -0
  93. fides/ui-build/static/admin/_next/static/chunks/{6084-7178ff6ea6822475.js → 6084-ddbad3149364725d.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/6148-59a59d5c5925344f.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/6419-d0c00d661b01f8fa.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/{6662-507be5d46e5b719b.js → 6662-4392ba1e4c254ef7.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/6780-fc7d9ddb1a03e7b3.js +1 -0
  98. fides/ui-build/static/admin/_next/static/chunks/{6853-2ad3e08fe6f9f5f2.js → 6853-d0190d2cca9dbde2.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/{6882-6af16fef26c21e06.js → 6882-59ea739e3616ce83.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/6954-9c4912fbce87c4df.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/{7476-281ee9a8286556f3.js → 7476-cc0d9a94ed7aad53.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/{787-fb41002f797eb2df.js → 787-c57185ad89c4e288.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/{79-7e87aff851423d4a.js → 79-2aab56be75e16187.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/{796-329a5f823ec258a5.js → 796-3bdda2a7868464af.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/8237-841439bef6682177.js +1 -0
  106. fides/ui-build/static/admin/_next/static/chunks/8765-f622a35b40a7ec63.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/{9046-5c4c22c375de25b1.js → 9046-04a8c092fef1cd83.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/9187-7438242f0d380bb0.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/{9226-746771d47dff6266.js → 9226-2dcac54ab3fb94be.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/9278-08cc704317fe535e.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/{9951-9b753ad7c3f51bdf.js → 9951-7c6639e5d062779e.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-39ccb07327c2c5d5.js → _app-4b5bff46158a19a3.js} +56 -56
  113. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-98777246bec9dc2a.js → manual-2a655ff3a97f2492.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-a71c0aff4e0e6535.js → add-systems-0902f0bb4080643e.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-1edf582ba3cd3bbb.js → [id]-f22ddd9b48a5c418.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-06bb3b0bf097fcdb.js → new-e74cb5ea87f15b40.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-685771e5f7196d87.js → privacy-experience-21f997c69fc3b4c2.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-6ccedc70dc447089.js → [id]-da4124b7600a2a1d.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-944bca1cc57985b5.js → new-a57d251c88ce68ae.js} +1 -1
  120. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-84f4bd14ce8673bc.js → privacy-notices-ad105181bc91209b.js} +1 -1
  121. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-b0c4235fe6d0b0c8.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-11d52f1570759c4d.js → [resourceUrn]-aad6047a4604b945.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-32eac8bbd217615a.js → projects-29784a11fe0fbd0a.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-b83afa5565d0c84e.js → [resourceUrn]-b6b98cea25dd94fa.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-6f630d42ac9fb6b4.js → data-catalog-d5b01abcb76792ce.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-7caea7bb58c1f153.js +1 -0
  127. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-a9a70856f7be1542.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-9ddb52ebb7ac4c71.js → action-center-1f0ea5c92ae9a2b4.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-9aa744d56cdacb0d.js → activity-ad6a84a6276f914c.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-14bd7500362ff224.js → [resourceUrn]-f98dd251babb7e28.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-9e7dfd5a6acc2e8f.js → discovery-56eb4c014f0d96a3.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-d23b3ae139f0428b.js +1 -0
  133. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-c0d2bfd465df20e0.js → [...subfieldNames]-15301bd6bf7cf718.js} +1 -1
  134. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-28280a8a39a6e37c.js → [collectionName]-0fa72873e464f581.js} +1 -1
  135. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-82fb246d87e58ebd.js → new-0d50084fbdf9b84c.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-20165c31ab1bc7cf.js → dataset-f3348d0a92543bab.js} +1 -1
  137. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-b4a6bcc87d126840.js → [id]-7d6027570d05c57f.js} +1 -1
  138. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-f95d7b0bbfc58f5a.js → new-8446418c7ad28f77.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/pages/{fides-js-docs-5d8fd1af75f19e2f.js → fides-js-docs-1f4335dca5c09860.js} +1 -1
  140. fides/ui-build/static/admin/_next/static/chunks/pages/{index-1919aab9e5834b51.js → index-fbf9b845bb901238.js} +1 -1
  141. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-0a58aee2d1e7fa01.js → [id]-f53fe1f2cbebda7c.js} +1 -1
  142. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-e2d5d7e2a5265e68.js → integrations-142abe3e3e3e5bf7.js} +1 -1
  143. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-1bae386d8c190348.js +1 -0
  144. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-69ad86b7a8a9a115.js → table-migration-05616e2ae20ff4f8.js} +1 -1
  145. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-1b6b0d703cf59389.js +1 -0
  146. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-f1d818242d8550f8.js +1 -0
  147. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-d40a26bddb126c5c.js +1 -0
  148. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-ccd8d9e06cf2d278.js +1 -0
  149. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-fd1a67892056830a.js +1 -0
  150. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-fc201657f4a782c7.js → [purpose_id]-e891d01ece59669e.js} +1 -1
  151. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-c2d39cba8396ef3a.js → consent-f61b87e79367865b.js} +1 -1
  152. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-d992103cc55901ae.js → custom-fields-f8eea5d508c60c64.js} +1 -1
  153. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-023e1895552817de.js → locations-ed6a140b362c5baa.js} +1 -1
  154. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-ac403c0886b20e20.js → organization-ff9a34264d48c35f.js} +1 -1
  155. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-7a3396ac819c7904.js → test-datasets-a4b6d41ca679298b.js} +1 -1
  156. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-8314a819837f5b2a.js → [id]-c8f5fbaa83dd9945.js} +1 -1
  157. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-21f423a7c417aa9d.js → systems-c05b49ddec1a1b4f.js} +1 -1
  158. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-df0d88716578e295.js +1 -0
  159. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-da68efc31998dc66.js +1 -0
  160. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-173ac3a1ed2b05a6.js → user-management-e98dfc7d4f2a4e16.js} +1 -1
  161. fides/ui-build/static/admin/_next/static/chunks/webpack-90e8ec1fc5c6455b.js +1 -0
  162. fides/ui-build/static/admin/_next/static/css/{5bfb2473e5701527.css → 23cf870196941c9a.css} +1 -1
  163. fides/ui-build/static/admin/_next/static/css/{94965f224bc991e9.css → 8bc1833f1fa53ff0.css} +1 -1
  164. fides/ui-build/static/admin/_next/static/css/d9924caa849931b3.css +1 -0
  165. fides/ui-build/static/admin/_next/static/css/dbcf63488933a4d5.css +29 -0
  166. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  167. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  168. fides/ui-build/static/admin/add-systems.html +1 -1
  169. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  170. fides/ui-build/static/admin/consent/configure.html +1 -1
  171. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  172. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  173. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  174. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  175. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  176. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  177. fides/ui-build/static/admin/consent/properties.html +1 -1
  178. fides/ui-build/static/admin/consent/reporting.html +1 -1
  179. fides/ui-build/static/admin/consent.html +1 -1
  180. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  181. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  182. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  183. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  184. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  185. fides/ui-build/static/admin/data-catalog.html +1 -1
  186. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  187. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  188. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  189. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  190. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  191. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  192. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  193. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  194. fides/ui-build/static/admin/datamap.html +1 -1
  195. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  196. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  197. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  198. fides/ui-build/static/admin/dataset/new.html +1 -1
  199. fides/ui-build/static/admin/dataset.html +1 -1
  200. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  201. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  202. fides/ui-build/static/admin/datastore-connection.html +1 -1
  203. fides/ui-build/static/admin/index.html +1 -1
  204. fides/ui-build/static/admin/integrations/[id].html +1 -1
  205. fides/ui-build/static/admin/integrations.html +1 -1
  206. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  207. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  208. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  209. fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
  210. fides/ui-build/static/admin/lib/fides.js +3 -3
  211. fides/ui-build/static/admin/login/[provider].html +1 -1
  212. fides/ui-build/static/admin/login.html +1 -1
  213. fides/ui-build/static/admin/messaging/[id].html +1 -1
  214. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  215. fides/ui-build/static/admin/messaging.html +1 -1
  216. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  217. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  218. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  219. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  220. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  221. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  222. fides/ui-build/static/admin/poc/forms.html +1 -1
  223. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  224. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  225. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  226. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  227. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  228. fides/ui-build/static/admin/privacy-requests.html +1 -1
  229. fides/ui-build/static/admin/properties/[id].html +1 -1
  230. fides/ui-build/static/admin/properties/add-property.html +1 -1
  231. fides/ui-build/static/admin/properties.html +1 -1
  232. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  233. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  234. fides/ui-build/static/admin/settings/about.html +1 -1
  235. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  236. fides/ui-build/static/admin/settings/consent.html +1 -1
  237. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  238. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  239. fides/ui-build/static/admin/settings/domains.html +1 -1
  240. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  241. fides/ui-build/static/admin/settings/locations.html +1 -1
  242. fides/ui-build/static/admin/settings/organization.html +1 -1
  243. fides/ui-build/static/admin/settings/regulations.html +1 -1
  244. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  245. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  246. fides/ui-build/static/admin/systems.html +1 -1
  247. fides/ui-build/static/admin/taxonomy.html +1 -1
  248. fides/ui-build/static/admin/user-management/new.html +1 -1
  249. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  250. fides/ui-build/static/admin/user-management.html +1 -1
  251. fides/ui-build/static/admin/_next/static/8108ANFxs99VY7KZ_Xev2/_buildManifest.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/1316-6cc72a45ebf7ff81.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/1817-e601e737e3cc7a0e.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/255-7db55b0e3a0f9dea.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/2599-6c4d22e75028d8b6.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/2858-0b44609b6be7850b.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/2866-a73888c17a195cbe.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/409-a257e14acebcd73b.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/431-34f0b91c26f8d9ab.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/6780-e3d40aa17a4bf2e9.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/6954-bb875d9ac89f6030.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/7062.fda15dcb7df85675.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/7c79804f.7a7112aece470725.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/9278-9b1b5970f0702668.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/9392.f4520f66206d347d.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/ea076c0a.84423f606aef37cd.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-afdbd4665657cfa1.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-2265ecb899d45fbc.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-5d522637871ac6c8.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-7674b97d655c193b.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-5094ffea13f32ed9.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-32600543eb7b584f.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-10ce53ea356f8bad.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-5501bbb129fee9c4.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-cbe4c8f9096b6543.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-e130c0197362e8f3.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-6387fcc8cce872eb.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-ff5738706da07801.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/webpack-ff0cd6bff75588da.js +0 -1
  284. fides/ui-build/static/admin/_next/static/css/2cadb5f62dcd7c2b.css +0 -1
  285. {ethyca_fides-2.66.2rc0.dist-info → ethyca_fides-2.67.0rc0.dist-info}/WHEEL +0 -0
  286. {ethyca_fides-2.66.2rc0.dist-info → ethyca_fides-2.67.0rc0.dist-info}/entry_points.txt +0 -0
  287. {ethyca_fides-2.66.2rc0.dist-info → ethyca_fides-2.67.0rc0.dist-info}/licenses/LICENSE +0 -0
  288. {ethyca_fides-2.66.2rc0.dist-info → ethyca_fides-2.67.0rc0.dist-info}/top_level.txt +0 -0
  289. /fides/ui-build/static/admin/_next/static/{8108ANFxs99VY7KZ_Xev2 → GKmhMPa_1gMto8JZO8ENy}/_ssgManifest.js +0 -0
  290. /fides/ui-build/static/admin/_next/static/chunks/{2921-455e6357b74d2f76.js → 2921-86f1547ac40a5cdf.js} +0 -0
  291. /fides/ui-build/static/admin/_next/static/chunks/{3923-6cc911dafccc5f63.js → 3923-13a6b4da2d51bf8f.js} +0 -0
  292. /fides/ui-build/static/admin/_next/static/chunks/{401-1b529d5800aa1f3a.js → 401-3cc1fee61494e3bd.js} +0 -0
  293. /fides/ui-build/static/admin/_next/static/chunks/{5574-b13021775a15bfd2.js → 5574-9312f97b637d9ee2.js} +0 -0
  294. /fides/ui-build/static/admin/_next/static/chunks/{7630-9aac73191ed5ed13.js → 7630-b1c93688013ef013.js} +0 -0
  295. /fides/ui-build/static/admin/_next/static/chunks/{9826-111aaee8bd8dbd09.js → 9826-3c578665c6d3b21d.js} +0 -0
  296. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-aece2c920ea14514.js → 404-2d803dab6a00f353.js} +0 -0
  297. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-dc75dc6e37e52f05.js → multiple-8ff7f37913ad736a.js} +0 -0
  298. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-24d226b5a8de5c74.js → add-vendors-d00c9034cdeb0236.js} +0 -0
  299. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-6a8ef51138ac926a.js → configure-0e1ca0f4c8e7f4da.js} +0 -0
  300. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-6f86ab63a08a6528.js → properties-057cad65e7414a44.js} +0 -0
  301. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-73d3cbf68f7c3a31.js → consent-e17c56eec8d91371.js} +0 -0
  302. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-6ba9e160dae64695.js → [projectUrn]-80a6cc8e8573514a.js} +0 -0
  303. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-7648bbd4f6711e4d.js → resources-6c3714ee97a718c1.js} +0 -0
  304. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-393e20924c83373e.js → [resourceUrn]-31e6c54794a9883e.js} +0 -0
  305. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-8733807dad4bc96e.js → detection-2822a423a7ad0550.js} +0 -0
  306. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-006b695e5af5ef24.js → [datasetId]-a8e8b5f4ee7af86c.js} +0 -0
  307. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-c391c6fad56eec48.js → datastore-connection-0f29b47402292070.js} +0 -0
  308. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-53fecfb9dd6a1e0c.js → [id]-5627d0d0668077f9.js} +0 -0
  309. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-76b01cec5fde10a9.js → add-template-feca66ad5c5fe54a.js} +0 -0
  310. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-5c08e8447c45ce44.js → ant-components-64a322d01aae5ca7.js} +0 -0
  311. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-06ad5f34585480aa.js → AntForm-8bca16a7726e7eb2.js} +0 -0
  312. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-6f071c2bc9446cb0.js → FormikAntFormItem-b0f246fc3b67ebf7.js} +0 -0
  313. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-efcc38c58991ac9e.js → FormikControlled-1a0852b090bfc392.js} +0 -0
  314. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-430ba5c979abfb7c.js → FormikField-11f3de1b45e36583.js} +0 -0
  315. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-5c561880bf131afb.js → forms-1b73a1c2b6c6285f.js} +0 -0
  316. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-d888a69a3bbe040e.js → configure-e551a860ec727802.js} +0 -0
  317. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-d3d8e3d7583ec635.js → [id]-dd99183f93763ae4.js} +0 -0
  318. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-1af10ed303815d46.js → add-property-0bdbc1fcbf553b8f.js} +0 -0
  319. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-cebc0dc186be499a.js → properties-e959378bb32b6b73.js} +0 -0
  320. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-5e1322de868d615e.js → alpha-8f98a4895e74725e.js} +0 -0
  321. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-241f95e372b65d0f.js → about-8155a35a62fdb5ae.js} +0 -0
  322. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-41242f805599feda.js → domain-records-51333dbd21cb37c8.js} +0 -0
  323. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-2e885f74c92f669c.js → domains-bde86e5f6c09da5a.js} +0 -0
  324. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-ff112655ad5f41e5.js → email-templates-4f9a5cc8bea7725b.js} +0 -0
  325. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-86062a18e081a52a.js → regulations-102efd9199e87124.js} +0 -0
  326. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-a2524414e968f862.js → new-bc4eb541906781e6.js} +0 -0
@@ -1,5 +1,3 @@
1
- from typing import TYPE_CHECKING, List
2
-
3
1
  from sqlalchemy.orm import Session
4
2
 
5
3
  from fides.api.graph.config import (
@@ -10,6 +8,7 @@ from fides.api.graph.config import (
10
8
  ScalarField,
11
9
  )
12
10
  from fides.api.graph.graph import Node
11
+ from fides.api.graph.traversal import TraversalNode
13
12
  from fides.api.models.connectionconfig import ConnectionConfig
14
13
 
15
14
  # Import application models
@@ -22,51 +21,10 @@ from fides.api.models.manual_task import (
22
21
  )
23
22
  from fides.api.models.privacy_request import PrivacyRequest
24
23
  from fides.api.schemas.policy import ActionType
24
+ from fides.api.task.manual.manual_task_address import ManualTaskAddress
25
25
 
26
- # TYPE_CHECKING import placed after all runtime imports to avoid lint issues
27
- if TYPE_CHECKING: # pragma: no cover
28
- from fides.api.graph.traversal import TraversalNode # noqa: F401
29
- from fides.api.models.policy import Policy # noqa: F401
30
-
31
-
32
- class ManualTaskAddress:
33
- """Utility class for creating and parsing manual task addresses"""
34
-
35
- MANUAL_DATA_COLLECTION = "manual_data"
36
-
37
- @staticmethod
38
- def create(connection_config_key: str) -> CollectionAddress:
39
- """Create a CollectionAddress for manual data: {connection_key}:manual_data"""
40
- return CollectionAddress(
41
- dataset=connection_config_key,
42
- collection=ManualTaskAddress.MANUAL_DATA_COLLECTION,
43
- )
44
-
45
- @staticmethod
46
- def is_manual_task_address(address: CollectionAddress) -> bool:
47
- """Check if address represents manual task data"""
48
- if isinstance(address, str):
49
- # Handle string format "connection_key:collection_name"
50
- return address.endswith(f":{ManualTaskAddress.MANUAL_DATA_COLLECTION}")
51
-
52
- # Handle CollectionAddress object
53
- return address.collection == ManualTaskAddress.MANUAL_DATA_COLLECTION
54
-
55
- @staticmethod
56
- def get_connection_key(address: CollectionAddress) -> str:
57
- """Extract connection config key from manual task address"""
58
- if not ManualTaskAddress.is_manual_task_address(address):
59
- raise ValueError(f"Not a manual task address: {address}")
60
-
61
- if isinstance(address, str):
62
- # Handle string format "connection_key:collection_name"
63
- return address.split(":")[0]
64
-
65
- # Handle CollectionAddress object
66
- return address.dataset
67
26
 
68
-
69
- def get_connection_configs_with_manual_tasks(db: Session) -> List[ConnectionConfig]:
27
+ def get_connection_configs_with_manual_tasks(db: Session) -> list[ConnectionConfig]:
70
28
  """
71
29
  Get all connection configs that have manual tasks.
72
30
  """
@@ -79,7 +37,7 @@ def get_connection_configs_with_manual_tasks(db: Session) -> List[ConnectionConf
79
37
  )
80
38
 
81
39
 
82
- def get_manual_task_addresses(db: Session) -> List[CollectionAddress]:
40
+ def get_manual_task_addresses(db: Session) -> list[CollectionAddress]:
83
41
  """
84
42
  Get manual task addresses for all connection configs that have manual tasks.
85
43
 
@@ -98,26 +56,20 @@ def get_manual_task_addresses(db: Session) -> List[CollectionAddress]:
98
56
  return manual_task_addresses
99
57
 
100
58
 
101
- def get_manual_tasks_for_connection_config(
59
+ def get_manual_task_for_connection_config(
102
60
  db: Session, connection_config_key: str
103
- ) -> List[ManualTask]:
104
- """Get all ManualTasks for a specific connection config"""
105
- connection_config = (
106
- db.query(ConnectionConfig)
107
- .filter(ConnectionConfig.key == connection_config_key)
108
- .first()
109
- )
110
-
111
- if not connection_config:
112
- return []
113
-
61
+ ) -> ManualTask:
62
+ """Get the ManualTask for a specific connection config,
63
+ the manual task/connection config relationship is 1:1.
64
+ """
114
65
  return (
115
66
  db.query(ManualTask)
67
+ .join(ConnectionConfig, ManualTask.parent_entity_id == ConnectionConfig.id)
116
68
  .filter(
117
- ManualTask.parent_entity_id == connection_config.id,
69
+ ConnectionConfig.key == connection_config_key,
118
70
  ManualTask.parent_entity_type == "connection_config",
119
71
  )
120
- .all()
72
+ .one_or_none()
121
73
  )
122
74
 
123
75
 
@@ -130,24 +82,23 @@ def create_manual_data_traversal_node(
130
82
  connection_key = address.dataset
131
83
 
132
84
  # Get manual tasks for this connection to determine fields
133
- manual_tasks = get_manual_tasks_for_connection_config(db, connection_key)
85
+ manual_task = get_manual_task_for_connection_config(db, connection_key)
134
86
 
135
87
  # Create fields based on ManualTaskConfigFields
136
- fields: List[Field] = []
137
- for manual_task in manual_tasks:
138
- for config in manual_task.configs:
139
- for field in config.field_definitions:
140
- # Create a scalar field for each manual task field
141
- # Extract data categories from field metadata if available
142
- field_metadata = field.field_metadata or {}
143
- data_categories = field_metadata.get("data_categories", [])
144
-
145
- scalar_field = ScalarField(
146
- name=field.field_key,
147
- data_categories=data_categories,
148
- # Manual task fields don't have complex relationships
149
- )
150
- fields.append(scalar_field)
88
+ fields: list[Field] = []
89
+ for config in manual_task.configs:
90
+ for field in config.field_definitions:
91
+ # Create a scalar field for each manual task field
92
+ # Extract data categories from field metadata if available
93
+ field_metadata = field.field_metadata or {}
94
+ data_categories = field_metadata.get("data_categories", [])
95
+
96
+ scalar_field = ScalarField(
97
+ name=field.field_key,
98
+ data_categories=data_categories,
99
+ # Manual task fields don't have complex relationships
100
+ )
101
+ fields.append(scalar_field)
151
102
 
152
103
  # Create a synthetic Collection
153
104
  collection = Collection(
@@ -165,9 +116,6 @@ def create_manual_data_traversal_node(
165
116
  after=set(),
166
117
  )
167
118
 
168
- # Create Node and TraversalNode (import locally to avoid cyclic import)
169
- from fides.api.graph.traversal import TraversalNode # local import
170
-
171
119
  node = Node(dataset, collection)
172
120
  traversal_node = TraversalNode(node)
173
121
 
@@ -176,7 +124,7 @@ def create_manual_data_traversal_node(
176
124
 
177
125
  def create_manual_task_instances_for_privacy_request(
178
126
  db: Session, privacy_request: PrivacyRequest
179
- ) -> List[ManualTaskInstance]:
127
+ ) -> list[ManualTaskInstance]:
180
128
  """Create ManualTaskInstance entries for all active manual tasks relevant to a privacy request."""
181
129
  instances = []
182
130
 
@@ -272,7 +220,7 @@ def create_manual_task_instances_for_privacy_request(
272
220
 
273
221
  def get_manual_task_instances_for_privacy_request(
274
222
  db: Session, privacy_request: PrivacyRequest
275
- ) -> List[ManualTaskInstance]:
223
+ ) -> list[ManualTaskInstance]:
276
224
  """Get all manual task instances for a privacy request."""
277
225
  return (
278
226
  db.query(ManualTaskInstance)
@@ -286,7 +234,7 @@ def get_manual_task_instances_for_privacy_request(
286
234
 
287
235
  def create_manual_task_artificial_graphs(
288
236
  db: Session,
289
- ) -> List:
237
+ ) -> list:
290
238
  """
291
239
  Create artificial GraphDataset objects for manual tasks that can be included
292
240
  in the main dataset graph during the dataset configuration phase.
@@ -313,34 +261,33 @@ def create_manual_task_artificial_graphs(
313
261
  connection_key = address.dataset
314
262
 
315
263
  # Get manual tasks for this connection to determine fields
316
- manual_tasks = get_manual_tasks_for_connection_config(db, connection_key)
264
+ manual_task = get_manual_task_for_connection_config(db, connection_key)
317
265
 
318
266
  # Create fields based only on ManualTaskConfigFields
319
- fields: List = []
267
+ fields: list = []
320
268
 
321
269
  # Manual task collections act as root nodes - they don't need identity dependencies
322
270
  # since they provide manually-entered data rather than consuming identity data.
323
- for manual_task in manual_tasks:
324
- current_configs = [
325
- config for config in manual_task.configs if config.is_current
326
- ]
327
- for config in current_configs:
328
- if config.config_type not in [
329
- ManualTaskConfigurationType.access_privacy_request,
330
- ManualTaskConfigurationType.erasure_privacy_request,
331
- ]:
332
- continue
333
-
334
- for field in config.field_definitions:
335
- # Create a scalar field for each manual task field
336
- field_metadata = field.field_metadata or {}
337
- data_categories = field_metadata.get("data_categories", [])
338
-
339
- scalar_field = ScalarField(
340
- name=field.field_key,
341
- data_categories=data_categories,
342
- )
343
- fields.append(scalar_field)
271
+ current_configs = [
272
+ config for config in manual_task.configs if config.is_current
273
+ ]
274
+ for config in current_configs:
275
+ if config.config_type not in [
276
+ ManualTaskConfigurationType.access_privacy_request,
277
+ ManualTaskConfigurationType.erasure_privacy_request,
278
+ ]:
279
+ continue
280
+
281
+ for field in config.field_definitions:
282
+ # Create a scalar field for each manual task field
283
+ field_metadata = field.field_metadata or {}
284
+ data_categories = field_metadata.get("data_categories", [])
285
+
286
+ scalar_field = ScalarField(
287
+ name=field.field_key,
288
+ data_categories=data_categories,
289
+ )
290
+ fields.append(scalar_field)
344
291
 
345
292
  if fields: # Only create graph if there are fields
346
293
  # Create a synthetic Collection
@@ -1,6 +1,7 @@
1
1
  from typing import Any, Dict, Optional
2
2
 
3
3
  from boto3 import Session
4
+ from botocore.config import Config
4
5
  from botocore.exceptions import ClientError
5
6
  from loguru import logger
6
7
 
@@ -99,4 +100,7 @@ def get_s3_client(
99
100
  storage_secrets=storage_secrets,
100
101
  assume_role_arn=assume_role_arn,
101
102
  )
102
- return session.client("s3")
103
+
104
+ # Configure S3 client to use signature version 4 for KMS compatibility
105
+ s3_config = Config(signature_version="s3v4")
106
+ return session.client("s3", config=s3_config)
fides/api/util/cache.py CHANGED
@@ -387,3 +387,8 @@ def get_queue_counts() -> Dict[str, int]:
387
387
  logger.critical(exception)
388
388
  queue_counts = {}
389
389
  return queue_counts
390
+
391
+
392
+ def get_all_masking_secret_keys(privacy_request_id: str) -> List[str]:
393
+ cache: FidesopsRedis = get_cache()
394
+ return cache.keys(f"id-{privacy_request_id}-masking-secret-*")
@@ -1,14 +1,17 @@
1
1
  import secrets
2
- from typing import Dict, List, Optional, TypeVar
2
+ from typing import Any, Dict, List, Optional, TypeVar
3
3
 
4
4
  from loguru import logger
5
5
 
6
+ from fides.api.db.session import get_db_session
7
+ from fides.api.models.masking_secret import MaskingSecret
6
8
  from fides.api.schemas.masking.masking_secrets import (
7
9
  MaskingSecretCache,
8
10
  MaskingSecretMeta,
9
11
  SecretType,
10
12
  )
11
13
  from fides.api.util.cache import get_cache, get_masking_secret_cache_key
14
+ from fides.config import CONFIG
12
15
 
13
16
  T = TypeVar("T")
14
17
 
@@ -21,12 +24,14 @@ class SecretsUtil:
21
24
  masking_secret_meta: MaskingSecretMeta[T],
22
25
  ) -> Optional[T]:
23
26
  if privacy_request_id is not None:
24
- secret = SecretsUtil._get_secret_from_cache(
25
- privacy_request_id, secret_type, masking_secret_meta
27
+ secret = SecretsUtil.get_masking_secret(
28
+ privacy_request_id=privacy_request_id,
29
+ masking_strategy=masking_secret_meta.masking_strategy,
30
+ secret_type=secret_type,
26
31
  )
27
32
  if not secret:
28
33
  logger.warning(
29
- "Secret type {} expected from cache but was not present for masking strategy {}",
34
+ "Secret type {} expected but was not present for masking strategy {}",
30
35
  secret_type,
31
36
  masking_secret_meta.masking_strategy,
32
37
  )
@@ -37,20 +42,6 @@ class SecretsUtil:
37
42
  masking_secret_meta.secret_length
38
43
  )
39
44
 
40
- @staticmethod
41
- def _get_secret_from_cache(
42
- privacy_request_id: str,
43
- secret_type: SecretType,
44
- masking_secret_meta: MaskingSecretMeta[T],
45
- ) -> Optional[T]:
46
- cache = get_cache()
47
- masking_secret_cache_key: str = get_masking_secret_cache_key(
48
- privacy_request_id=privacy_request_id,
49
- masking_strategy=masking_secret_meta.masking_strategy,
50
- secret_type=secret_type,
51
- )
52
- return cache.get_encoded_by_key(masking_secret_cache_key)
53
-
54
45
  @staticmethod
55
46
  def generate_secret_string(length: int) -> str:
56
47
  return secrets.token_urlsafe(length)
@@ -75,3 +66,42 @@ class SecretsUtil:
75
66
  )
76
67
  )
77
68
  return masking_secrets
69
+
70
+ @staticmethod
71
+ def get_masking_secret(
72
+ privacy_request_id: str,
73
+ masking_strategy: str,
74
+ secret_type: SecretType,
75
+ ) -> Optional[Any]:
76
+ """
77
+ Attempts to retrieve masking secret from cache first, then falls back to DB.
78
+ """
79
+ # TODO: get rid of the cache check after a few releases
80
+ # Try cache first
81
+ cache = get_cache()
82
+ cache_key = get_masking_secret_cache_key(
83
+ privacy_request_id=privacy_request_id,
84
+ masking_strategy=masking_strategy,
85
+ secret_type=secret_type,
86
+ )
87
+ secret = cache.get_encoded_by_key(cache_key)
88
+ if secret is not None:
89
+ return secret
90
+
91
+ # Cache miss - try database
92
+ session_local = get_db_session(CONFIG)
93
+ with session_local() as session:
94
+ masking_secret: MaskingSecret = (
95
+ session.query(MaskingSecret)
96
+ .filter(
97
+ MaskingSecret.privacy_request_id == privacy_request_id,
98
+ MaskingSecret.masking_strategy == masking_strategy,
99
+ MaskingSecret.secret_type == secret_type,
100
+ )
101
+ .first()
102
+ )
103
+
104
+ if not masking_secret:
105
+ return None
106
+
107
+ return masking_secret.get_secret()
@@ -51,6 +51,7 @@ PRIVACY_REQUEST_ACCESS_RESULTS = "privacy-request-access-results"
51
51
  PRIVACY_REQUEST_EMAIL_INTEGRATIONS = "privacy-request-email-integrations"
52
52
  PRIVACY_REQUEST_NOTIFICATIONS = "privacy-request-notifications"
53
53
  READ = "read"
54
+ READ_OWN = "read-own"
54
55
  REGISTER = "register"
55
56
  RESET = "reset"
56
57
  RESPOND = "respond"
@@ -226,6 +227,7 @@ TAXONOMY_DELETE = f"{TAXONOMY}:{DELETE}"
226
227
  USER_CREATE = f"{USER}:{CREATE}"
227
228
  USER_DELETE = f"{USER}:{DELETE}"
228
229
  USER_READ = f"{USER}:{READ}"
230
+ USER_READ_OWN = f"{USER}:{READ_OWN}"
229
231
  USER_UPDATE = f"{USER}:{UPDATE}"
230
232
  USER_PASSWORD_RESET = f"{USER}:{PASSWORD_RESET}"
231
233
 
@@ -354,6 +356,7 @@ SCOPE_DOCS = {
354
356
  USER_UPDATE: "Update users",
355
357
  USER_DELETE: "Remove users",
356
358
  USER_READ: "View users",
359
+ USER_READ_OWN: "View own user",
357
360
  USER_PASSWORD_RESET: "Reset another user's password",
358
361
  USER_PERMISSION_CREATE: "Create user permissions",
359
362
  USER_PERMISSION_UPDATE: "Update user permissions",
@@ -93,7 +93,7 @@ PRIVACY_REQUEST_ACCESS_RESULTS = "/privacy-request/{privacy_request_id}/access-r
93
93
  PRIVACY_REQUEST_FILTERED_RESULTS = (
94
94
  "/privacy-request/{privacy_request_id}/filtered-results"
95
95
  )
96
-
96
+ PRIVACY_REQUEST_FINALIZE = "/privacy-request/{privacy_request_id}/finalize"
97
97
  PRIVACY_REQUEST_VERIFY_IDENTITY = "/privacy-request/{privacy_request_id}/verify"
98
98
  PRIVACY_REQUEST_RESUME = "/privacy-request/{privacy_request_id}/resume"
99
99
  PRIVACY_REQUEST_NOTIFICATIONS = "/privacy-request/notification"
@@ -61,6 +61,10 @@ class ExecutionSettings(FidesSettings):
61
61
  default=False,
62
62
  description="Temporary flag to switch to using DSR 3.0 to process your tasks.",
63
63
  )
64
+ erasure_request_finalization_required: bool = Field(
65
+ default=False,
66
+ description="Whether erasure requests require an additional finalization step after all collections have been executed.",
67
+ )
64
68
  fuzzy_search_enabled: bool = Field(
65
69
  default=True,
66
70
  description="Whether fuzzy search is enabled for privacy request lookups.",
fides/config/utils.py CHANGED
@@ -61,6 +61,7 @@ CONFIG_KEY_ALLOWLIST = {
61
61
  "task_retry_backoff",
62
62
  "require_manual_request_approval",
63
63
  "subject_identity_verification_required",
64
+ "sql_dry_run",
64
65
  ],
65
66
  "storage": [
66
67
  "active_default_storage_type",
@@ -193,13 +193,18 @@ class PrivacyRequestService:
193
193
 
194
194
  cache_data(
195
195
  privacy_request,
196
- policy,
197
196
  privacy_request_data.identity,
198
197
  privacy_request_data.encryption_key,
199
198
  None,
200
199
  privacy_request_data.custom_privacy_request_fields,
201
200
  )
202
201
 
202
+ if masking_secrets := policy.generate_masking_secrets():
203
+ logger.info(
204
+ "Caching masking secrets for privacy request {}", privacy_request.id
205
+ )
206
+ privacy_request.persist_masking_secrets(masking_secrets)
207
+
203
208
  check_and_dispatch_error_notifications(db=self.db)
204
209
 
205
210
  _handle_notifications_and_processing(
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/2cadb5f62dcd7c2b.css" as="style"/><link rel="stylesheet" href="/_next/static/css/2cadb5f62dcd7c2b.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-ff0cd6bff75588da.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-39ccb07327c2c5d5.js" defer=""></script><script src="/_next/static/chunks/pages/404-aece2c920ea14514.js" defer=""></script><script src="/_next/static/8108ANFxs99VY7KZ_Xev2/_buildManifest.js" defer=""></script><script src="/_next/static/8108ANFxs99VY7KZ_Xev2/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"8108ANFxs99VY7KZ_Xev2","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/d9924caa849931b3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d9924caa849931b3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-90e8ec1fc5c6455b.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b5bff46158a19a3.js" defer=""></script><script src="/_next/static/chunks/pages/404-2d803dab6a00f353.js" defer=""></script><script src="/_next/static/GKmhMPa_1gMto8JZO8ENy/_buildManifest.js" defer=""></script><script src="/_next/static/GKmhMPa_1gMto8JZO8ENy/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"GKmhMPa_1gMto8JZO8ENy","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,u,g,f,m,b,j,k,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[v,"static/chunks/pages/index-fbf9b845bb901238.js"],"/404":["static/chunks/pages/404-2d803dab6a00f353.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[v,"static/chunks/pages/add-systems-0902f0bb4080643e.js"],"/add-systems/manual":[s,e,t,c,p,a,i,u,j,I,F,"static/chunks/pages/add-systems/manual-2a655ff3a97f2492.js"],"/add-systems/multiple":[i,g,x,"static/chunks/pages/add-systems/multiple-8ff7f37913ad736a.js"],"/consent":["static/chunks/pages/consent-e17c56eec8d91371.js"],"/consent/configure":[i,g,"static/chunks/pages/consent/configure-0e1ca0f4c8e7f4da.js"],"/consent/configure/add-vendors":[i,g,x,"static/chunks/pages/consent/configure/add-vendors-d00c9034cdeb0236.js"],"/consent/privacy-experience":[p,_,"static/chunks/pages/consent/privacy-experience-21f997c69fc3b4c2.js"],"/consent/privacy-experience/new":[s,d,f,m,U,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[s,d,f,m,U,"static/chunks/pages/consent/privacy-experience/[id]-f22ddd9b48a5c418.js"],"/consent/privacy-notices":[_,"static/chunks/pages/consent/privacy-notices-ad105181bc91209b.js"],"/consent/privacy-notices/new":[s,d,f,m,w,"static/chunks/pages/consent/privacy-notices/new-a57d251c88ce68ae.js"],"/consent/privacy-notices/[id]":[s,d,f,m,w,"static/chunks/pages/consent/privacy-notices/[id]-da4124b7600a2a1d.js"],"/consent/properties":[q,"static/chunks/pages/consent/properties-057cad65e7414a44.js"],"/consent/reporting":["static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-b0c4235fe6d0b0c8.js"],"/data-catalog":[s,e,t,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-d5b01abcb76792ce.js"],"/data-catalog/[systemId]/projects":[s,e,t,a,k,n,"static/chunks/pages/data-catalog/[systemId]/projects-29784a11fe0fbd0a.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[N,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-80a6cc8e8573514a.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,t,a,k,A,n,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-aad6047a4604b945.js"],"/data-catalog/[systemId]/resources":[N,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,t,a,k,A,n,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-b6b98cea25dd94fa.js"],"/data-discovery/action-center":["static/chunks/pages/data-discovery/action-center-1f0ea5c92ae9a2b4.js"],"/data-discovery/action-center/[monitorId]":[s,e,t,S,h,"static/chunks/pages/data-discovery/action-center/[monitorId]-a9a70856f7be1542.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,t,i,j,S,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-7caea7bb58c1f153.js"],"/data-discovery/activity":[r,"static/chunks/pages/data-discovery/activity-ad6a84a6276f914c.js"],"/data-discovery/detection":[r,B,"static/chunks/pages/data-discovery/detection-2822a423a7ad0550.js"],"/data-discovery/detection/[resourceUrn]":[r,B,"static/chunks/pages/data-discovery/detection/[resourceUrn]-31e6c54794a9883e.js"],"/data-discovery/discovery":[s,e,t,a,r,C,n,"static/chunks/pages/data-discovery/discovery-56eb4c014f0d96a3.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,t,a,r,C,n,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-f98dd251babb7e28.js"],"/datamap":[t,"static/chunks/255-1bc0cbef7a59cdc6.js",u,z,"static/chunks/pages/datamap-d23b3ae139f0428b.js"],"/dataset":[o,b,"static/chunks/pages/dataset-f3348d0a92543bab.js"],"/dataset/new":[o,b,"static/chunks/pages/dataset/new-0d50084fbdf9b84c.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",y,"static/chunks/pages/dataset/[datasetId]-a8e8b5f4ee7af86c.js"],"/dataset/[datasetId]/[collectionName]":[s,e,t,c,a,y,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]-0fa72873e464f581.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,t,c,a,y,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-15301bd6bf7cf718.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-0f29b47402292070.js"],"/datastore-connection/new":[s,c,o,p,D,b,E,"static/chunks/pages/datastore-connection/new-8446418c7ad28f77.js"],"/datastore-connection/[id]":[s,c,o,D,b,E,"static/chunks/pages/datastore-connection/[id]-7d6027570d05c57f.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",s,e,t,c,o,"static/chunks/5619-9b50cec521203989.js",L,"static/css/ab65b8cc3144bfc8.css","static/chunks/5596-4378b2927dae65b2.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,e,t,c,d,M,T,n,"static/chunks/pages/integrations-142abe3e3e3e5bf7.js"],"/integrations/[id]":[s,e,t,c,d,M,T,n,"static/chunks/pages/integrations/[id]-f53fe1f2cbebda7c.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-1bae386d8c190348.js"],"/messaging/add-template":[P,"static/chunks/pages/messaging/add-template-feca66ad5c5fe54a.js"],"/messaging/[id]":[P,"static/chunks/pages/messaging/[id]-5627d0d0668077f9.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-64a322d01aae5ca7.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8bca16a7726e7eb2.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-b0f246fc3b67ebf7.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-1a0852b090bfc392.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-11f3de1b45e36583.js"],"/poc/form-experiments/FormikSpreadField":[G,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[G,"static/chunks/pages/poc/forms-1b73a1c2b6c6285f.js"],"/poc/table-migration":[i,g,"static/chunks/pages/poc/table-migration-05616e2ae20ff4f8.js"],"/privacy-requests":[s,"static/chunks/3550-d04125c828d591a1.js",H,"static/chunks/pages/privacy-requests-ccd8d9e06cf2d278.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-e551a860ec727802.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-f1d818242d8550f8.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-d40a26bddb126c5c.js"],"/privacy-requests/[id]":[H,"static/css/8bc1833f1fa53ff0.css","static/chunks/pages/privacy-requests/[id]-1b6b0d703cf59389.js"],"/properties":[q,"static/chunks/pages/properties-e959378bb32b6b73.js"],"/properties/add-property":[J,"static/chunks/pages/properties/add-property-0bdbc1fcbf553b8f.js"],"/properties/[id]":[J,"static/chunks/pages/properties/[id]-dd99183f93763ae4.js"],"/reporting/datamap":[s,e,t,L,u,z,"static/chunks/pages/reporting/datamap-fd1a67892056830a.js"],"/settings/about":["static/chunks/pages/settings/about-8155a35a62fdb5ae.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-8f98a4895e74725e.js"],"/settings/consent":["static/chunks/pages/settings/consent-f61b87e79367865b.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-e891d01ece59669e.js"],"/settings/custom-fields":["static/chunks/pages/settings/custom-fields-f8eea5d508c60c64.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-51333dbd21cb37c8.js"],"/settings/domains":["static/chunks/pages/settings/domains-bde86e5f6c09da5a.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-4f9a5cc8bea7725b.js"],"/settings/locations":[K,h,"static/chunks/pages/settings/locations-ed6a140b362c5baa.js"],"/settings/organization":["static/chunks/pages/settings/organization-ff9a34264d48c35f.js"],"/settings/regulations":[K,h,"static/chunks/pages/settings/regulations-102efd9199e87124.js"],"/systems":["static/chunks/pages/systems-c05b49ddec1a1b4f.js"],"/systems/configure/[id]":[s,e,t,c,p,a,i,u,j,I,F,"static/chunks/pages/systems/configure/[id]-c8f5fbaa83dd9945.js"],"/systems/configure/[id]/test-datasets":[o,"static/chunks/pages/systems/configure/[id]/test-datasets-a4b6d41ca679298b.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,d,"static/chunks/6148-59a59d5c5925344f.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-df0d88716578e295.js"],"/user-management":[l,"static/chunks/pages/user-management-e98dfc7d4f2a4e16.js"],"/user-management/new":[l,O,"static/chunks/pages/user-management/new-bc4eb541906781e6.js"],"/user-management/profile/[id]":[l,O,"static/chunks/pages/user-management/profile/[id]-da68efc31998dc66.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/409-ea70638a59296659.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-3cc1fee61494e3bd.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/431-1db919f6569a4021.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-7c6639e5d062779e.js","static/chunks/3923-13a6b4da2d51bf8f.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-ddbad3149364725d.js","static/chunks/5574-9312f97b637d9ee2.js","static/chunks/6780-fc7d9ddb1a03e7b3.js","static/chunks/6882-59ea739e3616ce83.js","static/css/10994e916bc9a00a.css","static/chunks/9226-2dcac54ab3fb94be.js","static/chunks/7476-cc0d9a94ed7aad53.js","static/css/972dc7eef106ee7c.css","static/chunks/3450-ca4ba70da999f264.js","static/css/304c6f148886a8d4.css","static/chunks/796-3bdda2a7868464af.js","static/chunks/6853-d0190d2cca9dbde2.js","static/chunks/1817-b78b58ae3b75d75a.js","static/chunks/6954-9c4912fbce87c4df.js","static/chunks/79-2aab56be75e16187.js","static/chunks/3872-0a0f0032ca39a93f.js","static/chunks/3855-509ca7ac99b5eada.js","static/chunks/8237-841439bef6682177.js","static/chunks/5309-ce5702b9faeaff55.js","static/chunks/9046-04a8c092fef1cd83.js","static/chunks/4230-114e31621c19ea69.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-43acf39319177bee.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/6662-4392ba1e4c254ef7.js","static/chunks/7630-b1c93688013ef013.js","static/chunks/2921-86f1547ac40a5cdf.js","static/chunks/203-cd78ea279cecba60.js","static/chunks/787-c57185ad89c4e288.js","static/chunks/9826-3c578665c6d3b21d.js","static/chunks/4121-877e19d3fa078c7b.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1316],{49819:function(e,t,r){var n=r(18911)();e.exports=n},26194:function(e,t,r){var n=r(49819),i=r(50098);e.exports=function(e,t){return e&&n(e,t,i)}},10228:function(e,t,r){var n=r(79867),i=r(78859),s=r(76747);e.exports=function(e,t,r){for(var a=-1,o=t.length,u={};++a<o;){var h=t[a],f=n(e,h);r(f,h)&&i(u,s(h,e),f)}return u}},78859:function(e,t,r){var n=r(71928),i=r(76747),s=r(42383),a=r(11611),o=r(37948);e.exports=function(e,t,r,u){if(!a(e))return e;t=i(t,e);for(var h=-1,f=t.length,l=f-1,c=e;null!=c&&++h<f;){var d=o(t[h]),p=r;if("__proto__"===d||"constructor"===d||"prototype"===d)break;if(h!=l){var g=c[d];void 0===(p=u?u(g,d,c):void 0)&&(p=a(g)?g:s(t[h+1])?[]:{})}n(c,d,p),c=c[d]}return e}},74833:function(e,t,r){var n=r(56127),i=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(i,""):e}},18911:function(e){e.exports=function(e){return function(t,r,n){for(var i=-1,s=Object(t),a=n(t),o=a.length;o--;){var u=a[e?o:++i];if(!1===r(s[u],u,s))break}return t}}},56632:function(e,t,r){var n=r(89278),i=r(80068),s=r(50098);e.exports=function(e){return function(t,r,a){var o=Object(t);if(!i(t)){var u=n(r,3);t=s(t),r=function(e){return u(o[e],e,o)}}var h=e(t,r,a);return h>-1?o[u?t[h]:h]:void 0}}},56127:function(e){var t=/\s/;e.exports=function(e){for(var r=e.length;r--&&t.test(e.charAt(r)););return r}},30454:function(e,t,r){var n=r(40699);e.exports=function(e){return n(e,5)}},64925:function(e,t,r){var n=r(56632)(r(66259));e.exports=n},66259:function(e,t,r){var n=r(95372),i=r(89278),s=r(47991),a=Math.max;e.exports=function(e,t,r){var o=null==e?0:e.length;if(!o)return -1;var u=null==r?0:s(r);return u<0&&(u=a(o+u,0)),n(e,i(t,3),u)}},90104:function(e,t,r){var n=r(20186),i=r(3533),s=r(2900),a=r(19785),o=r(80068),u=r(43854),h=r(56016),f=r(48519),l=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(o(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||u(e)||f(e)||s(e)))return!e.length;var t=i(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(h(e))return!n(e).length;for(var r in e)if(l.call(e,r))return!1;return!0}},92465:function(e){e.exports=function(e){return void 0===e}},25389:function(e,t,r){var n=r(88799),i=r(26194),s=r(89278);e.exports=function(e,t){var r={};return t=s(t,3),i(e,function(e,i,s){n(r,i,t(e,i,s))}),r}},9799:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}},15539:function(e,t,r){var n=r(89278),i=r(9799),s=r(71975);e.exports=function(e,t){return s(e,i(n(t)))}},71975:function(e,t,r){var n=r(66070),i=r(89278),s=r(10228),a=r(39759);e.exports=function(e,t){if(null==e)return{};var r=n(a(e),function(e){return[e]});return t=i(t),s(e,r,function(e,r){return t(e,r[0])})}},94919:function(e,t,r){var n=r(91936),i=1/0;e.exports=function(e){return e?(e=n(e))===i||e===-i?(e<0?-1:1)*17976931348623157e292:e==e?e:0:0===e?e:0}},47991:function(e,t,r){var n=r(94919);e.exports=function(e){var t=n(e),r=t%1;return t==t?r?t-r:t:0}},91936:function(e,t,r){var n=r(74833),i=r(11611),s=r(55193),a=0/0,o=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,h=/^0o[0-7]+$/i,f=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(s(e))return a;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var r=u.test(e);return r||h.test(e)?f(e.slice(2),r?2:8):o.test(e)?a:+e}},46381:function(e,t){var r,n,i;n=[],void 0!==(i="function"==typeof(r=function e(){var t,r="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r?r:{},n=!r.document&&!!r.postMessage,i=r.IS_PAPA_WORKER||!1,s={},a=0,o={};function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},(function(e){var t=v(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new d(t),(this._handle.streamer=this)._config=t}).call(this,e),this.parseChunk=function(e,t){var n=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<n){let t=this._config.newline;t||(s=this._config.quoteChar||'"',t=this._handle.guessLineEndings(e,s)),e=[...e.split(t).slice(n)].join(t)}this.isFirstChunk&&b(this._config.beforeFirstChunk)&&void 0!==(s=this._config.beforeFirstChunk(e))&&(e=s),this.isFirstChunk=!1,this._halted=!1;var n=this._partialLine+e,s=(this._partialLine="",this._handle.parse(n,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(e=s.meta.cursor,this._finished||(this._partialLine=n.substring(e-this._baseIndex),this._baseIndex=e),s&&s.data&&(this._rowCount+=s.data.length),n=this._finished||this._config.preview&&this._rowCount>=this._config.preview,i)r.postMessage({results:s,workerId:o.WORKER_ID,finished:n});else if(b(this._config.chunk)&&!t){if(this._config.chunk(s,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=s=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(s.data),this._completeResults.errors=this._completeResults.errors.concat(s.errors),this._completeResults.meta=s.meta),this._completed||!n||!b(this._config.complete)||s&&s.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),n||s&&s.meta.paused||this._nextChunk(),s}this._halted=!0},this._sendError=function(e){b(this._config.error)?this._config.error(e):i&&this._config.error&&r.postMessage({workerId:o.WORKER_ID,error:e,finished:!1})}}function h(e){var t;(e=e||{}).chunkSize||(e.chunkSize=o.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),n||(t.onload=k(this._chunkLoaded,this),t.onerror=k(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!n),this._config.downloadRequestHeaders){var e,r,i=this._config.downloadRequestHeaders;for(r in i)t.setRequestHeader(r,i[r])}this._config.chunkSize&&(e=this._start+this._config.chunkSize-1,t.setRequestHeader("Range","bytes="+this._start+"-"+e));try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===t.status&&this._chunkError()}},this._chunkLoaded=function(){let e;4===t.readyState&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(null!==(e=(e=t).getResponseHeader("Content-Range"))?parseInt(e.substring(e.lastIndexOf("/")+1)):-1),this.parseChunk(t.responseText)))},this._chunkError=function(e){e=t.statusText||e,this._sendError(Error(e))}}function f(e){(e=e||{}).chunkSize||(e.chunkSize=o.LocalChunkSize),u.call(this,e);var t,r,n="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,n?((t=new FileReader).onload=k(this._chunkLoaded,this),t.onerror=k(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,i=(this._config.chunkSize&&(i=Math.min(this._start+this._config.chunkSize,this._input.size),e=r.call(e,this._start,i)),t.readAsText(e,this._config.encoding));n||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function l(e){var t;u.call(this,e=e||{}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){var e,r;if(!this._finished)return t=(e=this._config.chunkSize)?(r=t.substring(0,e),t.substring(e)):(r=t,""),this._finished=!t,this.parseChunk(r)}}function c(e){u.call(this,e=e||{});var t=[],r=!0,n=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){n&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=k(function(e){try{t.push("string"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=k(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=k(function(){this._streamCleanUp(),n=!0,this._streamData("")},this),this._streamCleanUp=k(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function d(e){var t,r,n,i,s=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,a=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,u=this,h=0,f=0,l=!1,c=!1,d=[],_={data:[],errors:[],meta:{}};function m(t){return"greedy"===e.skipEmptyLines?""===t.join("").trim():1===t.length&&0===t[0].length}function y(){if(_&&n&&(E("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+o.DefaultDelimiter+"'"),n=!1),e.skipEmptyLines&&(_.data=_.data.filter(function(e){return!m(e)})),k()){if(_){if(Array.isArray(_.data[0])){for(var t,r=0;k()&&r<_.data.length;r++)_.data[r].forEach(i);_.data.splice(0,1)}else _.data.forEach(i)}function i(t,r){b(e.transformHeader)&&(t=e.transformHeader(t,r)),d.push(t)}}function u(t,r){for(var n=e.header?{}:[],i=0;i<t.length;i++){let r,h;var o=i,u=t[i],u=(r=o=e.header?i>=d.length?"__parsed_extra":d[i]:o,h=u=e.transform?e.transform(u,o):u,(e.dynamicTypingFunction&&void 0===e.dynamicTyping[r]&&(e.dynamicTyping[r]=e.dynamicTypingFunction(r)),!0===(e.dynamicTyping[r]||e.dynamicTyping))?"true"===h||"TRUE"===h||"false"!==h&&"FALSE"!==h&&((e=>{if(s.test(e)&&-9007199254740992<(e=parseFloat(e))&&e<9007199254740992)return 1})(h)?parseFloat(h):a.test(h)?new Date(h):""===h?null:h):h);"__parsed_extra"===o?(n[o]=n[o]||[],n[o].push(u)):n[o]=u}return e.header&&(i>d.length?E("FieldMismatch","TooManyFields","Too many fields: expected "+d.length+" fields but parsed "+i,f+r):i<d.length&&E("FieldMismatch","TooFewFields","Too few fields: expected "+d.length+" fields but parsed "+i,f+r)),n}_&&(e.header||e.dynamicTyping||e.transform)&&(t=1,!_.data.length||Array.isArray(_.data[0])?(_.data=_.data.map(u),t=_.data.length):_.data=u(_.data,0),e.header&&_.meta&&(_.meta.fields=d),f+=t)}function k(){return e.header&&0===d.length}function E(e,t,r,n){e={type:e,code:t,message:r},void 0!==n&&(e.row=n),_.errors.push(e)}b(e.step)&&(i=e.step,e.step=function(t){_=t,k()?y():(y(),0!==_.data.length&&(h+=t.data.length,e.preview&&h>e.preview?r.abort():(_.data=_.data[0],i(_,u))))}),this.parse=function(i,s,a){var u=e.quoteChar||'"',u=(e.newline||(e.newline=this.guessLineEndings(i,u)),n=!1,e.delimiter?b(e.delimiter)&&(e.delimiter=e.delimiter(i),_.meta.delimiter=e.delimiter):((u=((t,r,n,i,s)=>{var a,u,h,f;s=s||[","," ","|",";",o.RECORD_SEP,o.UNIT_SEP];for(var l=0;l<s.length;l++){for(var c,d=s[l],p=0,_=0,y=0,v=(h=void 0,new g({comments:i,delimiter:d,newline:r,preview:10}).parse(t)),k=0;k<v.data.length;k++)n&&m(v.data[k])?y++:(_+=c=v.data[k].length,void 0===h?h=c:0<c&&(p+=Math.abs(c-h),h=c));0<v.data.length&&(_/=v.data.length-y),(void 0===u||p<=u)&&(void 0===f||f<_)&&1.99<_&&(u=p,a=d,f=_)}return{successful:!!(e.delimiter=a),bestDelimiter:a}})(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=u.bestDelimiter:(n=!0,e.delimiter=o.DefaultDelimiter),_.meta.delimiter=e.delimiter),v(e));return e.preview&&e.header&&u.preview++,t=i,_=(r=new g(u)).parse(t,s,a),y(),l?{meta:{paused:!0}}:_||{meta:{paused:!1}}},this.paused=function(){return l},this.pause=function(){l=!0,r.abort(),t=b(e.chunk)?"":t.substring(r.getCharIndex())},this.resume=function(){u.streamer._halted?(l=!1,u.streamer.parseChunk(t,!0)):setTimeout(u.resume,3)},this.aborted=function(){return c},this.abort=function(){c=!0,r.abort(),_.meta.aborted=!0,b(e.complete)&&e.complete(_),t=""},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=RegExp(p(t)+"([^]*?)"+p(t),"gm"),r=(e=e.replace(t,"")).split("\r"),t=e.split("\n"),e=1<t.length&&t[0].length<r[0].length;if(1===r.length||e)return"\n";for(var n=0,i=0;i<r.length;i++)"\n"===r[i][0]&&n++;return n>=r.length/2?"\r\n":"\r"}}function p(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function g(e){var t=(e=e||{}).delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode,u=null,h=!1,f=null==e.quoteChar?'"':e.quoteChar,l=f;if(void 0!==e.escapeChar&&(l=e.escapeChar),("string"!=typeof t||-1<o.BAD_DELIMITERS.indexOf(t))&&(t=","),n===t)throw Error("Comment character same as delimiter");!0===n?n="#":("string"!=typeof n||-1<o.BAD_DELIMITERS.indexOf(n))&&(n=!1),"\n"!==r&&"\r"!==r&&"\r\n"!==r&&(r="\n");var c=0,d=!1;this.parse=function(o,g,_){if("string"!=typeof o)throw Error("Input must be a string");var m=o.length,y=t.length,v=r.length,k=n.length,E=b(i),w=[],x=[],R=[],C=c=0;if(!o)return P();if(a||!1!==a&&-1===o.indexOf(f)){for(var O=o.split(r),S=0;S<O.length;S++){if(R=O[S],c+=R.length,S!==O.length-1)c+=r.length;else if(_)break;if(!n||R.substring(0,k)!==n){if(E){if(w=[],F(R.split(t)),U(),d)return P()}else F(R.split(t));if(s&&s<=S)return w=w.slice(0,s),P(!0)}}return P()}for(var I=o.indexOf(t,c),A=o.indexOf(r,c),T=RegExp(p(l)+p(f),"g"),D=o.indexOf(f,c);;)if(o[c]===f)for(D=c,c++;;){if(-1===(D=o.indexOf(f,D+1)))return _||x.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:w.length,index:c}),z();if(D===m-1)return z(o.substring(c,D).replace(T,f));if(f===l&&o[D+1]===l)D++;else if(f===l||0===D||o[D-1]!==l){-1!==I&&I<D+1&&(I=o.indexOf(t,D+1));var L=j(-1===(A=-1!==A&&A<D+1?o.indexOf(r,D+1):A)?I:Math.min(I,A));if(o.substr(D+1+L,y)===t){R.push(o.substring(c,D).replace(T,f)),o[c=D+1+L+y]!==f&&(D=o.indexOf(f,c)),I=o.indexOf(t,c),A=o.indexOf(r,c);break}if(L=j(A),o.substring(D+1+L,D+1+L+v)===r){if(R.push(o.substring(c,D).replace(T,f)),M(D+1+L+v),I=o.indexOf(t,c),D=o.indexOf(f,c),E&&(U(),d))return P();if(s&&w.length>=s)return P(!0);break}x.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:w.length,index:c}),D++}}else if(n&&0===R.length&&o.substring(c,c+k)===n){if(-1===A)return P();c=A+v,A=o.indexOf(r,c),I=o.indexOf(t,c)}else if(-1!==I&&(I<A||-1===A))R.push(o.substring(c,I)),c=I+y,I=o.indexOf(t,c);else{if(-1===A)break;if(R.push(o.substring(c,A)),M(A+v),E&&(U(),d))return P();if(s&&w.length>=s)return P(!0)}return z();function F(e){w.push(e),C=c}function j(e){return -1!==e&&(e=o.substring(D+1,e))&&""===e.trim()?e.length:0}function z(e){return _||(void 0===e&&(e=o.substring(c)),R.push(e),c=m,F(R),E&&U()),P()}function M(e){c=e,F(R),R=[],A=o.indexOf(r,c)}function P(n){if(e.header&&!g&&w.length&&!h){var i=w[0],s=Object.create(null),a=new Set(i);let t=!1;for(let r=0;r<i.length;r++){let n=i[r];if(s[n=b(e.transformHeader)?e.transformHeader(n,r):n]){let e,o=s[n];for(;e=n+"_"+o,o++,a.has(e););a.add(e),i[r]=e,s[n]++,t=!0,(u=null===u?{}:u)[e]=n}else s[n]=1,i[r]=n;a.add(n)}t&&console.warn("Duplicate headers found and renamed."),h=!0}return{data:w,errors:x,meta:{delimiter:t,linebreak:r,aborted:d,truncated:!!n,cursor:C+(g||0),renamedHeaders:u}}}function U(){i(P()),w=[],x=[]}},this.abort=function(){d=!0},this.getCharIndex=function(){return c}}function _(e){var t=e.data,r=s[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i={abort:function(){n=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(b(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:t.results.data[a],errors:t.results.errors,meta:t.results.meta},i),!n);a++);delete t.results}else b(r.userChunk)&&(r.userChunk(t.results,i,t.file),delete t.results)}t.finished&&!n&&m(t.workerId,t.results)}function m(e,t){var r=s[e];b(r.userComplete)&&r.userComplete(t),r.terminate(),delete s[e]}function y(){throw Error("Not implemented.")}function v(e){if("object"!=typeof e||null===e)return e;var t,r=Array.isArray(e)?[]:{};for(t in e)r[t]=v(e[t]);return r}function k(e,t){return function(){e.apply(t,arguments)}}function b(e){return"function"==typeof e}return o.parse=function(t,n){var i,u,d,p=(n=n||{}).dynamicTyping||!1;if(b(p)&&(n.dynamicTypingFunction=p,p={}),n.dynamicTyping=p,n.transform=!!b(n.transform)&&n.transform,!n.worker||!o.WORKERS_SUPPORTED){let e;return p=null,o.NODE_STREAM_INPUT,"string"==typeof t?(t=65279!==(e=t).charCodeAt(0)?e:e.slice(1),p=new(n.download?h:l)(n)):!0===t.readable&&b(t.read)&&b(t.on)?p=new c(n):(r.File&&t instanceof File||t instanceof Object)&&(p=new f(n)),p.stream(t)}(p=!!o.WORKERS_SUPPORTED&&(u=r.URL||r.webkitURL||null,d=e.toString(),i=o.BLOB_URL||(o.BLOB_URL=u.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",d,")();"],{type:"text/javascript"}))),(i=new r.Worker(i)).onmessage=_,i.id=a++,s[i.id]=i)).userStep=n.step,p.userChunk=n.chunk,p.userComplete=n.complete,p.userError=n.error,n.step=b(n.step),n.chunk=b(n.chunk),n.complete=b(n.complete),n.error=b(n.error),delete n.worker,p.postMessage({input:t,config:n,workerId:p.id})},o.unparse=function(e,t){var r=!1,n=!0,i=",",s="\r\n",a='"',u=a+a,h=!1,f=null,l=!1,c=((()=>{if("object"==typeof t){if("string"!=typeof t.delimiter||o.BAD_DELIMITERS.filter(function(e){return -1!==t.delimiter.indexOf(e)}).length||(i=t.delimiter),("boolean"==typeof t.quotes||"function"==typeof t.quotes||Array.isArray(t.quotes))&&(r=t.quotes),"boolean"!=typeof t.skipEmptyLines&&"string"!=typeof t.skipEmptyLines||(h=t.skipEmptyLines),"string"==typeof t.newline&&(s=t.newline),"string"==typeof t.quoteChar&&(a=t.quoteChar),"boolean"==typeof t.header&&(n=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw Error("Option columns is empty");f=t.columns}void 0!==t.escapeChar&&(u=t.escapeChar+a),t.escapeFormulae instanceof RegExp?l=t.escapeFormulae:"boolean"==typeof t.escapeFormulae&&t.escapeFormulae&&(l=/^[=+\-@\t\r].*$/)}})(),RegExp(p(a),"g"));if("string"==typeof e&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return d(null,e,h);if("object"==typeof e[0])return d(f||Object.keys(e[0]),e,h)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||f),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:"object"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||"object"==typeof e.data[0]||(e.data=[e.data])),d(e.fields||[],e.data||[],h);throw Error("Unable to serialize unrecognized input");function d(e,t,r){var a="",o=("string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),u=!Array.isArray(t[0]);if(o&&n){for(var h=0;h<e.length;h++)0<h&&(a+=i),a+=g(e[h],h);0<t.length&&(a+=s)}for(var f=0;f<t.length;f++){var l=(o?e:t[f]).length,c=!1,d=o?0===Object.keys(t[f]).length:0===t[f].length;if(r&&!o&&(c="greedy"===r?""===t[f].join("").trim():1===t[f].length&&0===t[f][0].length),"greedy"===r&&o){for(var p=[],_=0;_<l;_++){var m=u?e[_]:_;p.push(t[f][m])}c=""===p.join("").trim()}if(!c){for(var y=0;y<l;y++){0<y&&!d&&(a+=i);var v=o&&u?e[y]:y;a+=g(t[f][v],y)}f<t.length-1&&(!r||0<l&&!d)&&(a+=s)}}return a}function g(e,t){var n,s;return null==e?"":e.constructor===Date?JSON.stringify(e).slice(1,25):(s=!1,l&&"string"==typeof e&&l.test(e)&&(e="'"+e,s=!0),n=e.toString().replace(c,u),(s=s||!0===r||"function"==typeof r&&r(e,t)||Array.isArray(r)&&r[t]||((e,t)=>{for(var r=0;r<t.length;r++)if(-1<e.indexOf(t[r]))return!0;return!1})(n,o.BAD_DELIMITERS)||-1<n.indexOf(i)||" "===n.charAt(0)||" "===n.charAt(n.length-1))?a+n+a:n)}},o.RECORD_SEP="\x1e",o.UNIT_SEP="\x1f",o.BYTE_ORDER_MARK="\uFEFF",o.BAD_DELIMITERS=["\r","\n",'"',o.BYTE_ORDER_MARK],o.WORKERS_SUPPORTED=!n&&!!r.Worker,o.NODE_STREAM_INPUT=1,o.LocalChunkSize=10485760,o.RemoteChunkSize=5242880,o.DefaultDelimiter=",",o.Parser=g,o.ParserHandle=d,o.NetworkStreamer=h,o.FileStreamer=f,o.StringStreamer=l,o.ReadableStreamStreamer=c,r.jQuery&&((t=r.jQuery).fn.parse=function(e){var n=e.config||{},i=[];return this.each(function(e){if(!("INPUT"===t(this).prop("tagName").toUpperCase()&&"file"===t(this).attr("type").toLowerCase()&&r.FileReader)||!this.files||0===this.files.length)return!0;for(var s=0;s<this.files.length;s++)i.push({file:this.files[s],inputElem:this,instanceConfig:t.extend({},n)})}),s(),this;function s(){if(0===i.length)b(e.complete)&&e.complete();else{var r,n,s,u,h=i[0];if(b(e.before)){var f=e.before(h.file,h.inputElem);if("object"==typeof f){if("abort"===f.action)return r="AbortError",n=h.file,s=h.inputElem,u=f.reason,void(b(e.error)&&e.error({name:r},n,s,u));if("skip"===f.action)return void a();"object"==typeof f.config&&(h.instanceConfig=t.extend(h.instanceConfig,f.config))}else if("skip"===f)return void a()}var l=h.instanceConfig.complete;h.instanceConfig.complete=function(e){b(l)&&l(e,h.file,h.inputElem),a()},o.parse(h.file,h.instanceConfig)}}function a(){i.splice(0,1),s()}}),i&&(r.onmessage=function(e){e=e.data,void 0===o.WORKER_ID&&e&&(o.WORKER_ID=e.workerId),"string"==typeof e.input?r.postMessage({workerId:o.WORKER_ID,results:o.parse(e.input,e.config),finished:!0}):(r.File&&e.input instanceof File||e.input instanceof Object)&&(e=o.parse(e.input,e.config))&&r.postMessage({workerId:o.WORKER_ID,results:e,finished:!0})}),(h.prototype=Object.create(u.prototype)).constructor=h,(f.prototype=Object.create(u.prototype)).constructor=f,(l.prototype=Object.create(l.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,o})?r.apply(t,n):r)&&(e.exports=i)}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1467],{96586:function(t,e,r){var n=r(57753),o=r(82452),i=r(22115),a=r(38256),u=r(67426);function s(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}s.prototype.clear=n,s.prototype.delete=o,s.prototype.get=i,s.prototype.has=a,s.prototype.set=u,t.exports=s},36301:function(t,e,r){var n=r(69417),o=r(72470),i=r(66165),a=r(71873),u=r(52556);function s(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}s.prototype.clear=n,s.prototype.delete=o,s.prototype.get=i,s.prototype.has=a,s.prototype.set=u,t.exports=s},44538:function(t,e,r){var n=r(81822)(r(77400),"Map");t.exports=n},74554:function(t,e,r){var n=r(39448),o=r(7738),i=r(66575),a=r(7238),u=r(38738);function s(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}s.prototype.clear=n,s.prototype.delete=o,s.prototype.get=i,s.prototype.has=a,s.prototype.set=u,t.exports=s},46151:function(t,e,r){var n=r(81822)(r(77400),"Set");t.exports=n},93382:function(t,e,r){var n=r(85638);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return -1}},46729:function(t,e,r){var n=r(28338),o=r(99678),i=r(11611),a=r(76532),u=/^\[object .+?Constructor\]$/,s=Object.prototype,l=Function.prototype.toString,c=s.hasOwnProperty,d=RegExp("^"+l.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(n(t)?d:u).test(a(t))}},64937:function(t,e,r){var n=r(77400)["__core-js_shared__"];t.exports=n},95899:function(t,e,r){var n=r(54479);t.exports=function(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},81822:function(t,e,r){var n=r(46729),o=r(15371);t.exports=function(t,e){var r=o(t,e);return n(r)?r:void 0}},15371:function(t){t.exports=function(t,e){return null==t?void 0:t[e]}},57753:function(t,e,r){var n=r(35718);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},82452:function(t){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},22115:function(t,e,r){var n=r(35718),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0}},38256:function(t,e,r){var n=r(35718),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:o.call(e,t)}},67426:function(t,e,r){var n=r(35718);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},54479:function(t){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},99678:function(t,e,r){var n,o=r(64937),i=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";t.exports=function(t){return!!i&&i in t}},69417:function(t){t.exports=function(){this.__data__=[],this.size=0}},72470:function(t,e,r){var n=r(93382),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)}},66165:function(t,e,r){var n=r(93382);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},71873:function(t,e,r){var n=r(93382);t.exports=function(t){return n(this.__data__,t)>-1}},52556:function(t,e,r){var n=r(93382);t.exports=function(t,e){var r=this.__data__,o=n(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}},39448:function(t,e,r){var n=r(96586),o=r(36301),i=r(44538);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(i||o),string:new n}}},7738:function(t,e,r){var n=r(95899);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},66575:function(t,e,r){var n=r(95899);t.exports=function(t){return n(this,t).get(t)}},7238:function(t,e,r){var n=r(95899);t.exports=function(t){return n(this,t).has(t)}},38738:function(t,e,r){var n=r(95899);t.exports=function(t,e){var r=n(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}},35718:function(t,e,r){var n=r(81822)(Object,"create");t.exports=n},76532:function(t){var e=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},30454:function(t,e,r){var n=r(40699);t.exports=function(t){return n(t,5)}},85638:function(t){t.exports=function(t,e){return t===e||t!=t&&e!=e}},28338:function(t,e,r){var n=r(99736),o=r(11611);t.exports=function(t){if(!o(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},11611:function(t){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},76737:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t,e){for(var r in e)Object.defineProperty(t,r,{enumerable:!0,get:e[r]})}(e,{default:function(){return u},noSSR:function(){return a}});let n=r(51538);r(24246),r(27378);let o=n._(r(21887));function i(t){return{default:(null==t?void 0:t.default)||t}}function a(t,e){return delete e.webpack,delete e.modules,t(e)}function u(t,e){let r=o.default,n={loading:t=>{let{error:e,isLoading:r,pastDelay:n}=t;return null}};t instanceof Promise?n.loader=()=>t:"function"==typeof t?n.loader=t:"object"==typeof t&&(n={...n,...t});let u=(n={...n,...e}).loader;return(n.loadableGenerated&&(n={...n,...n.loadableGenerated},delete n.loadableGenerated),"boolean"!=typeof n.ssr||n.ssr)?r({...n,loader:()=>null!=u?u().then(i):Promise.resolve(i(()=>null))}):(delete n.webpack,delete n.modules,a(r,n))}("function"==typeof e.default||"object"==typeof e.default&&null!==e.default)&&void 0===e.default.__esModule&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)},28438:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"LoadableContext",{enumerable:!0,get:function(){return n}});let n=r(51538)._(r(27378)).default.createContext(null)},21887:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return f}});let n=r(51538)._(r(27378)),o=r(28438),i=[],a=[],u=!1;function s(t){let e=t(),r={loading:!0,loaded:null,error:null};return r.promise=e.then(t=>(r.loading=!1,r.loaded=t,t)).catch(t=>{throw r.loading=!1,r.error=t,t}),r}class l{promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:t,_opts:e}=this;t.loading&&("number"==typeof e.delay&&(0===e.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},e.delay)),"number"==typeof e.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},e.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(t=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(t){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...t},this._callbacks.forEach(t=>t())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(t){return this._callbacks.add(t),()=>{this._callbacks.delete(t)}}constructor(t,e){this._loadFn=t,this._opts=e,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}}function c(t){return function(t,e){let r=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},e),i=null;function s(){if(!i){let e=new l(t,r);i={getCurrentValue:e.getCurrentValue.bind(e),subscribe:e.subscribe.bind(e),retry:e.retry.bind(e),promise:e.promise.bind(e)}}return i.promise()}if(!u){let t=r.webpack?r.webpack():r.modules;t&&a.push(e=>{for(let r of t)if(e.includes(r))return s()})}function c(t,e){!function(){s();let t=n.default.useContext(o.LoadableContext);t&&Array.isArray(r.modules)&&r.modules.forEach(e=>{t(e)})}();let a=n.default.useSyncExternalStore(i.subscribe,i.getCurrentValue,i.getCurrentValue);return n.default.useImperativeHandle(e,()=>({retry:i.retry}),[]),n.default.useMemo(()=>{var e;return a.loading||a.error?n.default.createElement(r.loading,{isLoading:a.loading,pastDelay:a.pastDelay,timedOut:a.timedOut,error:a.error,retry:i.retry}):a.loaded?n.default.createElement((e=a.loaded)&&e.default?e.default:e,t):null},[t,a])}return c.preload=()=>s(),c.displayName="LoadableComponent",n.default.forwardRef(c)}(s,t)}function d(t,e){let r=[];for(;t.length;){let n=t.pop();r.push(n(e))}return Promise.all(r).then(()=>{if(t.length)return d(t,e)})}c.preloadAll=()=>new Promise((t,e)=>{d(i).then(t,e)}),c.preloadReady=t=>(void 0===t&&(t=[]),new Promise(e=>{let r=()=>(u=!0,e());d(a,t).then(r,r)})),window.__NEXT_PRELOADREADY=c.preloadReady;let f=c},65218:function(t,e,r){t.exports=r(76737)}}]);